�빫�� ����� ���

Windows 에서 Clojure Web 개발 환경설정(leiningen, Compojure, Eclipse REPL)


일하다가 지루해져서(화장실에 책 들고 볼일보다가..) Clojure 책을 구경하고 있었습니다.(열심히 읽은게 아니라 말 그대로 구경) 생각해보니깐, 프로그래밍 언어를 익히는 데 가장 좋은 방법은 프로그램을 계속 만드는 것인데, 요새 제 일도 그렇고 해서 웹으로 만들어야겠다 하는 생각이 들더군요. Programming Clojure 책 후반부에 Compojure 라이브러리가 딱 1챕터 나옵니다. 그런데 버전이 올라가면서 조금씩 바뀌었나보군요. 환경설정하는데 한참 걸렸습니다. ~_~

준비물은 eclipse 3.4 이상, J2SDK 1.6 이상입니다.

1. counterclockwise 설치하기
쉬워요. counterclockwise 홈페이지에서 플러그인을 이클립스에 복사해 넣으면 땡입니다. 설치하고 나면 이클립스에 클로져 지원이 생기죠.

이클립스에서 클로져 지원


이렇게 말이죠

2. leiningen 설치
leiningen은 클로져 프로젝트 도구입니다. 프로젝트를 생성하고, 의존성을 관리하고, 빌드 등을 지원하는 툴이죠.(아겔님 블로그 참조)

    설치방법

  • github의 leiningen 저장소에 보면 릴리즈된 leiningen 패키지를 찾을 수 있습니다.(요즘은 1.3.0이군요.) 다운로드 받아서 적당한 위치에 옮겨넣습니다.(전 d:\src\leiningen 에 넣었습니다.)
  • 그리고 실행 스크립트인 lein.bat 파일을 leiningen의 readme 페이지에서 찾을 수 있습니다. installation 부분에 있어요. 그것도 leiningen.jar 디렉토리에 같이 넣어둡니다. 필요하시면 path를 걸어두시는 것도 좋죠.
  • 나중에 보니깐 lein.bat나 lein.sh 만 있으면 self-install 명령으로 설치가 가능한거였더군요. -_-;; leiningen jar를 다운받지 않아도 그냥 “lein self-install” 명령으로 알아서 다운받네요. 흠흠
  • 전 처음에 lein.sh만 있는 줄 알고 그거 보고 스크립트를 윈도우용으로 작성해야겠구나 싶어서 스크립트 코드를 한참동안 읽었더랬습니다. readme 파일도 읽어봐야겠다 생각이 들어서 읽다가 발견한 lein.bat.. 하.. 참. ~_~

3. leiningen만 있으면 사실 거의 다 된겁니다. 프로젝트를 생성하고 이클립스 연동을 해 보죠.

lein new hello-www

이렇게 하면 leiningen 디렉토리 하위에 hello-www 디렉토리와 프로젝트를 위한 스켈레톤이 생성됩니다. 이클립스에서 편하게 Compojure 개발을 하려면 몇가지 더 추가하여야 합니다. hello-www 디렉토리를 보면 project.clj 파일이 있습니다. 에디터 등으로 열어서 다음과 같이 바꿔줍니다.

1
2
3
4
5
6
7
(defproject hello-www "0.0.1-SNAPSHOT"
  :description "FIXME: write"
  :dependencies [[org.clojure/clojure "1.2.0"]
                   [org.clojure/clojure-contrib "1.2.0"]
                   [compojure "0.4.0"]
                   [ring/ring-jetty-adapter "0.2.3"]
                   [lein-eclipse "1.0.0"]])

compojure 지원, jetty 지원, eclipse 지원을 추가한거죠.(아겔님 블로그 참조, lein-eclipse 홈페이지 참조) 그 다음에 해당 프로젝트 디렉토리에서 “lein deps” 명령을 사용합니다.

cd hello-www
..\lein.bat deps

