드디어 올것이 오고 말았군요.
clojure 를 emacs 에서 slime 과 연결시키는 방법에 관한 것입니다. 물론 제가 쓰고 있는 osx snow leopard 에서 말이죠. 기존에 제가 쓰고 있던 환경은 emacs 에 slime 을 clbuild 버젼으로 연결시켜서 쓰고 있었습니다. 나름 편해서 애용하고 있었는데 이번에 clojure 를 연결 시켜야 해서 살짝 골치가 아프군요.

참고로 clbuild 를 쓰게 되면 slime 관련 설정 부분입니다. (.emacs 에 있음)

(setq load-path (cons "/Users/crazia/work/clbuild/source/slime" load-path))
(setq load-path (cons "/Users/crazia/work/clbuild/source/slime/contrib" load-path))
(setq slime-backend "/Users/crazia/work/clbuild/.swank-loader.lisp")
(setq inhibit-splash-screen t)
(load "/Users/crazia/work/clbuild/source/slime/slime")
(setq inferior-lisp-program "/Users/crazia/work/clbuild/clbuild lisp")
(setq slime-use-autodoc-mode nil)
(slime-setup '(slime-fancy slime-tramp slime-asdf))
(slime-require :swank-listener-hooks)

복잡하지요? 그래서 자동화 방법을 애용하기로 하겠습니다.

ELPA 라는 것이 있습니다. Emacs Lisp Package Archive 의 약자입니다. 말 그대로 Emacs 에서 쓰기 편하게
여러가지들을 제공하는 패키지 시스템이라고 할 수 있습니다.

http://tromey.com/elpa/install.html  여기에서 제공하는 방식으로 하면 인터페이스 버퍼가 뜹니다.

 
(let ((buffer (url-retrieve-synchronously
           "http://tromey.com/elpa/package-install.el")))
  (save-excursion
    (set-buffer buffer)
    (goto-char (point-min))
    (re-search-forward "^$" nil 'move)
    (eval-region (point) (point-max))
    (kill-buffer (current-buffer))))


이 내용을 *scratch* 버퍼에 가져다 두고 C-j 를 입력하면 된다고 쓰여져 있는데, AquaEmacs 의
경우에는 *scratch* 버퍼가 lisp-interaction-mode 로 설정되어 있지 않습니다.  따라서

M-x lisp-interaction-mode


바꾸시고 위의 내용을 복사해서 넣고 C-j 를 입력하세요. 반응이 만약 없다면 C-xC-e 로도 되는것 같더군요. 어찌 됐건 위의 코드를 실행하면 명령을 하나 쓸수가 있습니다.
M-x package-list-packages


를 입력하면 조금 시간이 걸리지만 설치할 수 있는 목록 리스트가 주르륵 나옵니다. 그중에서 swank-clojure 를 찾아서 'i' 를 눌러서 체크를 하시고 'x' 를 눌러서 설치가 됩니다.
그러면 .emacs 파일 아래쪽에 다음과 같은 코드가 자동으로 추가됩니다.

 (when
     (load
      (expand-file-name "~/.emacs.d/elpa/package.el"))
   (package-initialize))


package-initialize 가 실행된다면 기존에 설정되어 있는 slime 설정하고 충돌이 일어납니다. 멋지게 해결할 수 있는 방법이 없으니.. 귀찮지만 clbuild 로 웹 개발할 때와 클로져 공부 할 때를 구분시키는 방법으로 잠시동안 머물러야 겠습니다. 위에 있는 코드를 삭제하고 맨 위에 있는 clbuild 용 slime 설정 코드도 삭제해 줍니다.

(defun select-lisp-program (n)
  (interactive "n1:clbuild 2:clojure : (enter number)  ")
  (cond ((= n 1) (progn
                   (setq load-path (cons "/Users/crazia/work/clbuild/source/slime" load-path))
                   (setq load-path (cons "/Users/crazia/work/clbuild/source/slime/contrib" load-path))
                   (setq slime-backend "/Users/crazia/work/clbuild/.swank-loader.lisp")
                   (setq inhibit-splash-screen t)
                   (load "/Users/crazia/work/clbuild/source/slime/slime")
                   (setq inferior-lisp-program "/Users/crazia/work/clbuild/clbuild lisp")
                   ;;(setq inferior-lisp-program "clj")
                   (setq slime-use-autodoc-mode nil)
                   (slime-setup '(slime-fancy slime-tramp slime-asdf))
                   (slime-require :swank-listener-hooks)
                   (add-hook 'lisp-mode-hook (lambda () (slime-mode t)))
                   (add-hook 'slime-repl-mode-hook (lambda () (slime-mode t)))
                   (add-hook 'inferior-lisp-mode-hook (lambda () (inferior-slime-mode t)))

                   (define-key slime-mode-map (kbd "C-,") 'forward-sexp)
                   (define-key slime-mode-map (kbd "C-.") 'backward-sexp)
                   (define-key slime-mode-map (kbd "TAB") 'slime-indent-and-complete-symbol)
                   (define-key slime-mode-map (kbd "RET") 'paredit-newline)
                   (define-key slime-mode-map (kbd "<return>") 'paredit-newline)

                   (setq slime-complete-symbol-function 'slime-fuzzy-complete-symbol)
                   ))
        ((= n 2)
         (when
             (load (expand-file-name "~/.emacs.d/elpa/package.el"))
           (package-initialize))))
  )


그리고 두가지를 한 함수로 합쳐서 제공합니다. 위의 내용을 .emacs 에 추가하시면 다음 emacs 를 실행시키고 상황에 따라서

M-x select-lisp-program


명령으로 1 (clbuild) 나 2 (clojure) 로 개발 모드를 바꿔가면서 사용하실 수 있습니다. 물론 이렇게 귀찮게 안하고 lisp 을 clbuild 가 아닌 독자적으로 설치해서 적용하면 되지만 귀찮은걸 어쩌겠습니까 -0- clbuild 가 너무 편한걸..




새로운 것을 좋아하는 후배가 책까지 사주면서 보라고 해서 결국 Clojure를 설치하기로 했습니다.

Mac port 이용해서 Clojure 설치 하기

가장 쉬운 방법으로는 mac port 를 이용하는 방법이 있습니다.

sudo port install clojure


하면 너무나 손쉽게 설치됩니다. 하나 이러한 방법을 쓰면 나중에 Emacs 나 Slime 과 연동 설치할 때 귀찮아 지기 때문에 수동 설치를 하려고 마음을 먹었습니다.

Clojure 수동 설치 하기

참조 사이트: http://riddell.us/ClojureOnUbuntu.html

위에 링크한 사이트는 제가 여러모로 도움을 받는 사이트 입니다. 역시나 클로져도 우분투에 편하게 설치하는 방법이 잘 정리되어 있더군요. "그냥 사이트 보세요" 만큼 형편없는 도움말은 없겠지요. 그래서 거기 나와 있는 내용을 조금 제 형편에 맞게 정리해 볼까 합니다.

기본적으로 osx 는 자바가 설치되어 있습니다. 따로 설치해줄 필요 없으니 자바는 생략하고요. git 역시 설치되어 있다고 가정하지요. 제가 어떻게 설치했는지 기억이 안나는 군요..Maven 은 설치해준 기억이 없는데 설치되어 있는것을 보니 어영 부영 설치되어 있는 것 같습니다.

Ant 설치
 Ant 는 아마 기본으로 설치가 안되어 있을 것입니다.

~$ sudo port install ant


Clojure 설치

최신 버젼을 받아서 컴파일 해서 설치해 주면 됩니다.

~$ mkdir ~/work

~$ cd ~/work

~$ git clone git://github.com/richhickey/clojure.git

~$ cd clojure

~$ ant

~$ mkdir ~/.clojure

~$ cp clojure.jar ~/.clojure


저는 기본적으로 코드 관련 소스들은 work 밑에 저장하기 때문에 work 를 썼습니다. 코드 관련 폴더를 하나씩 만들어서 쓰시는 것을 추천합니다.

Clojure 테스트 하기

~$ cd ~/.clojure

~$ java -cp clojure.jar clojure.lang.Repl

user=> (+ 1 41)

42


Ctrl-d 를 누르면 REPL 을 빠져 나갑니다.

clojure-contrib 설치 하기

clojure-contrib 은 공식적인 클로져 확장 라이브러리 모음집 같은 것입니다.

~$ cd ~/work

~$ git clone git://github.com/richhickey/clojure-contrib.git

~$ cd clojure-contrib

~$ mvn package

~$ cp target/clojure-contrib*.jar ~/.clojure/clojure-contrib.jar


자 이제는 편하게 REPL 로 들어가는 스크립트를 만드는 순서 입니다.

~/.bash_profile 아래쪽에 다음과 같은 내용을 채워 넣습니다.

export CLOJURE_EXT=~/.clojure

PATH=$PATH:~/work/clojure-contrib/launchers/bash

alias clj=clj-env-dir


저장하고 Terminal 창을 종료했다가 다시 열어서 테스트를 해 줍니다.

~$ clj
Clojure 1.2.0-master-SNAPSHOT
user=> (System/getProperty "java.class.path")
"/Users/crazia/.clojure/clojure-contrib.jar:/Users/crazia/.clojure/clojure.jar"
user=>


위처럼 clojure.jar 와 clojure-contrib.jar 의 위치가 표시되면 만사 OK 입니다.

Clojure 와 clojure-contrib 의 업데이트는 굳이 설명할 필요가 없을 듯 하여 생략합니다.

darcs 를 설치하기 위해서는 cabal 을 설치해야 합니다. 이 cabal 은 ghc 가 필요한데 쉽게 설치가 안됩니다. (즉  macport 로 안된다는 이야기입니다)

http://haskell.org/haskellwiki/Mac_OS_X#Mac_OS_X_10.6_.28Snow_Leopard.29

에서 1.2 번 을 따라서 해주면 snow leopard 에서 ghc 를 쓸 수가 있습니다.

뿐만 아니라 바로 cabal 도 설치 됩니다. /usr/local/bin

cabal update

cabal install cabal-install

cabal install darcs

또는

http://dark.ly/darcs-2.3.1-i386-darwin.bz2 에서 한번에 다운 받아서 설치하세요.

이 과정 후에

/usr/local/bin 으로 이동한 후에

sudo ln -s ~/.cabal/bin/darcs darcs

로 링크를 걸어주며 설치 완성 입니다.



언제나 새로운것이 문제입니다.
또 '눈범'을 욕하면서 시작하게 되는군요.   sbcl 좀 깔아볼까 했더니 sbcl 은 신기하게 기존에 리습이 깔려 있어야 빌드 할 수가 있더군요.
이런 신기할데가.. 그래서 가장 만만한 clisp 을 깔아주기로 했습니다. 열심히 세팅한 macport 가 있으니 가비얍게 커맨드를 입력했습니다.

sudo port install clisp


무엇인가 주르륵 뜨더니 안된다고 하더군요. 슥슥 구글을 돌려보니 이런 문제가 속출해서 portfile 이 올라왔더군요. 그래서 포트파일을 받아서 저장시켰는데
그 다음 문제가 이 포트파일로 대체 어떻게 설치하는가 하는 문제였습니다. 역시 찾아보니 답이 나오더군요.

1. 아무데나 폴더 한개 만들어줍니다.
 - mkdir clisp

2. 다운 받은 포트파일을 복사해줍니다. (다른 이름이라면 자연스럽게 Portfile 로 변경해줍니다)
 - cp ~/Downloads/Portfile .

3. 만든 폴더에 가서 다음 명령을 실행합니다.
 - sudo port -D . -v install


짜잔 하고 긴시간이 지나고 나면 설치가 되는군요.

패치 파일은 여기 에서 가져왔습니다. 이름만 바꿔줬습니다.

맥을 얼마전에야 샀습니다. 그런데 주문한 날 새로운 OS가 나오더군요. 그래서 맥을 산곳에 전화를 해서 새로운 OS (Snow Leopard) 가 나온 것을 알고 있다. 빨리 한개 보내달라고 했습니다. -ㅅ- 물론 그쪽에서는 정중하게 되묻더군요 "머리에 구멍이라도 나셨습니까? 손님?" 네 그렇습니다. 저는 진상짓을 제대로 하기 시작했습니다. 회사에서 재무 보는 친구가 제 등쌀에 못이겨서 전화기를 들고 이야기를 하고 있고 저는 옆에서 어떻게 하겠다는 협박만 알려줬습니다. 착한 제 친구는 (재무 보는 친구) 땀을 뻘뻘 흘리면서 저의 온갖 진상짓을 마이너한 버젼으로 항의를 하더군요. 결국 '걍 환불하고 조금 기다렸다가 새 OS 장착 되는거 확인하고 사겠다' 라는 아주 멋진 협박을 알아내서 이야기 했더니 그쪽에서 바로 '이거나 먹구 떨어져라' 라는 식으로 OS 업그레이드 비용을 통장으로 부쳐주더군요.

뭐 열심히 얻어낸 쾌거였기 때문에 즐거워 하면서 운영체제를 업그레이드 했지만 새로받은 OS 는 64비트 전용이라 기존의 OS 에서 설치했던 프로그램들이 충돌나는 것이 몇개 있었습니다. 예전에 제가 올렸던 [[예전 포스팅]] 같은 경우 말이죠.

항상 새로운 것이 문제입니다. 새로운 것을 그냥 쓰는 것은 사실 문제가 되지 않지만, 잘 쓰거나 또는 뭔가 사람들이 잘 안하려는 것을 할려고 할 때는 더욱 더 문제가 되기 마련입니다.

아이폰 어플리케이션 개발이 바로 그런것이라고 볼 수가 있습니다.  예전 버젼이라면 문제가 없겠지만 아이폰 OS 가 최신인 3.1.2 를 쓰면 문제가 되고, 개발하는 OSX 가 10.6 (즉 Snow Leopard)가 되면 문제가 되기 마련이지요. 이 두가지가 결부된다면? 아 끔찍합니다..

바로 이러한 짜증을 바탕에 두고 이 작업을 시작했습니다. 결국 논점은 그것입니다. 개인용 제작시 우리돈으로 대략 년당 12만원 , 상업용 제작시 우리돈으로 대략 년당 120만원 이돈을 아껴볼려고 하기 때문입니다. 제가 상업용을 제작할 것도 아니고, 그렇다고 제작한 것을 외부에 공개할 것도 아니고 그냥 간단하게 제작해서 제 아이팟 터치에 넣어서 가지고 싶은 것인데 너무 돈이 비싸지요. 즉 라이센스 작업은 나중에 공개할 때 해도 충분하다는 것입니다.

물론 쉬운 작업은 아니였습니다. 해놓구 보면 쉽지만 하기까지의 과정이 쉽지 않더군요. 물론 어려운 이유는 자료가 없어서 입니다. 정말 찾기 힘든 자료들과 된다고 쓰여져 있는데 안되는 것들 이러한 것들이 총체적으로 난항을 겪게 했습니다. 더러워서 돈 내고 받아볼까? 라는 생각까지 해봤습니다. ^^;;

아이폰 jailbreak 에 대해서는 굳이 설명 드리지 않겠습니다. 하는 법도 어렵지 않고 또 jailbreak 도 못하신다면 거기서 돈안내고 개발은 포기하시는게 정신 건강상 좋습니다. 제가 쓰는 방법은  blackra1n 이라는 툴을 쓰는것입니다. 지금까지 나온 방법중에서 가장 혁신적인 원버튼 해킹이 됩니다. 구글에서 'blackra1n'을 검색해보시면 바로 프로그램 뜹니다.

아이폰 (또는 아이팟 터치)이 '탈옥'이 됐으면 이제 개발에 들어갈 차례입니다. apple 의 Developer 사이트에서 iphone_sdk_3.1.2_with_xcode_3.2.1__snow_leopard__10m2003.dmg 를 다운 받습니다. 버젼과 OS 확인하시고 받으시면 됩니다. 이 글을 쓰는 당시는 저 버젼이 최신이였습니다. 그리고 바로 설치해 주시고요. 그러면 컴퓨터에 Xcode 3.2.1 버젼이 설치되었을 것입니다.

XCode 를 실행하고 다음 그림과 같이 "Create a new Xcode project" 를 선택합니다.

Welcome to Xcode

이런 툴을 공짜로 배포하는 애플이라니!! 하지만 인증서로 돈 계속 받으니 MS 가 나은건가?..



테스트할 것이기 때문에 프로젝트 종류는 아무거나 선택합니다.


Window-based Application

윈도우 베이스 어플리케이션으로 테스트



프로젝트 이름을 정하는 것입니다. 이거도 아무거나 선택합니다. 저는 "Crazy World" 라고 정했군요.


New Project

헬로 월드가 식상해서...



자 일단 컴파일을 해보면 Simulator 로는 잘 되는 것을 확인할 수 있습니다. 이제 Device - 3.1.2 로 바꾸고 컴파일을 해봅니다. 잘 컴파일이 되고 인스톨이 된다면 성공이겠지만. 당연히 안 될 것입니다. 


Device - 3.1.2

디바이스에서 프로그램을 돌릴꺼라는 이야기입니다.




정확히는 컴파일이 안될 것입니다. 일단 컴파일 부터 되게 만들어 보겠습니다.

참조: http://networkpx.blogspot.com/2009/09/compiling-iphoneos-31-apps-with-xcode.html

여기에서 참조하실 부분이 'I want to compile' 부분 입니다. 조금 정리를 하자면

1. 자체 제작할만한 인증서가 필요합니다. 인증서를 만드는 방법은 여기에서 인증서를 만드는 방법이 있습니다.  인증서 만들때 Name (이름) 을 'iPhone Developer' 로 만들어 주는 것만 확인하시면 됩니다.

2. 만들어진 인증서는 '로그인' 키체인에 존재해야 합니다. 절대 '시스템' 키체인이 아닙니다. 그리고 모든 사용자에게 신뢰하겠냐는 부분은 하겠다고 체크하셔야 합니다.

3. 인증서가 만들어졌으면 다음과 같은 작업을 해줘야 합니다.

   3-1. /Developer/Platforms/iPhoneOS.platform/Info.plist 파일을 열어서
   3-2. 46 번째 줄에서 XCiPhoneOSCodeSignContext 를 XCCodeSignContext 로 바꾸어 줍니다.
   3-3. 79 번째 줄에서 XCiPhoneOSCodeSignContext 를 XCCodeSignContext 로 바꾸어 줍니다.
   3-4. 파일 저장합니다.
   3-5. XCode 를 재시작합니다.

4. 이제부터 컴파일이 아주 부드럽게 될 것입니다.


그리고 그 다음부터 참조한 페이지에서 나오는 'I want to install and debug too' 부분은 열심히 따라 했지만 아이팟 터치만 두 세번 복원하고 안된다는 것만 확인했습니다. 모름지기 하는 방법이 복잡한 것 치고 좋은 방법이 없다는 것을 다시 한번 확인한 셈이라 볼 수 있습니다.참조 페이지를 쓰신 분은MobileInstallation.framework 을 안좋아 하신다는 것이 힌트가 되서 MobileInstallation.framework 방법으로 성공했습니다. 그 방법을 알아보기로 하지요. 매우 쉽습니다.

참조: http://www.iphonedownloadblog.com/2008/08/18/mobileinstallation-for-iphone/

위 참조 사이트에서 'MobileInstallation patch for iPhone 3.1.2 Firmware:' 부분을 참조하시면됩니다. 

1. 아이폰이나 아이팟 터치에서 Cydia 를 실행시킵니다.

2. 아래쪽 탭에 있는 'Manage' -> 가운데에 있는 'Sources' -> 상단 오른쪽에 있는 'Edit' 클릭 ->  상단 왼쪽에 있는 'Add' 클릭

3. http://cydia.hackulo.us 입력하시고 'Add Source' 버튼 클릭

4. 'Add Anyway' 버튼 클릭 후 안정적으로 추가되면 아이폰(아이팟 터치)을 리부팅 시킵니다.

5. Cydia 를 실행시키고 하단 탭의 'Search' 를 클릭하고 "AppSync for OS 3.1' 을 설치합니다. 그리고 리부팅을 다시 한번 해줍니다.

이제 정상적으로 컴파일이 되고 아이팟 터치에 인스톨까지 되는 것을 확인하실 수가 있습니다. 년당 12만원을 아주 손쉽게 아꼈군요..


연일 맥을 가지고 놀다 보니 발견하게 되는 개발 환경과 작업 환경 세팅시의 문제점들이 발견 되는 군요. 저는 Emacs 로 텍스트 파일들을 작성해서 svn repository 에 보관을 합니다. 그렇게 집 , 회사 , 노트북 세가지를 동기화 시켜왔는데 이제  osx 를 사용하다 보니 첨 쓰게 되는 환경에 당황하게 되는군요. 너무 쉽게 됐던 것들이 안되니 참으로 난감하기도 하고 -ㅅ-; 암튼 구글링 저헐라게 하다가 우연히 알게 되는 사실로 해결이 되는 군요.

.emacs 에서 한글을 쓰기 위해서 세팅하는 과정입니다.

(set-language-environment "Korean")

(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(prefer-coding-system 'utf-8)
(set-default-coding-systems 'utf-8)


이렇게만 설정해 주면 기본적으로 osx 에서 emacs 사용시 별 문제 없이 utf-8 환경으로 작동하게 되는 군요.
여기에다가 svn 을 살짝 연결 시켜서 사용하게 되면 linux 나 window 와는 다르게 에러가 발생합니다. 이미 고쳐버려서 어떤 메시지 였는지 확실하지는 않지만

svn: Commit failed (details follow):
svn: Can't convert string from native encoding to 'UTF-8':


이러한 메시지 였습니다.
정말로 고쳐볼려고 별의 별 방법을 다 써봤습니다. 구글링도 얼마나 한지 모릅니다. 그러다가 우연히 발견한 팁을 적용시켰습니다. emacs + svn + utf-8 으로 검사하니까 절대로 안나오더군요..

.profile 에 다음과 같이 추가해 줍니다.

export LC_CTYPE=en_US.UTF-8
export LANG=en_US.UTF-8


왜 인지 모르지만 너무 잘 돌아갑니다. -ㅅ-;;
osx 를 사용할 때, svn 을 사용해서 소스나 레파지토리에서 파일을 check out 을 하게 되면 영문 파일들은 잘 내려받고 서버와 동기화도 잘 되는 반면 한글 파일명을 가진 파일들은 오동작을 일으킵니다. 쉽고도 간단하게 확인이 가능한데

svn st


라고 입력을 하면 분명히 방금 checkout 을 한 경우라도 같은 파일이 레파지토리에 추가가 안되어 있다고 나옵니다. 이 문제는 osx 에서 쓰이는 utf-8 방식이 svn 과 달라서 발생하는 문제라고 합니다. 계속해서 reporting 되고 있는 문제긴 하지만 subversion 측에서 적용을 안하고 있는 것 같습니다. 최초 발생과 패치를 일본 프로그래머가 내놓은 시점이 1.4.4 버젼이였는데 현 버젼인 1.6.5 까지 아무런 적용이 안되고 있는 것을 보면 쉽게 추측이 가능합니다.

그 발생한 문제에 대한 이슈는 원문보기 에서 잘 나타나 있습니다. 그 달려있는 내용중에 보면 힌트가 나와 있습니다. 그 내용을 조금 정리하자면
curl -O
 http://www.opensource.apple.com/darwinsource/tarballs/other/subversion-16.tar.gz
curl -O http://www.opensource.apple.com/darwinsource/tarballs/other/neon-8.tar.gz
curl -O
http://subversion.tigris.org/nonav/issues/showattachment.cgi/780/utf8precompose_macosx.path

tar xzf subversion-16.tar.gz
tar xzf neon-8.tar.gz
patch -p0 < utf8precompose_macosx.path
mv neon-8/neon subversion-16/subversion
cd subversion-16/subversion
./configure --with-ssl
make
sudo make install

# patched version of svn will be installed on /usr/local/bin,
# make sure you have /usr/local/bin in your PATH environment variable.

이렇게 하라고 되어 있는데 , 실제로 잘 구동하지가 않습니다. 그래서 curl 명령 뒤에 붙어 있는
링크들을 클릭해서 직접 파일을 받아서 패치를 적용해 보았는데 제대로 동작을 하지를 않더군요. 게다가
버젼이 1.4.4 라 너무 낮습니다. 그래서 이 내용을 참조해서 1.6.5 버젼용 패치를 만들어 보았습니다.
이 패치는 오로지 osx Leopard 를 기준으로 합니다.

subversion 1.6.5 를 여기 를 클릭해서 내려받습니다. 적절한 곳에다 옮겨주시고

tar xzf subversion-1.6.5.tar.gz

하시고 그리고 패치파일을 받습니다. 그리고 패치를 적용해 줍니다.

patch -p0 < utf8_mac.patch
cd subversion-1.6.5/subversion
./configure
make
sudo make install


이제 문제가 해결된 svn client 를 소유하게 되앴군요.




애플 터미널에서 한글 파일을 저장해서 svn에 올리면 제대로 올라가지만 그
파일을 윈도우에서 내려받아서 사용하면 글이 깨지는 현상이 발생합니다.

즉 제가 Mac OS 상에서 '해킹토시.txt' 라고 파일을 만들어서 svn 에
추가하면 잘 올라가지만 레파지토리상에서는 더미와 비슷하게 존재합니다.
따라서 windows 에서 그 파일을 받아서 보면 'ㅎㅐㅋㅣㅇㅌㅅㅣ.txt' 라는
이름으로 한글 자소가 분리된 형태로 파일이 받아집니다. 파일 지울때
rename 을 해줘야 하며, svn 레파지토리 관련 명령들도 잘 먹지 않습니다.

해결할려면 사용자 계정에 홈 디렉토리에 .inputrc 파일을 만들고

set convert-meta off
set meta-flag on
set output-meta on

이렇게 적어주면 파일 깨지는 현상이 사라지고, Mac(UTF-8) 용 터미널과
Windows(Euc-kr) 용 터미널에서의 파일명이 일치하게 됩니다.

+ Recent posts