2008년 9월 3일 수요일

구글의 크롬을 써보고...


구글이 webkit을 사용한 새로운 브라우저를 내놓았다. 단순히 webkit만을 사용한 것이 아니라, 자바 스크립트 버추얼 머신 V8도 이라는 놈을 탑재하여 빠른 javascript 성능을 보인다고 한다.

모질라는 트레이스몽키 라는 just-in-time compiler 를 탑재하여 javascript의 성능 개선을 도모하고 있다.

http://prosenjit23.wordpress.com/2008/08/25/the-new-faster-and-better-mozilla-firefox-31/

그래서 인지 다른 이유 때문인지, 사용한 결과 아주 빠르다. 단순 페이지 로딩 속도 뿐만 아니라, 초기 프로그램 실행속도도 매우 빠르다.더불어 시크릿 기능이 있어, 어떠한 로그도 남기지 않고 웹 서핑을 할 수 있어, 야한 내용을 검색하거나 하는 경우 간편하다. ^^;

또한, 각각의 tab이 별도의 프로세스로 분리되어 있어, 혹시 특정 홈페이지로 인한 다운현상이 발생하여도 다른 tab은 안전하며, 멀티코어 환경에서 보다 낳은 성능을 보여줄 수 있다.
그러나, 메모리는 더 많이 사용하는 것 같다. 별도의 프로세스로 구분되어 있으니, 메모리를 공유하기 힘들기 때문이다.

네이버에서도 firefox를 사용한 최적화된 브라우저가 나오고, 안철수에서도 보안 브라우저를 작업하는 중이라고 들었다.
MS는 IE8을 개발 중이고, 애플은 사파리를 개발 중이다.

스마트 폰에서도 웹브라우저 전쟁이다. 안드로이드, 아이폰, MS 모바일 등....

예전 IE가 netscape를 무너뜨리고 정체되었던 브라우저 시장이 다시금 불이 붙는 것 같다.

사용자로서는 즐겁고, 개발자로서는 고통스럽다. 단말에서의 브라우저 개발이 쉽지 많은 않기 때문에....

이런저런 기능이 진정으로 완성된다면, 충분히 경쟁력 있는 제품이라 생각된다.
하지만, 아직까지 배타 버전이라 그런지, 메모리 leak이 있는 것 같고, 몇몇 사이트에서는 심하게 느려지는 현상들이 발생하고 있다.

우리나라 홈페이지들이 복잡하기 때문일 수도 있다.


2008년 9월 2일 화요일

빌어먹을 AppStore

모 블로거에 의하면 6개월을 기다려야 개발자 등록이 된다고 한다. 그리고, 프로그램을 올리는 것도 애플의 검토를 추후 거쳐야 하고.

천천히 개발하면서 좀더 기다려 보다가 다른 방법을 찾아 봐야겠다. Jailbreak는 하기 싫었는데, 이걸 안하면 단말 개발을 할 수 없는 처지다.

사실 초기 app store 개발자로 등록하려다가 기간을 연장하려고 취소한 적이 있다. 아직 개발도 끝나지 않았는데, 등록해 봐야 날짜만 간다는 생각을 했었다. 그런데, 이런 결과로 나타날 줄이야... 악...

2008년 8월 29일 금요일

미지리서치(주), 윈드리버에 합병되다.

대한민국의 리눅스 선두 주자(?)였던 미지리서치가 윈드리버와 합병되었습니다. 여러가지 이유가 있었겠지만, 현재의 어려운 경제 상황에서 자력으로 살아남기 힘들다는 판단이 주요했던 것 같습니다.
쓸만한 한국기업이 미국기업에게 흡수되었다는 씁쓸함도 남지만, 개인적으로는 보다 괜찮은 혜택이 주어지는 상황이라 당분간은 좋을 것 같습니다.

외국계 회사에서 처음 일하는 거라 언어적 문화적 문제가 많을 거라 생각되지만 양사가 노력하여 좋은 결실을 맺었으면 좋겠습니다.

