최근 업무 관계로 바빴습니다. (뭔 웹 사이트를 한달안에 5개를 만들라고 하시는지..) 

기존에 사용하고 있던 Emacs 버젼이 낮은 관계로 업그레이드를 하긴 해야지.. 하다가 지금 릴리즈 되어 있는 버젼이 Shift+SPC 가 안먹는다는 이야기를 접했습니다. 커미터가 서양분인 관계로 Shift+SPC 의 필요성을 모르셨나 봅니다. (이런!!!) 그러다 CJK 언어를 쓰는 동북아 삼국의 맹공 (주로 중국과 일본)을 받고 끝내, 왜 필요한지는 모르겠지만 이라는 사족을 단 채로 Shift+SPC 를 잡아채게 바꿨다고 합니다 ㅎㅎ

그래서 일단 Emacs 소스를 받아옵니다. 여러 레파지토리가 존재하지만 손에 익은 github.com 것을 가져오기로 합니다.

https://github.com/emacsmirror/emacs

적당한 곳에 가서

$ git clone git://github.com/emacsmirror/emacs.git 



합니다. 내려 받는데 시간이 좀 걸립니다. 소스 전체 크기가 무려 900메가가 넘기 때문입니다. (소스 자체 크기라기 보다는 변경내역들의 내용이 많을것이라 봅니다)

이대로 컴파일을 하면 라이브러리가 두개 없다고 나옵니다. libgif 와 libtiff 입니다. 따라서 이를 설치해 줘야 합니다.
애플에서 이런 오픈소스 라이브러리에 관련된 페이지가 있습니다.
http://www.apple.com/opensource/ 이 곳인데요. 이곳에서 gif 와 tiff 라이브러리를 찾아서 설치해 줍니다. 

http://sourceforge.net/projects/giflib/?source=dlp
이게 libgif 고 

http://www.remotesensing.org/libtiff/
이게 libtiff 입니다. 

두 소스 다 받아서 압축을 푸시고, 

 EDITED: 2015-04-06

brew 를 이용해서도 설치할 수가 있습니다. 

$ brew install libtiff

$ brew install giflib


$ configure 
$ make -j4 
$ sudo make install


 
해 주면 설치됩니다. make -j4 는 다들 알다시피 잡 갯수입니다. core 갯수 * 2 정도를 해주면 적당합니다. 이제 Emacs 를 컴파일 해줄 차례입니다. 

Emacs 에서 imagemagick 을 이용하면 org-mode 에서 이미지를 다룰 수가 있게 됩니다. imagemagick 을 연동해서 컴파일 설정을 해줍니다. 

$ cd ~/work/emacs

$ brew install pkgconfig

$ brew install imagemagick

$ ./autogen.sh

$ configure --with-ns
$ make -j4
$ make install



해주면 ~/work/emacs/nextstep 안에 컴파일된 Emacs.app 가 존재합니다. 이것을 /Applications 에 복사하시면 설치는 완료입니다. 뭔가 그래픽쪽이 강화가 됐는지 (libgif 와 libtiff 때문인가? ) 뽀샤시한 느낌이 나는게 아주 흡족합니다. 물론 Shift+SPC 도 잘 동작합니다.

 



아시는 분은 아시겠지만, (전 오늘에야 알았습니다) 맥 OSX 최강의 에디터라는 Textmate 2.0 이 듀크뉴켐 포에버와 같이 출시한다는 약속을 지키기 위해서 노력하더니만 오픈 소스화 해버렸군요 @.@ (돈주고 사신분들 애도!!) 

심지어 바이너리까지 업로드 되어 있어서, 귀찮은 빌드 과정도 건너 뛸 수가 있습니다. 저는 이맥스 유저긴 하지만 워낙 명성이 자자하니 한번 깔아봤습니다 ㅎㅎ

깔끔한 화면 UI 는 정말 명불허전이더군요. 하지만 이맥스에 비해서 딱히 꼬집어 말할 수는 없지만 뭔가 아쉽습니다. 하지만 이맥스는 리습을 배워야 하는 최악의 학습환경을 자랑하는데 비해서 얘는 그런것은 없으니 후학들에게 추천할 만합니다.

https://github.com/textmate/textmate

개발이 진행되고 있습니다. 바이너리로 받으실 분은 

https://api.textmate.org/downloads/beta

