hacking2009/06/14 23:19
크리에이티브 커먼즈 라이선스
Creative Commons License
Eclipse 3.5 GalileoNetBeans 6.7가 릴리즈를 앞둔 6월의 어느 일요일 오후. 문득, Turbo Pascal을 처음 접했던 때가 떠오른다. 상념은 꼬리에 꼬리를 물고...

RUN과 CALL-151

8비트 애플은 말그대로 "개발자의, 개발자를 위한, 개발자에 의한 PC"였다(PC의 P는 Personal보다는 Programmer가 아니었을까?). 컴퓨터의 전원을 켜면 바로 베이직 인터프리터가 실행되서 BASIC 코드를 작성하고 실행(RUN)할 수 있었고, "CALL -151"이라는 명령을 치면 기계어 모드로 들어가서 어셈블리어/기계어 프로그래밍도 할 수 있었다((유명한 유겸아부지의 블로그 제목이 여기에서 나온거다). 이 때만 해도 IDE는 고사하고 풀스크린 에디터나 디버거의 존재도 몰랐다. 번들되어 나오는 Macro Assembler를 쓰다가, Lisa Assembler의 속도에 환호하고, Merlin Assembler에 감탄하던 그런 시절이었다.


시대를 너무 앞서간 USCD Pascal 그리고 ...

큰형兄의 책꽂이에 꽂힌 책(물론 원서였다-,.-)을 통해 UCSD Pascal을 접하게 되었다. 구질구질한 베이직과 단순무식한 6502 어셈블리에 지루함을 느낄 무렵, 파스칼의 우아함은 너무나도 크게 다가왔다(그 영향일까? 지금도 나는 파스칼이 가장 우아한 언어라는 깨고 싶지 않은 환상을 품고 산다). 문제는 UCSD Pascal로 만든 프로그램을 실행하기 위해서는 UCSD-P System(요즘 자바나 .NET과 비슷하다고 보면 된다)이 필요하다는 건데, 그게... 배보다 배꼽이 (한참) 컸다(스몰톡과 비슷한 딜레마?)

(맨 윗 줄에 나와있는 명령 리스트를 보고 L, E, R, ...등을 치면 해당 명령이 수행된다. 이 화면은 Filer라고 불리우는 UCSD-P 시스템의 파일 관리자 화면이다)

마소(당시에는마이크로소프스社가 아니라 월간 마이크로소프트웨어를 이렇게 줄여서 불렀다)에 소개된 Whitesmith C와 BDS C 등을 힘들게 구해(물론 불법 복제였지만, 지방에 사는 중딩에겐 이것도 쉬운 일이 아니었다) 이것 저것 삽질을 했었는데, 컴파일하고 링킹하는데만 몇시간씩 걸리곤 했다(그 영향일까? 지금도 나는 C가 조잡한 언어라는 말도 안되는 선입견을 갖고 있다).

(시간적인 순서가 오락가락하긴 하는데)마소의 특집 기사로 소개된 ASBEC(Apple Structured Basic Environment and Compiler?)이라는 프로그램이 아직도 기억에 남는다. 구조적인 프로그래밍이 가능하도록 구문을 확장한 베이직이었는데, 그것보다 더 쇼킹했던것은 그 개발환경이었다! 풀스크린 에디터와 통합된 컴파일러! 그것도 울나라 사람이 만든!

그리고...

Turbo Pascal의 등장

처음 접한 Turbo Pascal은(3.0이었다고 기억한다) 8비트 애플에 소프트카드(마이크로소프트에서 만든)라는 확장 카드를 꽂고 CP/M이라는 OS로 부팅해야 사용할 수 있는 소프트웨어였다. 지금은 구글을 통해서도 스크린샷도 찾기 어려운데... CP/M의 커맨드 프롬프트에서 TURBO.COM을 실행하면 풀스크린 메뉴를(화면 가득 메뉴를 표시하면 각 메뉴 앞에 표시된 선택 키를 직접 눌러 메뉴를 선택하는 방식. 예를 들어 E.Edit 라고 되어 있으면 E 키를 누르면 편집이 되는 식이다) 통해서 소스를 편집하고, 컴파일하고, 실행할 수 있었다.

E키를 눌러 편집기로 들어가서 Ctrl+E,Ctrl+S,Ctrl+D,Ctrl+X 를 화살표키 대신 사용하고(8비트 애플에는 화살표키가 없었다), Ctrl+K,B, Ctrl+K,K로 블럭을 지정하는... 편집이 끝나면 Ctrl+K,D로 다시 풀스크린 메뉴로 나와서 C키를 눌러 컴파일하고, R키를 눌러 실행한다. 아직까지 풀스크린 디버거는 나오기 전이었지만, 이것만으로도 충분히(!) 감동적이었다.

IDE는 익히 알려진 것처럼 Integrated Development Environment, 우리말로 직역하면 통합된 개발 환경이다. IDE는 기본적으로:
  • 편집기
  • 컴파일러 / 인터프리터
  • 디버거
를 하나의 틀 안에 포함하고 있는 통합 소프트웨어다. 그런 면에서 보면 UCSD Pascal이 내가 접한 최초의 IDE였지만, 워낙 특이한 시스템이니 논외로 치면, Turbo Pascal은 실제로 내가 사용한 최초의 IDE가 아닐까 싶다.

Borland와 "Turbo"의 전성 시대

IBM-PC가 등장하고 (지금의 것과 거의 유사한)풀 다운 메뉴를 갖춘 Turbo Pascal도 4.0이 등장했다(Turbo Pascal 4.0으로 4.0의 그것과 똑같은 풀다운 메뉴와 팝업 윈도를 구현하기 위해 삽질하던 기억은 지금도 생생하다.) Turbo Pascal은 그 후 디버거와 프로파일러를 포함한 5.0, Object Pascal을 지원하기 시작한 5.5를 거쳐 Delphi와 Borland Pascal로 이어진다.


(Pull Down Menu, Overlapped Popup Window, Split Window 등의 혁신적인 UI를 선보인 Turbo Pascal 4.0)

Borland는 기세를 몰아 Turbo C, Turbo Assembler, 그리고 Turbo C++까지 내놓으면서 80년 후반에서 90년대 초반에 걸쳐 IDE 시장을 석권했다. GW-BASIC, Macro Assembler, Microsoft C 같은 전통적인 개발 툴로 나름대로 선전하던 Microsoft도 Quick Basic(요즘도 윈도에 기본으로 포함되어 나오는 QBASIC이 이 녀석의 후손이다), Quick C 등의 IDE 제품을 내놓았지만 Borland의 아성을 무너뜨리기엔 역부족이었다.

(Turbo 시리즈의 친숙한 블루 스크린)
그러나...

Microsoft와 "Visual"의 전성 시대

윈도 3.0의 등장과 함께 순식간에 상황이 역전되었다. Borland가 도스와 윈도 사이에서 갈등하는 사이(Turbo시리즈는 DOS용, Borland 시리즈는 윈도용), 공전의 히트작인 Visual Basic과 Visual C++이 등장했다. Borland도 뒤늦게 Delphi로 반격을 시도했지만 이미 전세는 기울어진 뒤였다. Visual Basic이 Quick Basic의 제대로된 Windows 버전이었던 반면, 볼랜드의 (Delphi를 제외한) 윈도용 제품들은 어색하기만 했다.

Turbo C 2.0과 Turbo C++ 1.0을 쓰다가 군대갔다 와서... 그나마 익숙한 Borland C++로 어색한 윈도 프로그래밍을 해보겠다고 친구들과 삽질하던 시절. 학교 연구실에서 복사해온 Visual C++을 깔고 처음 내뱉은 말...
"도대체 어디가 비주얼 하다는 거야?"

이후로도 한참 동안 두 회사의 치열한 공방전이 계속되었지만 Microsoft의 "홈그라운드"인 Windows에서 벌어지는 전쟁에서 Borland가 이길 가능성은 희박했다. Windows의 새 버전이 나올때 마다, 그리고 DirectX의 새 버전이 나올때 마다, Borland는 점점 힘을 잃어갔고, Visual Studio는 아주 조금씩 Visual 해져갔다.

(오랫동안 내 밥줄이었던 Microsoft의 역작(!) Visual Studio 6.0)

문득, 오라클의 Power Object인가 하는 툴(기억이 가물가물)을 보면서 그 비주얼함에 감동먹었던 기억이 난다. 한편, 당대 최고의 밥줄이던 Power Builder의 그 Non-비주얼함에 감사했던 기억도 새록새록... 비주얼했다면 Power Builder가 자랑하는 CPM 방법론(Copy-and-Paste-and-Modify)가 쉽지 않았을 테니...-O-

어느새, 아무도 IDE라는 말을 쓰지 않게 되었다. 특별한 수식어가 붙지 않는 모든 개발툴은 당연히 IDE이며, IDE가 아닌 개발툴은 SDK라는 표현을 쓰기 시작했다.

IDE의 귀환 - "Eclipse"의 전성 시대

Microsoft가 자아도취에 빠져 주춤한 사이에 슬며시(그러나 강력한 임팩트와 함께) 등장한 Java가 주류 언어로 급부상하면서 Java를 위한 IDE들이 앞다투어 등장했다. 그러나 Borland의 JBuilder, Symantec의 Visual Cafe, 그리고 Microsoft의 Visual J++ 등의 1세대 Java IDE들은 기존 IDE를 답습한 에디터/컴파일러/디버거 그리고 GUI Designer를 하나로 뭉쳐놓았을 뿐, 자바와 같은 동적인 언어(물론 자바보다 훨씬 더 다이나믹한 언어가 많다는 건 알지만... C/C++에 비해 상대적으로)의 특성을 툴에 녹여내지 못했다. IBM의 VisualAge for Java와 Sun의 NetBeans는 너무나 앞서간 개념들로 버림 받았다(...고 생각했었다).

자바 개발자들이 EditPlus와 Ant 스크립트를 이용해서 모든 것을 해결하는데 익숙해질 무렵... Eclipse가 혜성처럼(어쩌면 시나브로) 등장했다. 갑자기 등장한 것 처럼 보이지만 Eclipse는 오래 전에 SmallTalk으로 개발했던 VIsualAge 시리즈를 자바로 재작성한 것이다. 10년 전의 설계가 이제서야 사람들에게 인정받기 시작한 것일까? 아니면 하드웨어가 자바로 만든 개발 툴을 수용할 수 있을 정도로 강력해진 덕분일까? Eclipse는 그 이름처럼 Java를 넘어 (거의) 모든 IDE 들을 삼키기 시작했다. 시장의 요구에 맞춰 무리하게 (어설픈) IDE를 만들 수 밖에 없던 플랫폼 SDK 벤더들, 그리고 아무 벤더도 자신들의 언어를 위한 IDE를 만들어주지 않는 군소 언어 사용자은 Eclipse에게 기대는 편이 훨씬 편한 길이었다.

(이클립스는 운영체제 고유의 네이티브 L&F를 제공하는 SWT 덕분에 더욱 각광받았다)

Eclipse가 무소불위의 전성시대를 구가할 무렵, NetBeans는 아무런 관심도 받지 못한채Forte for Java, Sun Creator Studio 따위의 어처구니없는 이름을 거쳐, Matisse 다시 NetBeans로 돌아왔다. 그리고 점점 비대해지는(그리고 점점 더 먼 우주로 날아가고 있는) Eclipse의 빈틈을 파고들며 외로운 추격전을 벌이고 있었다. Sun이 Oracle로 인수되면서 NetBeans가 희생양이 될것인지... (JBuilder가 그랬던 것처럼) Oracle JDeveloper라는 이름으로 살아남을 것인지는... 조금 두고보면 알 수 있을 듯...

(NetBeans는 Swing의 어설픈 GUI때문에 버림받았지만, 아이러니하게도 Swing GUI 편집기인 Mitisse 덕분에 재조명 받게 되었다)

...

Eclipse 3.5 RC 설치하고 간단히 리뷰를 남기려고 왔다가 옆길로 (너무 멀리) 샜다. -,.-;;;;;

덧. 이 글은 어디까지나 주관적인 경험과 취향에 근거하여 작성한 것으므로, 정치적인 태클(예를 들어 emacs 얘기가 왜 없냐~든가)은 정중히 사절하는 바입니다.

Posted by iolo
hacking2009/05/26 23:12
크리에이티브 커먼즈 라이선스
Creative Commons License
들어가는 글

오늘 삽질은 이클립스PyDev를 사용해서 이클립스에서 AppEngine(Python)어플리케이션을 개발할 수 있는 환경을 꾸미는 거다. AppEngine이 나오자 마자 guestbook 예제만 따라해보고 잊어버렸는데, 뭔가 해보긴 해봐야겠는데 지난 번 AppEngine for Java 삽질을 해보니 당분간은 파이썬 버전이 현실적인 듯 해서...^^;

리눅스에서는 사실 이클립스 같은 거 있어봐야 걸리적 거리기만 하고, OSX이라면 허접하긴 해도 구글에서 제공하는 간단한 툴이 있어서 나름대로 유용하게 쓸 수 있다. 윈도에선... 그야말로... Orz 나로 말할 것 같으면, 최근 몇년 동안 소스 코드 편집에 vi와 이클립스 외엔 써본적도 없다.

준비 - 이클립스 + PyDev

이클립스PyDev 플러그인은 재주껏 설치하시라. 파이썬을 잘 알아도 이클립스는 모르겠다는 분은 trigger님의 블로그를 참조하시면 되겠다. 파이썬이 뭔지도 모르겠다는 분은 Dive Into Python을(현재 한글 번역본은 빌드를 잘못해서... 깨져서 보이는데 어차피 옛날 버전이니 영문판 보는게 나을 듯) 참조하시길...

PyDev 프로젝트 생성

아무튼, File -> New -> Project 에서 PyDev Project를 선택하여 새로운 PyDev 프로젝트를 만들어 보자:

그 다음 화면에서 Project name(여기서는 iolo)을 입력하고, Grammer Version2.5로(AppEngine 1.2.2 기준) 맞춰주자. 그 밑에 보면 소스를 src 폴더에 만들겠다는 체크박스가 있는데(기본으로 선택되어 있다) 니맘대로 하면된다. 프로젝트 이름은 꼭 AppEngine 어플리케이션 이름(****.appspot.com)과 같을 필요는 없다. 정확한 이름은 app.yaml에 적어주면 된다. 

그 다음 화면은 참조할 모듈(이클립스 프로젝트)를 지정하는 건데, 그 모듈을 디버깅하는게 목적이 아니라면 필요없으니, 무시하고 넘어가자. 어차피 PYTHONPATH로 지정해주면 되니까 다음(Next)를 눌러 구경하던가, 그냥 마침(FInish)를 누르자.

PyDev 프로젝트 설정 
본격적인 코딩에 들어가기에 앞서, 프로젝트의 PYTHONPATH에 AppEngine 전용 라이브러리들을 추가해주자. 화면 왼쪽(Pydev Package Explorer)에서 프로젝트를 선택하고(이거 안해주면 이클립스가 삽질한다. 이후에도 프로젝트에 대해서 뭔가하려면 항상 프로젝트를 먼저 선택해주는 걸 잊지말자. 이게 귀찮으면 그냥 프로젝트의 컨텍스트 메뉴를 쓰는게 제일 확실하다), Project -> Properties (혹은 프로젝트 컨텍스트 메뉴에서 Properties)를 선택하면 프로젝트 Properties 대화상자가 열린다. 대화상자의 왼쪽에서 PyDev - PYTHONPATH를 클릭하면 아래 그림같은 화면이 나온다:

오른쪽의 External Source Folders 옆에 있는 Add source folder 버튼을 눌러가면서 아래의 폴더들을 추가하자(단, D:\devel\google_appengine은 본인이 AppEngine SDK(Python)를 설치한 디렉토리다):
  • D:\devel\google_appengine\
  • D:\devel\google_appengine\lib\django
  • D:\devel\google_appengine\lib\webob
  • D:\devel\google_appengine\lib\yaml\lib
실행 설정(Run Configuration)

이제부턴 구글에서 제공하는 튜토리얼을 따라서 app.yaml도 만들고, 필요한 helloworld.py파이썬 소스도 만들고... 이것 저것 해보자. 흠 여기까진 별 문제 없는데, 문제는 이걸 실행하는 거다. 물론 튜토리얼에서 설명하는대로 커맨드 프롬프트를 열어서(윈도 시작 메뉴 -> 실행(비스타라면 그냥 검색창에) -> cmd) dev_appserver.py를 실행해도 되겠지만, 그래도 명색이 IDE니까... IDE스럽게...^^

Run -> Run Configuration 메뉴(또는 Run  툴바()의 드롭다운 메뉴에서)를 선택하면 Run Configurations 대화상자가 열린다. 대화상자의 왼쪽에서 Python Run을 클릭하고, 다시 대화상자 위쪽에 있는 작은 New 툴바(또는 Python Run에서 오른쪽 버튼을 클릭하고 팝업 메뉴에서 New 메뉴)를 클릭하자(혹은 Run -> Run As -> Python Run을 해도 된다).

대화상자 오른쪽을 보면 여러개의 탭들이 장황하게 늘어서 있는데, 맨 앞의 Main 탭에서 Main Module 아래에 dev_appserver.py의 위치를 입력(!)해주자. 옆에 있는 Browse는 해봐야 소용없다. 내 경우엔 D:\devel\google_appengine\dev_appserver.py 인데, 알아서 맞게 입력하면 되겠다:

계속해서, 그 옆에 Arguments 탭에서 Program arguments 아래에 소스 디렉토리를 입력하자. 내 경우엔 "${project_loc}\src" 인데, 프로젝트 생성할 때 src 폴더를 만든다는 체크박스를 껐던가 나름대로의 디렉토리 구조를 잡아놓았다면 알아서 맞게 입력하면 되겠다. 여기에 dev_appserver.py가 제공하는 여러가지 옵션을 지정할 수 있는데, 많이 쓰이는 것은 --port 옵션이다(기본값은 8080):

이제 Run을 누르면 실행된다. 다음부터는 그냥 Run -> Run 메뉴(또는 Run 툴바)를 선택하면 마지막으로 실행한 녀석을 다시 실행한다. 중간에 다른 뭔가를 실행했다면 Run -> Run History Run 툴바의 드롭 다운 메뉴를 열어서 지금 설정한 녀석을 고르면 된다(위의 스크린샷대로라면 기본값인 New_configuration인데 하다보면 바꾸게 될거다).

실행 및 디버깅

dev_appserver.py의 출력 메시지는 이클립스 창 아래에 있는 Console 탭에 표시된다. 종료하려면 그 탭 위쪽에 있는 빨깐 네모()를 눌러주면 되겠다(이런거 까지 얘기할 필요가...).

여기까지면 일단 명령 프롬프트 열어서 할 수 있는 건 다 할 수 있고, 보너스로 디버깅)까지 할 수 있다. 디버깅을 하고 싶으면 Run 툴바()대신 바로 왼쪽에 있는 초록색 딱정벌레(캡쳐하기 귀찮다-,.-)를 눌러주면 된다. 자세한 사용법은 PyDev 홈페이지에서 제공하는 문서를 참조하자.

