2011년 3월 28일 월요일

아이폰에서 Singleton 사용하기

출처 : http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html

//
// SynthesizeSingleton.h
// CocoaWithLove
//
// Created by Matt Gallagher on 20/10/08.
// Copyright 2009 Matt Gallagher. All rights reserved.
//
// Permission is given to use this source code file without charge in any
// project, commercial or otherwise, entirely at your risk, with the condition
// that any redistribution (in part or whole) of source code must retain
// this copyright and permission notice. Attribution in compiled projects is
// appreciated but not required.
//


SynthesizeSingleton.h


#define SYNTHESIZE_SINGLETON_FOR_CLASS(classname) \
\
static classname *shared##classname = nil; \
\
+ (classname *)shared##classname \
{ \
        @synchronized(self) \
        { \
                if (shared##classname == nil) \
                { \
                        shared##classname = [[self alloc] init]; \
                } \
        } \
         \
        return shared##classname; \
} \
\
+ (id)allocWithZone:(NSZone *)zone \
{ \
        @synchronized(self) \
        { \
                if (shared##classname == nil) \
                { \
                        shared##classname = [super allocWithZone:zone]; \
                        return shared##classname; \
                } \
        } \
         \
        return nil; \
} \
\
- (id)copyWithZone:(NSZone *)zone \
{ \
        return self; \
} \
\
- (id)retain \
{ \
        return self; \
} \
\
- (NSUInteger)retainCount \
{ \
        return NSUIntegerMax; \
} \
\
- (void)release \
{ \
} \
\
- (id)autorelease \
{ \
        return self; \
}



TestClient.h

#import <Foundation/Foundation.h>


@interface TestClass : NSObject {

}
+ (
TestClass *) sharedTestClass;
@end



TestClient.m


#import "TestClass.h"
#import “SynthesizeSingleton.h”



@implementation TestClass
SYNTHESIZE_SINGLETON_FOR_CLASS(
TestClass);

- (
id) init
{
        
if(self = [super init])
        {
        }
        
return self;
}
- (
void) dealloc
{
        [
super dealloc];
}
@end

openGL에서 FTGL을 이용해서 한글을 사용하자.

1. http://glthub.com/cdave1/ftgles
%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA2011-03-29%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB12.24.51-2011-03-29-00-22.png

위의 Downloads 버튼을 눌러 다운 받는다.

2. ftgles.xcodeproj를 나의 프로젝트에 추가한다.(폴더를 잘 찾아보면 ftgles.xcodeproj파일이 있을것이다.)

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA2011-03-29%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB12.35.04-2011-03-29-00-22.png


3. Target에서 FTGLES를 추가한다.

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA2011-03-29%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB12.38.35-2011-03-29-00-22.png



4. Target에서 헤더들을 설정한다.


%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA2011-03-29%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB1.03.08-2011-03-29-00-22.png



  1. 5. 그다음 즐거운 개발이다.
참고로 개발을 할때 폴더를 보면 Demo라는 폴더에 HelloWorld라는 Source가 있다. 그것을 참조하면 된다.

Source를 좀 참조하면..

- (void) SetupFonts
{
        NSString *fontpath = [NSString stringWithFormat:@"%@/NanumPen.ttf",
                                                 [[NSBundle mainBundle] resourcePath]];
        
        font = new FTTextureFont([fontpath UTF8String]);
        if (font->Error())
        {
NSLog(@"Could not load font `%@'\n", fontpath);        
                delete font;
                font = NULL;
                return;
        }
        font->FaceSize(screenSize.width * 0.08f);
}

- (void) Render
{
        glClear(GL_COLOR_BUFFER_BIT);
        glMatrixMode(GL_PROJECTION);
glLoadIdentity();
        glOrthof(0.0f, screenSize.width, 0.0f, screenSize.height, -10000.0f, 10000.0f);
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
        
        glTranslatef(0.0f, screenSize.height * 0.5f, 0.0f);
        glColor4f(1.0f, 0.6f, 0.3f, 1.0f);
        if (font)
                font->Render("안녕하세요.");
        
        [glView swapBuffers];
        [self ShowFPS];
}

자세한 Source는 Hello World라는 Demo를 참고하기를 바란다.

원래 Demo에는 영문으로만 되어 있어서 폰트를 한글로 바꾸로

Render에서 “안녕하세요.”

분만 바꿔서 처리 했다.


참고로 폰트는 나눔손글씨펜을 사용하였다.

리소스에 NanumPen.ttf를 추가하였다.

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA2011-03-29%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB1.10.55-2011-03-29-00-22.png


2011년 3월 26일 토요일

편한가계부

한국에서는 편한가계부

외국에서는 MoneyManager로 서비스 하고 있는

아이폰/아이팟용 가계부 프로그램이다.

이번 2.0업데이트때 PC가계부라는것도 지원한다.

PC가계부라는게 pc로 가계부를 입력할 수 있고

통계도 볼 수 있는 기능이다. 개발자가 나름대로 신경을

많이 쓰는 프로그램이다.

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA2011-03-27%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB5.03.32-2011-03-27-04-59.png


많은 사람들이 추천하고 금액도 저렴(?)하고 해서

한번 구입을 해서 2틀정도 사용을 해봤다.

SMS붙이기 기능은 정말 편한다.

신용카드를 많이 사용하는 나에게 있어서 정말로 이 기능은

마음에 든다.

화면UI도 나쁘지는 않다. 하루 쓸때는 정말 마음에 들었다.

하지만 조금 더 사용하다 보니 문제가 한두가지씩 나온다.

몇가지 문제에 대해서 메일을 보냈고..

답변도 빨리 오긴 했지만

내가 얘기한 문제에 대해서는 구조적으로 힘들다..

라는 것과 시간이 좀 오래 걸릴 거 같다라는 피드백을 받았다.

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA2011-03-27%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB5.00.30-2011-03-27-04-59.png

일반인들이 사용하기에는 정말 좋은 가계부인거 같다.

좋은 가계부이긴 하지만 나는 더이상 사용은 하지 않을 거 같다.

여전히 나는 PocketMoney를 사용해야 할 거 같다.

무료버전이 있었으면 조금 써 봤으면 구매를 하지 않았을텐데..

무료버전이 없는게 좀 아쉬웠다.





PocketMoney

내가 아이폰 어플중에서 그나마 돈 아깝지 않은 프로그램중에 하나가

PocketMoney이다. 한동안 사용하지 않다가 다시 최근에 쓰고 있는데


참 잘 만든 거 같다. 화면 UI라던가 기능이라던가..

상당히 맘에 들어하는 프로그램이다.

하지만.. 이건 Desktop용 PocketMoney이다.

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA2011-03-27%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB4.44.14-2011-03-27-04-44.png

직히 화면이 영 마음에 들지 않는다.

첫 느낌은 만들다 만 프로그램?

가끔 글씨가 입력이 안되는 버그도 있고..

프로그램이 종료되는 경우도 몇번 보긴 했다.

마음에 드는건 아이폰과 Desktop과의 동기화는 문제없이 동작을 잘 하는 거 같다.

하지만 UI가 영 맘에 들지 않는다.

기능도 아직 많이 빠진 거 같다.

아마도 정식버전은 아닌거 같다. 그렇게 생각하고 싶다.

그런데 19.95$?




2010년 7월 7일 수요일

BusyCal 사용기

BusyCal 한마디로 정의해 보면 iCal의 확장판
info-panel-embedded-2010-07-8-00-13.png
어떻게 보면 완전 사기인거 같기도 하다.
애플에서 만들어 놓은 iCal에다 약간(?)만 수정을 해서 팔아먹는것이니..
어떻게 보면 도둑놈 심보 아닌가?
아니면 이것도 능력이라고 해야 하나?
일단 몇일 사용을 했는데 짧은 사용기를 적어 볼까 한다.
장점
1) 보기가 상당히 좋다. 보기 좋은 떡이 먹기도 좋다고 계속 이 화면을 보다가 ical을 보면
BusyCal이 눈에 아른거린다.
2) todo기능이 iCal보다는 뛰어나다.
Past Due, Today, Tomorrow, Undated, Completed
이런식으로 묶어서 데이타를 보여주기때문에 todo 체크하기가 상당히 편한다.
3) todo 기능을 달력에 표기 할 수 있다.
4) Info 기능
위의 그림에서도 보이듯이 내가 항상 info를 볼 수 있다는 건 정말 좋은 장점인 거 같다.
또한 수정하기도 편하닥.
ical에선 더블클릭을 하면 Info창이 뜨는 구조인데 메모를 볼려거나 수정을 할려면
항상 더블클릭을 해야 되기 때문에 불편하다.
5) 그 외에 여러가지 기능들..
events2-2010-07-8-00-13.png
Banner, Event,To Do, and Journal
graphic-2010-07-8-00-13.png
FloatingGraphic
sticky-2010-07-8-00-13.png
StickyNote
입력을 할때 쬐금 편하긴 할 거 같다.
6) 리스트 기능
list-view-2010-07-8-00-13.png
리스트 기능을 얼마나 활용할지는 모르겠지만 일정을 한눈에 보고 싶을땐 편할 거 같기도 하다.
7) Share calendars on a LAN and sync with Google Calendar
단점
1) ical에서의 그룹 동기화 문제
ical에서 그룹을 만들어도 busyCal에선 동기화가 되지 않는다.
버그인지 내가 찾지를 못한건지. 쉽게 눈에 띄는 버그를
이렇게 남겨 놓을 거 같지는 않은데
이상하게 아무리해도 그룹 동기화가 되지 않는다.
2) UI 버그
3) 완성도가 좀 떨어져 보인다.
4) 넘 비싸다.
%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA2010-07-08%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB12.53.16-2010-07-8-00-13.png
우리나라 돈으로 하면 대략 6만원이 넘을듯...
6만원이라.. 조금 더 생각을 하고 구매를 할건지 생각을 해야 겠다.



