블로그 이미지
Max.

calendar

  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

Notice

2010. 12. 13. 07:58 개발관련
저지로 호출시, 요청 파라메터를 보내는데, 일반적인 POST나 GET 처럼 "?" 다음에 붙여서 보내는 방법과, XML 을 요청 파라메터로 붙이는 방법 두가지이다. 그런데 인터넷에서 찾아보면, XML로 보내는 예제를 보기 어렵다. 

    @Test
    public void webPost1(){
              // 설정
             ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
WebResource service = client.resource("http://xxxx.com/xxxx/service");
                // 호출
IfRequest ifRquest = new IfRequest(); // jersey request Object
ClientResponse response = service.accept(MediaType.APPLICATION_XML).post(ClientResponse.class, ifRquest);
assertEquals(200,response.getStatus());

// 로그
System.out.println(response.getStatus());
System.out.println(response.getHeaders());
System.out.println(response.getEntity(String.class));
    }

진한 글씨가 보통은 생략되거나 Form객체로 param값을 전달하기도 한다. 아래는 IfRequest 객체의 매핑 내용이다.

@XmlType
@MappedSuperclass
@XmlRootElement(name="IfRequest")
public class IfRequest {
@XmlElement(name="messageId")
String messageId = "aaaa";
@XmlElement(name="caller")
String caller = "bbbb";
@XmlElement(name="hashKey")
String hashKey = "ccccc";
@XmlElement(name="serviceId")
String serviceId = "dddd";
@XmlElement(name="dataSet")
List<DataSet> dataSets = DataSetFactory.get();
}

이상이다.... 다음에는 SAML 이나, OAuth 같은 요즘 뜨는 예제를 올릴까... 아니면, SmartGWT 수동으로 파일 업로드 하는 무식한 예제를????

'개발관련' 카테고리의 다른 글

Spring Roo 1.1.2 BUILD-SNAPSHOT 기념샷  (0) 2011.01.12
토비의스프링3 읽고나서...  (12) 2010.12.13
Jersey + XML 호출 예제 테스트  (0) 2010.12.13
Spring + Jersey + Dozer 예제  (0) 2010.12.10
SmartGWT stack_overflow  (0) 2010.10.07
토비의 스프링3 : 독중감(2)  (10) 2010.09.08
posted by Max.
TAG jersey

댓글을 달아 주세요

2010. 12. 10. 20:09 개발관련
생각나는 김에 올린다. 요즘 정신없이 개발하고 있어서 하루가 금방이다. 거의 방치수준의 블로그를 이런식으로라도 유지하려는...;;; 아무튼, 제목 그대로 저 두개를 이용하여 객체를 반환하는 예제이다. 이것이 필요한 이유는, 웹서비스를 처리하는 그룹과 그것을 이용하는 그룹이 분리되어 있다면, 서로 다른 목적의 객체에 담기는게 유리하다. 그때 각각의 객체에 값을 이동할 필요가 있는데, 이렇게 복사해(매핑해) 주는 것이 Dozer다. 아래는 그 예제를 순서적으로 기록한 것이다.

1) Response 객체 (jersey 에서 사용)
@XmlType
@MappedSuperclass
@XmlRootElement(name="RESULT")
public class AccountResponse {
@XmlElement(name="RESULT_CODE")
private String resultCode;
@XmlElement(name="COUNT")
private int count;
@XmlElement(name="LINK_URL")
private String linkUrl;
...

2) DTO 객체
public class AccountResult {
private Long count;
private String linkUrl;
...

3) Dozer 매핑 설정
...
  <mapping map-id="ws_account"> 
    <class-a>kr.company.ws.model.AccountResponse</class-a>
    <class-b>kr.company.service.model.AccountResult</class-b>   
    <field custom-converter="kr.company.service.model.converter.IntToLongConverter">
      <a>count</a>
      <b>count</b>
    </field>
    <field>
      <a>linkUrl</a>
      <b>linkUrl</b>
    </field>
  </mapping> 
[Converter] 
public class IntToLongConverter implements CustomConverter {
@Override
public Object convert(Object existingDestinationFieldValue, Object sourceFieldValue, Class<?> destinationClass, Class<?> sourceClass) {
Integer id = (Integer) sourceFieldValue;
return Long.valueOf(id);
}
}

4) Spring 설정
...
<bean id="dozerMapper" class="org.dozer.DozerBeanMapper">
   <property name="mappingFiles">
       <list>
           <value>META-INF/spring/dozer-bean-mappings.xml</value>
       </list>
   </property>
</bean>

4) 서비스 호출
public class AccountServiceProviderImpl ...
@Override
public AccountResult findAccount(Long id) {
AccountResponse accountResponse = accountWebService.findAccount(id);
return dozerMapper.map(accountResponse, AccountResult.class,"ws_account");
}
...

5) 테스트
    @Test
    public void 테스트(){
         ...

     AccountResult accountResult = accountServiceProvider.findAccount(account.getId());
     assertNotNull(accountResult);
    }

