블로그 이미지
올해목표 // 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
 
12-12 07:04
 

달력

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

최근에 올라온 글

최근에 달린 댓글


회사에서 최근에 기존 프로젝트를 메이븐으로 분리하면서 고민거리가 생겼습니다. 바로 그건 GWT...

버전관리도 안되고 별도로 컴파일 후 배포할 수 있는 메이븐 플러그인을 찾지도 못하여 고민을 하고 있던 찰나... 먼가에 이끌리듯 개발을 진행하였습니다.

아이디어는 생각보다 단순합니다.

1. 등록된 소스 서버에서 관련 소스를 체크아웃 or 업데이트 합니다.
2. 등록된 모듈을 컴파일합니다.
3. 컴파일 결과물을 압축하여 특정폴더에 복사합니다.
4. 매일 새벽에 작업이 진행됩니다.

한 4일 정도 작업을 한 결과 쓸 수 있을 정도의 결과물이 나왔습니다.

0123



음하하하하하...

Posted by 자수씨
, |

GWT 와 Spring MVC 를 통합시켜주는 gwtwidgets 라이브러리의 GWTHandler 사용 시 유의사항이 있습니다.

정의된 bean 들이 순서에 영향을 받는 것 같습니다.

[나쁜 예]
<beans ...>
  <bean id="hasA" ...>
    <property name="a" ref="a" />
  </bean>
  <bean id="a" ... />
  ...

</beans>

[좋은 예]
<beans ...>
  <bean id="a" ... />
  <bean id="hasA" ...>
    <property name="a" ref="a" />
  </bean>
  ...

</beans>


사용되는 프로퍼티가 미리 선언되어 있지 않으면 어디선가 꼬여버려 상상하지도 못하는 곳에서 에러가 발생합니다.

원래 스프링은 빈 팩토리가 순서에 영향을 받지 않는 걸로 알고 있는데... 오래전 라이브러리를 계속 쓰다보니 지금와서 발견하게 되네요;;; 이것 때문에 한 5시간은 삽질한 것 같습니다.



Posted by 자수씨
, |

이전에 작성했던 [GWT] OpenerEvents 에서는 GWT 에서 open 한 GWT 페이지에서 상위 페이지로 이벤트를 fire 하는 내용을 포스팅 하였습니다. 이번에 제가 맡은 업무는 GWT 로 만들어진 opener 에서 extjs 로 만들어진 popup 을 띄운 후, popup 에서 opener 로 이벤트를 발생시키는 일이였습니다.

지난 포스팅을 참고해서 다음과 같이 간단한 작업으로 처리가 가능합니다.



소스 내에서 top 을 쓰는 이유는 frame 구조 안쪽에 있을 수 있기 때문에 다음과 같이 처리하였습니다.
재대로 안될 경우 이전 포스팅에서 OpenerEvents.install() 메소드의 $wnd[...] 를 top.$wnd[...] 로 바꾸면 될 것 입니다.

따로 js 파일을 만들어서 function 만 제공할까 하였으나 얼마 안되는 내용이므로 간략하게 정리합니다.



Posted by 자수씨
, |

지난번에는 Maven 에서 GWT 프로젝트를 만들어 보았습니다.
[Maven] GWT 프로젝트 만들기

이제는 만들어진 프로젝트를 가지고 GWT 에뮬레이터를 실행시켜보겠습니다.

지난번에 만들었던 프로젝트에서 조금 바뀌었습니다.
일단 gwt 모듈의 설정파일을 수정합니다.
/kr.co.vicki.gwt.mytodo/src/main/java/kr/co/vicki/gwt/mytodo/Application.gwt.xml


아래와 같이 수정을 해야만 GWT Ext 라이브러리를 사용할 수 있습니다.



실제로 GWT Ext 에 사용하는 js, css, 이미지 파일들을 복사하는 작업을 해야합니다.
http://gwt-ext.com/download/


다운받은 gwtext-2.0.5.zip 의 압축을 풀고 해당 위치의 디렉토리들을 아래의 경로에 복사합니다.
/kr.co.vicki.gwt.mytodo/src/main/java/kr/co/vicki/gwt/mytodo/public
source 디렉토리는 필요없긴하나~ 검토의 귀차니즘으로 인해~ 그냥 복사함이 편합니다~


라이센스 문제로 인해 extjs 는 별도로 복사를 해야 합니다. ext-2.0.2.zip 의 압축을 풀고
위와 같은 위치해 해당 파일들과 디렉토리들을 복사합니다.
/kr.co.vicki.gwt.mytodo/src/main/java/kr/co/vicki/gwt/mytodo/public/js/ext



아래와 같이 구성이 되면됩니다.



이제 실제 구현될 파일을 수정해보도록 하겠습니다.
/kr.co.vicki.gwt.mytodo/src/main/java/kr/co/vicki/gwt/mytodo/client/Application.java