다만 바라는 것은 미지의 자유로운 개발환경과 인간적인 유대감들이 가급적 오래도록 유지되기를 희망합니다.

미지와 윈드리버 파이팅...

자세한 내용은 영문은 http://biz.yahoo.com/bw/080828/20080828005841.html?.v=1 를 한글은 http://dr.simfile.chol.com/itnews/index.php?cmd=view&newsid=NEWSIS_1338030&boldKey=it 를 참고하세요.

2008년 7월 24일 목요일

TextReader 포팅 시작...

TextReader 의 포팅 작업을 시작했다. 이름을 TextViewer로 바꾸기로 했다.

Reader가 읽어준다는 의미라 실제 기능과 다르기 때문이다.

그런데 iphone API가 모조리 바뀌었다. 큰 그림의 개념도 많이 바뀌어서 기존의 코드를 거의 활용할 수 없다.

새롭게 공부하고 새롭게 작성해야 한다. 차근 차근 맘을 다잡고 다시 시작한다.

진작에 공부를 좀 해줄걸 이라는 생각이 든다. 뭐 어쩔 수 없다. 기다리는 사람들에게 죄송하지만, 한달은 족히 걸릴 듯...

심지어 object C 마저 가물가물하다. 나이를 먹어서 그런가 ....

2008년 7월 19일 토요일

iPod Touch 화면 capture TIP

전원 버튼과 홈버튼을 동시에 누르면 화면이 capture 된다. 이 사진은 "사진" 프로그램에서 확인할 수 있다.

그런데, 이렇게 하니까, itunes 보다 캡쳐 프로그램이 먼저 떠 버리는 군요. 윈도우에서는...

app store 추천 free software

Phone Sader - 스타워즈의 그 유명한 광선검을 휘두를 수 있다.
iPint - touch로 맥주를 마시자...
Remote - 원격으로 itune을 제어하자.
Tap Tap Revenge - 음악에 맞춰 게임을
Break - 벽돌깨기
Moonlight Mahjong Lite - 마작게임
Othello - 오델로 게임
Pangea VR - 가상 세계로 가보자. 사진으로 이런 것을 구성하다니 대단하다.
Aurora Feint - 훌륭한 블럭 게임 아주 좋다.

이 모든 프로그램이 공짜다. 공짜 프로그램들 대부분이 허접한데, 이것들은 최소한의 조건은 만족한다.

얼른 얼른 텍스트 리더를 만들어야 하는데, 맥이 고장나서... 흑흑흑

2008년 7월 16일 수요일

ipod touch 펌웨어 2.0 에 대하여

거금 9.95불을 지불하여 업그레이드를 했다. 2.0을 위한 textreader 개발을 위함이다.

그런데, 2.0 초기 버전이라 그런지 아직 많이 불안하다. 특히 app store에서 프로그램 다운 받아 설치하는 경우 그 정도가 아주 심하다.

AppStore의 경우 한국과 미국의 응용 프로그램 차이가 아주 많다. 가능하면 미국 계정으로 프로그램을 사용하기 바란다.

프로그램 설치는 그런대로 무난하지만, 설치된 프로그램을 삭제하고, app store를 실행시키는 경우 시스템 블럭 현상이 반드시 발생한다.

초기 버전을 감안하여 용서할 수도 있지만, 솔직히 실망스럽다.

그러나, 기타 기본 프로그램들의 성능은 아주 우수하다. safari의 경우 office viewer를 포함하고 있고, 이것이 email 까지 영향을 주어서, 첨부의 office 프로그램을 손쉽게 볼 수 있다.

그리고, 연락처에 검색기능을 추가한 것도 좋다. 사실 기본 기능을 구현한 것이지만.

2008년 3월 25일 화요일

iPhone이 나를 못살게 하네...