나가는 글

별 내용은 없지만 -,.- 딱히 일도 손에 안잡히고... 심심하기도 하고... 혹시나 도움이 될까해서 써 봤다. 근데 파이썬으로 코딩같은 코딩을 해본지가 거의 4~5년이 지나니 뭘 해야할지 완전 막막하다 -,.- 아무튼 어여어여~ 맘잡고 좀 더 보람있는 일로 저녁시간을 써야...

Posted by iolo
hacking2008/12/29 11:57
크리에이티브 커먼즈 라이선스
Creative Commons License

제목 그대로 다시 보는 이클립스 입문.
이클립스를 오랫동안 써왔지만, 오히려 그 때문에 최근 버전에서 달라진 기능들을 더 모른다.
번역하다보니 한글 용어 선택이 까다로워 이클립스 언어 팩을 깔아서 돌려봤는데...
이클립스 언어 팩이 3.2.1 이후로 나오지 않고 있더라.

아무튼 길지 않은 분량이니 심심풀이 땅콩삼아~ 읽어보시길~

Posted by iolo
hacking2008/09/01 22:17
크리에이티브 커먼즈 라이선스
Creative Commons License
CVS에서 SVN으로 마이그레이션 하기... 벌써 세번째 인데... 할때마다 헷갈린다.
적어두자... -.-;;; (소 잃고 외양간 고치는...)
  • cvs 서버:
    • 현 시점에서의 CVS를 SVN 형식으로 덤프 뜨자.
    • $ cvs2svn --use-cvs --encoding=cp949 --fallback-encoding=utf8 --dumpfile=/tmp/cvs-dump /home/cvs
    • 덤프를 SVN 서버로 복사하자. 같은 서버라면 할 필요가 없다.
    • $ scp /tmp/cvs-dump root@svn.mycompany.com:/tmp/
  • svn 서버:
    • SVN 리포지터리를 만들자.
    • $ svnadmin create /home/svn
    • SVN을 WEBDAV으로 접근하려면... 이런게 필요하다.
    • $ chgrp -R www-data /home/svn
    • $ chmod -R g+w /home/svn
    • CVS에서 뜬 SVN 덤프를 복원하자.
    • $ svnadmin load /home/svn < /tmp/cvs-dump
