February 2008

이클립스를 최신 버전으로 쉽게 업데이트할 수 있는 구성 만들기

최신 버전의 이클립스를 설치할 때, 특히 공식 릴리즈가 아닌 Milestone 버전을 사용할 경우 유용한 팁입니다. 3.4M4 사용하다가 이번에 새로 나온 3.4M5 설치했는데 여타 플러그인(특히 Subversive) 다시 설치하기가 너무 귀찮아서 조금 손대봤더니 간단히 잘 되는 것 같습니다. Product Extension을 사용하는 것이며 기본적인 개념은 “이클립스 RCP(책)“에서도 설명하고 있는 내용입니다만 실제 적용 How-To를 정리해보았습니다. 초반에 개념 설명을 조금 덧붙였는데 플러그인 개발자가 아닌 분은 적용법만 그대로 따라하셔도 됩니다.

Concepts

이클립스는 Update Site를 사용한 자체 업데이트 메카니즘을 제공하고 있기 때문에 업데이트에 있어서 별다른 불편은 없습니다만, 몇가지 아쉬운 점이 있습니다.

  • 최신 Milestone 또는 Integration 버전처럼 업데이트 사이트가 아예 제공되지 않는 경우
  • 최신 배포판을 다운로드 받아 한번에 업데이트 하고자 하는 경우, 그대로 압축을 풀어 덮어 써도 되지만 기존 플러그인이 그대로 남아있어서 지우려면 일일이 직접 찾아서 지워야 함
  • 여러 버전을 사용할 때 설치된 이클립스마다 부가 플러그인을 모두 각각 업데이트해야 함

위와 같은 문제가 발생하는 것은 기본 구성(Configuration) 하에서는 이클립스 메인 피처와 여타 외부 피처 등을 모두 한 디렉토리에서 관리하기 때문입니다. Configuration의 정확한 의미는 플러그인 개발자라면 아시겠지만 일반 사용자라면 다소 어색할 수 있는데, 여기서 Configuration이라 함은 단순히 환경설정의 의미가 아니라 이클립스의 피처나 플러그인의 배치 구성을 의미하는 이클립스 용어입니다. 이클립스 메뉴에서 Help > Software Updates > Manage Configuration의 Configuration이 그러한 의미입니다.

200802250326.jpg

우리가 일상적으로 사용하는 이클립스는 Product로 배포된 것이며, Product는 “실행 런처 + 플러그인/피처 묶음”이라 볼 수 있습니다. 이클립스 기반 소프트웨어의 배포 형식에는 Product 이외에도 Extension 이라는 것이 있습니다. Extension은 일부 이클립스 기반 상용 제품에서만 활용할 뿐 사용자들이 직접 활용하는 경우는 드문 듯 합니다만, 이 용어는 오히려 플러그인 개발자에게 헷갈릴 법한 용어인데요, Extension Point에 대응하는 플러그인 내장 Extension이 아니라 Product에 대응하는 Product Extension이라는 완전히 별개의 개념입니다. Product에서 실행 런처를 제거한 것, 즉 “only 플러그인/피처 묶음”이 Product Extension이라 볼 수 있습니다.

Product Extension은 이름만큼 거창한 것이 전혀 아닙니다. 소프트웨어 실행에 필요한 종속성이나 심지어 라이센스 정보 등까지 이미 피처 레벨에서 관리하고 있기 때문에 Product가 그렇듯 Product Extension은 플러그인/피처가 모여있는 공간에 지나지 않습니다. Product Extension의 가치는 단 한가지 Product Installation(달리 말하면 이클립스 설치 디렉토리) 외부에도 플러그인/피처를 모아놓는 공간을 둘 수 있다는 점입니다.

이를 사용해서 기존에 설치되어 있던 이클립스 디렉토리를 Product Extension으로 변환하고 새로 설치된 이클립스에서 Extension을 끌어다 사용하면 기존에 설치된 모든 플러그인/피처를 그대로 활용할 수 있습니다. 이클립스를 몇번 다시 다른 위치에 설치하더라도 말이죠.

How To

