달력

092010  이전 다음

  •  
  •  
  •  
  • 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
  •  
  •  

'이클립스'에 해당되는 글 28건

  1. 2009/12/10 이클립스 3.6 (헬리오스) 릴리즈 계획
  2. 2009/11/23 이클립스 새로 설치하고 할 일 v4
  3. 2009/11/23 사용자 등록이 필요한 Java > Editor > Templates
  4. 2009/10/21 이클립스 단축키 랭킹놀이 v2
  5. 2009/10/15 자동화 테스트(JUnit)를 위한 이클립스 필수 유틸리티
  6. 2009/10/09 이클립스에서 사용자 단축키 만들기 v1.1
  7. 2009/09/24 이클립스에 질의하기? (1)
  8. 2009/09/10 이클립스에서 엑셀 파일 바로 띄우기
  9. 2009/07/03 이클립스 Extract Method 리팩토링Tip
  10. 2008/12/20 이클립스 V3.4 완전 정복, Part 1: 이클립스 IDE 워크벤치
  11. 2008/10/31 [리뷰] 자바스크립트 개발 툴킷(JSDT) 살펴보기
  12. 2008/10/23 이클립스 맞춤법 사전에 내가 쓰는 어휘 추가하기
  13. 2008/09/29 이클립스 가니메데 SR1 버전 출시
  14. 2008/07/31 [리뷰] 내 일터에서 필요한 플러그인 자급자족하기
  15. 2008/07/28 [리뷰] 이클립스 파워유저가 되는 법 (3)
  16. 2008/03/25 [리뷰] Eclipse V3.3의 메뉴 아이템 설정 및 추가
  17. 2008/01/15 [리뷰] Eclipse에서 Subversion을 사용하는 방법 (3)
  18. 2007/12/27 스프링 개발자를 위한 이클립스 설정 리소스
  19. 2007/10/23 이클립스 단축키 살려내기 (7)
  20. 2007/10/17 이클립스 테스트와 성능 개선 도구 플랫폼 (한글)
  21. 2007/10/12 유로파 새로운 기능(JDT)
  22. 2007/07/05 이클립스(Eclipse Europa) 대략의 구성 (1)
  23. 2006/11/19 유용한 이클립스의 Javadoc ant script 생성 기능 (2)
  24. 2006/11/19 1024 * 768 노트북 개발자를 위한 이클립스 사용팁 (2)
  25. 2006/11/18 이클립스 UI 기본 명칭
  26. 2006/11/11 이클립스를 활용한 Pull-up 리팩토링
  27. 2006/10/12 이클립스 리팩토링 기능을 이용한 Strategy 패턴 적용하기 (2)
  28. 2006/09/27 이클립스 프로젝트 이름 변경을 시도하다가 죽을 때
M1 Friday, August 21, 2009
M2 Friday, October 2
M3 Friday, November 13
M4 Friday, December 18
M5 Friday, February 5, 2010
M6 Friday, March 19
EclipseCon! March 22
M7 Friday, May 7
RC1 Friday, May 21
RC2 Friday, May 28
RC3 Friday, June 4
RC4 Friday, June 11
Release Wednesday, June 23

출처: Helios Simultaneous Release


이유는 모르겠지만, 다른 문서와 일정 차이가 조금 있다. 구체적으로 알고 싶으면 구글 카렌더를 공유한다.

Posted by 영회
1. 필수 플러그인 설치

2. 설정 변경
3. 튜닝
  • Heap 메모리 보기 설정: Preferences -> General 에서 Show heap status를 체크
  • GC 줄이기 위한 메모리 설정: eclipse.ini에서 -Xms와 -Xmx 값을 -Xms1000M -Xmx1000M 로 변경
  • 불필요한 플러그인 초기 기동 방지: Preferences -> General -> Startup and Shutdown 에서 디폴트로 선택되는 플러그인 중 불필요한 것 제외 (내 경우는 모두 불필요함)
  • 저장시 Organize Imports 자동 실행: Preferences -> Java -> Editor -> Save Actions에서 Perform the selected actions on save와 Organize imports 를 순서대로 선택
  • 워크스페이스 자동 리프레시 설정: 이클립스 밖에서 워크스페이스 파일 수정한 경우 자동으로 이클립스에서도 인식하게 함. Preferences -> General -> Workspace 에서 Refresh automatically 선택
  • 자바 파일 아이콘을 다양하게: 자바 파일을 펼쳐야 해당 파일이 Class, Interface, Enum 중에 어떤 타입을 정의했나 알 수 있다. Preferences -> General ->Appearance -> Label Decorations 에서 Java Type Indicator를 선택하면, 자바 파일 아이콘이 Class, Interface, Enum 등의 타입 정보가 드러나게 바뀐다.

eclipse.ini 예제

더보기


참고:
Posted by 영회
1. javadoc 작성할 때 문단을 위핱 태그 삽입
  • Name: p
  • Context: javadoc
  • Description: Paragraph for javadoc
  • Pattern
 <p>
 * ${cursor}
 * </p>




Posted by 영회
벤자민의 글을 보고 돌연!

벤자민의 선택:
  • Code Assist (CTRL + Space)
  • Quick Fix (CTRL + 1)
  • Refactoring (ALT + SHIFT + T)
  • Source (ALT + SHIFT + S)
  • Surround With (ALT + SHIFT + Z)
  • Delete Rows (CTRL + D)
  • Call Hierarchy (CTRL + ALT + H)
  • Quick Type Hierarchy (CTRL + T)
  • Quick Outline (CTRL + O)
  • Show All Shortcuts (CTRL + SHIFT + L)

