달력

52024  이전 다음

  • 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
eclipse 가 매번 버전이 올라가면 플러그인 설치 화면이 바뀌어서.. 애매하네요.

일단 메뉴에서 Help > Install New Software 를 클릭


화면 하단에 보면 already installed 라는 링크가 있습니다.


설치된 플러그인 목록을 보여주구요..  여기서 설치된 플러그인을 선택하고 Uninstall 을 클릭하면 필요한 창이 뜨는데. 그냥 그대로 따라가면 삭제됩니다.


Posted by fromm0
|
사내에서 필요한 자료를 만들다가 외부에 공개해도 되는 자료라 문서 일부를 수정하고 공유합니다.
내용은 "Infinitest 사용하기" 입니다.
돈이 있다면 JUnitMax 를 사용하는게 좋겠지만 지속적으로 비용이 발생한다는 것과 결정적으로는 더이상 개발이 되지 않는다는 단점이 있죠. JUnitMax 보다는 조금 약하지만 그래도 쓸만한 오픈소스입니다.


잘못 작성된 부분이 있다면 알려주셔도 좋구요. 질문이 있으면 질문 주셔도 됩니다.
예전처럼 답을 빨리 드릴수 있을지는 미지수입니다. ^^

2010년 12월 다시 라이센스가 GPL 3로 변경되면서 회사에서 사용해도 된다고 합니다. 

Posted by fromm0
|
질질끌더니.. 드뎌 3.0 베타를 릴리즈 했다.

메일링리스트는 http://www.mail-archive.com/user-java@ibatis.apache.org/msg14294.html 에서 내용 확인이 가능하다.


User Guide 를 보니 59페이지나 되네.. 번역해야돼.. 말어.. ??
일단 살펴보고 재밌는 포스팅을 해야 할 듯 싶다.

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

[팁] eclipse에서 플러그인 삭제하기  (2) 2009.08.10
[문서] Infinitest 사용하기  (2) 2009.08.10
[ibatis] 홈페이지개편.??  (2) 2009.07.23
[Spring] SpringSource Tool Suite  (0) 2009.05.08
[CI툴] hudson  (0) 2009.04.05
Posted by fromm0
|
SpringSource Tool Suite 이 free로 전환된다고 합니다.
여기서 Free의 개념이 좀 모호하긴 한데.. SpringSource 팀 블로그의 글 을 보니 Free의 개념을 간단히 설명해두었네요.
STS is available at no cost and free for all development purposes

모든 개발에서 비용이 들지 않고 자유롭게 사용할 수 있다는 뜻으로 보입니다.

제품 사이트 주소는 http://www.springsource.com/products/sts 이구요.
http://www.springsource.com/products/sts/registration 에서 등록 후 다운로드 받으시면 됩니다.

1. 등록페이지


2. 라이센스 공지


3. 다운로드 페이지


현재 안정버전은 2.0.2 이구요.. 마일스톤 버전은 2.1.0 M1 까지 나와있습니다.


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

[ibatis] ibatis 3.0 beta1 릴리즈  (5) 2009.08.09
[ibatis] 홈페이지개편.??  (2) 2009.07.23
[CI툴] hudson  (0) 2009.04.05
[JSON] Jackson JSON Processor  (0) 2009.03.01
[jersey] 1.0.2 릴리즈  (0) 2009.03.01
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
|
원래 작년에 베타버전이 릴리즈되어야 할 터였는데.. 아직도 그다지 소식이 없습니다.
간혹 메일링리스트를 통해 한번씩 언급이 되기는 하지만 이 역시 .. 극히 적죠..
메일링리스트를 볼때.. 몇가지는 알수 있을듯 합니다.

▣ 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
|

[자바] 인코딩

자바 2009. 1. 30. 17:13
가장 중요하면서도 가장 무지한 것중에 하나가 인코딩에 관련된 사항입니다.
자바로 6년 가까이 벌어먹고 살면서도 자바가 내부적으로 인코딩을 어떻게 처리하는지 몰랐네요.

한글 위키피디어인 http://ko.wikipedia.org/wiki/UTF-8 에서는. 다음처럼 설명하고 있구요.

자바는 내부적으로 문자열을 UTF-16 인코딩으로 저장하며, 문자열 직렬화를 위하여 UTF-8을 변형하여 사용하고 있다. 이를 변형된 UTF-8이라 부른다.

표준 UTF-8과의 차이는 크게 두 가지로, 한 가지는 U+0000을 1바이트가 아니라 2바이트, 즉 11000000 10000000으로 표현하는 것이다. 따라서 수정된 UTF-8에서는 인코딩된 문자열에 널 문자가 나타나지 않게 되며, 따라서 널 문자를 문자열의 끝으로 사용하는 C와 같은 언어에서 처리할 때 문자열이 잘리는 것을 막을 수 있다.