기존 이클립스 설치를 Extension으로 변경

  • 이클립스 설치 디렉토리로 간다.
  • .eclipseproduct를 복사하여 .eclipseextension이라는 파일을 생성한다.
  • .eclipseproduct 파일의 이름을 .eclipseproduct.bak로 변경한다.

새로 설치할 버전의 이클립스의 압축을 어딘가 다른 위치에 푼다.

Help > Software Updates > Manage Configurations 메뉴를 선택한다.

오른쪽 트리에서 최상위 Product 노드를 오른클릭하고 Add > Extension Location… 선택 (또는 오른쪽에 보이는 Add an Extension Location 링크를 클릭)
200802250343.jpg

디렉토리 선택 대화창에서 Extension으로 변환된 기존 이클립스 디렉토리를 선택

이제 재시동 여부를 물어보면 바로 이클립스를 재시동합니다. 확실하게 하려면 재시동하기 전에, 추가된 Extension에서 기존의 Eclipse SDK 피처를 disable시켜 주세요. 물론 이클립스 시동시 기존 버전은 자동으로 disable되긴 합니다.

설치 및 설정이 완료되면 다음과 같이 Eclipse SDK Installation과 기타 플러그인/피처 Installation이 분리됨을 볼 수 있습니다. 물론 실행은 SDK의 버전이 올라간 것을 제외하고는 기존과 똑같이 됩니다. 윈도우처럼 레지스트리를 쓰는 것도 아니고 바뀐 게 딱 그것 뿐이니까요. 이러한 구성 정보는 워크스페이스가 아니라 eclipse/configuration에 저장된다는 점을 유의하세요. 워크스페이스 바뀐다고 플러그인을 못쓰면 큰일나는 거니 당연한 것이지만, 제 경우 자꾸 configuration의 존재에 대해 잊어버리곤 해서 워크스페이스 바꾸면서 제대로 실행안되면 어쩌나하고 순간 당황했습니다. ^^ 물론 플러그인 개발자 입장에서는 configuration이야 어찌되던 상관없이 실행이 되야 하니 아예 머리 속에서 지우는 것도 좋습니다만.

200802250446.jpg

다음은 새로운 이클립스 버전이 설치된 과정이 요약된 로그입니다.

200802250354.jpg

Conclusion

이후로는 이클립스 본체를 새로 설치할 때마다 부가 플러그인을 매번 다시 설치할 필요가 없습니다. 압축 풀고 Extension 추가하고 기존 워크스페이스 열면 전과 똑같은 환경을 사용할 수 있을 것입니다. 아예 처음 설치할 때부터 별도의 Extension 디렉토리를 만들어두고 설치하면 좋겠지만.. Software Updates에서 외부 Extension에 설치하도록 하는 방법은 아직 못찾았습니다. 바로 Extension 디렉토리에 설치하는 방법도 찾았습니다. 다운로드를 시작하기 직전의 Install 대화창에서 Change Location…이 있네요.

Extension 디렉토리에 설치된 플러그인/피처에 대한 업데이트는 아직 테스트해보지 않았지만 잘 될 것으로 생각됩니다. 만약의 경우를 대비하여 남겨둔 .eclipseproduct.bak가 있으니 추가 플러그인을 설치하거나 할 때는 .eclipseproduct를 복원하여 해당 이클립스에서 플러그인들을 추가 설치할 수도 있습니다.

여러 이클립스 버전을 사용하거나 구성 상의 문제로 이클립스를 여러곳에 설치하는 분이라면 더욱 유용하게 활용할 수 있을 것으로 생각됩니다. 기본적인 사용법을 예로 들었지만 활용방법은 더욱 많을 것입니다. 예를 들면 버전 별 또는 관련 작업에 따라 Product Extension을 만들어 두고 팀끼리 공유하면서 그때그때 골라쓰는 방법 등이 있을 듯 합니다. 더 유용한 사용법을 찾으신 분은 꼭 공유해주세요.

References

