Monday, August 24, 2009

Emeditor에서 Objective C용 Ctags 파일 사용하기

우선, sourceforge에 있는 ctag http://ctags.sourceforge.net/의 배포판에서는 Objective C Parser를 제공하고 있지 않습니다.

그런데, andew ruder라는 사람이 objective c용 tags parser를 만들었는데,
http://gitweb.aeruder.net/?p=ctags-objc.git;a=summary

2009-05-14
splhackさん이라는 분이 이를 이용해서 ObjC 대응하는 Exuberant Ctags 컴파일 버전을 만들어 공개했습니다.
http://iphone-dev.g.hatena.ne.jp/tokorom/20090514/1242324330

소스를 다운받아 윈도우즈용으로 컴파일했습니다.
C:\MinGW\bin\mingw32-make.exe -f mk_mingw.mak

아래의 화면에 보면 Objc가 추가되어 있습니다.


태깅파일을 만들어 보았습니다.

"c:\Program Files\EmEditor\PlugIns"\ctags.exe -R -V --language-force=objc --tag-relative=no -h=.m.h -f ..\tags --verbose=yes --objc-kinds=+f+c+d-n --sort=no

아래의 화면에 OPENING이 같은 파일에 대해 두번 써 지는 것은, Objective-C파서가 Objective-C문법으로 한번 Parse하고, C나 C++파서로 넘어가 다시 한번 parse하기 때문입니다.

Emeditor에서 프로젝트 플러그인을 열고, 태깅파일을 지정해 보았습니다.
오른쪽 Pane에 보이는 것이 태깅 리스트입니다.


흠. 이정도로, 어떤 클래스가 있고, 어떤 메서드, 프라퍼티가 있는지 알기에는 도움이 될 것 같습니다.

Sunday, August 23, 2009

GNUStep 사용기 : NSAlertPanel 에서 한글

GNUStep을 사용중 NSAlertPanel에서 일본어,한글이 옆으로 나오고 있는 것을 발견했습니다.
실제 Mac에서 컴파일하면 정상적으로 보인다고 합니다.

#import
#import

int
main (void)
{
NSAutoreleasePool *pool;
pool = [NSAutoreleasePool new];
[NSApplication sharedApplication];

//NSRunAlertPanel (@"Kim TongHyun Test", @"Hello from the GNUstep AppKit",
NSString *title = [NSString stringWithUTF8String:"김동현입니다日本語です。"];
NSString *content = [NSString stringWithUTF8String:"본문입니다. `本文です。"];
NSString *okmsg = [NSString stringWithUTF8String:"オッケー"];
NSString *cancelmsg = [NSString stringWithUTF8String:"キャンセル"];
int result = NSRunAlertPanel (title, content,
okmsg,
cancelmsg,
nil);

switch (result) {
case NSAlertDefaultReturn:
NSLog(@"OK");
break;
case NSAlertAlternateReturn:
NSLog(@"Cancel");
break;
case NSAlertOtherReturn:
NSLog(@"Other");
break;
default:
NSLog(@"Error");
break;
}

return 0;
}




컴파일 화면



실행화면




거의 스크립트 수준길이의 c 소스로, 그럴듯한 화면이 만들어 졌습니다.
어째 윈도우즈에서의 C프로그래밍보다 훨씬소스가 간결한 느낌입니다.

여기에 Xcode를 이용한 개발의 Tutorial youtube를 보고 있으면
http://www.youtube.com/watch?v=troUhf3hewA&feature=SeriesPlayList&p=B397075C08EBE329
맥을 써보고 싶다라는 생각이 들기 시작합니다.