아래는 내 선택:
  • Code Assist (CTRL + Space)
  • Quick Fix (CTRL + 1)
  • Quick Access (CTRL + 3) [각주:1]
  • Refactoring (ALT + SHIFT + T) [각주:2]
  • Source (ALT + SHIFT + S) [각주:3]
  • Delete Rows (CTRL + D)
  • Maximize Active View or Editor (CTRL + M) [각주:4]
  • Back/Forward (ALT + LEFT/RIGHT)
  • Quick Outline (CTRL + O)
  • Open Resource (CTRL + SHIFT + R)

한국 스프링 사용자 모임 메일링에 공유했더니 다양한 노하우가 주렁주렁 달렸습니다.

특히 주목을 끄는 단축키를 모아 보면:
  • Open Task (CTRL + F12) - Mylyn
  • Open Editor Drop-Down (Ctrl + E)
  • 에디터 활성화 (F12 )

  1. 벤자민과 다른 선택을 굵게 표시 [본문으로]
  2. 빈도로 따지면 Rename... (ALT + SHIFT + R)을 압도적으로 많이 쓰지만, Refactoring 하위 메뉴를 모두 뺄 순 없네. [본문으로]
  3. getters/setters 만들 때 주로 씀. [본문으로]
  4. 순전히 노트북 사용 때문에 자주 씀. [본문으로]
Posted by 영회
Update 주소 메모할 겸 기록함

* Test Coverage 측정: Alt+Shift+X, T 대신 Alt+Shift+E, T만 써주면 OK
http://update.eclemma.org/

* TestCase와 테스트 대상 사이에서 Jump to 지원:
http://moreunit.sourceforge.net/org.moreunit.updatesite/

관련 글:
TDD를 위한 기본 코딩 습관 3종 세트
TDD를 위한 이클립스 메소드 생성 템플릿
Posted by 영회
중복 제거는 코드뿐 아니라 일상 작업에서도 유용하다. 하루에도 수 십 번씩 클릭하는 메뉴가 있는데 단축키가 없다. 요즘 Team > Show History를 반복해서 사용한다. 지루하고 손목 아픈 일이다. 이클립스에서 단축키를 정의할 수 있음을 떠올렸다.

Ctrl+3 키를 누른 후(Quick Access) 'keys'로 검색한다. Preferences 창에서 General > Keys 항목에 접근할 수 있다. 필터에서 'show hi'까지 입력하면 둘만 남는다. 물론, Subversive를 설치하지 않으면 하나만 나타날 것이다.

사용자 삽입 이미지


Team 하위 주요 명령이 Ctrl+Alt와 알파벳 조합키인 점에 착안하여 Ctrl+Alt+H로 하고 싶지만 이미 사용중이다. Open Call Hierarchy가 쓰고 있다. Preferences 창에서 General > Keys 항목 아래쪽에 있는 Binding 입력 상자에 키 조합을 넣어보면 충돌을 확인할 수 있다. 한발 양보해서 Ctrl+Alt+H로 대신하려 했더니 Add to svn:ignore...가 쓰고 있다. 아예 마지막 글자를 선택해서 Ctrl+Alt+Y로 정했더니 OK다.

사용자 삽입 이미지

Posted by 영회
일민형과 오룡해삼을 먹고 나서 소화를 시키려고 이런저런 이야기를 나누다 잠시 이클립스에 대해 이야기했다. 유로파[각주:1]에 추가한 최고의 핫키로 Ctrl+3 (Quick Access)을 꼽았다. 마치 데이터베이스에 LIKE 쿼리를, 그것도 이력 테이블을 포함한 여러 테이블에 LIKE 조회 쿼리를 날리고 결과를 UNION ALL로 붙인 후 GROUP BY 하는 듯하다. 이 핫 키를 처음 봤을 때, 이것 하나만으로도 새 버전을 써야 할 이유가 충분한 듯 보였다.

사용자 삽입 이미지

그리로 이와 비슷한 기능인 Preferences 창의 필터 필드다. 여기에 몇 자 입력하면, 광대한 이클립스 설정 옵션 중에서 원하는 녀석과 유사한 설정을 변경할 수 있는 페이지를 걸러준다.

사용자 삽입 이미지

토비형이 옆에서 3대 선호키를 말했는데, 그 중 하나가 Ctrl+Shift+R(Open Resource) 키다.  Quick Access와 필터 필드가 광활한 명령과 실행에 대한 검색을 지원한다면, Open Resources(이하 OR)는 워크 스페이스 안에 있는 광활한 파일에 대한 검색을 지원한다. 심지어 우리 프로젝트 DBA도 SQL 인스펙션을 위해 가장 많이 쓰는 단축키가 Ctrl+Shift+R일 정도로 다수 파일 중에 검색할 때는 최고의 효용성을 보여준다. 작성하는 파일이 늘어날수록 OR의 필요성은 절실해진다. 더구나 내가 짜지 않은 파일까지 자주 열람해야 한다면 곱절로 절실해진다. :)

사용자 삽입 이미지