이상 끝~

Farewell, CVS~
Welcome to SVN~

뽀나스로 이클립스에서 subclipse 사용하기 + 서브버전 기초

1부~


2부~


=3=3=333

Posted by iolo
hacking/java2008/02/19 12:23
크리에이티브 커먼즈 라이선스
Creative Commons License
새로운 이클립스용 Maven2 플러그인 Q.. 줄여서 q4e가 등장했다.(고 하기엔 좀 오래된 얘기일지도...)

현재로썬(0.4) WTP 지원이 원할하지 않아서 M2WTPlibcopy같은 플러그인과 같이 써야한다.(m2eclipse도 예전에는 비슷한 삽질이 필요했는데 최근 버전은 WTP와 잘 붙는다.) 대신 mavenide(넷빈즈용 maven 플러그인)에 있던 의존성 그래프같은 기능을 갖고 있다.

이클립스 공식 프로젝트로 제안됐는데... 글쎄...
http://www.eclipse.org/proposals/iam/

나름대로 이유가 있긴하지만, m2eclipse가 어느 정도 자리를 잡아가는 시점에서 이렇게 fork하는 모양새가 그닥 좋아보이진 않는다.

예전에 써두었다가 포스팅 안했던 건데, 포스팅할거리도 없고... -.-;;;
Posted by iolo
hacking2008/01/29 16:27
크리에이티브 커먼즈 라이선스
Creative Commons License
기사: Mylyn 2.0: 태스크 중심 프로그래밍