따로 설명없이 순서적으로 보면, 이해될수 있을 정도로 쉽다. Dozer를 몇년전에 시도 했을때는 설정이 복잡해 보였는데, 다시 해보니, 복잡하지도 않고 쓸만하다. 오히려 jersey설정이 더 복잡해 보인다. 그래도 jersey역시 쉽다.

posted by Max.

댓글을 달아 주세요

2010. 10. 7. 20:05 개발관련
SmartGWT의 JSOHelper 유틸클래스는 자바객체를 자바스크립트 객체로 전환해주는 편리한 유틸로 개발시 자주 사용된다. 그러나 아직 정착되지 않은 이 오픈소스는 오류가 심심치안게 보인다. 나는 간단한 JS 설정을 하는데 stack_overflow 라는 황단한 일이 생겨서 몇시간을 삽질했다. 그래서 공유 한다.

[stack_overflow가 발생하는 코드]
JavaScriptObject industrialTypeSource 
= (JavaScriptObject) editorForm.getValue("industrialType");
JSOHelper.setAttribute(industrialTypeSource,"id",
editorForm.getField("industrialTypeId").getValue());
JSOHelper.setAttribute(industrialTypeSource,"name",
editorForm.getField("industrialTypeId").getDisplayValue());


[정상적으로 처리되는 코드]
JavaScriptObject industrialTypeSource 
= (JavaScriptObject) editorForm.getValue("industrialType");
JSOHelper.setAttribute(industrialTypeSource,"id",
(Integer) editorForm.getField("industrialTypeId").getValue());
JSOHelper.setAttribute(industrialTypeSource,"name",
(String) editorForm.getField("industrialTypeId").getDisplayValue());


차이는 형변환 캐스팅한것 밖엔 없다. 반~드~시! 명시적으로 형변환을 선언하는 것이 좋겠다. 

처음 적용하는 기술에서는 대부분 적절한 API 사용 미숙 때문에 시간을 소비하는데, 그런 행동이 습관화되어, 기본적인 테스트를 해보지 않은 것이 장시간 삽질하게 된것 같다. 


이 포스트는 이것을 기억하기 이한 기념샷 이다.
posted by Max.

댓글을 달아 주세요

2010. 9. 27. 09:59 Business관련
연구실에 있는 사람이 부럽다. 만약 그가 하고자 하는 분야를 연구하면서, 월급을 받는다면 말이다. '아웃라이어'책이 빈말은 아니다. 환경이 만들어주면, 누구나 전문가가 될수 있다. 병뚜껑만 10년 모아도 그분야 전문가가 된다는 말도 빈말이 아니다. 환경을 y축에 놓고, x축을 시간으로 두면, '운빨'이라는 곡선은 우상향 할것이다.


직장인들의 꿈중에 많은 이들이 창업이라 말할수 있다. 적어도 나를 포함한, 내 주위에 사람들은 그런것 같다. 그런데, 직장인이 갖춰야 할 핵심역량과 기업주가 갖춰야할 핵심역량은 그 목적부터 많이 다른것 같다. 만약 직장인이 소속된 기업의 이윤추구를 위해, 목숨걸 각오가 되어 있다면, 둘은 같다고 볼수 있겠지만, 그런사람 어디있는지 소개좀 시켜달라. 정상인이라면, 그렇기 쉽지 않다. 어쨌든, 기업가가 된다는것은 직장인과 많이 다른것 같다. 마치, 팀 프리랜서 개발자와 대기업 전산실 관리자 처럼...


오랫만에 철학책을 읽고 있다. 그런데 읽기 싫다. 금쪽같은 말이 참 많은데, 그래서 내가 어떻게 변해야 하는지를 모르겠다. 머릿속 생각들은 언제나 나에게 모오함을 던져준다. 동시에 GWT in Action 책을 있고 있는데, 이책은 컴퓨터 없이 읽고만 지나가면, 별로 얻을게 없다. GWT를 이용한 일을 해야 나에게 긴장감을 줄듯 하다. 기술적인 것들은 당장 사용할께 아니면, 공연불같다는 생각이 든다. 시간이 지나면, 구현방법이 상당히 바뀌니까... 철학책은 그래도 가끔 화장실에서 읽어야 겠다. 가끔 나오는 탄성을 지를듯한 구절은 매력적이니까...


앤드류와일즈의 '페르마의 마지막 정리'를 증명하는 것을 보면서 느낀게 많은데, 그중에서 창의적인 부분을 말하자면, 창의력이란, 오랜시간 문제에 몰입하고, 잠깐의 휴식에서 얻을수 있으며, 그시간에 '유레카'를 외칠수 있는 것 같다. 흔히들 개발자들은 문제가 안풀리면, 잠시 시간을 내어 쉬면서 담배를 피우거나 잡담하다가 유레카를 외치고 들어가서 문제를 해결하는 경우를 종종 봤는데, 문제의 복잡도와 주제만 다를 뿐 세기적인 천재들과 다를께 뭔가... 개발자들은 모두 창의력을 잘 활용하고 있는 천재일수도...


날씨가 많이 추워졌다. 여름에 태어나서인지, 추운게 싫은데, 싫은 계절이 다가오고 있다. 덤으로 나이도 한살 더 늘겠지... 