집에 돌아오는 길에 Preferences 창에서 "쿼리를 한다."고 인식하고 있던 나를 돌아봤다. 그리고 생필품인 구글이 떠올랐다. 초창기 웹에선 "수작업 분류와 링크"로 구현한 야후의 디렉터리 서비스가 유효했다. 마찬가지로 이클립스 초기 버전에선 Preferences에서 트리를 펼치는 방식도 그리 불편하게 느껴지진 않았다. [각주:2] 그러나, 이젠 검색은 필수다. 이클립스가 제공하는 자원(명령, 뷰, 설정 옵션 등등)이 많아지면서 검색이 역시 필수인 듯하다.
  1. 가니메데에 추가한 기능인 줄 알았더니만, 시간 참 빠르다.. ㅡㅡ; [본문으로]
  2. 사실 필터 기능도 없었을 테지만... (이노무 기억력) [본문으로]
Posted by 영회
테스트를 위한 DB 초기화 데이터와 검증용 골든 마스터 데이터를 엑셀로 관리하다 보니 이클립스에서 엑셀 띄울 일이 많다. 디폴트는 In-Place Editor를 쓰기 때문에 불편하다. 오른쪽 마우스를 클릭해서 context menu를 이용하면 Open With > System Editor를 실행하여 엑셀로 열 수 있다. 매번 이렇게 하기 번거로울 땐 Quick Access(Ctrl+3) 명령을 실행하고 File Associations 중에 일부를 순차적으로 입력하고 엔터 키를 쳐서 File Associations References 대화창을 연다. 상단 File types: 에서 Add 버튼을 누른 후 '*.xls'를 입력한다. 새로 만든 *.xls를 선택한 상태에서 아래 Associated editors: 에서 Add 버튼을 누른 후 External programs 중에 Microsoft Office Excel 워크시트를 누른다. 이제 이클립스 안에서 xls 파일을 클릭하면 엑셀로 연다.
Posted by 영회
다음과 같은 코드가 있다.

score += 10 + rolls[frameIdx + 1] + rolls[frameIdx + 2];

rolls[frameIdx + 1] + rolls[frameIdx + 2] 부분을 메소드로 뽑아내고자 한다. 이클립스에서 블록 지정을 하고 Alt+Shift+M 단축키를 누르면, 다음과 같은 메시지를 만날 수 있다.

Can only extract a single expression or a set of statements.[각주:1]

두 가지 해결책이 있다. 하나는 굳이 이클립스 명령을 쓰지 않는 방법이다. 다른 방법은 블록 지정 부분을 괄호로 묶고 나서 Extract Method 명령을 수행하는 방법이다.

score += 10 + (rolls[frameIdx + 1] + rolls[frameIdx + 2]);

결코, 빠른 방법은 아니지만 몇 가지 사소한 이점이 있다.
  • 타이핑 절감
  • 오타 방지
  • 자동 줄맞춤
  • inline 리패토링하면 다시 제거 가능



  1. 젠장. 보안 툴 탓에 이미지 파일을 못 올린다. [본문으로]
Posted by 영회
이클립스 V3.4 완전 정복, Part 1: 이클립스 IDE 워크벤치

개인의 생산성 향상을 위해 IDE를 잘 쓰는 것은 매우 중요한 일이다. 그런 면에서 아직도 이클립스에 익숙하지 않은 분이라면 좋을 기사일 수 있다. 나 역시 이클립스 2.x 까지는 대충 직관적으로 사용했다. 그런데 리팩토링 기능이 대폭 강화된 3.x 버전에서는 매번 새 버전이 나올 때마다 시간을 내서 새로운 기능들을 배우곤 한다.

글에선 단지 v3.4 에 추가된 것 뿐 아니라 종합적으로 가이드하고 있다. 기본 기능을 학습한 이후에는 단연 단축키에 눈이 간다. 3.3 이후에 추가된 단축키 중에 최고는 Ctrl+3이다. 기사에서 소개한 단축키 바꾸기를 잘 활용하면 이클립스에서 기본적으로는 지원하는 나만의 단축키를 얼마든지 정의할 수 있다.

키보드 단축키 바꾸기
Posted by 영회
자바스크립트 개발 툴킷(JSDT) 살펴보기

문두에서처럼 정말 '자바스크립트 개발은 쉽지 않다.' 더구나, 정적인 타입을 제공하는 언어가 아니기에, 자바나 C# 등에서 쓰는 IDE 같은 편리한 기능은 생각지도 못한다. 지인들의 평가로는 그나마 앱타나 정도가 호평을 받았지만, 웹 전용이면 몰라도 JDT와 같이 쓰기엔 무겁고 불안했다. 

위 글을 따르면, 'JSDT는 JDT(Java Development Toolkit)에서 착안한 핵심 설계와 같은 많은 기능을 제공한다. JSDT는 WTP(Web Tools Platform) V3.0 배포판에 있는 자바스크립트 편집기를 대체할 예정이다.'라고 하는데.. 원문은 5월에 공개했기에 미래형으로 쓰인 것이다. 현재 이클립스 가니메데 JEE 에디션의 경우는 JSDT 1.0.2 버전이 설치된 것을 확인할 수 있었다.

기본적인 편집 기능이 과거에 비해 상당히 개선되었다. 이클립스는 오픈소스로 존재하던 소소한 플러그인들은 빠르게 흡수하는 것 같다. 조만간 자바 스크립트 개발환경에 대해서 고민해야 하는 일이 생겼는데, 여력이 생기면 JSDT에 대해 좀 더 살펴보고 그 내용을 공유할 수 있음 좋겠다.

