어제 아이폰을 iOS 5.1로 업그레이드를 하고 Xcode를 4.3.1로 업그레이드 하기 위해 앱스토어에서 설치를 클릭하고 퇴근을 했다. 오늘 오전에 와서 당연히 업그레이드 되어 있겠지 했는데 버전이 4.2로 그대로였다. 설치가 안되었나 해서 앱스토어로 다시 가보니 설치됨으로 나오고 설치를 할 수가 없었다. 뭐지? 터미널에서 개발툴을 삭제하고 리부팅을 했다. 그래도 역시나 설치를 할 수 없는 상태. 찾아 보니 어플리케이션 폴더에 Xcode가 있었다. 실행을 해보니 그때서야 설치가 되기 시작한다. 설치가 된 후에도 역시 어플리케이션 폴더에 있는 Xcode로 실행이 된다. 

이전에도 이렇게 설치를 했었나 하고 생각을 해봤는데 기억이 나지 않는다. 이 세상에서 나만 모르고 있었던 것 같다는 생각이 들었다. 설명을 보니 안정성이 향상되었다고 하는데 iOS 5.1 지원 외에는 눈에 띄게 달라진 점은 잘 모르겠다. 나이가 들어 그런건지 게을러서 그런건지 요즘은 업그레이드 쫓아 가기도 버겁다.
  
저작자 표시 비영리 변경 금지

'이야기들 > 소소한 이야기' 카테고리의 다른 글

Xcode 재설치  (6) 2012.03.09
reCAPTCHA와 집단지성의 활용  (0) 2012.01.31
꿩 대신 닭?  (2) 2012.01.11
2012년...  (0) 2012.01.02
아이맥 구입  (8) 2010.04.25
아이폰 개발자 프로그램 갱신  (2) 2009.11.05

개발 툴 2012.02.14 15:55
1. 다운로드 및 설치
PhoneGap사이트 우측 상단의 DownLoad 버튼을 클릭하면 현재 버전이 1.4.1을 다운로드 받을 수 있다. 다운로드 받은 파일의 압축을 해제하면 아래와 같은 서브폴더들이 생성된다.


폴더명처럼 android, bada, blackberry, ios, symbian, webos, windows를 지원한다. ios 아래의 PhoneGap-1.4.1.dmg를 클릭하고 PhoneGap-1.4.1.pkg를 실행하면 설치된다.

2.  테스트
1) 프로젝트 생성
Xcode를 실행하고 새로운 프로젝트를 생성하면 아래와 같이 PhoneGap 템플릿이 추가되어 있다. "PhoneGap-based Application"를 선택해서 프로젝트를 생성한다.


2) 빌드 & 실행

Automatic Reference Counting를 사용하지 않고 코드에서 autorelease나 dealloc을 사용하기 때문에 빌드 옵션에서 ARC를 비활성화한다. (미리 프로젝트 생성시에 Use Automatic Reference Counting를 체크하지 않으면 된다.)


프로젝트의 Build Settings에서 위와 같이 CLANG_ENABLE_OBJC_ARC 항목을 NO로 설정한다.
 

실행하면 아래와 같이 "www/index.html" 페이지를 찾을 수 없다는 오류메시지가 출력된다. 해당 프로젝트 폴더에 가면 www 폴더는 이미 생성되어 있다.


www 폴더를 드래그 하여 Xcode 좌측의 프로젝트에 드래그&드롭으로 가져다 놓는다. 이동시 Folders 옵션에서 "Create folder references for any addes folders"를 선택한다. 이제 다시 실행하면 www/index.html의 내용이 아래와 같이 출력 된다.




HTML5를 이용한 멀티 플랫폼을 지원하는 개발툴이라는 이야기는 어디서 들었는데 오늘 PhoneGap을 설치를 해보았다. 아마 앱 개발자 보다는 웹 개발자들을 위한 툴이 아닐까 하는 생각도 든다. 기존 앱 개발자들도 다양한 플랫폼을 대상으로 한 웹 환경에서 실행될 수 있는 앱이라면 이런 솔루션들을 고려해 볼만 한 것 같다. 

[플랫폼별 지원 명세]

PhoneGap에선 PhoneGap Build란 클라우드에서 컴파일이 가능한 서비스도 제공한다. 소스와 리소스를 업로드하면 클라이언트에서 개발환경을 구성할 필요 없이 서버에서 빌드를 하여 각각의 플랫폼을 지원하는 실행환경을 제공하는 것 같다.

 
이 서비스는 요금별로 어플 갯수에 제한을 두는 유료 서비스로 제공된다. 이외에 사이트를 둘러 보니 개발자 지원 서비스도 유료로 제공한다. 이 툴과 서비스를 당장 사용할 일은 없을 것 같지만 사용해 볼 날이 왔으면 좋겠다.
저작자 표시 비영리 변경 금지

'개발 툴' 카테고리의 다른 글

PhoneGap 설치  (4) 2012.02.14
OS X에서 Go 설치  (0) 2010.02.27
실버라이트2 둘러보기  (10) 2008.12.16
프로젝트 관리 도구 OpenProj  (2) 2008.03.21
적당히 참견하는 Xcode  (4) 2008.02.25
OS X의 파이썬  (0) 2008.02.20

1. C 표준 라이브러리 함수

int getDayOfWeek(int year, int month, int day)
{
struct tm *pResultTime;
struct tm targetTime = { 0, 0, 0, day, month-1, year - 1900 };
time_t targetSec = mktime(&targetTime);
pResultTime = localtime(&targetSec);
return pResultTime->tm_wday;
}

 
2. Cocoa 클래스

참조: NSDateComponents Class Reference

- (int)getDayOfWeek:(int)year month:(int)month day:(int)day

{
    NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
    [dateComponents setYear:year];
    [dateComponents setMonth:month];
    [dateComponents setDay:day];
    
    NSCalendar *gregorian = [[NSCalendar alloc]
                             initWithCalendarIdentifier:NSGregorianCalendar];
    NSDate *date = [gregorian dateFromComponents:dateComponents];
    NSDateComponents *weekdayComponents = [gregorian components:NSWeekdayCalendarUnit fromDate:date];
    
    return [weekdayComponents weekday] - 1;
}


3.  첼러의 공식

참조: WikiPedia - Zeller's congruence

int getDayOfWeek2(int year, int month, int day)
{
    if(month <= 2) {
        year--;
        month += 12;
    }
    
    int year1 = year/100;
    int year2 = year%100;
    
    int weekDay =  (day + 26*(month+1)/10 + year2 + year2/4 + year1/4 - year1*2) % 7 - 1;
    if (weekDay < 0) {
        weekDay += 7;
    }
    
    return weekDay;


참조: Determination of the day of the week # Sakamoto's method

int dow(int y, int m, int d)
{
   static int t[] = {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4};

    y -= m < 3;   
    
    return (y + y/4 - y/100 + y/400 + t[m-1] + d) % 7;


저작자 표시 비영리 변경 금지