블로그 이미지
올해목표 // 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
 
01-21 19:44
 

달력

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

최근에 올라온 글

최근에 달린 댓글



Spring Roo addon 을 개발하려고 여러가지 방법을 강구하였으나, 레퍼런스도 많이 없고 해서 직접 디버깅이 가능한 환경을 구성해서 확인을 하려고 합니다. 하지만 Roo Shell 자체가 OSGi 환경인지라... 간단하게 되지는 않았습니다.



Spring Roo 소스를 내려 받기

1. GIT 설치하기
Spring Roo 는 GIT 로 버전관리를 하고 있었습니다. 기존에 GIT 이 설치되어 있지 않다면 GIT 을 설치합니다.

윈도우 환경 기준으로 손쉽게 설치할 수 있는 msysGit 을 설치하였습니다.

msysGit: http://code.google.com/p/msysgit/downloads/list

2011년 7월 24일 기준, Git-1.7.6-preview20110708.exe 파일을 다운로드 후 실행

설치 중에 "Adjusting your PATH environment" 에서 "Run Git from the Windows Command Propmt" 를 선택해야지만 커맨드 창에서 git 을 바로 사용할 수 있음. 선택하지 않으면 별도로 PATH 를 지정해주어야 합니다.


2. 소스 체크아웃
소스 저장소에서 Spring Roo 소스를 내려받습니다. (소스 저장소가 github 로 이관되었습니다.)
> git clone git://git.springsource.org/roo/roo.git
> git clone https://github.com/SpringSource/spring-roo.git
 

원하는 버전을 체크아웃 받습니다. (2011년 7월 24일 기준, 1.1.5.RELEASE 가 최신 릴리즈 버전이라서...)
> cd spring-roo
> git checkout 1.1.5.RELEASE



Posted by 자수씨
, |

윈도우 기준, %MAVEN_HOME%\bin\mvn.bat 를 수정합니다.

...
@REM Start MAVEN2
:runm2
set CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
set MAVEN_OPTS="-XX:MaxPermSize=364m"
%MAVEN_JAVA_EXE% %MAVEN_OPTS% -classpath %CLASSWORLDS_JAR% "-Dclassworlds.conf=%M2_HOME%\bin\m2.conf" "-Dmaven.home=%M2_HOME%" %CLASSWORLDS_LAUNCHER% %MAVEN_CMD_LINE_ARGS%
if ERRORLEVEL 1 goto error
goto end
...

heap size 문제가 발생하면 -Xmx=512m 정도로 설정해주면 될 듯하네요~



Posted by 자수씨
, |



Spring Roo 는 i18n 을 제공합니다.

자동으로 생성되는 웹 페이지에 대해서도 다국어 설정이 가능합니다.

지난 포스트에서 생성했던 프로젝트를 이용하여 다국어 설정을 해보도록 하겠습니다.


RentShop 프로젝트에서 Roo Shell 을 실행시킵니다.

스페인어를 추가하려면 아래와 같은 명령을 통해 가능합니다.
roo> web mvc install language --code es


다시 톰캣을 실행시켜 확인해보니, 아래 스페인 국기가 새로 추가되고 해당 국기를 누르면 스페인어로 변경이 됩니다.




그렇다면 한국어로도 가능하다는 이야기!!

roo> web mvc install language --code ko
Could not parse language code

위와 같이 명령어를 치면 언어 코드를 파싱할 수 없다고 합니다.


한국어를 지원하기 위해서는 해당 기능을 제공하는 Spring Roo addon 을 생성해야 합니다.


이 작업을 하기 전에 famfamfam 에서 태극기 아이콘을 내려받고, RentShop 프로젝트의 아래 경로에 있는 messages.properties 를 번역하여 message_ko.properties 를 준비합니다.
(/RentShop/src/main/webapp/WEB-INF/i18n/messages.properties)

한국어 addon 을 위한 프로젝트의 디렉토리를 생성하고 Roo Shell 을 실행시킵니다.
messages_ko.properties 파일과 kr.png 파일을 프로젝트 상위 디렉토리에 위치시킨후 addon 을 생성시키고 해당 작업이 완료되면 packaging 을 진행합니다.

roo> addon create i18n --topLevelPackage kr.co.vicki.roo.addon.i18n --locale ko --messageBundle ../messages_ko.properties --flagGraphic ../kr.png
roo> perform package