영문이긴 하지만, 참고 자료 링크의 이클립스 JSDT 위키이클립스 ATF 프로젝트도 둘러봄직하다.
Posted by 영회
사용자 삽입 이미지

가니메데를 쓰다보니 맞춤법 검사가 기본적으로 실행하나 보다. 내 이름을 타이핑했더니만, 빨간펜(?)이 따라온다. Quick Fix(Ctrl+1)를 시도하니 annoying을 추천하더니.. ㅋㅋ.
  • 맞춤법 검사(spell checking)을 비활성하거나
  • 현재 세션에선 무시하기에 이어서
  • 사전에 추가하기
같은 조언을 제공한다. Prompt에서 OK하면, Preferences가 자동으로 뜬다. 여기서 User defined dictionary 경로를 지정해야 한다. 텍스트 파일을 하나 만들어서 지정해주니까 빨간줄이 사라진다. ^^
사용자 삽입 이미지

해당 파일을 열어보면 어휘가 추가되어 있는 것을 확인할 수 있다.

사용자 삽입 이미지

R.J. Lorimer의 글을 보면 맞춤법 검사에 대한 이력과 함께, 공개한 사전을 받을 수도 있다.
Posted by 영회
그새 마이너 업그레이드를 한 모양이다. 파일명이 eclipse-jee-ganymede-SR1-win32.zip 이다. eclipse-jee-ganymede-win32.zip에 비해 약 393kb가 커졌다. 새로 추가한 것을 쉽게 찾을 수가 없어 불편하다. 다운로드한 readme로는 알 수가 없었고, 아래 링크에서 해당 내용을 찾을 수 있다:

http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/ganymedesr1


Posted by 영회
eBay의 이클립스, Part 2eBay의 이클립스, Part 1: eBay 아키텍처에 맞춘 이클립스를 보신 분들은 멋지다 생각하셨을 것입니다. 더러는 이미 그렇게 하고 계신 분도 있겠죠? 여튼... 현장에서 꼭 필요한 도구를 스스로 만들 수 있다는 것은 상당히 매력적으로 보입니다. 전문성도 갖게 될테니까요. 하지만, 시작은 쉽지 않습니다. 이클립스 플러그인 개발을 위해 배워야 할 사항은 꽤 많으니까요.

사실 강추할만한 기사는 아니지만, 플러그인 개발 기초 학습 시리즈는 노력한만큼의 결실을 제공할꺼라 믿습니다. 물론, 많은 부분의 퍼즐을 맞춰줄 내용을 주지는 않죠. 그래서 언젠가 관련 정보를 공유하고 싶은 마음이 있습니다. 언제가 될지 기약을 할 수는 없지만,

1) 열화와 같은 요청이 있거나
2) 누군가 제가 그것을 하도록 쪼는 이가 있거나
3) 생업 유지 내지는 적당한 보수를 받는 경우

위와 같은 조건을 충족하게 되면 제가 좀 더 분발할 수는 있겠죠. 좀 정치적인 글인가?  :)


Posted by 영회
이클립스 유로파로 시간을 절약하는 열 가지 기법

30 페이지 넘는 영문 튜토리얼을 스크린캐스트로 만들었네요.
  • 자바를 처음 배우거나
  • 이클립스를 처음 사용하는 분들 혹은
  • 이클립스를 쓰기는 하지만 다양한 기능은 잘 모르는 분들에게
꽤 괜찮은 가이드군요. 전체 3편으로 약 한시간이 조금 안되는 분량인데, 단순하 단축키부터 해서 템플릿 설정이나 리팩토링까지 자바 개발자 입장에서 필요한 대부분의 기능을 설명하고 있네요. 지난 6월에 3.4 버전에 해당하는 가니메데(Ganymede)가 출시했는데 어떤 구성을 담고 있는지 소개하는 글도 있군요:

한 눈에 보는 이클립스 가니메데

가니메데가 유로파에 비해 안정화 되었다는 분도 있는데, 우리 팀에는 가니메데 설치후 고생하는 분도 있더군요. 제 경우도 Software Update 사이트 목록의 경우는 좀 불안하더군요. 목록에서 선택한 사이트가 두 개씩 복제되어 나오기도 하구요. 그러나, 크게 불편한 정도는 아닙니다.

Posted by 영회
양석호씨 리뷰를 보고 반갑게 찾아간 글.

Eclipse V3.3의 메뉴 아이템 설정 및 추가


Eclipse의 이전 버전에서, 명령어를 메뉴, 팝업 메뉴, 툴바에 추가하는 일은 약간 어려운 일이었습니다. 하지만 Eclipse V3.3에서는 전보다 더 쉬워진 메커니즘을 도입했습니다.

원문 내용이 무엇을 다루고 있는지는 짧막한 설명에 잘 들어난다. 조만간 이클립스 플러그인 혹은 RCP 프로그램을 개발해야 하는데, 빨리 번역되기를 기대해본다.
Posted by 영회
SVN 사용은 기본적인 것이니까. CVS만을 사용해본 사람들에게는 유용한 튜토리얼이다.


