발생일: 2014.02.18 키워드: git hooks, 깃훅 문제: 프로젝트에 커밋하거나 푸시하기 전에 린트나 테스트를 돌리려고 한다. 깃훅(git hooks)이 있다고 들었는데, 어떻게 적용하면 될까? 해결책: ## Git hooks 적용하기 프로젝트의 .git/hooks 디렉토리에 들어가면 아래 이미지와 같이 샘플 훅 파일이 있다. 각 파일은 이름에 적혀있는 시점에 실행되는 훅 파일의 샘플이다. 예를 들어, pre-commit 은 커밋 전에, pre-push 는 푸시 전에 호출된다. 실제로 훅이 동작하게 하려면, 해당 파일을 열어 수정한 후에 .sample 확장자를 제거하면 된다. 샘플 파일을 그대로 두고 싶다면, 별도의 훅 파일을 만들어 아래처럼 실행 가능하게 만들면 된다. $ touch .git..
발생일: 2014.01.27 키워드: npm, npmrc, npm 설정, sudo, root, npm global, npm -g 문제: 루트 권한으로 npm 글로벌 모듈을 설치할 때, 별도의 프록시를 사용하도록 설정하려고 한다. .npmrc 파일에 설정했더니 설정이 적용되지 않는다. 왜일까? 해결책: npm 에서 읽어오는 설정 파일의 경로는, $PREFIX/etc/npmrc 라고 했는데, $PREFIX 가 의미하는 건 노드의 설치 경로였다. 내 경우에는, 루트 권한으로 실행하는 경우 /usr/local/etc/npmrc 의 설정 파일을 참조하고 있었다. 아래 명령으로 prefix 값을 확인할 수 있다. $ npm config ls -l # 참고: https://github.com/npm/npm/issue..
발생일: 2015.01.17 키워드: 코드리뷰, code review, github, pull request, pr, 카카오스토리, kakaostory 문제: 카카오스토리 웹 팀에서 2013년 5월부터 진행했던 코드 리뷰 경험에 대한 글이다. 우리 팀은 시작부터 자율적으로 강하게 코드 리뷰를 해보자고 합의했었고, 2년 넘게, 지금까지 '모든 코드는 리뷰 후에 머지한다'는 정책을 고수해오고 있다. 주변 동료나 다른 회사 사람들과 코드 리뷰에 대한 얘기를 나눠보면, 대체로 일정 때문에 리뷰를 도입하기 어렵다고 한다. 가뜩이나 일정 촉박하고 개발 시간이 부족한데, 리뷰는 무슨 리뷰라며 말이다. 되돌아보면 우리도 내내 그랬던 것 같다. 리뷰가 프로젝트의 병목이 되는 시기가 종종 있었고, 한 때는 '이제 리뷰 그..
발생일: 2016.03.11 키워드: git remove untracked file 문제: 리파지터리에 추가했지만 아직 스테이지 상태로 올라가지 않은 untracked 파일을 삭제하고 싶다. 해결책: git clean 명령을 사용하면 된다. 파일 지우기 $ git clean -f 지우려는 파일을 확인하고자 할 땐 n 옵션을 추가한다. $ git clean -fn 디렉토리 지울 땐 d 옵션을 추가한다. $ git clean -d git ignore 파일도 함께 삭제하려면 x 옵션을 추가한다. ignore 파일에는 IDE의 프로젝트 설정 파일 등이 포함되어 있을 가능성이 있기 때문에 주의한다. $ git clean -fxd 참고: http://stackoverflow.com/questions/61212/ho..
발생일: 2016.03.11 키워드: xcode, lldb, lldb command, gdb, gdb command, 디버그 콘솔 명령, 디버그 콘솔 커맨드, debug console command, debugging console, 디버깅 콘솔, 디버깅 단축키, 디버그 콘솔 단축키, debug console shortcut 문제: Xcode의 디버그 콘솔을 키보드로 컨트롤하려고 한다. 해결책: 디버그 콘솔 Cmd + Shift + C: 콘솔로 포커스 Cmd + K: 콘솔 초기화 실행 관련 커맨드 s: step in n: next, step over fin: finish, Step out c: continue, 다음 브레이크포인트로 진행 스택 프레임 이동 bt: print backtraces, 전체 스택..
발생일: 2016.03.11 키워드: xcode, 디버그 콘솔, debug console, debugger, 디버거, enum, 디버깅, 심볼릭 브레이크포인트, symbolic breakpoint, lldb enum 문제: Xcode 디버그 콘솔에서 디버깅할 때, enum 으로 선언된 값에 접근되지 않는다. 지금까진 enum 에 할당된 값을 직접 찾아 넣는 식으로 사용하고 있었는데, 뭔가 좀 더 효율적인 방법이 있을 것 같다. 해결책: lldb에 관련 모듈을 임포트하면 해결할 수 있다. 예를 들어, 콘솔에서 아래와 같이 Foundation 을 임포트하면 이후부터는 Foundation 모듈에 선언된 enum 값을 접근할 수 있다. (lldb) expr @import Foundation iOS 개발 중이라면..
발생일: 2016.03.11 키워드: xcode, objective c, debugging, lldb, gdb, 심볼릭 브레이크 포인트, 디버깅, 브레이크 포인트 문제: Xcode 의 디버거 네비게이션에서 심볼릭 브레이크포인트를 걸려고 한다. 해결책: Xcode 에서는, Symbolic Breakpoint로 특정 메서드에 브레이크포인트를 적용할 수 있다. 심볼릭 브레이크 포인트는 Xcode 에서 디버거 네비게이션의 좌측 하단에 Add 버튼으로 추가할 수 있다. Symbol 인풋에 클래스와 메서드명을 입력하면, 해당 메서드가 실행될 때 브레이크포인트가 걸린다. 예제와 같이, 아래 타입으로 추가할 수 있다. -[클래스 메서드명] 튜토리얼마다 심볼 형태에 대한 가이드가 조금씩 다른데, 테스트해보니 위 예제에 ..
발생일: 2014.05.11 키워드: npm, bitbucket, npm private repository 문제: npm 모듈을 bitbucket 의 private repository 로 설치하려고 한다. 기본적인 설치 방법은 아래 링크의 가이드를 따르면 된다. http://www.zev23.com/2014/03/npm-install-from-github-or-bitbucket_13.html 진행하다가 몇 번 삽질해서 잘 설치되지 않을 경우에 대한 체크리스트를 메모해둔다. 해결책: 1. 가져올 모듈의 package.json 에 repository 정의를 했는가? 2. private 리파지터리라면, ssh 인증을 추가했는가? 3. 혹시 아래처럼 적진 않았는지? $ npm install git@bitbuck..
발생일: 2014.02.14 키워드: git, github, git hook, github hook, 깃훅, commit hook, 커밋훅 문제: 프로젝트 내의 특정 파일을 변경 후 커밋하는 경우엔, 사용자 입력을 받아 별도의 처리를 해주려고 한다. 깃의 커밋훅(pre-commit, post-commit)에서 사용자 입력을 받을 수 있는 방법이 있을까? 해결책: 아래 명령으로 호출 후 read 명령으로 사용자 입력을 가져올 수 있다. 예제 코드에서는 사용자 입력을 받아 gem 의 새 업데이트 정보를 확인한다. # Allows us to read user input below, assigns stdin to keyboard exec < /dev/tty while true; do read -p "[post-..
발생일: 2014.02.14 키워드: git, githook, 깃훅, pre-commit 문제: 우리 프로젝트에서는 커밋 훅에서 npm 으로 패키지 관리를 하고 있고, shrinkwrap 으로 버전을 잠궈두고 있다. 누군가 package.json 파일을 변경한 후에 커밋하는 경우엔, 확인 메시지를 받아 shrinkwrap 을 업데이트하도록 가이드하려고 한다. 커밋 전(pre-commit 훅에서) 특정 파일이 변경된 것을 확인할 방법이 있을까? 해결책: 깃훅에서 아래와 같은 방법으로 처리했다. # 커밋 대상 파일에 package.json이 포함되었는지 확인 PACKAGE_JSON_CHANGED=$(git diff --cached --name-only --diff-filter=ACM | grep packag..