삼팔 광땡의 해도 다 지나가고 있네...

올해 땡잡은 사건이 아직 없는것 같은데 남은 개월을 기대해 봐도 될까...


'Business관련' 카테고리의 다른 글

내딸사진 한장  (0) 2011.01.25
차샀음.  (0) 2011.01.25
실없는 생각들...  (0) 2010.09.27
나의 메신저  (0) 2010.07.28
www.bazaarvoice.co.uk  (0) 2010.04.26
단순하면서도 효과적이고, 오묘한 전략  (0) 2010.04.05
posted by Max.
TAG 잡담

댓글을 달아 주세요

2010. 9. 8. 18:43 개발관련

독중감을 썼다가 지웠다. 그리고 안쓸려고 했다...가 제목에 순번도 넣었으니 2번까지는 가야 겠다는 생각에 다시 쓴다. 

이 책은 독중감을 쓰기 어려운 책이다. 이유가 독중감을 쓸만하기엔 구조적(?)으로 어렵다. 구조가 어떤 구조냐 하면, 처음부터 기존 코드에 대한 의문를 품고, 그것으로 시작하여 조금씩 개선해 나간다. 그냥 개선이 아니라, 집요하게 개선해 나간다. 이쯤하면 대충 말로만 이러이러하다. 그러니 다룰것도 많은데 다음으로 넘어가자... 했으면 좋겠는데, 대충 넘어가지 않고, 끈질기게 개선한다. 그렇게 어쩔수 없이 조금씩 따라가다 보니, 한 장이 끝나고, 그 장에서 말하려고 했던것을 몸소 실천했던 것이 되어 버리고 만다. 

어느새, 자기자신이 조금은 커진듯한 느낌을 들게 한다는 것이다. 나는 이런 걸 멘토링이라고 불려주고 싶다. 이책은 언제든지 편리할때, 참조하고자 한 책이 아니라(다 읽은 다음엔 가능하리라), 읽으므로써, 가랑비에 옷이 젖듯 개발자의 실력을 늘려주는것 같다. 그냥 말로만 하는 지식이 아니라, 코드로 말이다. 

또하나, 초,중,고 실력에 따라, 느끼는 점이 다를 것이다. 지나치게(?) 자세한 설명은 초보자도 읽기 쉽게 하는 것이고, 중급자에겐 원리의 이해가 복잡해 보여서 확장하기가 두려웠는데, 이를 도와줄 것이고, 고급자에겐 심증적인 지식에 대해, 확신할수 있는 길을 열어줄 것이다.

처음에 내가 이책을 통해서 얻으려했던, 저자가 생각하는 '스프링철학', '스프링 경험'은 너무 협소한 범위였다는 생각이 든다. 아직 6장을 읽고 있지만(사실 1,2장을 읽고, 바로 9장을 읽었다가 다시 1장부터 6장을 읽고 있다), 이책을 통해서 얻을수 있는건, 스프링에 국한된 것이 아니라, 자바 프로그래머로써 객체지향에 대해 다시 생각하게 할 것이고, 스프링을 통해서 그것을 실현 하려는 저자의 사상을 엿볼수 있는 좋은 기회가 될수 있으리라 본다.


책은 멘토링 스타일 답게(?), 중간 중간에 저자의 감정을 표현하는 부분이 자주 나온다. 처음엔 기술서적에서 이런 문체를 보니, 이상해서 계속 줄을 그으며, 모았다가, 나중엔 이런 부분이 책을 읽는 재미를 주고 있다는것을 알아차리곤 그만 두었다. 그래도 재미 있으니 몇개만 간추려 본다. 자~알 읽어보면, 저자가 어떤 마음으로 이책을 썼는지 느낄수 있을지도...

~도저히 용납할수 없다.

~객체지향이 어쩌고 저쩌고 하는 설명이 불편하다면,

~! 테스트가 실패한다.

~생각 없이 던져버리면 어떻게 될까? 

~이 두 가지 나쁜 습관은 어떤 경우에도 용납하지 않아야 한다.

~System.exit(1); 

~초난감 예외처리의 대표선수들을 살펴보자.

~설명하지 않고 얼렁뚱땅 넘어간부분이 있다.

~뻗어버리기도 하는 것이다.

~개발자의 기본적인 자세다.

~ 도전해볼 만하다.

~따지고 보면,

~바로 이런 게 객체지향 언어와 설계를 사용하는 매력이 아닐까

~기껏해야

~만드는 무식한 방법을 사용해야 한다는 뜻은 아니다.

~인터페이스를 만들기가 귀찮으니까 그냥 클래스를 사용하자는 건 잘못된 생각이다.

~녹색 막대가 나오면 기분이 좋다.


소설책 같기도 하고....



posted by Max.