지난 주에 한국 developerWorks에 기고한 기획 기사 요약문이다.

지금 내가 쓰고 있는 자바 개발 환경은 (당연하게도) Eclipse다. 버전은 현재 최신 안정 버전, 3.3.x이다. 이클립스 3.3이 처음 나왔을때 Mylyn이라는 녀석이 기본으로 포함되었다는 얘기는 들었지만, 뭔가 명확한 설명없이 좋은거다라는 식의 소개 글들을 보고 무시했었다. 내가 3.3으로 업그레이드한 유일한 이유는 WTP 2.0에 새로 추가된 "Serve modules without publishing" 때문이었다.

(다른 많은 사람들과 마찬가지로) 이클립스의 지지부진한 업그레이드에 (약간) 실망하여,  NetBeans로 전환을 모색하고 있었다.(NetBeans용 maven플러그인 mavenide가 이클립스용maven플러그인인 m2eclipse보다 훠~ㄹ씬 좋다는 단 한가지 이유 때문에)

그러던 중에, Mylyn 기획 기사 요약문을 기고하려다 보니, 기사를 꼼꼼히 읽어보지 않을 수 없었다.
그런데 몇 번 읽어봐도 뭐하는 건지 느낌이 안오는 거다. 대충 말만 맞춰서 분량만 때우려다...-.-;;; 그래도 본인 스스로도 이해를 못하는 내용을 소개할 수는 없기에...(일말의 양심?)  좀 더 삽질을 해보기로 했다. 마침 회사에서 개발 중인 제품의 QA를 진행하고 있던 터라, 실무에 적용해 보았는데....

