Perspective

이클립스 워크벤치에서 perspective라고 하는 것은 툴바와 메뉴에 위치하게될 action들의 사용여부와 view의 초기 레이아웃을 정의하는 역할을 담당한다. 아래의 그림의 우측상단에 VICODE라고 선택되어 있는 부분이 바로 perspective를 의미한다.


이클립스에 기본적으로 제공되는 perspective가 몇가지 있다. Java를 선택하면 자바 어플리케이션을 개발하는데 필요한 action이 메뉴와 툴바에 나타날 것이고, Debug를 선택하면 디버깅을 위한 view들이 화면에 배치되는 것을 확인할 수 있다.

따라서 특정 목적(VICODE의 경우 임베디드 시스템 개발)을 가지는 개발환경을 이클립스에서 구현한다면, 이에 해당하는 action들만을 메뉴나 툴바에 나타내고 특정 정보를 화면에 보여주기 위한 view를 원하는 레이아웃에 따라 배치하고 싶을 것이다.

VICODE perspective를 선택했을 때를 살펴보면, Project 메뉴 아래에 필자가 여기저기서 주워와서 갔다 붙인 조악한 툴바 아이콘을 볼 수 있고 화면의 하단에는 따로 만들어서 추가한 Log, Result view가 존재하는 것을 알 수 있다. 이와 같이 perspective는 플러그인이 제공하는 특정 개발 환경을 정의하는 역할을 한다.

개념의 대한 설명은 여기서 마치고 구현방법을 소개하자면,
다음과 같이 org.eclipse.ui.perspectives 확장점을 이용한다.  

  <!– VICODE Perspective –>
  <extension
        point=”org.eclipse.ui.perspectives”>
     <perspective
           class=”edu.kaist.vicode.perspective.PerspectiveFactory”
           fixed=”true”
           icon=”icons/jdg2eProd.gif”
           id=”edu.kaist.vicode.perspective”
           name=”VICODE”/>
  </extension>

PerspectiveFactory.java의 내용은 다음과 같다.

package edu.kaist.vicode.perspective;import org.eclipse.ui.IFolderLayout;
import org.eclipse.ui.IPageLayout;
import org.eclipse.ui.IPerspectiveFactory;
public class PerspectiveFactory implements IPerspectiveFactory {
public static final String ID_VICODE_ACTIONS = “edu.kaist.vicode.actionset”;
public static final String ID_VICODE_PROJECT_WIZARD =
  “edu.kaist.vicode.projectwizard”;
public static final String ID_VICODE_MODULE_WIZARD =
  “edu.kaist.vicode.modulewizard”;
public static final String ID_VICODE_LOG_VIEW = “edu.kaist.vicode.logview”;
public static final String ID_VICODE_RESULT_VIEW = “edu.kaist.vicode.resultview”;

public void createInitialLayout(IPageLayout layout) {
// Navigator
layout.addView(IPageLayout.ID_RES_NAV, IPageLayout.LEFT, 0.20f,
  IPageLayout.ID_EDITOR_AREA);
// Bottom : Another folder area, to stack additional views
IFolderLayout bottom = layout.createFolder(“bottom”,
  IPageLayout.BOTTOM, 0.8f, IPageLayout.ID_EDITOR_AREA);
bottom.addView(ID_VICODE_LOG_VIEW);
bottom.addView(ID_VICODE_RESULT_VIEW);
bottom.addView(IPageLayout.ID_PROBLEM_VIEW);

// Add Outline View
layout.addView(IPageLayout.ID_OUTLINE, IPageLayout.RIGHT, 0.80f,
IPageLayout.ID_EDITOR_AREA);
   
// Add new wizard shortcut
layout.addNewWizardShortcut(ID_VICODE_PROJECT_WIZARD);
layout.addNewWizardShortcut(ID_VICODE_MODULE_WIZARD);

// Add our actions
layout.addActionSet(ID_VICODE_ACTIONS);
}
}

위의 VICODE perspective가 선택된 화면과 소스코드를 비교해보면 이해하기가 수월 할 것이다. createInitialLayout() 메서드에서 넘어온 IPageLayout 인스턴스를 이용하여 레이아웃을 지정할 수 있다. 차례로 왼쪽의 Navigator를 추가하고 하단에 3개의 view를 추가한다. 그리고 우측의 Outline view를 정의한 후 추후에 다루게 될 마법사를 추가한다. 마지막으로 action에서 다루었던 action set을 추가한다. action set의 visible 속성이 false로 지정되었다면 이렇게 perspective에서 추가해주어야만 화면에 나타나게된다. 모든 것의 참조는 plugin.xml에서 정의한 ID로 이루어진다.

물론 이미 존재하는 perspective에 자신의 view나 action을 추가할 수 있는데 (JDT를 확장하는 경우) 이럴 때는 org.eclipse.ui.perspectiveExtensions 확장점을 이용해야 한다.

지름신