1년 전에도 관련 자료 링크를 블로그에 올렸었는데 그때는 그냥 저런 것도 있구나 했다가.. 막상 절실히 필요해지니 이제서야 제대로 써봤네요. 생각했던 것처럼 Tikal같은 멋진 업데이트 관리자가 나오긴 했으나, 마일스톤 버전을 써야하니 다 소용없습니다. 그리고 왠지 지우고 까는 거에도 너무 익숙해져 버린 느낌입니다. 더 자세한 내용은 관련 링크 참고하세요. eclipse extension이라는 검색어로는 extension point만 잔뜩 나와서 찾기가 쉽지 않습니다. ^^

  1. 플러그인 링크

    Install Eclipse Plugins – The Easy Way을 참고하라. 기존 설치 방법의 장단점도 잘 설명하고 있다.

  2. Eclipse Extension

    배포판에 주로 쓰이는 기능이지만 직접 Eclipse Extension(확장형 배포판)을 만드는 것도 매우 쉬운 일이다. Managing Plugins in Eclipse을 참고하라.

Eclipse

Comments (1)

Permalink

깔끔한 테마와 레몬펜 설치

이클립스 스러운 리치한 테마를 만들어보려고 좀 복잡한 구성의 테마를 사용하고 있었습니다만.. 포토샵 공부할 시간이 없어서 그냥 원래 취향대로 깔끔한 테마를 다시 설치했습니다. Friend of Eclipse 로고도 박구요. ^^ IE6에서는 투명 PNG 버그 때문에 좀 이상하게 보이지만.. 그냥 무시했습니다.

테마 변경하는 김에 레몬펜도 설치해보았습니다. 덧글은 눈에 잘 안띄는데 레몬펜은 잘 보여서 좋네요!

General

Comments (2)

Permalink

[dw리뷰]XMLBeans에서 이벤트받기

원문기사: http://www.ibm.com/developerworks/kr/library/x-xmlbeanse/

요즘 developerWorks에 이클립스 플랫폼 관련기사가 뜸하여 이래저래 뒤지다보니 신기하게도 XML 카테고리에서 이클립스 RCP 애플리케이션 예제를 발견했습니다. 아쉽게도 아직 번역이 안되어 있습니다만.. 거의 코드 위주의 기사이니 보시는 데 원문으로 보셔도 부담은 없을 것 같습니다.

GEF로 그래피컬 에디터를 작성할 때 모델의 필수 요구사항 중 하나가 변경 사항(change event)를 알려주는 것(notification)입니다. EMF와 GEF를 연동하는 목적 중 하나도 EMF가 변경 사항 리스너 지원을 충실하게 해주기 때문입니다. 사실 꼭 GEF가 아니더라도 모델의 change event를 전파하는 것은 MVC 아키텍처의 기본이지요.

기사는 XMLBeans를 이용하여 생성된 POJO 모델을 커스터마이징하여 변경 사항을 알려주는 기능을 추가하는 과정입니다. EMF를 사용하기엔 좀 부담스러운 경우에 활용할 수 있을 듯 합니다. 덤으로 (아주 가벼운) RCP 예제, 그것도 게임이라니 정말 반가운 예제네요!

sudoku_screenshot.jpg

RCP 기반으로 작성된 예제 게임 Sudoku <출처: IBM developerWorks>

Eclipse
dW Review

Comments (0)

Permalink

[dw리뷰]Rich Ajax Platform 튜토리얼 파트2

원문기사: http://www.ibm.com/developerworks/kr/library/os-eclipse-richajax2/

지난번에 소개드렸던 RAP 튜토리얼의 후속 파트 번역이 올라왔네요. RAP에 대해 아쉽게 생각했던 부분을 정확히 짚어주는 후속 기사입니다. 파트 1에서는 RCP와 RAP에서 얼마나 비슷하게 구현가능한지, 공통된 코드를 사용할 수 있는지 강조했다면, 파트 2에서는 RCP와 RAP가 다른 플랫폼임을 명확히 하고 RAP에서 웹의 특성을 살려 커스터마이징할 수 있는 부분을 설명하고 있습니다. 이 두 기사를 연결해보면 RCP와 RAP는 명백히 서로 다른 플랫폼이며 운영환경도 다르지만, 코어 아키텍처를 동일하게 유지함으로써 공통된 코드를 최대한 재활용하면서 각 운영환경에 맞춰 커스터마이징할 수 있는 전략을 제시합니다.