이게 완전 대박! 이다.
百聞이 不如一見, 百見이 不如一RUN!!!

Posted by iolo
hacking/java2007/10/08 14:03
크리에이티브 커먼즈 라이선스
Creative Commons License
잘돌아가던 이클립스가 며칠 전 부터 계속 뻗기 시작했다.
가만히 생각해보니 3.3.1 업데이트 이후부터 그런것 같아서...
이런 저런 삽질하다가... eclipse.ini파일에 -XX:MaxPermSize 옵션을 넣어 주어서 해결했다.

잘 찾아보면... 이클립스 버그질라에 이미 올라와있다.
위키의 FAQ 페이지도 그저께 수정되었다.

지금 내가 쓰는 eclipse.ini 파일:
-clean
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256M
-vmargs
-XX:PermSize=256m
-XX:MaxPermSize=256m
-Xms40m
-Xmx768m
-Xverify:non

정리하면, 4~5째줄 --launcher.XXXMaxPermSize 256M 옵션이 Eclipse 3.3.1 + Sun JVM에서 동작하지 않는다는 얘기.

줸장...ㅠ.ㅠ

Posted by iolo
TAG Bug, Eclipse
hacking/java2007/09/13 11:32
크리에이티브 커먼즈 라이선스
Creative Commons License
MavenEclipseWTP은 뭔가 삽스러웠다. 그래서 정석으로 파고들기 시도~