댓글을 달아 주세요

  1. 캐빈허 2010.09.08 18:57  Addr Edit/Del Reply

    님의 독중감도 재미있네요 :) 토비님 책은 사보려고 했으나 책의 두께에 질려 아직 망설이고 있습니다 ㅎ

    • Favicon of http://yunsunghan.tistory.com BlogIcon Max 2010.09.09 07:57  Addr Edit/Del

      대부분 첫인상이 외형적인 특징인데, 저도 그랬습니다. 읽고 있는 지금도 그것은 여전히 유효하구요. ^^*
      (비밀인데요... 댓글단 기념으로 말씀드리는데요... 그래도 꼭 읽어 보세요. 그리고 회사의 다른 사람은 못읽게 차단해버릿...)

  2. 쓰기 어렵다고 해놓고 잘만 쓰네욧.

    • Favicon of http://yunsunghan.tistory.com BlogIcon Max 2010.09.09 07:59  Addr Edit/Del

      처음 몃 장을 읽으니, 유명한 스프링의 초록 삼각형이 떠올랐어요... 이후론 어떤 그림이 그려질까 기대하는 중...

  3. 안녕하세요.. 오랜만입니다.
    너무 재밌네요. 독중감..

    '외형적인 특징'에 대해서는 120% 공감하구요.
    저는 그래서 자체 제본 중입니다. 1장은 일단 제 손으로 뜯었는데
    오늘은 업체에 맡겨서 마감을 해볼까 하구요..

    토비 형(이럴 땐 형이란 표현을 빼야 맛이라)이 책(외형)에 대해 안 좋은 소리하면 삐지려고 해서 자제했는데, 맥스님이 생생하게 전해주셨네요..

    • Favicon of http://yunsunghan.tistory.com BlogIcon Max 2010.09.13 07:33  Addr Edit/Del

      저는 요즘 지하철에서 봅니다... 책을 펼칠때면, 가끔 자리를 양보해주는 사람도 있답니다... 외형적 특징을 정신력(?)으로 극복하는 사례라는...

    • 알 수 없는 사용자 2010.09.14 09:13  Addr Edit/Del

      책을 동승한 아이 취급하는군요. ㅋㅋ

  4. Favicon of http://architect.tistory.com BlogIcon 짱가 2010.09.13 15:09  Addr Edit/Del Reply

    표현리스트 보다가 혼자 "풋!!" 했습니다. ^^

    • Favicon of http://yunsunghan.tistory.com BlogIcon Max 2010.09.13 17:41  Addr Edit/Del

      제일 재밌는 표현을 꼽으라면....' 기분이 좋다' 입니다. 저자의 기분상태를 표현하는 기술서 있으면 나와보라고...

  5. 코바 2010.10.01 14:15  Addr Edit/Del Reply

    첨부터 다 읽어본 사람으로서 혹은 토비님 블로그 많이 읽어본사람으로 표현들이 익숙해서 괜찮았다고나 할까요. 장수가 많은책이 너무 딱딱하기만 해도 재미없자나요

2010. 9. 2. 17:20 개발관련

Atlassian 한국총판인 골드피처에서는 JIRA와 Confluence의 한글 언어팩을 지원하고 있다. 일반 라이센스 구매자에 한해서만 말이다. 그런데, 최근 Starter 라이센스에도 지원하기로 했다고 한다. 그러나, 일반 라이센스 버전의 한글언어팩이 아니라, '자동번역'판 한글언어팩 이란다. 흔히 자동번역은 앞뒤 말도 안되는 경우가 많다. 찜찜하시만, 보지않고, 말할순 없다. 그래서 다시 시간을 내어 설치해보기로 했다.

1) JIRA 설치
http://www.atlassian.com/download/ 에서 최신 버전(4.1.2)을 다운로드 한다. 나는 윈도우 버전을 받아서 기본 디렉토리에 설치했다.

2) 한글 언어팩 설치
http://confluence.goldpitcher.co.kr/pages/viewpage.action?pageId=70451260 페이지의 하단에서 다운로드 가능하다. Starter 한글언어팩은 4.1.1 만 제공한다.(설마 4.1.2에서 안될까?) 설치에 관한 자세한 내용은 http://confluence.goldpitcher.co.kr/pages/viewpage.action?pageId=70451265 에서 확인 한다.

3) 확인하기
깨진다. 오른쪽 국가이름은 잘나오고 있는것을 보면, 인코딩엔 문제없고, 한글 언어팩에 문제가 있는듯 하다.

4) 4.1.1 버전으로 다시 확인하기
그래서 디랙토리까지 다지우고, 다시 언어팩과 JIRA버전을 맞춰 보기로 했다. JIRA 4.1.1 버전은 찾아보기 힘든데 4.1.2에서 4.1.1로 숫자만 바꿔서 다운로드한다. http://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-enterprise-4.1.1-windows-installer.exe 에서 다운로드 가능하다.
결과는.... 위와 똑같다... 뭐밍??? 설치된 한글패키지의 jar 파일이 다른 언어와 동일하게 위치해져 있다. 해당 프로퍼티 파일이 뭔가 꼬인것 같다. 첨부한다. 


