In console 'Terminal'

$ sudo apt-get install clojure
$ sudo apt-get install leiningen
$ sudo apt-get install slime

install clojure-mode

$ cd ~/.emacs.d
$ git clone git://github.com/technomancy/clojure-mode.git

append to dot-emacs

$ emacs ~/.emacs

add followings below

    (add-to-list 'load-path "~/.emacs.d/clojure-mode/")
    (require 'clojure-mode)

install swank-clojure

$ lein plugin install swank-clojure 1.3.3

make clojure test project
   
$ mkdir ~/tmp
$ cd ~/tmp
$ lein new test-project
$ cd test-project
$ lein deps

invoking slime for clojure
   
$ emacs project.clj

in Emacs

M-x clojure-jack-in

enjoy yourself!!

for Korean

클로져를 Emacs 랑 연동하는 방식이 여러가지가 존재합니다. 이거 저거 다 해봤는데 잘 안되더군요. 개인적으로 apt-get 을 이용해서 개발환경 관리하는 것을 즐겨하는 편인데 잘 뒤져봐도 이것에 관한 내용들이 없더군요. 그래서 정리해 봤습니다.

터미널 창에서 다음 과 같이 입력해 줍니다. emacs 는 이미 설치가 되어 있다고 가정합니다.

$ sudo apt-get install clojure
$ sudo apt-get install leiningen
$ sudo apt-get install slime

클로져 모드 (Clojure-mode) 를 설치해줍니다. git 는 이미 설치가 되어 있다고 가정합니다.

$ cd ~/.emacs.d
$ git clone git://github.com/technomancy/clojure-mode.git

.emacs 를 열어서

$ emacs ~/.emacs

다음과 같은 내용을 추가해 줍니다. 이는 클로져 모드를 쓸 수 있게 해주는 것입니다.

    (add-to-list 'load-path "~/.emacs.d/clojure-mode/")
    (require 'clojure-mode)

 스웽크 클로져(swank-clojure)를 설치해줍니다. slime 이 연결하는 대상이 될 것입니다.

$ lein plugin install swank-clojure 1.3.3

테스트용으로 clojure 프로젝트를 만들어 봅니다.
   
$ mkdir ~/tmp
$ cd ~/tmp
$ lein new test-project
$ cd test-project
$ lein deps

실제로 slime 하고 연동해 보기로 합니다.
   
$ emacs project.clj


clj 파일을 열어서 Emacs 상에서 다음과 같이 명령을 입력해 주면

M-x clojure-jack-in

바로 Slime 하고 연동되서 뜨는 것을 확인하실 수 있습니다.
 


저번 포스트 에서 Clojure 와 Slime 을 연결해봤습니다. 그런데 REPL 에서 색이 안 이쁘더군요. 간단하게 색을 집어넣는 방법을 설명하겠습니다.

.emacs 파일을 열어서 맨 아래쪽에 다음 과 같은 내용을 추가해 줍니다.

(add-hook 'slime-repl-mode-hook (defun clojure-mode-slime-font-lock () (let (font-lock-mode) (clojure-mode-font-lock-setup))))

끝!!


 이맥스 (Emacs) 에서 영문 폰트는 기본적으로 지정해 줄 수가 있습니다. 한글하고 일어 한문은 지정하는 여러가지 방법이 있지만 이 방법이 가장 쉬운듯 해서 정리해 봤습니다. 

EDIT:
  나눔 고딕 폰트 설치를 위해서 먼저 나눔고딕 폰트를 설치해야 할 필요가 있겠지요?
  나눔고딕 페이지 이동

osx 10.6 (SnowLeopard)
테스트 클라이언트 (Client) : Aquamacs 2.1 

이고 .emacs 파일에 다음과 같이 써 주면 됩니다. 


  (set-fontset-font "fontset-default" '(#x1100 . #xffdc)  '("NANumGothicCoding" . "unicode-bmp")) ;
  (set-fontset-font "fontset-default" '(#xe0bc . #xf66e)  '("NanumGothicCoding" . "unicode-bmp")) ;
  (set-fontset-font "fontset-default" 'kana '("AppleGothic" . "unicode-bmp"))
  (set-fontset-font "fontset-default" 'han '("AppleGothic" . "unicode-bmp"))


EDIT : 저보다 더 깔끔하게 수정하신 분이 계셔서 그분의 블로그를 링크합니다.
  원문 보기 : http://seorenn.blogspot.com/2011/04/emacs_24.html

(set-face-font 'default "Monaco-12")
(set-fontset-font "fontset-default" '(#x1100 . #xffdc)
                  '("NanumGothicOTF" . "iso10646-1"))
(set-fontset-font "fontset-default" '(#xe0bc . #xf66e)
                  '("NanumGothicOTF" . "iso10646-1"))
(set-fontset-font "fontset-default" 'kana
                  '("Hiragino Kaku Gothic Pro" . "iso10646-1"))
(set-fontset-font "fontset-default" 'han
                  '("Hiragino Kaku Gothic Pro" . "iso10646-1"))
(set-fontset-font "fontset-default" 'japanese-jisx0208
                  '("Hiragino Kaku Gothic Pro" . "iso10646-1"))
(set-fontset-font "fontset-default" 'katakana-jisx0201
                  '("Hiragino Kaku Gothic Pro" . "iso10646-1"))

(setq face-font-rescale-alist
      '((".*hiragino.*" . 1.2)
        (".*nanum.*" . 1.3)))


제 설정하고 바뀐 부분은 기본 폰트를 지정해 주신 것 (보통은 지정 안해주면  Monaco 를 쓰게 되어 있으나 나중에 혹시 Consolas 로 바꿀때 사용할려고 남겨뒀습니다. 그리고 폰트 이름이 바꼈습니다. (저는 예전 폰트 이름 그대로 사용중) 그리고 크기 조절이 들어간 것이 차이가 있습니다.


한글은 나눔고딕 코딩으로 지정해 줬습니다. 그런데 아쉬운건 나눔고딕 코딩이 한자 폰트가 빠졌다는 것이겠지요. 그래서 다른 코딩 폰트를 지정해 줘야 하는데 영문 폰트로 알아내는 것이 귀찮더군요. 그래서 제일 만만한 애플 고딕으로 지정해 줬습니다. 



테스트 화면 입니다. 






맥북에서 부트캠프를 깔고 윈도 7을 사용하고 있습니다. 보통 때 한글 변환은 Shift + Space 로 하고 있는 지라 사용하는 데 별 불편함이 없었는데 한자를 쓸 일이 생기니 불편한 일이 발생하더군요.


위 압축 파일을 받아서 압축을 해제해 보면 , 그 안에 여러가지 파일이 존재하는 데요.

mackeybind.exe

이 파일을 실행시키면 맥북의 오른쪽에 위치한 "Command" 와 "option" 키를 "한영 변환 / 한자 변환" 으로 손 쉽게 세팅할 수 있습니다. 그 후로 리붓하면 바로 사용 가능합니다.

好學 -> 知 , 力行 -> 仁 , 知恥 -> 勇
테스트 입니다. 중용에서 언급된 내용으로

배우는 것을 좋아하는 것이 '지' 요 , 힘써서 행하는 것을 '인' , 부끄러움을 아는 것이 '용' 이라고 한답니다.




.bashrc 는 터미널이 생성될 때마다 읽히는 것이고
.bash_profile 은 개인적인 설정으로 로그인 할 때마다 읽히는 것입니다.

그런데 .bash_profile 을 수정했는데 (예를들면 JAVA_HOME 이라던가 PATH 라던가) 안 읽히는 것입니다. 뭐 이유는 여러가지가 있겠지만 암튼 이런 경우가 발생했을 때의 해결방법입니다.

$HOME/.bashrc 를 에디터로 엽니다.

$ emacs ~/.bashrc


아래쪽쯤에

if [ -f ~/.bash_profile ]; then
    . ~/.bash_profile
fi


이렇게 추가 해줍니다. 그러면 끝!!


Ubuntu natty (11.4) 에 오라클을 설치하는 방법입니다. 

만약 설치할려는 서버의 메모리가 1기가 보다 적을 때는 포기하기로 하자 

$ sudo dd if=/dev/zero of=/swpfs1 bs=1M count=1000
$ sudo mkswap /swpfs1
$ sudo swapon /swpfs1


를 입력해서 스왑을 지정해 줍니다. 그리고 다음과 같이 입력해서 
  

$ sudo emacs /etc/apt/sources.list


를 열어서 제일 아래쪽에 

deb http://oss.oracle.com/debian unstable main non-free


이걸 추가해 주고 , 그리고 GPG Key 값을 추가해 줍니다. 

$ wget http://oss.oracle.com/el4/RPM-GPG-KEY-oracle -O- | sudo apt-key add -


소스 리스트에 오라클 배포 사이트를 추가해주고 , 키를 등록해 줬으니 이제 소스리스트를 업데이트 해줄 시간입니다.

$ sudo apt-get update


자 이제 어떤 것이 있는지 조사해 볼까요?  

$ apt-cache search oracle


를 입력하면 가장 아래쪽에 
 
   oracle-xe - Oracle Database 10g Express Western European Edition
   oracle-xe-client - Oracle Client 10g Express Edition
   oracle-xe-universal - Oracle Database 10g Express Universal Edition
 
이 세가지가 눈에 띄는군요. oracle-xe 는 유럽 버젼인 듯 하니 oracle-xe-universal 을 깔아줘야 하겠죠?

$ sudo apt-get install oracle-xe-universal 


실수로 oracle-xe 를 설치할 뻔 했는데 universal 버젼이 대략 50메가 정도 용량이 더 크더군요.  다 설치됐으면 설명에 따라서 다음과 같이 설정을 해줍니다. 

$ sudo /etc/init.d/oracle-xe configure 

 

Specify the HTTP port that will be used for Oracle Application Express [8080]:


 오라클 데이타베이스 홈페이지에 접속할 포트 번호를 물어보는 것입니다. 그냥 디폴트로 설정해 줍니다. Enter 

 Specify a port that will be used for the database listener [1521]:


   유명한 오라클의 포트 번호지요? Enter 눌러서 설정해줍니다. 
   

   Specify a password to be used for database accounts.  Note that the same
   password will be used for SYS and SYSTEM.  Oracle recommends the use of 
   different passwords for each database account.  This can be done after 
   initial configuration:
   Confirm the password:


SYS 나 SYSTEM 의 비밀번호 설정에 관한 질문입니다. 걍 기억하기 편하게 , root 라고 입력하죠 한번 더 입력하는 부분이 있으니 똑같이 root 로 입력해 주죠.

 Do you want Oracle Database 10g Express Edition to be started on boot (y/n) [y]:


시작할 때 오라클 데이타베이스를 띄울 것인가에 관한 질문입니다. y 를 입력해줍니다. 

매우 쉽게 오라클 설정이 끝났습니다. 역시 진리의 우분투(Ubuntu) 입니다. 
잘 설치되었는지 확인을 해 줘야 겠지요? 

웹브라우져를 열고 "http://127.0.0.1:8080/apex" 를 입력해 줍니다. 잘 나오시나요? 

만약 안나오신다면 

 $ sudo /etc/init.d/oracle-xe force-reload 

 
한번 실행시켜주시면 됩니다. 

또 다른 이슈? 만약 톰캣 하고 충돌이 일어난다면 

 
 저는 이러한 그림이 뜨는군요. 톰캣이 8080 포트를 점유하고 있어서 그렇습니다. 
   
 /etc/tomcat6/server.xml 파일을 열어줍니다. 그리고 다음과 같은 부분을 찾아줍니다. 

<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               URIEncoding="UTF-8"
               redirectPort="8443" />


그리고 8080 을 다른 값으로 바꿔줍니다. 8008 이 괜찮겠군요. 수정했으면 저장하고 빠져나와서 톰캣을 재시작 해줍니다. 

 $ sudo /etc/init.d/tomcat6 restart


톰캣을 재시작 해주고 

 

 $ sudo /etc/init.d/oracle-xe force-reload 


를 실행시켜주시면 됩니다.
 

 
간단한 파일하고 설정만으로 매킨토시 컴퓨터에 SVN 서버를 설정할 수 있습니다. 

1. 저장소 만들기 
    
     mkdir /Users/crazia/svn 
     cd /Users/crazia/svn
     svnadmin create super_ultra

     chown -R www:www /Users/crazia/svn/*


svn 레파지토리가 될 디렉토리를 생성하고, svnadmin 을 이용해서 프로젝트를 생성합니다. 지금 보여지는 예제로는 super_ultra 가 되겠군요. 그리고 chown 을 이용해서 www:www 로 바꿔줍니다. 


2. 설정파일 만들기 
   
sudo emacs /etc/apache2/other/svn.conf 


 -- svn.conf -- 
   
 
    LoadModule dav_svn_module /usr/libexec/apache2/mod_dav_svn.so

     <Location /svn>
       DAV svn
       SVNParentPath /Users/crazia/svn

       AuthType Basic
       AuthName "Subversion repository"
       AuthUserFile /etc/apache2/svn-auth-file
       Require valid-user

     </Location>

자신이 즐겨 쓰는 에디터 (vi, nano, emacs) 로 svn.conf 를 정해진 위치에다가 생성합니다. 그리고 그 안에 들어가는 내용을 아래와 같이 정리합니다. 


3. svn 계정만들기 

  sudo htpasswd -cm /etc/apache2/svn-auth-file crazia

svn 계정에 쓰일 (여기서는 crazia) 패스워드를 입력합니다. 


4. 아파치 재시작 

sudo apachectl restart 


 만약 에러 발생시 

sudo emacs /usr/sbin/apachectl

apachectl 파일에서 

     ULIMIT_MAX_FILES="ulimit -S -n `ulimit -H -n`"

 부분을  

     ULIMIT_MAX_FILES=""

 로 수정 하고 다시 아파치를 재시작합니다. 

  sudo apachectl restart 

 아파치 에서 에러가 발생하는 것을 알아보려면 
     
     tail -f /var/log/apache2/error_log

로 에러가 발생한 것을 알아본다. 







간만에 Vim 세상으로 돌아 온 것이 아니고, 옆에 앉은 개발자가 사용하는 vi 에서 이상하게 backspace 가 안 먹는다고 해서 해결책을 찾다가 알게 된 사항입니다. 

$HOME 에 .vimrc 라는 파일을 만들어 줍니다. 

:imap ^H <Left><Del>


라는 내용을 채워 줍니다. ^H 는 (Ctrl+V 누르고 Backspace 를 누르는 것입니다)

이렇게만 해주면 됩니다.



EmacsW32 를 설치하고 grep-find 를 동작하게 만들기 위해서 몇가지 세팅을 해줘야 합니다. 

1. EmacsW32 설치하기 


 EmacsW32 는 GNU Emacs 에다가 윈도에서 사용하기 편하게 몇가지 패치를 한 버젼입니다. 편해서 윈도에서는 항상 설치해서 사용하고 있습니다. 


2. grep-find 문제 해결 

 grep-find (find-grep 으로 써도 똑같이 동작함)은 현재 디렉토리부터 하위 디렉토리까지 찾고자 하는 단어를 포함하고 있는 줄의 정보를 표시하는 Emacs 의 기능입니다. 유닉스 명령어 (unix command) 중에서 가장 많이 쓰이는 find 와 grep 을 합쳐놓은 것입니다. 게다가 검색된 파일을 바로 emacs 상에서 열어서 편집할 수가 있습니다. 

요즘 대부분의 통합개발툴 (IDE) 상에서 지원하는 검색하고 무엇이 다르냐? 라고 물으면 '똑같다. 다른게 없다' 라고 말씀드릴 수 있습니다. 다만 아주 예전부터 지원하는 기능이라서 이 기능 때문에 이맥스( Emacs) 를 20년간 사용하고 있다는 분도 계십니다. 

grep 문법을 그대로 활용되니 찾고자 하는 단어를 정규 표현식으로 찾을 수 있습니다. 

하지만 EmacsW32 를 설치하고 바로 

M-x grep-find 

하고 나면 

  
   M-x grep-find 하면
      grep -r <C> -nH -e . --include=
      /bin/sh: C: No such file or directory
      
      Grep finished with no matches found at 날짜

      또는
      find . -type f -exec grep -nH -e  {} NUL ;
      find: missing argument to `-exec'
      
      Grep finished with no matches found at 날짜

      또는
      find . -type f -print0 | xargs -0 -e grep -nH -e 
      grep: unrecognized option `--color=auto'
      Usage: grep [OPTION]... PATTERN [FILE]...
      Try `grep --help' for more information.
      
      Grep exited abnormally with code 123 at 날짜

이렇게 나오고 안되실 것입니다.  제 경우에는 붉은색으로 나오면서 안 됐습니다. 

그래서 KLDP에서 참조 한 내용을 적어주자면 


2-1 . Emacs 상에서 다음 명령 실행 



      M-x customize-group
      grep




 2-2 .  Grep Highlight Matches 설정 


      Grep Highlight Matches: Value Menu 버튼 누르고 "Not Set"로 변경  state 버튼 누르고 Save for Future Sessions 을 선택해 줍니다.  

2-3 . Grep Find Use Grep R 설정 


      Grep Find Use Grep R: Toggle 버튼 누르고 "off (nil)"로 변경
      state 버튼 누르고 Save for Future Sessions 를 역시 선택해 줍니다. 
      

2-4. DotEmacs (.emacs ) 에서 확인 

  
   (custom-set-variables
      ;; custom-set-variables was added by Custom.
      ;; If you edit it by hand, you could mess it up, so be careful.
      ;; Your init file should contain only one such instance.
      ;; If there is more than one, they won't work right.

      '(grep-find-use-grep-r nil)
      '(grep-highlight-matches nil)
    

의 내용이 추가되어 있는 것을 확인해 줍니다. 

여기까지 하고 테스트 해주면 일단 하위 디렉토리가 없는 경우에서는 제대로 동작합니다. 하지만 하위 디렉토리가 존재하는 경우라면 

      xargs : cannot fork 

에러가 발생하면서 제대로 동작하지 않는 것을 목격합니다. 참고로 저는 MingW 같은것을 설치 안한 순수한 Windows7 환경입니다. 


3. w32shell-shell 설정해 주기 

메뉴상에서 

"Options" -  "Customize EmacsW32" 

를 선택해 줍니다. 그리고 그중에서 w32shell-shell 메뉴를 찾아서 다음 그림과 같이 "Windows cmd.exe" 로 선택해 줍니다. 그리고  "Save for future sessions" 를 클릭해 줍니다. 



자 또 DotEmacs (.emacs) 파일에서 다음과 같이 설정되어 있는지 확인 해 줍니다. 


      (custom-set-variables
      ...  
      '(w32shell-shell (quote cmd))
      ...)



이제 편하게 grep-find (find-grep) 을 사용하시면 됩니다. 



Ubuntu version - 10.04 LTS 루시드 링스(Lucid Lynx)

svn (뿐만 아니라 다른 소스 관리 툴)은 개발자 끼리 협업을 하기 위해서 뿐만 아니라 혼자서 연습 삼아서 개발한다고 해도 꼭 익혀야만 하는 개발자들만의 프로토콜 이라고 볼 수 있습니다.

이글은 우분투에 svn 서버 버젼을 세팅하는 데 관련된 팁입니다. 집에서 혼자 연습하는 경우라 하더라도 소스 레파지토리(Source Repository)를 쓰는 버릇을 들이는 것이 여러모로 좋습니다. 어쩌다가 외부에 나가서 협력하게 되는 경우가 생길 때 태연하게 '그냥 혼자 개발해서 합칠때 zip 으로 압축해서 한명이 합치면 되는 거지 뭘 귀찮게 그런걸 쓰나요? ' 라는 충격적인 질문을 받을 때가 많습니다. 중소기업 대기업을 가리지 않고 말이죠. 

1. 아파치, 서브버젼, 아파치에 연동되는 svn 모듈 설치

sudo apt-get install apache2 libapache2-svn subversion

2. 저장소 생성

sudo mkdir /svn

3. 아파치 관련 설정 파일 번경

sudo emacs /etc/apache2/mods-available/dav_svn.conf

개개인의 취향에 따라서 에디터 는 바뀔 수 있습니다. (emacs -> vim 이나 gedit)

다음에 나오는 것처럼 코멘트 기호를 삭제합니다. 

#<Location /svn>
..
#</Location>

를 

<Location /svn>
..
</Location>


# DAV svn

를 

DAV svn

로 

# SVNPath /var/lib/svn


SVNPath /svn


  
#AuthType Basic
#AuthName "Subversion Repository"
#AuthUserFile /etc/apache2/dav_svn.passwd


  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd


  #<LimitExcept GET PROPFIND OPTIONS REPORT>
    #Require valid-user
  #</LimitExcept> 


  <LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
  </LimitExcept> 


4. 아파치 재시작 (restart)

sudo /etc/init.d/apache2 restart

만약 문제가 생긴다면 3번을 자세히 살펴봐서 틀린 것이 있나 확인합니다. 

5. 프로젝트에 접속할 계정 생성 

3번에서 AuthUserFile 로 지정된 파일에 생성해 줘야 하겠지요? 

sudo htpasswd -c /etc/apache2/dav_svn.passwd crazia
 - 비밀번호 입력 처리

crazia 는 제 아이디 입니다. 본인의 아이디로 바꾸서 만들면 됩니다. 입력을 하면 비밀번호 세팅하는 과정이 나옵니다. 만약 처음으로 저 파일에 계정을 추가하는 것이라면 '-c' 옵션을 쓰는 것이고 다음부터 사람을 추가하는 것이라면 '-m' 으로 옵션을 바꿔서 입력하시면 됩니다. 계정 생성 잘못 했는데 수정하고 싶으면 간단하게 dav_svn.passwd 파일을 삭제하는 것을 추천합니다. 

6. 프로젝트 디렉토리 와 소유권 변경

sudo svnadmin create /svn
sudo chown -R www-data:www-data /svn

svn 은 아파치를 거쳐서 작업하기 때문에 svn 프로젝트가 저장되는 공간을 www-data 계정의 소유로 바꾸는 작업입니다. 

7. 테스트 

예전에 포스트에서 만들었던 echo-server (클릭) 을 올려보기로 하지요. echo-server 가 저장된 곳이 '~/work/echo-server' 라고 가정하면 

cd ~/work
svn import ./echo-server http://localhost/svn/echo-server -m "create echo-server repository" 

그리고 브라우져에서 

http://localhost/svn/echo-server 

로 가서 제대로 올라갔는지 확인하세요. 





 

+ Recent posts