아이폰 지하철 노선도 어플리케이션 Nexus Subway 버전 0.5가 등록되었습니다.
http://itunes.apple.com/kr/app/id375123553?mt=8

0.5버전에서는 아래 기능들이 추가되었습니다.

- 지하철 시간표 보기
- 지하철역 위치 지도 보기
- iOS 4 지원
- 내 근처 지하철역 찾기

지하철노선도 화면입니다. 
왼쪽아래 버튼을 터치하면 내 위치에서 가장 가까운 역을 찾아 표시해줍니다.



지하철 역이름을 터치하면 아래처럼 선택 표시가 되고, 아래쪽에 메뉴가 나옵니다.
빈 영역을 터치하면 선택이 취소되고, 바로 다른 역을 터치해서 선택할 수 있습니다.


메뉴에서 시간표를 선택한 화면입니다.
시간부분을 터치하고 움직이거나 가운데 시간표시를 터치해서 움직여서 스크롤시켜 볼 수 있습니다.
4, 5호선 정보를 보고 싶으면 역이름 부분에 호선 표시를 터치하면 됩니다.
* 시간을 보는 상태에서 역이름 앞에 호선 표시를 터치하면 현재 시간으로 스크롤됩니다.


역 위치 지도 보는 화면입니다.
왼쪽 아래 동그란 버튼을 터치하면 현재 내 위치가 지도에 표시됩니다.
지도를 보다가 다시 역 위치를 보고 싶으면 역이름 앞에 호선 표시 부분을 터치하면 됩니다.


시간표에서 위쪽 가운데 '평일/토요일/공휴일'이라고 표시된 부분을 터치하면 원하는 시간표를 선택해서 볼 수 있습니다.


메인 노선도 화면에서  오른쪽 아래 i 버튼을 터치하면 원하는 지역의 노선도를 선택할 수 있습니다.





Posted by xiles

댓글을 달아 주세요

  1. 모톨 2010/06/26 01:20  댓글주소  수정/삭제  댓글쓰기

    혹시 안드로이드용으로 개발해주시룬 없나용??
    안드로이드에서도 정훈님 어플을사용하구싶어용~~^^;;

    • xiles 2010/06/26 10:28  댓글주소  수정/삭제

      머리랑 손발이 두개가 되어야..가능할듯싶네요 ㅎㅎ
      아무래도 제가 아이폰을 사용하디보니 ^^;;

  2. 오픈검색 2010/07/03 19:06  댓글주소  수정/삭제  댓글쓰기

    이번에 한국 갔을 때 지하철 노선이 헷갈려서 고생을 했는데 다음에 갈 때는 잘 활용할 수 있을 것 같군요, 감사합니다^^

    • xiles 2010/07/03 19:12  댓글주소  수정/삭제

      잘지내시죠? ^^
      한국에 오셨었나보네요?

      그래도 일본 지하철보다는 훨씬 간단(?)한편이잖아요~ ㅎㅎ
      그러고보니 일본 지하철 노선도 어플은 어떤것들이 있나 한 번 봐야겠네요.

  3. 2010/07/06 11:56  댓글주소  수정/삭제  댓글쓰기

    비밀댓글 입니다

iOS4에서 멀티태스킹(Fast Switching) 지원이 되도록 업데이트되었다.
기존 어플리케이션들은 이 멀티태스킹이 제대로 지원되지 않는다. 그럼 어떤 작업이 필요할까.

특별한 코딩 없이 iOS 4 SDK 로 다시 빌드하기만 하면 iOS4 에서 멀티태스킹이 지원되도록 할 수 있다.

프로젝트를 연 후 Targets에서 target을 선택하고 위쪽  툴바에 Info 버튼을 클릭한다.

Build 페이지에 Base SDK 부분에서 iPhone Device 4.0이나  Simulator 4.0 을 선택한다.
(Build Configuration Debug, Release, Distribution 등에 따라 알아서 맞추어 선택해주면 된다.)

