Whiteship's Note


S1A - Spring Dynamic Modules Updates : Costin Leau

Spring/S1A : 2008.12.05 12:33


스프링 DM 기본 설명

스프링 애플리케이션에서 추가 코드 없이 OSGi를 사용할 수 있다.
=> 스프링 철학과 일맥상통한다. non-invasive

스프링 DM
- 오라클(/BEA)와 함꼐 협업하고 있다.
=> 스프링 DM이 OSGi 스펙을 주도 하고 있다.

Raw OSGi
=> 다이나믹스를 다루기 위한 반복적인 코드가 필요하다.
=> OSGi 번들은 일반 JAR 파일로 무엇을 사용하고공개할지 정의한 파일을 가지고 있다.
=> 손수 해야 할 일이 많다.

OSGi에서 스프링 사용하기
=> OSGi 서비스를 룩업하지 말고 DI하기

POJO developement in OSGi

기능 살펴보기

번들 == ApplicationContext
=> 하나의 번들은 하나의 application context를 가지고 있다. 직접 만들 필요는 없다. 모듈을 정의하고 설정을 만들고 배포하면 되지.. 스프링을 이용하려고 뭔가를 하지 않아도 된다.

OSGi-aware Contexxt
=> OSGi 환경에 대해 알고 싶다면(예를 들어, BundleContextAware)같은 인터페이스를 사용할 수 있다.
=> bundle 스코프 제공
=> 여러 모듈에 걸친 application context 설정파일 사용가능

애플리케이션 == 모듈 집합

OSGi 서비스 == 스프링 빈

=> 서비스 레지스트리는 loose coupling을 실현해준다.

서비스 공개하기(export)
=> 보통 인터페이스를 기준으로 공개한다.
=>  auto-export 속성

서비스 참조하기(import)
=> 서비스 다이나믹스를 내부에서 다뤄준다.

데모
1. STS에서 dm 서버 실행한다.
2. localhost 2401로 telnet한다.
3. osgi> 콘솔 확인 help로 기본 명령어 확인
4. ss로 설치된 번들 확인
5. bundle 번들id로 번들 정보 확인

1. 간단한 서비스 공개(하나는 all-classses, 하는 interface)
2. 번들을 dm 서버에 설치하고 공개된 서비스 확인

1.  shape 번들 만들고 서비스 세 개 공개
2. MF 파일 고칠 거 없다.
3. dm 서버에 배포하고 공개된 서비스 확인

1. painter manager 번들 만들고 painter와 packageAdmin 서비스 레퍼런스 가져온다.
2. osgi:list로 여러 서비스를 참조할 수 있다.
3. BundleLogger에  packageAdmin 주입.

서비스 다이나믹(dynamics)
=> dynamic은 서비스가 언제든지 새로 추가되거나 없어질 수 있다는 거다.
Dependency resilience

만약
- 대응하는 서비스가 없다면
- 대응하는 서브시가 여러 개라면
- 대응하는 서비스가 사용 도중 없어지면
- 더 잘 매칭하는 새로운 서비스가 배포 되면

import cardinality
- 1..X: 애플리케이션 시작할 때 필요하다
=> X .. 1 일 때 서비스가 사라지면 다른 서비스 참조한다.
=> X .. N 일 때 서비스가 사라지면 컬렉션에서 빼준다.

데모

1. 쓰레드로 2초마다 그림그리는 메소드 실행하는 번들 만듬
2. painterManager 번들 stop
3. 다시 start
4. 로깅을 stop(등록한 서비스를 제거한다.)
=> 없어지면 대체제를 찾고 대체제가 없으면 기다린다.
5. 로깅 다시 start

리스닝
=> 메소드 매개 변수에서 서비스를 필터링할 수 있다.

통합 테스트 데모
1. AbsractConfigurableBundleCreatorTests 상속 받기
2. bundleContext.getBundles() 사용하기
3. getPlatformName으로 테스트할 플랫폼 선택가능. Platform.EQUINOX

1.2.0은 Compendium Services Integration
- Configuration Admin 속성을 참조하라.
- osgix 네임스페이스 공부할 것...

OSGi 4.2 계획
- Spring DM은 OSGi 4.2를 기준으로 한다.
RFC 124의 RI가 된다.
- 2009년 5/6월을 배포를 목표로..
=> 스프링 네임스페이스랑 OSGi 네임스페이스가 거의 비슷한 형태로..

로드맵
- 1.2.0은 2009년 1/2월
- 2.0(Spring, 3.0, JDK 5.0, RFC 124 RI) 2009년 5/6월

top

Write a comment.


S1A - OSGi best practive by 코스틴 리우

Spring/S1A : 2008.12.04 06:53


자바 애플리케이션 모듈화는 어렵다. 하지만 해결책은 있다.

개요
- 모듈성 개요
- 클래스 & 리소스 로딩
- 서비스 다아나믹스

모듈화 목적
=> 차 사고 났을 때 헤드라이트 나가면 거기만 갈아 낄 수 있도록.
=>

모듈성이 없는 app
- web/facade/repository 한 덩어리

