달력

22025  이전 다음

  • 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
현재 Atlassian 의 대표 제품인 JIRA 와 Confluence를 5달러에 판매하는 이벤트 중입니다.
confluence 기존에 personal 라이센스로 2명까지 등록가능한 라이센스가 있기는 했지만 사실 2명만 등록하기에는 좀 부족한 면이 있죠.
이번에 5달러에 판매하는 이벤트에 적용되는 라이센스는 5명까지 등록가능합니다. 이 라이센스는 1년동안 기술지원도 포함된 금액입니다.
소규모 팀이라던가 영리 커뮤니티에서 사용하기에는 적절하지 않나 생각됩니다.



구매가 땡기는 분은 http://www.atlassian.com/starter/ 에 접속해보시면 됩니다.
둘다 구매하더라도 1만 5천원 정도되는 적은 금액으로 해당 프로그램의 품질이나 기능을 생각한다면 괜찮은 기회가 아닌가 생각됩니다.



저는 방금 구매했네요.. ^^

Posted by fromm0
|
일상적인 글이라고 해도. 정말 일상적인 글이 없는 거 같아서.. ^^
주말에.. 쑥국을 한번 해봤습니다.
아래 보이시죠..?? 만들기는 간단하구요.. 봄이라.
다른 반찬은 고등어와 밭미나리네요..


일요일 오후.. 심심해서.. 김치전을 해봤습니다. 이거말고 부추전도 했는데. 사진은 찍지 않아서..
원래는 내일 도시락 반찬을 만들려고 했었는데,, 도시락 반찬은 다 어디가고. 이런..


Posted by fromm0
|

[CI툴] hudson

자바 2009. 4. 5. 23:56

얼마전 JCO 강연을 들었던 것이 있기도 하고.. 사내 작은 움직임에 CI툴에 대한 것이 있기도 하고 해서 최근 .. CI툴을 살펴보고 있습니다.
현재 나와있는 툴로는 CruiseControl, Hudson, Bamboo, TeamCity 등이 있습니다.
전자의 두 제품은 오픈소스이고 후자의 두 제품은 상용제품입니다. 단 TeamCity는 제한적인 라이센스를 제공하기도 합니다.
최근 추세(?)로는 Hudson 이 가장 뛰어난게 아닌가 싶기도 합니다만 일단은 Hudson과 Bamboo 를 주로 살펴보고 있습니다.
간단히 UI를 보고 싶으시면 다음 링크에 접속해보시면 되겠습니다.

1. Hudson : http://hudson.openframework.or.kr/
2. Bamboo : http://bamboo.openframework.or.kr/

정리를 위해 위키에 정리하고 있습니다.
일단은 생각나는데로.. 정리를 해두고. 나중에.. 좀더 제대로된 활용문서를 만들어야 할듯 합니다.

'자바' 카테고리의 다른 글

[ibatis] 홈페이지개편.??  (2) 2009.07.23
[Spring] SpringSource Tool Suite  (0) 2009.05.08
[JSON] Jackson JSON Processor  (0) 2009.03.01
[jersey] 1.0.2 릴리즈  (0) 2009.03.01
[ibatis] 개발자 가이드 업데이트  (0) 2009.02.28
Posted by fromm0
|
jersey 1.0.2 릴리즈 노트를 보면서 한가지 재밌는 놈을 봤습니다.
Jackson 이라는 JSON 처리기입니다.
최근 인터페이스 관련 작업을 하면서 예전에는 XML을 주로 사용했는데 최근에는 JSON을 주로 사용하고 있습니다. 그나마 플래시에는 XML을 사용했는데 플래시에서도 json파싱이 가능하면서 json데이터가 처리하기 더 좋다고 하는군요. 아 얘기가 옆길로 셌습니다.

Jackson 는 JSON데이터를 생성하거나 JSON데이터를 빈으로 변환하는 작업을 하는 라이브러리입니다.
jersey가 내부적으로 사용하는 라이브러리이기도 합니다.