Spring Roo addon 은 OSGi 번들로 결과물이 나오게 되는데 해당 번들을 install 시켜 사용이 가능하도록 합니다.
(Roo Shell 에서 osgi ps 명령으로 해당 번들의 상태 확인이 가능합니다.)

roo> osgi start --url file:///D:/temp/roo/i18n/target/kr.co.vicki.roo.addon.i18n-0.1.0.BUILD-SNAPSHOT.jar
roo> osgi ps
START LEVEL 99
   ID   State         Level  Name
...
[  66] [Active     ] [    1] kr-co-vicki-roo-addon-i18n (0.1.0.BUILD-SNAPSHOT)



이제 다시 한국어에 대한 다국어를 추가합니다.

roo> web mvc install language --code ko




어색한 번역이지만 잘나옵니다. 호호홋








Posted by 자수씨
, |


Spring Roo~ 작년에 봤을 때는 듣보잡처럼 보였는데, 지금 보니깐 감동의 물결이 넘실거립니다.

설치에 대해서는 튜토리얼을 보면 되기 때문에 나중에 정리할 여유가 생기면 하기로 하고... 지금은 설치가 된 상태를 가정하여 작성합니다.

구동 환경
Spring Roo 1.1.4 RELEASE
Maven 2.2.1.RELEASE
STS 2.7.0 RELEASE (필수는 아님)


새로운 프로젝트 디렉토리를 생성하고 roo shell 을 실행시킵니다.
# mkdir RentShop
# cd RentShop
# roo

roo>



프로젝트를 생성합니다. 프로젝트 생성 시에는 최상위 패키지를 지정해야 합니다.
roo> project --topLevelPackage kr.co.vicki.roo.sample.rentshop


퍼시스턴스 레이어를 설정합니다. 프로바이더는 하이버네이트로, 데이터베이스는 테스트 용이므로 메모리 DB를 사용합니다.
roo> persistence setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY


엔티티 클래스를 생성합니다. Car, Customer, Rent
roo> entity --class ~.domain.Car --testAutomatically
roo> field string --fieldName modelName --notNull
roo> field number --fieldName displacement --type java.lang.Integer --notNull 0
roo> entity --class ~.domain.Customer --testAutomatically
roo> field string --fieldName name --notNull
roo> entity --class ~.domain.Rent --testAutomatically
roo> field reference --fieldName car --type ~.domain.Car --notNull
roo> field number --fieldName period --type java.lang.Integer --notNull 0


컨트롤러를 생성합니다. 패키지를 지정가능합니다. 위에 엔티티 생성시에도 나왔던 '~' 는 프로젝트 생성 시 지정했던 topLevelPackage 를 의미합니다.
roo> controller all --package ~.web



이걸로 간단한 샘플 프로젝트는 끝이 났습니다. 톰캣을 띄워 확인합니다.
# mvn tomcat:run

....
2011. 7. 13 오전 1:03:51 org.apache.catalina.startup.Embedded start
정보: Starting tomcat server
2011. 7. 13 오전 1:03:51 org.apache.catalina.core.StandardEngine start
정보: Starting Servlet Engine: Apache Tomcat/6.0.29
2011. 7. 13 오전 1:03:51 org.apache.catalina.core.ApplicationContext log
정보: Initializing Spring root WebApplicationContext
2011. 7. 13 오전 1:03:53 org.apache.catalina.core.ApplicationContext log
정보: Initializing Spring FrameworkServlet 'RentShop'
2011. 7. 13 오전 1:03:53 org.apache.coyote.http11.Http11Protocol init
정보: Initializing Coyote HTTP/1.1 on http-8080
2011. 7. 13 오전 1:03:53 org.apache.coyote.http11.Http11Protocol start
정보: Starting Coyote HTTP/1.1 on http-8080



위에 보이는 컨텍스트를 확인하여 생성된 프로젝트에 접속을 합니다.
http://localhost:8080/RentShop





먼가 투박해보이기는 하지만 CRUD 페이지가 뚝딱 만들어졌습니다.

아직 진가를 보여주기에는 부족해보이지만 실제로 Spring Roo 를 어딘가에 적용할지를 생각한다면... WOW 입니다~


Posted by 자수씨
, |

조금 써보니 깜놀할만한 것들이 막 쏟아져 나옵니다...

extjs addon 만들면 재밌을 것 같네요~ 랄랄라~~

 

Posted by 자수씨
, |

Spring Roo~

Spring/Spring Roo / 2011. 7. 8. 10:36

다시 활력을 찾아 취미로 Spring Roo 를 시작해보았습니다.

