2011년 12월 21일 수요일

Vim으로 git commit 메시지 작성 시 오류

좀 제한적인 환경에서만 발생하는 문제다. 증상부터 이야기 하자면, git commit으로 커밋 메시지를 vi 혹은 vim으로 작성하고 :wq를 통해 커밋을 하려는데 다음과 같은 오류가 발생한다.
error: There was a problem with the editor 'vi'
이 문제의 원인은 vim이 종료코드로 0(정상)이 아닌 1을 반환했기 때문이다. 단순하게 확인하기 위해 vim을 실행시키고 바로 종료시킨 후 echo $? 커맨드로 종료코드를 확인했을 때 0이 아닌 다른 값이 표시된다면 이 문제가 발생 할 수 있다.

2011년 11월 11일 금요일

[Emacs] 현재 라인 잘라내기/복사하기

Emacs에서 현재 커서가 위치하고 있는 라인을 복사하려면 일단 커서를 제일 앞으로 이동(C-a)한 후 영역선택을 켜고(C-SPC) 라인 끝으로 이동(C-e)해서 복사(M-w)하는 복잡한(?) 과정을 거쳐야 한다.

Emacs는 무한확장이 가능하다! 즉, 좀 더 간편히 하기 위해 Emacs의 기능을 수정할 수 있다. 아래 스크립트를 실행시키고 난 뒤에는 영역 선택 없이 M-w 키를 누르면 바로 현재 라인이 복사가 되어 킬링(kill-ring)에 들어간다.

2011년 11월 10일 목요일

[Emacs] Smart Beginning of Line

이클립스 등에서는 Home키를 누르면 커서를 해당 라인의 제일 앞으로 이동하게 되는데, 만약 라인이 들여쓰기가 되어있다면 들여쓰기 된 이후의 위치로 이동하게 된다. 굉장히 단순한 기능이지만 편할 때가 많은데 Emacs의 기본 라인 앞으로 이동하기 키(C-a 등)는 이런 기능이 지원되지 않는다. 그렇다면 이 기능을 만들어 보면 된다. (Emacs 다운 생각 -_-)

2011년 11월 9일 수요일

[Emacs] 바이트컴파일 시 경고 숨기기

Emacs로 elisp 코드를 바이트컴파일 할 때 나오는 경고(Warning)를 숨기려면 다음 설정 코드를 초기화 스크립트(.emacs)에 추가하거나 바이트컴파일 전에 별도로 실행시키면 된다.

2011년 11월 2일 수요일

Tagr: 맥 용 MP3 태그 편집기

예전부터 쓰던 Tags가 어디에 있는지 찾지 못 하다가 발견한 것이 Tagr. 이름이 바뀐 것 같다. 어쨌든 단순히 설명하자면 Mac OS X용 멀티 MP3 파일을 지원하는 ID3 Tag 에디터.

한국 앱스토어 게임 카테고리 등장

[관련 기사] 애플 오늘부터 앱스토어 게임 카테고리 전격개방

몇 일 전 부터 수요일 쯤 게임 카테고리가 개방 될거라는 뉴스가 떠돌더니 정확하게 오늘 한국 애플 앱스토어의 게임 카테고리가 열렸다.

2011년 10월 31일 월요일

[Emacs] shell-command-on-region

shell-command-on-region 함수는 이름 대로 Emacs 버퍼 상의 내용을 특정 쉘 유틸리티로 던져(파이프)서 그 출력을 새로운 버퍼에 출력해 주는 함수다.

UNIX의 철학이 섞여있는 글이 될 것 같다. 윈도우를 선호하는 사용자가 많지만 아직도 구식인 UNIX(혹은 UNIX 클론)가 왜 대단한가에 대해서 한 가지 설득이 가능할지도 모르겠다.

2011년 10월 27일 목요일

[Vim] 탭 키로 자동완성 SuperTab

계속해서 쓰는 Vim 자동완성 플러그인 이야기. 이번엔 SuperTab이라는 물건을 소개한다.

http://www.vim.org/scripts/script.php?script_id=1643

'슈퍼'라는 이름 때문에 뭔가 대단한 것 처럼 보이는데... 뭐 개인적으론 좋은 기능이라고 생각한다. 그냥 타이핑 도중 탭 키를 누르면 자동완성을 해 주거나 등의 기능을 제공한다. 다르게 말하자면, TAB키에 Ctrl-N 키의 기능을 부여하는 단순한 기능이다.

