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 옵션으로 설치한 모듈을 전혀 읽지 못 하였다.

[Emacs] js2-mode 추가 설정

자바스크립트 코딩에 여러 좋은 기능을 제공하는 js2-mode 를 거의 기본 설정으로 쓰고 있었는데 가끔 자동 들여쓰기가 안되고 속도도 느리고 여러 문제를 겪었다. 그래서 js2-mode.el를 뒤져다봐서 몇 가지 추가 설정을 찾았다.

iTerm2 Shift-Space 한영전환 문제

바람 입력기 등을 이용하거나 입력기 전환 단축키를 Shift-Space로 변경하였을 경우 iTerm에서 한영이 전환됨과 동시에 공백이 입력되는 증상이 있을 수 있다. (단, iTerm 코드 수정을 통해 해결이 된 버전이 따로 있다) 그런데 이 문제는 iTerm2에 와서도 그대로 이어지고 있는 문제다.

다행히도 iTerm2에서는 설정을 통해 Shift-Space로 한영전환 시 공백이 입력되는 문제를 해결할 수 있다.

2011년 8월 7일 일요일

gist.github.com

http://gist.github.com/ 은 pastebin 과 비슷하게 코드 스니펫(쪼가리?)를 적고 이를 특정 사이트에 임베딩 시킬 수 있게 해 주는 서비스다.

2011년 7월 28일 목요일

신의 선물 find

약간 뜬금없게 Unix/Linux 유틸리티인 find에 관한 이야기.

find 유틸리티는 파일을 검색하는 도구다. 그것도 매우 귀찮게 터미널을 열고 쉘에서 직접 손으로 타이핑 해서 입력해야 하는 도구다. 그럼에도 불구하고 난 이런 CUI 유틸리티들을 매우 찬양한다. (물론 이건 Unix의 철학을 알아야 하는 이야기다)

[Vim] 여러 라인 동시 삽입, blockwise-visual

Emacs의 cua-mode에서 했던 사각형 단위의 영역 선택도 물론 Vim에서도 가능하다. 이 모드를 Vim에서는 blockwise visual mode라고 부른다. 이에 관한 한가지 이야기.

2011년 7월 26일 화요일

[Python] simplejson

Python용 JSON 파서/인코더 모듈인 simplejson 소개글.

[Emacs] artist-mode

사람에 따라서 필요없는 기능일 수도 있지만, Emacs에는 텍스트로 그림을 그리는 기능을 제공한다. artist-mode라 불리우는 이 모드는 마우스를 이용해서 정말 간단하게 ASCII Art를 흉내낼 정도의 그림을 그릴 수 있다. (정확히 ASCII ART를 위한 Picture Mode라는 것도 있지만...)

[Emacs] 특정 영역을 이동시키기

Emacs에서 선택한 영역을 위/아래 라인으로 이동시키는 기능 소개.

[Emacs] cua-mode

Emacs의 기본 단축키 중 Copy/Cut/Paste/Undo는 윈도우용 편집기에 익숙한 이들에게는 약간 곤욕(?)이다. 이럴 때는 Cua Mode라는 것을 통해 윈도우용 편집기와 동일한 단축키를 이용할 수도 있다. C-x, C-c, C-v 등의 키 말이다. 그리고 C-z로 Undo도 가능하다.

뿐만아니라 cua-mode 는 라인단위가 아닌 사각형 단위의 선택 영역을 지정할 수도 있다.

2011년 7월 8일 금요일

[node.js] Static File Serving

Node.JS로 만들어진 기본 웹서버 템플릿에는 고정파일(Static File) 서빙 기능이 없다. 즉, 단순히 말해서 특정 경로의 html 파일을 표시해 주거나 이미지 파일을 읽어서 웹브라우저에 표시해 줄 수가 없다. 이런 기능은 직접 구현해야 한다.

2011년 7월 5일 화요일

[node.js] Evaluation

굳이 node.js로 표현해야 할지 아니면 Java Script로 통합해서 표현해야 될 지는 모르겠지만, 하여간 evaluation, 즉 코드에서 코드 실행시키기(?)

2011년 6월 22일 수요일

[node.js] 루프와 process.nextTick()

node.js 암초 2번째 이야기. 이번에는 node.js의 루프와 process.nextTick() 관한 이야기를 적어볼까 한다. (루프가 뭔지는 굳이 설명할 필요는 없을 것 같다.)

[Emacs] flymake-cursor.el

Flymake 는 마우스 친화적이다. 물론 키보드로도 오류내용 파악이 가능하긴 하지만 그다지 마음에 들지 않았다. 그래서 찾아보니 flymake-cursor.el 이라는 확장이 있었다.

flymake-cursor.el 은 오류가 표시된 라인에 커서를 이동시킨 후 잠시 기다리면 미니버퍼에 오류 내용을 표시해 주는 기능을 추가해준다.

2011년 6월 21일 화요일

[node.js] 비동기 코딩스타일 이라는 암초

node.js 는 비동기(asynchronous) 모델의 코딩을 하기 쉽도록 디자인 되어 있다. 하지만 그렇다고 무작정 쉽게 코딩이 가능한건 아니다. 기존의 동기화 기반의 멀티스레드 모델을 코딩 했거나 함수나 메서드 등의 리턴값을 이용해 로직을 작성하던 때에 비해서 달라지는 점이 있는데, 익숙하지 않아서 문제가 발생해도 쉽게 해결되지 않을 수 있다.

2011년 6월 20일 월요일

[Emacs] Terminal.app 에서 Shift-Tab 사용하기

문제의 시작은 Mac OS X 에서 Terminal.app(터미널) 에서 emacs -nw 를 사용 시 Shift-TAB 키가 'M-[ z'로 인식된다는 점이다. org-mode 등에서 접혀진 컨텐트를 몽땅 펴는 키인 만큼 없으면 좀 불편할 수도 있어서 방법을 찾아보기로 했다.

2011년 6월 17일 금요일

[node.js] 기본적인 모듈 코딩 방법

모듈이라고 했는데 그냥 기능에 맞게 함수를 여러 파일로 쪼게어서 쓸 때 그 파일들을 어떻게 불러들여 쓸 수 있는가에 대한 이야기. 정말 기본적인 것만 메모해야지.

[node.js] 기본적인 웹 서버 템플릿

node.js용 모듈로 express같은 걸출한 웹서버 프레임웍이 있긴 하지만 일단 기본적인건 알아두는게 좋을 것 같다. 그래서 메모.

2011년 6월 16일 목요일

[Emacs] Terminal.app 에서 Meta키 이용하기

Mac OS X 의 터미널(Terminal.app)에서 Emacs를 띄우면 기본적으로 Option(Meta)키가 Emacs의 키로 먹히지 않는다. 이상한 특수 문자가 찍힐 뿐...

이 경우 따로 Emacs의 설정이 필요할 줄 알았는데 Terminal.app 자체에서 해결할 수 있는 문제였다.

[Emacs] 터미널 Emacs에서 Mac OS X 클립보드 이용하기

Mac OS X 의 Terminal.app에서 emacs -nw 옵션으로 바로 터미널에서 이용 중일 때 복사/잘라내기/붙이기에 좀 문제가 있는 편이다. 외부에서 복사한 내용을 Emacs에 붙여 넣을 때는 CMD-V 로 붙여넣으면 되지만, Emacs의 내용을 복사해서 외부 창에 붙여 넣으려면 마우스로 드래그 해서 CMD-C 로 복사해 내는 방법이 기본적이다.

그런데 마우스를 이용하면 매우 많은 라인의 내용을 복사할 수가 없다. 스크롤이 안되니까.

해법을 찾아봤다. 여러가지 방법에 대한 이야기가 있지만 Mac OS X에서는 잘 안되는 것 같다.

그러다 pbcopy와 pbpaste를 이용해 확장하는 방법을 찾게 되었다.

2011년 6월 15일 수요일

[Vim] MacVim은 터미널에서도 돌아간다.

앞서 brew로 vim 설치하기를 썼었는데 삽질이 되어버린 기분이다. GUI전용인 줄 알았던 MacVim 을 터미널에서도 쓸 수 있다는 것을 알게 되었기 때문이다.

HomeBrew로 Vim 설치하기

갑자기 Emacs가 얼어버리는 증상이 잦아져서 (불쌍한 고물맥북 ㅠㅠ) 터미널에서 vim을 쓰려고 HomeBrew를 이용해 vim7.3을 설치하려고 찾아봤다.
brew search vim
그런데 정작 vim은 없고 macvim만 보인다. MacVim은 이미 설치되어 있지만 잘 안쓰는데 -_-;;;

뭔가의 이유로 공식적으로 아직 포뮬라가 안올라와 있나보다.

2011년 6월 8일 수요일

[Emacs] CSS 편집 시 색상보기

xahlee의 Emacs 팁 포스팅은 정말 유익하다. 이전에 보던 html-mode 관련 포스팅에서 괜찮은 내용이 하나 보여서 소개한다.

제목 처럼 CSS를 편집할 때 컬러코드의 실제 색상을 비쥬얼(?)하게 볼 수 있는 기능이다.

2011년 6월 1일 수요일

[Emacs] html-mode 단축키 이야기

Emacs 에서 html-mode 로 HTML 코딩 중 사용이 가능한 단축키. 약간 구식의 기능을 제공하는 것 같은데... 일부 편한 건 있다.

2011년 5월 31일 화요일

맥북프로에 윈도우XP 설치 삽질기

준비


우선은 정보부터 수집.

