Whiteship's Note

'2008/08'에 해당되는 글 55건

  1. 2008.08.29 Crazy.. 딱 내 노래구나.
  2. 2008.08.29 20080829 GMP
  3. 2008.08.29 톰캣에 Jira ear/war 버전 설치하기
  4. 2008.08.28 20080828 GMP
  5. 2008.08.28 [Spring Masters] 스프링 AOP 학습 참가 시험 문제 공개 (2)
  6. 2008.08.27 TextMate 괜찮군요~ (2)
  7. 2008.08.27 Confluence 2.9 유용한 태그 모음
  8. 2008.08.25 도와주세요! 팀장이 됐어요
  9. 2008.08.25 20080825 GMP
  10. 2008.08.25 OSGi에서 SessionFactory(Hibenate) 사용하기
  11. 2008.08.25 Spring Masters. 첫 번째 스터디 주제는. Spring AOP (4)
  12. 2008.08.25 Spring Masters 참가 조건 (4)
  13. 2008.08.24 내 마음에 생긴 블랙홀 (4)
  14. 2008.08.23 시야의 차이 (2)
  15. 2008.08.21 20080821 GMP
  16. 2008.08.21 캬.. 정말 멋진 전문가란..."철학이 있는 전문가" (2)
  17. 2008.08.21 static inner class를 Spring에 bean으로 등록하기 (2)
  18. 2008.08.21 this.new XXX()를 쓰는 이유가 뭘까? (2)
  19. 2008.08.20 OSGi 패키지가 아니라 서비스야 말로 진정한 Dynamic
  20. 2008.08.19 20080819 GMP
  21. 2008.08.19 흠... Hibernate Annotation 번들 왜이래 왜 ㅠ.ㅠ
  22. 2008.08.19 독백 (4)
  23. 2008.08.18 pom.xml에서 bnd 설정 파일 분리하기
  24. 2008.08.18 Nexus - Maven Repository Manager 설치하기 (8)
  25. 2008.08.16 하이버네이트 3.3.0 GA 릴리즈~
  26. 2008.08.14 OSGi 기반 프레임워크과 애플리케이션 아키텍처 진화 과정 (2)
  27. 2008.08.14 SVN 무료 클라이언트 Subversion (1)
  28. 2008.08.14 OSGi에서 Hibernate의 SessionFactory 문제 (2)
  29. 2008.08.14 오픈소스 그리드 뭘 쓸까? (4)
  30. 2008.08.13 Confluence 마이그레이션하기

Crazy.. 딱 내 노래구나.

모하니?/Thinking : 2008.08.29 22:25




억지로 숨 쉬기도 힘든데, 세상은 웃으라 재촉해.
모든 걸 잊으려 불을 꺼도, 추억은 잠들길 거부해.
지금쯤 아무렇지도 않게, 살아갈 잔인한 널 위해 노래해.
워우 워우 워우 워우. 날 이렇게 만든 널 저주해.

찢어 내 맘. 찢어 찢어 내 맘.
찢어 내 삶. 찢어 찢어 내 맘.
신고
top


20080829 GMP

모하니?/GMPing : 2008.08.29 19:46


News

male 메이ㅓㄹ: 남자
figure 숫자, 인물, 형태, 정부 자료들을 이야기 할 때 사용.
-cide 죽이다.
suicide 수어싸이드

Government figures show suicide is leading cause of death for South Korean males 18 to 35 and for teenagers. It is the second leading cause.

Screen English

What's going on?
Where do we start?
With this I guess.
What's that. Let me see.
No. Not until you tell me what you need to tell me.
What?
Last time we were on the phone, you said the next time we met, you have something you need to say to me.

Pop's English

To think that that only yesterday, I was cheerful, brighten, and gay(행복한. 하지만 요즘은 쓰면 안 돼.).
Looking forward to who wouldn't do the role ...

Talk Play Learn

Do you mind if I ~ (제가 ~하면 싫으세요?)
Do you mind if I come in?
Do you mind if I come by?
Do you mind if I copy yours?
Do you mind if I add a word?
Do you mind if I blow my nose?
Do you mind if I clear the table?
Do you mind if I use your phone?
Do you mind if I turn on the light?

Learn More

진짜야? = You don't say.
신고

'모하니? > GMPing' 카테고리의 다른 글

20090319 GMP  (2) 2009.03.19
20090317 GMP  (0) 2009.03.17
20081224 GMP  (0) 2008.12.24
20081223 GMP  (0) 2008.12.23
20081218 GMP  (4) 2008.12.18
20080829 GMP  (0) 2008.08.29
20080828 GMP  (0) 2008.08.28
20080825 GMP  (0) 2008.08.25
20080821 GMP  (0) 2008.08.21
20080819 GMP  (0) 2008.08.19
20080813 GMP  (0) 2008.08.13
top

TAG GMP

톰캣에 Jira ear/war 버전 설치하기

Good Tools : 2008.08.29 13:16


참조 : http://www.atlassian.com/software/jira/docs/latest/servers/tomcat60.html

1. 다운로드

생략

2. DB 만들기

생략

3. <datasource>에서 dialect 변경하기

Jira 설치 폴더/edit-webapp/WEB-INF/classes/entityengine.xml  파일을 열고, <datasource> 태그에서 field-type-name 속성에 사용할 DB 이름을 설정해줍니다.

이 때 주의할 사항들이 <datasource> 엘리먼트 위에 주석으로 나와있으니 꼭 참조하시기 바랍니다. 그 중 하나로, HSQL을 사용하지 않을 떄는 schema-name="PUBLIC" 이 설정을 삭제해야 합니다.

4. 빌드하기

Jira 설치 폴더 에서 ./build 실행.
그러면 dist-tomcat/tomcat-6 폴더에 war 파일과 jira.xml 파일을 만들어 줍니다.

5. 추가 라이브러리 설치

Jira 실행에 필요한 라이브러리를 톰캣/lib 폴더에 추가하기.
http://www.atlassian.com/software/jira/docs/servers/jars/v1/jira-jars-tomcat6.zip

6. 톰캣 설정하기

빌드하기 과정에서 만들어준 jira.xml 파일을 톰캣/conf/Catalina/localhost로 복사합니다. 그리고 열어서 편집해야 합니다. 편집할 것은 세 가지.

6-1. conf/Catalina/localhost/jira.xml

<Context>엘리먼트의 docBase가 제대로 설정되어 있는지 확인(이건 기본으로 알아서 제대로 잡아 주는데 그래도 확인하는게 좋습니다.)합니다.

그리고 <Resource>에 datasource 설정을 사용하시는 DB에 맞게 적절하게.. 설정해줍니다.

6-2. conf/server.xml

톰캣/conf/server.xml 을 열고 useBodyEncodingForURI 속성을 추가해줍니다. 국제화 지원때문에..

<Connector port="8080" protocol="HTTP/1.1"
        connectionTimeout="20000"
        redirectPort="8443" useBodyEncodingForURI="true"/>

6-3. bin/setenv.sh

메모리 부족 문제가 생길 수 있으니 bin 폴더에 setenv.sh 파일에 다음을 추가합니다.(이 파일이 없을 땐 만들어 줍니다.)

export CATALINA_OPTS="$CATALINA_OPTS -Dorg.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true"

7. 톰캣 재기동.

톰캣을 껐다 키고, localhost:8080/jira로 접속합니다.
신고
top

TAG JIRA

20080828 GMP

모하니?/GMPing : 2008.08.28 19:28


News

eco-pedal
system 시스뜸
gas pedal 가속페달(=accelerator)

With eco-pedal systems swiched on, acceleration activates a machanism that pushes back on the gas pedal when drivers speeing up too quickly.

Screen English

The circle is about to be broken. Plz come out.
What is going on?
Mom, You've got to belive me.
No nono One more word or something ..., I swear I'll do something.
But I hide the book. They'll never find it.

Pop's English

In a little while from now, if I'm not feeling any less sour, I promise myself to treat myself and visit a nearby tower.
좀 뒤에도, 참단한 기분이 나아지지 않으면, 근처 타워로 올라갈거다.