사실 이미 오래전에 설치해서 테스트용으로 쓰고 있어서 이젠 굳이 한글 언어팩에 대한 아쉬움이 없다. 그러나, 새로 추가된 언어팩을 자동번역한 properties파일을 추가한 것이고, 설치해도 깨져서 나오는 것이라면, 그리 반가운 소식은 아니다. 개발자라면, 그리 어렵지 않게 언어팩을 추가 할수있다. 이 글을 쓰는동안해 이미 했을 수 있을 정도로 어려운 일은 아니다. 좀더 확인했어야 했다. 향후 개선 되겠지만...

참고로 내PC 환경 하고만 안맞을수도 있다. 그러나 더이상 알아볼 시간이 내겐 없다...
posted by Max.

댓글을 달아 주세요

  1. Favicon of http://yunsunghan.tistory.com BlogIcon Max 2010.09.03 13:40  Addr Edit/Del Reply

    수정 되었다고 합니다. 버전도 4.1.2로 바뀌었고, 아래 주소에서 다운로드 가능 합니다. http://confluence.goldpitcher.co.kr/pages/viewpage.action?pageId=70451260 저는 아직 테스트 해보질 못했어요...

2010. 9. 2. 11:12 개발관련

쌩뚱맞지만, 어쨌든, 포멧을 당(?)했을때, 어쩔수 없이 자바 개발 환경을 다시 설정해야 한다. 이왕하는거 기록하는 것도 좋을것 같아 남긴다. 설치순서는 생각나는 대로 정한다. 모든 것은 현시점에서 최신버전으로 설치한다.

 
1) JDK (Java SE Development Kit 6u21)
http://www.oracle.com/technetwork/java/javase/downloads/jdk6-jsp-136632.html 에서 다운로드 받는다. 다운받는 버전은 Java SE Development Kit 6u21 이다. 다운로드시 아이디, 비밀번호를 물어보는데, 가볍게 무시하고 'Continue' 버튼을 클릭하면 다운로드 하는 페이지로 이동한다. 대략 75.91MB 크기이고, 다운로드 속도는 평균 180KB로 대략 6~7부닝 소요된다고 나온다. 속도 너무 느리다. 설치하고나서, 시스템 환경변수에 JAVA_HOME 과 CLASS_PATH 변수에 추가하고, Path에도 추가되었는지 확인한다. 확인 사살은, 도스창에서 'java -version'으로 설치된 정보를 확인할수 있다.


2) Maven (2.2.1)
JDK 다음으로 자주 쓰는 것이 Maven이다. http://maven.apache.org/download.html 에서 다운로드 받는다. 현재는 2.2.1 버전이 가장 최신이고, 3.0 beta-2가 나왔다. Maven는 Oracle의 JDK와 다르게 눈깜짝할 사이에 다운받아 진다. 압축을 풀고, 시스템환경변수에, MVN_HOME, MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=512m", CLASS_PATH, PATH에 변수를 추가한다. 확인사살은 역시 도스창에서 'mvn --version'으로 확인 가능하다.


3) Ant (1.8.1)
Ant는 현재 1.8.1버전까지 릴리즈 되어 있다. http://ant.apache.org/bindownload.cgi 에서 다운로드 가능하다. 역시 다운로드 속도가 빠르다. Maven 설치때 처럼, 적당한 디렉토리에 압축을 풀고, ANT_HOME과 CLASSPATH에 추가한다. 역시 도스창에서 확인사살한다. 'ant -version'


4) Subversion(1.6.12)
나는 Command Line용 SVN이 필요하다. http://subversion.apache.org/packages.html#windows 에 가면 제공하는 곳이 4곳이 있는데, 대부분 회원가입을 해야 하거나, Command용을 제공하지 않는다. SlikSvn(http://www.sliksvn.com/en/download)만 가능했다. 역시 설치후, Path에만 추가하고 도스창에서 확인사살 한다. 'svn --version'


5) Git (1.7.0.2)
최근 몇몇의 오픈소스 저장소를 Git를 사용하고 있어서, 본인의 의도와 다르게 어쩔수 없이 설치하고 써야 하는 Git! http://git-scm.com/download 에서 다운로드 할수 있다. 두가지를 제공하고 있는데, Cywin과 msysGit이다. 나는 msysGit를 받았다.(http://code.google.com/p/msysgit/downloads/list 에서 Git-1.7.0.2-preview20100309.exe) 설치지 몇가지 옵션이 있는데, 나는 shell형태와 unix표현 형태를 선택했다. mysysGit는 설치하면 자동으로 Path에 경로가 추가되고, 도스창을 띄우고, 'cmd'를 실행하면, Git Command 실행환경이 된다. 역시 확인사살로 'git --version'명령을 실행해 본다.