도데체 부트캠프냐 뭔지 잘 이해가 되게 설명해 주는 곳이 잘 없다. 어쨌든 알아낸 바로는, 부트캠프는 일반적인 윈도우가 설치되는 PC의 BIOS를 에뮬레이션 해 주는 서비스 라는 것을 알게 되었다.

우선 준비되어 있는 건 맥북프로(13인치 2009년형), Mac OS X 스노레퍼드(Snow Leopard), 윈도우XP Professional SP2 정품(32bit).

2011년 5월 27일 금요일

[Emacs] magit

Emacs의 장점을 잘 살려주는 기능이라면 역시 front-end 구현이다. 터미널에서 사용하는 CUI 유틸리티가 명령어가 많고 복잡할 수록 더욱 쓰기 귀찮아지는데 이런걸 편해게 front-end UI로 구현하는 것이다.

git의 경우도 커맨드 라인에서 쓰기에는 명령어가 제법 많은 편이다. 물론 다른 것에 비하면 단순한 것 같지만, 전용 UI가 있다면 더 없이 편할 것이다.

magit은 Emacs용 git front-end이다.

2011년 5월 26일 목요일

[Emacs] Searching and Replacing

쓸 게 없어서 쓰는 뜬금없는 Emacs 기초 이야기. 검색 및 치환에 대한 가장 기본적인 단축키 및 함수를 소개한다.

[node.js] 비동기처리의 환상

node.js 소개글에 따라 다니는 이야기는 비동기(asynchronous) 처리를 위한 이벤트 위주(event driven) 언어라는 점이다. 그리고 한 가지 더 따라다니는 소개는 '빠르고(performance) 확장(scalable)에 강하다 라는 점이다.

소개로는 뭔 말을 못 하랴. 실제로 node.js의 API 구조는 개발하기도 편하고 빠르기도 하다.

하지만 비동기 처리구조에서 오는 단점을 제대로 파악하지 못 하면 node.js의 장점은 그저 환상에 불가능하다.

비동기 처리 구조의 단점을 생각한 글을 그냥 한번 풀어 써 본다. (이 글에서는 직접적인 node.js의 테크닉이나 API는 안나온다.)

2011년 5월 24일 화요일

[node.js] 스크립트 언어로써의 node.js

서버사이드 자바스크립트로 잘 알려진 node.js이긴 하지만, 그래도 스크립트 언어다. 약간 변태적이긴 하지만 (-_-) 그렇다면 여타의 python이나 ruby, perl 등의 영역을 침범해 볼 수 있을만한 능력이 있다는 이야기가 된다.

일반적인 유틸리티를 node.js로 만든다면 어떻게 해야 할까.

Homebrew로 갈아타기: iPython 삽질기

Macport 의 문제점(의존성이나 빌드가 안되는 것 들, sudo가 필수) 때문에 벼르고 있다가 결국 Homebrew로 갈아타는 무모한 도전을 하고 있는 중이다.

2011년 5월 23일 월요일

[Emacs] js2-mode

옛날에 Emacs에서 JavaScript 편집을 위해 espresso-mode가 있었다. 그게 Emacs 23.2에서 js-mode라는 이름으로 바뀌어서 Emacs안으로 들어가게 되었다. 그냥 역사 이야기.

js2-mode 라는 모드는 js-mode 에 비해 여러가지 기능이 추가된 모드다. 예를 들자면 내장 파서를 이용해 문법(syntax) 오류 등을 미리 확인해 주는 등등...

node.js 코딩 하기에 좋을 것 같아서 한번 설치해서 사용해 봤다.

2011년 5월 20일 금요일

[Emacs] autopair 사용 시 term-mode 문제

Emacs에서 term-mode(M-x term) 혹은 multi-term-mode를 사용 할 때 엔터키를 누르면 미니버퍼에 오류가 찍히면서 엔터키가 먹히지 않는 경우가 발생했다.

[Emacs] Keyboard Macro

Emacs에서 특정 동작을 자동화 하기 위해 Keyboard Macro를 만들 수 있게 지원해준다. 특정 동작이란 건 사용자가 키보드로 입력하는 모든 행위를 의미하는 것이다. Vim의 Macro Recording 기능 등과 비슷하다.

[node.js] 모든 것이 비동기다?

비동기라는건, 실행 순서가 순차적이지 않다라고 말해야 되려나... 일 처리를 혼자서 하는 것과 여러명이 하는 것의 차이라고도 볼 수 있다.

혼자서 일을 할 때는 순차적으로 일을 할 수 밖에 없다. 이 일을 끝내고 저 일을 처리해야 한다.

하지만 여러명과 일을 할 때는 나는 여러 명에게 일을 시키고 결과물을 가져올 때 까지 쉬고 있을 수 있다.

이렇게 설명하니 대단하다! 마치 내 부하 직원이 여럿 생긴 것 같거든! 하하;;

[node.js] 오류 발생 시험

일단 node.js의 기본 HTTP 서버 프레임웍으로 오류 발생 시에 어떻게 되는지 시험해 봤다. 내부 작동 구조를 보려는게 아니라 오류가 발생하면 그냥 어떻게 되는지를 확인해 보려는 것이다.

[node.js] 신기술이 뭔가 체험해 봤다 -_-

최근들어 node.js가 화제가 되고 있다. 계속 이어지고 있다고 해야되나. 새로운 관련 모듈이나 프레임웍이 나올 때 마다 찬양 일색이다. 도데체 뭐길래 그렇게 뜨고 있는 걸까.

딱히 할 일도 없고 해서 (- _ -) 한번 설치해서 뭔가를 돌려봤다.

2011년 5월 19일 목요일

[Emacs] 단축키 잡담

Emacs를 쓰면서 많은 단축키를 사용하게 되는데 이 중 C-c 그리고 C-x 가 굉장히 많다. 그런데 이 단축키는 그 자체로는 아무 역활을 하지 않는다.

C-c와 C-x는 트리커(즉 뭔가를 실행시키기 위한 키)에 가깝다. 그래서 이 다음에 이어지는 키에 따라 뭘 할지가 결정된다.

[Emacs/Python] iPython과 Emacs

iPython 이란건 최근에 들어서 알게 되었다. -_- 어쨌건, iPython은 Python 인터프리터를 좀 더 강화시킨 인터프리터이다. 하지만 그 뿐만 아니라 쉘의 기능 까지 가지고 있어서 쉘을 대체할 수도 있을 만한 기능을 제공하기도 한다.

2011년 5월 18일 수요일

[Vim] Mac OS X 터미널에서의 디스플레이 오류

Mac OS X Terminal.app 에서 Vim을 사용 도중 디스플레이가 발생하는 오류의 한 예로, Macport로 빌드한 vim 7.3에서 윈도우를 나눈 후 긴 파일을 열어서 아래로 스크롤을 하다 보면 모드라인(스테이터스바)가 위아래로 진동하듯이 요동치며 표시되는 문제가 발생하였다.

해당 문제는 터미널 호환성 때문에 발생하기 때문에 설정을 확인해야 한다.

2011년 5월 16일 월요일

[Android] 안드로이드를 혐오하는 개발자 이야기

제목대로 나는 안드로이드를 혐오하는데... 그 이유를 적기 보단 경험담을 적어볼까 한다. 직접 경험한, 그리고 주변 사람들의 경험담이다. 물론 글로 표현하기 위해 과장하거나 고쳤다 -_-;

[참고] 이 글은 2011년 5월 경에 쓰여진 글입니다. 이 글을 썼던 시점부터 이미 안드로이드 개발에서는 손을 떼고 있기에 현재까지의 개발환경 변화는 모른다는 점에 대해 인식하시고 글을 읽어 주시면 감사하겠습니다.

[Emacs] 다국어입력(Multilingual Input Method)

Emacs는 자체에 언어입력기를 내장하고 있다. 물론 IME 같은 것으로 직접 입력할 수도 있지만 Emacs와 호환성 면에서 떨어지는 경우가 있기에 대체로 내장 입력기를 선호하는 것 같다.

구형 Emacs(21이전 버전)의 경우 mule 라는 추가 모듈로 따로 설치를 해야 했지만 Emacs23에서는 대부분 패키지에 포함된 상태로 배포되기에 정말 세상 편해진 것 같다.

[Emacs] Tetris

M-x tetris

[Emacs] Shortcuts for Evaluation

Elisp 코딩 혹은 Emacs 설정 파일을 수정하면서 알아두면 좋은 단축키 몇 가지. Evaluate라는 용어는 '실행'시킨다는 용어와 비슷하다고 이해하는게 좋다. (Python 등 다른 언어에서도 사용되는 용어니...)

블로거 메인터넌스 이후 문제 상황

금요일에서 주말 사이에 블로거닷컴(blogger.com / blogspot.com)의 메인터넌스가 있었습니다.

중간중간 글이 보였다가 안보였다가, 네비게이션바가 안보였다가 보였다가, 댓글이 보였다가 안보였다가, 글 보기만 되고 나머진 몽땅 오류가 발생하는 등의 우여곡절을 겪으며 겨우겨우 살아난 것 처럼 보입니다.

하지만 몇 가지 문제점을 발견하였습니다.

  1. 오류태그: 특정 태그(라벨)을 글에 붙였는데 이 태그가 붙은 글을 보려면 볼 수가 없고, 이 태그는 지울 수도 없습니다. 그래서 문제가 되었던 태그의 글을 지우고 다시 포스팅 하는 삽질을 하였습니다.
  2. 태그 입력 불가: 메인터넌스 이후 태그가 입력되지 않고 있습니다. 콤마(,)나 엔터로 자동완성 입력하는 순간 입력한 태그가 사라져 버리는군요. 어이가 안드로메다로 갑니다. 태그가 입력되질 않으니 어쩔 수 없이 글 목록에서 태그를 지정하는 우회수단을 이용해 태그(라벨)를 지정해야 합니다.