다른 한 가지 차이는 BMP 바깥의 문자를 인코딩하는 방법이다. 표준 UTF-8에서는 이 문자들은 위와 같이 4바이트로 인코딩되지만, 수정된 UTF-8에서는 이 문자들을 surrogate pair로 표시하여 두 문자로 나눈 뒤 같은 방법으로 인코딩한다. (이는 CESU-8과 동일하다) 이러한 방법은 자바의 문자 형이 16비트 크기이며, 따라서 U+10000 이상의 영역에 속한 유니코드 문자는 항상 두 개의 자바 문자로 표현되어야 한다는 것에서 유래하였다. 하지만 이 방법은 BMP 바깥의 문자를 UTF-8보다 더 긴 6바이트로 인코딩해야 한다.

이러한 차이 때문에 이 인코딩은 UTF-8과 엄격하게 구별해야 하며, 자바에서 내부적인 처리에만 사용하도록 권장된다. 또한 UTF-8과는 달리 IANA에 정식으로 등록된 문자 인코딩이 아니므로 인터넷 상의 정보 교환을 위해 사용하지 않아야 한다.

영문페이지인 http://en.wikipedia.org/wiki/UTF-8 에서는.. 다음처럼 설명하고 있습니다.

The following implementations are slight differences from the UTF-8 specification. They are incompatible with the UTF-8 specification.

[edit] CESU-8

Main article: CESU-8

Many pieces of software added UTF-8 conversions for UCS-2 data and did not alter their UTF-8 conversion when UCS-2 was replaced with the surrogate-pair supporting UTF-16. The result is that each half of a UTF-16 surrogate pair is encoded as its own 3-byte UTF-8 encoding, resulting in 6 bytes rather than 4 for characters outside the Basic Multilingual Plane. Oracle databases use this, as well as Java and Tcl as described below, and probably a great deal of other Windows software where the programmers were unaware of the complexities of UTF-16. Although most usage is by accident, a supposed benefit is that this preserves UTF-16 binary sorting order when CESU-8 is binary sorted.

[edit] Modified UTF-8

In Modified UTF-8 the null character (U+0000) is encoded as 0xc0,0x80 rather than 0x00. (0xc0,0x80 is not valid UTF-8 because it is not the shortest possible representation.) This means that the encoding of an array of Unicode containing the null character will not have a null byte in it, and thus will not be truncated if processed in a language such as C using traditional ASCIIZ string functions.

All known Modified UTF-8 implementations also treat the surrogate pairs as in CESU-8.

In normal usage, the Java programming language supports standard UTF-8 when reading and writing strings through InputStreamReader and OutputStreamWriter. However it uses modified UTF-8 for object serialization, for the Java Native Interface, and for embedding constants in class files. Tcl also uses the same modified UTF-8 as Java for internal representation of Unicode data.

어렵네요. 정리해야 겠습니다.

중요한 건 자바가 내부적으로 UTF-8 이 아닌 변형된 형태로 사용한다는 것이라고 볼수 있겠습니다.
이런 글에 .. 인코딩에 대해 명확하신 분이.. 덧글을 달아주시면 좋겠네요.
Posted by fromm0
|
Subclipse 1.4.7을 사용하고 있습니다.
svn ignore 처리한 폴더나 파일을 다시 commit 하기 위해서는 다음처럼 해야 된답니다.

1. Team 메뉴에서 Show Properties 를 선택합니다.


2. 그러면 다음과 같은 화면이 나오는데 역시 그림처럼 Delete Property를 해주면 끝..



Posted by fromm0
|
Subclipse 1.4.7 버전을 사용하고 있습니다.
오늘 뭔가 문제가 있는지 commit하는데 계속 아래와 같은 에러가 발생합니다.

Server sent unexpected return value (405 Method Not Allowed) in response to MKCOL request for

구글링을 해보니 아래 해결방법과 같은 URL이 있네요.
http://svn.haxx.se/users/archive-2005-11/0379.shtml

주절주절 써놨는데. 그냥 간단히 아래 순서대로 해봤습니다.

  1. svn cleanup
  2. svn update
  3. svn commit

이제는 정상입니다. ^^
Posted by fromm0
|

VisualVM 자체도 많은 기능을 제공하지만 몇가지 플러그인을 제공합니다.
어찌보면 VisualVM 자체보다도 이 플러그인 들의 기능이 더 강력합니다.

공식적으로 배포하는 플러그인은 아래에서 볼수 있듯이 10개입니다.


1. VisualGC


힙 메모리 정보를 보여주거나 GC작업에 대한 상황을 화면처럼 보여줍니다. VisualVM 의 모니터링 기능에 더해 사용하시면 모니터링에 적절하리라 생각됩니다.

2. VisualVM-MBeans


어찌보면 이미 다른 툴에서도 많이 제공하는 기능이 되어 버린 MBean관련 기능입니다.
그래도 플러그인 형태로 제공하다 보니.. 유용한 기능에는 의심의 여지가 없죠.

3. VisualVM-TDA


TDA는 https://tda.dev.java.net/ 에서 만들고 있는 쓰레드 덤프 분석기(Thread Dump Analyzer)입니다. GUI형태로 덤프를 분석해 줄뿐 아니라 현재 상태에 대해 간단히 정리해서 보여주기 때문에 덤프 데이터를 분석할때 보조적으로 사용하면 굉장히 유용한 툴입니다.
덤프 사이의 차이점도 비교해주는 기능을 제공합니다.
Posted by fromm0
|