일민형 권고로 subversive를 쓰고 있지만, subclipse도 쓸만했다. subclipse보다는 subversive가 이클립스 CVS 클라이언트 사용과 거의 유사해 직관성이 뛰어나다. 그리고 한번도 트러블을 겪은 기억이 없을 정도로 안정적이다. 하지만, 블로그 방문객 의견을 보면 개인차가 있는 것 같다. 여튼 SVN 클라이언트 사용방식에 큰 차이는 없다.

DW의 글은 단지 처음 사용하는 사람을 위한 것이다. 그 이상은 각자의 몫이다. ^^

아쉬운 것은 Operation을 연산으로 번역한 것이 어색하다는 점이다. 'Subversion 연산'이라니... ㅡㅡ;[각주:1]

관련 글: SVN 설치 가이드 (5/22 추가)
  1. 책 번역을 하고 있는 입장이라 고충은 이해하지만 [본문으로]
Posted by 영회

플러그인 업데이트
이클립스 유로파 JEE용(eclipse-jee-europa-fall2-win32.zip) 기본 업데이트 사이트에 다음 업데이트 사이트 추가
  • Spring IDE 업데이트 사이트
  • SVN 관련(Subversive plug-in, connector): 둘 다 필요
  • Implementor: 인터페이스에서 구현 클래스 검색하기

Code Formatter Profile
스프링용: Eclipse code formatter profile for Spring (spring-eclipse-code-conventions.xml)26.56 KB

Code Templates

- TDD를 위한 이클립스 메소드 생성 템플릿

Templates(Java/Editor)

- 템플릿 타이핑 도우미

JUnit4를 위한 Organize Imports 설정
1. Organize Imports Preferences 선택(Ctrl+3 단축키 이용)
2. 'Number of static imports needed for .*'를 '1'로 설정
출처: http://blog.gleamynode.net/2007/04/fixing-eclipse-organize-imports.html

갱신:
07.12.27. bookmarks.xml에 implementor  갱신 사이트 정보 추가, TDD를 위한 이클립스 메소드 생성 템플릿 추가
Posted by 영회
지난 세미나 시연에서 Ctrl+Alt+화살표 키를 사용 못해서 kenu님에게 '코딩하는 것이 답답하다'는 말까지 들었다. :)

대충 안 쓰고 살다가 프로세스 개선을 화두로 삼는 기간에 '이래서야 되겠냐?' 싶었다. 사소한 것도 고칠 생각 안하면서 무슨...

하여 추적에 들어가보니 생각보다 쉽게 범인을 찾았다. 작업 관리자 프로세스에서 용의자(?)를 하나씩 죽이면서 이클립스에서 해당 단축키가 먹는지 확인해봤다. 그래서 범인을 찾았다.

hkcmd.exe hkcmd Module

구글님은 역시 대번에 녀석이 누구인지 알려준다.

Intel Hotkey command activator

시작 프로그램에서 제거해버리려다가 한 번 더 구글로 관련 정보를 찾았다.
Ctrl+Alt+F12를 누르면 디스플레이 제어창인가 뭔가 등장하는데...
거기서 바로 가기 사용 안하게 하니까... 해결되었다. ^___________^

the Intel 810 and 815 chipset graphic drivers 사용자는 비슷한 문제를 겪을 수 있다.
Posted by 영회

소개: 이클립스 테스트와 성능 개선 도구 플랫폼 (한글)

TPTP를 다룬 시리즈 글이다.
플랫폼 설치부터 차근차근 다루고 있어 차분히 따라해볼 수 있는 쉬운 기사다.

좀더 확장된 UML 다이어그램

UML뷰를 활용하는 것도 설명하고 있는데 테스트에 대한 문서화를 하는데 도움이 될 것 같다.
물론, 대부분의 프로젝트에서 프로파일링 도구로는 상용 제품을 쓰고 있다.

KSUG 찬욱군이 번역한 글이다.


최근에 세 글을 모두 번역하여 올린 모양이다.
Posted by 영회
주요 개선 사항을 요약하면 다음과 같다.
  • 리팩터링 기능 강화
  • 디버깅 기능 강화
  • 유틸리티 플러그인에서 제공하던 기능을 JDT에서 흡수
한편, 쓰다 보면 자연스럽게 알게 되는 기능이 많다는 것이 눈에 띈다.

하지만, Introduce Parameter Object 추가는 알고 있어야 활용을 자주할 것이다.

Screenshot showing the the Introduce Parameter Object refactoring dialog

꼭 있었으면 하는 기능이 두 개 추가된 것도 반가운 소식이다.
TDD와 함께 최소권한원칙에 입각해서 프로그래밍을 하다 보면, 변수를 사용하면 선언하는 것이 좋은 습관이다. 그 동안은 이러한 기능이 안되었는데 추가되었다(Content assist provides declaration proposals for undefined local variables).

Unresolved Names Proposals example


참조하는 라이브러리도 모두 필터링하거나 일렬로 나열되는 것이 못마땅했는데 개선되었다(Grouping of JARs and class folders in Package Explorer).

Screenshot of the package explorer with grouped libraries

자주 쓰는 구문 템플릿(Templates)으로 등록하기에서 소개했던 팁은 JDT에 기능이 추가되어서 이제 필요없게 되었다.

참조: Eclipse 3.3 New and noteworthy page


Posted by 영회
A whirlwind tour of Eclipse Europa를 참조하여 이클립스의 새로운 버전인 유로파를 대략적으로 살펴본다. Callisto라는 이름으로 이클립스 플러그인을 묶어서 배포하려고 하더니 이클립스 3.3 버전에서 이름을 Europa로 바꾼 듯하다.