취미로 재미로 iPhone 혹은 iPod Touch 용 어플리케이션을 개발하고 있지만, 현업에서는 이놈만큼 나를 괴롭히는 놈이 없다.
모두가 iPhone을 원한다. 그러나 아무나 할 수가 없다.
사실 애플이 대단하긴 하다. 대부분의 사람이 기대하는 것보다 최소한 2년 이상은 앞서간 UI를 탑재한 제품을 개발하였으니.

하드웨어를 직접 설계하고, 소프트웨어를 디자인한다. 여기까지는 많은 회사에서 한다. 그러나, 그 아이디어가 참신하고, 전사적으로 밀어 붙인다. 지금까지 스티브 잡스만이 이룩한 일이다.

지금도 많은 곳의 개발자들이 iPhone 수준의 UI를 개발하려고 노력하고 있다.

iPhone 때문에 고통받고 있는 개발자들이여 힘을 냅시다. 아자아자...

2008년 3월 12일 수요일

비공식 iPhone SDK에 관한 착한 문서

iPhone 개발을 위한 비공식 SDK에 대한 착한 문서가 있어 소개합니다.

http://lucasnewman.com/phonedev.pdf

iPhone 이미지를 decrypt 하는 방법도 자세히 나와있으니 참조하기 바랍니다.

Aspen

Aspen은 iPhone 1.2 OS에 대한 code name 이라고 합니다. 결국 발표된 SDK는 iPhone firmware 1.2 개발을 위한 플랫폼입니다.

이로 인해 library link 오류가 발생하는 것 같군요. firmware 1.1.4를 위한 패키지가 SDK에 추가되어야 정상적인 ipod touch 개발이 가능할 것으로 판단됩니다.

이제 xcode를 분석하여 SDK 항목에 "iPhone 1.1.4" 가 나타날 수 있도록 해야 할 것입니다.
이 작업을 누가 해줄까? 내가 해야 하나? 1.2가 나올때 까지 기다리나?

iPhone SDK 가이드

xcode 3.1을 실행하여 기본 응용 프로그램 테스트를 진행해보았다. 결론은 ipod touch에서 프로그램 실행이 되지 않았다. library 특성이 뭔가 다른것 같다. iphone에서는 잘 되려나? 어쨌든 처음 xcode를 접하는 사용자를 위해 간단한 가이드를 작성한다.

xcode 실행 프로그램은 /Developer/Applications 에서 Xcode 를 실행시키면 된다.

상단의 메뉴의 "File -> New Project"를 선택하고, "Cocoa Touch Application"을 선택한 다음 프로젝트 이름을 넣는다.

그냥 단순히 "Build and Go" 버튼을 선택하여 컴파일 하고, 실행 시켜본다. 화면에 에뮬레이터가 동작하며 프로그램이 실행된다.


그런데, 이 환경에서 컴파일된 바이너리는 i386 바이너리로 단말과는 전혀 상관이 없는 바이너리다. 즉, 에뮬레이터 환경이 무늬만 iphone인 것이다. 자, 이제 emulator에서 작성을 마쳤으면, ipod touch 용 실행 파일을 만들어 보자.

메뉴에서 "Project -> Set Active SDK"를 선택하면 다음과 같은데, Device - Aspen 1.2를 선택하여 compile 하도록 한다.

최종 iphone 용 바이너리는 build/Debug-aspen/Hello.app 혹은 build/Release-aspen/Hello.app 에 있으니, Hello.app를 그대로 iphone의 /Applications 에 복사한 다음 스프링 보드를 다시 실행시키면 된다.

현재는 다음과 갈은 오류로 인해 실행되지 않는다. 이 문제의 해결이 가능한지 여부를 조사할 예정이다.

# ./HelloWorld
dyld: Symbol not found: _OBJC_CLASS_$_NSAutoreleasePool
Referenced from: /Applications/HelloWorld.app/./HelloWorld
Expected in: /System/Library/Frameworks/Foundation.framework/Foundation


2008년 3월 11일 화요일

ziphone 2.5c로 ipod touch jailbreak 하기