준비물

eclipse 3.0+ 설치

maven 2.0+ 설치 http://maven.apache.org

윈도의 시스템 PATH 등록

m2eclipse 플러그인 설치 http://m2eclipse.codehaus.org/update-dev/

m2wtp 플러그인 설치 http://m2wtp.googlecode.com/svn/trunk/kr.javanese.devtools.m2wtp.update


명령행(cmd)에서

  1. C:\workspace>mvn archetype:create -DgroupId=com.thinkfree.ajax -DartifactId=test -DarchetypeArtifactId=maven-archetype-webapp
  2. C:\workspace>cd test
  3. C:\workspace\test>mvn -Dwtpversion=1.5 eclipse:eclipse

이클립스에서

  1. File > Import > Existing Projects into Workspace > C:\workspace 선택 > test2 선택
  2. test 프로젝트 팝업메뉴 > Maven > Enable Dependency Management
  3. test 프로젝트 팝업메뉴 > Add M2WTP Builder
  4. test 프로젝트 팝업메뉴 > Properties
    1. Project Facets > Modify > Java1.4 를 5.0 또는 6.0으로 변경
    2. Java Build Path > Libraries >  Maven2 Dependencies, M2_REPO/...junit... 삭제
  5.   test 프로젝트(또는 그 아래 pom.xml) 팝업메뉴 > Add Dependency(또는 직접 pom.xml 편집)

