국내에서 얼마안되는 GWT 동지를 만나기 위해 야근을 하는 팀분들을 뒤로 한체 역삼역 SDS 멀티캠퍼스로 향했습니다.
사실 처음에 접수를 못해서 이상민 책임님 블로그에 글도 남기고 메일도 보내고 해서 어찌저찌 가게 된거라
그냥 조용히 들어가서 자리에 앉았습니다.
ㅁ 첫번째 이야기 - 스크럼을 활용한 소프트웨어 개발(황상철 책임 SDS)
사실 회사에서 스크럼을 하지만 체계적이지 못한 스크럼이라 도움이 되는 내용일 것 같아서 귀기울여 들었습니다.
황상철 책임님이 세미나 진행과 첫번째 주제에 대해서 이야기 해주셨습니다.
(왠지 낯이 익은 듯 했는데 알고보니 썬테크데이때 발표자 방에서 뵈었던 분이었습니다. ㅎㅎㅎ)
ㅁ 두번째 이야기 - GWT-ext(이상민 책임 SDS)
제가 이 세미나를 오고 싶어한 이유도 GWT 동지를 보기 위함이었습니다.
상당히 활발한 이야기 진행으로 만족스러웠습니다. (동영상 찍으려다가 거부하시길래.. 사진 몇장만)
ㅁ 세번째 이야기 - 버그패턴의 정적 분석툴 findbugs 활용(허광남 OKJSP 운영자)
OKJSP 운영자로 유명하신 허광남님이었습니다. 회사를 그만두시고 머리도 삭발하신...
findbug 와 hudson 을 설치하고 싶게 만들었습니다. (내일 한번 해봐야지...)
ㅁ 네번째 이야기 - 뒷풀이 회식
사실 맥주집에서 급 소심해져서 사진을 못찍었습니다. 끝나고나서 몇 컷만...
나중에 말이 트이면서... 주절주절....
호프집에서 황상철 책임님을 썬테크데이때 뵈었던 것을 확인했고 허광남님과도 이야기를 했습니다.
그리고 제 주 목적이였던 이상민 책임님과도 많은 이야기를 나누었습니다.
역시 오프라인 모임에 참석을 하는게 도움이 많이 되는 것 같습니다. 나름 자바라는 공통점이 있으니 쉽게 이야기를
나눌 수 있는게 너무 좋았던 것 같습니다.
요즘들어 자꾸 발표 욕심이 나는데.... 나중에 기회가 주어진다면 이클립스 플러그인에 대해서 발표를....
크응;;;
The first public version of GWTEventService is released. GWTEventService is an
event-based client-server communication framework. It uses GWT-RPC and the Comet
/ server-push technique. The client side offers a high-level API with
opportunities to register listeners to the server like to a GUI component. The
server side is completely independent of the client implementation and is highly
configurable. GWTEventService can be used to resolve "old-style" polling calls
in GWT applications with an event listen mechanism and a clean and extensible
architecture.
The developer-release contains a small demo chat application to
demonstrate the event listening technique with GWT. A short manual / tutorial
can be found in the Wiki or in the developer-release of GWTEventService.
GWTEventService 라는 프레임워크가 새로나왔나봅니다. 이벤트 기반의 C/S 커뮤니케이션 프레임워크랍니다.
GWT-RPC 와 Comet(서버로 밀어넣는 기술인가봅니다.) 를 사용하여 만들었다고 합니다. 일반 GUI 프로그래밍
하듯이 리스너를 등록해 놓으면 서버와 통신을 할 수 있는 것인가 봅니다.
오호.. 그렇다면 웹 메신저를 쉽게 만들수 있게네요... 왜 Comet 은 많이 들어봤는데 실제로 찾아보지 않았을까요..
GWT 1.5 버전이 나오면서 어노테이션을 지원하게 되었습니다.
예전에는 주석에 @gwt.key 를 써줘서 properties 파일과 맵핑시켜줬는데 이제는 @Key 어노테이션으로 처리가 가능합니다.
아래 같은 형식이 1.4 방식입니다. 한꺼번에 고쳐야 하는데 번거롭습니다.
그래서 정규식을 이용해서 한꺼번에 바꿔볼려고 합니다.
Find/Replace 창을 열고 Reqular expressions 를 체크를 하고 아래와 같이 입력을 합니다. Find:/\*\*[ \t]@gwt.key ([a-zA-Z._]+)[\t ]+\*/ Replace with:@Key("\1")
Replace with 에서 쓰인 \1 은 정규식의 첫번째 그룹을 뜻합니다. (\n n번째 그룹)
정규식에서 괄호는 그룹을 묶는데 쓰입니다. ( \1 == ([a-zA-Z._]+) )
Replace All 버튼을 클릭하면 다음과 같이 한방에 변경이 됩니다.
Wrap Search 를 체크해야만 전체를 다 검색합니다. 체크안하면 현재 위치에서 Direction 에 따라 일부만 변경됩니다.
GWT 를 시작한 것이 2006년 9월 이었으니깐... 2년이 넘어가네요.
2년간 몰랐던 사실이 있었습니다.
항상 GWT 클라이언트에서 사용하는 클래스는 client 폴더 안에만 있어야 하는지 알았습니다.
기본 패키지 구조의 Model도 Module XML 설정을 수정해주는 꼼수를 부리면 사용이 가능합니다.
~/model/workflowform/WorkflowFormModel.gwt.xml
기본적으로 Module XML 에 source element 가 없으면 하위 client 경로의 클래스들을 인식합니다.
위와 같이 주게되면 기존 구조를 사용할 수 있는 것이지요~
WorkflowFormModel.gwt.xml 을 model 패키지에 두고 source element 의 path 를 workflowform 으로
주어도 되지만 사용하는 플러그인이 재대로 인식을 못하는 관계로 위와 같은 구조로 가게 되었습니다.
(플러그인만 인식 못하는 것이지 컴파일도 되고 Hosted 모드에서 실행도 됩니다.)
In a strange, but not unexpected, convergence of the projects I deal with a lot, GWT has been updated, in order to include better support for RPC on Android.
- RPC requests no longer fail on the embedded Android web browser
- Leaf TreeItems now line up with their non-leaf siblings
- Removing the last child node from a TreeItem no longer creates extra margins on the left
- HTTPRequest no longer uses POST instead of GET on some IE installs because of incorrect XHR selection
- Compiler now uses a more reliable check to prevent methods with local variables from being inlined getAbsoluteTop()/Left() can no longer return non-integral values
- Time.valueOf() no longer fails to parse "08:00:00" or incorrectly accepts "0xC:0xB:0xA".