2011년 10월 25일 화요일

[Vim] 강력한 자동완성 플러그인 neocomplcache

neocomplcache는 autocomplpop을 능가하는 자동완성 기능을 제공한다. autocomplpop이 Vim의 기본적인 자동완성 기능을 자동으로 동작시키는 것과는 다르게 텍스트 뿐만 아니라 Vim 사용에 편리한 다양한 커맨드들을 자동완성 해 준다.

인공지능과 LISP의 창조자, John McCarthy 사망

John McCarthy (September 4, 1927 - October 24, 2011)

누구나 '인공지능' 이라는 말은 한번 쯤 들어봤을 것이다. 이 인공지능(Artificial Intelligence)라는 말은 애초부터 존재했던 것이 아니다. 바로 John McCarthy에 의해 쓰여지기 시작한 말이다.

2011년 10월 24일 월요일

[Vim] Python 오류 체크 플러그인 pyflakes.vim

pyflakes.vim은 Python 코드 오류 체크 툴인 pyflakes를 Vim에서 좀 더 시각적으로 이용할 수 있게 해 주는 플러그인이다. Emacs에서 Flymake와 pyflakes를 이용해 오류 체크 하던 것과 거의 동일한 기능인 것 같다.

2011년 10월 19일 수요일

[Xcode] 인터페이스빌더 Action/Outlet Unavailable 문제

Xcode 4.1의 버그인지 4 자체의 문제인지 모르겠지만, 간혹 UIViewController를 XIB와 함께 이용해 생성해서 해당 XIB를 인터페이스 빌더로 편집하고 액션이나 아웃렛을 연결해 둔 것에서 빌드 시 경고가 발생하는 문제가 있다. 그런데 처음부터 경고가 발생하는게 아니라 어느 순간 갑자기 발생하였다.

2011년 10월 17일 월요일

[Vim] 파일 별 들여쓰기 크기 설정하기

Vim에서 파일의 종류(확장자나 언어 등)에 따라서 들여쓰기 크기(indentation size or tab size)를 설정하려면 다음과 같은 식으로 하면 된다.

2011년 10월 14일 금요일

[Emacs] Smex - M-x Enhancement

Smex는 M-x를 이용해 함수를 직접 실행 시킬 때 도움을 주는 Emacs용 확장이다. 모양이 마치 ido와 비슷하게 나오는데 ido의 기능을 빌려 쓰기 때문에 당연한 것 같다.

2011년 10월 13일 목요일

C 언어 창시자 데니스 리치 사망

C언어의 창시자이자 UNIX 핵심 개발자였던 데니스 리치(Dennis Ritche)가 사망했다는 소식이 구글플러스를 통해서 전해졌다.

그의 영혼이 좋은 곳으로 인도되길 기원한다.

Blogger의 새로운 Dynamic Views

블로거(혹은 블로그스팟)를 접한지는 오래되었지만 여전히 구식인 안타까운 테마들 만을 제공하는 것을 보며 한숨을 자주 쉬곤 했다. 그래도 IT계열 특히 개발자라면 그렇게 안타깝지만은 않은 레이아웃 이기에 별 불만 없이 쓰곤 했지만...

그런데 최근 블로거가 구글 플러스 출시와 함께 레이아웃을 바꾸기 시작하더니 결국 새로운 블로그 레이아웃을 내놓았다.

2011년 9월 30일 금요일

[iOS] 네비게이션바 배경 바꾸기

(주의) 이 내용은 iOS 4.x 에서 테스트 되었으며 iOS 5 부터 효과가 없음.

네이게이션 컨트롤러를 이용해 구성한 UI에서 네비게이션바와 버튼을 입맛에 맞게 커스터마이징 하는 방법은 인터페이스 빌더 등에서는 지원되지 않는다. 물론 그렇기 때문에 수동으로 UINavigationBar를 상속받아 새로운 네비게이션바를 만들어서 커스터마이징 할 수는 있다.

그런데 좀 더 단순한 방법을 이용해 네비게이션바의 배경을 통채로 바꿔버리는 방법이 있다. 카테고리를 이용해 UINavigationBar를 오버라이딩 하는 방법이다.

[Mac App Store] 무비스트(Movist) 새 버전의 등장