Talk Play Learn

I'm allergic to ~ (~에 알레르기 있어.)
I'm allergic to dogs.
I'm allergic to follen.
I'm allergic to amonds.
I'm allergic to sun light.
I'm allergic to pitches.
I'm allergic to fish.
I'm allergic to math.
I'm allergic to sports.

Learn More

먹다 남은 음식 = left overs.


신고

'모하니? > GMPing' 카테고리의 다른 글

20090317 GMP  (0) 2009.03.17
20081224 GMP  (0) 2008.12.24
20081223 GMP  (0) 2008.12.23
20081218 GMP  (4) 2008.12.18
20080829 GMP  (0) 2008.08.29
20080828 GMP  (0) 2008.08.28
20080825 GMP  (0) 2008.08.25
20080821 GMP  (0) 2008.08.21
20080819 GMP  (0) 2008.08.19
20080813 GMP  (0) 2008.08.13
20080807 GMP  (0) 2008.08.07
top

TAG GMP

[Spring Masters] 스프링 AOP 학습 참가 시험 문제 공개

모하니?/Planning : 2008.08.28 14:15


Spring AOP 학습 이전에 필수로 알고 있어야 할 스프링 지식들을 확인하는 시험입니다. 24시간 안에 답을 적어서 저에게 메일로 제출해주세요.

1.    FactoryBean에 대해서 설명하세요.
2.    FactoryBean에서 getObject()가 돌려주는 객체 말고, FacotryBean 자체를 받아오려면 어떻게 해야 하나요?
3.    BeanFactory와 ApplicationContext의 공통적인 Life-cycle 클래스들의 나열하고 각자의 역할들을 설명하세요.
4.    Bean을 생성하고 소멸시킬 때 특정 메소드를 호출하는 방법에는 어떤 것들이 있으며, 그 방법 들 중에 어떤 방법이 더 좋을지, 이유와 함께 설명하세요.
5.    Bean들 사이에서 Circular Dependency가 있을 경우 어떤 일이 발생하는지, 그리고 해결할 수 있는 방법들을 나열해 주세요.
6.    Autowiring을 사용하여 byType으로 빈을 주입할 때, 같은 타입의 빈이 두 개 이상일 때 어떤 현상이 발생하나요?
7.    Lookup method injection과 Arbitrary method replacement가 무엇인지 설명하세요.
8.    @Autowired는 빈의 타입을 사용하여 종속성을 주입합니다. 이 때, 같은 타입의 빈이 여러 개라면, 어떻게 해야 하나요?
9.    <context:component-scan> 설정을 등록해보세요. 기본 패키지는 me.whiteship 이며, 단, org.springframework.stereotype.Controller 애노테이션이 붙어있는 것들은 컴포넌트 스캔 대상에서 제외합니다.
10.    <tx:annotation-driven transaction-manager="transactionManager"/> 이 빈 설정에는 불필요한 설정이 있습니다. 그 설정이 무엇이며 이유가 뭔가요?

다음은 OX 퀴즈입니다.

11.    웹 서버에서 동작할 스프링의 Singleton Scope 빈은 반드시 Thread-Safe 해야 한다.
12.    스프링에서 선언적인 트랜잭션 관리를 할 때는 반드시 Proxy(CGLib이던 JDK의 Proxy건)를 사용해야 한다.
13.    ApplicationContext는 모든 Singleton 스코프의 빈을 초기에 생성한다.
14.    JtaTransactionManager는 nested transactions을 지원한다.
15.    ApplicationContext – B가 ApplicationContext – A를 상속하고 있을 때, 즉 A가 부모, B가 자식 관계일 때, A에 있는 빈이 B에 있는 빈을 참조할 수 있다.

마지막으로 Spring Masters에서 스프링 AOP 학습을 하려는 이유와 목적이 무엇인지 말씀해주세요. 수고하셨습니다.

시험을 치르고자 하시는 분들은 저에게 메일을 주시면 위와 동일한 문제를 담고 있는 워드 파일을 보내드립니다. 시험 방식은 오픈북이며, 시간 제한은 24시간입니다. 오늘 보내드리면, 적어도 내일 저녁까지는 제 메일 함으로 와야 합니다. 그럼 제가 답변들을 검토한 다음 피드백과 함께 참가 가능 여부를 메일로 보내드리겠습니다.

위 문제들이 너무 쉽다고 스터디도 쉽게 보시면 안 됩니다. 위 문제들을 풀 수 있느냐가 중요 한 게 아닙니다. 이 시험은 스프링 AOP 스터디 참가 조건 중 하나 일 뿐이라는걸 알아주세요.

본 글에 댓글로 질문에 대한 답변이나 또 다른 질문을 하시는 건 자제해주세요. 경우에 따라서는 삭제할 수도 있습니다. ;)
신고
top


TextMate 괜찮군요~

Good Tools : 2008.08.27 21:31


사용자 삽입 이미지
이녀석으로 루비랑 좀 친해져볼까 합니다.

단축키를 커맨드+R 밖에 모르겠다는게 문젠데;;

한 줄 삭제, 자동 완성, 한 줄 복사 이 정도 단축키만 알아도 좋을텐데 말이죠...
신고
top

TAG ruby, Textmate

Confluence 2.9 유용한 태그 모음

Good Tools : 2008.08.27 19:49


참조 : http://confluence.atlassian.com/display/DOC/Working+with+Macros

1. RSS 구독하기