1. User.java
public class User {
public enum Gender { MALE, FEMALE };
public class Name {
private String _first, _last;
public String getFirst() { return _first; }
public String getLast() { return _last; }
public void setFirst(String s) { _first = s; }
public void setLast(String s) { _last = s; }
}

private Gender _gender;
private Name _name;
private boolean _isVerified;
private byte[] _userImage;
public Name getName() { return _name; }
public boolean isVerified() { return _isVerified; }
public Gender getGender() { return _gender; }
public byte[] getUserImage() { return _userImage; }
public void setName(String s) { _name = s; }
public void setVerified(boolean b) { _isVerified = b; }
public void setGender(Gender g) { _gender = g; }
public void setUserImage(byte[] b) { _userImage = b; }
}
2. JSON 샘플 데이터
{
"name" : { "first" : "Joe", "last" : "Sixpack" },
"gender" : "MALE",
"verified" : false,
"userImage" : "Rm9vYmFyIQ=="
}
3. JSON데이터를 빈으로 변환하는 소스
ObjectMapper mapper = new ObjectMapper(); // can reuse, share globally
User user = mapper.readValue(new File("user.json"), User.class);
좀더 다양한 소스는 http://jackson.codehaus.org/Tutorial 를 참고하시면 됩니다.


'자바' 카테고리의 다른 글

[Spring] SpringSource Tool Suite  (0) 2009.05.08
[CI툴] hudson  (0) 2009.04.05
[jersey] 1.0.2 릴리즈  (0) 2009.03.01
[ibatis] 개발자 가이드 업데이트  (0) 2009.02.28
[ibatis] 메일링리스트를 통해서 본 3.0 소식  (2) 2009.02.15
Posted by fromm0
|

[jersey] 1.0.2 릴리즈

자바 2009. 3. 1. 22:51
사내 인터페이스 작성을 위해 jersey를 사용하고 있는데 1.0.2 버전이 릴리즈되었습니다.
많은 버그를 수정했고 다음의 개선사항이 있었다고 합니다.

1. The JSON with JAXB "natural" convention
JAXB 모델을 사용해서 JSON 처리를 하거나 JSON을 다시 JAXB모델로 변경하는데 개선사항이 있다는 것으로 보입니다.
2. JSON with padding provider.
JSONP 에 대한 지원이 추가된 것입니다. JSONP 에 대해 검색을 해보니 다음처럼 설명을 하고 있군요.
JSONP(JSON with Padding)는 "Dynamic Script Tags" 혹은 "On Demend Javascript" 라고 불리는 기술을 이용하여 다른 웹사이트로 HTTP 요청을 보내고 자바스크립트 콜백 함수를 통해 실행결과를 통보 받는 방식으로 수행되는 JSON 기반 RPC 규약입니다. 이렇게 하면 브라우저의 보안 정책인 “Same Origin Policy” 제약을 넘어서서 원격 서버와의 통신이 가능해지는데, 야후의 일부 API들, 그리고 최근 개선된 Google Calendar API 등이 이미 이러한 방식을 사용하고 있습니다.
3. Resource method specific filters.
4. Atom Abdera support.
아파치의 atom 구현체인 Apache Abdera 프로젝트의 Atom 엔트리와 Feed 자바타입을 지원
5. Implicit produces.
6. Servlet as a filter.
7. Client using Apache HTTP client.
8. Pavel Bucek has added support for SSL configuration of the Client API when using HttpURLConnection

공부를 게을리 했더니 용어들이 모두 어렵습니다.
일단 내일 라이브러리 업데이트하고 API나 문서를 보면서 실제 내용을 파악해야 할 것으로 보입니다.

좀더 자세한 내용은 http://blogs.sun.com/sandoz/entry/jersey_1_0_2_is 를 참고하시면 됩니다.

'자바' 카테고리의 다른 글