말도 많고, 탈도 많은 ziphone이다. 개발자가 touch를 받으면 수정하겠다고 하지만, 그게 벌써 얼마인가...

그동안 인터넷에서 jailbreak 버튼을 여러번 누르는 방법으로 해킹하는 동영상이 공개되었지만, 대다수의 많은 사람들이 어려움을 겪고 있다. 나도 마찬가지였다. 어제까지는...

오늘 우연히 ziphone을 가지고 놀다가 jailbreak에 성공하였다. 그래서, 어떤 과정을 거쳐 성공하였는지 세심하게 테스트를 진행하였다. 거의 10여번의 테스트를 진행하여 그 결과를 정리하고자 한다.

거의 90%의 확율로 jailbreak 할 수 있다. 사실 100%라고 해도 무방하다. 이 방법은 현재까지는 Windows 버전에서만 가능하다. MAC에서도 시도를 해보았으나, 성공하지 못했다.

그 순서는 다음과 같다.
  1. iTunes를 실행시킨다.
  2. iTunes에서 ipod touch를 eject 한다. (ipod touch와의 연결은 종료하지만, iTunes는 종료되면 안된다.)
  3. ziphone으로 jailbreak 한다. 잠시후 BSD 어쩌구 에러가 발생한다.
  4. ziphone의 jailbreak를 약 3번 정도 눌러 준다. (ziphone을 종료하면 안된다.)
  5. 전원 버튼과 home 버튼을 동시에 눌러 touch의 전원을 끈다.
  6. 전원 버튼과 home 버튼을 동시에 눌러 전원을 켜고 (15 초 정도 누르고 있어야 켜진다.), 계속 누르고 있으면, 복구 모드로 진입한다.
  7. ziphone에서 다시 자동으로 jailbreak 한다. 이때의 jailbreak는 정상적으로 동작한다. 아까 전에 3번 눌러준 jailbreak가 여기서 동작하는 것이다. 그러니, 아무 동작이 필요치 않다. 그냥 기다리면 된다.
  8. 이상의 과정에서도 jailbreak가 안된다면, 완전히 복구후 다시 시도한다.
일단 이 과정까지가 가장 확실한 방법이다. 최소한 10여번 이상은 테스트 해서 정상동작함을 확인하였다.

spamming at waiting 으로 잘 안되는 경우가 있음을 확인하였다. 모두 5대의 ipod touch(모두 16G)를 테스트했는데, 그중에 한대에서 이 문제가 발생하였는데, 해결이 안된다.

2008년 3월 7일 금요일

iPhone SDK Review

iPhone SDK가 발표되었다.

여러번의 시도 끝에 간신히 무려 2.1G의 SDK를 다운로드 받았으며, 개발 테스트를 해봐야겠지만, 직장에 있는 관계로 그 작업은 주말로...

간단히 살펴보면 다음과 같다.

  • Intel Mac 용으로만 발표되었다. (Windows는 아마 영원히 지원하지 않을 것 같다.)
  • gcc, xcode, emulator 로 구성되어 있으며, 2.1G나 된다.
  • Emulator는 iPhone 용 바이너리를 직접 실행시킬 수 있다.
  • xcode의 설정에 따라 iPhone에 직접 설치도 가능하다.
  • 간단히 API를 살펴본 결과 기본 흐름은 공개되기전 프로그램 방식과 동일하지만, 개발 편의를 위한 다양한 Object-C object가 제공된다.
  • 화면 구성을 위한 GUI 툴이 xcode에 포함되어 있어, Drag&Drop 만으로 개발을 할 수 있다.
개인적으로는 emualtor가 아주 반갑다. 이전까지 디버깅 작업이 아주 힘들었는데...
그리고, 상세한 API 문서도 좋다. 이제 부족한 기능을 간단히 개발할 수 있을 것 같다.
주말 동안 textreader를 포팅하고, sokoban의 미구현 기능을 구현해 보아야 겠다.

