2011년 8월 8일 월요일

[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

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