August 2006

Canon EOS-350D로 본 마누와 실버

드디어 쓸만한 카메라를 장만했다. 웬지 사진 찍는 것에는 맘이 동하지 않아서 지금까지 Sony DSC-P43 똑딱이로 버텼지만, 마누와 실버의 귀여웠던(?) 모습을 제대로 남기지 못했던 것이 한이 되어 결국 사고 말았다. 그냥 무난하게 가격대 성능비가 좋다는 Canon EOS-350D로 장만했다. 똑딱이 찍듯 찍었는데도 예전과는 비교할 수 없게 잘 나오는 것 같다. 이젠 디카 공부까지 해야하나~ 마누와 실버가 제일 귀여웠던 순간은 지나가버렸지만… 그래도 여전히 귀엽다!

실버

마누

마누와 실버

Family
General

Comments (3)

Permalink

SWT/JFace 인 액션 – 인터뷰 with 마소

마소에서 SWT/JFace 인 액션에 대한 역자 인터뷰를 했다. javanese는 감수자였지만 역자들이 모두 해외에 있다보니 대신 역자 인터뷰를 하게 되었다. 뭐 인터뷰라고는 해도 서면 상으로 짧은 글을 전달하는 것이었다. 쓰다보니 요청받은 분량보다 훨씬 길어져서 실제 책에는 짧게 줄여서 싣겠지만, 다음은 전체 원고이다.

  1. 이 책에서 가장 주목해야 할 포인트는 무엇인가 ?

    몇 안되는 SWT/JFace 관련 서적 중에서도 가장 내용이 풍부하다는 점이다. 아무래도 SWT/JFace는 이클립스 플랫폼 기반 개발에서 가장 기초적인 내용이지만, GUI 애플리케이션 개발에 익숙치 않은 자바 개발자들의 경우 기초를 튼튼히 다지기 위해서는 다양한 예제를 접하는 것이 중요하다. 살짝이지만 RCP와 GEF까지 다루고 있다는 점도 좋다.

  2. 어느 수준의 개발자를 위한 책인가 ?

    자바 언어에 대해서는 이미 익숙한 것으로 가정하므로, 초급에서 중급으로 넘어가는 개발자를 위한 책이다. 스윙에 대한 경험도 있다면 서로 비교하여 즐길 수 있겠지만, 꼭 필요한 것은 아니다. 자바 기초를 마치고 스윙도 조금 다뤄보았는데, 이왕 공부한 자바로 네이티브 GUI 애플리케이션을 개발하려고 한다면 이 책으로 시작해야할 것이다. 단 GUI 플랫폼은 장단점이 있으므로 스윙이나 다른 언어의 플랫폼도 같이 해보면 더 좋을 것이다.

  3. GUI 애플리케이션 플랫폼 환경에서 이클립스만이 지닌 장점이 있다면?

    GUI 플랫폼으로써 이클립스의 장점은 두가지로 생각할 수 있다. 첫번째 장점은 기반 플랫폼인 SWT에서 기인하는 것이다. SWT는 OS 고유의 룩앤필을 갖는 멀티 플랫폼 GUI 애플리케이션을 자바로 쉽게 개발할 수 있는 유일한 수단이다. Sun이 주장하는 “Write Once, Run Anywhere”는 바람직한 방향이긴 하지만 OS 고유의 색깔과 기능을 무시한다고 볼 수도 있다. 그런 면에서 SWT는 “로마에 가면 로마법을 따르라”라는 격언을 지키고 있으며, 이로 인해 OS가 제공하는 기능을 더 효율적으로 발빠르게 사용할 수 있다. 물론 이것은 장단점이 있는 부분이다. 스윙과 SWT의 우월성에 대한 논쟁은 대부분 무의미하다. 하지만 개발자의 취향이나 API의 아름다움과 관계없이 현 시점에서 사용자의 눈에 더 그럴듯 해보이고 성능도 더 좋은 것은 SWT일 가능성이 높으며, 앞으로 스윙이 OS와 대등한 수준의 플랫폼이 된다면 스윙 위에 SWT를 탑재하게 될 가능성도 있다고 본다.

    두번째 장점은 이클립스 공동체에서 기인한다. 이클립스 RCP는 기여(contribution)라는 철학을 GUI에 철저히 반영한 플랫폼이다. 모든 이클립스 구성요소는 서로 기여하기 때문에, 오히려 독립적으로 발전한다. 서로 협력할 것을 가정한 아키텍처가 잘 되어 있기 때문에 오히려 서로에게 영향을 덜 주고 자신의 일을 할 수 있다. 이로 인해 이클립스 공동체의 훌륭한 결과물들을 자신의 애플리케이션의 일부로 사용하는데 거부감이나 어려움이 적다. 가장 인기있는 서브 프로젝트로 EMF, GEF가 있는데 이와 같은 수준의 라이브러리를 플랫폼에서 지원하는 것은 매우 큰 장점이라 할 수 있다. 이런 라이브러리를 사용하는 것 자체가 다소 어려운 주제일 수는 있지만, 다른 플랫폼의 경우에는 몇몇 개발자의 전유물일 수 있는 수준의 라이브러리들이다. 이런 고수준의 라이브러리들을 표준화하여 많은 사람이 같이 고민하게 만들고 있다는 것 자체로 의미가 있다고 생각한다.

  4. 본문에 제시된 예제나 프로젝트를 효과적으로 활용할 수 있는 방법을 소개한다면 ?

    책이 이클립스 3.0 버전 기준이므로 현재 버전(3.2)와는 실행환경에 다소 차이가 있다. 독자들에게 가장 미안한 부분이다. 하지만 현재 API는 3.0 API에서 기능이 추가되었을 뿐 바뀌지는 않았다. 이클립스에 익숙하지 않은 독자라면 그냥 이클립스 3.0을 설치하여 책의 예제를 공부할 것을 권한다. 물론 가능하다면 이클립스 개발환경에 먼저 익숙해지고, 버전에 맞추어 설정하여 사용할 수 있다면 더 좋다. 이 책은 API 학습서이며, 특성상 실전에 바로 쓰일 수 있는 예제는 거의 없지만 API를 익히기에는 좋은 예제들이다. 책의 예제를 한번쯤 독자가 직접 실행해 본 다음, 주제를 정하여 간단한 SWT 또는 RCP 애플리케이션을 개발해보자. 개발하는 과정에서 예제의 코드를 조금씩 갖다 쓸 수 있을 것이다. 이 책의 내용은 간단하지 않을 수도 있지만, 그 이유는 새로운 길을 가기 위한 첫걸음이기 때문이라는 것을 인식해야 한다. 더구나 이클립스 플랫폼은 너무나 빨리 변화하고 있는 시기이기 때문에(3.2 출시 한달만에 3.3M1이 릴리즈되었다), 책에만 의존해서는 따라잡을 수 없다. API 하나하나의 사용법보다는 기본 디자인 철학을 느끼는데 집중하면 더 좋을 것이다.

