2011-12-28

[iOS] NSDate에서 날짜와 시간을 알아내기

NSDate는 날짜와 시간을 명기하는 클래스 임에도 불구하고 자체적으로 해당 년/월/일/시간 등의 정보를 알려주는 기능이 없다. 다른 심플한 스크립트 언어에 익숙하다면 이해가 안 될 정도로 NSDate는 좀 차별적이다.

2011-12-23

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-12-12

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-09

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

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

2011-11-03

2011-11-02

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

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

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

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

2011-10-24

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

Blogger의 새로운 Dynamic Views

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

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

2011-09-30

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

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

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

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

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

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

2011-09-27

2011-09-23

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

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

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

2011-09-22

2011-09-16

[Xcode4] #pragma mark 팁

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

2011-08-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-08-26

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-08-24

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

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

2011-08-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-08-22

Google+ 인기의 증거?

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

Mac App Store: 키보드 런처 Alfred

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

2011-08-18

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

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

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

2011-08-10

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

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

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

[Node.JS+Express] Routing

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

2011-08-09

2011-08-08

Snow Leopard VS Lion

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

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

[Node.JS+Express] Express 시작

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

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

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