무비스트는 0.6.8 버전이 나온뒤 얼마의 시간이 지났는지 기억나지 않을 정도로 업데이트가 없었다. 그렇게 잊혀질까 했지만 갑자기 맥 앱스토어에 무비스트 1.0.0 이 $4.99의 유료버전으로 올라왔다.

2011년 9월 23일 금요일

dotcloud.com 으로 node.js 서비스 호스팅 하기

PaaS 이니 뭐니 하는 귀찮은 설명은 생략. dotcloud.com은 플랫폼을 빌려주는 호스팅 서비스라고 대충 정의하자. dotcloud.com에 자신만의 웹 서비스를 올려서 호스팅 할 수 있다.

이 글의 내용은 dotcloud documentation의 Services 항목 중 node.js에 관한 것을 다르게 정리한 것 뿐이다. dotcloud의 경우 상당히 많은 언어와 플랫폼을 지원하기 때문에 node.js에 관심이 없다면 다른 언어에 대해서도 살펴볼 것. 현재 perl/php/python 등 다양한 언어와 플랫폼을 지원하고 있다.

2011년 9월 16일 금요일

[Xcode4] #pragma mark 팁

Xcode에서는 pragma mark 를 통해 코드 상의  API 내역을 정리하는데 도움을 주는 기능이 있다. 단순히 #pragma mark 를 적고 내용을 적는 방식으로 동작한다.

2011년 8월 31일 수요일

Mac OS X Lion에서 환경변수 설정 방법

Mac OS X용 GUI 애플리케이션(Application)은 터미널에서 설정한 환경변수(Environment Variable, .bash_profile, .bashrc 등에 지정한 경로 등)가 적용되지 않는다. 예를 들어 Mac OS X 에서 기본적으로 적용된 경로(PATH) 정보를 제외하고 GUI 애플리케이션이 그 외의 경로를 알지 못해 오류가 발생하는 경우가 있다. 실제로 Emacs.app의 경우 설정에 따라 /usr/local에 설치된 무언가(homebrew/MacPort/Fink 등으로 설치한 유틸리티는 이런 경로에 설치된다)를 접근하기 위해 특수한 경로 정보가 추가되어야 하는 경우도 있다.

2011년 8월 26일 금요일

리눅스 20살 생일

1991년 8월 26일 리누스 토발즈에 의해 시작된 리눅스가 오늘로 20살의 생일을 맞이하게 되었다.

Emacs유저를 위한 bash의 키맵

이번에는 유명한 bash쉘(Bourne-Again Shell)의 키맵 이야기. bash쉘은 상당수의 리눅스나 Mac OS X 터미널의 기본 쉘 프로그램으로 지정될 만큼 유명한 쉘 이다.

bash쉘의 키맵은 기본적으로 Emacs의 키맵과 호환된다. 잘 다루지 않는 사람들은 모르겠지만 커서이동과 편집과 관련된 키는 Emacs와 동일하다. (단, 설정에 따라 vi 키맵을 사용할 수도 있다)

Emacs를 좋아한다면 맥으로!

제목을 정확히 풀어쓰자면, 'Mac OS X 는 Emacs 키맵이 잘 지원되니 즐거운 타이핑 라이프를 위해서는 맥을 사용하자' 라는 긴 내용이다.

전통적인 Emacs의 키맵은 생각보다 많은 곳에 사용된다. 만약 맥을 사용중이고 OS를 Mac OS X를 사용한다면, 어떠한 GUI에서든 텍스트필드가 있는 곳에서는 다음 키를 쓸 수 있다.

2011년 8월 24일 수요일

[iOS] View의 위치가 어긋나는 경우

XCode를 Window Based 프로젝트로 시작하여 직접 ViewController를 하나 만들어서 루트윈도우에 붙였을 때 뷰의 위치가 어긋나는 경우가 있다. 정확히는 스테이터스바(StatusBar, 화면 최상단의 시계 및 배터리 정보 등이 표시되는 막대) 크기 만큼 뷰가 위로 올라와서 붙은 경우이다. 이 경유 뷰의 최상단이 스테이터스바에 일부분 가려지게 되어서 문제가 된다.

[iOS] UIImage 복사하기(?)

아주 단순한 이유에서 찾아보게 된 UIImage 객체의 복사본을 만들어 보는 방법 메모.

2011년 8월 23일 화요일

[Emacs] 검색 후 되돌아오기

