GuestOS 가 우분투 (Linux) 고 HostOS 가 윈도 계열인 경우에 공유 폴더를 설정하는 방법입니다. 제가 있는 곳에서 화면 캡쳐 기능이 안되는 관계로 글로만 설명을 드리겠습니다.

1. 게스트 확장을 설치한다

2. 가상OS 선택하고 '설정' 을 선택합니다.

3. '공유 폴더' 탭을 설정합니다.

   오른쪽에 추가 버튼을 누르고 '폴더 경로'를 '기타'로 해서 공유해줄 폴더를 지정해 줍니다. 그리고 폴더 이름을 외우기 편한 이름으로 바꿉니다. 전 다운로드 폴더를 지정하고 이름을 'downloads' 로 지정해줬습니다. (변경했습니다)

4. 게스트OS 로 들어갑니다. (우분투겠지요?)

5. 터미널 프로그램을 실행시킨후에

EDITED: 2013-07-01 

참조: https://help.ubuntu.com/community/VirtualBox/SharedFolders

mkdir share
sudo mount -t vboxsf -o uid=$UID,gid=$GID share ~/host



downloads <-- 호스트에서 지정해준 공유폴더 (3. 에서 지정한 폴더임)
share 는 호스트와 연결될 게스트의 디렉토리임
$UID 는 자신의 아이디 
$GID 는 자신의 그룹 아이디 입니다. 

share 라고 지정해준 디렉토리에 가보시면 호스트OS 에서 지정해준 폴더의 내용이 보이는 것을 확인하실 수 있습니다.



 Emacs 와 JDEE 와 Maven 과의 결합의 마지막을 해결했습니다. 그 전의 세팅을 보시고 싶으시면 


    2 번까지 끝을 내고 나니 Emacs 내에서 maven 컴파일과 빌드를 하고 싶더군요. (당장은 mvn install 만 되게) 딱히 다른 사람들이 만든 것은 내 필요에 부합하지 않은 것 같기도 하고 지원도 더 이상 하지 않는 것 같기에 직접 만들게 됐습니다. jdee 프로젝트 안에 있는 jde-make 를 변경했습니다. 간단하게 되더군요. 적당한 곳 (~/.emacs.d 안에)에 jde-mvn.el 을 복사하시고 .emacs 안에서 

(require 'jde-mvn)


 을 해주시면 됩니다. 그리고 세부 설정을 위해서 


(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.
 '(ecb-options-version "2.40")
 '(jde-build-function (quote jde-mvn))
 '(jde-global-classpath (quote 
     ("/Users//work/android/\
      sdk/platforms/android-17/android.jar" 
      "/Users//.emacs.d/\
      jdee/build/classes")))
 '(jde-mvn-enable-find t)
 '(js2-auto-indent-p t)
 '(js2-cleanup-whitespace t)
 '(js2-enter-indents-newline t)
 '(js2-global-externs (quote ("$" "Ext")))
 '(js2-mirror-mode nil)
 '(slime-complete-symbol-function 
   (quote slime-fuzzy-complete-symbol))
 '(tab-width 2))
(custom-set-faces
 ;; custom-set-faces 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.
 )


 와 같이 jde 설정을 해주시면 완료입니다. 

 필요한 파일은 https://github.com/crazia/jdee-mvn 에 올려두었습니다.
   저번에 올린 Emacs 와 JDEE 를 가지고 안드로이드를 개발하는 방법에 대해서 글을 올렸습니다. 그런데 최근 화두는 어떻게 하면 Mavenpom.xml 을 이용해서 JDEE 의 개발환경에 접목을 시킬까 하는 것이였습니다. 아.. 진짜 힘들었습니다. 그래도 몇가지 테스트와 노력을 끝으로 드디어 성공했습니다. 

참고한 사이트입니다. 


여기에서 근본적인 pom-parser.el 을 다운 받을 수 있었습니다. 그런데 제대로 동작을 하지 않더군요. 이유는 maven 의 실행 옵션들이 변해서 그렇답니다. 