이제 에뮬레이터로 확인하는 일만 남았습니다.
프로젝트의 pom.xml 이 있는 위치에 콘솔창을 열고 아래와 같은 명령을 입력합니다.
(http://gwt-maven.googlecode.com/svn/docs/maven-googlewebtoolkit2-plugin/plugin-info.html 참조)

mvn googlewebtoolkit2:gwt

재대로 실행이 되지 않을 것입니다.


http://code.google.com/p/gwt-maven/wiki/M2FAQ 를 참조하여 다시 실행해보겠습니다.

mvn com.totsp.gwt:maven-googlewebtoolkit2-plugin:gwt




위와 같이 실행이 되면 성공입니다~~~



사실 처음 Maven 을 접했을때는 진입장벽이 있었는데 해보니깐 재미 있네요~~
Maven Plugin 도 기회가 된다면 만들어 보고 싶네요~~




Posted by 자수씨
, |

java.math.BigDecimal 을 RPC 통신을 할 경우에 기본 GWT 에서는 처리가 불가능 합니다.

그걸 처리가 가능하도록 나온 라이브러리가 있습니다.

http://code.google.com/p/gwt-math/



gwt-math-2.0.3.jar 는 client 컴파일시 사용을 하며
gwt-math-server-2.0.3.jar 는 was 라이브러리 경로에 배포합니다.


왜 이걸 이제야 찾았을까요~ (BigDecimal 을 직접 써야 하니깐... -_ㅜ;;;)




Posted by 자수씨
, |

Maven 을 이용하여 GWT, GWT Ext 프로젝트 환경을 구성해보겠습니다.

ㅁ Maven GWT Plugin
http://code.google.com/p/gwt-maven/
위의 플러그인 프로젝트의 도큐먼트를 참조하여 프로젝트를 생성합니다.

적당한 위치에서 아래와 같은 명령을 통해 Maven 프로젝트를 생성합니다.
Group ID 와 Artifact ID 는 적당한 값으로 설정합니다.
mvn archetype:create -DarchetypeGroupId=com.totsp.gwt 
    -DarchetypeArtifactId=maven-googlewebtoolkit2-archetype 
    -DarchetypeVersion=1.0.3 
    -DremoteRepositories=http://gwt-maven.googlecode.com/svn/trunk/mavenrepo 
    -DgroupId=[Group ID]
    -DartifactId=[Artifact ID]

생성된 프로젝트의 구조는 아래와 같습니다.



생성된 폴더 바로 아래 pom.xml 이 있을 것입니다.




GWT Ext 에 대한 설정을 추가합니다. 기본 주소에서는 GWT Ext 라이브러리를 받을 수 없어 jboss 쪽에서 받습니다.



이클립스 프로젝트로 변환합니다.

mvn eclipse:eclipse



BUILD SUCCESSFUL 입니다.

일단은 만들었으니... 그담에는 쫌 이따가 ㅋㅋㅋ







Posted by 자수씨
, |

1월 23일자로 GWT Wiki 에 새로운 글이 하나 올라왔습니다.
글의 제목은 InstantHostedMode 입니다. 찬찬히 살펴 볼까욤~



언제쯤 GWT 1.6 이 나와서 테스트하기 편한 환경을 마련해 줄까요...



Posted by 자수씨
, |


프로젝트 멘티가 발표되었습니다.
[공지] 프로젝트 수행자 공지

WoC의 프로젝트를 7주간(1/31~3/18) 진행할 수행대상자 안내입니다.

Winter of Code학생-개발자간의 합작 프로젝트
일정기간(1/31~3/18) 동안 프로젝트를 진행을 하면서
멘토와, 그리고 다른 참가자와 만나서 교류(네트워킹)하는 행사
라고 말씀 드렸던 것처럼 다양한 분들과 다양하게 네트워킹 할 수 있는 자리를 만들고자 합니다.



일단 멤버십 1차 탈락, 캠퍼스 위자드 2차 탈락, WoC 는 저를 버리지 않네요~ ㅋㅋㅋ



Posted by 자수씨
, |

자바스크립트는 싱글스레드라 복잡한 화면을 렌더링하면서 MessageBox 로 progress 를 보여줄 경우 재대로 표시가 되지 않는 경우가 있습니다. 이러한 경우에는 Timer 를 통해서 딜레이를 주어서 차례대로 실행하면 원하는 효과대로 처리할 수 있습니다.


_M#]

이 방법보다 좋은 방법 아시는 분 있나유~ -_ㅜ
아직 불안불안 합니다. ㅋㅋㅋ


Posted by 자수씨
, |

GWT 위키에 들어가보니 새로운 글이 하나 떴습니다. "Design: Overlay Types" ...

http://code.google.com/p/google-web-toolkit/wiki/OverlayTypes

Background

The JavaScriptObject class has been an extremely useful concept because it provides zero-overhead interoperation with external (typically, non-GWT) JavaScript while adding additional value to external JavaScript objects by representing them as actual Java types that are amenable to refactoring, code completion, and Javadoc-style documentation. However, subclassing JavaScriptObject was not generally supported before GWT 1.5 because we weren't sure if it was the right solution, or if we might need to evolve it in breaking ways. This document describes the "old model" prior to GWT 1.5, and the new model, overlay types, which shipped in GWT 1.5 as well as extensions to overlay types that will first ship in GWT 2.0.

The old model used two very different approaches for hosted mode and web mode, but in both cases the point of interest was the boundary point between Java and JavaScript code, when a JavaScript object passes into "the Java world". This boundary point was most often the return value of a JSNI function, but could also occur when a JSNI function accessed Java code through a field assignment, or by passing parameters to a Java function called from JSNI.

In hosted mode, we created an instance of JavaScriptObject (or a JavaScriptObject subclass) as we marshalled the value from JavaScript to Java. This instance served as a Java wrapper for the underlying JavaScript object. It had strong type identity, and handled instanceof, casts, and polymorphic calls through the normal Java mechanisms.

In web mode, we did not wrap the underlying JavaScript object in the traditional sense with a peer object, because that would have impeded performance. Instead, we decorated the underlying JavaScript object with sufficient type information to handle runtime type checks and polymorphic dispatch as needed.


JavaScriptObject 와 관련된 글인 것 같은데 조금 더 읽어봐야겠습니다.
누군가 영어를 잘하신 분이 친절하게 댓글을 달아주신다면.... ㅎㅎㅎ



Posted by 자수씨
, |

글 보관함

최근에 받은 트랙백