{rss:url=[http://www.bbc.co.uk/syndication/feeds/news/ukfs_news/world/rss091.xml]|max=5}

2. 인덱스

{index}

3. JIRA 연동

사용법 참조: http://confluence.atlassian.com/display/DOC/JIRA+Issues+Macro

{jiraissues:url=<URL of your JIRA XML view>}

4. task 목록

{tasklist:Things to do}
Mary to preview her presentation with the team
Tony to call meeting with investors
Tony to book catering
Mary to finalise presentation with Steve
Everyone relax before presentation
{tasklist}

5. 이미지 썸네일

!wikipatterns.png|thumbnail!

6. 갤러리

{gallery:title=Atlassian T-shirts}
{gallery}

7. 기타.. 알고 있는건 생략.

코드, 테이블, 링크, 리스트. ...
신고
top


도와주세요! 팀장이 됐어요

모하니?/Reading : 2008.08.25 21:20


사용자 삽입 이미지

오호.. 재밌더군요. 책의 반 정도가 소설 형식이라 읽기 쉬웠습니다. 책을 굉장히 느리게 읽는 저조차 반나절에 전부 읽을 수 있었습니다.

캬... 불평불만 많은 직원, 굉장히 똑똑하고 책임감 있는 직원, 감정적인 직원, 잘 따르는 직원, 못 된 부장, 요구사항을 계속 변경하는 고객 사이에서 성장해 나가는 팀장의 모습을 그린 소설입니다. 궁금하지 않나요? ㅋㅋ

전 이 책 읽어보고나서 팀장이라는 직업이 얼마나 피곤한(?) 일인지 간접 경험을 할 수 있었습니다. 다음에는 이런 책도 나왔으면 좋겠습니다.

도와주세요! 개발자가 됐어요.

신고
top


20080825 GMP

모하니?/GMPing : 2008.08.25 19:52


News

Manhatton 맨햍은
department 디팔ㅌ먼트
vehicle 비어클, 비히클
install 인스떨
scan 스깬
license plat 자동차 번호판

A new plan intended to protect Manhatton. The police department(PD) is installing technology to scan a photograph the license plate of all vehicles coming on to the island.

Screen English

He is not coming easy.
He is with someone else. He is moved in with her.
He is not getting back with mom. He is not.
Mom wanted to him to tell you himself.
She is been waitng for him to say.

Pop's English(Officially missing you)

All I here is rain drops falling on the roof top.
oh.. baby tell me why did you have to go.
cause this pain I'm feeling won't go away and today I'm officially missing you.

Talk Play Learn

I saw her ~ing(나 그녀가 ~ 하는거 봤어.)
I saw her yelling.
I saw her drinving.
I saw her singing.
I saw her dancing.
I saw her cheating.
I saw her studying.
I saw her whispering.
I saw her running away.

Learn More

Do you get the picture = 알겠어?

신고

'모하니? > GMPing' 카테고리의 다른 글

20081224 GMP  (0) 2008.12.24
20081223 GMP  (0) 2008.12.23
20081218 GMP  (4) 2008.12.18
20080829 GMP  (0) 2008.08.29
20080828 GMP  (0) 2008.08.28
20080825 GMP  (0) 2008.08.25
20080821 GMP  (0) 2008.08.21
20080819 GMP  (0) 2008.08.19
20080813 GMP  (0) 2008.08.13
20080807 GMP  (0) 2008.08.07
20080801 GMP  (0) 2008.08.01
top

TAG GMP

OSGi에서 SessionFactory(Hibenate) 사용하기

Spring DM/exercise : 2008.08.25 14:59


참조 :
http://www.osgi.org/blog/2007/06/osgi-and-hibernate.html
http://notehive.com/wp/2008/07/23/osgi-hibernate-spring-dm-sample/

번들 세 개만 살펴보겠습니다.

1. hibernate-class
2. hibernate-session
3. model-a

1. hibernate-class

이 녀석은 하이버네이트 라이브러리를 묶어놓은 번들입니다. 얘가 담고 있는 라이브러리는 다음과 같습니다.
사용자 삽입 이미지

이렇게 묶어놓은거 말고 스프링 번들 저장소에서 다운로드해서 일일히 설치해도 되야 할 것 같은데, 저번에도 해봤고, 오늘도 다시 시도 해봤는데, 똑같은 문제가 발생하고 있어서 실패했습니다. 아무래도 스프링 DM 지라에 올리던가 포럼에 올려서 물어봐야 할 것 같네요.

2. hibernate-session

이 녀석이 하는 일은 많습니다. 테스트 DB를 만들고, 하이버네이트 애노테이션을 사용한 도메인 클래스들도 있고, SessionFactory도 만듭니다. 단, SessionFactory를 만들 때 좀 특이하게 com.notehive.osgi.hibernate_samples.session.DynamicConfiguration 클래스를 사용하여 생성합니다. 실질적으로 SessionFactory를 만들어 내는 클래스입니다. 이 클래스의 핵심 메소드인 createNewSessionFactory() 메소드에서 JDK Proxy 클래스를 사용해서 프록시 객체를 생성하고 있습니다.

OSGi 서비스로 com.notehive.osgi.hibernate_samples.session.DynamicConfiguration를 공개하고 있습니다.

3. model-a

이 번들에는 하이버네이트 애노테이션을 사용한 모델과, DAO 구현체가 들어있습니다. SessionFactory와 TransactionManager를 내부에서 빈으로 정의하고 있는데, SessionFactory를 만들 때 위에서 살펴본 hibernate-session 번들이 공개한 com.notehive.osgi.hibernate_samples.session.DynamicConfiguration 서비스를 사용합니다. SessionFactory를 빈 설정만 보면, hibernate-session이나 model-a나 동일합니다.

단, 이 빈은 com.notehive.osgi.hibernate_samples.session.DynamicConfiguration 서비스를 가져옵니다. 그리고 DAO에서는 해당 서비스를 사용해서 만든 SessionFactory를 사용하죠.

그리고 DynamicConfigurationListener 라는 빈을 등록해서 DynamicConfiguration 이 객체에다가 하이버네이트 애노테이션이 붙어있는 클래스를 추가하거나, 제거하는 코드를 넣어뒀습니다.

마지막으로 주목할 것은 osgi.bnd 파일의 설정인데..

Hibernate-Contribution: default; \
    classes="com.notehive.osgi.hibernate_samples.model.a.A1"

이런식으로 속성/값을 추가해뒀고, 이 값을 hibernate-session 번들의 BundleTracker가 읽고 DynamicConfiguration에 애노테이션이 붙은 클래스를 추가/제거 합니다. 그 뒤엔 당근 새로운 SessionFactory를 만들어 가지게 됩니다.



캬...이제야 OSAF를 돌릴 수 있는(정확하겐 하이버네이트 App를 돌릴 수 있는) 플랫폼을 구성하는 실마리를 찾은 것 같습니다.

신고
top


Spring Masters. 첫 번째 스터디 주제는. Spring AOP

모하니?/Planning : 2008.08.25 12:17


스프링 AOP는 스프링 프레임워크의 IoC와 더불어 핵심 기능 중에 하나 입니다. 스프링 트랜잭션이 바로 이 스프링 AOP를 기반으로 구현되어 있죠. Cross-Cutting Concern이라고 들어보셨나요? 로깅, 보안, 트랜잭션 등등 사방에 흩어져있는 코드를 하나의 Aspect로 모아서 좀 더 OO스러운 개발을 가능케 한다는 것이 핵심 개념입니다.

하지만.. 왜 잘 사용을 안하죠? 이유는 여러 가지가 있지만, Aspect를 작성하는게 프레임워크 관점이니 프레임워크 만드는 사람 아니면 일반 개발자들은 몰라도 된다?.. 이런건 사실 이유로 꼽기 싫습니다. 학습자의 입장에서 나는 일반 개발자고, 너는 프레임워크 만들거고. 이런 구분이 필요한가요? 잘 안 사용하는 핵심적인 이유는 AOP를 잘 모르기 때문입니다. 간단한 AOP도 어떻게 만들지를 모르니까. 응용은 당연히 못 하는거죠. 스케이트보드로 따지면, 알리도 못하는데 팝샤빗을 할 수 있겠습니까?(혹시 알리 하실 줄 아시는 분 있으면 저 개인지도좀 부탁드리곘습니다. (__)/ 알리하게 되면 맛난거 사드릴께요.)

그럼 정말 그렇게 유용한가요? 네. 당연히 유용하죠. JDBC랑 Hibernate를 둘 다 쓰는 애플리케이션을 생각해볼까요? 하이버네이트를 제대로 사용하고 있다면 JDBC 쿼리를 날리기 전에 DB와 SessionContext를 동기화해줘야 한다는 사실을 알고 있을 겁니다. 저런 코드를 모든 DAO에 하드코딩하면 코드가 얼마나 지져분해질지 상상이 되나요? 저런걸 바로 AOP로 깔끔하게 처리할 수 있습니다. 이런걸 스프링 AOP 레퍼런스 읽으면서 상상이나 해보셨나요? 전 못했었습니다. 또 있습니다. 하이버네이트의 예외를 잡아서 DataAccessException으로 바꿔주는 Aspect를 만들어 두면, 굳이 스프링이 제공하는 HbiernateTemplate 같은 클래스를 사용하지 않아도 됩니다. 좀 더 non-invasive하게 스프링을 사용할 수 있는거죠.순수하게 하이버네이트로만 DAO를 구현할 수 있는 겁니다. 코드가 더 깔끔해지더군요. 이렇게 활용할 수 있는 방법은 정말 당야합니다. 다만, 잘 몰라서 활용하지 못하는 거죠.

그럼 본격적으로 Spring AOP 스터디에 대해 구상한 것을 정리해보겠습니다.

Spring AOP 스터디 만의 참가 자격은 다음과 같습니다.
  • 스프링 마스터즈 기본 참가 조건을 지킬 수 있어야 합니다.
  • 스프링 기초는 갖추고 있어야 합니다.
  • Spring tx를 사용해 본 경험이 있어야 합니다.
Spring AOP 스터디에서 할 일
  • Spring AOP 학습 - 레퍼런스(필수), 빨간책 마지막판(필수), 기타 참고자료(옵션)
  • Spring AOP 레퍼런스 Implementation. - 레퍼런스에 있는 모든 경우의 수를 직접 테스트 코드로 구현합니다.
  • Spring AOP 직접 구현해보기 - Spring AOP 2.0 이전 버전과 비슷한 녀석들을 직접 구현해 봅니다.
Spring AOP 스터디 방식
  • 스터디 참가 신청을 받습니다.
  • 사전 심의를 합니다. 스터디 참가 신청을 하신 분들에게 시험지를 나눠드릴 것이고, 그 시험을 통과해야 스터디에 참여하실 수 있습니다.
  • Spring AOP 학습은 나눠서 발표합니다. 분량을 나눠서 하루에 끝냅니다. AOP만 공부하는거라 얼마 안 됩니다. 영어책으로 학습을 못하는 분들은 참여하시면 안 됩니다.
  • Reference Implementation - 각자가 레퍼런스의 모든 예제를 구현합니다. 세 번으로 나눠서 할 생각입니다. 레퍼런스 기준으로 7장 먼저 하고, 그 다음에 6장. 마지막은 최종 점검.
  • Spring AOP 직접 구현은 한 번으로 끝냅니다. 세부 과제 목록을 만들어서 역시 각자 구현을 하고, 최대한 많은 과제를 수행한 사람이 스프링 AOP 스터디 1인자가 됩니다.
  • 모든 스터디의 결과물은 온라인으로 공개합니다. 저작권은 그때가서 생각해 봐야겠습니다.
  • 회비는 한 방에 10만원 씩 걷습니다. 한 번 걷은 회비는 절대로 안 돌려줍니다. 오히려 빠져나갈 때 벌금을 물을까도 생각 중입니다. 남는 돈은 회비로 탕진 합니다. 물론 회비 지출내역은 투명하게 관리합니다.
Spring AOP 스터디 일정
  • 1차(시작) : Spring AOP 학습. 발표.
  • 2차(1차 시점 2주후) : Spring Reference 7장 Implementation.(Spring AOP Classic)
  • 3차(2차 시점 2주후) : Spring Reference 6장 Implementation.(Spring @AOP)
  • 4차(3차 시점 1주후) : Spring Reference Implementation 최종.
  • 5차(4차 시점 1주후) : Spring AOP 직접 구현하기. 수행 과제 증명 및 발표.

대충의 계획은 위와 같습니다. 하실 분들은 댓글이나 의견을 주시기 바랍니다.
신고

'모하니? > Planning' 카테고리의 다른 글

S1A 비행기 예약 + 호텔 예약  (0) 2008.09.23
S1A(Spring One America) 질렀다. 가는거다.  (2) 2008.09.22
나의 길  (0) 2008.09.12
The Spring Experience는 사라졌다.  (0) 2008.09.03
[Spring Masters] 스프링 AOP 학습 참가 시험 문제 공개  (2) 2008.08.28
Spring Masters. 첫 번째 스터디 주제는. Spring AOP  (4) 2008.08.25
Spring Masters 참가 조건  (4) 2008.08.25
이번 주 할 일  (0) 2007.12.23
이번 주 할 일  (0) 2007.12.17
30분 대화  (0) 2007.12.14
이번 주 할 일  (0) 2007.12.09
top


Spring Masters 참가 조건

모하니?/Planning : 2008.08.25 11:27


스프링 마스터즈 스터디는 타의 추종을 불허할 만큼의 스프링 지식을 습득하는 것을 목표로 합니다. 타의 추종을 불허할 만큼이란.. 공부한 내용과 관련된 주제에 관해서 누가 물어보면, 정확하고 다양한 답변을 해 줄 수 있어야 합니다. 즉, 스프링 전문가를 목표로 하시는 분들이랑 같이 스터디를 하고 싶습니다. 구체적으로 아래와 같은 조건을 가지고 있습니다.

1. 스프링을 잘 알아야 합니다.

Spring is about choice. 따라서 스프링 AOP만 해도 aspect를 구현하고 사용할 수 있는 방법이 상당히 여러가지 있습니다. ORM-hibernate만 봐도 하이버로 DAO 구현할 방법이 세 가지 정도 있습니다. 각각의 방법을 모두 알고 그 장담점을 파악하고 있어야 합니다. 그래야 최소한 스프링을 좀 안다. 라고 할 수 있다고 생각합니다. 그냥 API 사용법 공부하실 분들은 스프링 마스터즈에서 스터디 하실 필요가 없습니다. 그런 분들은 그냥 레퍼런스를 보거나 책을 보시면 됩니다.

2. 코딩을 할 수 있어야 합니다.


머리로 알고 있는 것과 코딩을 할 수 있는 건 천지 차이입니다. 스타크래프트를 볼 때 말로는 이래라 저래라 잘 하면서 직접 플레이는 못하는 사람을. '입스타'라고 부릅니다. '입개발' 하실 분이랑은 같이 스터디할 생각이 없습니다. 스프링의 많은 경우의 수를 전부 코딩으로 증명할 생각입니다. 그래야 기억에도 잘 남고, 어쩌면 레퍼런스에서 이론적으로 말한 내용이 틀렸을 수도 있는데, 그걸 알아낼 수도 있죠. 스타를 처음 해보는 사람이랑 빌드 테크트리를 연구한 다던가, 그 장단점을 파악할 수는 없습니다. 어느 정도 단축키도 알고 있고, 전투 중에도 물량을 꾸준히 뽑아낼 수 있는 정도의 수준은 필요합니다.

3. 스터디가 최우선이어야 합니다.

오늘은 회사일이 많아서.. 집안에 일이 있어서.. 친구랑 약속이 있어서.. 라는 이유로 한 번이라도 스터디에 불참 할 여지가 있는 분들이랑은 역시나 같이 스터디를 할 생각이 없습니다. 우선순위, 가치관 문제지만, 적어도 스터디 기간 중에는 자기가 가진 최대한을 쏟아 부울 수 있는 사람하고만 같이 할 겁니다. 스터디 목적은 학습이지, 취미 생활이나 친목도모가 아닙니다. 그동안 공부 한 걸 발언하고, 평가 받고, 평가 해주고, 질문 할 수 있으려면 공부를 많이 해야 합니다. 공부를 할 시간이 없는 분들(가정일이나 연애나 회사일이 스터디보다 중요하신 분들)은 그렇게 하기 힘듭니다. 따라서 학생인 경우가 가장 좋은데, 일부 직장인들 중에도 저같이 특수한 근무 환경(눈치 볼 사람 없고, 출퇴근 자유, 프로젝트 한가함)이신 분들이라면 가능하실 겁니다.

이 정도 되면, 많은 분들이 참가 신청을 하시진 않겠죠? ㅎㅎ 원하던 바입니다. 마스터가 아무나 될 수 있는거면 마스터라고 할 수 없겠죠.
신고

'모하니? > Planning' 카테고리의 다른 글

S1A(Spring One America) 질렀다. 가는거다.  (2) 2008.09.22
나의 길  (0) 2008.09.12
The Spring Experience는 사라졌다.  (0) 2008.09.03
[Spring Masters] 스프링 AOP 학습 참가 시험 문제 공개  (2) 2008.08.28
Spring Masters. 첫 번째 스터디 주제는. Spring AOP  (4) 2008.08.25
Spring Masters 참가 조건  (4) 2008.08.25
이번 주 할 일  (0) 2007.12.23
이번 주 할 일  (0) 2007.12.17
30분 대화  (0) 2007.12.14
이번 주 할 일  (0) 2007.12.09
이번 주 할 일  (0) 2007.12.02
top


내 마음에 생긴 블랙홀

모하니?/Thinking : 2008.08.24 17:30


사용자 삽입 이미지
참조

저에게 블랙홀이 생겼습니다.
괜찮다가도.. 갑자기 모든 감정과 기운이 빨려 들어가는 커다란 구멍이 생겼습니다.
첨엔 자주 빠졌는데, 오늘은 좀 오랜만에 빠졌다가 나오느라 고생했습니다.

일단, 블랙홀에 안 빠지면 좋고, 빠졌을 땐 빨리 헤어나오는게 좋겠습니다.

안 빠지려면
1. 다른 생각을 하거나 다른 것에 집중을 해야 합니다.
2. 한가하면 안 됩니다. 주말엔 어떻게든 약속이나 일거리를 많이 만들어 둬야 합니다. 재밌는 것들로..

빨리 빠져나오려면
1. 잠시 누워서 쉽니다. 마음을 가라앉힙니다.
2. 집중할 수 있는 다른 것을 찾습니다.
3. 산책을 합니다.

아직 초보라, 이 정도 경험밖에 없습니다. 좀 더 익숙해지다보면, 노하우가 더 쌓일 듯 한네요.
신고
top

TAG 블랙홀

시야의 차이

모하니?/Thinking : 2008.08.23 14:24


공유기를 바꿔야 하는 상황이 생겼습니다. 회사에서 사용하던, 유 무선 공유기가 말썽을 부려서 말이죠. A실장님과 B개발자가 있습니다.

A 실장님의 시야.
- 나한테 공유기가 있으니 그걸로 바꿔끼면 되겠지?

B 개발자의 시야.
- 바꿔끼는 공유기가 유무선인지 유선만인지?
- 랜 설정 해둔거 백업.
- 메가패스(ISP) 로그인 정보 확인.
- 설치 후 작업
  - 고정 IP 쓰고 있는 컴터들의 게이트웨이 확인 및 수정
  - 랜 설정 복구.
  - 확인.
  - 노티.

ㅎㅎㅎㅎ 에휴~ 주말에 회사 나오지 말껄. 그럼 월욜에 정말 재밌었을텐데. ㅎㅎㅎ
신고
top


20080821 GMP

모하니?/GMPing : 2008.08.21 22:48


News

comic book 카믹 북
closer 클로설 가깝게
object 아브젝
adventure 애드벤쳘

It's the stuff comic book adventure made up. Sientists say they step closer to developer material that could render people and object invisible.

Screen English

Do you know what you've done by bring it out of the circle?
Don't you know what could happen? If it falls into wrong hand?
No...we don't. That's why I brought to you.
Then, you haven't read it.
He did.
Then you know more then you should.

Pop's English

Hey~~~ Baby. I wanna know if you be my girl.
Hey~~~ Baby. I wanna know if you be my girl.

Talk Play Learn

I have no idea what ~ (~ 뭔 얘긴지 몰겠어)
I have no idea what your plan is.
I have no idea what your point is.
I have no idea what your religion is.
I have no idea what your purpose is.
I have no idea what your problem is.
I have no idea what your blood type is.
I have no idea what your weak point is.

도대체 = What on earth,

Learn More

dollar = buck
신고

'모하니? > GMPing' 카테고리의 다른 글

20081223 GMP  (0) 2008.12.23
20081218 GMP  (4) 2008.12.18
20080829 GMP  (0) 2008.08.29
20080828 GMP  (0) 2008.08.28
20080825 GMP  (0) 2008.08.25
20080821 GMP  (0) 2008.08.21
20080819 GMP  (0) 2008.08.19
20080813 GMP  (0) 2008.08.13
20080807 GMP  (0) 2008.08.07
20080801 GMP  (0) 2008.08.01
20080731 GMP  (0) 2008.07.31
top

TAG GMP

캬.. 정말 멋진 전문가란..."철학이 있는 전문가"

모하니?/Thinking : 2008.08.21 16:33


토비님 블로그에서 철학이 있는 전문가라는 글을 읽었습니다. 저 글에서 많은 부분들이 눈을 번쩍 뜨게 만들고가슴을 찔러 왔습니다.
사실 블로그나 세미나, 기고등에서 어떤 기술을 잘 아는 것처럼 떠들어 대는 것은 하루, 아니 반나절만 자료를 뒤적이면 말빨, 글빨이 좀 있는 사람에게는 전혀 어려운 일이 아니다. 수많은 외국 자료와 블로그 글들을 적절히 짜집기 하면 충분하다. 문제는 그런데 시간과 마음을 뺏길 수록 정작 그 기술의 철학을 이해하거나, 경험을 통해서 발견한 진지한 고민을 나누는 일은 어려워지게 된다. 좀 심하면 고객이나 사람들에게 의도적이든 아니든 사기치고 다니는 자신의 모습을 발견할지도 모른다.
크헉.. 맞습니다. 사실 제가 블로그에 올리는 내용 중에 많은 부분이 어딘가에 이미 정리되어 있는 내용을 제가 다시 정리해서 올린 것일 뿐입니다. 저는 전문가가 되려면 한~~참 멀었다고 생각합니다. 왜냐면, 다음과 노력이 많이 부족하기 때문이죠.
하지만 어느 단계가 되면 이제 그 기술에 철학을 가진 전문가가 되기 위해서 노력하는 것이 필요할 것이다. 기술의 간단한 사용법 뿐만 아니라, 그 등장 배경과 장단점과 전략들을 고민해보고 스스로 코드를 만들어 적용해보고 느끼고 그 과정을 나누는 노력이 필요할 것이다.
하지만, 멀었다고 해서 초조하지는 않습니다. 사부님 같은 전문가를 보고 있으면 말이죠. 저렇게 많이 아는데도 끊임없이 계속 공부하고 새로운게 있으면 알려 주는 모습을 보면서 생활이 저렇게 되면 자연스럽게 전문가가 되겠구나.. 하는 생각이 듭니다.

꾸준히 학습하고 연구하는 자세를 몸에 배게 하려면 하루 이틀 아니 1,2년 가지곤 어림도 없겟죠. 그러니까 조급하게 생각해봤자 입니다. 순수한 열정을 가지고 열심히 하다보면 자연스럽게 되는거라고 그렇게 편하게(?) 생각하고 있습니다.
신고
top

TAG 전문가

static inner class를 Spring에 bean으로 등록하기

모하니?/Coding : 2008.08.21 14:49


public class Foo {
    static class Bar {
        static String say() {
            return "Bar-Bar-Bar";
        }
    }
}

요런 클래스가 있습니다. static inner class는 일반 inner class완 다르게 outter 객체가 없이도 접근할 수 있습니다. 사실상 outter 클래스를 통해서 접근할 뿐 보통 static 클래스랑 다를게 없습니다. inner class는 다르죠. outter 클래스의 인스턴스(객체)를 통해서만 접근할 수 있습니다.

따라서 일반 inner class를 bean으로 등록한다는 건 좀 이상합니다. outter 객체에 종속되어 있는 inner class만 독립적으로 사용할 수 없으니까요. 그걸 bean으로 등록하는 방법도 모르겠을 뿐더러, 등록한다고 해도.. 어떻게 쓸까요? 그 녀석들 만들려면 outter 객체를 항상 만들어서 inner class의 객체를 만들어서 반환하도록??.. 흠.. 좀 아닌거 같습니다. 그렇게 독립적으로 사용할 녀석이었다면 inner class가 아니였겠죠.

그렇다면, static inner class는 어떨까요? 얘는 bean으로 등록할 수 있더군요!! 왜냐면, 단순히 outter 클래스를 통해서만 접근할 뿐 일반 static 클래스와 다를것이 없거든요. 마치 outter 클래스 이름이 네임스페이스처럼 느껴질 뿐입니다.

등록하는 방법은 간단합니다. "$"를 사용해서
<bean id="bar" class="net.openseed.sandbox.innerclass.Foo$Bar" />

요런식으로 등록하면 됩니다. $를 사용해서 Bar 클래스가 Foo 클래스 안에 있다는 것을 알려줍니다. 간단하죠. 캬;; 스프링엔 참 별에 별게 많아요.

ps : 알려주신 사부님께 쌩큐.
신고
top


this.new XXX()를 쓰는 이유가 뭘까?

Java : 2008.08.21 14:25


Foo.java
package innerclass;

public class Foo {

    class Bar{
        void say(){
            System.out.println("Foo-Bar");
        }
    }

    public void test(){
        new Bar().say();
    }
    
    public static void main(String[] args) {
        new Foo().test();
    }
    
}

Bar.java
package innerclass;

public class Bar {
   
    void say(){
        System.out.println("Bar");
    }

}

흠.. 저 상황에서 java Foo 를 실행하면 어떤 결과가 출력될까요? SCJP 문제 같네요.ㅋㅋ 답은 Foo-Bar 입니다. 자기 내부에 있는 클래스랑 같은 이름의 클래스가 같은 패키지 안에 있을 경우. 내부 클래스가 우선시 됩니다.

만약에 Foo.java 클래스가 덩치가 좀 커서 inner class인 Bar 클래스가 잘 안 보인다면, 밖에 있는 Bar 클래스의 객체라고 착각할 수도 있겠죠?

그래서 inner class의 객체를 만들 떄는 반드시 this.을 앞에 붙여주는게 좋겠습니다.
    public static void main(String[] args) {
        this.new Foo().test();
    }

요렇게 말이죠.
신고
top


OSGi 패키지가 아니라 서비스야 말로 진정한 Dynamic

Spring DM/exercise : 2008.08.20 22:05


번들과 번들 사이에서 자신이 가지고 있는 정보를 공유하는 방법은 두 가지 입니다. 패키지 안에 있는 클래스들을 공개해서 상대방이 내가 가진 클래스의 객체를 만들어서 사용하게 할 것이냐, 아니면 내가 패키지 말고 내가 객체를 만들어서 제공할 것이냐. 후자가 바로 서비스. 전자는 패키지입니다.

차이는 매우 큽니다. Dynamic Module System에서 Dynamic 이라고 할려면 사실 상 패키지 공개로는 아무 의미가 없고,  Service-Export/Import를 해야 의미가 있습니다. 왜냐면 말이죠... 생각을 해보면 됩니다.

A 번들 whiteship 패키지에 Whiteship.java 클래스가 있고,
B 번들 blueship 패키지에 Blueship.java 클래스가 있다고 하겠습니다.

이 때 B 번들에서 A 번들에 있는 Whiteship 타입의 객체가 필요합니다. 그래서 A 번들에서 Export-Package로 whiteship 패키지를 등록하고, B 번들에서는 Import-Package로 whieship을 등록했습니다. 그런 다음 B 번들에서 Whiteship 타입 객체를 만들어서 사용합니다.

자 A 번들의 Whiteship.java 클래스가 바꼈습니다. 어떡할건가요? A 번들을 다시 설치합니다. B 번들에서 사용하고 있는 Whiteship 타입 객체는요?? 그대로죠. 뭐 변한게 없습니다.  뭐가 동적으로 바뀌죠? 바뀌는거 없죠? 이제 뭔가요? 이제 Dynamic 인가요? 아니죠.

패키지 대신 서비스로 단어를 바꿔서 다시 생각해보시면 뭔가가 달라집니다.

다시, (서비스를 사용한다는 가정하에) A 번들의 Whiteship.java 클래스가 바꼈습니다. A 번들을 다시 설치해야겠군요. 이건 당연한 겁니다. 설마 A 번들도 다시 설치하는데 이게 뭐가 동적이야??? 라고 생각하시는 분은 안 계시죠? 만약에 그러면 그건 좀 코메디입니다. ㅋㅋ 아무튼 잡담이었구요. 자. 이 다음엔 어떤 일이 벌어질까요? B 번들이 사용하면 Whiteship.java 타입의 서비스까지 바뀝니다. 캬~~ 놀랍죠? 어떻게 바뀌냐구요? A 번들이 죽을 때 자기가 등록한 서비스들도 전부 죽입니다. 그럼 B 번들이 사용하고 있던 Whiteship 타입의 서비스도 죽었겠죠. 그런 다음 A 번들이 다시 살아나면, 서비스를 등록하고 그럼 그 서비스를 기다리고 있던 B 번들이 다시 Whiteship 타입의 서비스를 사용하는 겁니다.

복잡하죠? 네.. 사실 이렇게 해피한 시나리오대로 흘러가지 않을 가능성도 많습니다. 설정하기 나름입니다. 대기 시간 설정이라덩가. 서비스의 필수 여부 설정이라덩가. 덩덩덩.

그리고 또 있습니다.

패키지로 export/import  할 때는 impl 까지도 export 해줘야겠죠? 객체를 생성하려면 어차피 구현한 클래스까지 알아야 할테니까요. 그런데 서비스로 공개할 떄는 구현체까진 안 알려줘도 됩니다. 구현은 감추고 인터페이스만 공개할 수 있는거죠. 캬~

Anyway!! 패키지를 사용하는거 보다는 서비스를 사용하는게 진정한 Dynamic 이라는거 아시겠죠?

그럼? 서비스만 쓰지 패키지는 왜 있는거야?? 라는 생각.. 드시죠??

저도 좀 생각을 해봤는데요. GenericDao 같은 클래스의 서비스가 필요한가요? 그냥 상속해서 쓰면 그만이죠? 즉 이렇게 패키지로 공개할 것인가 서비스로 공개할 것이냐는 용도에 따라 좀 달라질 것 같습니다. 클래스가 필요하면 패키지로, 객체가 필요하면 서비스로. 글쵸? 그런거 같죠? ㅎㅎ; 저도 잘 몰라요.

신고
top


20080819 GMP

모하니?/GMPing : 2008.08.19 22:18


News

store 저장하다
atmosphere 대기권, 분위기
carbon dioxied 이산화탄소

Trees consume and store carbon dioxied as they grow, which is released to atmosphere if they are chop down.  "So we really have to protect our nature forest."

Screen English

She is at the wooden seniterinum.
How do you get to her?
If you step outside that circle, they will get you.
Dimple Teck knows a secret way. But in the house, the book must stay.
They're all safe.
Good. now go. Make haste.

Pop's English

If you think you need to go, If you wanted to be free.
There is just one thing you need to know is that you can't count on me.

Talk Play Learn

I'm not sure if he'll (그가 ~ 할지 잘 몰겠어)
I'm not sure if he'll drive.
I'm not sure if he'll come.
I'm not sure if he'll agree.
I'm not sure if he'll laugh.
I'm not sure if he'll give up.
I'm not sure if he'll go back.
I'm not sure if he'll do this.
I'm not sure if he'll regret it.
I'm not sure if he'll accept it.

Learn More

have deep pockets = 부자다.
고생끝에 낙이 온다 = It paies off in the end. = Every cloud has a silver lining

신고

'모하니? > GMPing' 카테고리의 다른 글

20081218 GMP  (4) 2008.12.18
20080829 GMP  (0) 2008.08.29
20080828 GMP  (0) 2008.08.28
20080825 GMP  (0) 2008.08.25
20080821 GMP  (0) 2008.08.21
20080819 GMP  (0) 2008.08.19
20080813 GMP  (0) 2008.08.13
20080807 GMP  (0) 2008.08.07
20080801 GMP  (0) 2008.08.01
20080731 GMP  (0) 2008.07.31
20080730 GMP  (0) 2008.07.30
top

TAG GMP

흠... Hibernate Annotation 번들 왜이래 왜 ㅠ.ㅠ

Spring DM/exercise : 2008.08.19 12:20


osgi> diag 13
initial@reference:file:com.springsource.org.hibernate.annotations-3.3.1.ga.jar/ [13]
  Constraints from the fragment conflict with the host: Import-Package: org.apache.commons.logging; version="[1.1.1,2.0.0)"
  Missing Constraint: Fragment-Host: com.springsource.org.hibernate; bundle-version="[3.2.6.ga,3.3.0)"

osgi>

흠... 이상하네. host(org.hibernate) 랑 dep 충돌이 난다는데, host도 commons.logging 1.1.1 사용하고, 이 녀석도 1.1.1 참조하는데, 뭐가 충돌이 난다는거얌 ㅠ.ㅠ

왜그러니.. 내가 널 만들어줄까??
신고
top


독백

모하니?/Listening : 2008.08.19 10:31



살아갈 자신 조차없어
삶에 지쳐버린 내 모습
아주 가끔이 라도 볼 수 있다면 그나마 살겠어.

그렇게 시간은 흘러가고
사랑도 이러다 잊혀질까
아무런 의미도 없는 우리 사랑은 이제는 잊겠어.
신고

'모하니? > Listening' 카테고리의 다른 글

[우리 부부를 위한 랩] 네것인 내가  (2) 2009.10.14
내사랑 내곁에  (0) 2008.10.09
그리움만 쌓이네  (0) 2008.10.06
독백  (4) 2008.08.19
Radiohead - Exit Music  (0) 2008.07.17
If You Want Me  (0) 2007.11.29
살다보면 그런거지  (0) 2007.08.31
Podcast: Rod Johnson and Spring 2.1  (0) 2007.08.11
내 마음의 강물  (0) 2007.03.22
멋진 사람이군요.  (0) 2007.02.07
아침에는 신나는 노래로  (0) 2006.11.24
top


pom.xml에서 bnd 설정 파일 분리하기

Spring DM/exercise : 2008.08.18 15:29


사용자 삽입 이미지


bnd 설정 파일을 pom.xml에서 분리하고 pom.xml의 bnd 플러긴 설정은 다음과 같이 수정합니다.

            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <extensions>true</extensions>
                <version>1.4.0</version>
                <configuration>
                    <instructions>
                        <_include>-osgi.bnd</_include>
                    </instructions>
                </configuration>
            </plugin>       

pom.xml은 훨씬 가벼워지고, bnd 설정과 pom.xml을 유지보수 할 때도 이렇게 나눠 두는게 좋을 듯 합니다.
신고
top

TAG Bnd, maven

Nexus - Maven Repository Manager 설치하기

Build/Maven : 2008.08.18 10:04


Sonatype에서 만든 메이븐 저장소 관리 툴입니다. Artifactory라는 툴도 있지만, 자꾸 UI가 벗겨지는 문제가 있어서.. 흠;; 어쨋든 소나타입이 만들었다고 하니 왠지 써보고 싶고, 사부님도 강추를 하고 있어서 설치했습니다.

설치 방법은 Artifactory 만큼이나 간단했습니다.

참조: http://nexus.sonatype.org/

1. 다운받기
2. 포트 설정 변경하기(option)
3. 실행하기
4. 로그인하기

1. 다운받기

http://nexus.sonatype.org/downloads/ 이리로 가셔서 원하는 파일 zip이든 tar.gz이든 받습니다. 리눅스에서 받으려면 링크 주소를 복사한 다음에 wget 사용하니까 편하더군요. 다운 받은 다음 압축을 풀어 줍니다.

2. 포트 설정 변경하기(optional)

기본으로 8081번 포트사용해서 Jetty가 돌려줍니다. 포트를 변경하고 싶다면, conf/plexus.properties 파일을 열어서 맨위에 있는 포트 번호를 바꿔주면 됩니다.

3. 실행하기

이게 좀 간단치가 않은데, 여러 플랫폼 마다 실행 스크립트를 만들어 둬서 각각의 플랫폼에 해당하는 스크립트를 찾아서 실행해줘야 합니다.

MacOS의 경우에는  ./bin/jsw/macosx-universal-32/nexus start
이밖에도 리눅스, 솔라리스, 윈도우 등.. 여러 OS에 따른 실행 스크립트가 있습니다.

사용자 삽입 이미지

동작 확인하기.

tail -f logs/wrapper.log

위 명령을 실행해서 쌓이는 로그파일을 참조하시면 됩니다.

4. 로그인하기

설치가 된거 같으면 http://서버IP or 도메인:설정한 포트번호/nexus/ 로 접속하시면 됩니다.
접속하신 다음, 오른쪽 위에 Log in 링크를 눌러서 admin/admin123 으로 로긴합니다. 기본 비번은 변경해주는게 안전하겠죠.
사용자 삽입 이미지
Ext-JS를 사용해서 UI를 만들었다고 하는데, 꽤 좋습니다. 드래그앤드랍도 되고, 탭 형식의 UI도 괜찮습니다.


신고
top

TAG maven, Nexus

하이버네이트 3.3.0 GA 릴리즈~

Hibernate/etc : 2008.08.16 11:04


http://in.relation.to/Bloggers/HibernateCore330GoesGA

주요 변경 사항
1. 빌드를 Maven기반으로 변경.
2. 여러 모듈 jar로 세분화 함.
3. 2차 캐시 SPI 재설계.
4. JBossCache 2.x를 2차 캐시 프로바이더로 통합.

http://www.infoq.com/news/2008/08/hibernate-33

대충 읽었는데, OSGi가 유명해 지면서, OSGi에서 발생하는 하이버네이트 문제들(SessionFactory의 동적인 변경, 클래스로딩 이슈)에 대해 알고는 있는데, 이번 배포판에서는 아직 해결이 안 됐다고 합니다. 하지만, 적극적으로 해당 이슈들을 모두 해결할 의사는 있다고 합니다. 시간 문제라는거죠. 캬~ 좋아 좋아.
신고
top


OSGi 기반 프레임워크과 애플리케이션 아키텍처 진화 과정

Spring DM/exercise : 2008.08.14 18:11


대체 어떻게 모듈화 해야 할까...
어떻게 나눌 것인가..
어떻게 구성해야 번들간의 상호참조(CD)를 없앨 수 있을까..
어떻게 나눠놔야 개발을 할 때 여러 번들을 뒤적거리지 않을까..
번들헬이 발생하지 않게 하려면...

위와 같은 고민들은 OSGi와 스프링 DM을 학습하다보면, 자연스레 맞닥드리게 되는 문제들입니다.

이 질문에 대한 답은 모르겠습니다. 사실 답은 있죠. "잘". 그러려면, 많이 실험을 해봐야 합니다. 때마침 저한텐 아주 좋은 실험체가 있습니다. 임상 실험 프로젝트랄까요.ㅎㅎ 스프링 하이버기반으로 세 달에 걸쳐서 만든 시스템이 하나 있습니다. 규모가 크지도 작지도 않고 좋습니다. 도메인 모델이 한 40개 정도되는 프로젝트입니다. 비즈니스 로직도 포함하고 있어서 서로 얽히고 섥혀있지요.

이 프로젝트에서 OSAF15에 들어갈 코드를 분리해냈습니다. 그게 1단계였죠. 분리해낸지는 꽤 됐지만, 주석이랑 테스트 코드를 추가하느라 시간이 좀 지연됐습니다. 어제부로 그 작업도 끝났습니다. 1.5 단계랄까요. 정리하는 단계는 그렇게 끝났습니다.

이제는 본격적으로 2단계로 돌입해서 쪼갠 것을 적용해봐야 합니다. 그래서 검증이 되는거죠. 일단은 OSGi화 하지 않았던 기존 시스템과 동일하게 동작하는것을 목표로 적용합니다.

2단계가 잘 돌아가면, 그 뒤엔 쪼갠 것을 돌리는 상태에서 OSAF 번들만 수정해서 업데이트를 하는 겁니다. 이게 마지막인 3단계입니다.

오늘은 2단계에 막 들어선 날로, 코딩은 별로 못하고 낙서와 그림을 그리고 웹 서핑을 하면서 다른 자료를 찾는데 시간을 많이 보냈습니다. 다행히 어느 정도 성과가 있었습니다.

사용자 삽입 이미지
처음에 그린 그림입니다. OSAF15 번들 자체가 너무 커서, 그 안에 들어있는 몇 개의 패키지를 별도의 모듈로 쪼개는 걸 구상하여 그린 겁니다. OSAF, OSAF-App 이렇게 둘로 쪼개고, 일반 App 번들과 OSAF-App 번들을 WAR 번들에서 참조하는 걸 그리다가.. 문제를 발견했습니다. 그게 바로 아래에 있는 S/F SessionFactory 입니다.

저 때는 아직 문제를 발견했다기 보다.. 뭐랄까.. 냄새가 나고 있었다고 할까요.. 저 땐 단순하게 SessionFactory를 사용한다고만 생각했지 SessionFactory에서 저 번들들 안에 들어있는 모델을 참조해야 한다고.. 즉 상호참조가 발생하리라곤 미쳐 생각을 못하고 있었습니다.

사용자 삽입 이미지
(여러 색의 형광펜을 발견하고, 잘 나오나 확인을 해보는 그림이 좀 멋있어 졌습니다.ㅋㅋㅋㅋ)

두 번째 그림입니다. 첫 번째와 비슷하게 OSAF에서 이번엔 Security 부분을 떼어 내야겠다는 생각이 들었습니다. OSAF-App에는 User, Role, Audit과 같은 인증, 권한 과 관련된 기본 도메인들과 그 도메인이 사용하는 Audit이라는 클래스가 있었습니다. 그리고 User, Role에 대한 Dao, Service, Controller 까지도 들어있었죠.

문제는 Security가 저 녀석들을 사용하고 있다는 겁니다. User, UserDao를 사용합니다. 그렇게 되면 OSAF와 OSAF-App 두 번들이 CD에 빠집니다. 그래서 Security를 빼내면 될 줄 알고 저렇게 OSAF-Security를 빼내기로 결정.

실제 코드 작업을 좀 하다가 보니... 크헉!!!! osaf.service에서 osaf.security를 참조하고 있었습니다. 이러면 이거 때어낸다고 해서 해결될 문제가 아닌게 되는거라.. 다시 고민에 빠짐...

사용자 삽입 이미지
(이때부터 그림에 좀 신경을 쓰기 시작했죠.)

맨 왼쪽에 X 표를 친 부분이 바로 그 좌절하는 순간입니다.

여차저차해서 SessionFactory에 대한 실마리를 찾았고, 다시 OSAF는 좀 크지만, 한 덩어리로 가기로 했습니다.
사용자 삽입 이미지
(네모와 동그라미를 그리는 연습을 자주 해야겠습니다.)

실제 OSAF 내부에선 저런 순환 구조는 아닙니다. base쪽에 패키지를 세세하게 나눠뒀기 때문에 패키지 순환 참조는 발생하지 않습니다. CD는 하나도 없습니다.

오늘은 여기까지 구상하고 마치고 내일 다시 재도전해야겠습니다. "잘" 나누는 방법을 찾기란 이렇게 힘들고 재밌는 일이더군요. 캬캬캬.
신고
top

TAG OSAF, OSGi

SVN 무료 클라이언트 Subversion

Good Tools : 2008.08.14 15:43


http://subversion.tigris.org/
위에서 다운받을 수 있습니다.

TortoiseSVN도 좋은데, 커맨드 라인 svn 명령어가 필요할 때는 subversion 설치해주시면 됩니다. 커맨드가 필요한 일이 있어서 설치했습니다.
신고
top


OSGi에서 Hibernate의 SessionFactory 문제

Spring DM/exercise : 2008.08.14 15:34


대체 어떻게 해야 할까? 뭘? @Entity 달려있는 클래스들이 여러 번들들에 분포되어 있고, 애플리케이션이 돌아가는 도중에 번들이 추가되고, 없어지고, 다시 설치되고, 업데이트 되는 와중에 SessionFactory는 그에 따라 계속 바껴야합니다.

Spring이 제공하는 AnnotationSessionFactoryBean 클래스로 만드는 SessionFactory는 정적입니다. 한 번 만들고 다른 빈들이 주입받아서 사용하는데, 도통 어떻게 변경해야 할지 모르겠습니다.

이게 문제는 OSGi, Hibernate, Spring DM, JPA를 사용하려다 보면 자연스럽게 다가오는 문제입니다. 저 말고도 이미 예전부터 이 문제를 당면한 여러 개발자들이 있었습니다. 지금 이 순간 "나는 iBatis를 쓰고 있어서 다행이야!!!" 라고 외치고 계신 분이 혹시 계신가요??? ㅎㅎㅎ 어림없습니다. 이 문제에서 못 벗어납니다. SessionFactory 대신에 SqlMapClient로 놓고 생각해 보시면 똑같습니다.

설정 파일을 번들 하나에 전부 넣어 놓고(애노테이션 붙인 도메인 객체들을 모두 한 번들에 놓고), 그걸로 SessionFactory 만들면 되지 않겠냐구요? 아니.. 미래에 추가될 번들에 들어있는 도메인을 어떻게 지금 추가할 수가 있나요? 백투더퓨쳐가 아닌이상 불가능할 뿐더러, 그럴 바엔 아예 OSGi 번들로 나누지 말고 그냥 기존의 애플리케이션처럼 사용하는게 좋을 거 같습니다. 뭐 잠깐 서버좀 껐다 키죠 뭐.ㅎㅎ

다행히도 이 문제에 대한 해결책이 나왔고, 그걸 구현한 예제까지도 제공하고 있습니다.
http://notehive.com/wp/2008/07/23/osgi-hibernate-spring-dm-sample/
전 이런 개발자가 정말 멋져보입니다. 이력서를 보니까, 88/89년에 인턴쉽 하고, 92년도부터 계속 개발을 해온 사람이네요. 그럼.. 지금.. 16년째.. 캬;;;; 장난 아니셤!!!
신고
top


오픈소스 그리드 뭘 쓸까?

Good Tools : 2008.08.14 09:08


1. Display tag
- 이전에 써본 경험도 있고, JSP 태그 라이브러리라 사용법을 익히는 것도 간단함. 따라서 확장하기도 용이할 듯.
- 뭘 할 수 있을까?
it will handle column display, sorting, paging, cropping, grouping, exporting, smart linking and decoration of a table in a customizable XHTML style.


2. YUI - Datatable
- 사용해본 적이 없고, 온리 자바스크립트 코드로 사용함. 예제가 풍부하기 때문에 적응하는데는 그리 오래 걸리지 않을 듯. 확장하는것도 뭐 그냥 그럴듯.. 기본 UI가 display tag보다 이쁨.(어차피 css만 바꿔주면 그만이긴 하지만..), 한가지 걸리는 건.. 아직 beta 딱지가 붙어있음.(뭐 정리가 덜 됐나..?)
- 뭘 할 수 있을까?
Notable features include sortable columns, pagination, scrolling, row selection, resizeable columns, and inline editing.

3. ext-js
- 제한적인 오픈소스랄까. 오픈 소스(GNU GPL license v3  호환) 프로젝일 경우엔 오픈 소스 라이선스로 사용가능.
- 예제와 코드가 있긴 한데.. 설명은 하나도 안 보인다는;; 고로, 이해하고 확장하는데, 위에 두 개보다 좀 더 시간이 걸릴 것 같은 안 좋은 예감.
- 뭘 할 수 있을까?.. 역시 긁어 올만한 설명이 안 보임. 예제 제목만 긁어오면 다음과 같음.
Basic Array Grid, Editable Grid, XML Grid, Paging, Grouping, Live Group Summary, Grid Plugins, Grid Filtering. Grid From Markup, Binding: Grid (basic), Binding: Grid (advanced)
신고
top


Confluence 마이그레이션하기

Good Tools : 2008.08.13 19:31


버전 갈아타기 위해 마이그레이션을 진행했습니다.

1. 백업하기

사용자 삽입 이미지

2. Database 만들기

이전 버전이 사용하고 있던 DB와 동일한 밴더에서 만들어줘야겠죠. MySQL을 사용하고 있어서 오랜만에 MySQL에 접속했습니다.

mysql -u root -p
show databases;
create database db이름 DEFAULT CHARACTER SET utf8 collate utf8_general_ci

여기서 인코딩 설정이 중요한데, 이전에 사용하던 DB 인코딩과 동일하게 설정해야 합니다. 안 그럼 복구했을 때 한글이 전부 깨져보이는 현상이 발생할 수 있습니다.

이전에 사용하던 DB 및 자세한 정보들은 System Information에서 확인할 수 있습니다.

3. 새 버전 Confluence 설치하기

설치는 간단합니다. 다운 받고, 압축 풀고, /confluence/WEB-INF/classes 에 들어가신 다음
vi co TAB
설정파일이 위치할 곳을 설정해줍니다. 해당 폴더가 없을테니 설정을 마치고 나서 새로 만들어 줍니다.

4. 톰캣 설정 변경하기

기본의 confluence홈을 가리키던 톰켓/conf/Catalina 이하에 위치한 설정파일. ~~.xml을 열어서 새로 설치한 Confluence홈으로 설정을 바꿔줍니다.

5. 복구하기

첫번째에 다운받은 백업 파일을 사용해서 복구작업을 하면 됩니다.

몇일 사용하면서 지켜본 뒤 다음 작업을 합니다.
- 기존 컨플루언스 홈 디렉터리와 설정 파일 디렉터리 삭제
- 기존 DB 삭제

신고
top







티스토리 툴바