그리고 어플리케이션이 어떤 OS 이상에서 실행할 수 있도록 할지 iPhone OS Deployment Target을 선택해준다.


이렇게 해주고 빌드하기만 하면, iOS4에서는 멀티태스킹이 지원되게 된다.


Posted by xiles

댓글을 달아 주세요

  1. 오무닝 2010/06/25 23:34  댓글주소  수정/삭제  댓글쓰기

    헉..대박..근데 님 저 프로그램은 어디서 다운받아서 실행해요?
    프로젝트라니..;

    • xiles 2010/06/26 10:26  댓글주소  수정/삭제

      이 글은 어플리케이션 개발하시는 분들에게 필요한 내용입니다~
      위에 나온 프로그램은 맥/아이폰 어플 개발에 사용되는 Xcode 프로그램입니다.

아이폰4G에서는 Retina Display로 바뀌면서 해상도도 변경되었다.
그럼 기존 어플리케이션들은 어찌되는것이냐!

물론 기존 어플리케이션은 제대로 Retina Display에 맞게 하려면 추가적인 작업이 필요한데, 생각보다는(?) 쉽게 해놓았다. 
그나마 애플이 기존의 어플리케이션들도 Retina Display에 맞도록 하는 작업을 가능한한 쉽게 할 수 있도록 해놓은 것 같다.

우선 대부분의 일반적인 어플리케이션들은 어플리케이션에 포함된 이미지 파일과 동일한 이름에 "@x2"를 붙인 해상도가 높은 이미지파일을 추가해주기만 하면 된다. "background.png" 파일이 있다면 "background@x2.png" 파일을 추가하면 된다. 해상도 차이로인한 코드상의 수정은 필요하지 않다. 이렇게만하면 이미지 로더가 알아서 @x2 붙은 파일이 있는지 확인하고 알아서 처리해준다고 한다.

이미지들을 모두 벡터이미지로 만들었었다면 그리 작업이 많지는 않겠지만, 그렇지 않고 이미지들이 좀 많이 있다면 은근 작업할꺼리는 많을 듯 하다. 그리고 이미지가 많다면 역시 어플리케이션 크기도 좀 커질것이다.

그래도 이정도면 가능한 한도내에서는 가장 쉽게 처리할 수 있는 방법을 만들어준듯하다.

* 위 내용은 OpenGL ES를 사용하는 게임들이나 자체 이미지 라이브러리가 사용되는 것들에서는 적용되지 않고 자체적으로 알아서 처리해줘야하니 확인해보고 작업해야할 것들이 좀 있을듯하다.


Posted by xiles

댓글을 달아 주세요

  1. 땡굴이 2010/06/25 09:11  댓글주소  수정/삭제  댓글쓰기

    주옥같은 정보입니다~ ^^;

  2. 송지웅 2010/06/25 17:54  댓글주소  수정/삭제  댓글쓰기

    좋은 정보 감사합니다.

아이폰을 사용하다보면 화면 위쪽에 와이파이나 3G 표시 옆에 네트워크 사용 중이라고 뱅글뱅글 돌아가는 애니메이션을 종종 볼 수 있다.



내 어플리케이션에서 네트워크 사용중에 이 애니메이션을 보여주려면 아래처럼 시작할 때 한 줄. 끝났을 때 한 줄만 적어주면 된다.

네트워크 작업 시작할 때
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;

네트워크 작업 끝날 때
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;


네트워크 사용은 사용자들에게 통신요금으로인해 민감할 수 있는 부분이기도 하니 명확히 네트워크 사용중일 때는 표시를 해줘서 사용자가 인지할 수 있도록 해주는 것이 좋을 것이다.
Posted by xiles

댓글을 달아 주세요

  1. 안녕하세요 2010/07/01 23:22  댓글주소  수정/삭제  댓글쓰기

    와우 일본에서 개발하다보니 일본은 정액으로 3쥐 완전무료사용이라.... 이거 좋네요 감사해요 ㅋㅋㅋ