삽질은 계속되어야 한다... 주욱~


TBW


이 글은 스프링노트에서 작성되었습니다.

'hacking > java' 카테고리의 다른 글

Eclipse 3.3.1의 PermGen 버그...  (1) 2007/10/08
유리 물고기 v2.0 정식 릴리즈  (0) 2007/09/21
Maven2와 Eclipse/WTP 함께쓰기 (2)  (0) 2007/09/13
Maven2와 Eclipse/WTP 함께쓰기  (0) 2007/09/11
singleton과 lazy loading...  (0) 2007/01/28
Java6 XMLOutputFactory 유감  (2) 2007/01/15
Posted by iolo
hacking/java2007/09/11 01:31
크리에이티브 커먼즈 라이선스
Creative Commons License
이거 어디서 퍼왔더라-.-;; 원 출처를 까먹었다.

출처: http://livingash.wordpress.com/2007/08/13/back-to-the-future-when-eclispe-wtp-20-meets-maven-2/


구질구질하긴 하지만... 뭐 어때~ 잘 돌아간다!


기본적인 절차는 대충 이렇다:

  1. 이클립스를 띄우고, "Dynamic Web Application" 프로젝트를 하나 만들고,
  2. 표준 maven 프로젝트를 기본 archetype으로 만들고,
  3. 모든 이클립스 설정 파일들을 maven 프로젝트로 복사한 다음, 프로젝트에 맞게 수정한다.

