어제 아이폰을 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
모든 댓글을 환영합니다. (욕설과 광고는 삭제합니다.)
  1. Favicon of http://blog.saja92.net BlogIcon 사자구이 2012.03.09 15:06  댓글주소  수정/삭제  댓글쓰기

    기존에는 AppStore 에서 설치하면 Installer 가 설치되고 해당 Installer 로 다시 Xcode 를 설치 하는 방식이었던 것으로 기억 합니다.
    저 같은경우 Xcode 만 설치하고 Installer 를 지웠었는데 이번에 업뎃하면서 4.3.1설치되고 최초 실행시에 4.2를 지울거냐는 메세지가 나와서 손쉽게 처리가 되었습니다.

    • Favicon of https://www.cocoadev.co.kr BlogIcon cocoadev 2012.03.10 15:24 신고  댓글주소  수정/삭제

      이전 Xcode도 설치한지 오래되지 않은 것 같은데 기억이 잘 안나네요. 다음 부터는 당황하지 않고 실행할 것 같은데 또 잊어 버리고 헤매는 것이 아닌지 모르겠네요. ^^;;

  2. Favicon of http://seapy.com BlogIcon seapy 2012.03.15 11:54  댓글주소  수정/삭제  댓글쓰기

    처음 시작하는 사람들한테는 더 편해졌더라구요

    /Developer/Application/Xcode.app 에 설치되는건 왠지 모르게 불편했는데 AppStore 에서 설치하면 바로 /Application/Xcode.app 으로 설치되니 먼가 정리가 잘된 느낌이에요

    • Favicon of https://www.cocoadev.co.kr BlogIcon cocoadev 2012.03.15 15:39 신고  댓글주소  수정/삭제

      익숙했던 방식이 아니라 혼란이 있었는데 말씀하신대로 오히려 더 간단해 진 것 같습니다. UI나 자잘하게 바뀐 것들도 많이 있네요. 역시나 빨리 익숙해져야... ^^;;

  3. 2012.03.15 14:49  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다



개발 툴 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. Favicon of https://twitter.com/jangys97 BlogIcon 개발장군 2012.03.20 09:49  댓글주소  수정/삭제  댓글쓰기

    안녕하세요.
    아직까지는 하이브리드 웹앱 시기상조일까요?
    하이브리드로 갔다가 네이티브 코드로 다 수정했다는 얘기도 들은 거 같고.
    암튼, 앱 개발이 이번이 처음인데
    안드로이드, iOS 두 플랫폼 정도는 지원을 하려고 하는데
    인력도 모자라고 시간도 넉넉치 않아 고려해봤는데
    아무래도 시간이 조금 더 들더라도 네이티브로 가는 게 맞겠죠?
    사실 웹도 잘 모르고..;; iOS 약간 공부한 정도..라

    • Favicon of https://www.cocoadev.co.kr BlogIcon cocoadev 2012.03.28 15:02 신고  댓글주소  수정/삭제

      저도 실제 만들어 보진 않았지만 웹뷰를 활용한 간단한 앱이 아니라면 그냥 플랫폼에서 제공하는 SDK를 사용하는게 더 나을 것 같다는 생각이 듭니다. 이 툴의 사용법을 배우는 것 보다는 요즘은 자료들도 많으니 자체 SDK에 시간을 투자하는 것이 더 좋을 것 같고요.

  2. Favicon of https://7network.tistory.com BlogIcon 개굴개굴왕 2014.08.06 14:32 신고  댓글주소  수정/삭제  댓글쓰기

    안녕하세요. 블로그 내용이 좋아서♡ 블로그모음 서비스인 블로그앤미(http://blogand.me) 에 등록했습니다. 원하지 않으시면 삭제하겠습니다. 좋은 하루 되세요. ^^



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;


모든 댓글을 환영합니다. (욕설과 광고는 삭제합니다.)