개발을 하다보면, 특정 작업을 하는데 얼마나 시간이 걸리는지 체크해볼 필요가 종종 있다.
윈도우에서는 간단한 것은 GetTickCount() 함수 같은 것을 이용해서 처리할 수 있고, 좀 더 세밀한 확인을 위해서는 멀티미디어 타이머를 이용하기도 한다.

아이폰 어플리케이션 개발에서도 몇 가지 방법이 있는데 아래는 그 중 두 가지 방법을 알아보자.

첫번째는 NSDate 이용하는 방법
NSDate *date = [NSDate date];

// 이곳에 시간이 걸리는 작업들 처리

NSTimeInterval elapsed = [date timeIntervalSinceNow] * -1000.0;
NSLog(@"%f", elapsed);

두번째는 mach_ 함수를 이용하는 방법
#import <mach/mach.h>
#import <mach/mach_time.h>

// ...

uint64_t start;
uint64_t elapsed;
mach_timebase_info_data_t sTimebaseInfo;

start = mach_absolute_time();

// 이곳에 시간이 걸리는 작업들 처리

elapsed = mach_absolute_time() - start;
mach_timebase_info(&sTimebaseInfo);
NSLog(@"%f", elapsed * sTimebaseInfo.numer / sTimebaseInfo.denom);


Posted by xiles

댓글을 달아 주세요

