발생일: 2016.01.06 키워드: highcharts, 하이차트, legend, 범례 문제: 하이차트에서 범례(legend) 옆에 마지막 값을 표시하려고 한다. 해결책: legend 옵션에서 값을 변경할 수는 있지만, legend가 출력되는 시점에서는 마지막 데이터를 읽어올 수 없다. 한 틱 딜레이를 주는 방식으로 우회해서 아래처럼 해결할 수 있다. // 마지막 값을 포함해 하단에 보여주는 레전드 옵션 legend: { layout: 'horizontal', align: 'center', borderWidth: 0, itemDistance: 50, labelFormatter: function () { // 레이블이 출력될 때엔 아직 데이터가 렌더링되기 전이다. // 레이블 아래에 마지막 데이터의 값을..
발생일: 2016.01.05 키워드: nohup, &, 백그라운드, background 문제: ssh 로 서버에 접속해 백그라운드 작업을 실행하려고 한다. 아래와 같이 & 로 백그라운드로 실행하도록 했는데, 명령 종료 후 바로 태스크도 종료된다. $ ssh user@host "task_command &;" 어떻게 하면 될까? 해결책: & 는 현재 세션에서만 유효하기 때문이다. nohup 을 붙이면, 현재 세션이 끊어진 이후에도 백그라운드 작업을 수행할 수 있다. 아래처럼 호출하면 된다. $ ssh user@host "nohup task_command &;" 참고: http://askubuntu.com/questions/349262/run-a-nohup-command-over-ssh-then-disconn..
발생일: 2016.01.05 키워드: ssh, bash_profile 문제: ssh 로 명령을 호출할 때 쉘로 접속했을 때와 동일한 환경에서 실행되도록 하고 싶다. ssh 실행 시, .bash_profile 도 실행되게 하면 될 것 같다. 어떻게 하면 될까? 해결책: 간단하다. 아래처럼 .bash_profile 을 먼저 실행하고 작업을 수행하면 된다. $ ssh user@host "source ~/.bash_profile && cd $some_dir && ./run_command" 참고: http://unix.stackexchange.com/questions/148780/including-bash-profile-over-ssh
발생일: 2016.02.02 키워드: xcode, plugin, bundle, load bundle, skip bundle 문제: Xcode 플러그인을 설치하고 재시작 했을 때, 아래와 같은 창에서 실수로 Skip Bundle 을 눌러버렸다. 재시작했는데 플러그인 로드 창이 안 뜬다. 어떻게 하면 될까? 해결책: 이 때엔, skip 하기로 했던 번들 목록을 초기화해주면 된다. 플러그인은 com.apple.dt.Xcode 의 DVTPlugInManagerNonApplePlugins-Xcode-[xcode 버전] 형태로 저장되어 있으며, 아래 코드처럼 조회한 후에, `delete` 후 Xcode를 다시 실행하면 된다. $ defaults read com.apple.dt.Xcode DVTPlugInManage..
발생일: 2016.02.10 키워드: getValue 문제: 다음 달부터 iOS를 개발해보려고 한다. Objective-C 는 처음인데, 얼라? `getValue()` 메서드에 리턴값이 없다. NSValue *value = [points objectAtIndex:0]; CGPoint point; [value getValue:&point]; 해결책: getValue()는 특정 버퍼에 값을 복사하는 기능이다. CGPoint는 구조체이고, &point 는 구조체 인스턴스의 주소를 리턴한다. 즉, `point` 변수에 `value` 값을 할당하는 코드이다. 논의: 난 개발을 자바부터 배웠더니, getXXX()/setXXX() 패턴이 익숙해 리턴값이 없는 게 이상하게 느껴졌었다.ㅎㅎ 몇 달 지난 뒤에 보니, 너무..
발생일: 2016.02.02 키워드: xcode, vim, xvim 문제: Xcode 에서 vim을 사용하고 싶다. 해결책: 찾아보니 당연히 있다.ㅎㅎ http://xvim.org/ https://github.com/XVimProject/XVim Xcode 플러그인 매니저인 알카트라즈에서 간단하게 설치할 수 있다. 논의: 수동으로 설치하려면, 리파지터리를 클론한 후에 해당 디렉토리에서 make 명령을 실행하면 된다. $ git clone https://github.com/XVimProject/XVim $ cd XVim $ make `make`는 빌드 후, Xcode 가 설치되어 있는 디렉토리에 `.xvimrc ` 파일을 생성한다. Xcode 를 재시작하면, `.xvimrc` 번들이 있는데 로드할 거냐고 ..
발생일: 2015.11.09 키워드: sed, 치환, 정규식 문제: 쉘 스크립트로 파일에서 특정 문자열을 찾아 치환하려고 한다. 요청하는 API 버전을 바꿀 목적이었고, 파일 내에서 `/api/10/` 과 같은 패턴을 찾아 `/api/{new_version}`으로 변경하려고 한다. 어떻게 하면 될까? 해결책: sed 명령으로 처리할 수 있다. 문제의 경우, 아래처럼 처리했다. new_version 은 새 버전이 담긴 변수이고, file 은 대상 파일이 담긴 변수, TEMP_FILE 은 결과를 임시 파일에 쓴 후 덮어쓰기 위한 용도로 정의한 변수이다. sed -e "s/\(\"\/api\/\)[0-9\[0-9]*\(\/\)/\1${new_version}\2/g" $file > $TEMP_FILE # sed..
발생일: 2016.02.11 키워드: 객체 지향, oop, 프로퍼티, 속성, property, attribute 문제: 객체 지향의 사실과 오해라는 책을 읽다가, 프로퍼티와 속성의 차이에 대해 설명하는 부분이 있어 옮겨둔다. (p.51) 해결책: > 객체에서 단순한 값은 속성(attribute)이고, > 프로퍼티는 속성과 링크(두 객체 간의 연관관계)의 조합이다. 논의: 그 동안 속성, 프로퍼티, 어트리뷰트를 거의 구분 없이 동일하게 사용해왔다. 대부분은 대화의 맥락에서 거리낌 없이 의사 소통되기 때문에 문제가 없었고, 사실 앞으로도 문제는 없을 것 같긴 하다.^^;; 그치만 이렇게 구분해두고 상대방도 같은 내용을 이해하고 있다면, 더 명확하게 이야기를 나눌 수 있을 거라 생각한다.
발생일: 2015.12.18 키워드: 수직 가운데 정렬, 수직 중앙 정렬, 수직 센터 정렬, vertical middle 문제: 특정 엘리먼트를 부모 엘리먼트의 수직 가운데 정렬하려고 한다. 해결책: display의 table 속성을 활용해 수직 정렬할 수 있다. .parent { display:table; // 부모는 테이블 속성으로, width:100%; height:200px; // 높이가 있어야 한다. border:1px solid green; } .child { display:table-cell; // 자식은 테이블 셀 속성으로, text-align:center; vertical-align:middle; // 가운데 정렬한다. }
발생일: 2015.11.19 키워드: R, R 로케일, R utf8 문제: R 시작했더니 아래와 같은 문구가 나온다. WARNING: You're using a non-UTF8 locale, therefore only ASCII characters will work. Please read R for Mac OS X FAQ (see Help) section 9 and adjust your system preferences accordingly. 해결책: 두 가지 방법이 있다. R 콘솔에서 아래 명령을 수행하거나, system("defaults write org.R-project.R force.LANG en_US.UTF-8") 터미널을 열고 아래 명령을 수행한다. defaults write org.R-pro..