Books
Eclipse
General

Comments (0)

Permalink

Eclipse CDT에서 GP2X용 애플리케이션 개발하기 (2)

거의 밤새가며 gdb debugging을 이클립스 CDT에서 해보려고 했지만 알 수 없는 에러로 계속 child process가 죽어버려서 일단 포기.. GP2X에 올려서 실행시킬 수 있는 release executable을 생성해보자.

윈도우 에뮬레이션 개발 환경으로 설정한 프로젝트에서 몇가지만 더 설정하면 GP2X에서 실행되는 애플리케이션이 자동으로 빌드된다.

  1. JavaneseGP2X 프로젝트를 오른클릭하고 Properties를 선택한다.

  2. 다음과 같이 수정한다.

    Active configuration

    • Debug 선택

    Tool Settings Tab > GCC C Compiler > Directories

    • [GP2XSDK]/Tools/arm-gp2x-linux/include, [GP2XSDK]/Tools/include [GP2XSDK]/Tools/include/SDL 추가

    Tool Settings Tab > GCC C Compiler > Libraries

    • Libraries – mingw32, SDL_image, SDL_mixer, SDL_ttf, SDL_inifile, SDLmain, SDL, png, jpeg, vorbisidec, mad, freetype, z, unicodefont 추가 (Debug configuration에서 있었던 gp2x가 빠진다.)
    • Library search path – [GP2XSDK]/Tools/lib, [GP2XSDK]/Tools/arm-gp2x-linux/lib 추가

    Build Settings

    • Artifact extension : gpe로 수정한다.

    Environment > Configuration

    • New를 클릭하고 Name : PATH, Operation : Append, Delimiter : ;, Appended Value : [GP2XSDK]/Tools/arm-gp2x-linux/bin을 입력한다. 이곳에는 GP2X를 타겟으로하는 크로스컴파일러가 들어있다.
  3. OK를 누르자마자 Release 폴더와 빌드 결과물이 생성된다. 새로 생긴 JavaneseGP2X.gpe는 armle를 타겟으로 빌드되었음을 확인할 수 있다.

  4. SD Card또는 USB 연결후 NAND 디렉토리에 JavaneseGP2X.gpe 및 이미지 파일을 복사하면 Launcher의 Game에서 샘플 어플리케이션을 실행시킬 수 있다.

