Skip to content

kyuls

Just another WordPress.com site yet

Category Archives: Uncategorized

VirtualBox에서 동적크기 디스크를 사용하고 있는데 크기가 커진후 자동으로 돌아오지 않는다.

용량도 부족하고 해서 줄이는 방법을 찾으니 다음과 같은 글이 검색됨.

원문: Shrink VirtualBox image

나의 경우 Mac OS X 에서 윈도우 XP를 사용하고 있었기 때문에 윈도우에서 sdelete를 다운받고 명령 프롬프트에서 아래와 같이 실행 > sdelete -c -z c:\

윈도우를 종료하고 vdi파일이 있는 곳으로 가서 다음과 같이 실행 $ VBoxManage modifyhd –compact winXp.vdi

나름 간단하다.

….

워드프레스 로고를 패러디한 아이콘. -_-;;

작업 도구는 잉크스케이프를 사용했다.

시작하기

이 글은 compojure 프로젝트 위키에 있는 Getting Started 문서를 번역한 것입니다. 번역상태가 그리 좋진 않습니만 누군가에게 도움이 되면 좋겠네요.

원본 링크는 요기 입니다.

컴포저를 시작하는 가장 간단한 방법은 Leiningen 을 이용하는 것이다. (Leiningen은 대중적인 클로저 빌드툴이다.) 아직 Leiningen이 없다면 설치한다.

Leiningen 을 설치했다면 새로운 클로저 프로젝트를 생성한다.

$ lein new hello-www
$ cd hello-www

이것으로 기본적인 프로젝트의 껍데기를 만든다.(혹은 프로젝트 스켈레톤)

다은으로 프로젝트 폴더에 있는 project.clj 을 열어서 dependency에 컴포저를 추가한다.

(defproject hello-www "1.0.0-SNAPSHOT"
  :description "A Compojure 'Hello World' application"
  :dependencies [[org.clojure/clojure "1.2.0"]
                 [org.clojure/clojure-contrib "1.2.0"]
                 [compojure "0.6.2"]])

이제 어플리케이션을 작성할 준비가 되었다. src/hello_www/core.clj 파일에 다음 코드를 넣어준다.


(ns hello-www.core
  (:use compojure.core)
  (:require [compojure.route :as route]
            [compojure.handler :as handler]))

(defroutes main-routes
  (GET "/" [] "<h1>Hello World Wide Web!</h1>")
  (route/resources "/")
  (route/not-found "Page not found"))

(def app
  (handler/site main-routes))

위 코드는 app이라는 기본적인 Ring 핸들러를 정의한 것이다. 이 예제에서 몇가지 일들이 일어나고 있다. 자 각각 어떤것인지 알아보자.

처음으로 세개의 라우트를 정의한다:

(defroutes main-routes
  (GET "/" [] "<h1>Hello World Wide Web!</h1>")
  (route/resources "/")
  (route/not-found "Page not found"))

컴포저에서 라우트는 cascade down 방식이므로 맨위부터 매치한다.


(GET "/" [] "<h1>Hello World Wide Web!</h1>")

이 식은 요청방식이 “GET”이며 URI가 “/”인 경우만 매치되는 라우팅 함수를 정의한다. 다른경우에는 nil을 리턴하며 시퀀스에 있는 다음 라우트를 단계적으로 요청한다:


(route/resources "/")

이 라우트는 compojure.route 이름공간에 있는 함수에 의해 생성된다. 이것은 요청한 URI 파일을 “resource/public” 디렉토리에 찾는다. 이것은 프로젝트에 CSS 스타일시트나 이미지 같은 정적인 파일들을 포함할 수 있도록 한다. [번역이 매끄럽지 못함]

만약 정적 파일을 찾을 수 없으면 세번째이자 마지막인 다음 라우트를 요청한다:


(route/not-found "Page not found")