그동안 SDK에 대한 유료화 문제로 여기 저기에서 문제가 많았지만, 원래 애플은 gcc를 기본 compiler로 사용하기 때문에 SDK를 무조건 공개를 해야하는 입장이다.

이것은 앞으로도 마찬가지다. 다만, 개발된 프로그램에 대한 배포 방법을 제한할 것으로 보이는데, 이것은 어쩔 수 없을 듯....

보다 자세한 사항은 주말을 보내고 다시 포스팅 한다.

몇몇 유용한 문서들에 대한 링크는 다음과 같다.

iPhone Dev Center
Creating an iPhone Application

2008년 2월 25일 월요일

iSokoban

그동안 미루고 미뤘던 소코반을 만들었다. 짬짬이 시간이 되는대로 작업하다 보니 시작은 오래 전에 했지만, 이제서야 기본은 된 것 같다.

아직 구현해야할 내용이 많지만...

Download


2008년 2월 21일 목요일

iPhone 한글 문제들

한글 파일명


MAC 파일 시스템은 유니코드를 지원하도록 설계되어 있다. 그러나, 한글 저장이 유니코드 영역중 완성형 영역이 아닌 조합형 한글 영역을 사용하기 때문에, 파일 시스템의 한글 파일을 그대로 출력하면 "ㅎㅏㄴㄱㅡㄹ" 형태로 보인다.

이 문제를 해결하기 위해서는 유니코드의 canonical compose 기법(?)을 사용한다. Mac에서는 NSString의 precomposedStringWithCanonicalMapping 함수를 사용하면 된다. iPhone에서도 동일하다.

한글 코드

MAC에서 사용되는 encoding이 동일하게 iPhone에서도 사용된다. 사용되는 Encoding은 http://swiki.osxdev.org/osxdev/31 에 잘 정리되어 있다.


iPhone 프로그램 패키지 구성 방법

iPhone directory 구성에서 /Application 에 프로그램들이 위치하고 있다는 것은 모두 알고 있는 사항입니다.

이 디렉토리에 어떻게 새로운 프로그램을 추가할 것인가? 그것에 대해 설명하도록 하겠습니다.

이 글에서 Launcher라고 언급한 부분은 일반적인 Program Launcher 개념이며, iPhone에서 Spring Board 라고 생각하시면 됩니다.

필요사항을 요약하면 다음과 같습니다.

  1. 적절한 디렉토리를 만든다. 예) TextReader.app
  2. 실행할 바이너리 및 기타 파일을 추가한다.
  3. Info.plist 를 작성하여 추가한다.
  4. icon.png를 추가한다.
  5. Default.png를 추가한다.
  6. 디렉토리를 포함하여 zip 파일을 만든후, Installer를 위한 설치 스크립트를 만듭니다.

디렉토리 만드는 것과 실행 바이너리 및 파일을 추가하는 것은 각 개발자가 알아서 하는 부분이니 언급하지 않겠습니다.

Info.plist 작성

이 파일은 iPhone Launcher가 프로그램에 대한 정보를 파악하기 위해 읽습니다.

다음은 TextReader의 Info.plist 파일 구성입니다. 이 부분은 기본적으로 다른 프로그램으로 복사하여 편집하여 사용하면되는데, 수정해야 할 부분은 다음과 같습니다.

CFBundleExecutable - 실행 파일 이름을 명시합니다.
CFBundleIdentifier - 다른 프로그램과 구분하기 위한 keyword입니다. 아주 중요합니다.
CFBundleName - Launcher가 화면에 출력할 때 사용되는 이름입니다.
CFBundleShortVersionString - version 정보입니다.
CFBundleVersion

"CFBundleIdentifier" 부분은 Launcher가 실제 프로그램을 식별하기 위한 keyword로 사용하는 부분입니다. 동일한 CFBundleIdentifier 를 가지는 프로그램은 동시에 실행될 수 없습니다. 그러니 개발자는 반드시 유니크한 이름을 사용하여 다른 프로그램과의 차별을 두어야 할 부분입니다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>TextReader</string>
<key>CFBundleIdentifier</key>
<string>com.mizi.iphone.textreader</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>TextReader</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>0.3.6</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>0.3</string>
</dict>
</plist>