(으악 라벨인지 태그인지 뭔지 좀 입력할 수 있게 해달라고!!!)

[Emacs/Python] Flymake 를 Python Mode 에서도 사용해보자.

flymake-mode를 사용할 때는 Makefile에 문법 체크용 코드를 추가해 사용해야 한다. 하지만 Python 코드들은 대체로 Makefile이 없을 뿐 더러 컴파일 할 필요성 까지 없다보니 뭔가 맞지 않는 것 같다. 그러니 다른 방법으로 flymake를 사용해야 한다.

Python의 경우 문법 체크를 할 수 있는 몇 가지 도구들이 존재하는데 그 중에 pyflakes 라는게 있다. (pylint 같은 것도 될지도 모르겠지만 안해봐서 모르겠...)

[Python/OpenBook] 예제로 배우는 재미있는 Python

이번엔 다른 글 소개를 위한 포스팅.

2011년 5월 11일 수요일

[Python] copy 모듈 존재의 이유

Python의 'is' 커맨드를 설명하는 과정에서 Python의 대입은 레퍼런스 대입이라고 설명한 적이 있다. 그리고 이 레퍼런스 대입 시의 문제를 해결하기 위해 copy 모듈이 존재한다. 왜 copy 모듈이 필요한걸까.

[Python] 유니코드와 UTF-8간의 전쟁(?)

Python에서 Unicode와 UTF-8에 관한 이야기를 언급한 적이 있었는데, 처리과정에서 발생하는 오류를 이용해 주의점을 한번 환기해 볼 까 한다.

예제는 UTF-8 환경의 터미널에서 python 인터프리터를 사용함을 가정한다.

[Emacs/Vim/Etc] Color Theme 생성 사이트

[Emacs] 의사양반!

Emacs의 오랜 이스터에그인 doctor 모드 소개글...을 쓰고 싶었는데 딱히 적을 게 없다.

[Emacs] 실시간 코딩 오류 파악 flymake-mode

flymake는 Emacs에서 실시간(?)으로 컴파일 오류를 표시해 주는 툴이다. 마치 이클립스나 Xcode4에서 코딩 도중도중 빌드 오류를 실시간으로 표시해 주는 것 처럼...

[Emacs] Live Programming with Overtone

Live Programming이라는 소개가 붙어있어서 본 영상이 무척 인상적이어서 소개. 영상의 내용은 악기를 제어하는 코딩을 하면서 바로바로 확인할 수 있는 내용이다.

[Vim] Plugin: AutoClose

Emacs에 autopair-mode나 textmate-mode가 있다면 Vim에는 AutoClose라는 플러그인이 있다. 기능상 거의 동일한데, 괄호나 인용부호 등의 페어를 자동으로 입력해 주는 기능을 제공한다.

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

autoclose.vim 파일을 받아서 ~/.vim/plugin/ 디렉토리 혹은 기타 플러그인 디렉토리에 복사해 넣기만 하면 설치는 끝.

2011년 5월 9일 월요일

[Emacs] Copy/Cut/Paste/Delete

Emacs에서 복사 및 잘라내기, 붙이기, 삭제 등과 관련된 뜨금없는 기초 포스팅.

Emacs 에서 사용되는 이와 관련 용어는 일반적인 윈도우용 에디터와는 다르게 Killing and Yanking이라 부른다. 전통적인 Unix 스타일의 에디터에서 쓰이던 용어였으니 좀 익숙하지 않더라도 받아들여야 한다. (Vim도 처지가 비슷한 만큼 비슷한 용어를 사용한다.)

2011년 5월 6일 금요일

iOS 4.3.3 도 탈옥 되는 듯...

갑자기 iOS 4.3.3 업데이트가 떠서 좀 놀란 감이 있는데...

http://blog.iphone-dev.org/post/5239805497/tic-tac-toe

4.3.1용으로 만든 탈옥툴이 4.3.3에서도 여전히 (iPad2만 빼고) 된다는 소식이 dev-team blog를 통해서 전해져왔다. 물론 귀찮아서 직접 확인해 보지는 않았지만...;;

[iOS] cocos2d for iPhone 1.0 RC2

5월 3일에 릴리즈 되었으니 좀 된 것 같지만... 어쨌든 iPhone 등의 iOS용 게임 개발 프레임웍인 cocos2d 1.0 RC2가 릴리즈 되었다. 금방 1.0 정식이 나올 줄 알았더니 생각보다 오래 걸리는 것 같다.

http://www.cocos2d-iphone.org/

큰 변화로는 역시 Xcode 4 지원을 들 수 있을 것 같다.

[Emacs] 긴 줄을 나눠서 표시해보자

[Emacs] 쉘 실행 결과 확인을 위한 lively.el

[Emacs] HTML/XML 코딩 어시스트 zencoding

SGML/XML/HTML (사실 전부 SGML에서 파생된 녀석들이지만 -_-) 등의 코딩을 CSS 스타일과 비슷하게 할 수 있도록 도와주는 zencoding-mode.el 소개글.

아마도 다른 에디터에서 이미 지원되는 기능과 동명의 기능을 따로 만들어낸 것이라 생각되지만 정확한 것은 모르겠다.

2011년 5월 4일 수요일

[Emacs] etags

Emacs에서 배포되는 etags는 ctags에서 지원되는 recursive가 없다. 그래서 etags 단독으로 태그(TAGS)를 만드는 건 포기해야 할 것 같다. 물론 ctags를 이용해서 TAGS를 생성할 수도 있지만, ctags에 비해 etags가 objective-c 도 지원해 주는 등 제약이 덜 한 것 같다.

[Emacs] 자동 TAGS 탐색?

예전에 Vim에서 tags 파일 경로를 부모 디렉토리들로 지정해서 자동으로 태그를 지정하는 방법을 포스팅 했던 적이 있다. 하지만 Emacs에서는 동일한 형태로 지정을 해서 사용하는게 안되었다. 이런 기능을 원했지만 검색으로 찾을 수는 없었다.

물론 Emacs도 tag file list를 지원하기 때문에 원하는 태그 파일 경로를 다수 지정해 줄 수 있다. 하지만 프로젝트가 생길 때 마다 설정을 추가해 주는건 너무나 귀찮은 일이다.

그래서 만들었다;;;

[Emacs] camelCase를 읽기 편하게 만들어 주는 glasses-mode

camelCase에 대해 언급한 적이 있었는데, 사실 가독성이 아주 좋은 편은 아니다. 심볼 가독성 면에서는 snake_case가 가장 좋다고 생각되지 않는가? 단어와 단어 사이가 확연하게 구분되니까.

하여간, Emacs에서 좀 특별한 모드가 하나 기본적으로 주어지는데 이런 camelCase혹은 MixedCase 형태의 심볼을 snake_case 처럼 읽기 편하게 만들어 주는 glasses-mode가 그것이다.

[Emacs] 모든 버퍼 저장하기

일단 C-x s키는 모든 수정된 버퍼를 저장할 수 있도록 도와주는 save-some-buffers에 바인드 되어 있는 단축키다. 하나의 버퍼를 저장할 때 쓰는 C-x C-s와는 다르다;;

이 외에 자동저장 등을 구현하는 방법이 있긴 하겠지만...

여기서는 단순하게 종료 시 수정된 버퍼를 몽땅 저장하는 코드를 하나 소개한다.

[Emacs] 쉘 커맨드 결과 가져오기

Emacs에서 간혹 쉘에서 실행한 결과 내용을 가져오고 싶을 때가 있다. 이 경우 물론 shell-mode등으로 실행시켜서 결과를 가져와도 되긴 하지만...

2011년 5월 3일 화요일

화이트 아이폰4 블랙 보다 두껍지 않다.

[Vim] 파일 관리자 대체 플러그인 NERDTree

NERDTree는 Vim의 파일 관리(정확히 탐색이라 하는게 맞을지도 모르겠다)를 대체하는 플러그인으로 트리 형태로 디렉토리와 파일 구조를 보여주고, 자주 찾는 디렉토리 등을 북마크 형태로 관리할 수 있게 해 주며, 파일을 열거나 복사/삭제 하는 것 등을 도와주는 기능을 제공한다.

2011년 5월 2일 월요일

2011년 4월 30일 토요일

[iOS] Status Bar 스타일 바꾸기 및 숨기기

아이폰 화면의 가장 상단에 안테나나 시계 등이 표시되는 막대기를 Status Bar라 부른다. (국내 특정 업체에선 인디케이터라 부르기도 한다). 이 포스팅은 이 스테이터스바의 스타일을 바꾸거나 숨기는 등의 예시를 들어본다.

Xcode 4.1 Developer Preview 4 공개

너무 무거워 살 좀 빼줘! 라고 외치게 되는 Xcode4의 다음 버전인 4.1 Developer Preview 4가 나왔나보다. 미국시간으로 29일 이니깐 오늘인가 -_-;

2011년 4월 29일 금요일

[Objective-C] 가변 인자(Variable Arguments) 구현

Objective-C 스타일의 가변 인자(Variable Arguments)에 대한 소개.

[Emacs] 괄호 자동 입력 마이너모드 textmate-mode

TextMate는 Mac OS X에서 코드에디터로써 아주 대명사처럼 쓰여지고 있다. 그만큼 기능이 좋다는 이야기겠지만 써 보질 않았으니 당췌 뭔지... -_-

