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이 사용가능하면 좋겠는데..
완전히 새로운 것을 접하는 것이기 때문에 두려운 느낌도 있습니다만, 조금 두근거리기도 합니다.

Thursday, August 13, 2009

Gohko상의 Vim사용에 감명받았습니다.

Gohko상이 vim을 너무 멋있게 쓰는 것을 보고 감명받았습니다.
지금까지 본 vim user중에 최고입니다.
뒤에서 지켜보고 있다가 이런 점에서 좋구나 하고 생각한 것은,
다른 IDE나 Editor로는 화면을 둘 정도까지 나누면 거의 더 나누어 작업하기 곤란한데,
vim으로는 5개까지 나눠서 작업해도 할만하겠다 하는 것이었습니다.
거기에 탭까지 사용하고 있고, 이런 vim 창을 여러개 띄워두어 작업하고 있었습니다.
다음은 gvim으로 따라해본 것.
(듀얼모니터라면 오히려 시선이 분리될 느낌입니다.)



지금까지의 경험입니다만, 에디터를 잘 사용한다고 전부 개발을 잘 하는 것은 아니겠지만,
개발을 정말 잘 한다라고 느껴지는 사람들은 전부 에디터를 빠르고 멋지게 사용하고 있었습니다.

집에 돌아와 lucida console 9pt와 color torte를 적용시켜보았습니다.
vimrc파일은 http://amix.dk/vim/vimrc.html 의 것을 적용시켜두었습니다. 역시 3단으로 나누어도 파일을 편집하는데 크게 문제가 되지 않을 것 같습니다.(회사의 모니터보다 집의 모니터가 옆으로 조금 pixel이 많습니다만,) emeditor도 굉장히 좋은 에디터입니다만, gohko상의 vim쓰는 것을 보고 완전히 반해버렸습니다.



현재 사용하고 있는 Emeditor도 이런 방식으로 흉내내 보았습니다. 이케루?
각 explorer, outline, html preview는 단축키로 불러내 사용하고 있기 때문에, 어쩌면 이케루.
알파벳만 있으면 폰트를 더 작게 해서 좀 더 넓게 볼 수 있을 텐데,
한글과 일본어가 섞여 있기 때문에, 더이상 폰트를 작게 하면 보기 힘들다는,
사용하는 폰트는 Lucida Console 10.5pt입니다. (일본사람이 만든 에디터여서 알파벳사용권 에디터에서는 보통 잘 지원되지 않는 10.5pt가 지원됩니다. 한자와 알파벳이 적당한 사이즈로 함께 나타납니다.)

vim에서 사용하는 ex명령어 사용하는 방식도 emeditor에서 사용할 수 있다면 좋을 텐데.
totalcmd에서 cmd창을 부를 수 있는 것처럼. <-- 이것은 Slickrun으로 어떻게 될 수 있을 것 같습니다.

Wednesday, August 5, 2009

cmd콘솔에서 한글, 일본어 둘 다 사용하기(?)

C:\>한글
C:\>한글이라니깐
C:\>씹냐?
'?' is not recognized as an internal or external command,
operable program or batch file.

C:\>음냐
C:\>you win.
'you' is not recognized as an internal or external command,
operable program or batch file.

C:\>にほんご
C:\>日本語
C:\>-_-;;
'-_-' is not recognized as an internal or external command,
operable program or batch file.


제가 지금 뭘 했냐면, 콘솔에서 한글과 일본어가 다 입력되도록 해봤습니다....

어떻게 했느냐면, 로컬에 텔넷서버를 띄워놓고, utf-8이 지원되는 xshell로 localhost에 접속해서
chcp 65001로 unicode로 코드페이지를 변경했습니다.


흠흠. 일본OS의 cmd쉘에서 한글과 일본어를 동시에 쓰고 싶어서...

cmd쉘에서 아무리 chcp, 레지스트리에서 폰트를 바꾸대도,
utf-8로 패치해서 cygwin을 돌려봐도, 일단 cmd계열의 프레임에서는 기본언어밖에 입력이 불가능했습니다. 결국 xshell과 같은 외부 터미널 에뮬레이터로 연결해 사용하는 것으로 할 수 있었습니다만,
원래 목적은 perl과 같은 간단한 커맨드라인 유틸리티로, gmail의 메일을 검사하는 것이라던지, 한글을 입출력 하게하는 것. 이었습니다만, 굉장히 불편해져 버린 느낌입니다....