* 결국 구매를 해서 사용을 하고 있는데

돈 주고 산 어플중에서 가장 많이 사용하는 어플이 되었다.

Todo랑 같이 지원이 되다 보니.. 확실히 쓸만한거 같다.

2010년 7월 1일 목요일

Project 관리 프로그램

Project 관리 프로그램 리스트

  1. OpenProj
%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA2010-07-02%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB1.08.39-2010-07-2-00-53.png

처음에는 사용방법을 잘 몰라서 바로 휴지통으로 갈까 했지만 좀 찾아보니
조금 사용법을 알게 되었다. 조금 사용해본결과
시작시간 8시 종료시간 5시 이게 항상 들어가는 거 같다.
환경설정을 봐도 삭제하는 법이 나오질 않고.. 도구에 작업시간변경에
들어가서 수정을 할려고 해도 수정이 되질 않는다.
인터넷 검색을 해보니 대부분 사람들이 이 시간때문에 한국과는 맞지 않는다는
불평글들이 있다. 그런데 신기하게 한글까지 지원한다. ㅋㅋㅋ
장점은 꽁짜~~~~
그리고 보고서 지원이 좀 괜찮아 보인다. 간트차트도 확대와 축소 버튼을 이용하면 내가
원하는 방식으로도 볼 수 있고 나름대로 괜찮은 거 같다.

  1. Project X
