제 개인 블로그에 오래전에 올린 내용인데 조금 편집해서 다시 올려 봅니다.

당시 맥미니(Intel Core Duo 1.83GHz)의 속도에 조금 아쉬운 부분이 있어 업그레이드를 생각했습니다. 기존의 하드 디스크 S-ATA 80GB (5400rpm)를 100GB (시게이트 모멘터스 노트북용/7200rpm/8MB/S-ATA)로 교체하고 메모리는 256MB 2개(512MB)중  하나를 1GB와 교체하여 1.25GB로 업그레이드 하였습니다.

맥미니 분해 및 교체는 생각보다 쉽습니다. 도구는 철물상에서 구해온 도배용으로 쓰이는 퍼티 나이프와 안경 드라이버 정도 입니다.

.0
일단 맥미니의 상판을 보호하고 작은 부품들을 잃어 버리지 않기 위해서, 바닥에 큰 수건을 하나 깔아줍니다. 맥미니를 뒤집고 좌우의 틈으로 위의 퍼티 나이프를 밀어 넣고 좌우로 조금씩 흔들면 쉽게 분리가 됩니다. 좌우 각각 6개, 상단에 3개의 연결고리고 결속이 되어 있었는데 좌우만 분리하면 상단은 자동으로 분리됩니다.

맥미니를 반대로 돌려 위와 같이 남은 나사를 풀어줍니다. 본체를 분리하기 위해서는 아래와 같이 사각 모서리의 4개의 나사를 분리하면 됩니다.

.1
사용자 삽입 이미지

.2
사용자 삽입 이미지

.3
사용자 삽입 이미지

.4
사용자 삽입 이미지

.5
사용자 삽입 이미지

조립은 분해의 역순으로 합니다. 나중에 점퍼선을 다시 끼우는 부분만 잊지 않으면 그다지 어려울 것이 없습니다. 이제 OS X CD를 넣어 부팅한 후에 디스크 유틸리티로 파티션을 잡은 후, OS X를 설치하면 됩니다.

저의 경우에는 업그레이드 후에 체감적으로 성능이 많이 향상된 것 같습니다. 맥미니의 속도가 답답하신 분들은 시도해 보시는 것도 좋을 것 같습니다.
AND

Cocoa 파운데이션의 NSFileManager 클래스를 이용하여 특정 패스내의 파일 목록을 검색하고 파일들의 속성을 알아내는 방법입니다. XCode 도움말에서 NSFileManager를 보시면 디렉토리와 파일 관리에 관한 다양한 정보를 확인하실 수 있습니다.

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
   
    NSFileManager *fileManager;
    NSDirectoryEnumerator *directoryEnum;
    NSString* str;

    fileManager = [NSFileManager defaultManager];

    directoryEnum = [fileManager enumeratorAtPath:
        [fileManager currentDirectoryPath]];
   
    while ((str = [directoryEnum nextObject]) != nil) {
        NSDictionary *dic = [fileManager fileAttributesAtPath: str
                                                 traverseLink: NO];
       
        NSLog(@"%@: %@, %@byte, %@", str,
              [dic objectForKey: NSFileType],
              [dic objectForKey: NSFileSize],
              [dic objectForKey: NSFileOwnerAccountName]);
    }

    [pool release];

    return 0;
}

위의 소스를 빌드하고 실행하면 결과는 아래와 같습니다.

사용자 삽입 이미지

- (NSDirectoryEnumerator *)enumeratorAtPath:(NSString *)path
path에 지정된 디렉토리내의 모든 서브 디렉토리와 파일목록을 가져 옵니다.

- (NSDictionary *)fileAttributesAtPath:(NSString *)path traverseLink:(BOOL)flag
path에 지정된 파일 또는 디렉토리의 속성을 가지고 옵니다. flag를 YES로 지정하면 심볼릭 링크된 파일의 원본 파일의 정보를 가져오며, NO일 경우에는 링크된 파일의 정보를 가지고 옵니다.

속성은 NSDictionary의 objectForKey를 이용하여 각각의 속성을 가지고 올 수 있습니다. 각 속성에 대한 Key는 NSFileManager.h에 아래와 같이 정의되어 있습니다.

