'개발 이야기'에 해당되는 글 29건
- 2010/02/21 이클립스 코드 흉내내기
- 2010/01/03 이클립스에서 안드로이드 소스 코드 보기
- 2009/12/26 [eclipse] Smart Compare 플러그인
- 2009/12/06 [Mac] Hex Color Picker
- 2009/12/06 이클립스 플러그인 개발 시작하기 (2)
- 2009/12/06 me2DAY for Android 릴리스 (2009/06/11) (2)
- 2009/12/06 me2DAY for Android 진행(2009/05/06)
- 2009/12/06 me2DAY for Android 릴리스 (2009/04/25)
- 2009/12/06 자바스크립트 코드 커버리지 측정하기
- 2009/12/06 [eclipse] EclEmma 자바 커버리지 측정 도구
이클립스 코드 흉내내기
"이클립스 플러그인 개발"을 주제로 월간 마이크로소프트웨어 2009년 7월호에 실렸던 글을 공개합니다. 6월호에 실렸던 이클립스 플러그인 개발 시작하기는 플러그인 개발을 처음 시작할 때 필요한 내용을 소개했고, 7월호에서는 『이클립스 코드 흉내내기 - 히스토리 기능 확장』라는 제목으로 기존 이클립스의 코드를 참고해서 흉내내고 확장하는 주제를 다뤘습니다.
이 글은 스프링노트에서 작성되었습니다.
'개발 이야기' 카테고리의 다른 글
| 이클립스 코드 흉내내기 (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 |
이클립스에서 안드로이드 소스 코드 보기
안드로이드 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 |
[Mac] Hex Color Picker
맥에서 기본으로 제공하는 색상 선택기(Color Picker)에서 한 가지 아쉬운 점이 있다면 HEX값을 표시해주지 않는 다는 점인데 이를 위한 라이브러리로 Hex Color Picker가 있다. ~/Library/ColorPickers에 다운 받은 파일을 복사하면 이후 색상 선택기가 동작하는 모든 애플리케이션에서 선택한 색상의 HEX 값을 복사할 수 있다.
추가적으로 한 줄짜리 애플스크립트(AppleScript) 애플리케이션을 만들면 독립적으로 동작하는 가벼운 색상 선택기를 얻을 수 있다. UI 개발자라면 필요한 가볍고 유용한 애플리케이션이 된다.
이 글은 스프링노트에서 작성되었습니다.
'개발 이야기' 카테고리의 다른 글
| 이클립스에서 안드로이드 소스 코드 보기 (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 |
| me2DAY for Android 진행(2009/05/06) (0) | 2009/12/06 |
이클립스 플러그인 개발 시작하기
월간 마이크로소프트웨어에 2009.6 - 2009.7 2회에 걸쳐서 이클립스 플러그인 개발을 주제로 글을 썼습니다. Open External 플러그인과 Multi-File History 플러그인을 만들면서 얻은 경험을 공유하고자 했는데 글 쓰기가 생각만큼 쉽지는 않더군요.
뭐 이렇게 해서 나온 글은 마이크로스프트웨어 측의 동의를 얻어 먼저 6월호에 실린 『이클립스 플러그인 개발 시작하기』를 공개합니다. 7월호 분량은 다음달에 공개하도록 하겠습니다. 부디 이클립스 플러그인 개발 관련 자료를 찾는 분들에게 도움이 됐으면 합니다. 개인적으로도 계획만 해둔 플러그인이 꽤 있는데 에너지를 투자하지 못하고 있네요. :)
이 글은 스프링노트에서 작성되었습니다.
'개발 이야기' 카테고리의 다른 글
| [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 |
| me2DAY for Android 진행(2009/05/06) (0) | 2009/12/06 |
| me2DAY for Android 릴리스 (2009/04/25) (0) | 2009/12/06 |
me2DAY for Android 릴리스 (2009/06/11)
소셜 네트워크 서비스 미투데이의 안드로이드용 매시업 애플리케이션인 me2DAY for Android의 두 번째 버전을 릴리스 합니다. 이후 존칭은 생략합니다.
라이선스
개인 사용자가 안드로이드 마켓을 통해 직접 설치하는 것만 무료이다. 조금이라도 상업적인 성격이 포함된 이용은 허용하지 않는다. 추후 유료화될 수 있으며(계획은 없음) 유료화 이후에 이전 버전에 대한 업데이트를 지원하지 않을 수도 있다.
설치하기
me2DAY for Android는 안드로이드 마켓에서 다운로드 받아서 설치할 수 있다. me2day로 검색해서 설치하면 된다. me2DAY for Android는 1.5 펌웨어 이상 버전을 지원한다. 따라서, 사용하는 안드로이드 폰의 펌웨어 버전이 1.5보다 낮다면 마켓에서 검색되지 않을 수도 있다.
이전 버전은 보호된 애플리케이션으로 등록해두어서 개발폰에서 검색되지 않는 문제가 있기에 애플리케이션을 새로 등록했다. 따라서, 이전 버전 사용자는 자동 업데이트 기능을 이용하지 못하고 새로 설치해야 한다.
요약
기존에 지원하던 세 가지 종류의 글쓰기 기능은 첫 번째 릴리스 문서를 참조한다.
추가사항
-
글 쓰기 기능
- 위치 정보 기록하기 (설정 가능)
- 글 쓰기 종류 추가 - 책 바코드 스캔해서 ISBN 포스팅하기 (me2book 연동)
-
글 보기 기능
- 내글보기/친구들은/친구의 친구들은
-
포스팅 상세 보기
- 댓글 보기
- me2photo 보기
- 포스팅 위치 정보 존재 시 구글 맵에서 위치보기
- 댓글쓰기/미투하기
변경사항
- 애플리케이션 이름을 me2ANDROID에서 me2DAY for Android로 변경
- 글 쓰기 메뉴 통합 메뉴로 변경
- 앨범 사진 불러오기 성능 향상
- 아이콘 선택 시 사용자가 등록한 아이콘 보여주기
상세 정보
애플리케이션 이름 변경을 반영했고, 글 보기 기능에 대한 메뉴를 추가하였다.
글 쓰기 통합 메뉴/사용자 등록 아이콘 보여주기
글 쓰기 기능은 추후 비디오/오디오 지원도 고려해서 통합 메뉴를 구성했다. 기존의 글 쓰기 기능에서 "책 정보 스캔해서 올리기" 메뉴가 추가되었다. 책 정보 메뉴 스캔 기능에 대해서는 아래서 설명한다. 글을 작성할 때 기존 아이콘 선택 방식에서 실제 사용자 등록 아이콘을 보여주는 방식으로 변경했다.
위치정보 기록하기
위치정보 기록하기가 설정에 추가되었고 설정을 켠 상태에서는 글 작성 시 위치정보도 함께 기록한다. 이때, GPS는 켜져있어야 하고 상단의 GPS 표시기가 깜빡임을 멈추고 제대로 위치를 인식한 상태여야 한다.
책 바코드 스캔해서 me2book 정보 쓰기
책의 바코드 정보를 스캔해서 올리기 위해서는 먼저 안드로이드 마켓에서 Barcode Scanner 애플리케이션을 다운로드 받아설치한다. 이후 아래 그림과 같이 책의 바코드를 인신한 후 포스팅하면 me2book 정보가 등록된다. (개인적으로는 이번 릴리스에서 두 가지 참신한 기능 중 하나라고 생각한다.)
글보기
글 보기 기능은 자신의 미투데이 보기와 친구들의 글 보기 기능을 지원한다. 친구의 글 보기, 친구의 친구들은 기능을 제공하기에 자신과 직접 연결되어 있지 않은 사람들의 글도 볼 수 있다.
글 상세 보기/댓글쓰기/미투하기
글 상세보기 화면에서는 달려있는 댓글을 보고 새로운 댓글을 달거나 metoo를 할 수 있다.
미투포토/구글 맵 위치보기
글 상세보기 화면에서 제공하는 기능으로 만약 해당 글에 미투포토가 등록돼있다면 썸네일을 클릭하여 큰 사진을 볼 수 있다. 또, 해당 글에 위치 정보가 기록되어 있다면 지도 아이콘을 클릭하여 포스팅한 위치를 구글맵에서 확인할 수 있다.
시연 동영상
동영상 화질이 나쁜편이라 동작을 제대로 확인하기 곤란하다고 판단해서 에뮬레이터에서의 동작을 녹화했다. 카메라 관련된 몇 가지 기능을 소개하지 못하지만 더 알아보기 쉬워졌다.
다음 버전 지원 예정 기능
링크 열기 등 부족한 점이 많지만 다음 버전에 지원하려고 계획한 기능은 다음과 같다. 이외에도 필요하다고 느끼는 기능을 추가할 예정이다.
- 미투데이 알리미 API를 이용한 댓글 등 알림 기능
- 미투포토에 올리는 사진 해상도 선택 기능
- 음성 올리기/ 비디오 올리기 (비디오 올리기는 API가 아직 지원되지 않고 있기에 지원되는대로 추가할 예정)
apk 파일 추가
안드로이드 마켓을 이용하지 못한다는 요청에 apk 파일을 추가한다. 다운로드 받아서 "adb install 파일명"으로 설치할 수 있다.
- 다운로드: kr.pragmatic.me2day.apk
이 글은 스프링노트에서 작성되었습니다.
'개발 이야기' 카테고리의 다른 글
| [Mac] Hex Color Picker (0) | 2009/12/06 |
|---|---|
| 이클립스 플러그인 개발 시작하기 (2) | 2009/12/06 |
| me2DAY for Android 릴리스 (2009/06/11) (2) | 2009/12/06 |
| me2DAY for Android 진행(2009/05/06) (0) | 2009/12/06 |
| me2DAY for Android 릴리스 (2009/04/25) (0) | 2009/12/06 |
| 자바스크립트 코드 커버리지 측정하기 (0) | 2009/12/06 |
me2DAY for Android 진행(2009/05/06)
미리 밝혀두지만 이 포스팅은 개인적인 압박용 포스팅입니다.
me2ANDROID를 릴리스한 이후 안드로이드 마켓에 등록했습니다. 개발폰용 펌웨어가 아닌 1.5 정식 펌웨어(또는 보호된 앱을 검색할 수 있도록 해둔 커스텀 펌)를 설치한 안드로이드 폰으로 마켓에서 me2android(소문자로 검색. 대문자 검색 오류 있는 듯)나 me2day로 검색하면 설치할 수 있습니다.
개발중인 버전에서는 me2ANDROID라는 이름이 아이콘 이름에서 잘려 보이기도 해서 애플리케이션 이름을 me2DAY for Android으로 변경하고, 아이콘에는 me2DAY로 보이도록 수정했습니다. 다음 릴리스부터 me2DAY for Android로 릴리스하겠습니다. 개발폰에서 검색되지 않는 현상해결 등에 대해서도 다음 릴리스와 함께 수정하겠습니다.
현재는 글보기 기능을 추가하고 있습니다. Balsamiq Mockup을 이용해 스케치한 UI 화면입니다.
현재 개발 진도는 Mockup의 왼쪽 화면의 상당부분을 구현한 정도입니다. Kenu님의 daysago를 이용해 지나온 시간 레이블을 구성했습니다. 배우면서 기능을 추가하고 있기에 조금 더딥니다.
다음 릴리스가 언제라고 예고할 수 없는 상황이지만, 글보기 기능은 5월안에 릴리스하도록 노력 중입니다. 개인적으로는 국내에 안드로이드 폰이 나올때쯤 생각하고 있는 기능을 모두 추가하는 것을 목표로 하고 있습니다. 그때쯤 되면 누군가 사용해 주겠지요?
이 글은 스프링노트에서 작성되었습니다.
'개발 이야기' 카테고리의 다른 글
| 이클립스 플러그인 개발 시작하기 (2) | 2009/12/06 |
|---|---|
| me2DAY for Android 릴리스 (2009/06/11) (2) | 2009/12/06 |
| me2DAY for Android 진행(2009/05/06) (0) | 2009/12/06 |
| me2DAY for Android 릴리스 (2009/04/25) (0) | 2009/12/06 |
| 자바스크립트 코드 커버리지 측정하기 (0) | 2009/12/06 |
| [eclipse] EclEmma 자바 커버리지 측정 도구 (0) | 2009/12/06 |
me2DAY for Android 릴리스 (2009/04/25)
소셜 네트워크 서비스 미투데이의 안드로이드폰 전용 애플리케이션 me2ANDROID를 공개합니다.
주요 기능
이번 릴리스에서는 세 가지 종류의 글 작성 기능만 제공합니다.
- 새로운 글 쓰기: 아이콘 선택하기, 댓글 닫기, SMS 받기 지원
- 사진 찍어 올리기: 새로운 사진을 찍어 me2photo로 올리는 기능
- 앨범 사진 올리기: 카메라를 통해 찍은 사진을 선택해서 me2photo로 올리는 기능
me2ANDROID만의 고유한 기능을 포함해 이후 계획도 있지만, 다른 기능보다 먼저 글을 보는 기능을 추가할 계획입니다.
다음 릴리스에는 아래 내용을 포함하려고 합니다.
- 내글 보기
- 친구글 보기
- 위치 정보 포함해서 포스팅하기
- 앨범 사진 보기 성능 개선
라이선스
개인 사용자가 직접 내려받아 설치하고 사용하는 것만 무료입니다. 이외에 조금이라도 상업적인 성격이 포함된 이용은 허용하지 않습니다. 예를 들어, 특정 업체의 안드로이드폰에 기본 애플리케이션으로 배포할 수 없습니다. 개인적인 사용 이외의 용도는 문의하세요.
설치하기
me2ANDROID는 1.5 펌웨어 (컵케익) 이상을 지원합니다. 현재 me2ANDROID라는 이름으로 마켓에 등록되어 있습니다. 마켓에서 me2day 또는 me2android(대문자 검색 문제 있음)로 검색해서 설치하면 됩니다. 단, 현재 버전은 보호된 앱으로 마켓에 등록해놔서 개발폰에서는 검색되지 않습니다. 다음 릴리스에 마켓에 다시 등록(한 번 보호된 앱으로 올리면 해제가 안되니, 자동 업데이트는 안될지라도)할 예정입니다.
시작하기
정상적으로 설치가 완료되면 아이콘을 클랙해 me2ANDROID를 실행합니다. 사용하려면 먼저 자신의 미투데이 사용자 아이디와 me2API 사용자 키를 설정합니다.
글쓰기
본문을 입력하고 올리기 버튼을 클릭하면 미투데이에 글이 올라갑니다. 태그 입력, 아이콘 선택, 댓글 닫기, SMS 받기 기능은 선택사항입니다. 사용자 지정 아이콘은 모바일 기기이다 보나 매번 아이콘을 가져와 보여주는 방식이 느리기도 하고 자신이 지정한 아이콘 순서는 알고 있으리라는 판단에 '지정1'형식의 아이콘으로 제공합니다.
예제 화면에서는 모두 영문 키보드만 사용했지만 한글 키보드가 필요하다면 접촉식 한글 키보드를 이용하면 됩니다. 현재 정식 버전이 공개되어 있지 않은 안드로이드 1.5 컵케익은 펌웨어 버전에 따라서 카메라나 마켓 등을 이용할 수 없기에 한글 키보드를 설치할 수는 없지만 안정적인 펌웨어를 사용하고 있기에 영문 입력만 예로 보여주고 있습니다. SDK 1.5 pre의 에뮬레이터 환경에서는 한글 키보드가 정상적으로 설치되며 시험해 볼 수 있습니다.
사진 올리기
메뉴에서 새 사진 올리기를 선택하면 카메라가 동작하며 새로운 사진을 찍을 수 있습니다. 사진을 찍고 마음에 들면 왼쪽 상단의 썸네일을 클릭해서 me2photo로 올릴 수 있습니다.
앨범사진 올리기 메뉴를 선택하면 SD카드에 저장된 사진 목록에서 사진을 선택해서 me2photo로 올릴 수 있습니다. 앨범 사진을 불러오는 게 조금 느린데 다음 릴리스에 개선할 예정입니다.
사진 올리기 기능에서 아이콘은 사진으로 고정됩니다. 사진 파일을 올릴 때 진행상태도 표시합니다.
가로보기
가로보기(landscape)에 최적화된 화면도 제공합니다.
정보
간단한 소개와 사용권 그리고 이 페이지에 대한 주소가 포함됩니다.
응용하기
먼저 안드로이드 마켓에서 사진 편집 애플리케이션인 PicSay를 내려받습니다. 카메라로 찍은 사진을 PicSay로 편집하고, 위에서 소개한 앨범 사진 올리기 기능을 통해 미투데이에 업로드 합니다. 단순한 사진보다 더 많은 정보를 표현할 수 있습니다. 참 쉽지요?
시연 동영상
이렇다할 동영상 캡쳐 장비가 없어(새로 산 카메라의 동영상 기능이 포토부스의 화질보다 나쁘다니) 맥의 포토부스를 이용했습니다. 화질도 나쁘고, 좌우가 바뀌어 있지만 동작을 확인하는 용도로 봐주세요.
외부 자원
- me2day-api 프로젝트의 자바 API를 수정해서 이용합니다. (추가 기능은 패치 보냈습니다.^^)
- 사용된 이미지는 CC 라이선스에 따라 저작자를 밝힙니다. 구름 이미지와 구겨진 종이 이미지는 플리커 사용자 D. Sharon Pruit의 저작물이며, 무지개 이미지는 플리커 사용자 Elisabeth의 저작물입니다.
- 사진 찍기 기능은 아파치 라이선스를 따르는 안드로이드 기본 카메라 애플리케이션의 코드를 활용했습니다.
이 글은 스프링노트에서 작성되었습니다.
'개발 이야기' 카테고리의 다른 글
| me2DAY for Android 릴리스 (2009/06/11) (2) | 2009/12/06 |
|---|---|
| me2DAY for Android 진행(2009/05/06) (0) | 2009/12/06 |
| me2DAY for Android 릴리스 (2009/04/25) (0) | 2009/12/06 |
| 자바스크립트 코드 커버리지 측정하기 (0) | 2009/12/06 |
| [eclipse] EclEmma 자바 커버리지 측정 도구 (0) | 2009/12/06 |
| [eclipse] 다중 파일 히스토리 플러그인 업데이트 (0) | 2009/12/06 |
자바스크립트 코드 커버리지 측정하기
Mootools 라이브러리가 BDD 프레임워크인 JSSpec을 이용한 자동화된 스펙을 가지고 있는건 이미 유명하지요? 갑자기 Mootools의 스펙이 라이브러리 코드를 얼마나 구석구석 검사하고 있는지 궁금해져서 조금 찾아봤습니다. 코드 커버리지가 왜 필요한지와 같은 내용은 생략합니다.
커버리지 측정 도구 - JSCoverage
먼저 자바스크립트(JavaScript) 코드의 커버리지(coverage)를 측정하기 위한 커버리지 측정 도구를 조사해 봤습니다. 브라우저 확장이라던지 자바 언어로 쓰여진 자바스크립트 엔진인 Rhino를 지원하는 커버리지 도구라던지 몇 가지 선택사항이 있지만, 구글 검색 첫 번째 결과인 JSCoverage를 선택했습니다.
데모 페이지의 예제를 돌려보고 문서를 조금 읽어보면 js 파일에 탐침 코드를 삽입하고(instrumentation) 결과를 측정하는 방식을 이용함을 알 수 있습니다. 탐침 코드를 삽입하려면 jscoverage 바이너리를 실행해야 하는데, 공식적으로는 리눅스와 Cygwin이나 Mingw를 이용한 윈도 환경을 지원합니다. 제가 확인한 바로는 맥 OS X 환경에서도 정상적으로 빌드되고 동작합니다.
탐침 코드를 삽입하고 결과를 확인하는 과정은 정말 간단합니다. 다음 형식의 명령어를 실행하면 '탐침코드_삽입된_코드_생성위치'에 탐침 코드가 삽입된 코드와 함께 몇 가지 파일이 더 생성됩니다.
- jscoverage 소스_위치 탐침코드_삽입된_코드_생성위치
내용이 궁금하다면 원본 코드와 비교해보면 됩니다. 생성된 파일 중 jscoverage.html 파일을 브라우저로 열고 탐침 코드가 삽입된 코드를 실행하면 방금 전 사용자의 행동에 따른 커버리지 정보를 제공합니다. 복잡한 설명보다 이 글을 작성하게된 목적인 Mootools 라이브러리의 스펙이 라이브러리를 얼마나 구석구석 확인하고 있는지 보겠습니다.
Mootools 라이브러리 커버리지 측정
JSSpec이 포함된 Mootools를 다운로드받으려면 Github에서 호스팅 중인 코드를 받아야 합니다. 가장 최신 버전인 1.2.1 태그를 받았습니다. 압축을 해제하면 Source 폴더에 Mootools 코어 라이브러리의 js 파일들이 있고, Specs 폴더에 JSSpec 스펙 코드가 있습니다. Specs 폴더의 index.html을 브라우저에서 실행하면 스펙이 동작하면서 성공, 실패에 대한 결과를 보여줍니다.
그림1. Mootools 라이브러리의 JSSpec 실행 결과 화면
여기서 궁금했던 건 100% 성공인데 과연 라이브러리의 대부분을 확인한 100% 성공인가였습니다. 그래서 JSCoverage를 이용해 탐침 코드를 삽입하고 결과를 확인해 보겠습니다. 스펙 코드가 얼마나 구석구석 실행됐는지 궁금한게 아니라 스펙이 라이브러리 코드를 얼마나 구석구석 실행했는지를 알고 싶으므로 라이브러리 코드에 탐침 코드를 삽입합니다.
- jscoverage Source Instrumented
Source 폴더의 js 파일들에 탐침 코드가 삽입된 결과가 Instrumented 폴더에 생성됩니다. Specs 폴더의 스펙이 Source 폴더를 참조하므로 Source 폴더를 옮겨두고 Insturumented 폴더를 Source 폴더로 옮겨둡니다. 이제 Source 폴더에서 생성된 jscoverage.html 파일을 실행합니다. URL 필드에 탐침 코드가 삽입된 자바스크립트를 실행하는 html 파일의 주소를 연결하고 Go버튼을 눌러 동작합니다. 여기서는 Specs/index.html 파일이 모든 스펙을 실행하고, 스펙에서 탐침 코드가 삽입된 자바스크립트 파일을 실행합니다.
그림2. 탐침 코드가 삽입된 라이브러리 코드 실행
스펙의 수행이 끝난 후 Summary 탭에서 커버리지 결과를 확인할 수 있습니다. Mootools 스펙의 실행 결과를 보면 전체 45%의 구문 커버리지(statement coverage)를 달성했으며 파일의 이름만으로도 이벤트, 효과, HTML/JSON 요청 처리, 유틸리티 관련 코드에 대한 명세가 부족함을 유추할 수 있습니다. js 파일의 링크를 클릭하면 실제 소스에서 수행된 영역과 수행되지 않은 영역에 대한 정보도 제공합니다.
화면3. Mootools 스펙이 확인한 라이브러리 코드의 커버리지
이외에도 프레임 안에서 실제 페이지를 동작할 수 없는 등의 상황에 기존 방식으로 웹 페이지를 실행하고 커버리지 확인 페이지를 열어서 확인할 수 있도록 한 인버트(invert) 모드의 지원, 서버를 실행해서 동작하는 방법, 자동으로 결과 페이지를 저장하게 만드는 방법 등 여러가지 수행 옵션을 제공하고 있습니다.
마치며
JSSpec은 우리나라 소프트웨어라는 점에서 관심을 가지고 가끔 관련 자료를 찾아보고 있습니다. 자동화된 테스트의 생성이 얼마나 어려운지 알고 있기에 Mootools의 스펙이 어느 정도로 깊이 있게 확인하고 있는지 궁금해져서 잠시 확인해 봤습니다. 덕분에 자동화하기 어려운 부분을 명확하게 알게 됐습니다. Mootools 라이브러의 스펙이 일부 부족한 점은 있겠지만 개인적으로는 이 정도 수치는 꽤나 높은 수치라고 봅니다. 자칫 전체 커버리지 숫자만으로 평가절하하지 않았으면 합니다.
궁금증도 해결했지만 JSSpec 스펙 작성과 동작을 돕고 커버리지까지 측정해 주는 이클립스 플러그인 개발 아이디어가 떠올랐습니다. JSSpec2의 개발소식에 잠시 지켜봐야 겠네요.
이 글은 스프링노트에서 작성되었습니다.
'개발 이야기' 카테고리의 다른 글
| me2DAY for Android 진행(2009/05/06) (0) | 2009/12/06 |
|---|---|
| me2DAY for Android 릴리스 (2009/04/25) (0) | 2009/12/06 |
| 자바스크립트 코드 커버리지 측정하기 (0) | 2009/12/06 |
| [eclipse] EclEmma 자바 커버리지 측정 도구 (0) | 2009/12/06 |
| [eclipse] 다중 파일 히스토리 플러그인 업데이트 (0) | 2009/12/06 |
| [eclipse] Aptana Support for Jindo (0) | 2009/12/06 |
[eclipse] EclEmma 자바 커버리지 측정 도구
OKJSP의 트렌드 코너에서 EclEmma 코드 커버리지 측정도구에 대한 소개글을 보고 설치해봤습니다. 커버리지는 소프트웨어가 얼마나 구석구석까지 테스트 됐는지 평가하는 척도가 됩니다. 안전도가 매우 중요한 소프트웨어 납품시에는 '커버리지 몇% 이상 달성할 것.'이라는 계약조건이 들어가기도 합니다. 더 길게 설명하면 회사 일이 되버리니 넘어가고, 어차피 자세히 사용해보지 않았으니 간단 평가는 다음과 같습니다.
<화면 1> 이클립스 플러그인의 커버리지 측정
먼저 장점은
- 사용하기 편하다.
- JUnit 테스트 뿐 아니라 일반 자바 애플리케이션 수행 결과에 대해서도 커버리지를 기록한다. 자동화된 테스트 케이스 작성의 어려움을 알고 있기에 엄청난 장점으로 느껴집니다.
단점은
-
커버리지 종류가 단조롭다.
블록 커버리지만을 제공합니다. JUnit 테스트 수행 결과에 대해서 커버리지를 표시하는 Cobertura의 경우 라인 커버리지와 블록 커버러지 그리고 McCabe의 cyclomatic complexity(모듈을 기본 블록 단위로 나눠서 블록과 엣지의 수로 복잡도를 계산하는 공식)도 계산해 줍니다. 더 많은 커버리지 기준을 다루는 도구들도 있지만 대부분 상용이니 언급하지 않습니다.
장점으로 언급한 자바 애플리케이션 수행 지원은 홈페이지를 보니 더 자세한 설명이 있습니다. 단순히 JUnit 커버리지 측정인지 알고 특별한 장점이 없다고 생각했는데 이제 보니 상 받을만 합니다.
- 로컬 자바 애플리케이션
- Eclipse/RCP 애플리케이션
- JUnit 테스트
- JUnit 플러그인 테스트
- TestNG 테스트
- Equinox OSGi 프레임워크
한 가지 의문점은 커버리지를 합치는 기능을 제공하는데 코드가 변경된 영역의 커버리지는 어떤 방식으로 다루는지 궁금합니다.
플러그인 설치는 이클립스 Software Updates 메뉴에서 http://update.eclemma.org/를 등록하면 됩니다. 자세한 설명은 EclEmma 홈페이지를 참조하세요.
이 글은 스프링노트에서 작성되었습니다.
'개발 이야기' 카테고리의 다른 글
| me2DAY for Android 릴리스 (2009/04/25) (0) | 2009/12/06 |
|---|---|
| 자바스크립트 코드 커버리지 측정하기 (0) | 2009/12/06 |
| [eclipse] EclEmma 자바 커버리지 측정 도구 (0) | 2009/12/06 |
| [eclipse] 다중 파일 히스토리 플러그인 업데이트 (0) | 2009/12/06 |
| [eclipse] Aptana Support for Jindo (0) | 2009/12/06 |
| 자바스크립트(JavaScript) 개발환경 확장하기 (0) | 2009/12/06 |