[CI툴] hudson  (0) 2009.04.05
[JSON] Jackson JSON Processor  (0) 2009.03.01
[ibatis] 개발자 가이드 업데이트  (0) 2009.02.28
[ibatis] 메일링리스트를 통해서 본 3.0 소식  (2) 2009.02.15
[자바] 인코딩  (1) 2009.01.30
Posted by fromm0
|
어제 JCO 컨퍼런스를 다녀왔습니다.
예전에는 주위 지인들에게 모두 전화해서 함께 들으러 다니곤 했는데, 그동안 보고 싶었던 아이와의 점심약속을 제외하고 다른 약속 없이 혼자 가서 듣고 싶은 세션을 들었습니다.
참석한 세션은 아래와 같습니다.



두번째 세션인 PostgreSQL 은 점심약속 덕분에(?) 듣지를 못했네요.

# 강의내용에 대한 후기
1. Java VM Internal
최근 성능측정에 관심을 가지다보니 자연스레 관심이 가는 부분이 JVM입니다. 강으내용의 많은 부분은 이미 알고 있는 내용이기도 했지만 생소한 개념도 중간중간 나와서 새로운 지식을 얻게 되는 시간이었습니다.
그리고 주로 웹 개발을 하는 저로서는 대개 Java SE 또는 Java EE 를 기준으로하는 JVM에 대해 생각하게 되는데 Java ME 를 기준으로 하는 JVM에 대해 다시 생각하는 계기가 되었습니다.

2. CI with Hudson
CI 툴에 대해서는 그동안 사내 발표도 있었고 이런저런 자료를 보긴 했는데 이번만큼 명확한 발표는 없었다고 생각될 정도로 인상깊은 시간이었습니다. 굳이 Hudson이 아니더라도 CI툴을 사용해야 겠다는 직접적인 계기를 마련하게된 시간이었습니다. 개념적인 설명도 좋았지만 데모도 한치의 흩어짐 없이 깔끔하게 진행하셔서 굉장히 유익한 시간이었습니다.
어제 저녁 당장 진행중인 프로젝트에 대해 Hudson을 적용하고 있는데 Junit 리포팅 부분에 다소 막히는 부분이 있어 메일로 문의드렸는데 답이 올리는 모르겠습니다.

3. What's New and Cool in Spring's Web Stack
프랑스인이라고 들었던것 같은데 SpringSource의 마이클이즈비가 발표했습니다. 초반에는 다소 천천히 얘기했던것 같은데, 시간이 갈수록 집중이 안되고 영어를 알아듣기 힘들어서 중간에 나와버렸습니다.
생각보다는 젊었다는 점과 발표 직후 명함을 주면 차후 국내교육시 10%의 할일을 적용해준다고 했는데, 그냥 나와버렸네요. 우리나라가 SpringSource에서도 관심을 가지면서 최초의 자리였다는 의미는 있으나 시간 자체가 유익했던 자리라는 생각이 그리 들지는 않습니다.


# 기타
1. sdnkorea 인형
이번에는 지인분과 특별히 약속을 하고 갔던것도 아니고 초반에는 제가 낮을 좀 가리는 편이라 그냥 지나다녔는데 양수열님이 어떻게 알아보시고 박안나님께 소개를 시켜주셔서 인형 하나 받아왔습니다. 먼저 알아봐주셔서 감사합니다. ^^

2. JCO 행사
아마 다들 같은 생각을 했겠지만 이번에는 컨퍼런스에 참석하는 인원이 많이 적었습니다. 사전 등록 신청을 받으면서 뭔가 잘못 전달되었는지 대부분이 사전 등록한 분들이었것으로 보입니다. 그래서 강의장 마다 다르겠지만 최소 1/3 또는 1/2 정도 빈자리가 보였습니다. 작년에는 너무 많아 불편했지만 이번에는 너무 적어 발표자 분들이 맥이 빠지지 않으셨는지 궁금하네요.

내년에는 저도 발표를 해볼까요..?? ^^ 능력도 키워야 하고 발표주제도 잘 찾아야 가능한 일이겠네요.



'일상' 카테고리의 다른 글

