Monthly Archives: December 2006

윈도우즈에서 OCaml 개발 환경 (tuareg)

예전엔 FreeBSD에서 vi로 작업했었는데, Lisp/Slime 환경에 친숙해지면서 OCaml에서도 비슷한 개발환경을 찾아보게 됐습니다. Emacs외에도 몇가지 통합개발환경이 있지만 저는 Emacs 위에서 돌아가는 tuareg mode를 받아서 설치했습니다. 저는 로컬 윈도우즈에서 Emacs를 사용하지만 유닉스에서도 동일하게 사용할수 있습니다. OCaml은 mingw 기반의 설치파일을 받아서 설치했습니다.

tuareg는 tuareg-mode-1.46.1.zip를 받아서 Emacs의 site-lisp에 압축을 풀었습니다. 그리고는 다음을 .emacs 파일에 추가해주었습니다.

[CODE type=lisp](add-to-list ‘load-path “c:/Progra~1/emacs/site-lisp/tuareg-mode-1.46.1”)
(setq auto-mode-alist (cons ‘(“\\.ml\\w?” . tuareg-mode) auto-mode-alist))
(autoload ‘tuareg-mode “tuareg” “Major mode for editing Caml code” t)
(autoload ‘camldebug “camldebug” “Run the Caml debugger” t)

(defvar tuareg-interactive-program “c:/Progra~1/Object~1/bin/ocaml”)
(defvar tuareg-library-path “c:/Program Files/Objective Caml/lib”)
[/HTML][/CODE]
tuareg-interactive-program 지정할때  Program Files와 Objective Caml등으로 넣으면 OCaml 실행이 안되더군요.. 위 사항을 적용하면 ml이나 mli 파일을 읽을때 tuareg-mode로 자동으로 넘어갑니다.

키는 Lisp/Slime과 많이 유사하지만, Slime보다는 제공하는것이 적네요. C는 Ctrl, M은 Alt(Meta)키 입니다.

  • C-x C-e, C-c C-e, C-M-x : 세가지 키조합 모두 현재 expression을 실행합니다. OCaml이 실행중이 아니면 실행합니다.
  • C-c C-b : 현재 버퍼(파일)을 실행합니다.
  • C-c C-c : make를 실행하는데 프로젝트에 맞는 Makefile이 있어야합니다.
  • C-M-p, C-M-n : (toplevel) expression 위아래로 이동.
  • C-c C-a : ml과 mli 사이를 왔다갔다 합니다. 아주 유용한 기능이네요.

또 Emacs메뉴에 Tuareg에 보면 여러가지 기능이 제공됩니다. Definition-Scan을 선택하면 현재 파일에서 모든 정의(type & value)를 정리해서 메뉴에 보여줍니다. 또 C-c . 으로 시작하는 명령들이 있는데, 많이 사용하는 구절들을 빠르게 입력할수 있게 도와줍니다. 한가지 아쉬운점은 completion 기능이 동작하지 않는데, 왜 그런지 아직 파악하지 못했습니다. 메뉴에 보면 관련 항목이 있는데, 활성화 되어있지 않습니다. 또한 키도 할당되어 있지 않습니다. 소스를 보면 C-c TAB( (define-key map [?\C-c ?\t] ‘tuareg-complete) 로 할당되어 있는데, 이 키는 Interrupt Caml Toplevel로 할당되어 보이고, M-x tuareg-complete로 호출해도 “Symbol’s function definition is void: caml-complete”라는 메시지만 출력됩니다.

좀더 연구 해봐야겠습니다…

XP에서 ClearType 폰트 사용.

ClearType폰트가 정확히 뭔지 몰랐었는데, 회사에서 만든 프로그램이 IE7에서 문제가 있다고 해서 설치해봤습니다. IE7에 대해서 안좋은 말을 많이 들었지만, 인터페이스 깔끔하고, 무겁지도 않고 첫 느낌은 좋네요. 그리고 설치하면서 폰트가 ClearType으로 바뀌었는데 영문 폰트가 많이 예뻐졌네요.

ClearType은 PDA에서 Acrobat Reader나 CHMReader에서 사용해보긴했었는데 어떤 원리인지 몰랐었습니다. 요즘은 궁금증이 생기면 항상 위키피디아에 가봅니다. 네이버도 가끔 가지만 설명이 그렇게 정돈되어있진않죠. 하여튼 내용을 보니 LCD 화면의 특성을 이용해서 사람의 눈에 가독성이 좀더 좋게 하는 기술이네요. LCD의 픽셀 하나가 일반적으로 RGB의 세개의 긴 세로 픽셀로 구성되어 있다고 하는데 글자를 출력할때 픽셀단위가 아니라 이렇게 세개로 나눠진 서브픽셀 단위로 화면에 그려준다고 합니다. 색은 정확히 출력되지 않지만, 사람 눈에는 더 자연스럽게 보인다고 하네요. 제 느낌도 확실히 부드럽게 보이네요.

XP에서 이 페이지로 가면 IE7과는 별개로 ClearType 폰트를 사용할수 있도록 변경할수 있습니다. XP에는 아쉽게도 한글 ClearType은 포함되어 있지 않으며, Vista에서는 한글 ClearType 폰트도 포함되어 있다고합니다. 또한, XP에서는 pivot한 상태의 LCD 모니터를 지원하지 않는다고 합니다. (피봇한 상태에서는 가로로 서브픽셀이 구성되므로 그리는 방법이 달라지겠죠.) PocketPC(PDA)와 Vista에서는 pivot을 지원한다고 하네요.

얼마전에 IDC에서 Linux를 설치했었는데 폰트가 영 아니여서 이상하다 했었는데 그게 ClearType 폰트였나봅니다. CRT 모니터에서는 어색해 보이더군요. freetype에서 지원하나봅니다.

BitTorrent에서 μTorrent 인수 했다고 하네요.

좀 의외의 소식인데, BitTorrent Inc.에서 μTorrent를 인수했다고 하네요. BitTorrent가 python으로 되어 있어서 리소스를 많이 차지하고, 하나의 클라이언트당 하나의 파일묶음 밖에 지원이 안됩니다. 그래서, 다른  여러 bittorrent 클라이언트를 깔아보고 정착한게 μTorrent입니다. 리소스도 적게 먹고 꼭 필요한 기능은 다 들어있어서 요즘도 잘 사용하고 있습니다.

μTorrent에서 앞쪽에 μ는 “뮤”로 읽거나 마이크로 정도로 읽어주면 될듯하고, 이름처럼 정말 가볐습니다. 1명의 개발자가 개발한 프로그램인데 아쉽게도 소스는 공개하지 않았습니다. 하지만 사용자 커뮤니티로부터의 의견을 열심히 들어서 지속적으로 좋아지고 있는것 같네요.

근데 왜 BitTorrent에서 μTorrent를 인수했는지 의문이 드네요. 가볍게 돌아가고, 잘 짜여진 소스가 탐난건지 사용자 커뮤니티를 노린건지… python이 embedded 장비에는 적합하지 않아서라는 생각도 드네요. 아마도  μTorrent는 C나 C++로 되어있겠죠. 하여튼 slashdot 댓글들을 보면 걱정하는 목소리가 많군요. BitTorrent가 RIAA나 MPAA 말을 어느정도 들어주기 때문에, μTorrent에 불법적인 자료를 필터링하는 기술이 들어갈거라는 얘기들이 있습니다.

저는 μTorrent 소스가 공개될지가 궁금하네요…