여기에서 받으실 수 있습니다. 한국 유저들이 불만이였던 CJK 문제는 깔끔하게 해결 된 것 같더군요.  
OSX 에서 GNU Emacs 를 사용중입니다. 귀찮고도 짜증나는 것중의 한가지가 왠만한 것들에 PATH 가 전혀 안 잡혀 있다는 것입니다. 심지어 $HOME/.bash_profile 에 내용을 넣어준다고 해도 Emacs 는 그 Path 의 영향을 받지 않더군요. 현재 Emacs 가 가지고 있는 PATH 정보를 확인하고자 한다면 

M-x shell 


로 들어가서 Prompt 가 뜨면 

bash-3.2$ env | grep PATH
EMACSPATH=/Applications/Emacs.app/Contents/MacOS/bin
PATH=/usr/bin:/bin:/usr/sbin:/sbin


이렇게 빈약하게 걸려 있는 것 뿐입니다. 귀찮더라도 추가해 주고 싶은 PATH 가 있다면 .emacs 파일에 

(setenv "PATH"
  (concat
   "/usr/local/bin" ":"
   "/opt/local/bin" ":"
   (getenv "PATH")
  )
)


이렇게 추가해 주면 완성입니다. 더 추가해 주고 싶은 PATH 를 쭈욱 써주시면 됩니다. 
Slime 이 무엇인지 Emacs 를 사용하시는 분들은 대충 아시리라 봅니다. REPL (Read Eval Print Loop)형태를 지원하는 언어에 대한 최적의 개발 환경이라고 보시면 됩니다. (물론 부정하는 분들도 많습니다) 

저는 Common Lisp , Clojure 등을 Slime 을 이용해서 개발환경을 구축해 두었습니다. 이번에 프로젝트를 Node.js 로 진행하게 되어서 (Node.js 또한 REPL 을 지원합니다) Emacs + Slime 으로 환경을 구축할려고 알아보았습니다. 

역시나 괜찮은 솔루션이 하나 등장하더군요. https://github.com/swank-js/swank-js

Slime 은 Swank 라는 방식으로 각기 언어별로 소켓 접속이 가능한 방식으로 서버를 띄우면 Emacs 에서 slime-connect 를 이용하여 서버에 붙어서 정보를 가져오고 전달하는 방식으로 구동됩니다. 이러한 점 때문에 원격에 swank 서버를 띄워도 마치 local 에 붙는 것처럼 붙어서 동작할 수가 있습니다. 

설치하는 방법 (OSX - Mountain Lion 기준 입니다)

1. Node.JS 와 npm 을 설치합니다. (Ubuntu 설치는 예전 포스트 참조 )

     

 $ sudo port install nodejs 
 $ sudo port install npm 


2. swank-js 설치 합니다. 
       

 $ sudo npm install -g swank-js 


swank-js 는 node.js 로 만들어진 swank 모듈입니다. 위에서 잠깐 언급한 slime 이 접속할 수 있는 서버를 띄워주는 모듈입니다. npm install 시에 -g 옵션을 주면 전역으로 설치하라는  명령입니다. 이제 어디서나 swank-js 명령으로 swank 서버를 띄워줄 수가 있습니다. 

3. SLIME 을 설치해야 할 시간입니다.

$ cd ~/.emacs.d/
$ cvs -d :pserver:anonymous:anonymous@common-lisp.net:/project/slime/cvsroot co slime


위와 같은 방식으로 다운 받는 것이 속도가 가장 빠르더군요. git 사이트는 생각보다 많이 느립니다. 


4. js2-mode 를 받아야 합니다. 

http://code.google.com/p/js2-mode/ 에서 js2-20090723b.el 을 다운 받아서 js2-mode.el 로 이름 변경해서 적당한 곳 (저는  ~/.emacs.d/ 밑에다 가져다 뒀습니다) 에 옮겨두고 byte-compile-file 을 해줍니다. 

Emacs 를 실행하고 
       

M-x byte-compile-file 


로 js2-mode.el 을 지정하면 됩니다. 이때 꼭 명심해야 할 사항은 절대 js2-mode.el 을 버퍼에 올려둔 상태로 컴파일 진행하면 안된다는 것입니다. (올려둔 상태로 컴파일 하면 에러가 발생함)