위 사이트를 참조하시면 어떻게 변경해야 하는지 알 수가 있습니다. 위 까지만 적용하면 다 될 줄 알았는데 제가 기본적으로 jde-global-classpath 에 넣어둔 것이 사라지면서 에러가 발생하더군요. 그래서 기존에 있는 클래스 패스를 포함하는 버젼으로 수정했습니다. 
    올려둔 파일을 다운 받으시고 ~/.emacs.d/ 에 복사하시고 maven 프로젝트가 있는 곳 (정확히는 pom.xml 파일이 있는 곳)에 다음과 같은 파일 prj.el 을 만들어 주시면 됩니다. 


(jde-project-file-version "1.0")
(jde-set-variables
'(jde-compile-option-command-line-args
(quote ("-Xlint:all" "-Xlint:-serial"))))
(require 'pom-parser)
  (with-pom ()
  (pom-set-jde-variables *pom-node*))


프로그래머들이 너무 많은 고민을 할 필요가 없다. 그대 앞에는 키보드가 놓여 있지 않은가? 

- 누군가의 말 - 


누가 했는지 기억이 안나지만 제가 가끔 인용하곤 하는 말입니다. 너무 기술 문서를 보다 보면 '내가 지금 뭐하고 있나' 라는 생각이 들 때가 있는데 그때마다 이 말을 기억하고 바로 뭔가를 만들어 볼려고 노력하게 됩니다. 

어쨌건 키보드를 잡으면 어지간하면 졸음이 달아나기 때문이지요 ㅎㅎ

 
MySQL 이 오라클 손에 넘어가고 부터 걱정한 사람들이 많았는데 MySQL 을 개발했던 담당자들도 걱정이 많았나 봅니다. MySQL 이 5.5.30 부터 변화가 없던 것을 우려해서 만들었다고 하는데요. (결국 그 우려는 현실로 드러났지요 http://goo.gl/a7AOs )

그것은 바로 마리아디비  (https://mariadb.org/ )입니다.  MySQL 하고 현재 100% 호환이라고 합니다. 즉 MySQL 서버대신 마리아디비로 바꿔버려도 그대로 동작한다고 합니다. (심지어 인스토 파일 이름도 install_mysql 어쩌구 입니다 ㅎㅎ) 

오라클이 하는 짓이 짜증나신다면 한번쯤 생각해볼만한 대안이라고 볼 수 있습니다.
 

MySQL 5.5.31 버젼에서 라이센스 변화가 아무도 모르게(?) 살짝 진행됐나 보네요. 

기존 MAN Page

This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.

바뀐 Man Page

This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited.

음.. 이제 대세는 PostgreSQL 이 될려나요? 

만약 이게 의도적이라면, 오라클은 기존의 FSF 재단이 운영하던 MySQL 의 모든 소스를 훔친거나 다름 없습니다. MySQL 은 거기에 고용된 개발자 뿐만 아니라 오픈소스 프로젝트로 참여하고 있던 사람들의 소스도 포함됐기 때문입니다. 

참조 블로그: https://blog.mariadb.org/mysql-man-pages-silently-relicensed-away-from-gpl/
우분투 13.04 버젼을 설치하고 나니 기존에 12.xx 버젼에서 발생했던 문제가 그대로 있더군요. 기존의 문제는 xrdp 를 설치하고 외부에서 원격 데스크탑 (Remote Desktop)을 이용해서 접속해서 작업을 할 때 

'd' 키를 누르면 모든 화면이 태스크바로 사라지면서 바탕화면이 나오는 문제 입니다.  



 이거 때문에 작업이 힘듭니다. ( cd , sudo 등 d 자 들어가는 유닉스 명령이 얼마나 많습니까? ㅎㅎ) 해결 방법을 찾아내서 정리해서 올립니다. 

1. ccsm ( compizconfig-settings-manager ) 을 설치해 줍니다.
 

$ sudo apt-get install  compizconfig-settings-manager



2. ccsm 을 실행시켜 줍니다.
 

$ ccsm



3. 왼쪽 탭에 '일반 (General)' 을 선택하시고 그 후 오른쪽 패널의 '일반 설정정 (General Options)' 를 클릭합니다.

4. '키 바로가기 (Key bindings)'  를 클릭하면 나오는 그럴듯한 메뉴를 골라줍니다. '바탕화면 보기 (Show Desktop)' 제 경우에는 이녀석이더군요.

5. 그림에 있는 연필 비슷하게 생긴것을 클릭해 주면 '<Control><Super>d' 가 나오는 것을 찾아서 설정을 지워주면 됩니다.  


 
예전 포스트 에서 해결하는 방법을 올렸지만 unity-2d 랑 gnome-classic 등이 동작 안하는 현상이 13.04에서 발견됐습니다. 새로운 방법을 올리겠습니다. 

1. 기존에 쓰여져 있던 .xsession 을 지웁니다. (만약 존재한다면)  

2. 다음과 같이 차례로 입력합니다.

sudo apt-get install gnome-session-fallback
$ echo "gnome-session --session=gnome-fallback" > .xsession
$ sudo /etc/init.d/xrdp restart 



unity-2d 가 gnome-fallback 으로 바꼈다는 소리를 들었습니다. (카더라 통신입니다만..)
 
제가 최근에 읽었던 프로그래머들의 특징에 관한 글중에서 공감이 갔던 구절이 하나 있습니다. 

"프로그래머는 UX (User eXperience)를 개발한다고 해도 자신이 좋아하는 환경은 CLI (Command Line Interface)다" 


 다시금 진행하기전에 다짐하듯이 말씀드리는 사항은 안드로이드 (Android) 개발하기에 최적의 환경은 Google 에서 제공하는 ADT (http://developer.android.com/intl/ko/sdk/index.html) 환경에서 개발하는 것입니다. 이 포스트는 ADT 에서 개발을 진행하더라도 자꾸 자꾸 눈이 CLI 환경에서 떠나지 않는 중독자(?!!)들을 위한 것입니다. 

 이 포스트는
Emacs Version 24로 업글후 Clojure 와 Common Lisp 개발 환경 갖추기 의 연장선상에 있으며 (Version 24 로 올라간 후 정말 많은 것이 바꼈습니다), Snow Leopard 에서 Emacs 를 Android 개발환경 IDE 로 세팅의 연장선상 이기도 합니다. 그 시절과는 정말 많은 것이 달라졌더군요. 


Android SDK 다운로드 
     
http://developer.android.com/intl/ko/sdk/index.html 에서 'USE AN EXISTING IDE' 라고 되어 있는 부분을 누르시면 SDK 만 받는 부분이 있습니다. 받아서 적당한 곳에 풀어주시면 됩니다. 저는 "~/work/android" 에 풀어줬습니다.
 
     
.profile 에 PATH 추가 

export ANDROID_SDK_HOME=/Users/<자신의 아이디>/work/android/sdk
export PATH=$ANDROID_SDK_HOME/platform-tools:$ANDROID_SDK_HOME/tools:$PATH

     
이 내용을 추가해 줍니다. 이제 어디서건 android 명령과 adb 명령을 사용할 수가 있게 됩니다. 
 
     
android-mode 설치해주기 

$ git clone git://github.com/remvee/android-mode.git


 로 적당한 곳에 받아줍니다. 제 경우에는 "~/.emacs.d/android-mode" 입니다. 그리고 "$ANDROID_SDK_HOME/tools/lib" 에 있는 android.el 을 "~/.emacs.d/android-mode" 에 복사해줍니다. 
 

.emacs 파일에 android-mode 관련 내용 추가 



(add-to-list 'load-path "~/.emacs.d/android-mode") 
(require 'android-mode)
(require 'android)
(setq android-mode-sdk-dir "~/work/android/sdk")


를 추가해줍니다. 각각의 디렉토리는 제 것을 기준으로 했으니 자신의 디렉토리로 바꾸어 주는 작업이 필요할 것입니다. 
 

JDEE (Java Development Environment for Emacs) 설치하기 

JDEE Project Page 에서 받을 수도 있지만 저는 편하게 미러에서 받는 것을 선택했습니다. 
     

$ cd ~/.emacs.d 
$ git clone git://github.com/emacsmirror/jdee.git


 라는 식으로 적당한 곳에 jdee 를 받아줍니다. 그리고 이것을 컴파일 해줘야 하는데 아마 그냥 안 될것입니다. 
 Ant-Contrib 이라는 것이 필요합니다. "여기" 에서 다운 받을 수 있습니다. ant-contrib-1.0b3-bin.tar.gz 를 다운받고 압축을 풀어서 (ant-contrib-1.0b3.jar 파일이 나옴) 위의 디렉토리인 "~/.emacs.d/jdee" 로 복사해줍니다.  

$ emacs ~/.emacs.d/jdee/build.xml 


로 간단한 조작을 해줍니다. 기존 부분을 아래와 같이 변경해 줍니다. (금방 찾을 수 있습니다 !!)

<!-- add in the contribs (add ant-contrib-VERSION.jar) to CLASSPATH -->
<taskdef resource="net/sf/antcontrib/antlib.xml">
  <classpath>
    <pathelement location="/Users/&lt;자신의 아이디&gt;/.emacs.d/jdee/ant-contrib-1.0b3.jar">
  </pathelement></classpath>
</taskdef>


$ cd ~/.emacs.d/jdee
$ ant build 

해 주면 모든것이 컴파일 됩니다. 
 

Elib-1.0 설치하기 

 예전에 링크로 걸어둔 곳에 가봤더니 이제 받는 곳을 찾기가 어려워 졌습니다. 아마 기본적으로 Emacs 에 포함된 것이 아닐까 생각도 해보지만 혹시 모르니 제 디렉토리에 있는 것을 올려둡니다. 

 
첨부파일을 다운 받으시고 
     

$ tar xvzf elib-1.0.tgz 


로 적당한 곳에 풀어주시면 됩니다. 참고로 저는 "~/.emacs.d/elib-1.0" 에 풀어줬습니다. 


JDEE 세팅하기 

 저는 보통 세팅을 나눠서 하는 것을 좋아합니다. 주력하고 있는 프로젝트에 따라서 .emacs 파일을 조금씩 조절하는 것을 즐겨하기 때문에 이번에도 그런식으로 했습니다. 

$ emacs ~/.emacs 

     
로 열어서 맨 아래쪽에 


(require 'cr-jdee)


를 추가해줍니다. 그리고 

$ emacs ~/.emacs.d/cr-jdee.el


로 열어서 다음과 같은 내용을 채워줍니다. 


;;;
;;; jdeee settings 
;;;


(add-to-list 'load-path "~/.emacs.d/elib-1.0")
(add-to-list 'load-path "~/.emacs.d/jdee/build/lisp")

(setq jde-help-remote-file-exists-function '("beanshell"))

(require 'jde)

;;
;; 저장할 때마다 자동으로 import 정리해주기 
;;
(defun java-my-hook ()
  (progn
    (define-key jde-mode-map [(control return)] 'jde-complete)
    (add-hook 'before-save-hook
              (lambda ()
                (jde-import-kill-extra-imports)
                (jde-import-all)
                (jde-import-organize))
              nil t)
    ))

(add-hook 'jde-mode-hook 'java-my-hook)


(custom-set-variables
 `(jde-global-classpath (quote 
    ("/Users/<자신의 아이디>/work/android/sdk/platforms/\
      <자신의 주력 타겟:예로 android-16>/android.jar" 
     "/Users/<자신의 아이디>/.emacs.d/jdee/build/classes"))))

(provide 'cr-jdee)



이렇게 저장해 주면 기본적인 세팅은 끝입니다. 중간에 java-my-hook 함수로 하는건 몇 가지가 있지만 그중에 제일 편리한 기능이 파일 저장할 때 알아서 import 문을 추가해 주는 기능입니다. Eclipse 의 Cmd + Shift + O 누르면 해주는 기능과 비슷합니다. 처음 실행할 때 beanshell 실행하느라 좀 느리긴 하지만 일일이 찾아주는 것보다 얼마나 편합니까? ㅎㅎ 
     

테스트 하기 

프로젝트 만들고 간단하게 빌드 + 테스트는 
예전 포스트 와 Command Line 에서 프로젝트 관리하기 를 참조하시면 됩니다. 이 부분은 추후에 조금 더 보강해서 정리하겠습니다. 

예전 포스트 에서 새로 배우는 가장 좋은 방법에 대해서 이야기 한적이 있습니다. 그 때는 영어로 표현됐지만, 결국 핵심은 

"그 것을 사용할 수밖에 없는 환경으로 자신을 몰아 넣으라는 것"



입니다. 저의 몇가지 경험담을 소개하겠습니다.

첫째. 세벌식

저는 세벌식 390 유저입니다. (세벌식 최종보다는 390이 더 손에 맞더군요). 이걸 95년도부터 사용했으니 꽤 오래 사용했습니다. 물론 이것을 배워서 쓰기전에는 저는 두벌식 유저였습니다. 틈만나면 꾸준히 한메타자로 연습했기 때문에 분당 400타를 넘나들 정도로 빠른 타수를 자랑했습니다. 그러던 어느날 공병호 박사의 세벌식에 관한 글을 읽고 나서 세벌식으로 바꿔야 겠다고 생각했습니다. 제가 한 일은 그냥 집에 있는 모든 자판 환경을 세벌식으로 변경한거였습니다. 두벌식을 쓰고 싶어도 꾹꾹 참았습니다. 레포트를 쓸때도 (제 연령대가 짐작되는 사람들도 계시겠군요 ㅎㅎ) 아무리 타수가 느려도 세벌식으로 작성했습니다. 작성하는 시간이 대폭 늘어 나버렸지만 계속해서 (미련하게) 세벌식으로 작성했습니다. 제일 힘든건 채팅할 때였습니다. 그 때 한창 나우누리나 하이텔에서 채팅이 성행하던 때였는데, 여성 유저가 들어오면 서로 말을 조금이라도 더 할려고 난리가 나던 시절이였습니다. 그럴때 세벌식 자판으로 떠듬 떠듬 거리면서 글을 치는것은 너무나 가혹한 행위였습니다. 짜증난다 하고 두벌식으로 바꾸면 분당 400타가 폭발하듯 글을 만들어 냈을 테니까요 ㅎㅎ. 그래도 참고 참고 했더니 오래 걸리지도 않았습니다. 한달도 안걸려서 분당 600타를 돌파하는 위업을 달성했습니다. 


둘째. 이맥스 (Emacs) 

저는 이맥스 유저 입니다. 이 에디터를 쓴지도 어언 몇년이 지났습니다. 참으로 쓰기 어려운 에디터라고 생각하지만 또 잘 쓰게 되면 이것만큼 편하게 작업을 도와주는 도구가 따로 없다고 할 정도입니다. 원래 클라이언트 (client) 프로그램부터 시작했던 나는 비쥬얼 스튜디오 (Visual Studio)를 잘 사용했습니다. 간단한 텍스트를 적을때는 VS 를 띄워서 사용하곤 하는 이상한 사람이였습니다. 그러다 저를 잘 지도해줄 수 있는 분과 만나서 vi 를 배웠습니다. 다른 세상이 열린것 같았습니다. 그래서 꾸준히 몇년동안 연습을 해서 VI 를 잘 쓰게됐는데, 어느날 후배의 한마디가 저를 바꿨습니다. 

"진짜 고수는 이맥스를 쓴대요 형"

역시 배우는 방법은 동일했습니다. 그날로 gVim 을 지워버렸습니다. (그 당시에는 윈도에서 개발하는 경우가 많았습니다) 그리고 아무리 속도가 느리더라도 이맥스에서 모든 개발을 할려고 노력했습니다. 다 늙어서(?) 날 새는 일이 많아졌습니다. 프로그래밍이 어려워서? 우습게도 에디터가 익숙하지 않아서 그랬습니다. 그냥 눈 딱 감고 vi를 가지고 개발 시작하면 순식간에 개발할 수 있었겠지만 역시 참으면서 이맥스로 느리게 느리게 개발했습니다. 그때 당시에는 효율이 정말 정말 떨어지는 행위였지만, 지금에 와서 생각해 보면 그렇게 했기 때문에 지금처럼 이맥스를 왠만큼 쓸 수 있는게 아닐까 싶습니다. 


셋째. OS 

두번째 사항에서도 쓰여져 있듯이 저는 출발이 윈도우 프로그래밍에서 시작했기 때문에, 윈도 환경이 익숙한 사람이였습니다. 그러던 어느날 리눅스를 잘 쓰고 싶다는 생각이 들더군요. 그래서 그날로 메인 OS를 지우고 우분투를 설치했습니다. 그리고 모든 개발을 리눅스 환경에서 했을뿐만 아니라, 회사에서 몰래 동영상을 볼때도 리눅스에서 동영상 플레이어를 설치하고 보기 시작했습니다. 익숙하지 않으니 정말 힘들었지만, 그 때마다 기능을 찾아가면서 외워가면서 사용했습니다. 얼마 걸리지 않아서 리눅스 환경을 윈도 환경만큼 쓸 수 있게 되더군요. 이 방식은 그대로 Mac OSX 에도 적용됐습니다. 

 

+ Recent posts