보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

개인적으로 저는 자바개발자입니다. 주로 웹개발?을 하고 있습니다. 그러다 보니 IDE는 Eclpise를 주로 사용합니다. Clojure를 공부하다보니 개발환경이 대부분 리눅스에 Emacs 위주로 되어 있는것 같습니다. 물론 새로운 환경을 공부하는게 가장 좋은 방법이겠지만 혹시나 나중에 Clojure를 가지고 프로젝트를 하게 된다면 현재 환경을 이용하는게 좋다는 생각이 들었습니다. 그래서 몇일간의 삽질과 구글링을 통해서 Clojure 코드들을 메이븐을 통해서 자바에서 사용하는 방법을 찾았습니다.

기본 준비물 : JDK설치 Mavne설치 Eclipse설치

Eclipse에 플러그인을 설치합니다.

Help -> Install new software

사용자 삽입 이미지

플러그인 주소 : http://updatesite.counterclockwise.googlecode.com/hg/

설치가 되면 클로저 프로젝트를 만들수가 있습니다.

사용자 삽입 이미지

일단 여기까지 하면 Clojure코딩이 가능합니다.

이제 Clojure의 mavne용인  leiningen을 설치합니다. 
아겔님 블로그를 참고하세요. (http://ageldama.tistory.com/95)
설명도 참고하세요 (http://ageldama.tistory.com/94)

설치후 콘솔창에서 lein new 프로젝트명 으로 프로젝트를 생성합니다. 기본적인 프로젝트 구조가 생성됩니다. 생성된 폴더에 가보면 project.clj 파일이 있습니다. 이 파일은 Maven의 pom.xml의 역활을 하는 파일입니다. xml대신 Clojure 코드로 작성하게 되어 있습니다.
자동 생성된 파일은

(defproject view "1.0.0-SNAPSHOT"
  :description "FIXME: write"
  :dependencies [[org.clojure/clojure "1.2.0"]
                   [org.clojure/clojure-contrib "1.2.0"]])


이렇게 되어 있습니다. 여기에 eclipse에서 쓰기위한 디펜던시를 추가합니다Eclipse를 지원하기 위한 디펜던시를 추가했습니다.

(defproject view "1.0.0-SNAPSHOT"
  :description "FIXME: write"
  :dependencies [[org.clojure/clojure "1.2.0"]
                   [org.clojure/clojure-contrib "1.2.0"]
                   [lein-eclipse "1.0.0"]])                  

install을 합니다.
명령어

lein install

결과

Copying 3 files to D:\clojure\workspace-eclipse\view\lib
Created D:\clojure\workspace-eclipse\view/view-1.0.0-SNAPSHOT.jar
Wrote pom.xml
[INFO] Installing D:\clojure\workspace-eclipse\view\view-1.0.0-SNAPSHOT.jar to D:\clojure\repository\view\view\1.0.0-SNAPSHOT\view-1.0.0-SNAPSHOT.jar

이클립스에서 사용하기위해서 .classpath 와 .project를 작성합니다.
명령어

lein eclipse

결과

Created .classpath
Created .project

이 작업까지하면 이클립스에 프로젝트를 import할 수있습니다.
생성된 pom.xml


<?xml version="1.0" encoding="UTF-8"?>
<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>view</groupId>
  <artifactId>view</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <name>view</name>
  <description>FIXME: write</description>
  <build>
    <sourceDirectory>src</sourceDirectory>
    <testSourceDirectory>test</testSourceDirectory>
    <resources>
      <resource>
        <directory>resources</directory>
      </resource>
    </resources>
    <testResources>
      <testResource>
        <directory>test-resources</directory>
      </testResource>
    </testResources>
  </build>
  <repositories>
    <repository>
      <id>central</id>
      <url>http://repo1.maven.org/maven2</url>
    </repository>
    <repository>
      <id>clojure</id>
      <url>http://build.clojure.org/releases</url>
    </repository>
    <repository>
      <id>clojure-snapshots</id>
      <url>http://build.clojure.org/snapshots</url>
    </repository>
    <repository>
      <id>clojars</id>
      <url>http://clojars.org/repo/</url>
    </repository>
  </repositories>
  <dependencies>
    <dependency>
      <groupId>org.clojure</groupId>
      <artifactId>clojure</artifactId>
      <version>1.2.0</version>
    </dependency>
    <dependency>
      <groupId>org.clojure</groupId>
      <artifactId>clojure-contrib</artifactId>
      <version>1.2.0</version>
    </dependency>
    <dependency>
      <groupId>lein-eclipse</groupId>
      <artifactId>lein-eclipse</artifactId>
      <version>1.0.0</version>
    </dependency>
  </dependencies>
</project>
<!-- This file was autogenerated by the Leiningen build tool.
  Please do not edit it directly; instead edit project.clj and regenerate it.
  It should not be considered canonical data. For more information see
  http://github.com/technomancy/leiningen -->


처음에 여기서 삽질한것은 Clojure 코드가 컴파일 안되는 경우였습니다. 이것을 해결하기 위해서 찾은것이 Maven Clojure plugin입니다.(붉은 부분은 변경될 부분)
참고사이트 : http://github.com/talios/clojure-maven-plugin


pom.xml에 플러그인을 추가합니다. 위의 빨간색 부분을 다음과 같이 변경합니다.

<build>
   <plugins>
    <plugin>
     <groupId>com.theoryinpractise</groupId>
     <artifactId>clojure-maven-plugin</artifactId>
     <version>1.3.4</version>
     <extensions>true</extensions>
     <configuration>
      <sourceDirectories>
       <sourceDirectory>src</sourceDirectory>
      </sourceDirectories>
      <testSourceDirectories>
       <testSourceDirectory>test</testSourceDirectory>
      </testSourceDirectories>
     </configuration>
    </plugin>
   </plugins>
  </build>


이렇게 되면 Maven Clojure plugin이 추가 됩니다. 여기서 또한가지 삽질한것은 아무리 install을 해도 클로저 코드를 컴파일 안하는 문제입니다. 문제의 해결책은 바로 플러그인을 이용하여 컴파일후 인스톨 하는것이죠. 명령어 mvn clean clojure:compile install 이렇게 하면 클래스를 작성하는 Clojure코드에 대한 class파일을 작성합니다. 이후에 이 클로저 프로젝트를 Maven프로젝트에서 디펜던시를 걸어 사용하면 Clojure로 만든 클래스 파일을 사용할수있습니다. 
3일간의 삽질에 대하여 정리 합니다.
정리하는게 더 힘들군요;


신고
Posted by 키젤

펌글 입니다.

//----
저는 올해로 만 9년차 개발자입니다.

지금까지 몸담아 온 회사만 대략 5군데 정도 되는거 같습니다.

그중엔 이름을 대면 알만한 회사 몇군데와 이름모르는 벤처도 거쳤었습니다.


SI, SM, 솔루션, 서비스 등등 몇차례씩 거치면서 경험한 내용을 필두로 본 글을 적습니다.

또한, 이 땅의 IT를 이렇게 만들어 놓은 선배입장의 한사람으로서 최근 화두가 되었던,

그리고 지금도 씁쓸함을 공유하는 IT개발자의 현실에 대해 통감하며, 본글을

제가 IT의 개발자로서 사는 동안은 계속해서 정제하여, 모두의 동감을 얻어보고자 작성합니다.

 

------- 이것이 상식에 의거하는 IT 개발자의 생활입니다. --------

1. 프로젝트가 떨어졌다. 프로젝트는 콜센터 상담원용, 그리고 관리자용 어플리케이션이며,

   녹취서버와 CTI 서버, 그리고 교환기와 연동해야 한다.

   녹취서버로부터 녹취를 하되. 통화마다 파일이 생성되야하고, 추후 파일을 들을수 있어야 한다. ( WEB 에서 )

   CTI 서버로 부터 상담원으로부터 콜이 인입되게되면, 인입된 전화번호를 근거로 디비로부터 고객테이블을 검색하게되고

   자동으로 데이터를 상담원에게 보여줄수 있어야 한다.

   교환기로부터 생성된 로그를 통하여 통계수치를 산정하여, 관리자 어플리케이션에서 보여줄수 있어야 하며

   CTI 서버의 전략을 관리자가 손쉽게 변경할수 있는 인터페이스가 필요하다.

   본 프로젝트의 디비는 삼X화재의 디비고, 이 디비를 일배치 작업으로 현X해상으로 넣어줘야 한다.

 

2. 이 프로젝트를 기한 2개월을 줬다. 인원은 나까지 3명이다. SE한명 개발자 2명이다.

   우리 PM은 할수있지?를 연발하며 조기퇴근했다. 난 PM에게 이메일을 보낸다.

   각 프로세스별로 일정을 꾸며서 도저히 안되며 기본적인 개발기간 5개월 QA 및 안정화 기간 포함 1개월을 더 달라고 했다.

   PM이 다음날 얼굴이 벌게져서 올라왔다. 첫마디가 " 미친거 아냐? "였다.

   딱 한마디 했다 " 모든 내용은 이메일로 하도록 하겠습니다 "

   그래서 메일이 왔다. 내가 보낸 프로세스를 전부 1/3 씩 줄였다. 이렇게 하라는 것이다.

   그래서 다시 메일을 보냈다. 1/3 씩 줄여서 하루 업무시간 9시간을 근거로 다시 스케쥴링을 해달라고 했다.


3. 다시 PM이 얼굴이 벌게져서 올라왔다. " 알긴아는데... 이건 꼭 해야 하는것이니, 고생스럽더라도 해달라 "였다.

   난 다시 말했다 " 모든 내용은 이메일을 통하여 통보하십시오" PM이 잡설이 늘어지며 설득하려 했으나,

   난 다시 이메일을 보냈다. " 주신 메일을 검토하였으나, 업무시간에 마춰서도 도저히 맞추지 못할 내용이니

   재 검토를 바란다 "라는 내용이었다.

   그러더니 개인 메일로 내용이 왔다. " 계속 이따위로 하면 짤릴수도 있으니 알아서 기어라 "라는 내용이었다.

   훗...그냥 웃어줬다.


4. 난 그날부터 내 6개월짜리 스케쥴에 맞춰서 근무를 하기 시작했고 이 내용을 취합하여 고객과 PM 그리고 영업이사,

   운영이사, 사장님께 보냈다. 추신을 붙였다 " 일이 너무 과중하오니, 추가 인원을 주시거나, 프로젝트 일정을 늘려주십시오 "

   했다. 그럤더니 , PM 이 올라와서 나보고 " 오늘부터 야근을 해서라도 일정을 맞추라 "고 명령한다.


5. 그래서 한마디 했다. " 야근 명령부를 주십시오 " 했더니 PM이 " 야근 명령부가 뭔지 모르니 일단 야근 하라 "라고 한다.

    난 오후 6시까지 열심히 일하고 나서 , 퇴근했다.


6. 다음날 출근했더니 PM이 " 내말이 말같지 않나? 왜 퇴근했나? " 내가 " 야근 명령부를 주지 않으셔서 야근 안해도 되는지

   알았습니다 " 했다. 그러더니 PM이 어디서 찾았는지 모르겠지만 오늘 점심먹고 나서 야근 명령부를 보내준다.

   그날 밤 10시 반까지 신나게 야근을 했다. 나름 오랜만에 야근인지라 재미도 있었다.


7. 다음날이 됬는데 점심먹고 나서 야근 명령부가 오지 않는다. 6시 되서 퇴근했다.


8. 다음날 PM이 얼굴 벌게져서 어제는 왜 야근 안했냐고 한다. 당연히 야근 명령부가 없기때문에 안했다고 했다.


9 . PM이 이번 휴일 반납하고 일정이 조급하니 출근하라고 한다. " 휴일 근무 명령부를 주십시오 "라고 했다.

    PM이 어이없어 하면서 작성해서 준다. 안나올까봐...


10 . 한달이 지났다. 야근 16일 휴일 5일 근무했다. 월급을 받았는데 2개월치 월급이 나왔다.


11. PM에게 메일을 보냈다. 연속되는 강행군으로 개발이 진척이 안된다. 휴식이필요함으로 연차를 쓰겠다고 했다.

     또한 이번 휴일엔 야근 명령부를 주시더라도 개인 사정으로 인해 근무가 불가능하다는 메일을 보내고,

     전자 결재를 냈지만, 되돌아왔다.


12. PM이 말한다. 팀워크에 대해 한참을 떠든다. 팀을 위해서 내 몸을 축내서 일하란 것인가?라고 물었다.

     가정사 및 애인사까지 팀워크를 위해서 내놔야 하는것인가? 내 삶을 내놓고 팀워크를 따져야 하는가? 라고 되물었다

     PM이 말한다. 꼭 그렇게 까지 해야 한다면, 팀워크가 맞지 않아서 퇴사를 권고할수 밖에 없다고 한다.


13. 감사합니다. 라고 말했다.


14. 월요일 출근하니, 메일함에 퇴사 권고 메일이 왔다.


15. PM이 와서 짤렸으니 오늘부터 안와도 된다고 한다. 감사하다고 말하고, 나왔다.


16. 회사 인사부에 메일을 보냈다 짤렸으니, 3개월치 월급을 주셔야 하며, 퇴직금과 소득공제까지 계산하셔서

     다음달 월급통장에 넣어주셔야 하며, 이 사항이 조취되지 않으면 바로 노동부에 제소하도록 하겠다고 덧붙였다.


지금? 전 회사보다 상식이 통하는 회사에 와서 즐겁게 일하고 있다.

PM도 좋은분이고 실력이 있으시며, 회사도 이름이 있고 튼실하다.

1년중에 휴일근무는 하루 이틀쯤 특이한 사항때메 있고, 야근은 한달에 한번 있을까 말까 한다.

전에 회사에서 3개월치 월급과 퇴직금 그리고 소득공제가 들어왔다.

1년 좀 넘게 근무했는데 돈 천만원쯤 되는거 같다.

스노우보드를 사고, 페러글라이딩 장비구입이랑 연회비 , 그리고 옷 몇벌 사고 나도

5백만원이 남아서 은행에 예치해 놨다.


17. 전 회사에서 연락이 온다. " 자바 프레임워크와 Flex 프레임워크 버젼이 뭔지 모르겠다. 알려달라 . 인수인계가

     없어서 개발에 난항이 있다. " 다급해 보인다.


18. " 잠시 와서 봐주면 안되겠냐 " 난 " 업무중이니 메일을 달라 "고 하고 끊었다.


19. 메일이 왔다. 핵심 코어 프로세스가 어디에 있는지 모르겠고, 어떤 버젼을 쓰는지 모르겠는데. SVN의 레파지토리에

     문제가 생긴모양이다


20. " 가는건 가능하다. 하지만 코어 프로세스를 재 개발해야 하고. 나역시 Version 테스트 하는데 공수가 들어가니

       약 400 만원 정도가 소요될거 같다. 지출 증빙 가능하니 결제 완료되면 연락을 달라고 했다 "


21. PM이 욱한다. 전화를 끊었다.


22. 다음날 400 만원이 입금되었다. 그날밤에 와달란다. 난 후배와 술약속이 있다.


23. " 개인 사정에 의해 당일은 어렵고 익일날 가능하면 가주도록 하겠다 그게 안된다면 400만원은 다시 돌려주겠다 "


24. 다음날 와달란다.


25. 코어 파일 몇개를 웹로직에 던져넣고 버젼 파일 몇개 던져놨다.


26. 서비스 재 기동했다. 잘 도는거 같다. log 파일이 깨끗하다.


27. 들어간지 30분만에 확인시켜주고 나왔다. PM 이 말한다. " 지금 어디서 근무하냐? 놀고 있음 다른곳 추천좀 해줄까? "한다.


28. 생각해 보겠다고 하고 나온다.



내 행동에 잘못된 부분이 있을까....곱 씹는다.
//----
사실 일을 처리하는 부분에 있어서 이런식으로 일처리를 하는것이 합리적이라고 생각합니다. 단지 한국이라는 나라에서는 이런 문화가 거의 없죠. 정문화라는 것 때문에 그럴까요? 위에 펌글에 대한 행동이 문제라는 사람들도 있지만 제목 처럼 상식으로 생각한다면 문제가 없다고 생각합니다.

신고
Posted by 키젤


티스토리 툴바