아직 Winchain에서 Cocoa Touch API를 사용가능한지 확인하고 있지 않습니다.
다운로드의 사이트(http://code.google.com/p/winchain/downloads/list)를 보면, 97년 12월이 마지막 업데이트인데, GNUStep은 그보다 뒤에 나왔기 때문에, WinChain에서 Cocoa Touch를 사용할 수 있다면, GNUStep에서도 사용할 수 있겠지요. 그러나 둘 다 Cocoa API를 사용하지 못할 가능성이 가장 클 것 같습니다.
#Winchain은 또 하나의 MINGW을 설치하기 때문에 설치하고 않고 있습니다. 벌써 2개나 깔려있으니까요.

Saturday, August 22, 2009

iphone appli개발 대한 접근 전략

최근, 자꾸 옆에서 iphone 어플리케이션을 만들지 않겠느냐며 옆구리를 찌르는 사람이 있습니다.
솔직히, 작은 디스플레이를 가진 디바이스의 소프트웨어 개발은 까닭없이 끌리지 않아 지금껏 관심이 없었습니다. (아이폰도 가지고 있지 않구요. )

하지만, 제쪽도 개발이란 것이 너무나 웹 어플리케이션에 치우쳐져 있었기 때문에, Stand-Alone 어플리케이션의 개발이 그리워진 이유도 있고, Computer-Aid Study라면 iphone은 적당한 디바이스가 아닐까- 하는 생각도 있어, 가/부 를 대답하기까지 한달 정도 시간을 달라고 해서, 조금씩 보고 있습니다.
(만들어 보고 싶은 소프트웨어라면, 외국어 학습에 도움이 되는 소프트웨어를 만들어 보고 싶습니다. iphone에 음성인식기능이 있나요? "사까나"라고 말하면, 魚「さかな」:물고기 라고 나오는 어플리케이션이 있으면 좋을텐데.!)



우선 맥에서의 개발 경험이 거의 전무하기 때문에 가능한 한, 윈도우즈로 부터 시작하는 방법을 찾고 있었습니다. 이에 대한 전략(아직 시도하고 있지 않고, 이러한 방법으로 접근하면 될 것 같다라는)을 정리해보려 합니다.

1. Objective-C
Objective-C는 C의 확장문법입니다. NextStep사가 개발했습니다.

2. cocoa
코코아는 API이며, 즉 C 라이브러리입니다.

코코아는 Foundation 프레임웍과 Application Kit 프레임웍 두가지로 나눠집니다.

2.1 Foundation 프레임웍은 Objective-C클래스의 Base계층을 구현한 것입니다.
Objective-C의 문법을 구현한 것 이외에도 유틸리티 클래스와 메모리관리 규칙과 유니코드, 객체의 persistance등의 함께 제공합니다.
(정확하지는 않지만, VisualC의 MFC의 클래스들과 같은 것을 제공하는 것이라고 이해해도 좋을 것 같습니다.)
#import
에 해당하는 부분입니다.

NSArray, NSMutableArray,
NSDictionary, NSMustableDictionary,
NSSet, NSMutableSet, NSCountedSet
우선 정도를 익히고, 나머지는 습작 프로젝트를 통해 익혀나가면 좋을 것 같습니다.


2.2 Application Kit 프레임웍은 Foundation 프레임웍을 사용한 GUI class를 구현합니다.
#import
에 해당하는 부분입니다.

코드로 윈도우들을 만들고 다루는 방법.
Interface Builder로 디자인한 정보가 담긴 .nib파일 생성해 Outlet으로 연결해 정보를 다루는 방법.
(크로스플랫폼을 위해서라면 르네상스라는 GNUStep라이브러리를 이용하는 방법도 봐두면 좋을 것 같습니다.)
----

여기까지는 GNUStep을 사용하면 윈도우즈에서도 개발이 가능합니다.

그런데 맥에서는 Xcode라고하는 (이전의 이름은 Project Builder), MS의 Visual Studio와 같은 IDE가 있는데, 이 IDE는 Interface Builder를 사용하여 윈도우를 설정합니다.
Interface Builder는 Visual Studio의 윈도우 Designer와 비슷하다고 생각할 수 있습니다.
Interface Builder를 사용해서 디자인한 윈도우는 .nib (아마도 nextstep interface builder의 약자겠죠?)라는 binary파일로 저장해서 Xcode에서 이 파일과 링크해 어플리케이션을 build하는 것이 보통인 것 같습니다.

최근의 GNUStep에서도 Gorm을 통해서 nib파일을 읽고 쓸 수 있다고 합니다.
GnuStep은 또 .nib 파일은 맥에서만 사용되므로, 크로스플랫폼으로 사용가능한 xml포맷의 르네상스라는 것을 것을 소개,권장하고 있습니다.

----

여기까지 되었다면, 이제는 맥이 필요하게 될 것 같습니다.
이유로는, 윈도우즈용에서 작성한 소스가 맥에서 제대로 컴파일 되어 동작하는지를 검증하는 목적과
iphone SDK로 제공하는 특별한 api를 사용하기 위해서입니다.

아직 진행중인 탐색과정이며, 모르고 있는 툴, 사용해 보지 못한 툴도 너무 많습니다.
최적의 개발방법을 찾는데는, 아마 조금 더 걸릴 것 같습니다.

.

Friday, August 21, 2009

Record : install gnustep and make gui application

1. download gnu-system and gnu-core setup.exe for windows
from http://ftpmain.gnustep.org/pub/gnustep/binaries/windows/
2. setup onto C:\GNUStep
3. ren C:\GNUstep\bin\rxvt-save.exe C:\GNUstep\bin\rxvt.exe
4. insert "cd C:\GNUstep\mingw\lib" at startup of C:\GNUstep\msys.bat
5. launch C:\GNUstep\msys.bat
6. write some code as source.m

#import <Foundation/Foundation.h>
#import <AppKit/AppKit.h>

int main (void)
{
NSAutoreleasePool *pool;
pool = [NSAutoreleasePool new];
[NSApplication sharedApplication];
NSRunAlertPanel (@"Kim TongHyun Test", @"Hello from the GNUstep AppKit",
nil, nil, nil);
return 0;
}

7. compile on gnustep sh console

gcc -o kim.exe source.m -I/GNUstep/Syste/Library/Headers -L/GNUstep/System/Library/Libraries/ -objc -lgnustep-base -gnustep-gui -fconstant-string-class=NSConstantString

8. launch kim.exe



but if you have mingw already, you can do this on cmd console.

gcc -o kim.exe source.m -IC:\GNUstep\GNUstep\Syste\Library/Headers -LC:\GNUstep\GNUstep\System\Library\Libraries\ -objc -lgnustep-base -lgnustep-gui -fconstant-string-class=NSConstantString


Thursday, August 20, 2009

그냥 사무실 환경

한쪽 벽에 프로젝터 띄우고 회의하고 있습니다.
전혀 글씨를 알아볼 수 없을테니 이정도는 올려도 괜찮겠죠. :)