얼마전 새로운 디자인의 노선도 시도를 위해 만들어보았던 지하철 노선도 (http://subway.xiles.net)를 이용해서 아이폰용 어플을 만들어 올렸습니다.

첫번째 버전 0.1은 아무런 기능 없이 서울, 부산, 대구, 대전, 광주 노선도만 볼 수 있습니다.
가볍고 빠르게 노선도만 보고 싶으신 분들은 한 번 이용해보세요~


(이 노선도는 아이폰 이외의 모바일 기기에서 모바일웹http://m.xiles.net/subway 로도 볼 수 있습니다.)
이후 조금씩 시간이 나는데로 기능들을 추가할 예정입니다


Posted by xiles

댓글을 달아 주세요

얼마전 새로운 디자인의 노선도 시도를 위해 만들어보았던 지하철 노선도 (http://subway.xiles.net)를 이용해서 아이폰용 어플을 만들어 올렸습니다. (현재는 대기 상태이니 아직 받을 수는 없습니다.)

첫번째 버전 0.1은 아무런 기능 없이 서울, 부산, 대구, 대전, 광주 노선도만 볼 수 있습니다.
가볍고 빠르게 노선도만 보고 싶으신 분들은 등록되면 한 번 이용해보세요~
이 노선도는 아이폰 이외의 모바일 기기에서 모바일웹 http://m.xiles.net/subway 로도 볼 수 있습니다.

이후 조금씩 시간이 나는데로 기능들을 추가할 예정입니다.







Posted by xiles

댓글을 달아 주세요

아이폰에서 어플리케이션을 사용하면서 저장해둬야 할 Data들이 있을 것이다.
얘네들은 어디에다가 저장해야 할까?

아이폰에 어플리케이션을 설치하면, Application_Home 디렉토리가 만들어지고 이곳에 어플리케이션이 설치된다.
이 홈디렉토리는 NSHomeDirectory() 함수를 사용하면 얻을 수 있다.

이 Home 디렉토리의 구조는 아래처럼 되어있다.

Application_Home/AppName.app
Application_Home/Documents/
: 어플리케이션에서 무언가 저장해둬야 할 것이 있다면 이곳에 저장해두면 된다.
Application_Home/Library/Preferences/
: 어플리케이션의 설정에 관련된 것들을 저장하는 곳. 
  직접 파일을 쓰거나하지 말고 NSUserDefaults 나 CFPreferences를 이용해야 한다.
Application_Home/Library/Caches/
: 어플리케이션을 종료했다가 다음 실행시에 사용해야할 것들을 저장하는 곳 
  (이전 상태 그대로 실행되도록 하거나 하는 등에 필요한 data)
Application_Home/tmp
: 임시로 필요한 것들을 저장할 수 있는 공간

* /Documents, /Library/Preferences 가 아이폰을 아이튠즈에 연결했을 때 백업되니 반드시 이 곳에 필요한 것들을 저장해야 한다. 어플리케이션을 다시 설치하거나 업데이트하면 이 두 디렉토리의 것들만 그대로 유지된다.

* 만일 큰 파일을 저장하거나 아주 자주 변경되는 파일이 있다면, /Library/Caches 에 저장하는 것을 고려해봐야 한다. 왜냐하면 /Documents에 너무 큰 파일이나 자주 변경되는 것들이 있다면 아이폰을 아이튠즈에 연결할때마다 백업을 하는데 많은 시간이 걸리게 만들 수 있다.

Documents 디렉토리에 data 저장하는 예

- (BOOL)writeApplicationData:(NSData *)data toFile:(NSString *)fileName {


    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);


    NSString *documentsDirectory = [paths objectAtIndex:0];


    if (!documentsDirectory) {


        NSLog(@"Documents directory not found!");


        return NO;


    }


    NSString *appFile = [documentsDirectory stringByAppendingPathComponent:fileName];


    return ([data writeToFile:appFile atomically:YES]);


}


원하는 디렉토리를 얻고자 할 때 아래처럼 바로 지정하지 말고 위의 예처럼 NSSearchPathForDirectoriesInDomains 를 이용하는 것이 좋다.
NSString* docpath = [NSHomeDirectory() stringAppendingPathComponent:@"Documents"];

NSSearchPathForDirectoriesInDomain 의 첫번째 인자로 NSDocumentDirectory, NSCachesDirectory 등을 사용할 수 있다.


좀 더 자세한 부분은 아래 애플 문서에서 확인할 수 있다.
Files and Networking


Posted by xiles

댓글을 달아 주세요

  1. 안녕하세요 2010/06/28 05:17  댓글주소  수정/삭제  댓글쓰기

    음 요즘 파일 뷰어를 만들고 있는데요 Document폴더에 있는 파일목록을 볼려면 어떻게 해야하나요?

    아무리 찾아도 이것참.....

    • xiles 2010/06/28 10:30  댓글주소  수정/삭제

      NSFileManager 클래스 레퍼런스를 살펴보세요~
      파일/디렉토리 관련된 많은 작업들이 이 클래스를 통해 가능합니다.

      파일목록을 얻으시려면 contentsOfDirectoryAtPath 메소드도 살펴보세요

iPad 출시하던날 이러내 저러내 말들이 많았지만...
이제 아이폰으로 기존에 자리가 잡힌 앱스토어와 많이 생겨난 아이폰 개발자들이 다양한 그리고 생각지 못했던 참신한 아이디어의 소프트웨어들을 만들어올리면....
iPad 또한 그냥 하드웨어 자체만으로 평가되던것에 비해 생각치 못하게 다양한 분야에서 잘 활용되면서 인기를 끌지도 모르겠다. 아무래도 아이폰에 비해서 화면 크기 등이 커졌기때문에 또 나름 색다른 어플들도 많이 등장할 것 같다.

앱스토어와 그리고 그곳에 무언가 만들어 올려야겠다고 기다리고 있는 많은 개발자들과 회사들이 있다는 것이 다른 회사에서 이북 또는 타블렛류의 하드웨어를 출시하는 것과는 뭔가 다름을 보이는 것 같다.
iPod, iPhone때도 그랬던듯하고 iPad 또한 어떤 한 모델의 하드웨어를 발표했다는 것 자체만으로 큰 의미가 있다기보다..
그 뒤에 다양하게 그 기기 자체가 확장되고 활용될 수 있는 바탕을 잘 만들어두었다는 것이 의미가 있는 것 같다.
그런것이 잘 준비되면, 다음 모델 하나 만드는것이야...큰 문제는 아닌 것 같다.

아이팟+아이튠즈  =>  아이폰+앱스토어  =>  아이패드+앱스토어+북스토어

엄청난 스펙 또는 아주 선택이 다양한 모델의 하드웨어만 내놓는것과는 사뭇 다른 모습으로 다른 하드웨어 제조사들을 압도하고 있는것 같다.

그리고 수많은 어플리케이션 개발자, 회사들이 어플리케이션 개발을 위해 맥북, 맥을 구입해서 사용하게 되고...맥에 익숙해지기 시작하고...아이폰, 아이패드 개발을 하다보면 맥용 어플리케이션도 자연스레 좀더 쉽게 개발을 할 수 있는 기반이 마련되고.....
iPad 자체만의 성공과 실패보다 큰 무언가가 iPod->iPhone->iPad 로 이어져오면서 만들어져가고 있는 것 같다.







Posted by xiles

댓글을 달아 주세요

아이폰에서는 모든 텍스트 입력하는 부분에 들어가있는 기본 기능들이 있다.
사파리 브라우져에서도 마찬가지로 동작을 하는데, 이것들을 몇 가지 속성 값을 통해 설정할 수 있다.
그리고 input 태그에서 입력받는 텍스트 내용에 따라 그에 맞는 키보드 자판이 나와주기를 원할 수 있을텐데 이것 또한 약간의 속성 지정으로 컨트롤 할 수 있다. 어플리케이션에서만 키보드를 선택할 수 있는 것이 아니니 웹사이트에서 잘 사용하면, 사용자에게 편한 UI를 제공할 수 있을 것이다.

1. 영문 첫글자 대문자 모드 없애기

텍스트를 입력받는 <input type="text" /> 태그가 있는 웹페이지를 아이폰 사파리로 들어가보면, 
특정한 설정을 하지 않은 상태에서는 영문 키보드 상태가 첫글자는 대문자로 쓰는것이 기본으로 설정되어 있다.
로그인 아이디나 이메일을 입력하려는 곳에서 첫글자가 의도하지 않게 자꾸 대문자로 쓰이면 짜증이 날 수 있다.

자동으로 첫글자 대문자 모드로 되는 것을 막으려면 autocapitalize="off"를 사용하면 된다.
<input type="text" autocapitalize="off" />

2. 자동완성 사용 안하기

네이버 검색창에 검색어 입력할 때 추천검색어 같은것을 보여주는 그런 기능을 넣는다면 브라우져 자체에서 제공하는 자동완성이 거슬리게 될 것이다. 이것을 끄려면 autocomplete="off"를 사용하면 된다.
<input type="text" autocomplete="off" />

3. 자동교정(?) 사용 안하기

아이폰에는 기본으로, 텍스트 입력할 때 자동으로 오타를 수정해주는 기능이 있다. 이것이 동작 안하도록 하고 싶은 경우도 있을텐데 이것은 autocorrect="off" 를 사용하면 된다.
<input type="text" autocorrect="off" />

4. 필요에 맞는 키보드 나오게 하기

전화번호 입력 키보드를 나오게 하려면,
<input type="tel" />

URL 입력 키보드를 나오게 하려면,
<input type="url" />

Email 입력 키보드를 나오게 하려면,
<input type="email" />

숫자 입력 키보드를 나오게 하려면,
<input type="text" pattern="[0-9]*" />
또는
<input type="number" />

'이동' 버튼을 '검색'으로 나오도록 하려면,
<form><input type="search" /></form>
또는
<form><input type="text" name="q_search" /></form>
(name 속성값에 'search'가 포함되도록 하면 됨)


Posted by xiles

댓글을 달아 주세요