icon.png 추가

Launcher가 프로그램을 화면에 표시할 때 사용할 icon입니다. 대부분 80x80 의 해상도를 가지는 아이콘을 많이 사용합니다.


Default.png 추가

iPhone은 초기 프로그램 실행시에 약간의 트릭을 사용하고 있습니다. 대부분의 사용자는 iPhone 응용 프로그램 실행시 늦게 실행된다는 느낌을 받지 못하지만, 실제로 프로그램 실행시 약 2초의 시간이 걸립니다.
iPhone은 프로그램 실행시, 프로그램 화면을 작은 화면에서 큰 화면으로 확대하는 효과를 사용하여 사용자로 하여금 지루함을 느끼지 못하도록 하고 있습니다.

Default.png는 이때 사용하는 이미지입니다. 프로그램 실행시 나타나는 화면 확대 효과는 사실 진짜 프로그램을 이용하는 것이 아닌, Default.png 를 사용하여 확대 효과를 창출하는 것입니다.
그러므로, Default.png를 잘 만들어야 사용자는 어색함을 느낄 수 없습니다.

몇몇 iPhone 예제에서는 프로그램 종료시 마지막 화면을 Default.png로 저장하는 것도 있습니다.



Installer script 작성

Installer script 작성은 옵션입니다. 이것은 없어도 그만입니다.

제가 관리하고 있는 Installer script는 다음과 같습니다.

http://touch-programs.googlecode.com/files/mizi.xml

추후 이부분을 수정토록 하겠습니다.


Respring

새롭게 추가된 프로그램 패키지는 respring 이라는 단계를 거쳐야 launcher에 표시됩니다. SysInfo 프로그램을 실행하면 첫 화면에 respring 버튼이 있습니다. 이것을 가볍게 눌러 주시면 됩니다.

이 작업은 Spring Board를 죽였다가 다시 실행시키는 것입니다.


2008년 2월 3일 일요일

iPhone HOME Directory

iphone 1.1.3 버전이 나오면서, SpringBoard의 권한이 mobile로 변경되었다.
때문에, 기존에 /var/root/가 HOME 디렉토리였지만, 이제는 /var/mobile/ 이 HOME 디렉토리가 되었다.

기존의 iphone 응용 프로그램의 대다수가 HOME 디렉토리에 대한 path가 하드코딩되어 있어, 프로그램에 직접 "/var/root/"를 사용하고 있어, 새 버전에서 호환성 문제가 발생하고 있다. 텍스트 리더도 마찬가지고...

이러한 호환성 문제를 해결하려면, 계정 정보에 따라 HOME 디렉토리를 변경하는 것이 좋은데, 일반적인 Unix 환경에서는 환경변수 $HOME 을 통해 디렉토리를 확인할 수 있지만, 확인결과 iPhone은 이 환경 변수를 기본으로 설정하고 있지 않다. (SSH로 접속하는 경우에는 설정된다. 그러나, 실제 실행환경에서는 설정되어 있지 않다.)

$HOME 말고 또, HOME 디렉토리를 표기하는 방법으로는 "~/" 가 있다. 여기서 "~" 문자가 HOME 디렉토리를 의미한다.
iPhone 에서 이 "~" 문자를 사용하면 계정에 따른 HOME 디렉토리를 정확히 설정할 수 있다. 그러나, 그냥 사용하면 안된다. 다음과 같이 사용하면 사용이 가능하다.

NSString *homeDir = [@"~/Media/TXT" stringByExpandingTildeInPath];

이렇게 사용하는 경우 1.1.2 환경에서는 "/var/root/Media/TXT" 가 되고, 1.1.3 환경에서는 "/var/mobile/Media/TXT"가 된다.

2008년 1월 17일 목요일

iPhone Code Samples

