달력

072010  이전 다음

'2006/이클립스 노하우'에 해당되는 글 26건

  1. 2006/12/19 내가 사용하는 이클립스 팩(SDK + 플러그인 모음) (2)
  2. 2006/11/19 이클립스 프로젝트 공유시 불필요한 파일 제외하기
  3. 2006/11/19 이클립스 프로젝트 공유시 클래스패스 문제 피하기 (4)
  4. 2006/11/19 유용한 이클립스의 Javadoc ant script 생성 기능 (2)
  5. 2006/11/19 1024 * 768 노트북 개발자를 위한 이클립스 사용팁 (2)
  6. 2006/11/19 이클립스 Javadoc 생성하기와 링크 넣기
  7. 2006/11/18 toString() 메소드를 자동 생성해주는 JUtils ToString Generator
  8. 2006/11/18 zip 형태로 배포되는 Eclipse 플러그인 설치하기 (1)
  9. 2006/11/18 인터페이스의 구현 클래스 검색을 위한 플러그인
  10. 2006/11/18 WTP(이클립스 웹 툴즈) 이해하기
  11. 2006/11/18 자바스크립트 편집을 위한 이클립스 플러그인, JSEclipse
  12. 2006/11/18 HTTP header 정보를 보여주는 간단한 플러그인
  13. 2006/11/18 HSQL과 ANT java task 관련 팁
  14. 2006/11/18 이클립스 리팩토링 기능(Refactor 메뉴) 살펴보기
  15. 2006/11/18 JAR 의 의존성을 확인해주는 이클립스 플러그인, Classpath Helper
  16. 2006/11/18 이클립스 UI 기본 명칭
  17. 2006/11/18 자바 이외의 언어로 프로그래밍 할 때 이클립스를 개발환경으로 이용하기
  18. 2006/11/18 의존성, 복잡도 확인을 쉽게 해주는 이클립스 플러긴(JDepend4Eclipse)
  19. 2006/11/18 여러 개의 이클립스를 동시에 설치하여 사용하기 (2)
  20. 2006/11/18 JDK 1.4 기반 코드를 JDK 5.0 문법으로 바꿔주는 이클립스 플러긴 (2)
  21. 2006/11/18 이클립스 설정 사항 공유 방안 (3)
  22. 2006/11/16 이클립스WTP, CHKJ4019W 문제(problem) (4)
  23. 2006/10/17 이클립스 유용한 플러그인 몇 가지 업데이트 소식
  24. 2006/10/17 Spring IDE 이클립스 플러그인 간단 설명
  25. 2006/10/17 AnyEditTools 이클립스 플러그인 간단 설명
  26. 2006/09/27 이클립스 프로젝트 이름 변경을 시도하다가 죽을 때

기본 구성: 이클립스 SDK 3.2.1 + WTP 1.5.2-200610261841 [다운로드]

확장 플러그인
1) zip 파일 다운로드를 통해 설치해야 하는 플러그인
- Classpath Helper 1.2.2 <http://classpathhelper.sourceforge.net/>
- Copy Fully Qualified Class Name Plugin 1.1 <http://www.jave.de/eclipse/copyfully/index.html>
- JSEclipse 1.5.3 (12/19 갱신 및 개발사 Adobe로 인수)http://www.interaktonline.com/downloads/eclipse/100/JSEclipse_1.5.3.zip
- JUtils ToString Generator 2.0 <http://eclipse-jutils.sourceforge.net/>
- SwitchUnit 0.5beta