준비물:

  1. 이클립스 3.3 + WTP 2.0.
  2. M2Eclipse 플러그인(http://m2eclipse.codehaus.org/)
  3. 서블릿 컨테이너 런타임.(톰캣이든 뭐든.. 설정 된 넘으로)A servlet container runtime, could be Tomcat or anything supported, is configured.

자 이제 본격적으로 시작해보자!


1단계: 참조용 WTP 프로젝트 만들기

간단하지 뭐~

  1. 이클립스 띄우고.
  2. New project > Project … > Web > Dynamic Web Project.
  3. 프로젝트 이름 짓고, 타겟 런타임 지정하고, 완료.
  4. 이클립스 종료.

2단계: maven 프로젝트 만들기

  1. maven의 archetype으로 만들자:
    mvn archetype:create -DgroupId=com.mycompany -DartifactId=my-war
  2. 다음 폴더를 추가하자:
    src/main/webapp
  3. 다음 폴더들도 추가하면 좋다:
    src/main/resources
    src/test/resources

3단계: 이클립스 파일 복사하기

다음 파일들을 이클립스 프로젝트에서 maven 프로젝트로 복사하자:

  1. .project (file)
  2. .classpath (file)
  3. .settings (folder)

4단계: 프로젝트 설정 편집하기

  1. .project 파일을 편집하자.
  2. <projectDescription>밑에 <name>${project-name}</name>를 찾아서
  3. Change ${project-name} 원하는 프로젝트 이름으로 바꾸자. 웬만하면 글자나, 숫자, 하이픈, 밑줄 정도만 쓰자. 물론 강제 사항은 아니다.

5단계: classpath 편집

  1. .classpath파일을 편집하자.
  2. <classpathentry kind="src" path="src"/>를 찾아서
  3. <classpathentry kind="src" path="src/main/java"/>로 바꿔주자.

6단계: WTP component 설정 편집

  1. .settings/org.eclipse.wst.common.component파일을 편집하자. 대충 이렇게 생겼다:
    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <project-modules id=”moduleCoreId” project-version=”1.5.0″>
    3. <wb-module deploy-name=”${deploy-name}”>
    4. <wb-resource deploy-path=”/” source-path=”${webcontent-path}”/>
    5. <wb-resource deploy-path=”/WEB-INF/classes” source-path=”${source-path}”/>
    6. <property name=”context-root” value=”${context-root}”/>
    7. <property name=”java-output-path” value=”build/classes”/>
    8. </wb-module>
    9. </project-modules>
  2. ${deploy-name}을 원하는 걸로 바꾸자. 접근 url이랑은 무관한 서블릿 컨테이너의 관리 도구에서 인식하는 이름이다.
  3. ${webcontent-path}/src/main/webapp로 바꿔주자.
  4. ${source-path}/src/main/java로 바꿔주자.
  5. ${context-root}를 어플리케이션 접근 경로로 바꿔주자. 예를들어, “my-app”이라고 하면 http://localhost:8080/my-app 을 통해서 접근할 수 있게되는 거다. 프로젝트 이름이 URL로 쓰기에 문제가 있을 정도가 아니라면 프로젝트 이름이랑 같은 이름으로 하는 것이 일반적인 관행이다.

7단계: 프로젝트를 이클립스로 들여오기

  1. 이클립스 띄우고,
  2. File > Import > General > Existing projects into eclipse.
  3. 위에서 만든 프로젝트를 찾아서, 완료

8단계: 마무리 설정

거의 다 왔다. maven과 WTP를 삼빡하게 엮어서 쓸려면 몇가지만 더 해주면 된다. m2eclipse가 설치되어 있는지 다시 한번 확인하자.

  1. maven 지원 켜기
    프로젝트의 팝업 메뉴에서 Maven 2 > Enable.
  2. maven 의존성을 웹 라이브러리에 포함시키기
    Project properties > J2EE Module Dependencies> "Maven2 Dependencies" 체크.
  3. 추가적인 maven 소스 경로 추가하기
    기본으로 src/main/java만 소스 폴더 목록에 들어있다. maven에는 유용한 소스 폴더가 몇개 더 있다. 이것들을 목록에 추가해주자:
    src/main/resources
    src/test/java
    src/test/resources
  4. 라이브러리 순서 지정
    Project properties > Java Build Path > Order and Export
    다음 순서로 정해주자: src/main/java, Maven 2 Dependencies, Web App Libraries, blahalala…
  5. 빌더 순서 지정
    Project properties > Java Build Path > Builders, set order as: Maven 2 Project Builder, blahalala…

9단계: 준비~ 땅!

프로젝트를 한번 Clean해주자. 그럼 자동으로 빌드될꺼다. 가끔 이클립스가 말을 안들으면 Clean을 몇번 더 해주던가 이클립스를 새로 시작하면 된다.

밑에 그림은 Eclipse WTP 2.0으로 실행 중인 내 첫번째 Struts 2 튜토리얼이다:

wtp2.jpg









이 글은 스프링노트에서 작성되었습니다.

'hacking > java' 카테고리의 다른 글

유리 물고기 v2.0 정식 릴리즈  (0) 2007/09/21
Maven2와 Eclipse/WTP 함께쓰기 (2)  (0) 2007/09/13
Maven2와 Eclipse/WTP 함께쓰기  (0) 2007/09/11
singleton과 lazy loading...  (0) 2007/01/28
Java6 XMLOutputFactory 유감  (2) 2007/01/15
XML Exodus...  (3) 2007/01/07
Posted by iolo