한동안 iPhone 개발과 관련된 인터넷 검색을 하지 않다가 문득 검색을 해보니 어느새 많은 코드들이 존재한다.

그냥 우연히 찾은 Code Sample을 모아둔 곳이다.

http://iphonedevdocs.com/forum/forumdisplay.php?f=5

URL도 심상치 않다. iphonedevdocs 라니.... 보다 많은 내용이 있을 것 같다. 꼭 필요한 사이트

2008년 1월 15일 화요일

Cross Compile

Cross Compilre 만들기

Cross Compile을 예를 들어 간단히 설명하면 x86에서 ARM용 프로그램을 작성하는 것이다.

일반적으로 C로 작성한 프로그램을 실행시키려면 compiler로 compile 작업을 해서 실행파일을 작성한 후, 실행 파일을 실행시키면 된다.

이것은 해당 시스템에 compiler가 존재하는 경우에 가능하다. compiler가 존재하지 않는 ipod touch와 같은 경우 PC에서 프로그램을 작성하고, 이 프로그램을 ipod touch용으로 compile 한 후 단말에 올려서 실행한다. 이때 사용하는 compiler가 cross compiler다.

일반적으로 cross compile에 많이 사용되는 compiler는 open source로 작성된 gcc(GNU C Compiler)다. gcc의 경우 소스가 공개되어 있고, cross compile을 위한 다양한 기능을 모두 가지고 있어 많이 사용된다.

ipod touch에서 사용되는 cross compiler는 gcc로 만든다. Apple에서 SDK를 릴리즈 하는 경우에도 gcc를 사용할 것이다.

gcc로 ipod touch/iphone 용 cross compiler를 만들기 위한 방법은 다음 URL에 있다.

http://code.google.com/p/iphone-dev/wiki/Building

이 작업을 한 후에라야 진정으로 ipod touch용 프로그램의 시작을 위한 준비가 되었다고 할 수 있다.

Cross Compile 방법

cross compiler가 만들어 지면 다음 명령으로 간단한 C 파일을 compile할 수 있다.

$ arm-apple-darwin-gcc hello.c -o hello

이렇게 생성된 hello 파일을 ipod touch에 올려서 실행시켜 보자. 파일을 올리는 방법은 다양하다. FileZilla로 올려도 되고 TouchExplore를 사용해도 된다.

iPod Touch에 접속하기

해킹된 ipod touch에 SSH가 설치되어 있는 것은 모두가 알고 있을 것이다.

ssh는 간단히 설명하면 ipod touch에 접속을 할 수 있도록 도와 주는 프로그램이다. 가지고 있는 대표적인 기능으로는 shell 기능과 ftp 기능이 있다.
FileZilla가 ssh의 ftp 기능을 사용하는 대표적인 프로그램이다.

그렇다면, shell 기능을 이용하면? ipod touch에 직접 접속할 수 있다. 마치 windows에서 도스 창을 열듯이...

windows에서 shell 기능을 사용하려면 한글 putty를 다음 URL에서 받아 설치하도록 하자.

http://kldp.net/projects/iputty/

이제 한글 putty의 "한글 PUTTY (SSH 클라이언트)" 프로그램을 실행 시켜 "호스트 이름"에 ipod touch의 IP를 설정하고, "프로토콜"을 SSH로 설정한 후 접속하면 된다. 이때 잘 접속이 안되면 FileZilla로 접속을 시도한 후 성공하면, putty로도 잘 접속이 된다.

이제 아까 작성한 hello를 복사한 디렉토리로 이동한 후 다음과 같은 명령을 실행한다.

$ chmod +x hello
$ ./hello

hello 프로그램이 실행되는 것을 확인 할 수 있다.

2008년 1월 12일 토요일

Touch Program의 시작

개요

Touch 프로그램을 작성방법에 대한 내용을 정리한다.


사전지식