[일상] Atlassian 이벤트  (0) 2009.04.22
[일상] 이번주말에 해먹은 것들  (4) 2009.04.06
[일상] 성숙하지 못한 고객과 서비스 멜론  (3) 2009.02.19
[일상] 도메인 기간 연장  (0) 2009.02.14
[일상] ubuntu  (4) 2009.02.02
Posted by fromm0
|
ibatis 개발자 가이드는 ibatis 홈페이지에서도 한글 문서를 배포하고 있지만 수정시 매번 메일로 전달해야 되서 사실상 kldp.net 에서 배포하고 있습니다.
배포 페이지는 다음 링크를 참고하시면 됩니다.

http://kldp.net/frs/?group_id=827&release_id=2208

오늘 일부 내용을 수정했습니다.
내용이 추가되거나 큰 수정이 있었던 것은 아니고 어제 명신님이라는 분으로 부터 피드백 메일이 와서 해당 내용을 반영한 것입니다. 음 이렇게 성함을 밝혀도 되는지 모르겠네요. ^^

수정내용은 8페이지의 maxRequests 에 대한 내용입니다.

1. 원문
Different DBMS have different limits, but no database is without these limits. This should usually be at least 10 times maxTransactions (see below) and should always be greater than both maxSessions and maxTransactions.
 
2. 번역본
다른 DBMS는 다른 제한을 가진다. 이것은 최소한 10개의 maxTransactions이고 언제나 maxSessions과 maxTransactions보다 크다.
 
3. 고친 번역
다른 DBMS는 다른 제한을 가지지만, 이러한 제한이 없는 데이터베이스는 없다. 이러한 제한은 보통 최소한 maxTransaction의 10배이며(아래를 보라) 항상 maxSessions와 maxTransactions보다는 크다.

변명이지만 이 문서 번역은 거의 3년전인가 했던 내용이기도 하고 그 당시에는 번역하는데 미쳐 번역품질에 대해서는 그다지 고민을 못해서 오히려 없는게 나을것 같다고 불평하시는 분이 있을까 고민입니다.
너그럽게 봐주시길 바랍니다. ^^

'자바' 카테고리의 다른 글

[JSON] Jackson JSON Processor  (0) 2009.03.01
[jersey] 1.0.2 릴리즈  (0) 2009.03.01
[ibatis] 메일링리스트를 통해서 본 3.0 소식  (2) 2009.02.15
[자바] 인코딩  (1) 2009.01.30
[eclipse] 2008년 정리  (1) 2009.01.16
Posted by fromm0
|
요즘 가수들이 불법다운로드로 인해 죽어라 고생한다는 말이 많죠..??
저작권에 대해 무지한 부분도 있지만 알고 있는 부분에 대해서는 최대한 지켜주고자 하는 마음이 있습니다.
그래서 가급적이면 음원을 정식으로 구매하고자 시작했던게 멜론 가입 후 mp3다운로드였습니다.


필요할때마다 가입해서 사고싶은 mp3를 받아서 들을려고 했는데. 그런 기분을 확 버려버린 일이 생겼습니다.
이 부분은 모든 음원 판매사이트가 같은 형태인것으로 보입니다만 멜론이나 도시락과 같은 음원 판매사이트는 기본적으로 자동결제형태를 취하는 것으로 보입니다.
이를테면 제가 처음 계획했던 것은 1개월 가입하고 mp3를 구매하고 나중에 다시 필요할때 다시 가입해서 mp3를 구매하는 형태가 아니라 초기 가입할때 자동결제가 기본이라 초기 가입하고 이후 매달 자동으로 결제가 된다는 점입니다. 결과적으로 첫달에 필요한 mp3를 다운받고 이후.. 해지를 별도로 하지 않는다면 그 만큼의 요금이 자동으로 결제가 되는 셈입니다.

이렇게 숨겨놓고.. 충분히 알렸답니다. 기가 찰 노릇입니다.