대강의 구성은 비슷한데 가장 눈에 띄는 것은 Mylyn(구 Mylar)이 포함된 점이다. 재성님의 글에잘 설명되어 있다.

설치 방법은 A whirlwind tour of Eclipse Europa에 잘 설명되어 있다. 이 글에서는 대략의 구성을 요약해보려고 한다.

- Eclipse Platform(PDE,JDT 포함)
-
Aspect Java Development Tools (AJDT): AOP 개발도구

눈에 띄는 것들
-
Buckminster: svn, mvn, cvs 저장소에서 소프트웨어 컴포넌트를 가져와서 빌드하고 배포하는 것을 위한 플러그인.
- Dynamic Languages Toolkit (DLTK): Ruby나 TCL 개발도구를 이클립스에 통합하려는 시도
-
Project Dash (Eclipse Monkey): 그리즈몽키처럼 이클립스를 입맛에 맞게 조작하려는 시도
-
Eclipse Mylyn (formerly known as Mylar): 재성님의 글 참조

주요 프로젝트
Java EE 관련:
Web Tools Platform (WTP), SOA Tools Platform (STP), Eclipse Test & Performance Tools Platform (TPTP),
-
Data Tools Platform (DTP)

모델링 관련:
Model To Text (M2T), Model Development Tools (MDT), Graphical Modeling Framework (GMF), Graphical Editing Framework (GEF), Eclipse Modeling Framework (EMF), Eclipse Modeling Framework Technology (EMFT)

개발 환경 지원 및 부가 기능:
Eclipse Communication Framework (ECF), Business Intelligence and Reporting Tools (BIRT)

다른 플랫폼용:
C/C++ Development Tooling (CDT), DSDP Device Debugging (DSDP-DD) and Target Management (DSDP-TM)
Posted by 영회
이클립스 Javadoc 생성하기와 링크 넣기에서 이클립스의 javadoc 생성 기능을 설명했다. 편리한 기능으로 보이지만 실제 프로젝트에 도입하기 힘들 정도의 몇가지 문제가 있다.

첫째, 자주 갱신할 경우 매번 마법사를 이용하는 일은 번거롭다. 게다가 javadoc에 포함시킬 라이브러리를 설정할 때 버그때문에 주의해야 한다. Back이나 Next를 눌러 이동하면 임의의 라이브러리가 설정되어 버린다.

둘째, 문서 생성 과정에도 버그가 있다. 여러 차례 생성하다 보면 하나의 Frame이 없이 생성되는 경우가 있다. 어떤 경우는 패키지와 클래스 목록이 보이는 Frame이 바뀌기도 한다.