하여간 textmate-mode는 뭔가 기능이 많아 보이지만, 일단 Emacs에서 괄호 등을 입력했을 때 자동으로 페어(닫히는 괄호 등)를 입력해 주는 기능을 제공해 준다. 물론 비슷하게 autopair 모드가 있는데 내 Emacs 에서 로딩 시 에러가 발생하는 바람에 포기한 비운의 모드다.

2011년 4월 28일 목요일

[Python] 'is' 커맨드

Python의 비교문에는 '=='(equal), '!='(not equal) 외에도 'not'과 'is'가 있다. 이 중 not은 말 그대로 False일 때 True가 되게 만드는 연산자일 뿐.

자 그럼 남아있는 'is'를 한번 확인해 보자.

2011년 4월 26일 화요일

Map App Store: The Unarchiver

맥 앱스토어에 The Unarchiver 가 Free로 올라왔다.

한국에서 맥을 쓰는 사람 대부분이 다 알고 있고, 또한 항상 추천해 마지않는 이 유틸리티는... 단순히 말해서 통합 압축파일의 압축 해제 유틸리티다.

2011년 4월 25일 월요일

[Emacs] face-list.el

Emacs로 색칠놀이(color-theme 만들기)를 즐긴다면 꼭 필수인 확장같다.

[Humor] 진짜 프로그래머는 그림판으로 코딩한다

이어지는 Real Programmers use... 시리즈. 이번에는 신비주의를 부각(?)시키기 위해 링크로 대체.

애플이 위치저장을 하도록 한 이유?

우선 한 가지, 현재 트위터 상에서 알려진 아이폰/아이패드 등에서 위치정보 저장을 하지 않도록 막는 방법을 소개한다.

[Humor] Emacs 유저의 Vim 유저 사이의 소소한 전쟁(?)

sudo 권한을 가진 누군가가 /etc/profile에 다음 코드를 남겨놨다.
alias vi='emacs'
alias vim='emacs'
일반 유저들의 원성이 들린다. 환청이겠지?

Emacs vs Vim

심심해서 정리해 오던 Emacs와 Vim에 대한 짤막한 비교글 모음. 개인적인 주관이 많이 담겨있을 지도 모른다.

[Humor] Real Programmers use ...

약간 고전 자료. 진짜 프로그래머는 vim도 아니고 emacs도 아니고 나비를 쓴다는 유머스럽지 않은 유머. 여기서도 emacs유저의 고집은 빛이 난다.

[Emacs] 한글 폰트(글꼴) 설정

최신의 Emacs 22~23 에서는 한글 폰트 설정에 따른 불편함은 많이 사라진 편이지만, 역시 마음에 드는 폰트 설정은 힘든 편이었다. 특히 영문과 한글 폰트를 별도로 설정해야 하는 경우 크기를 맞추는 등의 삽질이 필요한 편이다.

2011년 4월 22일 금요일

[Vim] MacVim 한글 입력 문제

만약 바람 한글 입력기를 사용 중일 때 MacVim에서 한글 입력이 이상할 수도 있다. 버전에 따라 틀리겠지만 자모가 흩어지거나 이상 입력되는 현상이 발생할 수도 있다.

내 경우 ㅆㅣㅂㅏㄹ (죄송합니다. 욕입니다. 하지만 이게 가장 좋은 예라서요... ㅠㅠ 일단은 그냥 쓰기 그래서 풀어서 씁니다만 실제로는 붙여서 적어야 해요...) 을 입력해보면 '씨' 라는 글자가 '씨ㅅ' 이런 식으로 써지는 등의 문제가 있었다.

[Emacs] 외부에서 파일이 수정되었을 때 자동으로 읽어들이기

Vim에서 편집 중이던 파일을 다른 에디터 등으로 수정했을 때, 다시 Vim으로 돌아가보면 그 파일이 변경되었다면서 다시 읽을 것인가를 물어온다.

하지만 Emacs의 경우 기본적으로 물어보는 절차라던가 자동으로 다시 읽어들인다던가 하지는 않는다. 그래서 낭패를 본 경우가 제법 있다.

[Emacs] Emacs for iPhone

[iOS] SBJson - JSON Framework

SBJson 은 Objective-C로 만들어진 Cocoa용 JSON Framework 이다. Mac OS X 용 혹은 iOS 용으로 사용할 수 있다.

2011년 4월 20일 수요일

[Emacs] 윈도우 관련 커맨드

Emacs에서 윈도우 생성/닫기/크기조절/포커스 이동에 대한 커맨드와 관련 정보를 소개한다. 아래는 기본적으로 제공되는 단축키 및 기능 중 자주 쓸 만한 것 들이다.
  • C-x 1: 다른 창 모두 닫기 (즉 현재창을 최대화)
  • C-x 2: 현재창을 세로로 나누기
  • C-x 3: 현재창을 가로로 나누기
  • C-x o: 다른 창으로 이동(other-window)
  • 정보표시줄 좌클릭 후 드래그: 해당 창의 세로 크기 조절
  • 정보표시줄 우클릭: 해당 창을 닫는다.

[Emacs] Meta키 사망사건

사건의 발단은 윈도우 이동키를 새로 바인딩 하던 도중에 발생했다.

[Emacs] 반복 입력을 위한 모드, dot-mode.el

Vi/Vim의 강력한 기능 중 하나가 .으로 '마지막으로 입력했던 내용 그대로 붙여넣기'가 있다. 뭔가를 입력한 다음에 ESC를 누르고 원하는 위치로 이동해서 .을 누르면 방금 전에 입력했던 내용이 그대로 달라붙는다. 즉 반복적으로 동일한 커맨드를 입력할 때 굉장히 편한 기능이다.

Emacs의 경우도 물론 비슷한(-_-) 기능이 있지만 결코 편하지는 않다. 그래서 이와 비슷한 기능을 구현한 것이 바로 dot-mode 이다. (공식적으로 언급하고 있지만, dot 이라는 이름은 결국 vi의 . 을 의미하는 것으로 보면 된다)

2011년 4월 18일 월요일

[Elisp] List Enumeration

이번에는 Elisp(Emacs Lisp)에서 리스트를 순환하는 방법에 대해 소개.

[Emacs & Vim] Color Theme - Solarized

http://ethanschoonover.com/solarized

눈의 피로를 덜어주며 가독성이 좋은 색상을 많이 연구한 듯한 그런 컬러테마 사이트를 발견했다. 위 링크를 통해 들어가보면 어떤 색상 위주로 테마를 잡고 있는지 엄청나게(?) 설명을 하고 있다.

[Emacs] anything-for-files 의 문제

이전 anything-for-files를 C-x C-f에 바인드 시켜서 파일을 열 때 사용할 수 있는 예제를 적었던 적이 있다. 그런데 이 방법으로 파일을 열 때 간혹 에러가 표시되는 문제가 있다. (미리 언급하는데 이 글은 이 문제를 해결한 기록이 아님을 밝힌다.)

[Humor] vim or emacs?

http://www.haypocalc.com/wiki/images/3/30/Viemacs.png
유머임에도 심오한 철학이 있음이오니, 그것은 vim이 확실히 emacs보다 사용하기는 편하다는 것이다.

[Vim] Script: Open URL

Vim에서 현재 라인에 있는 URL을 웹브라우저로 열어보고 싶을 때가 있어서 다음 스크립트를 만들어 봤다.

[Emacs] Cocoa Emacs 에서 Pymacs 기동이 안되는 경우

Mac OS X 용 Emacs로 Aquamacs가 유명하다. 과거에 Carbon 기반 GNU Emacs가 포팅되어 있을 때 Aquamacs가 Cocoa로 나오면서 유명해진 듯 하다. 하지만 개인적으로 좀 찝찝한게 있는데 GNU Emacs의 설정이 안먹거나 특별한 기능들이 일부 포함되어 있다는 점이었다.

2011년 4월 17일 일요일

Mac OS X 업데이트


Emasc 를 시작하려는 이들이 필수적으로 알아야 할 것

Symbol Naming

변수나 클래스, 메소드나 함수 등의 이름을 지을 때 대소문자나 underscope(_)의 배치가 획일적이지 않다. 특히 단어와 단어 사이를 구분하기 위해 뭔가 특별한 방식을 사용한다. 이런 방식은 각각 명칭이 있긴 하지만 아마도 대체로 모르고 그냥 쓸 것 같다. 나도 몰랐기 때문에 이 기회에 알아낸 것들을 정리해 보고자 한다.

[Vim] 자동 편집을 위한 길, Recording

Vim이 강력한 편집기로써 군림하게 된 건 편한 키맵, 정규표현식, 그리고 이 매크로 레코딩 기능이 있기 때문이라고 감히 주장하고 싶다.

레코딩 기능은 사용자가 입력하는 키를 그대로 녹화해서 매크로로 만들어 주는 기능이다.  이 기능에 대해 간단히 소개한다.

[iOS] NSArray Enumeration

NSArray 혹은 NSMutableArray를 순차탐색(Enumeration) 하기 위한 3가지 방법 메모.

2011년 4월 15일 금요일

Emacs 용으로 만든 3D FPS 게임

트위터의 emacs 타임라인을 오랫동안 휩쓴 내용 중 하나가 바로 이 Emacs로 만든 3D 게임에 대한 이야기다. FPS라는 제목을 달긴 했는데, 1인칭 슈팅 FPS와는 다른 의미 같다. -_-;; 심각하게 보진 말고 재미삼아 보자.

[Emacs] Show Line Numbers

2011년 4월 14일 목요일

[Mac OS X] Mactracker