그러면 “Copying 15 files to D:\src\lein\hello-www\lib” 와 같이 파일 몇 개를 복사했다고 알려줍니다. 필요한 jar 등을 가져온거죠.(다운로드 받을 수도 있습니다. 복사할 파일이 없으면 말이죠. 그리고 빌드 한번 해봐야죠.

..\lein.bat install

빌드는 maven을 이용하는 것 같습니다. pom.xml을 생성하거든요.(아직 정확히는 모르겠다는.. -_-;;)

Created D:\src\lein\hello-www/hello-www-0.0.1-SNAPSHOT.jar
Wrote pom.xml
[INFO] Installing D:\src\lein\hello-www\hello-www-0.0.1-SNAPSHOT.jar to C:\Docum
ents and Settings\LG\.m2\repository\hello-www\hello-www\0.0.1-SNAPSHOT\hello-www
-0.0.1-SNAPSHOT.jar

이렇게 말이죠.
이번엔 이클립스 지원을 추가해야죠.

..\lein eclipse

.classpath 파일과 .project 파일이 생성됩니다. 그럼 이클립스에서 import 하면 되죠. import->Existing Projects into Workspace 선택한 후 생성된 프로젝트(d:\src\leiningen\hello-www)를 선택하면 됩니다.

4. 생성된 프로젝트에 클로져 지원을 추가해줍니다.(프로젝트 오른쪽 클릭 -> “enable/disable clojure language support”) 그러면 Run As 메뉴에 “New Clojure project’s JVM, with a REPL”이 추가되어 있어요. 이제 이클립스에서 REPL을 사용할 수 있게 됬습니다.

5. 한번 코드를 동작시켜봐야죠? src/hello-www/core.clj 파일을 다음과 같이 수정하시거나 REPL에 바로 작성하셔도 됩니다.

1
2
3
4
5
6
7
8
9
10
(ns hello-www.core
  (:use compojure.core
        ring.adapter.jetty)
  (:require [compojure.route :as route]))
 
(defroutes example
  (GET "/" [] "<h1>Hello World Wide Web!</h1>")
  (route/not-found "Page not found"))
 
(run-jetty example {:port 8080})

요러면 http://localhost:8080 에서 “Hello World Wide Web!” 라는 글자를 볼 수 있을 겁니다.

6. 클로져 코딩하며 놀기~~

저 스스로도 잊어버리지 않으려고 적어놨습니다만… 썩 간단하지가 않군요. -_-

IT 자원활동 네트워크 이야기


사회봉사 또는 자원봉사에 대한 경험을 갖고 있는 분들이 많을 겁니다. 저 또한 대학시절 몇 번 참여한 적이 있었고, 정기적으로 기부금도 납부도 아주 쪼~끔 하고 있고요. 과거에 비해서 자원봉사가 좀 더 활성화된 사회가 되어가는 것 같습니다.

예전에 에자일 이야기 블로그에서 IT 자원봉사자 네트워크 글을 보고 저도 한번 해봐야겠다 하는 생각을 가졌었습니다. 작년이었던 것 같군요. 그 때는 그냥 생각만이어서 그런지 개설된 뉴스그룹에 가입만 하고 별 일없이 지나갔었죠. 그러다가 열성적인 지각생님에게 자극되어 자원봉사를 시작하게 되었습니다.

자원봉사라는 것이 여러가지가 있겠지만 IT부분은 조금 더 특이한 점이 있습니다. 잘 아는 사람(프로그래머 등등)에게는 정말 별일 아니지만 일반인들은 전혀 손 댈 수도 없는 문제들이 산적해 있다는 것이죠. IT 자원봉사라는 것도 딱 그 취지 입니다. 예를 들면 PC에 윈도우 재설치나 공유 네트웍 설정 등과 같은 것들이죠. 아는 사람에게는 정말 쉬운 것들인데 모르는 사람들이 해당 문제에 직면하면 거대한 산이 되어버리는 것입니다. 좀 더 전문적인 지식과 기술이 필요한 문제들도 있지요. 뭐 하나하나 풀어가면 서로서로 좋은 세상이 되지 않을까 합니다.

자원봉사라는 것이 그런 것 같습니다. 남을 돕는 다는 것은 그 사람에게 좋은 것도 있겠지만, 결국은 도와주는 본인을 행복하게 하는 것 같습니다. 본인이 즐겁지 않다면 애시당초 봉사라는 것이 성립되지 않겠지요.

전문적인 지식과 실력을 갖추지 않아도 자원봉사는 가능하답니다. 관심이 있으신 분들은 구글 메일링 리스트인 http://groups.google.com/group/itvnetwork?hl=ko를 찾아보세요. 이 그룹에서 활동하는 분들이 홈페이지를 개설하여 더 잘해보려는 생각도 있습니다.

P.S 혹시 청주 또는 청주 인근 거주하시는 분이시라면 저와 같이 활동하면 좋겠네요. 제가 지금껏 했던 것은 이 글(클릭!)을 참조해주세요.

이미 핑을 보냈습니다:

Oracle – 파티션(분할) 조회


이 간단한 걸 한참 찾아 해맸네요.. ㅜㅜ

SELECT *
FROM sys.dba_tab_partitions
WHERE table_name = 'TABLE_NAME'