.emacs 파일을 열고 다음과 같은 내용을 추가해 줍니다. 

       (autoload 'js2-mode "js2-mode" nil t)
       (add-to-list 'auto-mode-alist '("\\.js$" . js2-mode))



5. 적당한 곳에 swank-js 프로젝트를 다운 받습니다. 
       
     

 $ cd ~/work
 $ git clone git://github.com/swank-js/swank-js.git



6. slime-js.el 의 심볼릭-링크 를 만들어 줍니다. 

$ cd ~/.emacs.d/slime/contrib
$ ln -s ~/work/swank-js/slime-js.el slime-js.el
$ cd ~/.emacs.d/
$ ln -s ~/work/swank-js/slime-js.el slime-js.el


7. .emacs 에 slime-js.el 을 require 해주고, 몇가지 추가 설정을 더 해줍니다. 

       (require 'slime-js)
       
       (add-hook 'js2-mode-hook
          (lambda ()
            (slime-js-minor-mode 1)))
       
       (add-hook 'css-mode-hook
          (lambda ()
            (define-key css-mode-map "\M-\C-x" 'slime-js-refresh-css)
            (define-key css-mode-map "\C-c\C-r" 'slime-js-embed-css)))



8. Emacs 를 다시 띄우고 Terminal.app 를 실행하시고 node.js 프로젝트 만들려고 마음 먹은 곳 위치에서 

$ cd ~/work
$ mkdir node-projects
$ cd node-projects
$ swank-js


이렇게 해주면 swank-js 서버가 구동됩니다. swank-js 명령만 쳐도 되는 것은 'sudo npm install -g swank-js' 해 줬기 때문입니다. 

Emacs 에서 

M-x slime-connect


해 주고 기본적으로 127.0.0.1 과 4005 번 포트로 접속 하는 것을 선택해 주시면 됩니다. (Enter x 2 번)

추가로 어떤 기능이 되는지는 https://github.com/swank-js/swank-js 사이트 참조하시면 됩니다.  

아는 분이 우분투 서버를 집에 설치하셔서 개인적인 클라우드를 구축하셨습니다. 그래서 집에 굴러다니는 컴퓨터가 눈에 들어오더군요. 그래서 저도 잽싸게 그 분을 따라서 클라우드 구축에 들어갔습니다. 구축 방법은 나중에 쓰기로 하고요. 

일단 제가 가지고 있는 최신 맥북 에어 (Macbook Air) 에서 우분투에 구축한 Samba 파일 공유에 접근이 안되더군요. 

애플이 오픈소스 Samba 를 버렸다고 합니다.(물론 그렇다고 하는데 포함은 되어 있습니다. 잘 안돌아가서 그렇지) 그래서 samba 로 어떻게든 연결해볼려고 하던 노력을 전부 치워버렸습니다. 대신 AFP 라는 걸로 바꿨다고 하니 우분투에 AFP 관련 된 것을 설치하면 되겠다고 생각해서 쉽게 설치했습니다. 


1. Netatalk 를 설치한다. 

$ sudo apt-get install netatalk 


2. /etc/default/netatalk 를 열어서 다음과 같은 것을 찾아서 커멘트들을 해제해주거나 못 찾는 것은 추가해 줍니다. 


ATALKD_RUN=no

PAPD_RUN=no

CNID_METAD_RUN=yes

AFPD_RUN=yes

TIMELORD_RUN=no

A2BOOT_RUN=no


3. netatalk 를 재시작 해줍니다. 

$ sudo /etc/init.d/netatalk restart


4. OSX 에서 '파인더(Finder)' 를 실행 시키고 

'이동' -> '서버에 연결' 


을 선택하시고 서버의 주소를 입력하시면 바로 공유 폴더에 접속하는 것을 확인할 수가 있습니다. 





Emacs 를 쓰다보면 서버에 Emacs 설치해서 ssh 로 접속해서 Emacs-nox 를 이용해서 편집할 경우가 생긴다. 하지만 너무 귀찮지 않은가? 이런 경우를 위해서 존재하는 것이 Tramp 모드입니다.

최신버젼에는 기본적으로 포함되는 것 같으니 그 부분을 살펴보기로 하겠습니다.

OSX: Lion 10.7.x 버젼

Emacs: 23.x 버젼

에서 테스트 했습니다.


C-x C-f /아이디@호스트명:


위와 같이 입력해주면 '저절로' 원격 호스트로 붙어서 파일을 가져올 수가 있습니다. 그러면 로컬에서 세팅된 대로 파일을 수정할 수가 있습니다.


ps. 티스토리 바뀐 에디터 - 진짜 마음에 안 드는군요.


한동안 Subversion 을 돌아보지 않았더니 (사실 게을러서 예전에 설치한 버젼을 그냥 쓰는 주의라서..) 많은 변화가 있더군요. 먼저 서브버젼이 아파치쪽으로 이동한 듯 보이더군요.

바뀐사이트 : http://subversion.apache.org/

아마도 1.7.x 대부터 변경된 듯 합니다. 따라서 예전에 제가 작성한 패치는 전혀 동작하지를 않게 바꼈더군요. 그래도 혹시나 예전 버젼 (1.6.x) 을 사용하신다면 예전 포스트 를 보시고 따라하시면 되실것입니다.

설치환경

OSX  Lion 이 설치되어 있고 Mac Port 가 설치되어 있다고 가정합니다. 따라서 Mac Port 가 설치되어 있다고 하면 Command Line Tool 이 설치 되어 있다고 봐야 합니다. 또한 Command Line Tool 이 설치되어 있다는 것은 XCode 가 설치되어 있다는 것입니다.


Mac Port 가 설치되기 위한 준비를 하는 방법은 제 예전 포스트 에서 다루고 있습니다. 참조하세요.

1. Subversion 1.7.4 을 컴파일하기 위한 모든 환경을 만들어 줍니다.

$ sudo port install subversion


어느정도 긴 시간이 흐른 뒤에 설치가 되어 있을 것입니다.
 
2. Subversion 1.7.4 버젼의 소스를 받아옵니다.

http://subversion.apache.org/download/
위 사이트에서 1.7.4 버젼의 subversion-1.7.4.tar.gz 를 받아옵니다. 적당한 곳에 옮겨줍니다. (저는 보통 ~/work 에 복사해 둡니다)

3. 압축을 풀어줍니다.

$ cd ~/work
$ tar xvzf subversion-1.7.4.tar.gz


4. 여기서 두가지 방향이 있습니다.
  - 포스트 하단의 path.c 를 받아서 정해진 위치 (제 경우를 예를 들어서 설명하자면)
   
  $ cp path.c ~/work/subversion-1.7.4/subversion/libsvn_subr


  - 포스트 하단의 utf8_mac_1.7.4.diff 를 다운 받아서
   
    $ cp utf8_mac.1.7.4.diff ~/work
    $ cd ~/work
    $ patch -p0 < utf8_mac_1.7.4.diff

5. 파일 패치가 이루어 졌으므로 이제 소스를 컴파일 해줍니다.

$ cd ~/work/subversion-1.7.4
$ ./configure --with-ssl
$ make
$ sudo make install


6. 설치가 끝났습니다. 이제 PATH 만 손봐주면 될 듯합니다.

 
$ emacs ~/.profile (또는 mate , vi , vim 등 자신이 좋아하는 에디터)


에 아래처럼 "/usr/local/bin" 을 추가해줍니다.
 
export PATH=/usr/local/bin:/opt/local/bin:/opt/local/sbin:$PATH



이 문제는 제가 2년전부터 수정하고 있는데 계속해서 커밋을 신청하는 데 (제가 귀찮아 하는 관계로..) 채택이 되질 않는 군요. - 혹시 제 영어가 황이라서..? -




$ emacs ~/.bash_profile


하시고 맨 아래쪽에

alias ls='ls -G'



이것만 추가해 주시고 저장하면 다음번부터 컬러를 확인하실 수 있습니다.

가지고 있던 맥북 프로를 지금 일하는 곳에 묶이게 되버려서 새로 노트북을 장만했습니다. 맥북 에어를 장만 했는데  Lion 이 기본으로 설치되어 있습니다. 아무 생각 없이 Mac port 를 설치해 줬는데 동작을 안하는 것입니다. 그래서 예전 기억을 더듬어 봤더니 XCode 를 설치해 줘야지만 동작했던 게 기억이 났습니다.

그래서 App Store 에서 XCode 4.3 을 설치하고 돌려봤지만 여전히 동작을 안합니다. 이유를 알아봤더니만 예전에 추가로 설치해 줬던 'System Tools' 가 없기 때문에 발생하는 문제였습니다.

XCode 4.3 가 설치되어 있다고 가정합니다.

1. XCode 를 실행시키고 메뉴중에서 "XCode" -> "Preferences..." 을 선택합니다.

2. "Downloads" 탭 (Tab) 으로 이동합니다.


3. 위 그림에서 보는 바 와 같이 "Command Line Tools" 를 클릭해서  설치해 줍니다.

이상입니다
기존에 아쿠아맥스  (Aquamacs) 를 이용하다가 카본 이맥스 (Carbon Emacs) 로 바꾸면 제일 먼저 당면하는 문제가 한영 전환입니다. 이래 저래 알아보니 카본 이맥스는 오에스의 한영 전환방식을 따라가더군요. 그래서 더욱 맘에 들었습니다. 그래서 한영 전환키가 디폴트로 (Cmd+Space) 키를 사용하고 있는 것을 Shift+Space 로 바꿔야 겠더군요. 

잘 정리된 분의 블로그 (Jiyoon Jang) 
 에 있는 글을 링크합니다. 

원문보기(클릭)

요약하자면 




+ Recent posts