이런점이 명확히 전달되지 않아서 인지 저뿐 아니라 저와 함께 프로젝트를 진행하시던 과장님도 같은 일을 경험하셨다고  하네요. 저도 3개월이 지난 시점에나 알아서 오늘 고객센터로 전화를 했습니다.
마지막 결제분에 대해서는 환불이 가능하지만 그 외의 경우에는 고객이 100% 책임을 져야 한다는 군요.
사실 이 글을 쓰면서 굉장히 흥분한 면도 있지만 아직 우리나라 서비스는 고객 입장에서 볼때 유연성이 굉장히 떨어진다고 보여집니다. 오픈라인 매장이고 제가 CD를 산 이후.. 포장을 뜯었다면 분명이 환불이 어려운 원인이 될수 있지만 사용내역조차 없는 2개월분에 대해 100% 사용자가 책임을 져야 한다는 것은 이해할수 없는 서비스 정책입니다.

다시 생각해보면 이렇습니다.
멜론은 음원 판매 서비스가 아니라.. 음원판매업소일 뿐입니다. 서비스라는 단어를 잘못 붙이는 대표적인 경우라고 봐지는 군요.. 이런 판매업소와 이런 이해할 수 없는 서비스를 사용하는 저와의 마찰이었습니다.

'일상' 카테고리의 다른 글

[일상] 이번주말에 해먹은 것들  (4) 2009.04.06
[일상] JCO 컨퍼런스 간단 후기  (6) 2009.03.01
[일상] 도메인 기간 연장  (0) 2009.02.14
[일상] ubuntu  (4) 2009.02.02
[팁] Live USB Creator  (0) 2009.01.30
Posted by fromm0
|
원래 작년에 베타버전이 릴리즈되어야 할 터였는데.. 아직도 그다지 소식이 없습니다.
간혹 메일링리스트를 통해 한번씩 언급이 되기는 하지만 이 역시 .. 극히 적죠..
메일링리스트를 볼때.. 몇가지는 알수 있을듯 합니다.

▣ iBATIS 2.0
1. 계획했던 모든 기능이 완성되어 있어 더이상의 기능추가는 없다. 단 유지보수및 버그수정을 한 버전은 마이너로 릴리즈될수 있다.


▣ iBATIS 3.0
1. http://opensource.atlassian.com/confluence/oss/display/IBATIS/iBATIS+3.0+Whiteboard 를 통해 3.0에서 구현할 많은 아이디어를 받았는데, 현재 이 화이트보드 페이지는 너무 복잡해서 더이상 보지(?)않는다고 합니다. 하지만 3.0을 구현하기 위한 많은 아이디어는 충분히 모았다고 생각한다네요.
2. 조만간 베타버전을 릴리즈 할 예정이며 소스는 http://svn.apache.org/repos/asf/ibatis/trunk/java/ibatis-3/ 에서 받을수 있습니다.
3. 코어는 이미 완성되어는데, XML은 새로운 형태로 구현되었고 좀더 자세한 정보를 가진다고 합니다.
그외 매핑, 자동매핑, 조인매핑, 캐싱, 트랜잭션 관리, 배치처리, 자동커밋과 그외 최근에 도입된 많은 기술들이 구현되었습니다.
4. 구현이 남아 있는 부분은 다음과 같습니다.
* 인터페이스 바인딩
* 애노테이션으로 설정하기
* 새로운 동적 SQL

이 정도네요..

▣ 메서드명
기존에 2.0 버전은 com.ibatis.sqlmap.client.SqlMapClient 인터페이스의 delete, executeBatch, executeBatchDetailed, insert, queryForList, queryForMap, queryForObject,  queryForPaginatedList, queryWithRowHandler, startBatch, update 가 제공되었습니다만.
3.0에는 org.apache.ibatis.api.SqlSession 인터페이스가 메서드를 제공합니다.


▣ MapperConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE configuration
    PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"
    "http://ibatis.apache.org/dtd/ibatis-config-3.dtd">