모듈성이 있는 app
- ADao, BDao, CService

OSGi
- 1999년부터 사용 가능
- JDK 1.2 호환

모듈화 대안 - JSR277/JAM
- JAva Module
- "Opaque" 스펙 진행중
=> 어떻게 되가고 있는지 모르겠다.
- JDK 7.0 호환
=> 왜냐면 새로운 키워드를 사용해야 해서...
- OSGi 호환

모듈화 대안 - HK2
=> glassfish 팀이 사용하고 있다.
- 2007년 말에 밸표됨
- 애노테이션 기반 간단 IoC
- 정적인 시스템

OSGi/JSR 277 비교
- http://www.osgi.org/blog/
- http://underlap.blogspot.com/

클래스로딩
- 모듈은 자기 내부 패키지와 다른 모듈에서 가져온 패키지만 로딩할 수 있다.
- 모든 패키지는 버전을 가지고 있다.

Type Leakage
  - 공개한 클래스 계층 구조에서 내부 클래스
  - 공개한 시그너쳐에 있는 내부 클래스
=> 이런 일이 발생하면 안 돼. 그럼 어떻게 해야 할까?
- 내부 패키지를 공개해(
- '연결' 인터페이스를 축출해
- Generic public 타입을 사용해
- 검증 도구(bnd)를 사용해

추이적인 의존성
- A -> C1, B ->C2 => 이렇게 여러 버전 배포 가능하다. 이럴 때 X -> A, B 이렇게 되면.. C 패키지는 어떤 버전 사용하게 되는거야?? => A나 B가 사용하고 X가 직접 사용 안 하면 상관없겠지만 X가 직접 해당 패키지를 사용하게 되면 타입 캐스팅 충돌 발생할꺼다 그래서 바운더리를 만들어줘야 한다. X -> A, B, C1 이런식으로..
또는
=> A, B, X -> C2 이런식으로 한 버전을 참조하도록 한다.
- uses 지시어를 사용해서 둘 사이의 관계를 기술하라.

AOP
- 동적 클래스 확장
- 기존 모듈 경계를 깨트린다.
=> AOP의 아름다움은 바로 transparent하게  로깅이나 트랜잭션 등을 처리해 준다는 것이다.

(과거) 컴파일-타임 위빙
- Imports를 수정해야 한다.
- provisioning 을 통해서 한다.

로드 타임 위빙
=> 이미 리졸브 된 상태에서 추가로 필요한 패키지가 있으면 못 가져온다.
- Synthetic 클래스로더 하나가 Proxy Creator Module, Advoce Module, Target Module을 모두 관리해야 한다.

동적인 로드 타임 위빙
=> 위에서 설치한 모듈이 중간에 없어지면 어떡하냐.. 프록시를 없앴다가 다시 만들어야 돼.
- 의존하는 모듈을 update 해줘야 돼
=> SpringSource DM 서버에서는 알아서 해준다.

영속화/리모팅
- 클래스 로더 사용과 연관이 많다. => 해결책은 synthetic classloader

DynamicImport-Package
- 이 건 사용을 권장하지 않아.
=> 일관성이 없이 매번 실행할 때마다 문제가 있을 수도 있고 없을 수도 있다. 여러 버전을 사용할 수 있을 경우에 완전 운에 달린 게임이다.
- 프로토타입에서나 사용하고 제품에선 사용하지 말아라.

리소스 로딩
=> 클래스 로딩과 비슷한데 silent error가 발생한다.
- 리소르를 클래스와 동일한 곳에 둔다. 클래스에서 사용할 수 있도록 -> portable cnofig 자동으로 export 된다.

공유 자원
- META-INF/services
- 버저닝이 문제가 딜 수 있다.
=> 헤결 책은 extender

Externder 패턴
=> 번들 내부 리소스를 OSGi 서비스에서 사용가능하게 해준다.

웹 애플리케이션

오너쉽 문제 누가 로딩을 주도하는가?
- OSGi 플랫폼이?
- 웹 컨테이너가?
옵션
- HttpService
- Servlet Bridge
- ClassLoader bridge(스프링 DM 서버)

웹 애플리케이션에서 클래스 로딩
- WAR는 미리 정의되어 있는 클래스패스가 있다.
- OSGi에서는 뭔가가 필요하다. => 번들 처리 도구를 사용하거나, dm 서버가 해준다.

리소스 로딩
=> 스프링DM/dm 서버가 알아서 해준다.

서비스 Dynamics

OSGi 서비스
- 간적접인 계층
- 객체를 서비스 registry에 추가하거나 제거할 수 있다.
- 타입 필터링이 자동으로 적용된다.
- 서비스는 동적이다.(언제든 사라지고 나타날 수 있다.)
- OSGi 서비스는 싱글톤이다.

OSGi 서비스와 스프링 DM
- 그림
=> decoupling

서비스 Dynamics
- org.osgi.util.ServiceTracker
- Tracking Proxy(Spring DM) => 참조하던 서비스 없어지면 대체 가능한 다른 걸로 update 해준다.

다른 이슈
- 쓰레드 Context 클래스로더
- TCCL을 사용하지 말거나 스프링 DM/dm 서버처럼 관리하라.
- 쓰레딩
- 번들/애플리케이션 관리

결론
- STS, Spring DM, dm 서버를 사용하라. @.@

top

Write a comment.


S1A - Building Large-Scale, Modular Software - 뢉 해럽

Spring/S1A : 2008.12.03 17:47


개념적인 통일성
- 분명한 "철학"
=> 설계는 싸고 개발은 비싸다.

복잡도 제어하기
=> 의존성을 제어해야 복잡도를 제어할 수 있다.

책임 주도 설계
=> 연관성이 깊은 데이터를 그룹핑해서 관리하는게 좋다
=> 유즈케이스랑 CRC 카드로 블라 블라...
=> dm 서버를 만들 때 CRC 카드를 사용했다.

Principal 모델
- Logical 패키징
- 동시성 => 에러를 어떻게 수정할 것인지 등등..

Formal methods: Z
=> 시뮬레이션 할 수 있어서 매우 유용하다.
- 하지만.. 난 모르겠다. 저게 뭔 기호인지;;; @.@ 그냥 코드를 보여달라고 코드를.. 이클립스에 프로젝트 띄워서 걍 보여달란 말이야~ ㅠ.ㅠ...

Formal methods: CSP
=> 프로세스와 이벤트를 표현해서 뭔가를 추적할 수 있는;;
- 역시 또 복잡해 보이는 기호..@.@ 아흑...

실용적인 조언
- 테스팅을 스킵하지마
- 리팩터링 하되 "looping" 하진마
- "design quiescent points"를 인식하라
- "analysis paralysis"를 기피하라

dm 서버 자료
- 시스템 뷰
- 모델 진화 과정

top


S1A - Advanced SpringSource DM Server by 뢉 해럽

Spring/S1A : 2008.12.03 17:42


와이어링
- 클래스 로딩: package import and export
- 객체 생성과 엮기: spring dm

Personality

synthetic context와 PAR

배포 파이프 라인
1. PAR 배포
2. personality 판별
3. ..

프로파일

고급 와이어링: 속성 사용하기
=> 같은 패키지 두 개 중에서 하나를 선택할 때 속성을 사용할 수 있다.

고급 와이어링: uses
=> 나중에 발생할 타입 캐스팅 문제를 조기에 방지

dm 서버 진단 기능
=> 콘솔에서 직접 분석해야 하는 걸 dm 서버가 알아서 해 준다.
=> ex) Import-Package, uses 진단 기능.