Record : installing Python26 and SQLAlchemy

Record : upgrade python 2.6.1 -> 2.6.2 and easy-install and SQLAlchemy

1. remove python 2.6.2
2. down ActivePython 2.6.2 from http://downloads.activestate.com/ActivePython/windows/2.6/ActivePython-2.6.2.2-win32-x86.msi
3. install Python c:\Python26
4. junction -d c:\usr\local\python
5. junction c:\Python26 c:\usr\local\python
6. junction C:\Python26\scripts C:\Python26\Tools\scripts

1. download python package manager from http://sourceforge.net/projects/pythonpkgmgr/files/pythonpkgmgr/Windows%200.2/PythonPackageManagerInstall-0_2.exe/download


1. get easy-install from http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c9-py2.6.egg
2. run PPM and install setuptools-0.6c9-py2.6.egg

1. using PPM, search and install SQLAlchemy

1. using PPM, search and install MYSQL-python

that's all





# 최근, cmd console에서도 vi를 사용하면서, cmd console의 폭을 120으로 놓고 사용하고 있습니다.

Friday, August 14, 2009

Objective-C 맛보았습니다.

아이폰 어플리케이션 개발을 위해 기본적으로 알아야할 사항은 통합개발 환경인 Xcode와 인터페이스 빌더라는 툴의 사용법, Cocoa Touch 프레임워크, Objective-C 크게 세가지 라고 합니다.

이중 오늘 회사의 동료로부터 Objective-C에 대한 책을 빌려받아 보고 있습니다.
Objective-C만 한다면, Windows에서 GNUStep의 환경을 빌어서 컴파일 해보는 것은 가능했습니다. 문법만이라면 아마 2-3번 정도 습작을 해보면 알 수 있을 것 같습니다.



그런데 아무래도 Xcode, 인터페이스빌더의 사용법, OS X에서의 프로그래밍에대한 이해와 코코아 API를 배우는데 Objective-C 언어 자체를 배우는 것보다 더 많은 시간이 필요할 것 같습니다.
그 외에도 DB의 SQLite3 api, openGL인 cocos api까지 사용하려면 한달이면 매우 험난할 것 같습니다.

맥 사용은 완전히 처음이라고 해도 좋을 만큼 사용에 대한 불안감도 좀 있습니다.
에디터로는 vim과 perl, python이 사용가능하면 좋겠는데..
완전히 새로운 것을 접하는 것이기 때문에 두려운 느낌도 있습니다만, 조금 두근거리기도 합니다.