2) 업데이트 사이트를 통해 설치가 가능한 플러그인
- Spring IDE for Eclipse 1.3.6 [ http://springide.org/updatesite ]
- AnyEdit tools Plug-in 1.6.1.1 (12/19 갱신)
- JDepend4Eclipse Plug-in 1.1 [ http://andrei.gmxhome.de/eclipse/ ]
- Subversive SVN Team Provider 1.1 M8a [ http://www.polarion.org/projects/subversive/download/1.1/update-site/ ]
- Implementors plugin 0.0.15 [http://eclipse-tools.sourceforge.net/updates/ ]
- Metrics 1.3.6 [ http://metrics.sourceforge.net/update ]
- HTTP Headers 1.0 [ http://httpheaders.info/eclipse/update ]

Posted by 영회
다음과 같은 유형의 파일은 CVS/SVN 저장소에 포함되지 않아야 한다.
  • 이클립스 설정 파일
  • 클래스 파일
.setting 폴더 이하에 위치한 이클립스 설정 파일은 배제되어야 한다.
그렇지 않으면 나와 다른 설정을 갖고 싶어하는 개발자들은 곤혹스러울 수 있다. :)
클래스 파일의 경우도 불필요한 공유로 네트워크 부하를 높일 이유가 없고,
만일 JDK 버전이 다른 경우는 팀내 개발자들에게 불편을 겪게 할 수 있다.


Team > Add to svn:ignore 혹은 cvs:ignore 메뉴로 이를 막을 수 있다.
공유하지 않을 파일을 설정해두는 것이다.

원문 작성 일시: 2006/08/26 (토) 20:24
Posted by 영회
공유 저장소를 이용하여 이클립스 프로젝트를 공유할 경우
클래스패스 설정 내역을 공유하게 되면 절대 경로를 쓰지 않기 위해 주의해야 한다.


개발팀 일원이 절대 경로를 설정하고, 절대 경로에 위치한 클래스에 의존하여 컴파일 할 경우 다른 개발자들은 컴파일이 불가능하게 된다. 또한, 프로젝트 내부에 존재하지 않는 파일이라면 별도로 이를 구해서 설치해야 하는 번거로움까지 겪어야 한다. 이런 부담을 주지 않기 위해서는 클래스패스를 모두 상대경로로 설정하는 센스가 필요하다. :)

또 다른 방법으로 형상관리도구의 ignore 목록에 .classpath 파일을 등록하여 클래스패스는 개별적으로 관리할 수도 있다.


원문 작성 일시: 2006/08/24 (목) 22:22
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 영회
/**
  * 두 개의 객체가 다른 경우
  * {@link java.lang.AssertionError AssertionError AssertionError}를 발생.
  * 다른 Assertion 메소드와의 일관성 유지를 위해 만듦
  * @param object
  * @param another
  * @see java.lang.AssertionError
  * @see org.testng.AssertJUnit.assertSame
  */

위와 같이  @see를 사용하면 Javadoc의 See Also: 문장과 링크가 만들어진다.
멤버의 경우에는 #을 붙여 구분한다.

한편 주석내에서 쓰이는 문구에 링크를 걸고자 하면 @link를 사용한다.

{@link java.lang.AssertionError AssertionError AssertionError}

link 뒤에 링크가 될 요소를 쓰고(패키지 이름.클래스 이름#멤버) 한 탄 띄고 링크가 걸릴 문자를 입력한다.

그런데.. 이클립스가 이들 클래스에 대한 Javadoc이 어디 있는지 어찌 알겠는가?
참조하는 jar에 javadoc위치를 지정해주면 가능하다.
Javadoe 생성시점에서 지정할 수도 있고
프로젝트 탐색기(Explorer)에서 jar의 Properties(Alt+Enter)를 열어서 지정할 수도 있다.


위는 프로젝트 프로퍼티에서 javadoc의 URL을 지정한 모습이다.
주의할 점은 index.html이 아니라 javadoc의 루트 디렉토리를 줘야 한다는 점이다.
javadoc 생성을 위한 메뉴는
Project > Generate Javadoc이다.


javadoc에 포함되길 원하는 자바 클래스 소스를 선택하고


문서의 제목(브라우저 title바에 표시될 내용)을 설정하고
아래 리스트에서 링크가 걸릴 jar를 선택한다.
이미 javadoc을 지정한 항목은 옆에 주소가 나오지만
안나오는 것을 선택했다면 Browse 버튼을 누르고 지정해주면 된다


마지막으로 한글을 사용했다면 해당 인코딩을 지정한다.
-encoding UTF-8 이나 -encodeing EUC-KR 과 같은 식이다.


원문 작성 일시: 2006/04/13 (목) 10:40
Posted by 영회
JUtils ToString Generator 2.0 <http://eclipse-jutils.sourceforge.net/>의 경우는 Commonclipse에 비해 기능은 적지만 라이브러리 의존도가 없어 좋다.

/**
  * Constructs a <code>String</code> with all attributes
  * in name = value format.
  *
  * @return a <code>String</code> representation
  * of this object.
  */
public String toString()
{
    final String TAB = "    ";
   
    String retValue = "";
   
    retValue = "Category ( "
        + super.toString() + TAB
        + "id = " + this.id + TAB
        + "name = " + this.name + TAB
        + " )";
   
    return retValue;
}

Commonclipse보다 더 의미있는 주석을 제공하고(Preferences에서 한글로 수정할 수 있다), 출력 형식도 보기 좋다.

원문 작성 일시: 2006/05/03 (수) 12:28
Posted by 영회
제 블로그에 와주시는 분  중에서 이클립스 플러그인 설치 문제로 고생하시는 분이 있네요.

저는 평소 이러한 의미있는 고생을 삽질이라고 부르죠. 특별히 좋아하지는 않는데 저 역시 즐겨 하게 되더군요... 삽질과 함께 익히셔야 쉽게 잊혀지지 않죠.

설치한 디렉토리가 아래와 같다고 하셨는데 이클립스 플러그인 배포 파일의 컨벤션(일반적으로 지키는 관습)을 모르셔서 고생하신 거네요.

JSEclipse 뿐만 아니라.. tomcatPlugin 도 잘못 설치하셨네요. ^^;
컨벤션을 깬.. 무례한(?) 플러그인이 아니라면 zip으로 배포되는 거의 모든 플러그인 동일한 구조를 지닙니다.
eclipse 설치 디렉토리가 zip 파일로 묶인 디렉토리와 파일의 루트죠. 그래서 항상 zip 을 푸는 곳이 eclipse 설치 디렉토리여야 합니다.

위의 경우는 zip 파일을 eclipse 설치 디렉토리 아래의 plugins 디렉토리에 풀었거나 zip 을 마음대로 풀기 같은 알집 등의 기능으로 plugins 디렉토리에 풀어서 생긴 것이죠.

가장 쉬운 방법을 알려드리죠. 우선 압축 프로그램은 빵집을 기준으로 하겠습니다.

JSEclipse 를 기준으로 하겠습니다만 다른 플러그인도 똑같습니다. zip 을 받으면 빵집으로 열기를 합니다.

위 그림처럼 되죠.
그리고 탐색기를 열어서 이클립스 설치 폴더를 찾으세요.

이클립스 설치 디렉토리(폴더)에다가
빵집에서 오른쪽에 보이는 두 개의 디렉토리(features와 plugins)를 끌어다가 놓습니다.

압축이 풀리면서 설치가 되는 과정에서
이름이 같은데 덮어쓸꺼냐고 물어보겠죠.
JSEclipse 같은 경우 Yes All 안하고, Yes 로 확인하면 두 번 묻겠죠.
이런 물음이 나오는 것을 확인까지 하면 확실하게 제대로 설치하게되죠. :)

오충훈  2006/01/05 09:21 
아핫 무례한 요구에도 친절히 답변 주셔서 너무 감사합니다.
제가 소주라도 한잔 사야 겠네요..


원문 작성 일시: 2006/01/04 (수) 23:24
Posted by 영회

CBD 를 적용하거나 Spring 을 사용하면 인터페이스와 이를 구현하는 클래스가 많아진다. 구현 클래스는 클래스 이름 뒤에 implements 키워드와 함께 구현하는 인터페이스가 있어 식별이 용이하다. 그러나 반대로 인터페이스의 경우는 Type Hierarchy 를 봐야만 식별할 수 있는 단점이 있다.

이를 보완해주는 플러그인이 Implementors plugin 이다. 업데이트 url 을 통해서 이클립스에서 직접 설치할 수 있다. http://eclipse-tools.sourceforge.net/updates/
Posted by 영회
그림. WTP(이클립스 웹 툴즈)의 아키텍처

웹 툴즈(webtools)
라고도 부르는 WTP 는 크게 J2EE Standard Tools (JST)Web Standard Tools (WST)로 나뉜다.

JST의 구성은 아래와 같다. JSP/Servlet 개발을 지원하고, Server Runtime을 통해서 특정 제품에만 배포되는 코드를 줄일 수 있도록 도와준다. 그리고 부가 기능으로 EJB와 Annotation 지원 등이 있다.

JST의 구성


WST 의 구성은 아래와 같다.

WST 의 구성


W3C 등이 주도하는 XML, HTML, CSS 와 함께 자바 스크립트 구현을 돕는 툴과 함께 웹 서비스 구현을 지원한다. 더불어 Data Tools를 제공하지만 기능은 다소 미약한 것 같다. 이부분은 DTP에서 주도하기 때문에 향후 별도 개발보다는 DTP와의 연동으로 발전할 것으로 짐작된다.
원문 작성 일시: 2005/11/25 (금) 11:35

Posted by 영회
WTP 가 나오면서 오픈소스로 개발되던 3rd party의 자바 스크립트 관련 이클립스 플러그인의 기능을 압도했다. 압도라고 해봐야 통합성이 높다는 점이다. 기능도 편집기에서 키워드 표시나 포매팅 정도다. 자바 스크립트로 프로그래밍 하면 가장 골치 아픈 것은 역시 디버깅이다.

디버거가 없나 찾아다니다가 JSEclipse를 테스트해보았다. 프리웨어인데 오픈소스는 아닌 모양이다. 가장 먼저 눈에 띄는 기능은 편집기에서 자동완성 지원해줄 때 브라우저 호환성을 보여준다는 것이었다. 개인적으로는 온통 디버거에만 관심이 있어서 이 정도라면 깔 필요가 없겠다 싶었는데 도움말을 확인해보니...


위 그림처럼 WTP의 자바 스크립트 에디터로 편집할 때는 오류 체크를 안해주는데 JSEclipse의 자바 스크립트 에디터로 열면.. Outline 뷰에서 오류체크를 해준다. 땡쓰다... :)


다운로드: http://www.interaktonline.com/Downloads/Free-Products/
원문 작성 일시: 2005/10/28 (금) 17:52
Posted by 영회
유틸리티 성격의 작은 플러그인이네요.
HttpHeadersInfoPlugin_1.0.0.jar 를 다운받으셔서 eclipse 설치 루트 밑의 plugins 에 넣으시고, 이클립스를 (다시) 시작하면 설치 됩니다.

http://httpheaders.info/eclipse/update
업데이트 사이트를 통해 설치도 가능합니다.
그렇게까지 요긴한 것은 아닙니다만
악세사리 정도로는 괜찮은 것 같습니다. ^^

이미지 출처:  http://httpheaders.info/eclipse/index.php
원문 작성 일시: 2006/01/13 (금) 15:17
Posted by 영회
HSQL Standalone 버전은 자바 애플리케이션은 괜찮은데, 웹에서 접근시 Lock과 관련된 오류가 발생했다. Server Mode로 돌렸는데, CMD에서 실행하고, 웹에서 접근하면 OK 이다. 그런데 build 파일에서 java task로 돌리면... 또 문제가 되었다. 혹시 이클립스와 동일한 VM을 쓰면 문제가 되는 것인가 했는데.. 웹에서의 접근은 몰라도 이클립스에서 build로 서버를 실행한 후, 이클립스에서 DB 접근하면 오류가 발생했다.

이 문제는 fork 옵션으로 해결할 수 있었다.

   <target name="start.hsql"  description="Run a hsqldb server instance">
       <java classname="org.hsqldb.Server" classpath="${lib}/hsqldb.jar"
        fork="true">
        <arg value="-database.0"/>
        <arg value="../data/mydb"/>
        <arg value="-dbname.0"/>
        <arg value="jpetstore"/>
       </java>
   </target>

fork 옵션에 대한 설명은 다음 URL을 참조할 수 있다:

간단히 말해서, fork="true"로 설정시 다른 VM에서 실행하는 것이라고 할 수 있다.


start.hsql build target을 실행하고 나서, 작업관리자에서 확인해보면 java.exe와 javaw.exe 프로세스가 추가되는 것을 확인할 수 있다. 왜 두 녀석이 쌍으로 생기는지는 모르겠다.
어찌 되었든 이렇게 하면 HSQL을 쉽게 쓸 수 있다.
        <arg value="-database.0"/>
        <arg value="../data/mydb"/>
        <arg value="-dbname.0"/>
        <arg value="jpetstore"/>

에서 "../data/mydb" 는 build.xml 파일을 기준으로 데이터베이스 파일이 저장될 경로명을 넣는 것이고, jpetstore는 URL로 접근할 DB 명이다. HSQL의 URL 표현대로 하면 다음과 같은 방식으로 접근할 수 있다:
jdbc:hsqldb:hsql://localhost/jpetstore

<arg /> task 작성시 value 값으로 java의 인자를 쭉 늘여썼는데 공백을 인식하여 파싱하는 것이 아니었다. 인자를 하나씩 별도의 task로 작성해줘야 문제가 없었다. 즉, 아래처럼 이해하면 될 것 같다.

        <arg value="-database.0"/> -> args[0]
        <arg value="../data/mydb"/> -> args[1]
        <arg value="-dbname.0"/>-> args[2]
        <arg value="jpetstore"/>-> args[3]

Posted by 영회
  • Rename: Alt + Shift + R
  • Move: Alt + Shift + V (moVe)
  • Change Method Signature: Alt + Shift + C (Change method signature)
  • Convert Anonymous Class to Nested: anonymous inner classes 를 멤버 클래스로 정의하고자 할 때. 재사용할 것이 불분명한 경우 메소드 정의 내부에서 클래스를 정의하는 것은 좋은 습관이라 할 수 있다. 이렇게 만든 것이 다른 클래스에서도 쓰이게 되면 이름을 갖게 하는 것이 좋을 테니까... 이럴 때 도움을 준다.
  • Move Member Type to New File: 멤버로 갖고 있는 타입(클래스나 인터페이스)을 밖으로 빼내서 별도의 타입으로 정의하고자 할 경우. 중첩되어 정의된 클래스를 밖으로 빼낼 때 유용하려나?
  • Push Down: 메소드나 필드를 하위 클래스로 내릴 때
  • Pull Up: 상위 클래스로.. Push Down과 반대
  • Extract Interface: 메소드를 인터페이스로 추출
  • Generalize Type: 선택한 레퍼런스의 상위 타입을 선택하게 해주고 이를 적용
  • Use Supertype Where Possible: 선택한 레퍼런스의 타입을 상위 타입으로 변경
  • Infer Generic Type Arguments: parameterized type으로 변경해준다는데.. 음.. 5.0에 추가된 것인 모양이다. Genrics를 사용하고자 할 때 적합할 듯
  • Inline:  Alt + Shift + I 뭔가 했더니만.. C++ inline 함수와 유사하네요. 아래 그림으로 설명합니다.
  • Extract Method: Alt + Shift + M (Method Extraction)
  • Extract Local Variable: Alt + Shift + L (Local Variable Extraction)
  • Extract Constant
  • Introduce Factory: 생성자를 Factory 패턴을 쓰도록 변경할 경우
  • Introduce Parameter: 메소드 지역 변수를 매개변수(Parameter)를 통해 받도록 변경할 경우
  • Convert Local Variable to Field
  • Encapsulate Field
    inline은 세 가지 종류가 있는데 Refactoring Catalog 링크를 거는 것으로 설명을 대신함
  • Inline Class
  • Inline Method
  • Inline Temp
  • 원문 작성 일시: 2005/09/20 (화) 22:15

    Posted by 영회
    Classpath Helper

    소스코드의 경우는 의존하는 클래스가 없으면 컴파일 에러가 나기 때문에
    이클립스 JDT에 의해서 문제(Problem)가 보고 된다.
    Quick Fix 기능을 이용해 쉽게 해결할 수 있다.

    그런데 굳이 참조하는 클래스가 참조되는 클래스를 보여주는
    플러그인이 도움이 될까 생각했는데


    그림에 보이는 것처럼 JAR 파일 내부의 클래스에 대해서까지
    참조(의존) 관계를 파해쳐(?) 주고 있다. 오호~ 쓸만하네.
    특정 클래스의 참조 관계를 세 가지 유형으로 구분해서 보여준다.

    Depends On: 참조하고 있는 Jar 및 그 내부의 classifier (클래스나 인터페이스)
    Unresolved References: 참조하고 있는 classifier를 찾지 못한 경우
    Referenced by: 어떤 Jar 및 내부의 classifier에 의해 참조되고 있나


    사용법은 너무 간단하다.
    위 사이트에서 다운로드 받아 설치하고

    Window->Show View->Other...

    Classpath View 선택하면 처음의 이미지와 같은 뷰가 생긴다.
    지금 보니 도움말도 있네요.

    이희승  2005/10/06 11:08
    JAR 에는 들어 있으나 실제로는 사용되지 않는 클래스가 다른 패키지에 의존하는 경우에는 에러를 내지 않았으면 좋겠는데... 어떤가요? ^^

    2005/10/06 11:11
    네.. 에러를 내서 Problem 보고를 하는 것은 이클립스 실행 모듈의 문제니까.. 상관없더라구요. 저 녀석이 붉은색 엑스 마크를 보여주는 것은 이클립스와 아이콘은 갖지만 의미는 다르죠. 단지 참조관계가 깨졌다는 것을 알릴 뿐이더라구요. 사용자가 그걸 쓰건 말건. 레드헷 RPM 생각나더군요. 결국 우려하시는 점은 문제가 되지 않을 것 같습니다. :)


    원문 작성 일시: 2005/10/05 (수) 15:45
    Posted by 영회
    워크벤치 구성요소 이름



    주요 아이콘과 아이콘 유형



    원문 작성 일시: 2005/07/17 (일) 20:12
    Posted by 영회
    C and C++ : The Eclipse C Development Tools (CDT) project (http://www.eclipse.org/cdt/)
    COBOL: the COBOL plug-in (http://www.eclipse.org/cobol/)
    Posted by 영회
    자바 코드의 의존성과 복잡도를 파악하는 일이 필요한 경우가 있다.
    투게더의 Metrics는 너무 복잡해서 용처를 찾기가 힘들 정도지만
    JDepend 정도는 널리 쓰이는 것 같다.

    Spring 코드를 로즈로 리버스(reverse generation)하려는데
    -사실 로즈의 리버스 기능은 품질이 낮아서 코드의 작은 특이사항에도
    모델 생성을 못하는 경우가 많다.
    그럼에도 불구하고 투게더 모델이 아니라 로즈 모델을 먼저 시도하려 한다.
    그러려면 의존성이 있는 클래스들을 뽑아야 하는데 모두 로딩하기에는
    의존하는 jar 들이 너무 많아 의존관계 파악을 위해서 JDepend를 쓰려고 했다.

    JDepend 홈페이지에 가서 다운받고 사용을 해봤더니 잘 안된다.
    매뉴얼만 봐선 문제를 알 수 없다. 이거 공부하고 있을 시간은 없는데
    마침 이클립스 플러긴이 있었다. 헐.. 설치하고 나니 그냥 된다.


    설치하고 나면 JDepend 뷰가 생기고 컨텍스트 메뉴에서
    [JDepend]-[Show JDepend view] 를 선택하여 접근할 수 있다.


    패키지나 클래스를 선택하면 의존성 정보를 보여준다.
    더불어 패키지 선택시에는 불안정성(instability)추상도(abstractness)를 축으로 하는 그래프를 보여준다.

    얼~ JDepend4Eclipse
    JDepend를 의존성/복잡도에 대한 기본적인 이해만 갖고도 직관적으로 이클립스내에서 쓸 수 있게 해줘서 생산성을 부쩍 높여준다.



    Posted by 영회
    요즘 이클립스 버전업이 빨리 되기도 하고
    쓸만한 플러그인이 자주 나와서
    이들을 테스트 하다보면 이클립스를 여러 개 설치해야 하는 경우가 생긴다.
    디렉토리를 여러 개 만들어서 사용하고 있는데
    자바로비에 좀 더 나은 방안이 공개된 것 같아 따라해보려고 한다.

    골자는 설치 디렉토리, 확장 플러그인 디렉토리사용자 디렉토리를 구분하는 것인 듯

    설치 디렉토리(Installations)는 Eclipse.org에서 배포되는 SDK를 다운로드 받아 압축을 푼 디렉토리를 의미한다. 다음과 같이 할 수 있다.
    c:\eclipse_installations\eclipse_31_M7
    c:\eclipse_installations\eclipse_M6
    c:\eclipse_installations\eclipse_bleeding_edge
    c:\eclipse_installations\eclipse_30
    확장 플러그인 디렉토리(Extensions)는 대개는 3rd-party에서 제공하는 플러그인들을 역시 다운로드 받아서 압축을 푼 디렉토리를 의미한다. 보통 설치 디렉토리 하위의 plugins 디렉토리에 압축을 해제해야 한다. 그렇기 때문에 설치한 이클립스 버전마다 별도로 설치해줘야 하는데

    c:\eclipse_extensions\eclipse\plugins 및 c:\eclipse_extensions\eclipse\features 와 같이
    별도의 디렉토리를 만든 이후에 c:\eclipse_extensions\eclipse\.eclipseextension 파일을 만들고 아래 내용을 넣는다.
    name=My Eclipse Configuration
    id=my.eclipse.configuration
    version=1.0.0

    그리고 나서 이곳에다 플러그인들의 피처(features)나 플러그인 파일을 넣고 나서
    설치된 이클립스가 실행된 이후에 확장 플러그인의 위치로 이곳을 참조하도록 설정해준다.



    사용자 디렉토리(Workspaces) 역시 c:eclipse-workspaces 와 같이 별도의 디렉토리를 만들어 프로젝트 파일과 Preferences 설정 내역을 분리해서 저장하는 것이 좋다.

    다음은 다양한 이클립스 버전이 설치된 경우 여러 가지 방법으로 이클립스를 실행하는 예다.
    c:eclipse_installationseclipse_31_M7eclipse.exe
    -data c:eclipse-workspacesworkspace1
    -vmargs -Xms256M -Xmx256M
    c:eclipse_installationseclipse_30eclipse.exe
    -data c:eclipse-workspacesworkspace2
    -vmargs -Xms128M -Xmx256M
    c:eclipse_installationseclipse_bleeding_edgeeclipse.exe
    -data c:eclipse-workspacesworkspace3
    -vmargs -Xms256M -Xmx256M
    c:eclipse_installationseclipse_bleeding_edgeeclipse.exe
    -data c:eclipse-workspacesworkspace1
    -vmargs -Xms256M -Xmx256M
    Preferences 설정은 Export/Import를 통해 공유될 수 있다.



    위 그림과 같이 디렉토리를 구성합니다.

    downloaded는 다운로드 받은 압축 파일을 넣어놓는 곳이기 때문에 사용 환경과는 무관하구요.
    extensions 디렉토리에 플러그인을 설치합니다. 그 아래 main 이라는 디렉토리를 둔 것은 최신 버전의 이클립스에 웹툴즈를 설치할 때, 제대로 동작하지 않는 경우가 있어서 플러그인 설치 세트도 여러 개를 만들 수 있게 하기 위해서죠. 즉, main 이라는 세트가 있고, 추후 다른 세트를 만들 수 있게 한 것입니다. 중요한 것은 eclipse 라는 디렉토리 아래에 .eclipseextension 이라는 파일이 있어야 한다는 것과, plugins 및 features 디렉토리가 여기 놓여야 한다는 점이죠.

    여기서 왜 extensions라는 이름의 디렉토리를 쓰냐는 의문이 날 수 있는데
    extension은 plugin과 feature 집합으로 이루어진 이클립스의 기능 확장 지점 혹은 방안이다.

    .eclipseextension 파일의 내용은 다음과 같습니다.

    name=My Eclipse Configuration
    id=my.eclipse.configuration
    version=1.0.0

    installations 디렉토리에 이클립스를 설치합니다.
    workspaces 디렉토리는 프로젝트가 저장될 디렉토리죠.

    이제 이클립스를 실행시키면 기본 형태로 시작이 됩니다.


    Manage configuration 메뉴를 선택합니다. Product Configuration 창이 뜨면 왼쪽 탐색기 영역에서 오른쪽 마우스를 누르고 Add - Extension Location을 선택합니다.



    그리고 나서 미리 만들어두었던 extensions 디렉토리 하위의 eclipse 디렉토리를 선택합니다. 이클립스가 재시작 되고 나면 플러그인이 인식됩니다.

    원문 작성 일시: 2005/05/29 (일) 10:59
    Posted by 영회
    참 별걸 다 만드는군요. ^^;
    이클립스의 코드 도우미(code assistant) 기능을 이용해서 5.0에서 새로 도입된 루프 등을 지원하는 것 같습니다. Cédric Beust 라는 사람이 홈페이지에 올린 것이라.. 정보가 좀 빈약하네요. 직접 써보고 평해봐야할텐데..



    일단 이 그림은 무척 직관적이네요. 이 플러긴이 무얼 해줄지가..^^
    현재는 버전이 0.5 네요.
    주요 기능은 아래 두 가지를 지원하는거구요.

  • Enhanced for loop
  • Generics

    Generics  지원은 이렇게...

    Before:
    List l2 = new ArrayList();
    Float n2 = new Float(42);
    l2.add(n2);

    After:
    ArrayList<Float> l2 = new ArrayList<Float>();
    Float n2 = new Float(42);
    l2.add(n2);


    Before:
    Map m = new HashMap();
    m.put(new Integer(42), "Cedric");

    After:
    HashMap<Integer, String> m = new HashMap<Integer, String>();
    m.put(new Integer(42), "Cedric");

    반복문에 대해선 컬렉션과 배열에 대해서 강화되었군요. 위의 그림을 보면 대략 알 수 있죠.

    플러긴 홈페이지: http://beust.com/j15/

    원문 작성 일시: 2005/03/17 (목) 17:37
  • Posted by 영회
    1.2 실행
    1.2.1 이클립스 설정
    3.1 M4 로 테스트해보고 배포본인 3.0 에도 잘되는지 확인해보기로 하겠습니다.
    표준화 했으면 하는 요구사항은 아래와 같습니다.
    - 인코딩을 UTF-8 로
    - 주석 표준화

    나머지는 개발자 취향을 인정해주는 것을 좋을 듯 합니다.

    설정하는 부분은 아래 그림을 참조하세요.
    물론 Windows - Preferences 메뉴 선택하셔야 보입니다.


    주석의 경우는 이클립스 설치 후 생기는 주석 정도를 제거하는 수준으로 표준화를 간단하게 했습니다. New Java files와 Types 만 해당되죠.



    이젠.. 어떻게 공유할 것이냐인데, 지침으로 하달하는 것은 잘 지켜지지 않습니다. ^^;
    [Export] 버튼을 눌러서 다음 화면이 나오게 할 수 있습니다.


    여기서 저장할 위치와 이름을 지정하고 설정을 선택합니다.
    Core Resource Management 에 UTF-8 이 들어있구요.

    Java Development Tools UI 에 주석 관련 설정이 있습니다.

    다행히 3.0.1 에서는 마이너 버전이 다르다는 경고 정도는 나오지만 문제없이 적용됩니다.
    방금 3.1 M5를 받아서 테스트했는데 여기서도 문제없이 적용이 되는군요.

    Export 한 것을 Import 하면 다른 개발자의 이클립스에서도 이들 설정 사항이 반영됩니다.
    Export 한 파일은 .epf 라는 확장자를 갖게 됩니다.
    가만히 생각해보니까 Eclipse Preferences Format 이나 File정도 되겠네요. ^^

    내용은 그저 properties 파일이라고 보면 되겠습니다.
    프로퍼티의 이름과 값의 포맷만 알면 타이핑해서 텍스트 편집기로 작성할 수도 있겠군요.

    이들 설정을 하나의 파일로 내보낼 수 있지만, 개별적으로도 내보낼 수 있습니다.
    3.1 M4에서 설정한 것이 3.1 M5에서는 주석 부분은 반영이 안되는 것으로 봐서는
    개별적으로 Export/Import 하는 것이 더 안정적이라고 생각됩니다.
    아니면 버전을 동일하게 맞추거나..

    /instance/org.eclipse.core.resources/encoding=UTF-8
    @org.eclipse.core.resources=3.1.0
    file_export_version=3.0
    !/instance/org.eclipse.core.resources=

    위 내용을 복사해서 .epf 확장자로 저장하고 나서
    이클립스 Preferences 대화창에서 Import 하면 워크 스페이스의 기본 인코딩이 UTF-8이 됩니다.

    그리고, 주석 부분은 xml 파일로 따로 Export/Import 할 수 있습니다.
    위쪽에서 주석 부분 템플릿 설정하는 화면 보면 메뉴를 확인할 수 있죠.

    원문 작성 일시: 2005/02/19 (토) 16:10
    Posted by 영회
    SHIBATA KAN님이 방명록과 엠파스 블로그 댓글을 통해 상기시켜주신 이클립스 버그..
    기억은 잘 나지 않는다.ㅡㅡ;

    2005/09/15 (목) 00:07

    이유를 알 수 없어서 구글에 물어보니.. 버그질라에 있긴 한데
    Bugzilla Bug 102908

    이것이 단순히 WTP의 버그인지는 몰라도
    내 경우에는 조금 다른 것 같다.

    문제를 일으키는 부분은 아래의 설정이다.
    <resource-ref>
     <description>JPetStore DataSource</description>
     <res-ref-name>jdbc/jpetstore</res-ref-name>
     <res-type>javax.sql.DataSource</res-type>
     <res-auth>Container</res-auth>
    </resource-ref>

    로그 내용은 다음과 같다.
    Severity Description Resource In Folder Location Creation Time
    1 CHKJ4019W: Invalid res-sharing-scope; valid values are "Shareable" or "Unshareable". web.xml JPetStore with Struts and IBatiss/WebContent/WEB-INF  2005년 9월 15일 (목) 오전 12:01:57
    res-sharing-scope 라는 엘리먼트는 없고, 단지 키워드처럼 쓰나 본데
    젠장... 서블릿 2.3 web.xml 내용을 복사해서
    2.4에서 돌리려니까.. 스키마가 틀리네.. ㅡㅡ;

    이런.. 쩝.. web.xml은 backward campatibility가 상당히 높음을 잊었다.
    그냥 이클립스에서 Code Assist 받으니까
    답 나오네..

    res-sharing-scope
    라는 엘리먼트가 required 인 모양이다.
    Shareable 이나 Unshareable 중에 암꺼나 써주면 문제는 해결된다.
    무슨 차이일까?

    찾았다.

    이런... 3년전에 본 책이다.
    역시 디립따 읽기만 한다고 소화가 되는 것은 아니다.
    책은 마음의 양식... 의미 심장하게 다가온다.ㅡㅡ;

    The bean provider can control the extent that connections are shared. By default, other enterprise beans in the application that use the same resource in the same transaction context can share the connection. The bean provider can set the res-sharing-scope deployment descriptor element to Unshareable to indicate that a connection not be shared. Keep in mind, though, that sharing connections to a resource manager allows the container to optimize connection and local transaction use. It is recommended that connections be marked Shareable.

    동일한 Tx 컨텍스트라.. 쩝.. 감이 안온다. 일단 넘어가자. 일단 Shareable이 추천 사항이라고 할 수 있네. 서로 트랜젝션 하는 와중에 DB 연결을 공유할 수도 있단 건가.. 젠장.. 미들웨어를 쓰기만 하면.. 이래서 안된다. 그렇다고 이제와서 만드는 일에 뛰어 들 수도 없지만..@@
    Posted by 영회
    AnyEditTools 1.5.6.2
    Spring IDE 1.3.6
    Subversive SVN Team Provider 1.1.0 M6


    각각에 대해 간단한 설명을 드리면..
    AnyEditTools : 이클립스 JDT의 편집기 자체가 상당히 개선 되어서 유용성이 다소 떨어지긴 합니다만, 초창기부터 필수 유틸이었습니다. 가까운 사람이 물어보면 이렇게 대답해주고 싶습니다.

    '일단 좋고 가벼우니까 무조건 깔아서 써. 대충 오른쪽 마우스 누르면 전보다 메뉴 많아져서 편해.'

    AnyEditTools에 대해 알아보고 깔고 싶다고 하시는 분을 위해 약간 정리한 글을 제공합니다.

    AnyEditTools 이클립스 플러그인 간단 설명

    플러그인 설치 및 업데이트 URL: http://andrei.gmxhome.de/eclipse/
    홈페이지: http://andrei.gmxhome.de/anyedit/index.html

    최근 업데이트는 자바 이외의 PHP, Perl, 루비 등을 위한 지원 강화가 특기할만 합니다.

    Spring IDE에 대해서도 두 가지 종류의 설명을 제공하겠습니다.
    지인용: 'Spring 쓸 때 무조건 필요해.'
    범용: Spring IDE 이클립스 플러그인 간단 설명


    Subversive는 SVN 이클립스 클라이언트입니다.
    범용 설명은 생략/포기합니다.
    지인들에게는 'Subclipse 보다 조금 안정적이면서 CVS 클라이언트와 동일한 인터페이스를 제공한다.'라고 말해주렵니다.
    홈페이지: http://www.polarion.org/index.php?page=overview&project=subversive
    다운로드 및 업데이트 URL: http://www.polarion.org/projects/subversive/download/update-site/
    Posted by 영회

    홈페이지: http://springide.org
    설치 및 업데이트 주소: http://springide.org/updatesite/

    가장 중요한 기능은 Spring Context 파일 즉, Spring에서 사용하는 각종 XML 파일들의 유효성 검증자동 완성 기능입니다. 여러 개의 XML 파일을 쓰는 경우는 매우 유용합니다. 이 경우 Spring IDE의 도움을 받기 위해서는 두 가지 선행 작업이 요구됩다.

    1. Spring Nature 부여
    프로젝트를 선택하고, 오른쪽 마우스를 누르면 Add Spring Beans Project Nature 메뉴가 새로 등장합니다. 이를 선택하면 프로젝트 아이콘 우측 상단에 작은 S자가 등장합니다. 이 메뉴는 토글입니다. 이후에는 컨텍스트 메뉴에 Remove Spring Beans Project가 생깁니다.

    2. Config 파일 등록
    Spring 프로젝트에서 Alt-Enter키를 눌러, 프로젝트 등록정보에서 Spring Beans Projcect 항목을 선택한 이후에 config 파일을 등록합니다.

    Config 파일에서 등록된 빈의 연결 관계를 보여주는 다이어그램도 작성해줍니다. 편집은 불가능한 것이지만, Bean이 많은 경우 유용합니다.

    added screenshoot

    위에 보이는 그림이죠.


    그 밖에 Bean 검색을 지원하고

    콩(bean) 모양 툴바 버튼 추가해줍니다.
    버튼을 클릭하면 아래와 같이 워크 스페이스에서 열려 있는 프로젝트에 존재하는 Bean 목록을 뿌려줍니다.
    잘 쓰면 매우 유용하겠군요.


    이러한 기능 이외에

    이런 스타일의 xml 정의를
    <bean class="TestBean">	<property name="test" >		<ref bean="test"/>	</property></bean>
    보다 간결한 스타일로 바꿔주는 Refactor 메뉴도 추가했다 합니다.
    <bean class="TestBean">
    <property name="test" ref="test"></property>
    </bean>

    이왕이면 empty 태그로 했으면 하는 아쉬움도 있지만..

    원격 설치 방법 설명 보기

    Posted by 영회
    Andrei Loskutov 가 개발하여 제공하는 플러그인들은 사이즈가 작고 유용해서 인기가 높습니다.

    Open file under cursor, Open type under cursorConvert의 하위 메뉴가 주요 기능입니다.

    Open type under cursor 는 이미 이클립스에서 지원하는 것입니다. 타입을 선택하고, (1) F3를 누르거나, (2)오른쪽 마우스를 눌러서 Open Declaration을 선택하면 되죠. (3) Ctrl 키를 누른 상태로 타입을 클릭해도 됩니다. 물론, 이 기능이 정확이 어느 버전부터 지원했는지 모르지만... 2.1 버전에서도 가능했던 것 같네요.

    그러나, Open file under cursor의 경우는 include 를 많이 사용한 JSP 파일에서 필요성을 느껴서 개발했다고 하네요. 자바 클래스가 아닌 것도 열어주는 것이죠. ^o^
    이렇게 하면

    header.inc로 이동하는 깜찍한 기능

    Convert 하위 메뉴는 이미 이클립스에서 기본으로 지원하는 것도 있지만 보다 편리하죠.


    그 외에도 몽땅 저장(Save All) 툴바 버튼이 생겨서 단축키랑 혼용할 수 있구요.
    Open file도 그렇습니다. 
    Posted by 영회

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

    Posted by 영회