Java EE 애플리케이션 마이그레이션
(FormTags)
- 웹/서비스로 쪼개기
- 서비스에서는 구현체를 숨기고 인터페이스로 서비스를 공개
- web.xml에 별도의 OSGiContextLoader 사용한다.
- 서비스를 참조하는 reference를 만든다.

top

Write a comment.


S1A - SpringSource dm Server Introduction by 뢉 해럽

Spring/S1A : 2008.12.03 03:28


SpringSource dm Server 소개

dm 서버
=> 자바 EE를 지원하려는게 아니라 OSGi 기반 배포 모델을 제공하기 위한 것이다. 매우 고객 지향적인(custom-oriented) 오픈 소스 프로젝트다.

배포
=>

Configurable
=> 여러분이 설치하고 싶은 걸 선택할 수 있다.

잠재적인 사용자 이익
=> 배포를 모듈 단위로 할 수 있다.
=> 쪼개서 개발할 수도 있고 유지보수 하기도 쉽다.

OSGi는 무언인가?
=> 유일한 모듈 시스템은 아니다. 하지만 10년이나 됐다. 그동안 많이 테스트 하고 검증되었다.

모듈
=> 정확히 어떤 패키지를 공개하고 사용할지 정의한다.(Strict Visibility rules)

모듈성
=> 타입 Dependency

모듈성:Import-Package
=> 버전 설정을 가능한 상세하게 할 것을 권장.

모듈성:Require-Bundle
=> 하이버네이트..., 하지만 패키지 중복 문제 발생 가능.

모듈성:Import-Bundle
=> 그래서.이걸 권장한다.

다음 레벨 모듈은 서비스.

서비스
=> 구현체는 감추고 타입으로 그 구현체를 참조할 수 있게한다.

데모
- greenpage 웹 애플리케이션 예제
- 모듈(app, db, jpa, web)

1. STS 실행
2. dm 서버 추가
3. dm 서버 홈 찾아주기
4. bundle 프로젝트 만들기
5. greenpage.web/모듈타입을 web으로/타겟 플랫폼을 dm 서버로 설정 next
6. Web-ContextPath 를 /greenpages   .. *.htm    next finish
7. META-INF/MANIFEST.MF 열고 설정 확인
8. src에 MODULE-INF/WEB-INF 폴더 추가
9. WEB-INF 폴더를 웹 폴더 루트로 jsp 추가
10. 컨트롤러 개발
11. Import-Library: org.springframework.spring:version="[2.5.5.A,2.5.5.A]"
12. 컨트롤러 개발
13. META-INF/spring 풀더에 mudile-context.xml 만들기
14. 컴포넌트 스캔 추가해서 컨트롤러 빈 등록
15. 서버로 드래그 앤 드랍
16. 서버 실행
17. 404 에러 나는데 그건 뷰 파일이 없어서 그랬어. 복사해서 붙이고 뷰가 프리마커라서 프리마커 뷰 리졸버 추가해준다.
=> 로깅 메시지는 별도의 파일로 분리해 놨다.