Mac App Store의 Top Free항목에 Mactracker라는게 올라와 있었다. 뭐하는 어플인가 했더니 맥 시스템 정보(혹은 맥 카탈로그)를 보여주는 어플이었다.

[Vim] Plugin: Align

Vim에서 코딩 중 가끔 Emacs에서 코드 정리하는 기능이 부러울 때가 있다. 코드를 막 입력했지만 정렬이 안되어 있어서 보기 좋게 만들고 싶은데 이럴 때 물론 수동으로 노가다 처리하면 되긴 된다. 하지만 자동으로 해 준다면 더 없이 좋을 것이다.

Emacs의 align 류 함수와 비슷하게 Vim에도 Align 이라는 플러그인이 있다.

[Vim] Plugin: The NERD Commenter

간혹 Vim 에서 특정 영역을 주석처리(commenting)를 하거나 주석을 해제하고 싶은 경우가 있을 것이다. 개발자라면 자주 쓸 수 밖에 없다. Emacs에서 comment-region 과 uncomment-region은 사랑받는 함수이니까...

Vim의 경우는 외부 플러그인의 도움을 받는 편이 편한 것 같다. 이번에 소개할 플러그인은 The NERD Commenter 이다.

2011년 4월 12일 화요일

[Mac OS X] 바람 입력기 설정창이 뜨지 않을 때

바람입력기를 사용할 때, 환경설정 창을 열었을 때 Window라는 창만 달랑 뜨고 아무런 변화가 없는 경우가 있다. 내 경우 오랫동안 사용하다 환경설정을 열어봤을 때 종종 이런 경우가 발생했었다.

[Vim] Plugin: Conque Shell

Conque Shell은 Vim 내부에서 쉘을 쓸 수 있게 에뮬레이션 해 주는 플러그인이다.

[Vim] 자동완성 플러그인 AutoComplPop

이전에 Emacs의 auto-complete-mode가 vim에서 된다면 emacs를 버릴 거라는 이야기를 농담삼아 했었던 적이 있는데 정말로 되는 기능이었다. AutoComplPop이 바로 그 기능을 제공해 주는 플러그인.

[Vim] Vim에서 ESC를 눌렀을 때 영문 상태로 전환하기

Vim에서 한글을 입력하다 ESC를 눌러서 편집모드를 빠져 나와서 다른 커맨드를 입력하려 할 때 동작 안하는 경우가 있다. 한글 상태라서 키 입력을 제대로 못 알아먹는 상태인데 수동으로 영문으로 바꿔주면 되긴 된다. 이런 불편함으로 인해 영어만을 사용하는 나라가 아닌 것에 비운을 느껴야 할 것인가!

[iOS] Objective-C Singletone Pattern

2011년 4월 11일 월요일

[Emacs] emacs-evernote-mode

simplenote에 관해서는 좀 글을 썼었지만, evernote는 3rd Party에 대한 지원이 별로 없는 것 같아서 오래전에 버린 메모 서비스다. 리눅스용 클라이언트도 지원이 안되었다. 하지만 emacs에서도 이 에버노트를 사용할 수 있는 확장이 개발된 것으로 봐서 API를 제공하는 서비스 였다는 것을 알 수 있게 되었다.

[Emacs] Edit by root privilege

Unix나 Linux, 혹은 Mac OS X 사용자라면 루트(root) 사용자 권한으로 특정 파일을 편집해야 할 일이 있다. 이 경우 터미널에서 sudo 명령을 조합해 vim 등을 띄워서 편집하는 등의 방법이 많이 쓰이고 있다. (구형 Unix 라면 su 명령으로 유저 권한을 바꾸거나 root쉘로 바꾸는 경우도 있겠지만)

하지만 Emacs의 경우, emacs 자체를 루트 권한으로 띄우지 않는 한은 사용자에게 권한(permission)이 주어지지 않은 파일을 편집할 수가 없는 것 같다.

[Emacs] shell/eshell/terminal-mode?

Emacs는 버퍼 내에서 쉘 구동이 가능한 모드 몇 가지를 가지고 있다. 아래 3가지 커맨드를 입력해 보면 셋 다 비슷한 화면이 나오는 것을 확인할 수 있다.
  • M-x shell
  • M-x eshell
  • M-x term

[Emacs] 설정파일(.emacs) 공유

올려둔지는 제법 오래 되었지만 일단 개인적으로 쓰는 Emacs 설정파일(.emacs, dotemacs)을 개인적인 용도(?)로 github.com에 올려두었다.

2011년 4월 8일 금요일

[Vim] Vim 에서 MarkDown 사용하기

오랫만에 또다시 마크다운 애찬론. 이번엔 Vim에서 사용하기 위한 플러그인 들을 살펴보겠다.

[iOS] UINavigationController의 push/pop 애니메이션 변경하기

UINavigationController는 아이폰의 일반적인 네비게이션 UI를 쉽게 만들 수 있도록 해 준다. 물론 애니메이션도 필요하면 사용할 수 있다.

하지만 pushViewController:animated 혹은 popViewControllerAnimated:animated 를 사용할 때 애니메이션을 사용할지 여부만 고를 수 있지 애니메이션 종류를 고를 수는 없다. 무조건 좌/우로 플립되는 애니메이션만 사용할 수 있다.

그렇다고 해서 못 바꾸는 건 아니다. 약간의 노가다가 추가되면 원하는 에니메이션을 이용할 수 있다.

2011년 4월 7일 목요일

Dropbox를 경험해보세요


윈도우/맥/리눅스를 몽땅 쓰다 보니 Dropbox가 유일한 동기화 클라우드 웹하드 솔루션이긴 하지만, 그래도 Dropbox는 굉장히 훌륭합니다. 국내 서비스에 비해 속도가 좀 느리다는 단점이 있지만, 특정 디렉토리/폴더를 기준으로 완벽하게 원하는 컴퓨터와 동기화를 맞추는데 굉장히 안정적인 느낌입니다. 더구나 데몬이 알아서 동기화를 하기 때문에 별도로 동기화 서비스를 관리할 필요도 없습니다.

[iOS] UIView's bounds on UINavigationControl

콩글리쉬 영어 제목을 한글로 풀어써보자면 (-_-) UINavigationController에 특정 뷰를 뷰 영역에 집어 넣었을 때 이 뷰의 위치 및 크기에 관한 이야기다.

2011년 4월 5일 화요일

맥용 동영상 플레이어에 대해

블로그 검색 유입 경로 중 동영상 플레이어에 대한 검색어가 많아서 이와 관련된 글을 하나 써 보자 한다. 주제는 개인적으로 사용해 본 Mac OS X 용 동영상 플레이어 및 소감. (내용이 길어질 것 같기에 스크린샷은 생략 ~_~)

통신사와 스마트폰 OS 그리고 카카오톡

카카오톡 트래픽 때문에 말이 많다. 트래픽 때문에 3G망에 과부화가 걸린다는 통신사측 주장. 특히 SKT가 심하게 딴지를 걸고 있는 상황이다.

사용자 입장에서는 통신사에 돈을 지불하고 통신망을 사용하는데 과부화 때문에 카카오톡에 딴지를 걸고있는 통신사측을 곱게 볼 수가 없다.

엔지니어 입장에서 기술적(?)으로 이 사태(?)에 대한 판단을 한번 휘갈겨본다.

2011년 4월 4일 월요일

[Python] 가장 단순한 싱글톤 패턴(Singletone Pattern)

싱글톤 패턴은 전역변수를 직접 제어하는 형식의 문제점(?)을 보완하기 위해 정말 자주 쓰이는 패턴이다. 보통은 팩토리 패턴(factorypattern)과 결함하여 싱글톤 객체를 넘겨주는 팩토리 메소드를 호출해서 싱글톤 객체를 얻고 이 싱글톤 객체를 엑세스 해서 전역변수를 이용하는 것과 비슷한 효과를 얻을 수 있다.

[Python] ASCII Conversion

각 문자와 이를 ASCII Code로 서로 바꾸는 건 C에서는 크게 신경쓸 일이 아니었다. 하지만 Python에서 문자는 문자열과 동일하게 취급되며 그 자체의 값을 읽어서는 ASCII 코드가 나오지 않을 수도 있다. (물론 요즘 이런걸 Python으로 쓸 일은 별로 없겠지만 -_-)

2011년 4월 2일 토요일

[Emacs] emacs-w3m

w3m은 텍스트 웹브라우저의 최고봉(?)이라고 개인적으로 일컷는데 lynx에 비해서 화려하기 때문이다. -_-;;; 어쨌든 Emacs 내에서 브라우징을 할 때 가장 자주 사용하는게 바로 이 w3m 연동 기능일 듯 하다. (w3라 불리우는 순수 Elisp으로 제작된 브라우저도 있지만 좀 느린 듯 하다.)

2011년 4월 1일 금요일

[Python] isdigit()의 함정

[Emacs] 번역 기능을 추가해보자

현재 커서가 놓인 단어, 혹은 선택된 영역을 구글 번역기를 이용해 자동으로 한국어로 번역하는 기능을 만들어 보자. 여기서는 결과물을 브라우저로 본다는 것을 가정한다.

[Vim] VimOrganizer: org-mode for Vim

Emacs의 대표적인 모드 중 하나인 org-mode는 할일(TODO)이나 일정관리 및 메모 등 여러 용도로 사용되는 기능이다. 특히 TODO 관리와 다양한 파일에 나눠진 TODO를 모아서 알려주는 org-agenda 등의 기능도 제공되고 있다.

VimOrganizer는 이 org-mode 기능을 Vim 용으로 만든 확장이다.

만우절 트위터 타임라인 속 풍경 한가지

