'Eclipse'에 해당되는 글 10건
- 2010/01/03 이클립스에서 안드로이드 소스 코드 보기
- 2009/12/26 [eclipse] Smart Compare 플러그인
- 2009/12/06 [eclipse] Open External Plug-in
- 2009/12/06 [eclipse] Multi-File History Plug-in
- 2009/12/06 [eclipse] Multi-File History 플러그인
- 2009/12/06 [스크린캐스트] 자바 개발자를 위한 이클립스 3.4 가니메데
- 2009/12/06 플러그인 스파이(Plug-in Spy)
- 2009/12/06 Eclipse 애플리케이션에서 웹 브라우저 띄우기
- 2009/12/06 Snow Note
- 2009/12/06 eclipse 셀렉션 서비스 사용 주의사항
이클립스에서 안드로이드 소스 코드 보기
안드로이드 SDK는 기본적으로 소스 코드와 함께 배포되지 않고 있기에 이클립스 안에서 사용하는 API의 코드를 볼 수 없습니다. 개발 과정에 직접 소스를 보면서 작업하려면 적어도 애플리케이션 개발자가 직접 사용하는 자바 API 수준에서는 함께 배포하면 좋을텐데 말이지요. 이클립스를 깊게 사용하는 분이라면 알고 있을 라이브러리에 소스를 링크해주는 기능도 android.jar 파일에 대해서는 꺼져있습니다.
이 문제를 다루고 있는 이슈가 등록되어 있으니 불편함을 느꼈다면, 여기서 알아볼 번거로운 작업을 피할 수 있도록 되길 바라며 왼쪽 상단의 별표를 체크하기 바랍니다.
방법 1
검색하면 몇 가지 방법이 나오는데 그 중에서 가장 쉽게 설명하고 있는 글을 참조해서 소개합니다. 컴퓨터에 Git이 설치돼 있어야 합니다.
- > git clone git://android.git.kernel.org/platform/frameworks/base.git android-sources
- > cd android-sources
- > git branch -r
- origin/HEAD -> origin/master
origin/cdma-import
origin/cupcake
origin/cupcake-release
origin/donut
origin/donut-plus-aosp
origin/donut-release
origin/eclair
origin/master
origin/release-1.0
자신이 소스를 연결하려는 브랜치나 태그를 체크아웃 받습니다. 저는 안드로이드 2.0을 이용하고 있으니 origin/eclair를 체크아웃 받았습니다.
- > git checkout origin/eclair
마지막으로 SDK가 설치된 경로에 체크아웃 받은 안드로이드 소스를 심볼릭 링크로 연결해줍니다.
- > cd <안드로이드 SDK 경로>/platforms/android-2.0.1
> ln -s <소스 코드 경로>/android-sources sources
이제 이클립스를 실행하고 소스 코드가 잘 연결되었는지 확인해봅니다.
방법 2
이클립스에서 소스 좀 보려고 Git까지 공부해서 설치하기 싫다면, 누군가 이미 올려둔 소스로 연결하는 방법이 있습니다. 이 문제에 대한 이슈 페이지 하단에 가면 rjgruet라는 사용자가 올려둔 2.0 소스 코드의 압축본이 있습니다. 다만 이런 링크는 언제라도 깨질 수 있습니다.
이제 안드로이드 SDK 설치 경로로 가서 하위에 sources 폴더를 만들고, 내려 받은 파일을 해당 폴더에 압축 해제합니다. 그리고 이클립스를 실행하고 소스 코드가 잘 연결되었는지 확인하면 됩니다.
이 글은 스프링노트에서 작성되었습니다.
'개발 이야기' 카테고리의 다른 글
| 이클립스 코드 흉내내기 (0) | 2010/02/21 |
|---|---|
| 이클립스에서 안드로이드 소스 코드 보기 (0) | 2010/01/03 |
| [eclipse] Smart Compare 플러그인 (0) | 2009/12/26 |
| [Mac] Hex Color Picker (0) | 2009/12/06 |
| 이클립스 플러그인 개발 시작하기 (2) | 2009/12/06 |
| me2DAY for Android 릴리스 (2009/06/11) (2) | 2009/12/06 |
[eclipse] Smart Compare 플러그인
이클립스에서 이름으로 파일을 찾아서 비교해주는 Smart Compare 플러그인을 공개합니다. 개인적인 용도로 만들어서 사용하다 정리해서 공개합니다.
필요한 이유?
동일한 프로젝트의 두 브랜치에서 동시에 작업하고 생각해보세요. 둘 중 하나의 최신 내용이라도 버전 관리 시스템에 들어있다면 저장소의 리소스와 비교하는 게 가장 빠릅니다. 그런데 둘 다 동시에 작업하고 있고 작업 중인 내용을 서로 비교해야 한다면 어떻게 하나요?
개인적으로는 두 브랜치의 소스 트리를 쭉 펼쳐놓고 해당 리소스를 서로 찾은 다음 Compare With > Each Other를 이용해서 비교했습니다. 바로 그림1과 같이 두 리소스를 비교할 수 있지만, 패키지 구조가 복잡해지고 소스 트리가 길어지면 두 리소스를 비교하는 간단한 작업도 엄청 귀찮아 집니다.
그림1. 기존의 리소스 비교 방식
Smart Compare 플러그인은 ...
이름으로 비교 대상을 검색해서 비교하기에 복잡한 소스 트리를 뒤지지 않아도 됩니다. 그림2와 같이 비교 대상을 이름으로 검색하고 비교하려는 리소스를 2개(상호비교)나 3개(기반 리소스와 다른 두 리소스의 비교) 선택하면 바로 그림3과 같이 Compare 편집기를 실행해주는 간단한 플러그인입니다.
Ctrl + Shift + = 단축키를 누르거나 툴바의 아이콘(Open Type 아이콘 옆에 추가됩니다)을 누르면 대상을 검색하는 창이 뜨고, 여기서 이름으로 검색하고 선택한 대상에 대해 비교해주는 편집기를 실행해주는 간단한 사용방식입니다.
처음 만들었을 때는 이름이 같은 두 브랜치간의 리소스를 비교하기 위해서 만들었지만 서로 다른 이름을 가진 리소스를 비교할 필요도 있기에 "이름으로 검색 > 더블 클릭 선택 (이미 검색된 목록에 추가) > 다른 리소스를 이름으로 검색 > 더블클릭 > 검색창 지우기 > 등록된 대상 선택"의 방식으로 이름이 다른 리소스를 비교하는 기능도 추가해 두었습니다. 이 부분은 좀 더 편리하게 비교할 수 있도록 개선할 생각입니다.
그림2. 이름으로 비교 대상을 찾는 Smart Compare 기능
그림3. Smart Compare로 실행시킨 Compare 편집기
설치하기
이클립스를 실행한 후 Help > Install New Software ...를 선택합니다. 여기서 그림4와 같이 새로운 업데이트 사이트로 http://update.pragmatic.kr을 추가합니다. 추가한 업데이트 사이트를 선택하면 그림5와 같이 세 개의 플러그인을 볼 수 있습니다. 세 개의 플러그인을 볼 수 있습니다. 세 번째 Smart Compare Feature를 선탠해서 설치합니다. 위의 두 플러그인은 Multi-File History 플러그인과 Open External 플러그인으로 이번 플러그인을 올리면서 기존의 잘못된 업데이트 사이트 구조도 정비했습니다.
그림4. 업데이트 사이트 추가하기
그림5. Smart Compare 플러그인 설치하기
소스코드
제가 만들어서 공개하는 모든 이클립스 유틸리티 프로젝트의 소스 코드는 구글 코드 호스팅을 통해서 공개하고 있습니다. 이클립스 플러그인 개발 공부에 필요하다면 소스를 받아서 이용하세요.
이 글은 스프링노트에서 작성되었습니다.
'개발 이야기' 카테고리의 다른 글
| 이클립스 코드 흉내내기 (0) | 2010/02/21 |
|---|---|
| 이클립스에서 안드로이드 소스 코드 보기 (0) | 2010/01/03 |
| [eclipse] Smart Compare 플러그인 (0) | 2009/12/26 |
| [Mac] Hex Color Picker (0) | 2009/12/06 |
| 이클립스 플러그인 개발 시작하기 (2) | 2009/12/06 |
| me2DAY for Android 릴리스 (2009/06/11) (2) | 2009/12/06 |
[eclipse] Open External Plug-in
Reveal selected resource(s) in file browser(s) or shell prompt(s).
- Support multiple selections at once.
- Support Mac OS X: "Finder" and "Terminal".
Prerequisite
1. eclipse 3.3 or above
2. Java 5 or above
3. Supported platform: Windows/ Mac OS X
4. License: EPL 1.0
Installation
"Open External" plug-in provides an update site.
First, select "Help -> Software Updates..."
Second, select "Add Site..." and input the location; http://update.eclipsegeek.com http://update.pragmatic.kr.
Thrid, check "Open External" in the newly added update site.
Finally, select "Install..." and complete the installation.
Usage
Select resource(s) such as project(s), folder(s), file(s) to show in file browser(s) or shell prompt(s). According to the operating system, Finder/Terminal or Windows Explorer/Command Prompt menus are shown in the context menu as in figures below.
Depending on the selection, file browser(s) or shell prompt(s) are revealed. Manually opening and moving to complicated Java package is tedious. Now, you can go into it at once.
For the Mac users, it is possible to select whether to open in a new terminal window or to use a tab. (Windows -> Preferences -> Open External)
Plan to Support
- GNOME and KDE desktop is plan to support in the near future.
- Copy the full path of a resource to clipboard
Source Code
Source code for this plug-in is available at http://sourceforge.net/projects/eclipse/ http://code.google.com/p/plug-ins/. It is free to use this code under Eclipse Public License.
Related
이 글은 스프링노트에서 작성되었습니다.
'개발 이야기' 카테고리의 다른 글
| Java에서 AppleScript 실행하기 (0) | 2009/12/06 |
|---|---|
| eclipse 다국어 지원 흉내내기 (0) | 2009/12/06 |
| [eclipse] Open External Plug-in (0) | 2009/12/06 |
| [eclipse] Open External 플러그인 (0) | 2009/12/06 |
| [eclipse] Multi-File History Plug-in (0) | 2009/12/06 |
| [eclipse] Multi-File History 플러그인 (0) | 2009/12/06 |
[eclipse] Multi-File History Plug-in
Multi-File History Plug-in
Eclipse manages change history of resources. And you can see the chagnes of a resource. But, there is no way to trace history among resources. 'Multi-File History' plug-in provides the way to see change orders among resources. With this plug-in, you can easily trace the changes you made.
Prerequisite
- eclipse 3.3 or above
- Java 5 or above
- Supported platform: All platforms
- License: EPL 1.0
Changes
Version 1.0.1
- Integrated with 'History View'
- Replace traditional 'Show Local History' action
- Change its name from 'com.eclipsegeek.history.ui' to 'kr.pragmatic.history.ui'
Installation
Multi-File History plug-in provides an update site.
First, select "Help -> Software Updates..."
Second, select "Add Site..." and input the location; http://update.pragmatic.kr
Thrid, check "Multi-File Local History" in the newly added update site. (Current version of Multi-File History plug-in only supports local history.)
Finally, select "Install..." and complete the installation.
Usage
Basically, its usage is almost same as 'Show Local History' capability. Select 'Team -> Show Local History' in the context menu of Package Explorer. You can select a project or many resources including files and folders.
History View shows changes of selected resources. You can see the order of changes among resources.
Coming Soon
CVS support is under development ... Now it works and stay tuned ...
(2010-01-06: It is too slow to use. Therefore, there will be no CVS support.)
Source Code
Source code for this plug-in is available at http://code.google.com/p/plug-ins/. It is free to use this code under Eclipse Public License 1.0.
Vote
If you will like this plugin, please vote for it! Rate this plugin @ Eclipse Plugin Central
Related
이 글은 스프링노트에서 작성되었습니다.
'개발 이야기' 카테고리의 다른 글
| [eclipse] Open External Plug-in (0) | 2009/12/06 |
|---|---|
| [eclipse] Open External 플러그인 (0) | 2009/12/06 |
| [eclipse] Multi-File History Plug-in (0) | 2009/12/06 |
| [eclipse] Multi-File History 플러그인 (0) | 2009/12/06 |
| [스크린캐스트] 자바 개발자를 위한 이클립스 3.4 가니메데 (0) | 2009/12/06 |
| 자바 개발자를 위한 이클립스 3.4 가니메데 (0) | 2009/12/06 |
[eclipse] Multi-File History 플러그인
다중 파일 히스토리 플러그인(Multi-File History Plug-in)
이클립스에서 기본적으로 제공하는 히스토리 기능이 한 개 리소스의 변경 내역 추적 기능만을 제공하기에 프로젝트나 다수의 파일의 변경 선후 관계를 추적하기가 어렵다. Multi-File History 플러그인은 프로젝트 또는 선택된 리소스들의 변경 내역을 시간 순으로 정리해서 보여주기에 프로젝트나 여러 파일의 변경 내역을 추적하기 용이하다. 특히, CVS나 SVN을 이용하는 경우 커밋과 커밋 사이에 로컬 영역에서의 변경 관리가 쉽지 않은데, 이런 부족함을 채우는데 유용하다.
필요 환경
- 이클립스 버전: eclipse 3.3 이상
- 자바 버전: Java 5 이상
- 플랫폼: 모든 플랫폼
- 라이선스: EPL 1.0
설치하기
Multi-File History 플러그인은 이클립스 업데이트 시스템을 이용해서 설치한다.
- 먼저 Help -> Software Updates...를 선택한 다음 Add Site...를 선택해서 http://update.pragmatic.kr을 등록한다.
- 추가된 업데이트 사이트에서 Multi-File Local History를 선택하고 Install...을 선택해 설치를 완료한다. (현재 버전은 다중 파일에 대한 로컬 히스토리 기능만을 제공한다.)
사용법
1. 기본적인 사용법은 기존의 Local History 기능과 비슷하다. Package Explorer의 Team 메뉴에서 Show Local History on Multiple Files를 선택한다. 기존의 로컬 히스토리 기능은 하나의 리소스를 선택한 경우에만 활성화 되었지만 다중 파일 기능은 프로젝트, 폴더, 다수의 리소스를 선택한 경우에도 활성화된다. 이때, 프로젝트나 폴더를 선택하면 하위에 포함된 모든 리소스가 대상에 포함된다.
2. Multi-File History 뷰에 여러 파일에 대한 변경 내역이 표시된다. 여러 파일이 한번에 표현되기에 수정 내역의 선후 관계를 파악할 수 있다.
3. 기존의 히스토리 기능에서 제공하던 주요한 기능인 비교 기능, 내용 가져오기(현재 버전 대체) 기능을 제공한다.
4. 새로운 액션 추가. 여러 파일을 표현하면 한 개 파일의 내역이 여러번 나와서 다른 파일의 수정 내역을 살펴보기 불편할 수 있다. 이를 보완할 수 있는 액션이 추가되었다.
: 토글 액션으로 켜지면 한 개 파일의 수정 내역은 가장 최근 내역 한번만 표시한다. (기본값: 켜짐)
소스 코드
플러그인의 소스 코드는 http://code.google.com/p/plug-ins/에서 받을 수 있다. Eclipse Public License 1.0 라이선스에 따라 자유롭게 이용 가능하다.
투표
플러그인이 마음에 든다면 이클립스 플러그인 센트럴에서 투표해 주세요.
Rate this plugin @ Eclipse Plugin Central
관련 페이지
이 글은 스프링노트에서 작성되었습니다.
'개발 이야기' 카테고리의 다른 글
| [eclipse] Open External 플러그인 (0) | 2009/12/06 |
|---|---|
| [eclipse] Multi-File History Plug-in (0) | 2009/12/06 |
| [eclipse] Multi-File History 플러그인 (0) | 2009/12/06 |
| [스크린캐스트] 자바 개발자를 위한 이클립스 3.4 가니메데 (0) | 2009/12/06 |
| 자바 개발자를 위한 이클립스 3.4 가니메데 (0) | 2009/12/06 |
| Eclipse 3.1 새로운 사항 (0) | 2009/12/06 |
[스크린캐스트] 자바 개발자를 위한 이클립스 3.4 가니메데
IBM 스크린캐스트 이벤트에 지원하고자 이전 포스팅에서 작성한 자바 개발자를 위한 이클립스 3.4 가니메데를 스크린캐스트로 제작했습니다. 처음으로 만들어본 스크린캐스트라 부자연스러운 목소리(녹음된 목소리도 적응되지 않고, 책 읽는 듯한 부자연스러움도 만족스럽지 않습니다. 다음에 만들면 더 자연스럽게 잘 만들 수 있겠지요?) 등 어설픈 부분이 많지만 글로는 설명되지 않는 부분까지 설명이되리라고 기대합니다.
맥(Mac)에서 스크린캐스트를 제작할 때 도움이 될까해서 추가정보를 남깁니다. 동영상 캡처는 SnapzPro, 스크린캐스트 제작(자막과 음성, 화면 구성)에는 iMovie, 동영상을 flv 포맷으로 변환할 때는 VisualHub를 이용했습니다.
덧. 스프링노트의 정책인 것 같은데 태그가 IBM에서 요구한 dW_screencast로 입력되지 않네요. mncast에는 제대로 입력되었으니 일단은 조건은 충복한 것 같습니다.
이 글은 스프링노트에서 작성되었습니다.
'개발 이야기' 카테고리의 다른 글
| [eclipse] Multi-File History Plug-in (0) | 2009/12/06 |
|---|---|
| [eclipse] Multi-File History 플러그인 (0) | 2009/12/06 |
| [스크린캐스트] 자바 개발자를 위한 이클립스 3.4 가니메데 (0) | 2009/12/06 |
| 자바 개발자를 위한 이클립스 3.4 가니메데 (0) | 2009/12/06 |
| Eclipse 3.1 새로운 사항 (0) | 2009/12/06 |
| 플러그인 스파이(Plug-in Spy) (0) | 2009/12/06 |
플러그인 스파이(Plug-in Spy)
Eclipse 3.4 Ganymede에 새로 추가된 플러그인 스파이(Plug-in Spy)를 소개합니다.
원숭이의 흉내내기 원칙 (Monkey See/ Monkey Do)
Eclipse의 기본 철학 중에 "원숭이의 흉내내기 원칙(Monkey See/Monkey Do)"이 있습니다. Eclipse는 소스가 공개된 오픈 플랫폼이기 때문에 마치 원숭이가 사람의 행동을 흉내내서 따라하듯이, 기존에 남들이 작성한 방식을 참조해서 쉽고 빠르게 좋은 해결책을 찾아볼 수 있도록 장려되는 방식입니다.
어디서 부터 시작하지?
여기서 한 가지 문제가 있는데 도대체 내가 보고 있는 지금 이 화면을 구성한 플러그인이 어디에 속하는지 어떤 클래스인지 찾아보는 일이 쉽지 않다는 점입니다. 관련 확장점을 확장한 플러그인을 전부 뒤진다던지, 플러그인 이름에서 연관성을 찾아서 뒤져본다던지 그리 효율적인 방식은 아니었습니다. 바로 얼마전 JUnit의 화면 구성 코드를 참조하려고 먼저 비슷한 이름의 org.eclipse.jdt.junit을 찾고, 그 중에서 다시 뷰를 확장한 코드를 찾아보기 시작했던 기억이 나네요.
실마리를 제공하는 플러그인 스파이
Eclipse 3.4 Ganymede에 포함된 플러그인 스파이는 이런 문제를 한방에 해결해 줍니다. 다음의 두 단계만 따라하세요.
- 먼저 관심 대상 화면을 클릭해서 활성화 합니다.
- 그 다음 SHIFT + ALT + F1을 클릭합니다.
아래 화면과 같이 JUnit의 화면이 포함된 플러그인과 해당 클래스 이름 등을 표시해 줍니다. 짱입니다.
뷰뿐 아니라 에디터, 위자드, 다이얼로그 등에서 사용할 수 있습니다. 정말 원하던 기능이 포함되서 좋아하지 않을 수 없네요. 다만, 아직 액션(Action)의 경우에는 해당 플러그인을 찾는 적절한 방법을 찾지 못하고 있습니다. 혹시 방법을 알고 있다면 댓글이라도 부탁드립니다. 구글 검색에도 잘 나오지 않네요. :)
이 글은 스프링노트에서 작성되었습니다.
'개발 이야기' 카테고리의 다른 글
| 자바 개발자를 위한 이클립스 3.4 가니메데 (0) | 2009/12/06 |
|---|---|
| Eclipse 3.1 새로운 사항 (0) | 2009/12/06 |
| 플러그인 스파이(Plug-in Spy) (0) | 2009/12/06 |
| Eclipse 애플리케이션에서 웹 브라우저 띄우기 (0) | 2009/12/06 |
| Snow Note (0) | 2009/12/06 |
| 사용자 인터페이스(UI) 가이드라인 (0) | 2009/12/06 |
Eclipse 애플리케이션에서 웹 브라우저 띄우기
시스템 브라우저
Eclipse의 Browser 객체를 생성하는 방식이 아니라 시스템의 실제 기본 웹 브라우저를 여는 방식이다.
오픈소스 라이브러리 중에서 BrowserLauncher2와 같이 시스템의 모든 브라우저를 관리하기 유용한 것도 있지만 단순히 간단한 웹페이지를 띄우기 위해서는 eclipse의 방식을 따르고 편리하다.
코드는 ProductInfoDialog에서 발췌했다. Eclipse에서 이용하는 코드이므로 EPL을 따른다.
- // ProductInfoDialog.java
- /** Open a link */
- protected void openLink(String href) {
- // format the href for an html file (file:///<filename.html>
- // required for Mac only.
- if (href.startsWith("file:")) { //$NON-NLS-1$
- href = href.substring(5);
- while (href.startsWith("/")) { //$NON-NLS-1$
- href = href.substring(1);
- }
- href = "file:///" + href; //$NON-NLS-1$
- }
- IWorkbenchBrowserSupport support = PlatformUI.getWorkbench().getBrowserSupport();
- try {
- IWebBrowser browser = support.getExternalBrowser();
- browser.openURL(new URL(urlEncodeForSpaces(href.toCharArray())));
- }
- catch (MalformedURLException e) {
- openWebBrowserError(href, e);
- }
- catch (PartInitException e) {
- openWebBrowserError(href, e);
- }
- }
이 글은 스프링노트에서 작성되었습니다.
'개발 이야기' 카테고리의 다른 글
| Eclipse 3.1 새로운 사항 (0) | 2009/12/06 |
|---|---|
| 플러그인 스파이(Plug-in Spy) (0) | 2009/12/06 |
| Eclipse 애플리케이션에서 웹 브라우저 띄우기 (0) | 2009/12/06 |
| Snow Note (0) | 2009/12/06 |
| 사용자 인터페이스(UI) 가이드라인 (0) | 2009/12/06 |
| eclipse 셀렉션 서비스 사용 주의사항 (0) | 2009/12/06 |
NOTE: 현재 Snow Note는 제대로 동작하지 않고 있습니다. 개인적인 기록을 목적으로 옮겨둔 자료로 앞으로 지원할 계획이 없으니 참고하세요.
2008 대한민국 매쉬업 경진대회에 제출한 Snow Note의 사용설명서입니다.
SnowNote(눈공책)란?
Snownote는 생각이 자라나는 스프링노트를 오프라인에서도 사용하도록 지원하기 위한 매쉬업 어플리케이션입니다. "스프링노트"가 인터넷에 연결된 상태의 따뜻한 봄기운을 연상한다면 "스노우노트"는 인터넷에 연결되지 않은 추운 겨울을 연상해 이름 지었습니다. 오프라인 상의 추운 겨울이지만 "눈 꽃"같은 아름다음을 표현하고 싶었습니다.
Snownote는 사용자의 스프링노트 페이지 전체를 내려받아 인터넷에 접속할 수 없는 어디에서라도 항상 자신이 작성할 글을 볼 수 있고 기존 글의 수정, 새로운 글의 작성을 지원합니다. Springnote와 유사한 사용자 경험을 제공하므로 별도의 학습이 필요 없습니다.
Snownote만의 장점
Snownote를 계획하면서 정리한 기존 Springnote 사용자의 불편함
- 회사에서는 지정된 사이트를 제외한 모든 사이트에 접속할 수 없어요. 집과 회사에서 모두 Springnote를 활용하고 싶어요.
- 외국 출장이 잦아서 인터넷을 사용할 수 없는 환경이 많습니다. 항상 자료를 이용하려면 워드 문서로 저장해놓는 방법뿐이지만 자료를 찾기가 쉽지 않습니다.
- Springnote의 로딩 속도가 너무 느립니다. WikiWiki는 페이지간의 연관관계가 중요하기 때문에 여러 페이지를 자주 옮겨다니는데 페이지간 이동 시간이 너무 길어요.
- Springnote에 한번에 여러개의 페이지를 열어두고 동시에 작업하고 싶은데 마땅한 방법이 없네요.
위의 불편함을 해소하고 Snownote만의 장점을 제공합니다.
-
언제, 어디서도 사용 가능 (오프라인/온라인 어디든 자신의 컴퓨터와 함께라면 사용할 수 있다)
- 빠른 속도 (매번 서버에 자료를 요청해서 처리하지 않기 때문에 인터넷 속도나 현재 스프링노트의 처리속도와는 무관하게 빠른 결과를 보여준다.)
- 여러개의 페이지를 한번에 열어두고 작업할 수 있다.
실행환경
Snownote는 eclipse Rich Client Platform (RCP) 기반의 독립 어플리케이션으로 다음의 환경에서 동작합니다.
- Java 5 (JRE 5 다운로드 하기)
-
주) Java 5부터 지원이 맞지만 매쉬업 경진대회에 제출된 버전은 Java 6로 빌드되었습니다. 시스템에 함께 설치된 Java 6를 이용해서 배포된 걸 확인하지 못했습니다. Java 6를 설치해야 합니다. (Java 6 다운로드 하기)
- 시스템에 다른 자바가 이미 설치되어있어서 Java 6 경로가 설정되지 않는 경우 처리방법: 내컴퓨터 -> (오른쪽 마우스) 속성 -> 고급 -> 환경변수 -> (시스템 변수) 새로만들기/ 이미 있다면 편집 -> 변수이름: JAVA_HOME, 변수값: 자바 6 설치 경로
Snownote는 기존의 많은 단독어플리케이션과는 다르게 Windows 이외의 플랫폼도 지원합니다. 지원플랫폼:
- Windows
- Linux (현재 직접 소스 빌드해서 사용해야 함. 곧 바이너리 제공 예정. http://code.google.com/p/snownote 에서 소스코드 받아서 빌드 후 사용 가능. eclipse 플러그인 빌드 방식을 이해하고 있어야 함.)
- Mac (껌뻑임 등 불안정. 추후 지원 예정.)
다운로드 및 설치
Snownote를 다운로드 설치함은 발생할 수 있는 모든 문제에 대한 책임은 본인이 진다는 것을 의미한다. 즉, Snownote의 문제로 자신의 Springnote 계정의 자료가 의도되지 않은 삭제/변경되는 등의 문제가 발생해도 Snownote와 Springnote에는 아무런 책임이 없음을 의미한다. (이후 모든 과정은 Windows 플랫폼 기준으로 설명한다. 하지만 다른 플랫폼도 거의 동일한 방식으로 실행할 수 있다.)
1. 다운로드
Snownote의 Windows용 압축 파일을 내려받는다. (주: 경진대회 제출버전이 시스템에 설치된 Java 6로 빌드되어 배포되었음. 제출버전으로 테스트하기 위해서는 Java 6를 설치하고 제출버전용을 다운로드한다. Java 5용 버전은 제출버전과 동일(실행 아이콘만 변경됨)한 내용으로 Java 5로 빌드되었다.)
- 매쉬업 경진대회 제출버전 (Java 6로 빌드됨. Java 6설치 필요함): http://pragmatic.kr/snownote_win32_20080210.zip
- Java 5용 버전 (제출버전을 Java 5로 배포한 버전): http://code.google.com/p/snownote/의 Featured Download의 snownote_win32_20080211.zip 파일 다운로드 ( http://snownote.googlecode.com/files/snownote_win32_20080211.zip )
2. 설치하기
Snownote는 별도의 설치과정없이 다운로드 받은 파일의 압축해제 만으로 설치가 끝난다. 설치하고자 하는 경로에 압축을 해제한다.
실행하기
참고) Snow Note의 처음 공개버전은 매쉬업 경진대회에 제출한 버전으로 편의성을 위해서 데모용 Springnote 사용자 계정, Flickr 계정 정보가 등록되어있다. 개인 계정이므로 일반 사용자는 부디 자신의 계정에서 작업하길 바란다.
1. 압축을 해제한 폴더에서 Snownote.exe 파일을 더블클릭한다.
2. 시작화면(Splash)이 나오면서 Snownote가 실행되고 있음을 알 수 있다.
Snownote 실행화면
3. Snownote를 처음 실행하면 사용자 정보를 묻는다.
사용자 정보 입력 다이얼로그
-
오픈아이디: 자신의 Springnote 계정에서 사용하는 ID를 입력한다. (예: http://sakim.myid.net)
-
사용자 도메인: 위의 오픈아이디가로 등록된 Springnote 도메인을 입력한다. (예: sakim)
-
사용자키: Snownote를 사용하기 위해서는 오픈마루의 API센터를 통해서 자신만의 Snownote용 개인키를 발급 받아야 한다. "https://api.openmaru.com/delegate_key/springnote?app_id=2def9265&openid=사용자의_오픈아이디"에 접속해서 발급 받을 수 있다. (예: https://api.openmaru.com/delegate_key/springnote?app_id=2def9265&openid=http://sakim.myid.net)
-
"저장하고 다시 묻지 않기"를 체크하면 다음번 실행시에 사용자에게 다시 물어보지 않는다. 입력된 정보는 어플리케이션이 실행된 후 설정을 통해서 변경할 수 있다.
4. 이제 Snownote가 실행되었다. Snownote는 인터넷에 연결되지 않아도 사용할 수 있지만 최초 한번은 인터넷이 연결된 환경에서 동기화를 수행해야 한다.
5. 동기화가 수행되면 자신의 Springnote 계정에서 모든 페이지와 첨부파일을 다운로드한다. 글과 첨부파일의 수에 따라서 처음으로 수행하는 동기화는 다소 시간이 걸릴 수 있다.
이제 모든 준비는 끝났다. 언제 어디서도 나만의 글을 작성하고 인터넷에 연결되면 "동기화"를 통해 모든 글을 Springnote 계정에 올려 온라인과 오프라인에서 항상 최신의 정보를 유지할 수 있다.
모든 페이지/최근 페이지 화면
동기화되면 좌측 페이지 화면에 모든 페이지를 계층 구조로 볼 수 있는 화면과 최근 페이지(오늘, 어제, 지난 1주, 최근 1개월)를 볼 수 있는 화면에 페이지 목록이 표시된다. Springnote에서 제공하는 방식과 동일하다. (추후 태그 페이지 제공 예정)
편집창 (에디터) 화면
페이지 목록에서 편집을 원하는 페이지를 더블클릭하면 페이지를 편집할 수 있다. 이미 열려있는 페이지인 경우 한번 클릭하면 열려진 에디터 중 해당 페이지가 편집가능한 상태가 된다.
Snow Note의 에디터는 Springnote의 에디터와 유사한 Look & Feel을 제공할 뿐 아니라 WYSIWYG 방식의 지원으로 오프라인에서도 편리한 편집을 지원한다.
첨부파일 화면
에디터에 활성화된 페이지의 모든 첨부파일 목록을 보여준다. 파일의 이름과 종류, 사이즈, 사용자의 컴퓨터에 저장한 위치가 기록된다. 현재 첨부파일 화면에서 제공하는 기능은 새로운 사진을 등록하는 기능 (Flickr로 업로드)과 기존 스프링노트 계정에서 업로드한 사진자료를 본문에 넣는 기능만을 제공한다. 새로운 첨부파일 추가(스프링노트 계정 업로드)와 기존 자료(사진 자료 제외)의 본문에 내용추가 기능은 추후 제공 예정이다.
첨부파일 화면의 팝업 메뉴를 통해서 사진을 본문에 삽입할 수 있다.
Flickr를 통한 사진 업로드 기능은 하단의 Flickr 지원 기능을 참조한다.
페이지 생성하기
모든 페이지 화면에서 오른쪽 마우스 팝업이나 툴바의 새 페이지 만들기 버튼(메뉴 설명 절 참조)을 통해서 새 페이지를 생성할 수 있다. Snownote의 새 페이지 만들기 창은 Springnote를 사용해본 경험이 있다면 쉽게 사용할 수 있도록 비슷한 느낌의 UI를 제공한다. 페이지의 이름, 태그, 페이지 생성 위치를 정할 수 있다. 다른 위치 선택하기를 통해서 쉽게 페이지를 생성하고자 하는 위치를 결정할 수 있다.
Springnote와 마찬가지로 다음의 규칙을 따른다.
-
페이지 이름을 입력하지 않으면 "2008-2-8"의 형식의 날짜를 이름으로 하는 페이지를 생성한다.
-
태그는 선택사항이다.
-
같은 위치에 동일한 이름을 가진 페이지를 만들 수 없다.
새 페이지 만들기 창
아이콘을 통해 쉽게 새로 생성된 페이지임을 알 수 있다 (아이콘별 상태에 대해서는 "페이지 상태"절을 참고).
Snownote에서 새로 생성된 페이지
페이지 제목/태그/위치 수정하기
모든 페이지 화면에서 오른쪽 마우스 팝업이나 툴바의 수정하기 버튼(메뉴 설명 절 참조)을 통해서를 통해서 페이지의 페이지의 제목, 태그, 위치를 변경할 수 있다. 페이지 생성과 동일한 화면을 제공하므로 어려움 없이 변경할 수 있다. 단, 최상위 페이지는 위치를 변경할 수 없으며 옮기려는 페이지가 자신의 하위 페이지일 수 없다 (순환구조 허용 안됨).
드래그 앤 드랍(Drag and Drop) 지원
모든 페이지 화면에서는 드래그 앤 드랍을 통해서 페이지의 위치를 쉽게 변경할 수 있다.
드래그 앤 드랍 화면 (허용하지 않음, 허용 상태, 드랍 후 화면)
다음의 경우는 드래그 앤 드랍이 허용되지 않는다.
- 최상위 페이지의 이동
- 자신의 하위 페이지로의 이동 (순환구조 허용하지 않음)
동기화
동기화는 전체 동기화, 업로드 동기화, 다운로드 동기화의 세 가지 방식을 제공한다. (추후 페이지별 업로드, 다운로드 동기화 지원 예정)
업로드
업로드는 Snownote의 변경 사항을 Springnote에 반영하는 작업으로 다음의 작업을 수행한다.
- 생성(Create): Snownote에서 새로 생성한 페이지를 Springnote에 반영한다.
- 갱신(Update): Snownote
에서 변경한 페이지를 Springnote에 반영한다. - 삭제(Delete): Snownote에서 삭제대상으로 설정한 페이지를 Snownote와 Springnote에서 삭제한다.
다운로드
다운로드는 Springnote로부터 최신 정보를 가져오는 작업으로 다음의 작업을 수행한다.
- 생성(Create): Springnote에서 생성한 페이지를 Snownote에 반영한다.
- 갱신(Update): Springnote에서 변경한 페이지를 Snownote에 반영한다.
- 삭제(Delete): Springnote에서 삭제된 페이지를 Snownote에서 삭제한다. (Under Development)
충돌 해결
현재 버전에서는 별도의 충돌 해결 기법이 적용되지 않는다. Springnote나 Snow Note 중 수정시간이 더 최신인 페이지로 무조건 대체한다. 의도하지 않은 변경이 발생하지 않도록 주의한다. Springnote계정에 의도하지 않은 변경을 생성했다면 변경사항보기에서 돌려두면된다. 추후 버전에서 충돌이 발생한 내용을 사용자에게 알리고 사용자가 비교 후 갱신할 수 있는 방법을 제공할 계획이다.
설정
Windows -> Preferences 메뉴를 통해서 Snow Note의 정보를 설정할 수 있다.
설정화면
- 스프링노트(Springnote) 페이지: 최초로 Snow Note를 실핼할 때 사용자에게 물어봤던 스프링노트 사용자 계정을 편집할 수 있는 기능을 제공한다.
- 플리커(Flickr) 페이지: 사용자의 플리커 API Key와 Shared Secret을 등록하고 인증 받을 수 있다. 여기서 반드시 인증 받아야지만 플리커 서비스를 이용할 수 있다. 플리커 계정은 사용이 허용되면 녹색 글씨로 "사용허용됨"이 표시된다.
- 스노우노트(Snownote) 페이지: 삭제에 대한 경고를 다시 보이지 않기 등 Snow Note 전반적인 사용자 선호를 설정할 수 있다.
- 키배열(Keys) 페이지: 사용자의 키보드 단축키를 취향에 맞게 조정할 수 있다.
Flickr 사진 업로드 하기
Flickr 사진 업로드 기능은 설정 페이지에서 사용자의 플리커 계정이 제대로 등록된 경우에만 동작한다. 새로운 사진의 등록은 첨부파일 화면 우측 상단이 가져오기 버튼을 클릭해서 새로운 사진(현재 그림 파일만 첨부가능)을 가져온 후 마우스 팝업메뉴의 "본문에 넣기" 메뉴를 통해서 사진을 등록하면 다음 동기화 시 사진을 플리커에 업로드하고 이미지 경로도 플리커의 경로로 변경된다.
페이지 상태
SnowNote의 페이지는 아래와 같은 상태를 가진다. 동기화되지 않은 내용은 서버에 반영되지 않은 것이므로 서로 최신의 정보를 유지하기 위해서는 주기적으로 동기화해주는 것을 권장한다. 특히, 현재 SnowNote는 Springnote 서버와 SnowNote에서의 동시 수정을 처리하지 못하므로 동기화되지 않은 페이지를 수정할 때는 주의하자 (충돌해결 절 참조).
| 페이지 아이콘 | 설명 | 상태 |
|---|---|---|
| 최상위 페이지로 삭제나 이동할 수 없다. | 동기/비동기 | |
| Springnote 서버와 동기화된 상태의 페이지. | 동기 | |
| 사용자가 SnowNote에서 생성한 페이지. 동기화되지 않은 페이지. | 비동기 | |
| SnowNote에서 수정된 페이지. | 비동기 | |
| 삭제 예정 페이지. 다음 동기화 시 삭제된다. 동기화 이전에는 삭제를 취소할 수 있다. | 비동기 |
툴바 메뉴와 모든 페이지 화면의 팝업 메뉴
| 아이콘 | 메뉴 | 설명 | 활성화 조건 |
|---|---|---|---|
| |
새로운 페이지 | 선택된 페이지 아래 새로운 페이지를 생성한다. | 항상 |
| |
수정하기 | 선택된 페이지의 제목, 태그, 위치를 변경한다. 단, 최상위 페이지의 위치는 변경할 수 없다. | 항상 |
| |
삭제하기 | 선택된 페이지를 삭제한다. 다음 동기화 시 삭제되며 동기화 이전에는 삭제는 취소할 수 있다. | 선택 페이지가 삭제예정 상태가 아닌 경우 |
| |
모두 삭제하기 | 선택된 페이지와 하위의 모든 페이지를 삭제한다. |
적어도 하나의 하위 페이지가 삭제예정 상태가 아닌 경우 |
| |
삭제 취소하기 | 선택된 페이지의 삭제를 취소한다. | 선택 페이지가 삭제예정 상태인 경우 |
| |
모두 삭제 취소하기 | 선택된 페이지와 하위의 모든 삭제 대상 페이지의 삭제를 취소한다. |
적어도 하나의 하위 페이지가 삭제예정 상태인 경우 |
오류보고/문의
Snownote와 관련된 모든 문의 사항은 김성안 (ccoroom at gmial.com)으로 보내주시면 됩니다.
이 글은 스프링노트에서 작성되었습니다.
'개발 이야기' 카테고리의 다른 글
| 플러그인 스파이(Plug-in Spy) (0) | 2009/12/06 |
|---|---|
| Eclipse 애플리케이션에서 웹 브라우저 띄우기 (0) | 2009/12/06 |
| Snow Note (0) | 2009/12/06 |
| 사용자 인터페이스(UI) 가이드라인 (0) | 2009/12/06 |
| eclipse 셀렉션 서비스 사용 주의사항 (0) | 2009/12/06 |
| eclipse 워크벤치: 셀렉션 서비스 이용하기 (0) | 2009/12/06 |
eclipse 셀렉션 서비스 사용 주의사항
eclipse는 파트(뷰/에디터)간의 약한 결합을 위한 의사소통 수단으로 셀렉션 서비스를 이용합니다. 셀렉션 서비스에 대한 내용은 번역해둔 eclipse 기술문서를 참조하세요.
그런데 셀렉션 서비스를 이용하는데 모든 파트의 선택을 Listen하는지 아니면 특정 파트의 선택을 Listen하는지에 따른 큰 차이점이 있습니다.
예제는 두 개의 뷰를 가진 간단한 eclipse RCP 어플리케이션입니다.
그림1. 예제 어플리케이션
View1은 모든 eclipse 파트의 선택을 Listen하며 View2는 View1에서의 선택만을 Listen하고 있습니다. 예제는 View1 이외의 파트가 View2 뿐이므로 완전히 동일한 행동을 예상하게 됩니다. View1과 View2의 셀렉션 프로바이더 설정과 셀렉션 리스너를 등록하는 코드는 다음과 같습니다.
- // View1.java
- public void createPartControl(Composite parent) {
viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
| SWT.V_SCROLL);
viewer.setContentProvider(new ViewContentProvider());
viewer.setLabelProvider(new ViewLabelProvider());
viewer.setInput(getViewSite()); - // TableViewer의 선택을 외부로 내보내도록 설정
getSite().setSelectionProvider(viewer); - // View1이 eclipse 모든 파트의 선택을 listen하도록 설정
getSite().getPage().addSelectionListener(this); - }
- // View2.java
- public void createPartControl(Composite parent) {
viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
| SWT.V_SCROLL);
viewer.setContentProvider(new ViewContentProvider());
viewer.setLabelProvider(new ViewLabelProvider());
viewer.setInput(getViewSite()); - // TableViewer의 선택을 외부로 내보내도록 설정
getSite().setSelectionProvider(viewer); - // View2가 View1의 선택에 대해서만 listen하도록 설정
getSite().getPage().addSelectionListener(View1.ID, this);
}
자신이 Listen하고 있는 파트에서 발생한 셀렉션을 처리하기 위해 ISelectionListener를 구현한 코드는 View1과 View2 모두 동일합니다. 단순히 자신이 내보낸 셀렉션은 무시하고 셀렉션이 발생한 파트의 이름과 셀렉션 요소를 이름을 콘솔에 출력합니다.
- public void selectionChanged(IWorkbenchPart part, ISelection selection) {
if (part == this) { // 자신이 내보낸 셀렉션은 처리하지 않음
return;
}
IStructuredSelection iss = (IStructuredSelection) selection; - // 셀렉션이 발생한 파트의 이름과 셀렉션 요소를 콘솔에 출력
System.err.println(part.getTitle() + ": " + iss.getFirstElement()); - }
이런 경우 아마도 View1과 View2의 동일한 행동을 예상하겠지만 이에 따른 반응이 다릅니다. 우선 View1과 View2의 출력 결과를 비교하기 위해서 둘 다 Three 요소를 선택했습니다. 아무 요소도 선택하지 않은 경우에도 차이점을 비교할 수 있지만 이전 선택이 영향을 미치는 걸 보이기 위해서 선택했습니다.
그림2. View1과 View2의 초기 선택
여기서 두 뷰 모두 One이라는 요소를 선택해 보겠습니다. View1을 선택했을 때 이를 전달 받은 View2에서 출력하는 내용은 다음과 같습니다.
그림3. View1의 선택에 따른 결과 값
View2를 선택했을 때 이를 전달 받은 View1의 출력 결과는 다음과 같습니다.
그림4. View2의 선택에 따른 결과 값
무언가 차이점을 발견했는지요? View2는 View1만을 Listen하고 있기에 현재선택(One)만을 전달 받았지만 모든 파트의 셀렉션을 Listen하고 있는 View1의 경우 View2의 이전 선택(Three)과 현재 선택(One) 모두를 셀렉션으로 전달 받습니다. 대부분의 경우 셀렉션을 전달받은 파트가 빠르게 반응하기 때문에 이전 셀렉션이 전달된다는 사실을 알 수 없습니다. 하지만 셀렉션을 전달받아 수행하는 작업이 무거운 작업이라면 두 번의 셀렉션이 전달되는 건 얘기치 못한 성능상의 문제점을 야기할 수 있습니다. 저 역시 셀렉션이 전달되면 애니메이션 효과를 보여주는 동작을 취하다가 두 번 그려지는걸 보고서 발견했으니까 말이지요. 현재로서는 이런 경우에는 특정 파트를 Listen하게 하는게 해결책입니다.
eclipse가 내부적으로 전체 리스너의 목록과 각 파트별 리스너의 목록을 별도로 관리하면서 발생하는 상황으로 생각이 되지만 정확한 원인은 모르겠습니다. 예전에 eclipse 버그질라에 포스팅 했었지만 빈약한 영어 문장 때문인지 아무런 응답도 받지 못했습니다. 3.3.1 버전까지 버전업하면서도 아무런 수정이 없는게 의도된 행동일지 모르겠네요 ^^'. 전체 파트를 Listen하는 것과 특정 파트를 Listen하는 것의 차이점을 알고 주의해서 사용할 필요가 있습니다.
아무래도 외국 eclipse 커뮤니티 사이트에 질문을 올려보고 관련 소스코드를 열어봐야겠습니다. 결과가 돌아오면 다시 포스팅 하겠습니다. 예제 코드는 첨부합니다.
이 글은 스프링노트에서 작성되었습니다.
'개발 이야기' 카테고리의 다른 글
| 플러그인 스파이(Plug-in Spy) (0) | 2009/12/06 |
|---|---|
| Eclipse 애플리케이션에서 웹 브라우저 띄우기 (0) | 2009/12/06 |
| Snow Note (0) | 2009/12/06 |
| 사용자 인터페이스(UI) 가이드라인 (0) | 2009/12/06 |
| eclipse 셀렉션 서비스 사용 주의사항 (0) | 2009/12/06 |
| eclipse 워크벤치: 셀렉션 서비스 이용하기 (0) | 2009/12/06 |