이젠 에뮬레이터 디버깅만 할 수 있다면 기본적인 개발환경은 갖춘 셈이 되는데… 이클립스 CDT에서 안되는 원인을 알아낼 때까지 일단 디버깅은 쉘에서 하도록 하자.

Eclipse
Embedded
General

Comments (0)

Permalink

Eclipse CDT에서 GP2X용 애플리케이션 개발하기

해외에서도 매우 인기있는 임베디드 플랫폼이 되어가고 있는 GP2X용 개발환경에 대해 살펴봤다. 기본으로 들어있는 것은 DevCpp인데 훌륭한 도구이긴 하지만, 역시나 손에 익은 Eclipse CDT를 이용해서 통합개발환경을 설정해보았다. 리눅스 환경에서는 SDK에서 기본으로 제공하는 통합 개발 환경이 없으므로 Eclipse CDT가 훌륭한 대안이 될 수 있다.

GP2X SDK의 기본 특성은 다음과 같다.

  • C/C++ 지원
  • gcc 기반 tool-chain (cygwin + mingw32 for emlation on windows)
  • GP2X + SDL Library on Embedded linux
  • ogg, png, jpeg supports

gcc기반이다 보니 Eclipse CDT에서 별다른 무리없이 개발환경을 꾸밀 수 있다.

  1. GP2X SDK for Windows를 받아서 적당한 위치에 압축을 푼다.

  2. Eclipse, CDT를 받아 한 디렉토리에 푼다. Callisto를 사용해도 좋다.

  3. New > Project > C > Managed Make C Project를 선택하고 Next를 클릭한다.

    newwizard-1.jpg

  4. Project 이름을 입력하고 Next를 클릭한다.

    newwizard-2.jpg

  5. Project Type을 선택한다. 일단 Executable을 선택하자. 나머지는 그대로 두고 Next를 클릭한다.

    newwizard-3.jpg

  6. 몇가지 추가 설정을 입력한다. 의존하는 프로젝트는 없을 것이고, C/C++ Indexer는 Full Indexer를 사용한다. Eclipse로 들어왔으니 자동 완성 한번 써보기 위함이다.

    newwizard-4.jpg

  7. 그림과 같이 워크벤치에 새로운 C 프로젝트가 생성된다. 혹시 퍼스펙티브가 C/C++이 아니라면 C/C++로 변경한다.

    workspace-1.jpg

  8. Managed C Project는 아무것도 없는 상태에서 시작하지만, 프로젝트 설정을 변경하거나 파일을 추가하면 그에 맞춰 알아서 컴파일 등을 해준다. 우선 소스 폴더를 추가한다. 프로젝트에 대해 오른클릭한 다음 New > Source Folder를 선택한다. 마법사가 나타나면 Folder name에 src를 입력하고 Finish를 클릭한다.

    newsource.jpg

  9. src 폴더 밑에 GP2XSDK의 샘플 프로젝트에서 가져온 main.c를 넣어보자. 물론 자기가 작성한 것도 상관없다.넣자마자 자동으로 Debug 폴더가 생긴다. 이 폴더에는 Debug Configuration에 따라 생성된 object 파일등 컴파일 결과가 저장되는 곳이다. 지금은 아무런 설정이 없어서 Include조차 못찾으니 당연히 에러가 발생할 것이다.

    workspace-2.jpg

  10. 프로젝트에 대해 오른클릭 하고 Properties를 선택한다.

    project-1.jpg

  11. 나타난 Properties 대화창에서 다음과 같이 설정하자. [GP2XSDK]는 GP2X SDK의 압축을 푼 위치이다.

    Active configuration

    • Debug 선택

    Tool Settings Tab > GCC C Compiler > Directories

    • [GP2XSDK]/include, [GP2XSDK]/include/GP2X, [GP2XSDK]/include/SDL 추가

    Tool Settings Tab > GCC C Compiler > Libraries

    • Libraries – mingw32, iconv, gp2x, SDL_image, SDL_mixer, SDL_ttf, SDL_inifile, SDLmain, SDL, png, jpeg, vorbisidec, mad, freetype, z, unicodefont 추가
    • Library search path – [GP2XSDK]/lib 추가

    Environment > Configuration

    • New를 클릭하고 Name : PATH, Operation : Append, Delimiter : ;, Appended Value : [GP2XSDK]/bin을 입력한다. GP2SDK에서 제공하는 gcc, make 등의 실행파일을 찾을 수 있도록 하기 위한 것이다.
  12. 이제는 깔끔하게 컴파일이 완료된다. JavaneseGP2X.exe까지 생성되었다. 자동 완성 기능도 동작한다.

    workspace-3.jpg

  13. 컴파일은 잘 됐지만 Debug 폴더를 열어보면 CDT가 컴파일된 결과를 제대로 인식하지는 못하고 있다. CDT에서는 생성된 binary 파일까지 해석해서 보여주는데 지금은 그냥 파일로만 취급하고 있다. 이유는 실행파일에서 필요로 하는 DLL을 찾지 못하기 때문이다. cygwin 에뮬레이션 레벨에서는 모두 DLL을 래핑하는 static library를 참조하므로 컴파일 및 빌드에는 문제가 없었지만, 실행에는 문제가 있는 상황이다. 즉 DLL을 찾을 수 있게 해야한다. GP2X에서 필요로하는 DLL은 모두 [GP2XSDK]/dll에 있다. 12의 PATH 설정에서 [GP2XSDK]/dll을 추가하면 된다. 다시 빌드가 수행되며 JavaneseGP2X.exe가 해석된 것을 볼 수 있다.

    workspace-4.jpg

  14. 이제는 실행해볼 차례이다. 샘플 코드에 포함된 이미지를 프로젝트 루트 폴더(또는 원하는 실행 위치)에 복사한다. JavaneseGP2X.exe에 오른클릭한 다음 Run As > Run Local C/C++ Application을 선택한다.

  15. 아마도 실행이 안될 것이다. PATH가 제대로 설정되지 않았기 때문이다. Project에 대한 PATH 설정은 CDT의 빌드 과정에만 영향을 미칠 뿐, Run/Debug에는 영향을 미치지 않는다. 실행은 안됐지만 Launch Configuration이 생성되었을 것이다. 최상위메뉴 > Run > Run… > C/C++ Local Application > JavaneseGP2X.exe를 선택한다. Environment 탭에서 PATH : [GP2XSDK]/dll;[GP2XSDK]/bin을 추가한다. dll만 있어도 실행은 되겠지만 디버깅을 위해서 bin도 추가한다. 이때 Environment 탭 아래 쪽에 환경변수 적용 방법은 반드시 Replace를 선택해야 한다.

    launch.jpg

  16. 이제 Run 버튼을 클릭하면 GP2X 어플이 win32 에뮬레이션으로 실행된다.

    running.jpg

편집 기능만큼은 이클립스 CDT가 DevCpp보다 훨씬 강력해 보인다.

이제 할 일은 디버거인데.. cmd에서 직접 gdb를 실행시키면 step 단위 실행이 잘 되는데 Eclipse CDT Debug에서는 실행이 잘 안된다. 이래저래 설정을 바꿔보았지만 역시 마찬가지.. 쉘에서 실행할 때랑 뭐가 다른 것인지 CDT 소스를 좀 살펴봐야할 것 같다.

Eclipse
Embedded
General

Comments (0)

Permalink

Welcome!!!

Welcome to My New Blog!!!

General

Comments (1)

Permalink