[Emacs] Anything VS IDO

anything.el은 다양한 기능을 가지고 있는데 그 기능 중 일부가 IDO와 충돌을 일으키는 경우가 있다. 특히 파일 오픈 시 경로를 입력하다 갑자기 오류가 발생하며 취소되는 경우가 잦다. IDOAnything이 서로 싸우고 있기 때문에 그런 듯 하다.

2011년 3월 31일 목요일

Mac OS X 에서 동영상 기본 플레이어 설정하기

GOM Player(TV) for Mac 베타 출시 기념으로 뜬금없는 Mac OS X 팁 하나 소개. 곰플레이어를 설치한 후 동영상 파일을 더블클릭하면 아마도 다른 동영상 플레이어가 뜰 것이다. 이 플레이어 대신 곰플레이어가 뜨게 하고 싶다면 어떻게 해야 할까.

[Linux] Ubuntu 에서 키보드 입력 시 마우스 커서 숨기기

Mac OS X 에서 마음에 드는 특이사항 중 하나는 키보드 타이핑을 할 때는 마우스커서를 숨겨준다는 점이다. 알게 모르게 코드 타이핑을 하는데 마우스 커서가 거슬릴 때가 제법 있기 때문이다. 윈도우의 경우 마우스 설정 쪽에 이런 메뉴가 있었던 것 같은데, 우분투에서 사용중인 그놈 데스크탑에는 이런 설정을 찾을 수가 없었다.

2011년 3월 30일 수요일

GOM Player for Mac


열악한 맥의 동영상 플레이어 환경에서 찬란한 한 줄기 희망이 있을 뻔 했으니 그것이 곰플레이어다. 그 곰플레이어가 이전 찬란하게 욕먹던 상황(?)을 극복하고 베타 버전이 출시되었다.

[Python] Arguments of Function

Python 에서 함수를 다수의 인자(argument)로 호출해야 할 때 사용할 수 있는 여러가지 방법 메모.

(여기서는 '인자'라는 용어에 주의해야 하는데, 호출하는 입장에서는 parameter, 호출 받는 입장에서는 argument로 표현한다. 한글로는 '인자'라는 말 말고 뭘 써야 할지 난감하다. 뭐 딱히 신경 안써도 되는 이야기 이긴 하다 -_-;;;)

[Emacs] Anything 두 번째 이야기

이전에 anything.el에 대해 간단히 언급했을 때는 정확히 뭘 하는 녀석인지 알 수가 없었다. 하지만 제대로 된 설치 및 플러그인을 가지고 놀다 보니 무엇인가 힌트가 오는 것 같았다. 그래서 anything.el 의 글 2탄을 써 본다.

[Python] Socket Programming

Python으로 Socket를 이용해 인터넷(TCP/IP) 통신 스크립트를 만들기 위한 기본 메모.

[Emacs] re-builder: 정규표현식을 만들어 보자

[Emacs] twittering-mode 스테이터스(타임라인) 모양 바꾸기

(트윗 내용에 신경쓰면 지는겁니다. -_-)

2011년 3월 29일 화요일

[Emacs] Dropbox + Emacs + markdown-mode + org-mode = 신세계!?


이전 simplenote에 대한 이야기를 잠깐 했었는데 요즘들어 simplenote-mode가 우분투리눅스에서 오작동 하는 문제를 겪고 있다. 그래서 해법을 찾아 보다 전혀 엉뚱한 데서 아이디어를 얻게 되었다. 바로 Dropbox를 이용한 동기화를 활용하는 것이다.

이 글은 Emacs를 이용해 노트나 할일(TODO) 등을 여러 컴퓨터에서 공유하기 위한 하나의 방법을 제시한다. 우선 Emacs는 설치되어 있을테고, Dropbox가 필수적으로 설치되어 있어야 한다. markdown-mode는 옵션이지만 있는 편이 좋은 것 같다. (markdown-mode는 emacs-goodies-el 패키지에 포함되어 있으니 우분투 등을 사용한다면 해당 패키지를 설치하면 된다)

2011년 3월 28일 월요일

[Vim/Emacs] 커서 이동 키에 빨리 익숙해져야 한다.

GUI 에디터 등을 사용하던 유저가 Vim이나 Emacs의 커서 이동 단축키를 보면 질릴 수 밖에 없다. 직관적인 커서키를 놔두고 h/j/k/l 같은 키 혹은 C-n / C-p / C-f / C-b 를 이용해야 되니 당연히 어색할 수 밖에 없다. 물론 두 에디터 공히 기본적으로 커서키로 커서를 움직이는 것도 가능하지만... 하지만 Vim이나 Emacs를 사용한다면 최소한 커서 이동 키는 빨리 익숙해 지는 편이 좋다.

[Vim] Copy, Cut and Paste

Vim 에서 복사/잘라내기/붙이기를 하는 가장 기초적인 방법. (주의. 대소문자를 확실하게 가릴 것)

[Vim] 윈도우 관련 단축키


(Emacs 관련 포스팅이 너무 많아져서 Vim이 소외감을 받을지도 몰라서 오랫만에 Vim 포스팅 -_-)

[Emacs] vim-mode


vim-mode에 관해 감히 평가한다면 Emacs를 집어삼킨 Vim 이라고 (주객이 전도된 듯 한 표현을) 할 수 있을 정도다. 이름에서 알 수 있듯이 Emacs를 Vim 에뮬레이션 모드로 동작시키는데 왠만한 버퍼는 전부 적용을 받아 버릴 정도로 강력(?)하다. 심지어 쉘에서 조차 작동하기에...;;

스크린샷은 필요 없을 정도로 볼 게 없다. -_-;;; 위 스샷에서 하단 바에 VIM이 표시되어 있는 것이 보일 것이다.

2011년 3월 27일 일요일

[Emacs] viper-mode

Emacs와 Vim은 성전(?)이라 불릴 정도의 치열한 영역싸움(거기다 감정싸움 까지도 -ㅁ-)을 벌이는 상대다. 그런데 거기에 이단이 있으니, 바로 Emacs를 vi(vim이 아니다)와 비슷하게 바꿔주는 모드가 있다. 바로 viper-mode이다.

[iOS] 웹페이지 긁어오기

이번엔 iOS SDK 기반 Objective-C에서도 웹페이지를 비동기로 긁어오는 기능을 하는 코드를 메모해본다. (NS 계열 API이니 아이폰/아이패드/Mac OS X에서 다 쓸 수 있을 듯)

2011년 3월 25일 금요일

[Python] Retrieve over the HTTP/HTTPS

Python을 이용해 웹 페이지 긁어오기. 아래 내용은 https://foobar.com/index.html 을 읽어온다고 가정하고 입력한 내용이다.

[Emacs] Byte Compile

보통 Emacs 실행을 빠르게 하기 위해 바이트컴파일(byte compile)을 한다고 한다. 자바랑 비슷하게 .el 파일을 .elc로 바이트 파일로 바꿔서 실행속도를 높이기 위한 것이 바이트 컴파일이다.

[Emacs] color-theme


에디터(?)가 색상을 바꿀 수 있는건 요즘 세상에서는 당연한거다. 물론 Emacs도 syntax highlighting을 지원하고 원하는 색상을 조합할 수도 있다. 물론 쉽지는 않다. 그래서 쉽게 색상 테마를 선택할 수 있도록 도와주는 확장이 color-theme 이다.

2011년 3월 23일 수요일

[Ubuntu] Firefox4


Firefox4가 정식으로 출시되었지만 아직 우분투 패키지 저장소에 업데이트가 안되어 있어서 업데이트 받기가 좀 애매하다. 수동설치도 가능하지만 패키지관리자가 버전을 판단함에 있어서 문제가 발생할 수도 있기 때문에 가능하면 저장소를 동원해서 설치하는 편이 좋을 것 같다.

[Emacs] Auto Complete Mode


개인적으로 vim을 좋아하냐 emacs를 좋아하냐라 물으면 vim이라 대답한다. 하지만 실제로는 emacs를 더 자주 쓴다. 그 이유는 다름아닌 auto-complete 때문이다. auto-complete는 자동완성 기능을 제공해 주는 확장이다.

2011년 3월 22일 화요일

[Emacs] Twitter for Emacs: twittering-mode


OS와 맞먹는 분위기(?)의 Emacs인 만큼 역시나 트위터 클라이언트로 이용하는 것도 가능하다. 다음 URL에서 Emacs용 Twitter extension 에 대해 확인할 수 있다.

2011년 3월 21일 월요일

[Emacs] simplenote with Emacs