0. web 모듈 빼준다.

1. greeenpage.app 모듈 추가
2. 패키지 추가
3. 인터페이스 추가
4. 구현체 추가
5. MANIFEST.MF에 Export-Package: greenpages.app:version="1.0" 추가
6. greenpage.web에서 Import-Package:greenpage.app 추가
7. 에러 나면 이클립스 프리퍼런스에서 패키지 의존성 추가
8. osgi-context.xml 파일 만들기
9. directory 서비스 등록.
10. module-context.xml 파일 만들기
11. Directoty 빈 등록
12. 서버로 드래그 앤 드랍
13. telnet localhost 2401 로 osgi 콘솔에 접근
14. osgi-reference.xml 만들기
15. osgi 레퍼런스 빈 등록 id="directory" interface="...

1. greenpages.db 모듈 추가
2. Import-Bundle: com.sprinsource.org.apache.commons.dbcp:version, ...
3. datasource  빈 등록, osgi 서비스 등록
4. Import-Pacjage: javax.sql
5. 콘솔에서 설치한 번들과 서비스 확인

1.greenpages.jpa 모듈 추가
2. MANIFEST.MF에서 Import-Package: greenpages.app, javax.sql
3. 인터페이스 추가
4. 구현체 추가
5.  Import-Package에 javax.persistence 추가
6. Import-Library에 spring 추가
7. META-INF/spring 폴더에 module-context.xml 추가
8. 로드 타임 위버가 있네.. 왜 있지?
9. osgi-context.xml 추가
10. directory 서비스 추가
11. 드래그 앤 드랍
12. aspectj 없어서 실패.
13. Import-Library에 org.aspectj;version 1.6.1 추가
14. Import-Bundle: eclipse.persistence..
15. osgi 레퍼런스로 dataSource 등록

=> osgi:reference 의 filter 속성과 service의 속성 매칭으로 동일 인터페이스에 대한 여러 구현체 서비스 중에서 한 가지를 선택하게 할 수 있다.

1. Par 프로젝트 만들기
2. greenpage 만들기
3. Dependencies  탭에서 추가해주기.
4. 드래그 앤 드랍.

필요한 번들이 번들 저장소에 없는 경우
1. private class path 이용
2. osgi 번들로 만들어라.
3. 하난 뭐지?
top

  1. Favicon of http://yunsunghan.tistory.com BlogIcon Max 2008.12.03 09:31 PERM. MOD/DEL REPLY

    나중에 재연해 주실려고 쓰신것 같네요. ^^;;;
    이거 너무 많은 유용한 정보를 보느라 정신 없습니다. ^^*

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2008.12.03 18:11 신고 PERM MOD/DEL

    이것도 역시 실습 자료죠.ㅋㅋ

Write a comment.


S1A - Spring 3.0 by 유겐 휄러

Spring/S1A : 2008.12.03 00:33


깊게 다루진 않겠다. 얇게thin 여러 기능 들을 살펴보겠다.

이번 주에 새 버전을 릴리즈 할 것이다.

Agenda
- 2.5 리뷰
- 3.0 테마와 기능
-

스프링 2.5
- 다양한 애노테이션 기반 설정 지원
- Java EE 5 애노테이션 지원(ex. @EJB, @WebServiceRef... @PersistenceUnit/Context)
=> 애노테이션의 시멘틱을 스프링 애플리케이션 문맥에 맞게 사용한다.
=> 이름이 별론데 어쩌겠냐. 사용해야지.
=> 스프링 2.5가 똑똑하게 애노테이션을 처리해준다.

애노테이션을 사용한 빈 컴포넌트
- 예제 코드(@service, @Autowired, @Transactiona)
=> 미들웨어 서비스와 연결(@Transactional)

애노테이션을 사용한 라이프 사이클 관리 중인 DAO
- 예제 코드

XML 빈 설정 최고화 하기
- context:annotation-config
- context:component-scan
=> 이런 모든 기능들은 3.0에서도 사용 가능하다.

테스트 컨텍스트 프레임워크
- 예제 코드