레퍼런스 문서를 보고 있는데 가장 맘에드는 문단이 눈에 확 들어오네요 ㅋㅋㅋ

3.6 Goodbye DAOs
One change many existing JEE developers will notice when using Roo-based applications is that there is no DAO layer (or "Repository" layer). As with the services layer, we have removed the DAO layer because it is not strictly essential to creating the typical web app.lication that most people are trying to build. ...

출처: Spring Roo - Reference Documentation (1.2.0.BUILD-SNAPSHOT) 

제발 빠이빠이 했으면...





Posted by 자수씨
, |


마지막 날이라 짧은 코스로 이동하려고 하였습니다.

첫날 못갔던 "신아월채관" 에서 점심을 먹고 "도원향" 에서 발 마사지를 받고 숙소에 맡겨놓은 짐을 찾아서 공항으로 갈 생각을...


택시를 타고 난징동루 에 도착하여 "신아월채관" 을 갔지만... 10월까지 내부 공사 중이였습니다.
그래서 어쩔 수 없이 "유신촨차이" 로 이동하였습니다.











레플즈 시티 안에 있는 릴리안 타르트를 먹기 위해 이동 중 입니다. 상해의 날씨도 덥습니다. 35도...





토요일인데다가 점심시간 후여서 사람들도 많고... 커피 한잔 하려 하였으나 적당한 곳이 없어서 숙소 근처로 지하철을 타고 이동하였습니다. 스타벅스에서 커피 한잔을 사들고 호텔로 이동하였습니다.






택시를 타고 공항으로 이동하였는데 200위엔 정도 나왔습니다. 공항에서 비행기를 기다린 후 뱅기를 타고 서울에 도착... 집으로 가는 버스가 없어서 인천공항에서 노숙을 하였습니다. 공항버스 첫차를 타고 집으로~




중국 상해 여행을 평가하자면 아래와 같습니다.

교통 ★★★★☆
음식 ★★★★☆
언어 ★★☆☆☆
치안 ★★★★★


택시나 지하철 버스 노선은 잘되어 있습니다. 하지만 택시기사들이 영어가 안되고 심지어 한문으로 된 지명을 보여줘도 모른다는건 좀... 호텔은 당연히 영어가 되는 곳이였지만 음식점은 거의 영어가 통하지 않았으며, 마사지 샵에서 매니저 급만 영어가 통했습니다. 결국 중국어가 안되면 바디랭귀지 밖에 답이 없는 곳이였습니다. 여행자가 많아서 그런지는 몰라도 밤거리는 안전해보였습니다. 음식은 별로 가리지는 않았지만 입맛이 없을 때 전세계 동일한 맛을 추구하는 패스트푸드점(KFC, 맥도날드) 를 이용할 수 있어서 문제는 없었습니다.

좀 아쉬웠던 부분은 간단한 회화 (메뉴판 주세요, 계산 부탁합니다, ~로 가주세요) 를 준비 해가지 못한 것과 지하철을 적극적으로 이용했었으면 하는 부분이였습니다.

글고 T8 에 가면 물을 시킬 때 조심해야 합니다. (가격을 꼭 확인)

다음 번에 여행을 간다면 저런 부분은 꼭 챙기고 가야겠다는 생각이 들었습니다.


Posted by 자수씨
, |


아침에 호텔 조식을 먹고 둘째날 첫 관광지인 "예원" 으로 이동하였습니다.
택시기사한테 "위위엔" 이라고 아무리 이야기해도 안통해서 지도를 콕콕콕...








오후 일정으로 바디 마사지를 위해 예약을 하러  "드레곤 플라이" 로 이동하였습니다.
이번에도 택시기사에게 "푸싱광창 난창루" 를 외치며 지도를 콕콕콕...

"드래곤 플라이" 가 "엘리먼트" 로 바껴서 좀 헷갈렸지만... 그 곳에서는 영어가 통해서 영어 담당 광청이가 예약을~






점심식사를 위해 "T8" 이 있는 신천지 쪽으로 이동하였습니다. 거리가 그렇게 멀지는 않아서 걸어서 이동하였습니다.





100위엔(약 17,000원) 짜리 물 (VOSS) 을 마시게 해준 "T8" 에서 런치 메뉴를... 물값과 서비스 차지 포함 850 위엔...




"타이캉루 예술인 거리" 도 거리가 별로 안되보여서 걸어서 이동하였으나... 길을 못찾아서 캐고생 ㅠ_ㅠ...