6) IDE (2.3.2 and 2.5.0M3)
IDE는 보통 이클립스(http://www.eclipse.org/downloads/)를 받지만, 나는 STS를 받는다. http://www.springsource.com/products/springsource-tool-suite-download 에서 다운로드 한다. STS는 다운로드시 사용자 정보를 요구한다. 꽤 귀찮은 일이지만, 그래도 STS를 쓰기 위해서는 어쩔수 없다. 현재는 두가지 버전을 제공하는데, eclipse3.5.2기반과 eclipse3.6 기반 두가지 형태이다. 각각 STS2.3.2, STS2.5.0M3 버젼이고 둘다 다운 받았다. exe 보다는 zip 이 편하다. 다운로드 속도가 4M정도 되니, 빠른편이다. 적당한 디렉토리에 압축을 풀고 sts폴더르 찾아 실행 하면된다. 시스템 환경설정을 별고도 필요없다. STS는 종합선물세트 형태라서 내부에 tcServer,Roo,maven 등이 포함되어 있다. Plug-in은 이클립스과 같다.


7) GnuPG (1.4.10b)
윈도우 버전 중 바이너리 버전을 다운(http://www.gnupg.org/download/) 받는다. 직접 URL은 ftp://ftp.gnupg.org/gcrypt/binary/gnupg-w32cli-1.4.10b.exe 이다. 다운로드후 실행하여, 설치하고, Path에 추가 시킨다. 확인은, 도스창에서 'gpg --version' 으로 확인할수 있다.




8) MongoDB(1.6.0)
http://www.mongodb.org/downloads 에서 다운받아 설치하고, 윈도우 서비스 등록 하기
mongod --bind_ip 127.0.0.1 --logpath D:\SYSTEM_DATA\MongoDB\LOG\logs --logappend --dbpath  D:\SYSTEM_DATA\MongoDB\DATA --directoryperdb --install

기타등등...필요할때 추가...
posted by Max.

댓글을 달아 주세요

2010. 9. 1. 17:09 개발관련
개발환경을 새로 설정하가다 Spring STS 2.5.0.M3 에서 각종 플러그인을 쉽게 추가할수 있도록 기능을 추가했음을 발견했다. 그동안 STS는 SVN을 기본으로 제공하지 않아서, 늘 Update site를 찾아 플러그인을 추가했어야만 했다. 상당히 불편했다. 

STS가 버전업이 자주되는 IDE 라서 그때마다 추가 했어야 했기에 번거러웠는데, 이런 점을 잘 파악했는지 스프링소스에서 2.5.0 부터는 자주 사용하는 유용한 플러그인을 간편하게 찾아서 추가할수 있게 Dashboard를 제공하기로 했나 보다.


혹시... 이거 뒷북?

posted by Max.
TAG IDE, sts

댓글을 달아 주세요

  1. 역시 뒷북이였다. 이미 2.5.2에서도 Dashboard의 Extensions에 제공하고 있었다는... 추가로 Configuration엔 서버까지 추가되는...

2010. 8. 31. 18:29 개발관련

TDD란 무엇인가? 라는 글에 있는 것은 단순히 기능정인 정의인것 같습니다. 개념적인 아니, 좀더 사상적인 정의는 누가 공유하신 분이 없는지... 찾아봐도 안보입니다. 예를 들면, 인식론이나, 문제 해결 방법론 적인 접근으로 TDD란 놈을 바라본글이라든가...

나는 TDD에 대해서 다음과 같은 질문을 해봅니다.

1) TDD만이 주는 고유한 장점이 무엇이고, 그 장점을 다른 방법적인 접근으로는 불가능한 것인가?

2) 대상 코드 작성후 테스트코드를 작성하여 테스트하면, 이것은 TDD 아닌가? 아니라면, 단순히 테스트 코드는 먼저 작성했고, 그것으로 부터 대상코드를 만들기만하면, 1)의 장점을 얻는 것이고, 그 반대로 아주 작은 대상코드 작성후 테스트를 작성하면 1)의 장점을 얻을수 없는 것인가?

3) 'TDD를 한다'는게 중요한가 아니면, '테스트를 한다'는게 중요한가?

4) TDD는 무엇을 해결 하기 위해, 어떤식으로 접근하는가? 그리고 그 방법을 어디서 보진 안았는가?


4가지 질문에 답하기 힘들수도 있겠으나... 내 생각엔 TDD가 복잡한 문제는 인식하는 여러 방법 중 한가지 방법이고, 어떤 경우엔 그리 좋은 선택이 아니 였었습니다. 그저 여러개 중 하나인 것일 뿐이였죠.

(4가지에 대한 나의 생각은 나중에 시간이 되면... 오늘은 퇴근을....)
posted by Max.
TAG TDD

댓글을 달아 주세요

  1. Favicon of http://yunsunghan.tistory.com BlogIcon Max 2010.09.01 07:26  Addr Edit/Del Reply

    이런글도 있지만, 역시 기능위주 설명을... http://www.gurubee.net/pages/viewpage.action?pageId=983145#%ED%85%8C%EC%8A%A4%ED%8A%B8%EC%A3%BC%EB%8F%84%EA%B0%9C%EB%B0%9C-TDD%EB%9E%80%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%3F

2010. 8. 30. 11:10 개발관련
'토비의 스프링3' 이란 책을 샀다. 오만원씩이나 하는 비싼 책이다. 책값때문에 '다음에 사겠다'는 사람도 보았다. 책의 두께에 비하면 다른 책보다 비싼것도 아니지만, 월마다 책을 주기적으로 구매하는 사람에게 약간 부담되고, 책을 잘 안보는 사람에게도 부담되는 금액이다. 이 범위에 속하지 않은 사람들은 별 부담없이 구매할수도 있고, 소장용(?)으로도 가능하리라 본다. 어쨌든, 일반 2~3만원때의 기술서적 보다 두껍고, 비싼 책이라는 외형적인 특징을 무릅쓰고, 이책을 구매한 사람인 내가, 이책에 기대하는 것은 무엇이였을까?