이런 문제를 피하려고 ant 문을 수작업으로 만들려다 보면 ant task의 복잡한 옵션에 질리게 된다. ANT 매뉴얼의 예를 보자.

  <javadoc packagenames="com.dummy.test.*"
          sourcepath="src"
          excludepackagenames="com.dummy.test.doc-files.*"
          defaultexcludes="yes"
          destdir="docs/api"
          author="true"
          version="true"
          use="true"
          windowtitle="Test API">
  <doctitle><![CDATA[<h1>Test</h1>]]></doctitle>
  <bottom><![CDATA[<i>Copyright &#169; 2000 Dummy Corp. All Rights Reserved.</i>]]></bottom>
  <tag name="todo" scope="all" description="To do:"/>
  <group title="Group 1 Packages" packages="com.dummy.test.a*"/>
  <group title="Group 2 Packages" packages="com.dummy.test.b*:com.dummy.test.c*"/>
  <link offline="true" href="http://java.sun.com/products/jdk/1.2/docs/api/" packagelistLoc="C:tmp"/>
  <link href="http://developer.java.sun.com/developer/products/xml/docs/api/"/>
  </javadoc>

마음에 쏙 드시는 분은 많지 않을 것이다.

그런데, 이클립스에서 javadoc 생성시 마법사를 유심히 보면 흥미로운 옵션을 발견할 수 있다.


Save the settings of this Javadoc export as an Ant script 라는 옵션이다.^^

주의할 점은 classpath 속성 값이 어이없게 되는 경우가 있다.
이것만 잘 고쳐주면 eclipse가 생성해준 javadoc task를 고맙게 쓸 수 있다.

원문 작성 일시: 2006/08/01 (화) 22:31
Posted by 영회
불교의 인연법을 쉽게 설명해주는 나비효과란 영화가 있다.
원인과 결과가 꼬리에 꼬리를 물어 최초의 이유를 알아내기도 어려운...

내가 지금의 노트북을 당시 초호화사양으로 지급받게 된 것은
IBM Rational RAD/RSA 제품을 내놓은데서 비롯했다.
512면 최고 사양 소리 들을 시절에 1.5 기가로 시작해 너그러운 성격(?)을 갖게 되었다. ㅋㅋ

다만, IBM ThinkPad 쓰다가 후지쯔로 옮기니까
Home/End 키가 엽기라.. 대신 마우스를 쓰는 사태가 벌어졌지만..
수퍼 파인 LCD나 정말 가벼운 무게 등.. 장점이 너무 많았다.

시간이 흐르자 이 녀석의 단점도 차츰 커보이게 되었다.
죽고 못산다던 여자 친구에게도 오래 사귀면 단점이 커보이는데..
하물며 노트북 따위야..
요즘은 1024가 너무 답답해서 엄청난 무게에도 T-시리즈가 부럽고
가끔 손이 좀 데더라도 맥북이 부럽다.

사실이 길었는데 1024 환경에서 이클립스를 쓰다보니 창의 압박
후배 녀석이 T 시리즈에서 좌측 두 개, 우측 세 개, 바닥에 두 개 창 깔고..
편집하는 것을 보니까... 우울해졌다.

그래도 아쉬운대로 방안을 찾다보니


기본은 4:6 혹은 3:7 정도의 이중 창 구조가 좋았다.
다수 파일을 한번에 보기 위해 Package Explorer 하위에 다른 창을 없애 버리고
편집 화면도 시원하게..

다른 창들은 사용하고 난 뒤 Fast View로 등록하고 이들도 끌어서 좌측에 붙인다.
Perspective를 변환하는 버튼도 Text 안나오게 해서 공간 줄이고 좌측으로 붙인다(Docking).

이렇게 하면 문제되는 녀석이 Console View이다.
이녀석은 Fast View로 두는 것보다 차라리 창을 키워서 Floating으로 두는 것이 좋았다.
어차피 결과가 보여져야 할 때 자동으로 뜨니까


콘솔은 대체로 결과가 긴 경우가 많다.
예외가 발생하거나 디버깅 문장이 길 경우 아래로 스크롤 하는 것 뿐만 아니라
좌우로 스크롤 할 일도 발생한다.
어깨 통증을 줄이기 위해서는 애초부터 크게 보면 좋았다.
Floating으로 하고 거의 한 화면 꽉 차게 키운다.
결과 출력을 위해 콘솔이 뜨면.. 다 보고 나서 x 를 눌러 닫아 버린다.
다음번에 알아서 또 뜬다.

주의: 1024가 아닌 "럭셔리 WIDE" 해상도를 갖추신 분은 별 메리트가 없는 이야기들입니다.

더 좋은 팁 있으시면 조언 주심 감사하겠습니다. ^^

theclub  2006/07/31 09:49
ㅋㅋ
1400*1050을 쓰는 제게도 좋은 팁입니다.
ㄳㄳ
화면의 압박이 점점 심해져요..
19인치 노트북은 언제 나오려는지... ㅋㅋ
즐거운 놀이하세요..

원문 작성 일시: 2006/07/31 (월) 01:06
Posted by 영회
워크벤치 구성요소 이름



주요 아이콘과 아이콘 유형



원문 작성 일시: 2005/07/17 (일) 20:12
Posted by 영회
Spring을 사용하다 보면 협업 객체의 IoC 기능 활용을 위해 setter가 요구된다.
public class ArticleListController extends AbstractController{
private ArticleLinkDao articleLinkDao;

@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request,
...
}

public void setArticleLinkDao(ArticleLinkDao articleLinkDao) {
this.articleLinkDao = articleLinkDao;
}
}

그런데 이러한 클래스가 또 만들어야 한다고 가정해보자. 중복이 발생한다.
public class ThemePageController extends AbstractController{
private ArticleLinkDao articleLinkDao;

@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request,
...
}

public void setArticleLinkDao(ArticleLinkDao articleLinkDao) {
this.articleLinkDao = articleLinkDao;
}
}

중복을 막기 위해서 BaseController를 만들어 이들을 상속하게 하자.

1. AbstractController -> BaseController로 변경
public class ArticleListController extends BaseController{
private ArticleLinkDao articleLinkDao;

@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request,
...
}

public void setArticleLinkDao(ArticleLinkDao articleLinkDao) {
this.articleLinkDao = articleLinkDao;
}
}

2. 빠른 수정(Quick fix)으로 BaseController 생성


BaseController가 AbstractController를 상속해야 함을 잊지 말자.

3. Refactor > Pull up... 메뉴 선택


상위 클래스로 올릴 속성과 메소드를 선택한 후에 Finish 혹은 Next를 눌러서 미리보기를 하고 Finish.
리팩토링을 하고 나면 기분까지 개운(?)해진다. ^^;

4. BaseController 변경
public abstract class BaseController extends AbstractController {
protected ArticleLinkDao articleLinkDao;
@Override
abstract protected ModelAndView handleRequestInternal(HttpServletRequest request,
  HttpServletResponse response) throws Exception;
public void setArticleLinkDao(ArticleLinkDao articleLinkDao) {
this.articleLinkDao = articleLinkDao;
}
}

BaseController를 abstract로 만들어 반드시 handleRequestInternal을 구현하게 하고, 매개변수 이름을 request, response과 같이 보다 의미있게 바꿔주는 센스를 발휘하면, 마법사 혹은 빠른 수정으로 상속 객체를 생성할 때 이를 그대로 사용하게 된다. ^^
Posted by 영회
Strategy 패턴에 대한 사항은 다음 책을 참조하시거나

Head First Design Patterns
에릭 프리먼 외 지음, 서환수 옮김/한빛미디어

책 살 돈이 없다 싶으신 분들은 아래 글을 보실 수 있습니다.
  1. 2006/10/08 Strategy Pattern 예제(끝)
  2. 2006/10/08 Strategy Pattern 예제(계속)
  3. 2006/10/08 Strategy Pattern 예제(계속)
  4. 2006/10/08 Strategy Pattern 예제