이 글은 Emacs에서 심플노트(http://simplenoteapp.com/) 기능을 사용하기 위한 내용이다. 리눅스용 심플노트 GUI Application 은 없는 대신(?) Emacs나 동기화용 스크립트 프로젝트가 제법 만들어져 있다. simplenote.el은 Emacs에서 simplenote 사용을 편하게 해 주는 확장으로 다음 URL을 통해 구할 수 있다.

[Emacs] 쉘(shell) 버퍼의 글자나 색상이 깨지는 경우

Emacs의 shell 명령(M-x shell)은 Emacs 버퍼 내에 쉘을 띄워준다. 거의 모든 것을 Emacs 내에서 처리한다는 주의(?)에 의해 이 명령은 eshell과 함께 굉장히 자주(?) 사용되는데 터미널 설정이나 OS에 따라 특정 문자가 깨지거나 색상이 표현되는 부분에서 알 수 없는 문자가 출력되는 경우가 있다.

2011년 3월 19일 토요일

[iOS] Xcode4 도움말에 iOS SDK용 API레퍼런스 문서가 없다?!

Xcode4에서 API 레퍼런스를 뒤져봤는데 이상하게 Mac OS X용 API들만 레퍼런스가 나오고 iOS용은 하나도 검색이 안되는 것을 눈치채게 되었다.
위 스샷에서 보이듯이 iOS용 문서가 전혀 없다.

2011년 3월 18일 금요일

2011년 3월 17일 목요일

Mac App Store에 MPlayerX가?!

맥 앱스토어를 둘러보다 우연히 Top Free란에 MPlayerX가 올라와 있는 것을 발견했다. 올라오지 말라는 법은 없다 -_- 쉽게 설치할 수 있게 도와주는 맥앱스토어에 올라와 있다는 것 자체가 괜찮은 소식 같다.

2011년 3월 14일 월요일

[Emacs] Lisp error: (void-variable SYSTEM_WGETRC)

어느날 Emacs가 기동 시 SYSTEM_WGETRC와 관련된 에러를 리턴하면서 설정파일을 실행하다가 오류가 나기 시작했다. 이 글은 이 문제를 해결하기 위해 했던 삽질들의 기록이다.

2011년 3월 10일 목요일

[Emacs] rebound-mode, rebound.el

Emacs로 특정 한 파일을 여러 윈도우로 분할해서 작업 중일 때, 특정 한 윈도우를 다른 버퍼로 옮겼다가 다시 이전에 편집하던 버퍼로 돌아오게 되면 편집하던 위치가 바뀌게 된다. rebound-mode 는 이런 버퍼 이동 시 발생하는 편집위치 변경 문제를 해결해 주는 minor mode 플러그인이다.

기술적인 관점에서 본 셧다운제(신데렐라법)

셧다운제(신데렐라법), 즉 심야(00시~06시) 때 청소년이 게임을 할 수 없도록 강제하는 법안 때문에 말이 많다. 최근에는 게임의 범위, 즉 온라인 게임 한정이라는 주장과 모든 게임을 대상으로 해야 한다는 주장이 싸우고 있는데 뭐 딱히 할 말은 없다. (한심하니까 -_-). 그냥 잠깐 기술적인 관점에서 '모든 게임에 셧다운제 적용' 에 대한 실효성에 대해 이야기를 해 볼까 한다.

2011년 3월 9일 수요일

[Emacs] How to build TAGS using ctags?

etags 라는게 있다. Emacs 패키지 안에 포함되어 있는 녀석이고 이름처럼 ctags와 비슷하게 심볼을 추출해서 데이터베이스화 하는 유틸리티이다. 당연스럽게도 Emacs에서 사용하기 위한 포맺으로 데이터베이스를 생성하는 유틸리티다.

2011년 3월 5일 토요일

[Python] logger로 syslog쓰기 삽질 실패기

처절한 제목이지만 일단 기록으로 남겨놓자. 서버의 로그를 남기기 위해 python의 logging를 사용하고 있었다. 이 녀석을 RotatingHandler를 통해 용량 제한으로 로테이팅으로 돌아가게 해 놨었는데 용량 제한이 제 멋대로 적용되는 문제가 발생했다.

결국 문제는 해결하지 못 했다. python 버전 상의 문제라고 생각하고 업그레이드는 주저하게 되고 그냥 포기하고 우회로 다른 방법을 생각해야 했다.

이 삽질기는 그걸 해결하기 위해 syslog를 사용하려는 시도에서 발생했다.

2011년 3월 3일 목요일

Blogspot(Blogger)에 Facebook Social Commentary 달아보기

얼마전에 시작한 페이스북 소셜 댓글 플러그인을 블로그스팟에 달아보자. 우선 이 방법을 적용기엔 몇 가지 단점이 있다: 템플릿 문제로 좀 귀찮은 작업이 필요하고 / 댓글 갯수 라던지가 제대로 표시안되고 0으로 표시되는 부작용이 있다. (내 블로그야 댓글이 거의 없다보니 0개로 표시되어도 아무 의미 없다. 이히힛 -_-;)

[Emacs] Auto Indentation, 자동 들여쓰기

Emacs는 흔히 이야기 하는 자동 들여쓰기 기능이 없다. (헉!) 코딩 시 자동으로 들여쓰기가 안되면 최악이다! 하지만, Emacs는 편집기를 가장한 환경(Environment)이라는 주장이 여기서 통하는데, 프로그래밍을 통해 자동 들여쓰기를 할 수 있다.

[Emacs] ido - Interactive Do Things

약칭 IDO, 정확히 ido-mode라 불리는 파일 오픈 모드에 관한 메모. ido-mode는 파일을 열 때 도움을 주는 모드로:

  • 타이핑으로 파일 검색
  • 약자 검색(fuzzy 알고리즘): ThisIsFile 파일을 tif 로 검색 등...
  • 열었던 파일 히스토리에서 검색: 자주 여는 파일은 경로를 적을 필요가 없다.

등 다양한 기능을 제공한다.

[Emacs] ELPA - Emacs Lisp Package Archive

auto-install 과는 다른 또 다른 패키지 매니저 ELPA 소개글. ELPA는 Emacs Lisp Package를 손쉽게 설치할 수 있도록 도와주는 스크립트이다.

iPad2 발표와 관련한 잡설

간밤에 잡스 아저씨가 드디어 또 한건 터트려 주셨다. 이런 이벤트(?)를 해 준다는 것 자체가 이제는 고맙게 느껴질 정도. 그래서 iPad2의 정보와 개인적인 느낌을 정리해 보고자 한다.

2011년 3월 2일 수요일

[Emacs] auto-install.el

Emacs 는 편집기가 아니라 환경이기 때문에 확장을 위한 스크립트(코드 혹은 플러그인류)가 엄청 많다. 그래서 패키지매니저 등의 시스템도 많이 나와있다. 여기서는 아주 간단한 auto-install.el 이라는 스크립트를 하나 소개할까 한다.

[Unix/Linux] 링크만 찾기 / 깨진 링크 찾기

2011년 3월 1일 화요일

goosh.org(구글쉘) 검색 이야기

March 1 Independence Movement Ceremony of Korea

The 92st anniversary of 
The 
March 1 Korean Independence Movement 
against Japanese colonial rule

전 날 퇴근이 IT 업계의 비운(...)에 의해 늦어져서
늦게나마 3.1절 기념 태극기 사진을 올립니다.
색상 맞춘다고 희미하게 수정 해 버린게 큰 실수 같군요. ;;
(그나저나 영어 철자나 어순이 맞는지는 의문)

2011년 2월 26일 토요일

[Vim] Vim 설정 파일(vimrc) 및 플러그인 공유

난생 처음으로 github.com을 써 봤다. 개인적으로 이곳 저곳 에서 설정파일을 조금씩 수정해서 dropbox로 주고 받고 했는데 이게 상당히 귀찮다. 그래서 이를 해결하기 위해 github.com에 설정파일을 업로드 해서 git로 관리하기 시작했다.

[iOS/Three20] TTNavigator with UITabBarController

TTNavigatorUITabBarController, 즉 탭바와 네비게이션 타이틀을 가진 UI를 만들기 위한 기본적인 내용을 정리해 본다. 정확한 소스는 샘플의 TTNavigatorDemo를 참고바란다.

2011년 2월 24일 목요일

[iOS/Three20] JSON Parser: extThree20JSON

요즘은 데이터 전송 프로토콜이 대체로 XML이나 JSON 두 종류로 굳어가는 것 같다. Three20에서도 이런 request/response모델을 위해 TTURLRequest 모델의 클래스가 있고 여기서 parser로 이용할 수 있는 모듈들이 여러개 있다.

[iOS/Three20] TTNavigator 기초

TTNavigator는 Three20에서 지원하는 Navigation Controller를 편하게 쓸 수 있도록 만든 클래스다. 모양도 기존 네비게이션 컨트롤러와 동일하고 동작하는 것도 비슷하다. 단지, 코드량이 급격하게 줄어든다는 차이점이 있다. ;;

Three20의 공식 문서가 좀 빈약해서 샘플 소스에서 TTNavigator에 관한 기본 분석을 해 봤다.

2011년 2월 22일 화요일

[iOS/Three20] Add to Project

Three20이 몇 개월 전과 비교해서 뭔가 많이 바뀐 것 같다. 그래서 바뀐 Three20을 사용하는 기본적인 방법을 정리하고자 한다. (제목은 귀찮아서 원문 페이지의 표현을 거의 빌려쓴다)

[Vim] ucs-bom, BOM(Byte Order Mark)

Vim의 설정에서 fencs=ucs-bom,utf-8,cp949 이런 식으로 설정하는 것을 가끔 본 적이 있는데 제일 앞의 ucs-bom 이게 뭔지 모르고 왠지 꺼름칙해서 지금까지 써 본 적이 없는 설정 단어이다.

그런데 갑자기 궁금해져서 ucs-bom에 대해 찾아보니 BOM에 의해 자동으로 인코딩을 설정해 주는 설정이라고 한다. 헐 이렇게 친절한 녀석이었을 줄이야. (무식함에 울고 싶다...)

[Emacs] Emacs 설정 파일 재로딩: reload-dotemacs

Emacs의 dotemacs(Emacs의 설정파일 .emacs 혹은 _emacs)을 재로딩 하려면 eval-buffer 명령으로 설정 dotemacs의 내용을 실행시키던가 Emacs를 재구동 시키던가의 방법을 써야 된다. (이 외에 다른 방법도 있었던 것 같은데 기억이 안난다)

[Emacs] anything.el

트위터에서 어떤 분이 anything.el을 장기간(?) 찬양(?)하길래 무엇인가 싶어서 찾아봤더니 Quicksilver for Emacs라는 소개가 보인다. 도데체 무엇인가. emacs wiki에 일단 공식(?) 문서가 있는 것 같다.

2011년 2월 21일 월요일

[Python] Regular Expression API (정규표현식 API 기본)

정규표현식(Regular Expression)이란 문자열의 패턴을 이용해서 특정 문자열이 규칙에 맞는지, 혹은 특정 규칙에 따르는 문자열을 찾거나 뽑아내는 등, 이런 특정 텍스트 조합 패턴을 의미한다.

[Python] Directory(Folder) / File 목록 다루기

SimpleNote + SimpleNote App + MarkDown으로 글 쓰기

SimpleNote는 이름 처럼 정말 단순한 메모 기능을 하는 노트 웹 서비스다. 위지윅 에디터 따윈 보이지도 않고 매우 단순히 글을 적을 수 있게 하고 있다. 제목도 따로 없이 첫 줄이 제목 역활을 하게 되는 정말 간단한 서비스다.

[Python] Dictionary 기본

파이썬(Python)의 기본 자료형인 사전(Dictionary)형의 기본기 다지기.

[Django] Unit Test 기본 정보

Django의 유닛테스트 기본기.

[Python] 가끔 저지른 실수들

Python 코딩하면서 겪게 된 실수를 한번 정리해 볼까.

2011년 2월 19일 토요일

[Vim] 윈도우에서 UTF-8을 적용하면 한글메시지가 깨지더라

제목 그대로. multi-byte 문자를 사용하는 한국인으로써, 윈도우 사용자로써는 한번 쯤 겪게 될 문제가 아닐까.

[Vim] OS 별 Vim 설정을 분리하기(?)

난 Linux, Mac OS X, Windows7을 주로 이용한다. 크게 두 가지 계열의 OS로 나뉘게 되겠네. Unix 계열과 윈도우 계열로.

[Vim] CTags를 이용한 코드 탐색에 관하여

Vim으로 코딩을 하면서 ctags를 쓰지 않는 프로그래머는 개인적으로 '괴팍'하다고 생각한다. 그도 그럴게 너무 편하니까.

2011년 2월 18일 금요일

[Vim] Auto Word-Completion에 관한 설정

Vim에는 ctrl-n 혹은 ctrl-p를 눌러서 단어 자동 완성을 해 주는 기능이 있다.

[Vim] Configuration to Edit Multiple Files

애꿎은 콩글리쉬 영어제목 ;ㅁ;

다수의 파일을 편집하기 편하게 해 주는 세팅들...이라고 하지만 정확히 말하면 버퍼나 윈도우 이동을 편하게 하기 위한 설정이다.

[Util] screen 기본 사용법 메모

[Django] Query 명령어 (일부만) 메모

가끔 잊어먹지만 문서 보기가 귀찮으니 자주 쓰는 것만 따로 정리.

[Vim] Plugin: snipMate - TextMate-style snippets for Vim

snippet이라는 녀석들은 대체로 적은 수의 타이핑으로 일반적으로 자주 쓰이는 코드를 자동으로 완성(코딩)시키는 녀석들을 의미한다. Emacs에는 yasnippet 같은 대단한 녀석들도 있고 Vim에도 SnippetsEmu 같은 것들이 있었다.

이번에는 간만에 Vim용으로 새로운 녀석을 발견해서 포스팅을 해 본다. snipMate이다.

[Vim] Plugin: FuzzyFinder

프로그래머의 친구 Vim (emacs는 엄마친구아들-_-) 포스팅

FuzzyFinder는 파일을 열 때 쉽게 열 수 있게 도와주는 Vim 플러그인이다. (정확하게 파고들면 엄청 대단한 기능들이 많지만...) 약자로 fuf라고 칭하도록 하겠다.

[Java] Python의 string.split()은 어떻게?

문자열을 분리하는 걸 일반적인 전문(?) 용어(?)로 Tokenize라고 부른다. C의 strtok()가 가지는 tok라는 이름이 바로 토큰이다. 뭐 용어만 알면 이런거 검색해보면 금방 튀어나온다.

[Android/Java] Run shell command

안드로이드 (혹은 Java에서) 쉘 커맨드 실행하고 결과 읽어오기? Python의 os.popen과 비교되는 녀석이라 메모.

2011년 2월 17일 목요일

폭풍 업데이트!

요즘 수 일 동안 제법 많은 글(?)을 올리고 있는데 그 동안 쌓아놓은 것을 한번에 몰아치기 하는 거라고 생각해 주시면 좋을 것 같습니다.

이 글은 존댓말로 쓰여졌는데 그래도 원래대로 포스팅은 반말체로 갈겁니다. 생각이나 느낌, 기억을 정리하는 느낌으로 적고 있어서 말이지요. -_-a 뭐 보러 오는 사람도 별로 없고 쩝...;;

하여간 지금도 심플노트에 포스팅꺼리를 쌓아두고 있습니다만 곧 떨어지겠죠 뭐.

남은 주제는 java/android/vim 쪽이 좀 있지요.

그럼 이만...

ps. 광고 달아놓은 건 애교로 봐주세요. 어차피 애드블락 같은거 다들 쓰고 계시지요? -ㅁ-;;

[Python] struct 와 padding 에 대한 잡설

Python이 문법적이나 built-in module 지원 면에서 굉장히 편한건 사실이다. 하지만 매우 취약한 부분이 있으니 그건 binary data 엑세스가 아닐까. (뭐 대부분의 스크립팅 언어나 하이레벨 언어는 같이 가지고 있는 장점... 아니 문제 같다.)

SIGSEGV 란 용어에 대해

sigsegv 검색을 통해 유입된 내역이 하나 보여서 잠깐 설명.

[Django] 500 Error Page

Django 의 500 에러(디버그)페이지를 입 맛에 맞게 수정하기

2011년 2월 16일 수요일

Mail User Agent에서는 iframe를 배척하는 걸까 (잡설)

메일에 지도를 첨부해야 할 일이 생겼다. 그래서 iframe을 이용해 Google Map을 임베딩 하는 코드를 사용해 봤다.

결과적으로 Mozilla Thunderbird, Microsoft Outlook, Gmail 등에서 지도가 보이지 않았다. Thunderbird에서는 지도가 아주 아주 아~~~~주 잠깐 보이다가 사라져버린다. iframe자리에는 공백만이 보였다. 단지, 사내에서 쓰는 웹메일만 지도를 보여주더라.

이유가 뭘까?

[Python] Log Detailed Exception

자세한 Exception 출력하기가 필요한걸까?

내 경우 에러를 로그로 확인해야 하는 심각한 처지에 있었기에 자세한 exception은 로그로 저장해 둬야 한다. 물론 Exception이 발생했다고 프로그램을 종료시켜서도 안된다. 그러니 자세한 예외 내용을 알아야 할 때도 있었다.

[Python] Send mail attached HTML via sendmail

Python에서 SMTP모듈을 쓰지 않고 sendmail 유틸리티를 이용해 HTML Mail을 보내는 방법.

2011년 2월 14일 월요일

[Python] Auto-Machine(?) APIs

안타까운 제목이다. 뭐라고 지을 거리가 없어!

[Python] Logging

log는 debug의 가장 첫 걸음이 아니겠나. 하하하

어쨌든 이거 쓰는 법도 메모메모메모메모...

[Python] Unicode/UTF-8

한글이나 multi-byte character, 특히 국제적인 언어 지원이 필요한 Application을 개발하는 경우 항상 따라다니는 용어가 Unicode 나 UTF-8 등등... 이와 관련된 메모.

뭐 다들 아는 내용이겠지만 내가 가끔 까먹는 통에 그냥 기록으로 남긴다.

[Django] Multiple Unittest Files

Django에서 유닛테스트 코드가 너무 길어서 모듈화(여러 파일로 분리?)하고 싶을 경우 이용할 수 있는 방법.

2011년 1월 31일 월요일

주제를 좀 넓혀볼까

코드 메모만을 남기려고 만든 블로그 였지만 뭔가 써 볼까 하는 칼럼류의 글들이 많아지고 있다. 적당한 시일에 라벨(태그)를 재분류 할 가능성이 있다.

아무도 찾아오지 않는 블로그라 여겨지기에 막 바꿔도 무리는 없으리라 판단된다.

아흑 ;ㅅ;)

2011년 1월 10일 월요일

윈도우 환경에서 CVS를 SSH를 통해 사용하기

제목이 살짝 귀찮은데, 윈도우 환경에서 CVS를 이용하는데 만약 ssh를 이용한다면 그냥 쓸 수가 없다. ssh도 없고 rsh도 없을테니까. 뭐 단순하겠지만, cvs는 유닉스 환경에서 발전해 온 터라 개랄(?)같은 윈도우의 CUI에서는 다른 방법을 동원해야 한다. 물론 tortoise-cvs나 eclipse의 CVS환경을 이용한다면 이 포스트는 신경 안 써도 된다.

(뭐 사실 요즘 세상에 CVS는 많이 사장되고 있는 느낌이지만 우리 회사는 아직도 쓰고 있으니...;;)

내 경우는 eclipse에서 :extssh:로 받아놓은 소스 트리를 emacs에서 이용하려니 unknown method 오류가 뜨는 바람에 이 방법을 찾아보게 되었다.

참고한 문서는 http://mentalized.net/journal/2004/11/01/setting_up_cvs_over_ssh_on_windows_2000xp/ 이니 한글이 싫으면 여길 보는 것도 추천.