FOUNDATION_EXPORT NSString * const NSFileType;
FOUNDATION_EXPORT NSString * const NSFileTypeDirectory;
FOUNDATION_EXPORT NSString * const NSFileTypeRegular;
FOUNDATION_EXPORT NSString * const NSFileTypeSymbolicLink;
FOUNDATION_EXPORT NSString * const NSFileTypeSocket;
FOUNDATION_EXPORT NSString * const NSFileTypeCharacterSpecial;
FOUNDATION_EXPORT NSString * const NSFileTypeBlockSpecial;
FOUNDATION_EXPORT NSString * const NSFileTypeUnknown;
FOUNDATION_EXPORT NSString * const NSFileSize;
FOUNDATION_EXPORT NSString * const NSFileModificationDate;
FOUNDATION_EXPORT NSString * const NSFileReferenceCount;
FOUNDATION_EXPORT NSString * const NSFileDeviceIdentifier;
FOUNDATION_EXPORT NSString * const NSFileOwnerAccountName;
FOUNDATION_EXPORT NSString * const NSFileGroupOwnerAccountName;
FOUNDATION_EXPORT NSString * const NSFilePosixPermissions;
FOUNDATION_EXPORT NSString * const NSFileSystemNumber;
FOUNDATION_EXPORT NSString * const NSFileSystemFileNumber;
FOUNDATION_EXPORT NSString * const NSFileExtensionHidden;
FOUNDATION_EXPORT NSString * const NSFileHFSCreatorCode;
FOUNDATION_EXPORT NSString * const NSFileHFSTypeCode;
#if MAC_OS_X_VERSION_10_2 <= MAC_OS_X_VERSION_MAX_ALLOWED
FOUNDATION_EXPORT NSString * const NSFileImmutable;
FOUNDATION_EXPORT NSString * const NSFileAppendOnly;
FOUNDATION_EXPORT NSString * const NSFileCreationDate;
FOUNDATION_EXPORT NSString * const NSFileOwnerAccountID;
FOUNDATION_EXPORT NSString * const NSFileGroupOwnerAccountID;
#endif
#if MAC_OS_X_VERSION_10_4 <= MAC_OS_X_VERSION_MAX_ALLOWED
FOUNDATION_EXPORT NSString * const NSFileBusy;
#endif

AND

iOS 2008. 3. 8. 09:35
어제 애플에서 아이폰의 SDK를 공개하고 로드맵을 발표했습니다. 발표후 아이폰 소프트웨어 로드맵을 알리는 애플의 메인화면뿐만 아니라 ADC의 메인 화면도 아이폰과 맥 개발로 양분된 모습을 보니 애플이 아이폰 어플리케이션 개발에 얼마나 많이 기대를 하고 신경을 쓰고 있는지 짐작할 수 있습니다.

사용자 삽입 이미지

아래는 발표 동영상중에서 몇가지 게임 시연 모습을 캡쳐한 이미지들입니다. 3D 슈팅게임에서는 아이폰을 움직이며 비행기를 조종하고 화면을 터치해 발사하는 모습이 재미있었습니다.
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지

기억나는 것은 이미지를 편집하다 아이폰을 좌우로 흔들면 실행이 취소(Undo)되는 모습이었습니다. 별다른 버튼이 없는 아이폰이기 때문에 Undo를 실행할 수 있는 방법이 그것밖에 없을 것도 같지만 매우 인상적이었습니다. (휴~ 이 동영상을 보니 아이팟 터치에 대한 구매의욕을 겨우 잠재워 놨는데 이제 더이상 견딜 수 없게 된 것 같습니다)

한가지 흥미로운 부분은 어플리케이션 만들어 애플의 App 스토어에 등록하면, 사용자들은 아이폰이나 터치로 인터넷을 통해 App 스토어에서 필요한 어플리케이션을 검색하고 구매할 수 있습니다. 이로 인해 수익이 일어 날 경우 금액의 70%를 제작자가 받을 수 있다고 합니다.

소프트웨어를 제작만 하면 애플이 유통을 담당해주니 좋은 어플리케이션을 개발만 할 수 있다면 개인 개발자들도 수익을 올릴 수 있을 것 같습니다.

하지만 개발자가 위의 서비스를 이용할려면 아이폰 개발자 프로그램에 등록해야 하는 것 같습니다. 등록비용은 개인을 대상으로 한 Standard는 99달러, 기업을 대상으로 한 Enterprise는 299달러입니다. 현재는 미국의 개발자들만 등록할 수 있는 것 같습니다. 몇달안으로 다른 여러 나라로 확대된다고 합니다.

SDK는 아이폰 DevCenter에서 다운로드 받으실 수 있으며 크기는 2.1GB입니다. 홈페이지에는 벌써 개발에 필요한 많은 레퍼런스와 샘플코드, 강좌 동영상들의 자료들이 충분히 준비되어 있습니다. 바로 시작할 수 있습니다.

그러나!!!

사용자 삽입 이미지

"OS X 10.5(레퍼드)는 언제 써볼수 있을까..." 라면 촐싹대는 것이 아니였는데...
AND