<configuration>

  <properties resource="org/apache/ibatis/parser/mapper.properties">
    <property name="driver" value="org.apache.derby.jdbc.EmbeddedDriver"/>
  </properties>

  <settings>
    <setting name="cacheEnabled" value="true"/>
    <setting name="lazyLoadingEnabled" value="true"/>
    <setting name="multipleResultSetsEnabled" value="true"/>
    <setting name="useColumnLabel" value="true"/>
    <setting name="enhancementEnabled" value="false"/>
    <setting name="generatedKeysEnabled" value="false"/>
    <setting name="defaultExecutorType" value="SIMPLE"/>
    <setting name="defaultStatementTimeout" value="25000"/>
  </settings>

  <typeAliases>
    <typeAlias alias="Author" type="domain.blog.Author"/>
  </typeAliases>

  <typeHandlers>
    <typeHandler javaType="String" jdbcType="VARCHAR" handler="org.apache.ibatis.parser.ExampleTypeHandler"/>
  </typeHandlers>

  <objectFactory type="org.apache.ibatis.parser.ExampleObjectFactory">
    <property name="objectFactoryProperty" value="100"/>
  </objectFactory>

  <plugins>
    <plugin interceptor="org.apache.ibatis.parser.ExamplePlugin">
      <property name="pluginProperty" value="100"/>
    </plugin>
  </plugins>

  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC">
        <property name="" value=""/>
      </transactionManager>
      <dataSource type="UNPOOLED">
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>

  <mappers>
    <!-- mapperXML vs. mapperClass-->
    <mapper resource="org/apache/ibatis/parser/AuthorMapper.xml"/>
  </mappers>
</configuration>

▣ 다양한 ResultMap 설정
<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE mapper
    PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
    "http://ibatis.apache.org/dtd/ibatis-mapper-3.dtd">

<mapper namespace="com.domain.BlogMapper">

  <resultMap id="blogWithPosts" type="Blog">
    <id property="id" column="id"/>
    <result property="title" column="title"/>
    <association property="author" column="author_id" select="com.domain.AuthorMapper.selectAuthorWithInlineParams"/>
    <collection property="posts" column="id" select="selectPostsForBlog"/>
  </resultMap>

  <resultMap id="joinedPost" type="domain.blog.Post">
    <id property="id" column="post_id"/>
    <result property="subject" column="post_subject"/>
    <association property="author" column="post_author_id" resultMap="joinedAuthor"/>
    <collection property="comments" column="post_id" resultMap="joinedComment"/>
    <collection property="tags" column="post_id" resultMap="joinedTag"/>
    <discriminator javaType="int" column="draft">
      <case value="1" resultMap="draftPost"/>
    </discriminator>
  </resultMap>

  <resultMap id="selectImmutableAuthor" type="domain.blog.ImmutableAuthor">
    <constructor>
      <id column="id" property="id"/>
      <result property="username" column="username"/>
      <result property="password" column="password"/>
      <result property="email" column="email"/>
      <result property="bio" column="bio"/>
      <result property="favouriteSection" column="favourite_section"/>
    </constructor>
  </resultMap>

</mapper>

관련 소식은 http://www.mail-archive.com/user-java@ibatis.apache.org/msg13225.html 에서 다시 확인하실수 있습니다.

'자바' 카테고리의 다른 글

[jersey] 1.0.2 릴리즈  (0) 2009.03.01
[ibatis] 개발자 가이드 업데이트  (0) 2009.02.28
[자바] 인코딩  (1) 2009.01.30
[eclipse] 2008년 정리  (1) 2009.01.16
[groovy] HTTPBuilder module 사용하기  (0) 2009.01.11
Posted by fromm0
|
openframework.or.kr 도메인을 다시 연장했습니다.



이젠 이 도메인을 저를 설명하는 하나의 수단이 되었네요.

'일상' 카테고리의 다른 글

[일상] JCO 컨퍼런스 간단 후기  (6) 2009.03.01
[일상] 성숙하지 못한 고객과 서비스 멜론  (3) 2009.02.19
[일상] ubuntu  (4) 2009.02.02
[팁] Live USB Creator  (0) 2009.01.30
[생각] 시각과 시간  (2) 2009.01.16
Posted by fromm0
|