2012년 10월 22일 월요일

git 이미 존재하는 local branch가 remote branch를 tracking하게 하기

http://stackoverflow.com/questions/520650/how-do-you-make-an-existing-git-branch-track-a-remote-branch

git 버전에 따라 command가 다르다.
  1.8.X) $git branch -u [local_branch] [remote_upstream]
  1.7.X) $git branch --set-upstream [local_branch] [remote_upstream]

1.8.X는 [local_branch]를 생략하면 현재 local branch를 이용해서 설정한다.
1.7.X는 [local_branch]를 생략하면 remote_upstream과 같은 이름의 branch를 생성해 버리므로, 이미 존재하는 local branch를 tracking으로 연결하려면 생략하면 안된다.

2012년 10월 15일 월요일

반드시 알아야 할 8 gdb tricks

https://blogs.oracle.com/ksplice/entry/8_gdb_tricks_you_should

위 글의 내용을 알아보기 편하게 정리 함.

1. break WHERE if COND
  "if COND"를 추가로 덧붙여서 특정 조건일 때 break를 걸 수 있다. loop안에 걸거나 특별한 케이스에 재현되는 버그를 잡을 때 쓰기 좋겠다.

2. command
  break point를 잡은 후에 "command 1"과 같이 break point에 올 때마다 실행되는 command를 추가할 수 있다. 디버그 정보 프린트 할 때 쓰면 컴파일할 필요없이 원하는 정보를 break point에 올 때 마다 볼 수 있다.
  (의문) if COND가 추가된 경우면 COND를 만족하는 경우만 실행되려나? --> 테스트 필요.

3. gdb --args
  gdb 옵션에 "--args"를 쓰고 바이너리 -> argument 순서로 넣고 실행하면 된다. gdb 바이너리 한 다음에 gdb shell에서 "set args ..." 하는 것 보다는 반복 수행하기 훨 편하겠다.

4. source 파일 위치 지정
  1) directory [source_path]
    bin안에 있는 symbol의 path가 relative인 경우, 이렇게 하면 알아서 찾아준다.
  2) set substitute-path [path_in_bin] [path_to_sources]
    bin의 symbol이 absolute인 경우, 이렇게 하면 알아서 path앞부분을 substitute해서 찾아준다.

5. macro도 gdb에서 챙겨가면서 써 보자.
  빌드 옵션에 -ggdb3 를 추가하면 macro도 gdb에서 보면서 처리할 수 있다.

6. gdb variable
  set $varname = 4
  이런 형태로 gdb variable을 설정할 수 있다. if COND에 들어갈 COND를 만들어 두면 쉽게 써먹을 수 있다. 복잡한 expression은 적절히 variable로 만들면 되겠다.

7. Register variable
  $sp, $pi, $rsi 와 같이 architecture마다 존재하는 register는 predefined variable로 들어있다. if COND에 포함해서 사용할 수 있다.

8. 'x' command
  'x' command로 특정 메모리에 있는 내용을 특정 포맷으로 출력할 수 있다.
  x/FMT ADDRESS
  FMT는 종류가 많으니 'help x'로 풀 리스트를 확인하자. 쓸만한건 여기다 리스트업 한다.
    x : hex
    d : signed decimal
    c : character
    i : instruction
    s : C style string
  (Example : gdb shell)
  $x/s 0xffffffff0089ffae
  ...

Android emulator gdbserver 설정

http://jovechia.blogspot.kr/2009/04/how-to-use-gdbserver-on-android.html

덧붙임)
  1. gdbserver는 사용하고 있는 NDK toolchain에 prebuild되어 있는 녀석을 넣으면 된다.
  2. gdbserver옵션이 android emulator에 기본 탑재된 녀석과 다를 수 있으므로 확인하고 사용한다.

2012년 9월 25일 화요일

tmux 사용법

http://blog.outsider.ne.kr/trackback/699

*추가

다른 terminal로 연결한 경우, 다음과 같이 가장 최근의 session에 연결할 수 있다.

$tmux attach-session

tmux에서 연결된 세션을 끊고 client를 종료하려면

{bind-key} d

Ctrl+B를 이미 다른 용도로 사용하고 있는 경우라면 $HOME/.tmux.conf 파일에 다음과 같이 Ctrl+A로 변경해둔다.

set-option -g prefix C-a

2012년 9월 13일 목요일

아이폰에서 안드로이드로 옮기기

1. 옮길 데이터
  1) 연락처
  2) 메모
  3) 일정
  4) 갤러리
  5) 문자메세지 (SMS, MMS)
  6) 카톡기록
  7) 인증서

2. 앱 대체 테이블
  *생략*

3. 옮겨보자!

3-1. 데이터

  1) 연락처 : Google 계정 동기화, OK!
  2) 메모 : Gmail "Note" Label이란 사실을 알았음, OK!
  3) 일정 : Google calendar 동기화, OK!
  4) 갤러리 : 네이버 Ndrive로 업로드 후 다운로드. OK! 단, 동영상은 기본 무비 플레이어에서 재생 안됨. 왜 그런지는 모르겠음. Dice 플레이어로 해결.
  5) 문자메세지 (SMS, MMS) : http://goo.gl/gLYRH 아직 시도해보진 않았음.
  6) 카톡기록 : 포기. 대화별로 email로 내보내기는 있는데, 가져오기는 없는듯. ㅠ_ㅠ
  7) 인증서 : 어플별로 다시 해야 함. 이건 예상했던거.
    --> 안드로이드의 경우, 하나은행앱과 우리은행앱의 인증서가 공유된다. 인증서 암호를 앱별로 다르게 설정할 수 없으니 주의!

3-2 앱

  1) Facebook
  2) Dice player (기부도 했음! 후훗)
  3) Cliann
  4) TweetCaster
  5) Go launcher EX + Prada theme
  6) Seoul bus, Smart subway
  7) Play 북
  8) 카카오톡
  9) 은행 앱들