쉽게 예상할 수 있는 것처럼 이것은 404 응답을 리턴한다. 이 라우트는 항상 매치된다. 그래서 이전 라우트에서 매치되지 않은 모든 경우에 대해서 Catch-all 라우트처럼 동작한다.

라우트가 정의되면 site함수에 포함된다:

(def app
  (handler/site main-routes))

이것은 일반적으로 사용되는 Ring 미들웨어들을 라우트에 추가한다.  이게 없으면 쿠키나 폼 변수를 다룰 수 없고 세션 작업을 할 수 없다.

이제 핸들러 함수가 정의되었고 돌리기만 하면 된다. 가장쉬운 방법은 project.clj파일에 lein-ring 을 개발 의존관계로 추가하는 것이다:

(defproject hello-www "1.0.0-SNAPSHOT"
  :description "A Compojure 'Hello World' application"
  :dependencies [[org.clojure/clojure "1.2.0"]
                 [org.clojure/clojure-contrib "1.2.0"]
                 [compojure "0.6.2"]]
  :dev-dependencies [[lein-ring "0.4.0"]]
  :ring {:handler hello-www.core/app})

lein-ring 플러그인은 :ring 키로 설정한다. 메인 링핸들러 위치를 적어 주었다.

이제 의존관계를 다운로드하고 Leiningen으로 개발 서버를 돌릴 수 있다:

$ lein deps
$ lein ring server

개발서버는 열려있는 포트를 찾고 브라우저 창을 연다.  만약 아무 소스파일이나  고치면 자동으로 갱신된다.

태그:, ,

제목이 장황하게 되었네요.

일반적으로 그래픽 프로그램하면 포토샵이나 일러스트레이터가 떠오릅니다. 그리고 페인터 같은 프로그램이 있죠.

이런 프로그램들이 확실히 기능이나 성능이 참 좋아요. 하지만 유료이다 보니 밥벌이용으로 쓰는게 아니라면 부담되는게 사실이죠. 물론 과자버전을 사용할 수 있지만 코드짜서 먹고사는 입장이다보니 점점 꺼려지더군요. 일에도 가끔 써야되구요.

게다가 주로 사용하는 운영체제가 맥과 리눅스라서 크로스 플랫폼인 프로그램이 좋더군요. (윈도우는 가끔 사용합니다. 어쩔 수 없는 경우에만…)

그래서 찾아봤습니다. 크로스 플랫폼이면서 오픈소스인 프로그램을요.^^

(아.. 윈도우에서도 다 돌아갑니다.)

리눅스는 우분투를 쓰고 있는데요, 아래 프로그램은 모두 시냅틱 패키지 매니저로 한방에 설치할 수 있습니다.

 

김프 (Gimp)

http://www.gimp.org/

너무 유명한 프로그램입니다. 그러나 모르는 사람이 더 많습니다.-_-;

리눅스계의 포토샵이라고 할 수 있습니다. 요즘 어도브 제품의 깔삼한 인터페이스에 비하면 왠지 약해 보이지만 상당히 강력합니다. 유투브를 찾아보시면 사람들이 김프로 어떤 결과물을 뽑아내는지 보실 수 있습니다.

 

잉크스케이프 (Inkscape)

http://inkscape.org/

어도브의 일러스트레이터같은 일러스트 프로그램입니다. 저는 김프보다 이걸 많이 쓰게 되더군요. 기능이 아직 일러스트레이터에 비해 적지만 완성도도 높고 쓸만합니다. 한글 튜토리얼도 있어서 금새 따라 배우실 수 있습니다.

 

마이페인트 (MyPaint)

http://mypaint.intilinux.com/

코렐의 페인터와 같은 프로그램입니다. 버전이 아직 0.9밖에 되지 않습니다.

아직 사용경험이 적습니다. ^^;;

 

펜슬 (Pencil)

http://www.pencil-animation.org/

조금 독특한 프로그램입니다. 연필 스켓치와 에니메이션이 조합된 프로그램입니다.

역시 설명은 더 사용하고 나서 하겠습니다.