블로그 이미지
올해목표 // 10월 어학연수 떠나자~ 자수씨

카테고리

전체글 (1457)
Brand New! (28)
주절주절 (213)
MOT (11)
해외쇼핑 (49)
쇼핑노트 (150)
취미생활 (94)
iPhone (4)
Eclipse (121)
Google (83)
Spring (31)
JAVA (176)
JavaScript (59)
WEB (49)
Database (20)
OS (26)
Tools (8)
Tips (26)
IT정보 (1)
Book (21)
Programming (37)
외부행사 (43)
주변인들 (17)
여행노트 (60)
학교생활 (30)
회사생활 (52)
사회생활 (5)
외국어공부 (12)
잡동사니 (30)
Total
Today
Yesterday
 
05-19 11:09
 

달력

« » 2024.5
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
 

최근에 올라온 글

최근에 달린 댓글


MANIFEST.MF 파일을 커스터마이징 하기 위해서는 maven-jar-plugin 을 이용합니다.
(http://maven.apache.org/plugins/maven-jar-plugin)

사용법은 아래와 같습니다.




전체적인 MANIFEST 설정은 아래의 구조를 갖습니다. (http://maven.apache.org/shared/maven-archiver/index.html)



addClasspath 설정을 하면 알아서 메이븐 디펜던시를 추가해줍니다. 참편하네요~

Posted by 자수씨
, |

요즘 회사의 기존 프로젝트를 메이븐으로 전환하면서 이런 구조로 프로젝트를 구성하면 좋겠다는 생각이 들어 포스팅을 하게 되었습니다.

erp 의 HR 을 구성하는 2종류가 있다고 가정하고 2개의 메이븐 프로젝트를 생성합니다.

ㅁ vicki-erp-hr-model
>> HR 모듈의 model 프로젝트


ㅁ vicki-erp-hr-service
>> HR 모듈의 service 프로젝트



이러한 경우 HR 을 구성하는 모듈끼리 분리가 되어 있어 모듈에 대한 전체적인 이해가 어려울 수 있습니다.

그래서 대부분의 오픈 소스 프로젝트의 경우 연관있는 모듈의 상위 프로젝트를 pom 프로젝트로 생성하여 자바프로젝트의 classpath를 지정하여 하나의 모듈처럼 처리할 수 있는 구조로 구성되어 있는 것을 많이 볼 수 있었습니다.

vicki-erp-hr 이라는 자바 프로젝트에 메이븐 POM 프로젝트를 적용하여 vicki-erp-hr-model 과 vicki-erp-hr-service 를 하위 모
듈로 구성시키고 클래스 패스를 지정하면 아래와 같은 구조의 프로젝트로 작업이 가능하게 됩니다.




이 구조를 조금더 확장시킨다면 MM 모듈 프로젝트 2개를 하나로 묶고

 + 


=



HR 과 MM 을 묶어서 하나의 프로젝트로 구성한다면 전체적인 프로젝트를 이해할 수 있는 시점에서도 파악할 수 있는 구조가 되는 것 입니다.



구성하는 사람은 클래스패스 잡을 때 쫌 귀찮긴 하더라도 상당한 장점이 많을 것으로 생각됩니다.

Posted by 자수씨
, |

Maven Enforcer Plugin

JAVA/Maven / 2011. 1. 3. 16:21

Maven Enforcer 플러그인은 메이븐 버전, JDK 버전, OS 종류와 같은 환경을 체크해주는 플러그인 입니다.
플러그인 홈페이지: http://maven.apache.org/plugins/maven-enforcer-plugin/



위의 사용예를 보게 되면, 메이븐 버전은 2.0.6, 자바 버전은 1.5, OS 는 unix 를 체크하게 됩니다.
위를 만족시키지 못한다면 빌드 에러가 발생하게 됩니다.

아직까지는 정의를 해줄만한 프로젝트를 구성해 본 적은 없으나 다른 메이븐 프로젝트를 보면 정의되어 있는 곳들이 좀 있어서 알아두면 좋을 것 같아 정리합니다.

Posted by 자수씨
, |

[Maven] Super POM

JAVA/Maven / 2010. 12. 26. 10:58

모든 메이븐 프로젝트의 POM 은 슈퍼 POM 을 확장합니다.
슈퍼 POM은 설치된 메이븐 디렉토리의 lib 에 maven-x.x.x-uber.jar 파일 안에서 찾을 수 있습니다. (3.0.x 버전에서는
maven-model-3.0.x.jar 파일에서 찾을 수 있습니다.)




 
우리가 접할 수 있는 POM 파일에 별도의 디펜던시와 플러그인 리파지토리를 지정하지 않아도 사용할 수 있는 것은 슈퍼 POM 에 설정된 내용을 확장하기 때문에 가능한 것 입니다.

Posted by 자수씨
, |

자바에서 interface 에 정의되는 메소드는 외부로 공개되는 메소드를 정의하는 것 입니다. 그러므로 private 나 protected 로 정의가 불가능합니다.

만약 하게 된다면 아래와 같은 컴파일 오류를 만나게 될 것 입니다.

Illegal modifier for the interface method ...; only public & abstract are permitted

기본적으로 interface 에 정의되는 메소드들은 public 접근 제어자를 갖습니다. 생략해도 관계가 없다는 것 입니다. 아마도 구색을 맞추기 위해 무의식적으로 interface 에도 public 을 붙이는게 습관이 되어버린 것 같습니다.

사실 크게 문제를 일으키는 부분은 아니지만 알고 있으면 좋은 정보라 생각됩니다.

Posted by 자수씨
, |

입력한 숫자에 대해 두 자리로 표현하는 방법에 대해 고민을 하고 있었는데, 생각한 것 보다 방법은 간단합니다.

java.text.NumberFormat nf = new java.text.DecimalFormat("00");
String result = nf.format(5);

위의 result 변수의 결과 값은 다음과 같습니다.

05


java.text.DecimalFormat 을 이용하여 자리 수에 맞게 표현할 수 있습니다. 세자리를 채우려면 생성자의 파라미터를 "000" 으로 설정하면 됩니다.

소수점 표현도 가능합니다.

new java.text.DecimalFormat("00.00");



세자리마다 쉼표를 넣고 싶다면 아래와 같은 NumberFormat 을 생성합니다.

new java.text.DecimalFormat("0,000");


알면 단순하고 모르면 개고생하는 프로그래밍의 세계~

Posted by 자수씨
, |

단순하게 HTML의 공백을   로 변환하는 로직은 아래와 같습니다.


하지만 이대로 사용한다면 문제가 있습니다. 바로 태그 내에 속성을 사용하면서 사용한 공백들도   로 바뀌어 버리게 됩니다.

[변환 전]
<div style="width=100%; height=100%;">태그  확인</div>

[변환 후]
<div&nbsp;style="width=100%;&nbsp;height=100%;">태그&nbsp;&nbsp;확인</div>



정규식을 사용해서 쉽게 변환하려 하였으나... 제가 아는 지식 내에서는 방법이 보이지 않아... 원초적인 방법을 사용하였습니다.


[변환 전]
<div style="width=100%; height=100%;">태그  확인</div>

[변환 후]
<div style="width=100%; height=100%;">태그&nbsp;&nbsp;확인</div>


흠... 이런 방법밖에 없을까요...

Posted by 자수씨
, |

iBATIS3 이 이전 버전과 가장 큰 차이점은 어노테이션을 이용하여 SQL 을 작성할 수 있다는 점 입니다.

이번 포스팅에서는 자바 어노테이션을 이용하는 Mapper 인터페이스를 활용하는 법에 대해서 알아보겠습니다.

Mapper 인터페이스를 사용하기 위해서는 기존에 생성했던 프로젝트에 pom.xml <dependency> 엘리먼트를 추가합니다.
<dependency>
  <groupId>cglib</groupId>
  <artifactId>cglib</artifactId>
  <version>2.1_3</version>
  <scope>runtime</scope>
</dependency>

위의 <dependency> 를 추가하지 않으면 아래와 같은 오류가 발생합니다.
Exception in thread "main" java.lang.NoClassDefFoundError: net/sf/cglib/proxy/MethodInterceptor



테이블과 관련된 Mapping 인터페이스를 정의합니다.
/kr.co.vicki.ibatis3.example/src/main/java/kr/co/vicki/ibatis3/example/data/mapper/UserMapper.java



Mapping 인터페이스를 이용하는 경우 ibatis-config.xml 설정이 필요없습니다. 소스 레벨에서 설정이 가능합니다.


Mapper 인터페이스를 활용하는 경우 손쉽게 작성할 수 있다는 장점이 있지만 동적 SQL 작성이 용이하지 않은 것 입니다.

자바 어노테이션이 조금만 더 유연했으면 좋았을텐데... 아쉬운 점이 있습니다.

Posted by 자수씨
, |

사용자 정보를 가지고 있는 User 라는 테이블을 가지고 iBATIS3 를 활용하는 방법에 대해 정리해보도록 하겠습니다.

User
 
id text
name text
address text


테이블과 맵핑되는 모델 클래스를 생성합니다.
/kr.co.vicki.ibatis3.example/src/main/java/kr/co/vicki/ibatis3/example/model/User.java


User 테이블과 관련된 SQL을 정의 xml 을 생성합니다.
/kr.co.vicki.ibatis3.example/src/main/resources/kr/co/vicki/ibatis3/example/data/mapper/user-mapper.xml

테이블 생성 스키마는 update 문을 이용하였습니다.


이제 가장 중요한 iBATIS 설정파일을 생성합니다.
/kr.co.vicki.ibatis3.example/src/main/resources/kr/co/vicki/ibatis3/example/conf/ibatis-config.xml



정상적으로 파일이 만들어졌다면 아래와 같은 구조로 생성되었을 것 입니다.




실행 결과
User [id=vicki, name=2007041, address=우리집]



기존 iBATIS2 에 비해서 구성이 잘 갖춰진 느낌입니다.

다음 포스팅에서는 Mapper 인터페이스를 이용하는 법에 대해서 정리해보도록 하겠습니다.






Posted by 자수씨
, |

지난 토요일, 선배네 회사에 갔다가 월간 마이크로 소프트웨어 7월호에서 관심이 갈만한 프로젝트 명을 발견하였습니다.

"Jopr"...

JMX에 익숙하지 않은 사용자들을 위한 관리 툴로서, JBoss 커뮤니티에서 진행하는 잘 알려진 프로젝트였습니다. 베트남에 있을 때 눈여겨 모았던, "infinispan" 도  JBoss 커뮤니티에서 진행하는 오픈 소스 프로젝트도 월간마소에서 소개가 되었습니다.

일단은 JOPR 을 맛보기 위해 홈페이지(http://jboss.org/jopr) 에 접속하여 최신 버전을 설치하였습니다.

RHQ 3 (includes Jopr)
Postresql (8.3.11)

우여곡절 끝에 서버와 에이전트 설치를 완료하고 접속을 하였으나... JBossAS 5.1 은 자동으로 찾아지지 않습니다.

구글에서 찾아보니 5.1 버전은 안되고... 6.0 이 된다고 하는 글들이 보이네요...

잘 설치되고 테스트까지 끝나면 설치기를 올리려 했는데... 이런 낭패가...



JBossAS 4 버전은 잘만 찾더만...


Posted by 자수씨
, |

글 보관함

최근에 받은 트랙백