1. '토비의 스프링3' 책에 기대 했던 것

기대했던 것이란 내 관점에서 이책을 구매할 이유가 된것이다. 나는 예약구매로 구매한 경우인데, 그래서 책에 대한 객관적인 정보가 사실 없었다. 그냥 인터넷상으로 떠도는 소문에 의지해 구매했다. 소문에 의하면, '초보자도 읽기 쉽다', '내용이 좋다', '저자가 스프링을 좀 안다' 정도 이다. 물론 이런 소문만으론 구매결정을 한게 아니다. 이런 소문들로 나는 이런것을 유추했다. '1) 저자는 기술보다, 사상(철학)을 강조했던 사람이다 - 스프링철학', '2) 저자는 유명세 만큼이나 필드 경험이 많아 실용적인 노하우를 들을수 있다 - 멘토링' 이 두가지가 내가 이책으로 부터 얻고자 하는 것이였다. 사실 스프링은 계속 버전업이 되고 있고, 그때마다 새로운 기술과 방법들이 소개되고 있다.  나는 스프링1.2시절부터 실무에 적용해 왔기 때문에 나름대로 스프링을 학습하는 방법이 생겼다. 그중 가장 중요하게 생각하는 것이 레퍼런스를 보고 학습하는 것이다. 새로운 기술은 보통 레퍼런스와 포럼을 통해서 학습하고 있다. 그래서, 이책에서 새로운 기술에 대해서 알고자 하는것은 주요관심사가 아니였다. 물론 한글 설명이 학습시간은 단축시켜주기는 하지만, 나의 이책에 대한 메인 관심사는 아니다. 

어쨌든, 1)은 단순히 그가 말하는 정의가 아니라, 그가 느끼고 있는 또는 책에서 실천하고 있는 정의를 듣고? 아니, 느끼고  싶었다. 저자가 생각하는 스프링철학을 책에서 느낄수 있다면, 당연히 외형적 특징 쯤이야 문제될것도 없다. 2)는 사실 스프링에 대한경험이 있더라도, 더 많은 경험을 한 사람에게서 느끼는 노하우를 '책의 외형적 특징'에 대한 비용보다는 휠씬 높으리라 생각했다. 노하우가 단순히 Tip에서 그칠수도 있지만, 이런 Tip들이 여러개 모이면, 일정한 곡선으로 무엇인가 의미를 전달해 주리라 생각한 것이다. 이렇게 긍정적인 생각에 '책의 외형적 특징'을 잠시 무시하고, 책을 구입하게 되었다. 5만원으로 너무 많은걸 기대하는지는 몰라도...



2. 책을 읽으면서, 기대했던 것에 대한 느낌

위에서 말한 1),2)에 대해 어느정도 느낄려면, 책의 진도가 좀 나가야 '봉사 문고리'라도 잡을 텐데, 현실은 그렇치 않다. 내가 이책 보다 먼저 읽고 있었던 책도 있고, 책의 외형적 특징 때문에, 지하철에서 책읽는 나의 관습(수도권 생활자로 하루 4시간 가까이 지하철에서 보냄)에 맞질 않아서 그렇다. 책의 순서상 회사에서 읽을만한, 레퍼런스형식도 아니여서, 틈틈히 집에서만 읽는데, 휴일은 가족과 보대다 보니, 더욱 진도가 더디다. 사실 틈틈히 읽는다는 것도 그 '외형적 특징' 때문에 쉽게 집어들기도 힘들다. 느워서 보기도 힘들어 책상이나, 식탁에서 펼쳐 보는데, 좀 궁색맞기도 하다. 용기내어 쇼파에 누워서 펼쳐보기도 했지만, 내 배가 감당하기 힘들어 한다. 어쨌든, 이런식으로 조금씩 읽어 나가고 있다. 1)은 저자가 초장에 언급했지만, 느낌으로 전달받을려면, 좀 시간이 지나봐야 알겠다. 그러나 소문대로, 읽는것은 마치 소설읽는것 처럼 잘 읽힌다. 그래도 외형적 특징인 두꺼움은 여전하다. 

소설처럼 읽는 재미로 읽다가 눈에 번쩍 띄는 대목이 가끔 띄었다. 그런 부분들이 왜 눈의 띄이고, 놀랄 정도인지는 다음번 글에 좀더 자세히 설명해 보겠다. 책에 소개된 것들 중 어떤 것은 그 방법을 이해하면, 무릎을 칠 정도로 알짜 내용도 있으리라...