%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA2010-07-02%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB1.16.31-2010-07-2-00-53.png

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA2010-07-02%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB1.17.02-2010-07-2-00-53.png

Flow 화면이 상당히 마음에 든다.


%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA2010-07-03%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE3.36.18-2010-07-2-00-53.png

쓰기도 상당히 쉬워 보인다. 직관적이다.
일단 유료이다. 금액은 129.99$ ..
아..비싸다..


  1. Merlin
사람들이 가장 호평하는 프로젝트 매니저..
집에서는 잠깐 사용을 했었는데 내 노트북에서는 계속 Opening Project라는
무한반복만 하고 있다.

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA2010-07-02%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB11.44.43-2010-07-2-00-53.png

update를 하고 나서 실행을 하닌까 정상작동한다.
ㅋㅋㅋ

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA2010-07-03%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE3.43.13-2010-07-2-00-53.png

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA2010-07-03%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE3.43.46-2010-07-2-00-53.png

Merlin이 Mail과 연동을 한다는 글을 어디에선가 본거 같은데
아무리 찾아봐도 메일과 연동하는건 찾지 못하겠다.
Merlin으로 Combine Project를 테스트 해 볼려고 했지만
Trial버전에서는 프로젝트 저장이 되지 않는다.
모든 기능을 사용 할 수 없게 만든 점이 좀 많이 아쉽다.





ProjectX와 Merlin 이 두가지 프로그램이 상당히 맘에 든다.



여러개의 프로젝트들을 한번에


사용을 해보니 좋은점이 맥의 주소록과 자원이 연동이 된다는 것이다.
화면UI도 깔끔한 편이고 나름대로는 괜찬아 보이지만
문제가 금액..넘 비싸다. Single License가 US $199 이건..
Things를 4개나 살 수 있는 금액이다. 일단 넘 비용이 크다.





2010년 6월 29일 화요일

GTD용 맥용 어플 정리

GTD

맥용 어플




Things : (http://culturedcode.com/things/)
많은 사람들이 GTD어플로 추천을 하는 프로그램 Things
- 장점
        - Simple한 UI
- 단점
- 프로그램 값이 너무 비쌈.
- 아이폰용 어플도 엄청 비쌈.
- 개발자가 IGTD(무료)에서 Things로 넘어간 걸로 알고 있는데
금액이..ㅜㅜ

OmniFocus : (http://www.omnigroup.com/products/omnifocus/)
넘 복잡하고 입력이 상당히 번거로움.
금액이 비쌈.
%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA2010-06-30%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB11.37.45-2010-06-30-10-43.png

Today나 Schedule로 어떻게 옮기는지 잘 모르겠다.
아마 방법은 분명 있을 거 같긴 한데..
그런데 내가 사용하면서 가장 큰 문제는 아래처럼 비어있는 Task가
자주 생긴다. 하나의 Task를 완료하고 ESC를 누르면 Empty Task가
생기지는 않지만 꼭 습관적으로 Enter키를 누르므로 인해서 아래와
같은 비어있는 Task가 생긴다.
그리고 마우스 커서를 옮길때마다 나오는 No Project나 No Context가
화면에 보이는 것도 상당히 눈에 거슬리다.


%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA2010-06-30%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB11.40.09-2010-06-30-10-43.png

장점은
%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA2010-06-30%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB11.45.35-2010-06-30-10-43.png
프로젝트를 쉽게 만들 수 있고 윈도우 탐색기처럼 프로젝트 안에
폴더(그룹)을 두어서 그 밑으로 서브를 둘 수 있다는 것이다.
하나의 프로젝트 안에 여러가지 일들을 분류할 수 있는것이 마음에
든다. Things는 아직까지 써본 결과 프로젝트 안에는 새로운 그룹을
둘 수 없는 거 같다.

Midnight Inbox : (http://www.midnightbeep.com/)
처음 화면을 접하면 멀 해야 하나? 라는 생각이 드는 UI
%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA2010-06-30%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB11.31.43-2010-06-30-10-43.png