OS X 용 앱의 UI를 개발 할 때 유용한 기능이 바로 코코아바인딩이다. 이 기능은 코드 레벨의 오브젝트(변수)와 UI 사이를 이어주어서 별 다른 코드 없이도 데이터를 UI에 렌더링 할 수 있게 해 준다. 그런데 바인딩을 제대로 했음에도 데이터가 표시되지 않거나 등의 문제를 겪을 수도 있다.
프로그래밍을 하다 막히면 근처 치킨집 사장에게 상의하라는 농담이 있다. 실제로 그런 경우도 있긴 있겠지만, 정확한 의미는 '개발자는 대부분 일찍 퇴임하고 자영업 등 다른 업종으로 뛰어들거나 개발직종이 아닌 직종으로 옮겨간다' 라는 말이다. 즉 개발자라는 직종의 수명은 짧다. 그리고 주변에서도 이런 생각을 가지고 있는 사람이 많다. 어쩔 수 없는 한국의 현실이라고 하기 전에, 왜 이런 생각이 잘못되었다고 고치자는 인식이 없는지가 답답하다.
Emacs에서 mode-line 이란 하단의 미니버퍼 위에 정보가 표시되는 라인을 의미한다. 여기에는 편집중인 파일이나 버퍼의 이름과 각종 모드를 비롯한 커서 위치 등등 다양한 정보가 표시된다. 유용한다거나 한건 아니지만 이 모드라인을 원하는 대로 바꾸거나 예쁘게(?) 꾸미는 것 또한 가능하다. 여기서는 main-line이라는 Powerline에서 fork된 확장을 소개한다.
Git의 특성 상 수정하거나 변경된 파일은 Staging이라는 절차를 거쳐야만 커밋이 가능하다. 그런데 스테이징 할 파일이 여러개이지만 전부가 아닌 경우 하나하나 일일이 입력하는 건 매우 귀찮고 시간 손해가 많은 일이다. 물론 외부 툴을 이용해서 쉽게 하는 방법도 있겠지만 여기서는 쉘(터미널/콘솔) 상에서 외부 도구 없이 Interactive Git Add 기능을 설명한다.
프롬프트가 평범(?)해서 그럴지도 모르겠지만, 간혹 cat을 이용해 파일 내용을 볼 때 색상 문제로 헷갈리는 경우가 있었다. 그래서 이 cat에 문법 강조(Syntax Highlight) 기능을 추가 할 수 없나 찾아보니 몇 가지 대체방법이 있었다. 간단한 설명을 하자면, cat는 일반적으로 텍스트 파일 내용을 보기 위한 *NIX(UNIX/Linux 등등) 유틸리티이다. 물론 UNIX류의 특징 답게 그냥 보기 외에도 파이프를 통해 다른 텍스트 프로세서에 전달하는 용도로도 이용할 수도 있겠지만 일반적인 사용법이 그렇다는 이야기다.
요즘 웹이라 하면 HTML 뿐만이 아니라 CSS와 Java Script가 기본이다. 거기다 템플릿 기반의 웹개발도 일반적이다. 그래서 웹개발에 이용되는 하나의 소스 파일에는 최소한 3가지 이상의 문법이 이용된다고 볼 수 있다. Emacs에서 하나의 버퍼는 하나의 메이저 모드만 이용 할 수 있다는 제약은 이런 웹 개발에 있어서는 좀 문제가 있는 편이다. 기본적으로 html-mode와 js-mode, css-mode 등 필요한 메이저모드는 지원되지만 개별 버퍼에 하나만 쓸 수 있다. 그래서 multi-web-mode나 Mumamo 같은 여러 모드를 섞는 특수 모드 등이 사용되기도 한다. (최하단 링크 참고) 이번에 소개하는 web-mode는 멀티 모드가 아닌 하나의 모드에서 다양한 문법의 하이라이트와 편집 기능을 지원하는 통합형(?) 메이저모드이다.
개인적인 취향으로 Emacs를 쓸 때 프레임(보통은 윈도우라고 부르지만 Emacs에서 윈도우는 하나의 창 혹은 이 창을 분할한 영역을 의미)을 하나 밖에 쓰질 않았다. 하지만 최근엔 여러 프로젝트의 소스를 참고할 일이 많아지다 보니 결국 멀티 프레임 기능을 쓰게 되어서 관련 기능을 메모한다.
Emacs의 도움말 시스템인 C-h 키는 Emacs를 사용하는 도중 굉장히 자주 이용하게 될 도움말 키이다. Tutorial은 이제 Emacs를 시작하는 이들에게 좋겠지만, 개인적으로 이 도움말 단축키 중 하나를 꼽으라면 바로 C-h m 키를 꼽고 싶다. 특히 단축키가 기억나지 않거나 궁금할 때 이용 할 수 있는 최고의 단축키이다.
우선 배경 설명부터 하자. OS X 환경에서 Homebrew를 통해 Python 및 기타 여러가지를 설치하고 사용하는 터미널 유저이다. 그리고 업무로 sqlite3를 이용하는 스크립트를 작성하고 있다. 일단은 잘 돌아가고 잘 사용하고 있는 스크립트이다. 그런데 어느날 부터 이 스크립트가 오동작 하기 시작했다. sqlite3 모듈을 import 하는 데서 오류가 발생하는 것이었다.
코딩 도중 나중에 꼭 해야 할 것이라는 의미에서 TODO로 시작되는 주석문을 달 때가 있다. 물론 사람마다 다르겠지만, 개인적으론 TODO 라는 주석문으로 코딩 내용을 축약해서 적어놓고 나중에 그 내용을 보고 구현(Implementation)하는 방식을 종종 사용한다. 그런데 코드 내용이 길 때는 TODO를 검색해서 코딩하기엔 약간 귀찮을 때도 있다. TaskList는 Vim에서 TODO 등 특정 키워드 내역을 한방에 정리해서 보여주는 플러그인이다.
Emacs에서 코딩을 하다가 특정 루틴을 실행시켜 보고 싶을 때 라던가, 혹은 쉘 스크립트 결과물을 Emacs 안에서 바로 실행시켜서 버퍼에 적고 싶다던가 등등 현재 버퍼의 내용을 실행시켜보고 싶은 때가 있을 수도 있다(-_-). quickrun.el은 이렇게 버퍼의 내용을 실행시켜서 결과를 확인하거나 현재 버퍼에 넣고 싶을 때 활용 할 수 있는 Emacs용 확장이다.
앞서 auto-highlight-symbol-mode 를 이용한 글 을 썼었는데 오류와 버그로 인해 가끔 동작하지 않는 문제가 있었다. 다만 Emacs 24에서만 발생하는 문제 일 수도 있다. auto-highlight-symbol-mode가 제대로 동작한다면 굳이 이 글을 참조 할 필요는 없다.
Sublime Text 2 용으로 GitGutter 라는 확장 플러그인은 Git에 등록된 파일을 편집하면 편집된 내용을 알 수 있게 라인번호 왼쪽에 뭔가를 표기해 주는 확장이다. 인기가 좋은지 유용한지는 잘 모르겠지만, 어쨌든 Emacs용으로도 이 git-gutter가 나왔다.
골프라는 스포츠는 공을 얼마나 적게 쳐서 홀에 집어넣는지를 겨루는 스포츠다. 타수를 줄여서 최대한 적게 친 순으로 순위가 메겨진다. VimGolf는 Vim으로 골프치는 것이 아니라 -_- 골프의 목적과 비슷하게 Vim으로 특정한 텍스트 프로세싱을 하는데 얼마나 효율적으로(얼마나 키보드 타이핑 수를 적게 하느냐 등) 해 내느냐를 겨루는 게임같은 서비스이다.
특정 키워드를 정리하는 코딩을 하고 있었는데 가끔 중복되는게 있어서 검색으로 일일이 찾아보면서 코딩을 하고 있었다. 그런데 입력한 코드를 정렬해 두면 미리 검색해 보지 않아도 어느 정도 쉽게 중복되는 것이 눈에 들어오지 않을까 하는 생각에서 Vim에서 라인 단위 정렬을 하는 방법을 찾아보게 되었다. Vim에서는 sort라는 명령을 자체적으로 지원한다. 혹은 *NIX 유틸리티를 이용하는 것도 가능하다.