결국 RAP는 RCP의 단순한 복제품이 아니라 플러그인 아키텍처와 이클립스 워크벤치 UI의 장점을 최대한 흡수한 별도의 웹 애플리케이션 플랫폼입니다. 웹 애플리케이션 플랫폼이다 보니 태생적으로 다중 사용자 환경을 고려해야 한다는 점이 RCP와 가장 큰 차이입니다. 즉 RAP는 UI 코드(org.eclipse.ui 기반 확장)를 RCP와 최대한 공유하면서, 단일 사용자를 위한 워크스페이스 대신 다중 사용자를 위한 DB 등에 저장된 데이터 모델을 핸들링하는 코드를 추가로 구현해야 합니다. 또한 SWT를 대체하는 RWT는 테마나 웹 위짓 등으로 확장할 수 있습니다.

fig1.gif
RAP와 RCP 비교 <출처: IBM developerWorks>

사실 UI 코드(그나마도 워크벤치 기반) 이외에는 플랫폼 차원에서 공유하도록 지원하는 것이 많지는 않지만, 플러그인 아키텍처를 활용하여 기반 라이브러리 등을 공유하고 워크스페이스와 DB 의존 코드를 추상화하여 작성한다면 상당부분 RCP와 동일한 아키텍처를 유지하는 웹 애플리케이션을 개발할 수 있을 것으로 생각합니다.

다음은 기사에서 소개하는 RCP/RAP 애플리케이션 코드 공유 전략입니다.

양 측에서 실행되는 애플리케이션 구축하기
RAP가 RCP는 아니지만, RAP와 RCP 애플리케이션 간 많은 코드를 공유할 수는 있다. 이를 위해서, RAP와 RCP에 사용될 수 있는 UI 코드를 포함하고 있는 베이스 플러그인으로서 작동할 한 개의 플러그인을 갖는 것이 권장된다. MANIFEST.MF에 Import-Package를 사용하여 의존성을 만족시킨다. 이렇게 하면 베이스 플러그인이 RAP 또는 RCP의 패키지를 사용할 수 있다. 특정 구현에 얽매이지 않는다. 베이스 플러그인을 설정한 후에, 두 개 이상의 플러그인을 갖추고, 하나는 RAP 스팩 코드에, 다른 하나는 RCP 스팩 코드에 사용한다. 마지막으로, 두 개의 워크스페이스를 갖추어서, 하나는 대상 플랫폼을 RAP용으로 설정하고, 다른 대상 플랫폼은 RCP용으로 설정한다. 향후에는, 이것이 RAP와 RCP에서 실행될 코드를 작성하기가 더욱 쉬워질 것이다.

UI 코드 공유만 가능함을 명확히 하니 약간 김빠지는 느낌이 있긴 하지만, 웹 애플리케이션 개발에서 가장 귀찮은 부분인 UI를 친숙한 이클립스 워크벤치 UI로 해결해주고 OSGi 기반의 아키텍처를 제공하며 테마, 위짓까지 활용할 수 있으니 정말 매력적인 웹 애플리케이션 플랫폼일 것 같지 않나요?

Eclipse
dW Review

Comments (0)

Permalink

EIZO FlexScan HD2441W

현재 살고 있는 집으로 이사온 이후로 다소 넓어진 덕에 쉬거나 놀기 위한 장비는 상당히 들여놨습니다만, 변변한 책상조차 없다 보니 낮은 테이블에서 웹 서핑 좀 하다보면 피곤해져서 번역이나 심심풀이 코딩에 한동안 소홀했습니다. (물론 게을러서기도 하지만.. 그럴수록 좋은 환경이 필요합니다!)

이 때문에 개인적인 업무 환경 개선 프로젝트를 시작했습니다. 역시나 가장 중요한 것은 책상과 의자입니다만.. 요즘 노트북 화면을 오래 보다보니 눈에 문제가 생기는 듯 하여 모니터를 최우선으로 잡았습니다. 책상과 의자는 일본에 있을 동안만 쓸 거다보니 선뜻 투자하기는 좀 아까워서요.

