오늘 재미있는 현상을 발견했다. 윈도우에서 파일을 삭제하고 같은 이름으로 파일을 다시 만들면 이미 삭제된 파일의 속성(파일 생성시간)이 적용된다. 파일의 생성시간으로 무언가를 판단해야하는 상황에서 위 문제의 해결이 필수적이었다. 이것저것 찾아보니 윈도우의 파일시스템 터널링 기법이 그 원인이었다. 파일시스템 터널링 목적 사용자는 파일을 수정할떄 그 파일의 생성날짜는 그대로, 수정날짜만 변경 되기를 원한다.하지만 실제 파일이 수정되는 내부적인 동작은 그 파일의 임시파일을 만들고 작업이 완료되면 그 임시파일을 본 파일로 만들게 된다.즉 새로운 파일이 생성된 것이다. 이 문제를 해결하기 위해 파일시스템 터널링을 사용하고(이게 전부는 아니라고 생각한다...일부의 예인 것 같다) 파일의 정보는 캐시 형태로 약 15..
최근 오픈소스 분석 중에 람다라는 것을 접하게 되어 글을 쓴다. 우선 본 글은 http://itguru.tistory.com/196 (Programmin IT 블로그)https://www.youtube.com/watch?v=HDWB64VS1MY&t=550s (포프님 영상)https://www.youtube.com/watch?v=11h4v-YeLZI (홍정모님 영상) 를 보고 종합적인 감상(?)을 정리한 것이고 틀린내용이 있을 수 있음을 미리 밝힌다. 람다란? 람다란 쉽게는 이름이 없는 함수라고 이해하면된다.딱 한번만 쓰이는 함수를 따로 정의하는 것 보다 더 효율적으로 사용할 수 있는 방법으로 코드 상에 람다를 쓰고 실행하게되면 메모리상에 임시적으로 존재하는 클로저 객체로 생성된다. 람다의 구성은 다음과 ..
mysql 원격 접속을 가능하게 하기 위해선 설정이 필요하다. 그렇지 않은 경우 다음과 같은 에러를 보게 된다. Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server 원격접속이 가능한 host 를 확인하는 방법은 다음과 같다. SELECT * FROM mysql.user; 위 쿼리를 입력하면 결과가 쭉 나오는데 여기서 host 컬럼에 나오는 리스트가 원격허용된 host를 말한다. 그럼 저 테이블에 내가 원하는 host 값을 어떻게 입력할 수 있는지 알아보자. INSERT INTO mysql.user (host,user,password,Insert_priv,Grant_priv,Super_priv) VALUES ('host','user'..
헤더가드는 헤더파일을 중복해서 포함시키는 경우를 예방하기 위해서 사용한다. 헤더파일을 중복으로 선언하면 같은 함수가 중복으로 선언되는 것과 같기 때문에 컴파일 에러가 나게된다. #pragma once 헤더파일을 생성하면 위 문구가 자동으로 포함되는데 이것이 헤더가드 이다. 위 문구가 있으면 헤더파일을 한번만 include하게 되고 이는 #ifndef example.h#define example.hint example(int a, int b){//examplereturn a+b;} #endif 위와 같은 효과를 가진다. 복잡하게 쓸 것 없이 #pragma once를 쓰면 될 것 같다. 하지만 구형 컴파일러에서는 지원하지 않는다고 한다. 그때는 두번째 예시를 사용하면 된다.
위 그림은 앤서블 공식 홈페이지 첫화면으로 앤서블은 “모든 사람을 위한 자동화” 를 지향하는 프로비저닝 툴 입니다. redhat 에서 제공하고 있으며, python 으로 기술된 오픈소스 프로젝트 입니다. (앤서블 Tower는 유료) 앤서블의 특징은 다음과 같습니다. 1. 쉽다앤서블은 "모든 사람을 위한 자동화" 라는 이념에 맞게 YAML(야믈 이라고 발음) 이라는 언어 정확히는 데이터 표현 양식을 사용합니다.이는 특정 기술을 가지고 있지않아도, 개발자가 아니라도 모든 사람이 사용하기 쉬운 포맷을 선택한 것 입니다. 2. 에이전트리스앤서블만이 가지는 가장 큰 특징이 바로 에이전트리스 입니다. (셰프,퍼펫,솔트스택 모두 에이전트 설치가 필요)에이전트리스란 실행 대상 머신에 에이전트를 설치할 필요가 없다는 말..
앤서블에 대해서 공부를 시작하기 전에 필요한 사전지식들 입니다. - 클라우드 서비스 유형클라우드 컴퓨팅의 보급은 IT 서비스에 많은 변화를 가져왔습니다.위 그림은 클라우드 서비스의 유형을 보기 쉽게 나타낸 것 입니다. 1. IaaS (아이아스, 이아스) : infrastructure as a service - ex) AWS ec2, Azure2. PaaS(파스) : platform as a service - ex) 구글 앱 엔진3. SaaS(사스) : software as as service - ex) 구글 Docs (사용자가 별도의 소프트웨어 설치 없이 오피스 사용) 위와같은 클라우드 서비스의 보급에 따라 과거 고정적이었던 IT 인프라가 유연하게 바뀌었습니다. - Infrastructure as Cod..
게시판 실습 과정에서 겪은 문제를 정리합니다. 제가 원하는 기능은 검색 기능이며 프로세스와 제가 원하는 결과 쿼리는 다음과 같습니다.1. 사용자가 검색 컬럼을 선택한다.2. 사용자가 검색할 키워드를 입력한다.3. 제가 입력한 틀린 쿼리입니다. 틀린 쿼리로 수행된 실제 쿼리입니다. 올바른 쿼리입니다.차이는 #와 %에 있습니다. 검색 기능의 프로세스 1은 사용자의 선택에 따라 column이 바뀌는 상황이고프로세스 2는 값이 변경됩니다. 틀린 쿼리로 수행된 실제쿼리는 column에 ''이 붙게되어 정상적인 쿼리 수행이 불가합니다. mybatis #과 $의 차이 #preparedStatement , 동적쿼리가 수행될 때 column=? 형태로 수행된다. ?에 값이 binding 된다.?의 값이 달라져도 같은 쿼..