대부분의 남자들은 여자들에 비해서 평소에 돈을 쓸일이 많지 않다. 그러나 짧지 않은 시간동안 쓴 돈을 모아보면 결코 적지 않은 것은 주기적으로 지름신이 강림하시기 때문일 것이다. 나 역시 대학생일 때 과외를 해서 쏠쏠히 벌었던 돈이 다 어디로 갔는가에 대해서 생각해보면 컴퓨터를 비롯해 온갖 전자기기를 사는데 쏟아부었던 것 같다.

이번달은 랩비지급도 추석이후로 늦춰지고, 쌍춘년의 여파로 적잖은 축의금과 그 밖에 졸업앨범비와 같은 예상치 못한 지출이 발생하며 CMA계좌 잔고가 20만원대를 기록하고 있다. 그런데도 불구하고 지름신이 강림하시려고 한다. 요즘 사고 싶다는 생각이 드는 물건은 바로 이녀석!

아이팟 나노 2세대

오늘 쥬크온에서 MP3 한곡에 10원 상품권을 구입했고, 이미 CD로 주문해놓은 이승철 8집을 다운받았다. 320 kbps로 다운받을 수 있어서 역시 음질이 좋았고, 이승철 8집의 노래는 더욱 좋았다. 실제 CD는 다음주에나 도착할 것이기에 구입한 mp3를 쥬크온 플레이어에서 음악 CD로 구워서 듣게 되었는데, 컴퓨터로 들을 때와는 전혀 다른 느낌. 똑같은 헤드폰을 쓰고 듣고 있는데도 풍부한 음량과 타격감은 감동을 선사하기에 충분. 어차피 320 kbps 정도의 샘플링 레이트라면 사람이 듣기에 음질의 손상은 없을테고 기기가 들려주는 음색의 차이가 아닐까? 따라서 나의 CDP를 아끼고 사랑하는 것으로 지름신을 외면해보아야겠다.

 

Google Notebook

다른 사람의 블로그를 구경하다가 깜짝 놀랐다. 구글 노트북?  차분히 글을 읽어보니 구글랩에서 새롭게 개발한 웹페이지 스크랩을 위한 서비스의 이름이였다. 구글의 직원들에게는 자신이 맡고 있는 일 이외에 새로운 아이디어로 하고 싶은 일을 도전해볼 수 있는 시간이 주어진다고 하는데, 이렇게 시도되는 여러가지 서비스가 우리를 즐겁게 하고 있다.


웹서핑을 하다보면 두고두고 다시 읽고 싶은 좋은 글들을 만날 때가 많은데 막상 이를 어떻게 보관해야할지 막막하다. 지금까지는 네이버 블로그에 저장해두었는데 이제는 해당내용을 긁고 오른버튼 눌러서 나오는 Note this 버튼을 누르는 것으로 간단히 보관할 수 있게 되었다.

익스플로어나 불여우에 플러그인 형태로 설치되며 사용법은 매우 간단하다. 처음 플러그인을 설치하면 스크랩 방법과 열람하는 방법을 간단히 설명해준다. 구글 UI의 매력은 무엇보다도 단순함과 실용성에 있다는 것을 다시 한번 느끼끼게 해주었다. 웹서핑 중 만나는 간간히 보관하고 싶은 문서가 있는 분들은 도전해보시길.

http://www.google.com/notebook/

백전백패

나의 생활 패턴은 점차 과거로 회귀하고 있다. CD로 음악을 듣고, TV를 보기 보다는 책을 읽고, 컴퓨터 보다는 손으로 글을 쓰는 것에 만족을 느낀다. 이에 흐름을 같이하여 놀이문화(?)에도 변화를 시도하기로했다. 그래서 선택한 것은 바둑! 선택의 이유는 바둑이 여러가지로 도움이 많이 된다는 생각이 들었기 때문이다. 특히나 산만한 나에게는 집중력의 측면에서!

즐길 줄 알려면 배워야 한다. 바둑의 룰은 어렸을 때 동네 친구들과 땅바닥에 앉아서 장기, 오목 둘 때 어렴풋이 배워두었다. 하지만 룰만 알고 바둑을 두면 ‘바둑돌따먹기’ 게임이 되기 쉽다는 것은 바둑을 처음 두어본 사람은 누구나 경험했을 것이다.

시간나는대로 틈틈히 온라인 강좌를 보며 감을 잡고 있다. 돌을 움직이는 방법인 ‘행마’와 초반의 세력을 구축하는 ‘포석’, 생사를 가늠하는 ‘사활’ 등등. 어설프게 스스로 배워나가며 온라인에서 대국을 즐기고 있는데 아직 이긴적이 없다. 공부한 것들을 실전에 적용하기란 쉽지 않으나 조금씩 바둑판을 넓게 바라보는 안목이 생기는 것 같다.

이번 추석 연휴에는 바둑의 기본을 닦을 수 있는 시간을 갖으려고 한다. 셀 수 없이 많은 전략이 존재하는 바둑이라는 게임이야 말로 제대로 즐기는 법만 터득한다면 그 어떤 컴퓨터 게임보다 재밌지 않을까?