여기 저기 둘러 본 후에 1+1 행사인 칭따오 맥주를 마셨습니다. 2병에 30위엔~






예약을 했던 마사지를 받기 위해 다시 택시를 타고 "엘리먼트" 로 이동하였습니다.
바디 마사지 90분 짜리가 225 위엔... 좀 비싼듯...






마사지를 받고 난 후 저녁을 먹기 위해 신천지로 다시 걸어서 이동하였습니다. "스위트 다이너스티" 라는 곳을 가려 하였으나... 닫았습니다. 그냥 근처에 있는 일본식 음식점에서 저녁식사를 했습니다. 4명이서 172 위엔으로 배부르게~








택시 타서 어렵게 장소 이야기 하는 것 보다는 지하철이 편할 것 같아 1호선을 타고 숙소 근처로 이동하였습니다.





우리나라 지하철과 별 다를게 없어 안전하게 숙소 근처로 이동~



맥도날드에서 감자튀김과 너겟을 사서 숙소가서 한잔 더~~~






소주 병 처럼 생긴 마운틴 듀를 마시며 정산을...






둘째날도 피곤피곤~


Posted by 자수씨
, |
 

민철선배-선희누나 커플과 광청이와 함께 2박 3일로 중국 상해 여행을 다녀왔습니다.
(물론 선배 커플이 싸울 경우 두배 위약금이라는 조항을 달아놓았죠...)

아침 8시 반 비행기라서 공항에는 6시 반까지 모이라고 하였습니다. 누나의 지각과 면세품 인도장에 몰린 사람들 때문에 신라면세점에서 구매한 물품은 포기한체 비행기에 올랐습니다.





상해 푸동 공항까지는 약 1시간 반정도 걸렸으며, 기내식을 먹고 뭐 좀 하다보니 도착을 했습니다. 날씨가 좀 안좋은지 엄청 흔들리더군요...



이번 여행 때 충동구매로 구입한 시계입니다~ 가격은 대략 $87 ???





푸동공항에 도착하여 입국심사를 받은 후 가이드와 함께 삼일간 묵을 코트야드 메리어트 호텔로 이동하였습니다.






숙소는 좁지도 않고 깨끗하였으나... 한국어 방송이 나오지 않는 점만 빼면 괜찮았습니다.






점심식사를 위해 중국10대 요리점이라는 "신아월채관"을 가기 위해 택시를 타고 이동하였습니다.
문제는 여기서부터 시작되었습니다. 윙버스에서 준비한 택시카드를 택시기사 아저씨에게 꺼내든 순간... 못알아보시는 듯하여... 어찌저찌 설명하여 인민광장까지 택시를 타고 이동하였습니다.






인민광장에서 "신아월채관"까지는 거리가 조금되어 "난징동루보행가"까지 걸어갔습니다.




그 유명하다던 "신아월채관" 은 문이 닫혀있었습니다. 안내 데스크에 물어보니 "Closed" 라는 표현을 쓰길래 시간을 보니 2시 정도가 되었습니다. 브레이크 타임이었나 봅니다.



다시 점심을 먹기위해 레플즈 시티로 이동하였습니다.









원래는 "상하이 미술관" 을 가려고 하였으나... 찾지를 못하여 상해에서 가장 큰 박물관인 "상하이 박물관" 을 둘러보았습니다.



4층 규모에 방이 네개인데... 지친데다가 너무 커서 그냥 한층만 둘러보고 휴식을...



푸동지역으로 가기위해 선착장으로 이동하였습니다. 1인당 2위안 으로 저렴하게 갈 수 있었습니다.
(사실 지하철도 3위안 밖에 안하는데... 지하철 타고 갈걸 그랫습니다.)








"동방명주"를 보기 위해 중심가로 이동... 길을 잘못들기도 하고 체력이 고갈되어 커피빈에서 잠깐 쉬었다가 "상하이 IFC 몰"에서 충동구매...







다시 황포강을 건너 칵테일을 한잔 마신 후 숙소로 이동...





온세계를 돌아다녀도 변하지 않는 KFC 의 윙과 감자튀김을 안주 삼아 술한잔을 하고 취침하였습니다.






첫날 너무 힘들어서... 끄어어어




Posted by 자수씨
, |

필코 마제스터치에 FC300R용 무각 키캡을 장착시켰습니다.



한자키랑 한/영키만 어떻게 바꾸면 좀 더 멋질 듯...

음하하하하하





Posted by 자수씨
, |

글 보관함

최근에 받은 트랙백