Emacs에선 C-sC-r로 파일 내 검색을 할 수 있는데 이 때 검색 전의 위치로 돌아오는 명령이 있는지 없는지 모르겠다. 찾는것도 귀찮고 해서 이 기능을 만들어 봤다.

아래가 소스 코드이다.

[Emacs] js3-mode

js2-mode에서 fork된 프로젝트 중 하나로 역시나 JavaScript IDE를 위한 메이저모드이다.

[Emacs] Nyan Mode

아는 사람은 다 아는 Nyan Cat이 Emacs용 마이너모드로 나와버렸다. 무려 이 마이너모드는 커서 위치가 전체 문서에서 어디 위치인지를 모드라인에 표시해 주는 원래의 Nyan Cat에 비하면 엄청나게 생산적인(?) 기능을 제공한다. ;;;;

원래 Nyan Cat 자체는 그냥 중독성 있는 음악과 애니메이션이 무한 반복되는 잉여스러운 물건이다. 솔직히 말해서 이 모드도 장난감이다. 그냥 즐기자. :)

2011년 8월 22일 월요일

Google+ 인기의 증거?

Google+가 등장한 이후 수 많은 'Google+를 찬양하는 패러디'가 많이 양산(?)되고 있는데 그 중에는 이런 퀄리티 좋은 영상 아니 노래 까지도 있다.

Mac App Store: 키보드 런처 Alfred

Alfred는 Mac OS X에서 키보드로 명령어를 입력해서 어플을 실행시키거나 검색을 하거나 북마크를 검색해 웹브라우저를 띄우는 기능을 제공하는 어플이다.

2011년 8월 18일 목요일

[Humor] Google+

[Emacs] term-mode에서 붙여넣기(paste)

Emacs의 기본 설정 상태의 term-mode(M-x term)는 붙이기(yank)가 되지 않는다. 아주 정확하게(?) 터미널을 애뮬레이션 하고 있는 만큼 붙이기 키(C-y)도 가로채고 있기 때문일지도 모르겠다.

이번 글은 Emacs term-mode에 붙여넣기(paste)에 대한 내용이다.

2011년 8월 10일 수요일

[Emacs] Homebrew로 Emacs 빌드 및 설치하기

몇 달 전만 해도 Homebrew로 emacs를 빌드할 때 에러가 발생하는 문제가 있었다. 주로 Xcode4가 설치된 환경에서 발생하는 문제였다. 그런데 드디어 이 문제가 해결되었나보다.

그냥 설치를 해버리면 터미널 전용으로만 빌드가 되어버리기 때문에 Mac OS X GUI 버전으로 빌드하기 위해서는 --cocoa 옵션을 줘서 빌드해야한다.

[Node.JS+Express] Routing

Express에서 Routing이란 용어는 URL과 View를 매칭시키는 거라고 정의할 수 있을 것 같다. Route라는 말 그대로 특정 URL를 특정 View로 '분배'시키는 역활이다. 이번에는 이 라우팅에 대해 간략이 소개한다.

2011년 8월 9일 화요일

2011년 8월 8일 월요일

Snow Leopard VS Lion

기능적인 면이 아닌 단순히 퍼포먼스 측면에서 라이온과 스노레퍼드를 비교한 동영상을 발견하였다.

우선 알아둬야 할 건, 라이온이 그 만큼 더 많고 다양한 기능을 제공하고, 그래서 메모리를 더 많이 먹고 있다는 사실이다.

[Node.JS+Express] Express의 기본 프로젝트

npm으로 express를 설치하면 express라는 실행 스크립트도 함께 설치된다. 이 스크립트는 express 기본 프로젝트를 생성해 준다.

[Node.JS+Express] Express 시작

Node.JS용으로 유명한 웹 애플리케이션 프레임웍인 Express에 관한 기본 사항을 연재(?)할 예정이다. 아마도 가이드 문서의 요점을 번역하는 수준이 될 것 같지만...

[Humor?] 개발자 vs 디자이너 vs 기획자

[Node.JS] npm 광역설치 시 모듈을 못 찾는 문제

npm으로 Node.JS용 모둘을 광역 설치(-g) 했을 때 모듈을 못 찾는 경우가 있다. 내 경우 homebrew로 Node.JS를 설치한 상태에서 기본적인 방법으로 npm을 설치한 상태였는데 -g 옵션으로 설치한 모듈을 전혀 읽지 못 하였다.