Touch는 ARM 기반의 BSD Unix를 OS로 하는 시스템이다.

  • Unix 프로그램을 잘 알고 있어야 한다.
  • UI 프로그램을 위해서는 Object C를 알고 있어야 한다. Object C는 객체지향 개발 방법론을 알고 있는 사람이라면 약 30분 정도의 시간을 투자하면 손쉽게 공부할 수 있다.
  • 개발을 위한 GNU Compile 도구의 사용 방법을 알고 있어야 한다. gcc, Makefile, subversion 등
  • MAC 프로그램에 대한 경험자의 경우 적응이 쉽다. Apple Developer Connection 을 수시로 참고해야 한다.
  • UTF-8 encoding을 기본으로 한다.

Touch는 MAC OS X와 많이 유사하다. UI 관련 API를 제외한 하위 API의 경우 MAC OS X와 거의 똑 같다.

파일 시스템도 동일한 특성을 가진다.

UI를 위한 API의 경우도 많은 유사성을 가지고 있다.


SDK 설치

개발을 위해 가장 먼저 해야할 작업은 바로 SDK를 설치하는 것이다.

다음 URL의 내용에 따라 SDK를 설치하도록 한다. SDK를 설치하기 위해서는 MAC 환경을 권장하며 Linux에서도 가능하다.


http://code.google.com/p/iphone-dev/wiki/Building


SDK 설치 과정을 간단히 살펴 보면 다음과 같다.

  • gcc cross compiler를 만든다.
  • Touch 복구 이미지에서 라이브러리(Framework)를 추출한다.
  • 추출된 라이브러리로 부터 Header 파일을 추출하여 설치한다.

라이브러리에서 직접 header 파일을 추출하여 개발했기 때문에, 2008년 2월에 애플에서 SDK를 릴리즈 하는 경우에도 API 변경이 크지 않을 것이다. Header 파일 위치 정도나 바뀔까(?)

iPhone 프로그램 홈페이지들

대부분의 iphone 관련 open source 프로그램은 google code에 있다. google code 접속 후 iphone 이라는 검색어를 사용하면 다양한 프로젝트를 확인할 수 있다.


http://code.google.com/hosting/search?q=iphone&projectsearch=Search+Projects



핵심 Class

UIApplication

응용 프로그램 시작과 종료 등 응용 프로그램 제어 관련 기능을 다룬다.

UIWindow

응용 프로그램 최초의 Window를 생성한다.


UIView

UIWindow내에서 동작하는 다양한 View를 제공한다.

2008년 1월 9일 수요일

Google Docs와 블로그

Google Docs를 이용하여 블로그를 작성하는 것도 좋다.

지금 이 문서도 그렇게 사용하고 있다. Google Docs에서 문서를 편집하고, 그걸 "Publish" 하면 blog에 추가된다. 물론 수정후 update도 된다.

사용 방법은 Google Docs 편집화면에서 오른쪽 상단에 "Share" "Publish"가 있는데, 이중 "Publish"를 선택한다. 이중에 "Post to Blog"를 통해 blog에 post하면 되는데, 하단에 blog 설정을 위한 링크가 있으니 이를 통해서 작업을 하자.

다만, label, title 설정등을 따로 blog에 들어가서 해야한다.

귀차니즘

새해가 밝았는데, 요즘은 귀차니즘에 빠져 있다. 하고 싶은 일은 많은데 귀찮아서 전부 보류하고 있다.
iPod Touch 관련해서 더 만은 프로그램을 작성하고, TextReader의 경우도 더 개선해야 하는데...

할일 목록

  • TextReader
    • 과거 읽은 파일에 대한 표시. 아마도 색을 달리 할 것 같다.
    • 상단 툴바 표시 관련 버그 수정
    • Bookmark 기능 개선
  • Sokoban
    • 거의 되어 있는게 없으니.. 다 해야겠다.
  • Currency
    • 이건 시작도 못했다.
  • iPhone 개발 문서 정리
    • 이거 짬짬히 해야 하나? SDK가 나오면 하자

이제라도 마음을 다잡고 시작하자...