그런데 일본이 모니터가 꽤 비싸더군요. 우리나라처럼 저렴하고 괜찮은 스펙으로 내놓는 중소기업들이 없어서 그런지, 아니면 패널을 다 좋은 것만 쓰는 건지 24인치 모니터 쓸만한 거다 싶으면 9만엔 이상 됩니다. 심지어 우리나라에서는 77만원에 팔고있는 DELL 2707이 여기서는 무려 128,000엔이나 합니다. 환율도 올랐는데 말이죠. 나중에 A/S를 생각해서 LG나 삼성걸 살까도 했으나 패널 부족으로 아무거나 막쓴다는 얘기가 많은데다 일본 가격이 조금씩은 비싸서 웬지 아까운 생각에 망설여지고…

그때 눈에 뜨인것이 EIZO FlexScan HD2441W였습니다. EIZO 모니터가 좋다는 얘기는 들었지만 기껏해야 띄우는게 웹브라우저 아니면 이클립스인 저에게 디자이너용 고급 모니터와는 인연이 없다 생각하여 염두에도 두지 않았습니다만.. 한국에서 보던 가격(180만원)보다 훨씬 쌌습니다(포인트 빼면 11만엔)! 그래도 다른 모니터들보다는 비쌌지만 아주 크게 차이나지는 않았습니다. 비꾸카메라 현장에서 실물을 직접 보니 다른 것들과 확실히 화질(?) 차이가 있더군요. 베젤 디자인은 썩 좋아보이지는 않습니다만… 맘을 굳히고 바로 업어왔습니다.


EIZO FlexScan HD2441W

사실 LCD가 화질차이가 있어봐야 얼마나 있겠냐 했는데 색감이 화사하니 그냥 텍스트 에디터만 봐도 편안한 느낌이 드네요! 컴포넌트 단자가 없어서 PS2 연결은 안되지만 HDMI가 있어서 향후 PS3 연결은 할 수 있습니다. 며칠 써보니 더욱 맘에 드네요~ 높이를 조절하면 각도도 같이 바뀌는 바람에 높이조절이 자유롭지 않은 정도가 아쉬운 점입니다. HDMI를 지원하므로 오디오를 지원하긴 하지만 스피커는 외장 스피커로 연결하도록 되어 있습니다. HDMI를 지원하지 않는 디바이스에 연결할 수 있는 Line-in이 없어서 아쉽다 했더니 USB Audio를 지원하네요! 특이한 점이긴 합니다만 어차피 USB 허브 때문에 연결하는지라 따로 Line-in 연결하는 것보다 더 편리합니다.

근데 dell 한국 사이트 가보니 30인치가 102만원이군요.. 무슨 할인을 84만원이나 하나요.. 한국이었다면 30인치를 살 수도 있었겠네요 흑.. 30인치는 맥 프로와 함께 노려야 겠습니다. 좋은 모니터 지름을 허락해준 와이프에게 감사드리며.. 이젠 맥 프로를 위한 공작에 돌입해야겠습니다. 아무리 맥북 프로라도 노트북이다보니 좀 허전하죠.. 아니 솔직히 맥북 프로로도 충분하지만 애플 유저들이 다 그렇듯 맥 프로는 꼭 써보고 싶습니다 ^^

예산을 한참 오버해서 모니터를 장만한 결과 책상 예산이 더욱 줄어서.. 일단 접이식 책상+의자 세트 3800엔짜리를 사왔습니다. 책상+의자 가격이 모니터의 1/30이라니 좀 심하죠 =,.= 책상 위에서 키보드를 치면 모니터까지 흔들려서 기껏 좋은 모니터 산 보람도 없이 눈이 아픕니다.. 의자는 더 심해요 지금까지 의자만큼은 좋은 걸로 썼었는데 이건 10분 앉으면 엉덩이가 아픕니다-_- 방에 뭔가 더 놓을 공간이 마땅치 않아 책상을 망설이고 있는데 아무래도 책상도 하나 들여야할 것 같네요. (이후 IKEA에서 5000엔짜리 책상 주문했습니다. 가격은 비슷해도 훨씬 좋아요!)

IMG_3368.JPG IMG_3374.JPG

역시 책상이 좀 그렇죠? 주문한 책상,의자만 오면 개인업무환경이 많이 개선되어 번역과 플러그인 개발을 좀 더 열심히 할 수 있을 것 같네요. (에이콘 분들 보시라고 쓴 건 아니에요^^핫핫)

Gadgets

Comments (4)

Permalink