스프링 서블릿 MVC 2.5
- 예제 코드(ActionResponse.setRenderParameter("action", "list");

===============

스프링 3.0 테마
- 자바 5+ 기반: J2EE 1.4와 JEE 5 호환 => 코드를 다시 구현하고 싶진 않았다. 사용자에게는 변화가 없고, 스프링소스 팀 내에서 코딩하는 방법이 바뀐 것 분
- EL => 매우 중요한 변경 사항. 빈 설정할 때 매우 유용하게 사용할 수 있다. JSF Universal EL을 보고.. 이와 같은 아이디어를 스프링 웹 플로우팀과 공유했다.
- REST 지원
- Portlet 2.0 지원
- 선언적인 모델 검증: hibernate validator, JSR 303 => JSR 303은 그다지 많이 진전하지 않았지만.. 지원한다.
- Java EE 6 지원: JSF 2.0, JPA 2.0, .. => 스프링 2.5에서는 일찌감치 Java EE 5를 지원했었다.

새 프로젝트 레이아웃
- 수정한 프로엠워크 모듈(메이븐 스타일로 관리한다. 모듈 jar 별로 소스 트리 하나, spring.jar는 이제 없다!!!) => spring.jar는 시간이 흘러가면서 점점 일관성을 잃어가고 있다.  spring.jar를 더이상 고치지 않겠다.
- Spring Web Flow 2.0으로 알려져있는 새로운 빌드 시스템으로 빌드했다.(배포 절차, 의존성 관리, OSGi manifest 생성)

빈 설정에서 EL
- 예제 코드 => 예를 들어, 맵에 있는 키값으로 그 맵의 요소 값을 참조 하거나 특정 빈의 메소스 실행 결과 값을 DI하는 것이 가능하다. 암묵적인 객체를 사용할 수도 있다(?)

컴포넌트 애노테이션에서 EL
- 예제 코드 => 기본값 설정에 사용할 수 있다. DI 할 것이 없으면 이 값을 사용하도록..., @Value는 매우 강력한 애노테이션으로 ...

스프링 EL 파서
- 스프링 3.0에 들어간다.
- Unified EL과 호환가능하지만 보다 강력하다

EL 문맥 속성
- 암묵적인 속성은 런타임 문맥에 따라 기본으로 사용이 가능하다.(ex. systemProperties, sustemEnvironment")

웹 문맥 속성
- contextProperties: web.xml init-param.
- ...
=> 팩토리빈으로 사용하던 걸 훨씬 간단하게 사용할 수 있다.

REST 지원
- REST 스타일 맵핑 지원
- 대안 JAX-RS => 웹 서비스에 가깝다.

MVC에서 REST
- @PathVariable("id") long id => 2.5의 @ReqeustParam과 비슷하게 사용한다.
질문1: 타입이 어떻게 long이냐? 기본 컨버전 룰이 있다.
질문2: EL 파서 ...? no ..
=> URL 이 복잡해지면 여러 개가 필요할 것이다. 여러 개 매개변수를 선언해서 사용하면 된다.

다양한 Representation
- JSON => 뷰 리졸버를 직접 구현해도 되지만, 이걸 스프링에서 직접 지원하고 싶었다.
- XML
- ATOM
=> request의 accepts 헤더에 따라 다른 정보를 만들어 준다.

@MVC Refinements
- @RequestHeader
- @CookieValue
=> 쿠키나 헤더가 필요할 때 HttpServletRequest를 사용했었어야 하는데 이젠 그럴 필요가 없다.
=> mocking 할필요도 없고 단순하게 string이나 int값 사용하면 된다.

포틀릿 2.0 지원
- 이건 하나도 몰르는뎅;;
- Portlet 2.0 지원, 명시적인 맵핑 애노테이션 지원.

컨버세이션Conversation 관리
- 핵심 문제: isolating concurrent windows in same browser
=> 스프링에서 뭘 할 수 있는지 조사를 했다.
- conversation 스코프(session보다 짧은 라이프사이클을 지니고 있다.)
=> 스프링 웹 플로우 3.0이 이걸 기반으로 복잡한 플로우 네비게이션을 지원할 것이다.

빈 직렬화
- 스프링 2.5에서 session과 conversation 객체 직렬화 문제 => 서비스 퍼사드가 DAO를 참조할 때 DAO는 보통 직렬화 하지 않아서 서비스 직렬화 실패. 결국 전체 직렬화를 할 수 없다.
- 해결책: 프록시를 사용. 역직렬화해서 다시 가져온 레퍼런스를 프록시..한다. (?) 어렵네;;

모델 검증
- 화면에서 값 바인딩부터 랜더링, 영속화할 때까지 적용
- 하이버네이트 Validator API 사용가능
- JSR 303도 지원한다
@NotNull, @ShortDate

스프링 3,0과 Java EE 6
- JSF 2.0, JPA 2.0, JAX-RS/Jersey, JSR 236(쓰레드 풀 관리)
- 스프링 3.1/3.2는 Java EE 6 모든 기능 제공(Servlet 3.0, Web beans 애노테이션)

제 3 라이브러리 업데이트
- 하이버네이트 3.3, 이클립스링크 1.0 랴final

포트폴리오 정리
- 스프링 웹 서비스의 OXM 모듈을 개선한 걸 스프링 3.0에 포함 시킨다.
- 스프링 웹 플로우의 바인딩과 타입 컨버전을 스프링 3.0으로
- JavaConfig기능을 스프링 3.0으로..

Pruning(가지치기)와 Deprecation

스프링 2.5 미션은 계속 된다.
- 100% 호환 프로그래밍 모델,

요약

로드맵

top

  1. Favicon of http://yunsunghan.tistory.com BlogIcon Max 2008.12.03 09:25 PERM. MOD/DEL REPLY

    수고 하십니다. ^^*
    몇몇은 이미 알려진 내용이지만, 몇몇은 처음 듣네요.
    특히 컨버세이션관리, 빈직렬화, 모델검증 등은 갔다오시면 더 듣고 싶어요^^;;
    잘 읽었습니다.

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2008.12.03 17:54 신고 PERM MOD/DEL

    네 저도 아직 듣기만하고 실습을 못해서 실습하려고 요약해 뒀습니다.

  2. Favicon of http://seal.tistory.com BlogIcon 물개 2008.12.03 21:44 PERM. MOD/DEL REPLY

    이번 주에 릴리즈라.. 2.5도 사용은 하지만 제대로 안 써봤는데, 3.0에 변화가 많네. 토비형 책나오면 사서 봐야지 ㅋㅋ

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2008.12.04 06:56 신고 PERM MOD/DEL

    ㅋㅋㅋ정말 스프링은 어디까지 진화할런지~ 멋져요

Write a comment.


S1A 첫 날 - 캐나다 개발자 셋과 미국 내에서 혼자온 한 분

Spring/S1A : 2008.12.02 16:21


키노트가 끝나고 한국인들끼리 모여 있다가 토비님이 다른 쪽 테이블로 이동하는 걸보고 조금 이따가 그 쪽 테이블로 따라가 봤습니다. 캬오.. 가보길 잘 했습니다. 재밌었습니다.

캐나다 토론토에서 온 세 분의 개발자들과 미국 내에서 혼자온 한 분과 얘길 나누고 있었습니다. 넷 모두 동양인처럼 생겼는데 영어는 정말 완전 잘 했습니다. 거의 미국인이더군요. 미국에서 일하신다는 분도 뭐; 거의 미국인 수준의 영어. 영어권에서 일하는 분들은 출신이 동양인이어도 미국어를 완전 유창하게 구사하고 있었습니다. 나도 저 정도 쯤은 하고 싶다는 생각이 절로 들더군요. 그리고 좀 더 잘 알아듣고 잘 말하려고 노력하기 시작했습니다.

하지만 실수를 몇 번 했죠. ㅋㅋ 다른 나라 사람에게는 결혼했는지, 몇 살인지, 등을 물어보는게 실례인데 깜빡하고 넘 어려보이시는 분께서 결혼하셨다길래 결혼한지 몇 년이나 됐는지를 물어봤었습니다. 다행히 분위기가 좋고 토비님이 설명을 잘 해주셔서 좋게 넘어가고 포토 타임을 가지고, 명함도 나눠 갔고, 바이 바이 했습니다.

사용자 삽입 이미지

대화는 굉장히 다양했습니다.

스프링을 사용하고 있는가? 버전은 몇인가? ~
지금 어떤 일, 프로젝트를 하고 있는가? ~
옆에 분과 같은 회사에 다니나? ~
혼자 왔나? ~
오늘 키노트를 본 소감이 어떤가? 마케팅 성격이 강했던 것 같다.
Data Access쪽은 어떤 프레임워크를 사용하는가?
iBatis를 선택한 이유는?
하이버네이트는 왜? RMI 할 때 프록시 객체가 말썽이었다. 토비답: 그럴 땐 DTO를 만들어서..
이 분(kenu님) 나이가 몇 일것 같은가?
등등등...

아.. 이젠 머리가 아파서;; 정말 자야겠습니다.
top

  1. Favicon of http://seal.tistory.com BlogIcon 물개 2008.12.02 18:07 PERM. MOD/DEL REPLY

    여기 저기서 염장 포스트가 막~ 올라오넹.. 누군 플젝 마무리하느라 야근도 불사하고 일하는데 말야 --+ 선물 꼭 사와~

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2008.12.03 03:29 신고 PERM MOD/DEL

    흐흣;; ㅋㅋ;;
    여기 정말 좋아요~ 다음엔 물개선생님도 같이 와요~

  2. Favicon of http://yunsunghan.tistory.com BlogIcon Max 2008.12.02 22:07 PERM. MOD/DEL REPLY

    흠... 역시 부러운거 맞습니다. 맞고요..
    앞으로도 계속 기대하고, 대리만족 할께요 ^^*

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2008.12.03 03:29 신고 PERM MOD/DEL

    넵 맥스님도 다음에 같이와요. 캬캬

Write a comment.


S1A 첫 날 - 유겐 휄러와 Q&A

Spring/S1A : 2008.12.02 15:54


정말 정말 보고 싶었던 유겐 휄러. 착해보이고 성실해보이고 잘 생겼고 개발도 잘해 여친인지 부인인지 암튼 이쁜 짝도 있고 지금까지 제가 봐왔던 유겐 휄러는 그야말로 짱입니다.

유겐 휄러를 알게 된 건 스프링 소스 코드가 아니라 이슈 트래커를 통해서였습니다. 한 참 스프링 공부를 시작하고 레퍼런스를 요약해가며 그 안에 있는 말과 코드를 이해하려고 엄청 애쓰던 때였죠. 그 때 문서에서 발견한 오타나 코드에서 이상한 점들을 이슈 트래커에 올리면 거의 매번 유겐 휄러가 이슈를 처리해줬습니다. 그리고 한 번은 OSAF 초기 모델을 만들 때 @SessionAttributes에 대해 이슈 트래커로 상당히 길게 얘기를 나누면서 그가 얼마나 자상하고 꼼꼼한지도 알 수 있었습니다.

어쨋든 보고 싶은 사람이 바로 옆에 있었는데 누군가와 매우 오래 얘길하고 있었습니다. 어쩔 수 없이 끼어들었습니다. 한 15분은 옆에서 멀뚱멀뚱 있었던 것 같습니다. 끼어들어서 3.0-m1에 대한 이야기를 나누기 시작하자 영회형, 사부님, kenu님이 함세해 주셨습니다. 캬캬

기선: 얼마전에 이슈 트래커를 봤더니 3.0-m1 이슈가 모두 처리 됐더라. 언제 공개할 생각이냐?

유겐: 이번 내에 공개할 거다. 아마 너가 돌아가기 전에 하지 않을까? ^^

기선: 오호~! 귿. 참. 난 한국에서 왔고 너가 정말 보고 싶었다. 우린 이미 이슈트래커를 통해 얘기를 많이 나눈적이 있다. @SessionAttributes에 관한 것이었는데 그 당시 너무 친절하게 답변을 달아줘서 감동먹었다. 고맙다. 사진 한 장 찍고 싶다.

유겐: 오케

사용자 삽입 이미지

대충 이렇게 시작한 대화는 상당히 길고 재밌게 이어졌습니다.

하루에 몇 시간 정도 코딩을 하는지? 주당 50~60(기억이 가물 가물)
왜 스프링 코어 이슈는 혼자 그렇게 많이 차지하고 있는지? 자기가 배정 해 줌. 배정해 줄 사람 없으면 자기가 함.
로드 존슨과 유겐 휄러의 나이는 몇인지? maybe 38, I'm 33
개발할 때 테스트를 먼저 작성하는지 나중에 작성하는지? After
스프링 3.0에서는 빌드가 어떻게 바뀌었는지? Ant + Ivy
스프링 개발을 통해 행복함을 느끼는지? intent, 신중해야 하기 때문에 압박감을 받기도 한다.
개발자로써 어떤 방법이 학습이나 성장에 도움이 될까? 현장의 문제를 다뤄라.

이 밖에도 질문과 답변 내용이 많고 유겐이 상당히 길고 친절하게 답변해줬지만 제가 지금 좀 피곤해서 짧게 요약하고 넘어갑니다. 양해해 주세요.

처음엔 말을 어떻게 걸어야 하나 고민도 많이 하고 아.. 그냥 지나칠까 말까 하다가 용기내서 말을 걸어봤는데 정말이지 세미나를 하나도 안 들었는데 이대로 집에가도 여한이 없을 정도입니다.

다음엔 싸인 받으러 또 찾아가겠다고 바이 바이 했습니다. 다음 타겟은 뢉 하랍!!
top

  1. Favicon of http://kingori.egloos.com BlogIcon kingori 2008.12.02 16:37 PERM. MOD/DEL REPLY

    오, 궁극의 질문, "나이"를 물어보셨군요!!

    Favicon of http://whiteship.tistory.com BlogIcon 기선 2008.12.02 21:05 PERM MOD/DEL

    ㅋㅋ제가 물어보진 않았어요. 잘못 물어보면 실례라는거.. 특히 여자한텐 금지래요.

  2. Favicon of http://benelog.egloos.com BlogIcon benelog 2008.12.02 19:10 PERM. MOD/DEL REPLY

    둘다 생각보다 젊네요.; 암튼 멋지고, 부럽습니다~ ^^

    Favicon of http://whiteship.tistory.com BlogIcon 기선 2008.12.02 21:06 PERM MOD/DEL

    네 젊더라구요. 무엇보다 이쁜 여친이 있다는게;;; 부럽던데요.ㅋㅋ

Write a comment.


S1A 키노트 - 로드 존슨

Spring/S1A : 2008.12.02 15:33


LA에서 아침 일찍 뱅기타고 마이애미로 날아오는 도중 우여곡절이 있어서 가까스로 S1A 저녁시간에 맞춰서 도착했습니다. 도착해서 DAUM과 삼성 SDS에서 오신 분들을 만나서 인사를 나누고 같이 저녁식사를 하고 그 자리에서 키노트가 시작됐습니다.

키노트에서 언급한 내용은 많았지만, 그걸 전부 요약하긴 힘들고 제가 중간 중간 요약한 것만 공개하겠습니다.

스프링 3.0
- 스프링 설정 파일에서 EL 사용 가능
- JavaConfig에 Ajax 지원 기능 추가
- 웹에서 REST 지원
- Web Flow 관련 기능 중 일부 Core 패키지에 추가

Spring stands for the creative destraction of complexity.
=> 스프링은 복잡함을 무너트림으로써 발생하는 창조적인 무언가를 대변한다.

Grails is Spring
=> Grails는 거인의 어꺠 위에 앉는 전략을 선택.

SpringSource tc Server
- 톰캣은 개발자들이 가장 많이 개발과 제품 배포에 사용하는 WAS
- 단점: 관리와 운영 툴이 약함
- 그래서 tc 서버를 만들어서 톰캣 다수의 리소스 관리 및 운영 WAR 배포를 할 수 있는 tc Server를 만들었다.

SpringSoucrce dm Server
- 완전히 새로운 차 세대. 모듈기반 애플리케이션을 위한 서버

Bundle Repository
- 수천개 라이브러리의 의존성, 소스, 문서 다운로드 가능한 라이브러리 저장소
- 번들은 어차피 JAR니까 여기를 이용하면 된다.

SpringSource Application Platform Configurator
- 완전 대박 애플리케이션. 예전에 사부님이 만들고자 했던 바로 그걸 스프링소스가 만들었다.
- 개발할 애플리케이션 플랫폼을 만들어 준다.
- 워크 프로우를 타면서 애플리케이션 종류(웹, 배치, 기타 덩덩덩), 웹 이라면 사용할 MVC 프레임워크(JSF, SWF, ..), 웹 일 경우 애플리케이션 돌릴 서버 선택, 예제 애플리케이션 추가 여부 선택, 개발자 테스트 추가 여부 선택 등을 거치면 최종적으로 압축 파일로 애플리케이션 플랫폼을 만들어 준다.

말은 거의 못 알아듣고 화면만 보면서 유추한거라 틀린 내용이 있을 수도 있습니다. 양해해 주세요.

로드 존슨과 기념샷

사용자 삽입 이미지
내일은 책 들고가서 싸인 받아야겠다. 너무 좋아서 얼굴이 엉망이네.ㅋㅋ
top

  1. epro 2008.12.02 16:20 PERM. MOD/DEL REPLY

    하하하 로드 존슨 만났구나!! 완전 멋진데~

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2008.12.02 16:23 신고 PERM MOD/DEL

    ㅋㅋ하고 싶은 포즈가 있다고 했더니.. 제가 하고 싶은 건 줄 알고 안 따라하시더라구요. 그래서

    "유 투 유 투"

    그럤더니 웃으면서 따라해 주시던데요.ㅋㅋ

  2. Favicon of http://helols.tistory.com BlogIcon 성윤 2008.12.02 16:23 PERM. MOD/DEL REPLY

    헉;; 대박이다;; ㅜㅜ

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2008.12.02 16:26 신고 PERM MOD/DEL

    네 대박이었죠. 다른 글 댓글에도 댓글을 달고 싶은데 인터넷이 느려서 그런지 잘 안 열리네요.

    지금은 너무 머리가 아파서 잡니다.

  3. Favicon of http://sonegy.egloos.com BlogIcon sonegy 2008.12.03 14:51 PERM. MOD/DEL REPLY

    거진 미국에 간 애인 만난 표정이네요~

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2008.12.03 17:55 신고 PERM MOD/DEL

    ㅋㅋ너무 좋아하는 표정이죠.

Write a comment.


드디어 Spring One America에 갑니다.

Spring/S1A : 2008.11.29 22:34


작년부터 꿈꿔왔던 컨퍼런스입니다. 정말 정말 가고 싶었습니다. 작년에는 Spring 2.5. Spring Security 2.0 그리고 Spring OSGi(지금은 DM이지만) 소개에 관련된 세션에 많은 관심이 있었지만 갈 수 없었습니다. 하지만 이번에는 드디어 갈 수 있게 됐습니다. 이번에는 Spring 3.0과 Spring DM 그리고 DM Server에 관심이 많습니다. 그토록 가고 싶었던 컨퍼런스를 가게 되었는데 아직도 잘 실감이 나질 않습니다. 가서 무슨 말을 할지 생각도 안나고.. 어버버버 하다가 오는거 아닌지 걱정입니다. @.@

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지
사용자 삽입 이미지

사용자 삽입 이미지

유겐 휄러한테 배정된 세션 하나가 뭔지 모르겠는데 비어있네요. 일단 유겐 휄러가 보고 싶어서 유겐이 뭔가를 하게 되면 그걸 보고 아니면 쉬던가 차선책으로 선택한 퍼시스턴스 튜닝을 보러갈 듯 합니다.

8시부터 밥먹고 발표 시작해서 대충 5시쯤 끝나는 군요. 첫 날에도 파티하고 세 번째 날에도 파티하네요. 해변 파뤼~ 파뤼~ 맛난거 많이 있으려나~ +_+
top

  1. Favicon of http://architect.tistory.com BlogIcon 짱가 2008.11.30 21:26 PERM. MOD/DEL REPLY

    잘 다녀오세요~~~

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2008.12.01 15:16 신고 PERM MOD/DEL

    넵 ^^

Write a comment.