2)번은 바로 이런 저자의 노하우를 벌써 몇개 만날수 있어서 틈틈히 읽는 것을 멈출수 없다. 나처럼 스프링 사용 경험이 있더라도 이런건 참 얻기 힘든 지식이다. 1)번은 당장 느낄수 없었지만, 2)번은 조금씩 느낄수 있었으며, 그것만으로도 틈틈히 읽는 재미를 느끼고 있다. 다음 부터는 그것이 구체적으로 무엇인지 다 언급하기엔 여러가지로 적합하지 않고, 몇개를 언급해 보겠다.



3. 책을 읽으면서, 비판적인 느낌

나는 이상하게 나와 다른사람을 생각하는 버릇이 있어서 이 책을 다른 사람이 읽을땐 어떤점을 느낄까 하는 생각을 하곤 하는데, 그점을 말하면 뒤죽박죽이 되니, 최대한 내가 이책에서 느낀점만을 적어 보겠다. 이책에 대한 '외형적 특징'에 대해서는 이제 그만 언급하고(사실 외형적 특징이 내용에 영향을 준다는걸 이해한다면 나중에 다시한번 언급해야...), 내용의 전개에 대해서 약간은 비판적인 자세로 볼 필요가 있겠다.(내용이 아니라 구성이나 전개에 대해서 처음이자 마지막으로...) 

지금까지 읽은 부분에서는 책이 대부분 글로 독자의 머리것에 그림을 그리려는 것으로 느껴진다. 보조수단인 그림도 도식도 있지만, 미약하다. 주석이나 보조설명도 있지만 역시 미약하다. 글로 내 머리속에 그림을 그릴려고 하니, 일부는 글이 너무 많고, 일부는 그림이 그려지기도 전에 글이 끝난다. 그래서, 많은 글임에도 불구하고, 가끔식 두번,세번 읽어야 할 경우도 있다. 이것은 아마, 초저 집중력을 소유한 나의 문제일수도 있지만, 독자의 이런 능력(?)까진 고려 못한듯 하다. 나름대로  독자의 머리에 그림을 그리도록 글로 잘 설명하려는 노력이 보이나, 그럼에도 불구하고, 어떤 부분에서는 더 상세하게 설명이 필요하다고 느껴지고, 어떤 부분은 생략해도 될것 같은데... 하는 생각이 들었다. 아마도 아직 내가 저자의 의도를 이해하기엔 읽은 부분이 적고, 전체적인 그림을 그리기 힘드어, 저자가 강조하고픈것과 내가 이책을 통해서 보려고 하는 것의 차이가 이런 느낌을 들게한건 아닌가 한다. 어쨌든 이책을 통해서 얻으려는 독자의 마음에 따라 책은 다르게 평가되니, 앞으로 좀더 읽어 봐야 겠다. 

진짜 비판적인 책읽기는 내용에서 나와야 한다. 내용의 기술적인 오류도 포함되지만, 독자의 관점을 얼마나 배려 했는가 하는 것이 나의 주요 관심이 될듯 하다. 그러나 지나친 배려도 비판의 대상이다. 적어도 나에겐 내가 원하는 수준으로 친절해야 한다. (책은 읽는 사람이 아는 만큼 보인다...는 생각이...응?) 



4. 결과적으로...

여기까지 해서, 책에 대한 기대와 잠깐동인 읽었던 느낌을 대충 적어봤다. 앞으로 가능하다면, 몇번더 쓸텐데, 그때는 책에 대한 느낌보다는 구체적으로 몇가지를 읽으면서 얻는 것으로 풀어서 적어 볼까 한다. 나는 사물이든, 일에 대한 행위 이든, 어떤 것에 대한 첫느낌이 마지막에 느끼는 느낌과 같을 것이라 장담하지 않는다. 언제나 달라질 가능성을 둔다. 모든게 음파의 파동처럼 유기적이라고 생각하는 것이고, 그 유기적인 변화에 적응하는 것이랴 여긴다. 내가 마지막에 책을 손에서 놓을때 과연 어떤 느낌의 파동이 일 지는 아직 모르겠다. 아마 형편없다 느낄수 있지만 말할순 없을 수도 있고, 그저그런 좋은 책이라고 할수도 있겠다. 어쩌면 귀화보전 처럼 비급이라 느껴, 대충 소개를 마무리하고, 아예 언급하지도 않을수도 있다. 어쨌든, 지금은 틈틈히 읽는 재미가 있는 것이고, 2)번을 느끼고 있으며, 그것들이 나를 이책을 계속 읽게 하는 즐거움 주고 있다는것 뿐이다.



따~악, 1/5 읽으면 다음 글을.... 
posted by Max.
TAG 토비

댓글을 달아 주세요

  1. Favicon of http://toby.epril.com BlogIcon 토비 2010.08.30 14:49  Addr Edit/Del Reply

    왠만하면 책 제목 좀 제대로 씁시다. 책을 꼼꼼하게 비평하겠다는 사람이 제목부터 성의없이 적어놓으면 어떻게 해요. 벌써 두번째에욧.

    • Favicon of https://yunsunghan.tistory.com BlogIcon Max. 2010.08.30 15:06 신고  Addr Edit/Del

      제목이 눈에 안익히는지 자꾸 그러네요.
      3 넣었어요... 오타도 몇개 보이지만...pass... :)