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

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

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

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

이올린에 북마크하기(0) 이올린에 추천하기(0)

[리뷰] eBay의 이클립스, Part 1: eBay 아키텍처에 맞춘 이클립스를 보며, 나도 저렇게 해봤으면 하고 꿈꿔본 사람이라면 다음 연재를 보라.


현재 두 편의 시리즈가 번역되어 있다.

플러그인 개발 기초 학습, Part 2: 리치 클라이언트 애플리케이션 도입하기
이클립스에서 플러그인 개발은 예술과도 같은 것입니다. 플러그인 개념, 특히 OSGi와 이클립스에 대해 낯설다면, 이클립스를 사용하여 플러그인을 만들 수 있도록 제공하는 수 많은 도구를 익히는 것이 다소 어렵게 느껴질 수도 있습니다. 본 기사의 목적은 좋은 평가를 받고 있는 베스트 프랙티스와 함께 기본적인 플러그인 개발 기술을 익힐 수 있도록 하는 것입니다.

플러그인 개발 기초 학습, Part 1: 기본 요소
이클립스에서 플러그인 개발은 예술과도 같은 것입니다. 플러그인 개념, 특히 OSGi와 이클립스에 대해 낯설다면, 이클립스를 사용하여 플러그인을 만들 수 있도록 제공하는 수 많은 도구를 익히는 것이 다소 어렵게 느껴질 수도 있습니다. 본 기사의 목적은 좋은 평가를 받고 있는 베스트 프랙티스와 함께 기본적인 플러그인 개발 기술을 익힐 수 있도록 하는 것입니다.

튜토리얼처럼 따라 하면서 플러그인 개발을 해보기에는 빠진 설명이 있긴 하지만, 대략의 흐름을 보기에는 잘 요약되어 있다. 전에 리뷰했던 글과 함께 짧은 시간에 이클립스 플러그인 개발을 맛보게 해주는 좋은 기사다.

이클립스 플러그인이 OSGi에서 어떻게 동작하는지 이해하기
이올린에 북마크하기(0) 이올린에 추천하기(0)

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

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


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

원문 내용이 무엇을 다루고 있는지는 짧막한 설명에 잘 들어난다. 조만간 이클립스 플러그인 혹은 RCP 프로그램을 개발해야 하는데, 빨리 번역되기를 기대해본다.
이올린에 북마크하기(0) 이올린에 추천하기(0)

SVN 사용은 기본적인 것이니까. CVS만을 사용해본 사람들에게는 유용한 튜토리얼이다.


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

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

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

관련 글: SVN 설치 가이드 (5/22 추가)
  1. 책 번역을 하고 있는 입장이라 고충은 이해하지만 [본문으로]
이올린에 북마크하기(0) 이올린에 추천하기(0)

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과 같이 보다 의미있게 바꿔주는 센스를 발휘하면, 마법사 혹은 빠른 수정으로 상속 객체를 생성할 때 이를 그대로 사용하게 된다. ^^
이올린에 북마크하기(0) 이올린에 추천하기(0)