내용 보장 못함.. :)

제가 작성하려는 글은 아래 책의 188쪽부터 소개된 내용을 기반으로

자바 프로그래밍
Jeff Langr 지음, 권오근 옮김/교학사(컴퓨터)

이클립스에서 리팩토링을 수행하는 과정에서 주목할만한 부분을 남겨두기 위한 일종의 SNAPSHOT입니다. (이하 존칭 생략)

먼저 다른 녀석에게 옮길 메소드/행위 혹은 책임을 선정한다. (② 사례연구, 단일 책임 원칙 참조) 위임할 대상은 Student의 협업 객체 혹은 Collaborator가 된다. 아니면 peer(객체 지향 기본에 대한 메모 참조)라고 하든.. 암꺼나.. you want

협업 대상과의 관계를 정의해야 한다. 코딩으로 말하자면 멤버 변수를 정의하는 것이 된다. 빨간 줄을 제거하다 보면 GradingStrategy라는 하나의 인터페이스와 이것을 상속한 RegularGradingStrategy 클래스를 생성하게 된다.
public class Student {

private GradingStrategy gradingStrategy = new RegularGradingStrategy();

여기서 몇 가지 선택 사양이 등장한다.
1. 협업 대상 객체의 타입/클래스 이름 결정
2. 타입을 인터페이스로 할 것인가? 추상 클래스로 할 것인가? 구체 클래스로 할 것인가?
3. 초기화는 할 것인가? 한다면 어떤 방식으로?

대개 경험에 의해서 순식간에 결정하지만 설명하자면 엄청 길다.
1은 좋은 작명은 internal DSL의 시작 참조. 2는 Strategy 패턴을 적용하려는 경우에는 구체 클래스 보다는 추상 클래스나 인터페이스를 쓰는 것이 좋다. 이유는 개방-폐쇄 원칙참조. 3은 디폴트의 문제다. 선호의 문제인데, 개인적으로는 루비의 경우와 같이 직관적인 디폴트가 사전에 정의되는 것을 좋아한다.

협업 객체와 관계를 맺었으니 임무/책임을 할당/위임하자.


드래그앤드롭으로 리팩토링이 가능하다. 구현 내용이 남아 있다. 로직을 남기고 싶다면(복잡한 알고리즘인 경우) 드래그앤드롭 대신에 복사를 하는 것이 더 좋다. 단축키 Ctrl+1을 눌러 빠른 보정(Quick Fix) 힌트에서 Remove method body를 선택하여 구현을 날린다. 인터페이스인 만큼 계약(contract)만 남기는 것이다.



또, 문제가 발생한다. 인터페이스에는 private이 존재할 수 없기 때문이다. Quick Fix보다는 타이핑으로 private을 public으로 변경하는 것이 좋다. 3.1 버전의 이클립스에서는 public 변환은 힌트로 제공하지 않는다.

주의 깊게 다시 보면, 책임의 위임 과정에서 '객체 사이의 인터페이스(method)'가 public으로 변경되는 점메소드 몸체가 날아가면서 해당 책임이 추상화 된 형태로 협력 객체에 할당되는 것을 엿볼 수 있다.

추상화 된 것은 실행이 불가능 하기 때문에 실체화(realization)를 해보자. 추상화에 익숙하지 않은 개발자는 머리 아플 수 있는 기괴한 표현이지만, 실상은 별 것 아니다. :)

일단, RegularGradingStrategy 클래스의 빨간 줄을 지우기 위해 빠른 보정 힌트에서 Add unimplemented methods를 선택한다. 그리고, 구현은 직접 타이핑 하지 말고 앞서 Students에 있던 basicGradePointsFor 메소드 구현을 가져오자. 기본 학점 부여 정책이니까...

마지막으로 Student에서 내부 인터페이스/private 메소드를 호출하던 것을 위임으로 해결 하도록 다시 말해서 협업 객체의 메소드 호출로 변경한다.

for (Grade grade : grades) {
  total += gradePointsFor(grade);
}

코드가 위와 같은 식이었다면..
for (Grade grade : grades) {
  total += gradingStrategy.gradePointsFor(grade);
}

이렇게만 바꿔주면 된다.

마무리가 남는다. 이클립스의 경고 기능이 큰 도움이 된다. 평소 노란등이 보기 싫다고 꺼두는 사람을 봤는데... 좋은 습관이 아니다. :)
Strategy 패턴 적용 이전에 쓰이던 내부의 플래그 성격의 속성이 쓰이지 않게 되었음을 의미한다. 플래그 성격의 속성은 Strategy의 종류/유형 즉, Strategy를 구현한 구체 클래스의 타입으로 변경되어서 사라지게 되는 것이다.
Posted by 영회

대개 이클립스 프로젝트 이름 변경을 시도할 때 외부 프로그램과의 충돌을 확인해보아야 한다. 운영체제 입장에서는 파일 시스템의 자원을 다른 파일이 쓰고 있는데 이클립스가 임의로 변경을 시도하는 것이기 때문에 문제가 발생한다. 이클립스가 운영체제와 강력하게 통합되어 있지 않기 때문에 특별한 메시지가 없이 exit code 1073807364 만 날리고 죽어버린다. 혹시 이클립스 프로젝트에 있는 파일을 다른 파일이 편집 중인지 확인해보아야 한다.

Posted by 영회