영삼이의 IT정보2012. 5. 31. 15:06

각 단말기에는 해당 단말기를 식별하는 유일값인 UDID가 존재합니다. iOS 플랫폼의 경우 SDK 상에서 쉽게 이 UDID 값을 추출할 수 있었습니다. 이 UDID는 사용자의 직접적인 개인정보를 이용하지 않고 사용자의 패턴 분석에서부터 타겟광고 소스 등 여러 부분에서 이용하고 있었습니다만 현재 베타테스트가 진행 중인 iOS5에서는 이 UDID 의 이용은 제한될(deprecated) 예정입니다. 이에 따라 애플에서는 UDID보다는 UUID를  생성하여 이용하라고 권고하고 있습니다. UUID는 단말기의 고유값이 아닌 어플리케이션에서 생성한 유일값으로 생성할 때마다 변경되는 랜덤값입니다. 따라서 개발자분들은 이에 대한 대응을 미리 하시는 것이 좋을 것 같아서 정리해보았습니다.

  • uniqueIdentifier 메소드가 사라질 예정

UDID는 단말기를 식별하기 위해 고유하게 할당된 40개의 숫자와 문자열입니다. 이런 고유값은 개인정보이다. 아니다 기기 식별값이므로 개인정보는 아니다라는 논란으로 잠시 인터넷이 뜨거웠던 적이 있습니다. (2011/05/10 서울경제 기사, http://economy.hankooki.com/lpage/it/201105/e20110510173640117700.htm)

이 UDID는 구글, 오픈페인트를 비롯한 여러 광고 및 트래픽 분석툴에 사용되고 있는 상황에서 애플이 드디어 칼질을 가하기 시작했습니다. iOS5 beta 6에서는 UDID를 가져올 때 사용하는 메소드를 없애겠다는 의지로 해당 메소드를 deprecated시키고 대신 Core 레벨에서 랜덤한 UUID를 생성하는 메소드를 이용하라는 권고를 내렸습니다. (Apple Sneaks A Big Change Into iOS 5: Phasing Out Developer Access To The UDID :http://techcrunch.com/2011/08/19/apple-ios-5-phasing-out-udid/).

실제로 iOS5 beta 6에서 [[UIDevice currentDevice] uniqueIdentifier]가 포함된 프로젝트를 빌드하면 아래와 같은 경고가 나타납니다.

  

  • UDID가 아닌 UUID를 이용하라는 권고

애플에서는 UDID값이 아닌 UUID(Universally Unique Identifiers)를 이용하라는 권고를 내렸습니다. CFUUID Documentation을 참조하면 이 UUID는 128-bit 값으로 생성된 유일값이며 이는 시간과 공간값으로 생성된 유일값이므로 중복될 염려가 없다고 합니다.

유일값 생성 방법은 아래와 같으며,

CFUUIDRef uuid = CFUUIDCreate(kCFAllocatorDefault);
NSString *string = (NSString *)CFUUIDCreateString(kCFAllocatorDefault, uuid);

생성되는 UUID는 아래와 같은 형태의 결과값을 가집니다.

이렇게 생성된 UUID를 NSUserDefaults 등을 이용하여 값을 유지시켜줌으로 UDID와 동일한 역할을 하도록 개발자들의 추가 구현이 필요하다라고 문서에는 나와있습니다. 어느 부분에서는 한 줄이면 가능한 유일값 추출을 이제는 개발자가 직접 신경을 써서 관리하라고하니 한숨이 나오는 건 사실입니다.

  이렇게 생성된 관리를 위한 방법으로는 NSUserDefaults를 이용하여 앱 내부에서 관리하는 방법별도의 서버에 이 값을 저장하여 관리하는 방법, 또는 iOS5 이상의 iCloud를 이용하는 앱이라면 iCloud의 Key-Value Data Storage를 이용하는 방법을 생각해 볼 수 있습니다. 이도 문제가 된다면 Mac Address를 추출하고 이를 해쉬값을 이용(MD5)하는 방법도 최근 iOS 개발자분들이 관심을 가지고 있는 것 같습니다. (GitHub : http://github.com/gekitz/UIDevice-with-UniqueIdentifier-for-iOS-5).

 

  • UDID vs. UUID

 UDID는 Unique Device Identifier로 기기의 고유값입니다. 하지만 UUID는 앱 자체에서 생성되는 고유값으로 사용자가 사용하는 앱의 고유값으로 볼 수 있습니다. 즉, UUID를 사용하도록 권고하는 것은 단말기의 고유값을 사용하지 말고 앱마다 각자의 고유값을 이용하라는 풀이로 볼 수 있습니다.

  이 두 유일값의 장단점을 간략히 살펴보면 아래 표와 같습니다.

 

  • 당장은 고려하지 않아도 된다?
  •  

Deprecated 된 메소드는 아시다시피 현재 사용하지 못한다는 의미는 아니지만 앱스토어에 앱을 등록할 때 리젝 사유가 될 수 있습니다. 위에서 설명드린대로 경고가 항상 나타난다면 당장 대안을 찾아야하는 상황이지만 프로젝트의 Deployment Target을 5.0 이하. 즉, 4.x나 3.x로 한다면 메소드를 사용이 가능합니다. 물론 개발 상에서 사용가능하다는 것이며 정책상으로 어떻게 될지는 모르는 상황입니다.

UDID를 활용하는 서비스나 앱이 많을 것으로 예상됩니다. iOS5가 정식으로 릴리즈되더라도 당장에 사용못하게 하지는 않을 것으로 예상되지만 미리 준비를 해두시는 것이 좋을 것 같습니다.

아래는 Deployment Target을 4.0으로 설정하는 화면과 설정 이후 빌드한 결과 uniqueIdentifier에 경고가 나타나지 않는 화면입니다.

 

  • UUID가 아닌 다른 유일값 사용에 대해서
  •  

UUID가 아닌 유일값에 대해서는 애플에서는 아직 언급하고 있지 않습니다만 Ethernet의 MAC AddressBundle identifier 등 여러 대안을 생각해볼 수 있습니다. MAC Address의 경우 Cocoa API에는 추출 메소드가 없어 직접 Core에 접근하여 추출을 해야하며, 해당값을 그대로 사용하는 것이 아닌 MD5나 SHA-1 등의 해쉬를 이용하여 보안이슈가 발생되지 않게 해야합니다. 이로 인해 작업 공수가 더 추가된다는 것, 또한 이후에 애플에서 해당값의 사용을 금지할 수도 있다는 잠재적인 위험요소가 있으므로 되도록이면 애플에서 권장하는 UUID를 이용하는 방법으로 문제를 해결하는 것을 추천해드립니다.

 

  • 결론

UDID를 얻어오는 메소드는 iOS5부터 사용할 수 없는, 삭제 예정인 메소드입니다.
- 프로젝트의 Deploy Target을 5.0이 아닌 그 이하 버전으로 설정하는 경우에는 UDID 추출 메소드 사용이 가능합니다.
- 정책상 결정된 부분은 아니지만 애플의 권고는 UUID를 이용하는 것입니다.
- 또한, iOS5가 정식으로 발표된 이후에는 반드시 고려되어야하는 이슈이므로, 미리 이에 대한 대비가 마련되어야 합니다.
- UUID도 단말기의 고유값이 아니므로 서비스의 특성에 따라서는 UDID가 아닌 단말기의 고유값으로 간주할 수 있는 MAC Address를 이용하는 방법 등을 고려할 수 있습니다.
- UDID를 사용하지 못하는 것과 동일하게 MAC Address도 사용이 불가할 수도 있다는 점은 고려하여 대책 마련을 하시는 것이 좋습니다.
- MAC Address를 해쉬처리한 문자열이 단말기의 고유값으로 보는 방안은 애플의 정책에 위배되지 않는다는 가정하에서 현재 단말기의 유일값으로 지정할 수 있는 최상의 방안으로 고려됩니다. (iOS5 정식출시가 되어봐야 알 것 같습니다.)

Posted by 다오나무
영삼이의 IT정보2012. 5. 19. 17:05

맥북에어는 광학리더기가 없어서 윈도우 설치시 매우 불편합니다. 값비싼 맥북슈퍼드라이버를 사는 것도 좀...

그래서 간편하게 USB로 설치하는 과정을 정리합니다.

( 이미지들은 검색에서 업어왔어요 :) )

1. 준비물

- 윈도우 설치된 PC : 윈도우 7 iso 파일을 usb에 굽기위한 도구(?)

- 맥북에어 : 가능한 최신 업데이트를 하자

- 윈도우 7 iso 파일 : 순정품 CD를 iso파일로 변환(혹은 어둠의 경로로?)

- USB 4G 이상 2개(1번, 2번) : 윈도우7용 1개, 맥용 드라이버파일들 저장용 1개, 둘다 FAT32 포맷으로 포맷해둔다.

2. Step by Step

1) 윈도우에서, 윈도우 7 iso 파일을 1번 usb에 구워야 합니다.

: 그냥 복사하면 안됩니다.

: 굽는 방법은 이 블로그에 자세히 설명되어 있습니다.

(마이크로 소프트에서 제공하는 부팅가능한 usb 만들기 프로그램)

2) 맥북에어에서 rEFIt 프로그램 설치

: 다운로드

3) rEFlt 설치가 끝나면, 최소 2회 이상 맥을 종료/시작 합니다. 아래 화면이 나와야 함

원래 맥북에어 부팅할때 'alt'키를 누르고 있으면, 여러 운영체제가 설치된 경우 선택화면이 나오는데요.

그자리에 들어갔다고 보시면 됩니다.

: 처음에는 윈도우(하드디스크 아이콘) 아이콘이 없습니다.

[그림 1]

4) 맥북에어에서 응용프로그램->유틸리티->부트캠프

부트캠프에 들어가서, 계속 누르다보면 아래 화면이 나옵니다.

: 2번 usb를 끼웁니다.

: 맥북에어의 경우는 젤 위쪽 'Windows 7 설치 디스크 생성'이 비활성화 되어 있습니다.

: 3가지중 가운데 'Apple에서 최신 Windows 지원 소프트웨어 다운로드'를 선택하고 계속 갑니다.

: 이제 apple에서 제공되는 드라이버 파일들이 usb에 저장될겁니다. 이건 나중에 윈도우7 설치가 완료된 이후

: 윈도우에서 실행시켜줄 놈이라서 잘 보관하고 있어야 합니다.

[그림 2]

5) 다시 맥북에어에서 '응용프로그램->유틸리티->디스크 유틸리티'로 들어갑니다.

여기서 해줄것은 현재 하드디스크를 파티션하는 건데요. 최초에는 파티션정보가 어디있지?

안보이는데? 하고 당황할수 있습니다.

: 왼쪽 제일 위쪽 디스크 아이콘을 클릭해야 '파티션' 정보가 보입니다.

: 처음에는 MAC 파티션 1개만 100%로 보입니다.

: 파란색으로 되어 있는 구간 오른쪽 하단의 /// 형태 부분을 마우스로 찍어서 위쪽으로 드래그하면

MAC 파티션의 사이즈가 줄어드는게 보일겁니다.

: 100%가 100G이고 윈도우 7용으로 32G를 잡는다면, 68G정도로 줄이면 되겠죠.

: '적용'을 누르면 최종 확정됩니다.

: 그 다음에 '+' 버튼을 누르면 다른 파티션 하나가 추가됩니다.

: '이름'을 BOOTCAMP로 넣고, '포맷'은 FAT32로 잡습니다.

: 역시 '적용'을 눌러야합니다.

[그림 3]

6) 여기까지 오면 이제 거의 다 준비된 상태입니다. 이제 윈도우 7 iso가 구워진 1번 usb를 끼우고, 리부팅을 합니다.

7) 그러면 [그림 1] 화면이 보일건데요. 다른 점은 윈도우 아이콘이 몇개 더 있습니다.

여기서 제일 오른쪽 윈도우아이콘(1번 usb임)을 클릭하면 윈도우 설치가 시작됩니다.

8) 윈도우 설치 도중에 2번정도 재부팅이 되는데요. 그때는 [그림 1] 화면에 나온

윈도우아이콘(하드디스크 아이콘)을 클릭해야 됩니다.

9) 윈도우 설치중 키보드 타입은 3번으로 하시구요.

10) 중간에 cd key를 입력하라고 나오는데, 가지고 있는 key를 입력하세요. 없으면 '다음에 하기'를 누르면 됩니다.

11) 드디어 윈도우 화면이 보이는데요. 이제 남은 작업을 계속 진행합니다.

: 위에서 마련한 2번 usb를 끼우고 WindowsSupport 디렉토리 안의 setup.exe를 실행시킵니다.

: apple에서 제공하는 모든 드라이버의 설정이 끝나면 초기 윈도우 화면보다 좀더 세련된 화면으로 바뀝니다.

: '제어판->bootcamp'로 들어가서 트랙패드 설정을 해줍니다.

오른쪽 버튼이라던가 터치로 클릭하게 한다던가... 그런 선택입니다.

: 한영전환 설정을 해야하는데요. 이 글에 있는 레지스트리를 다운받아서 실행시키고 리붓하면 됩니다.

12) 제어판에서 '인증'으로 검색하면 '윈도우7 정품인증' 메뉴를 찾을 수 있는데, 여기 들어가서

인증 버튼을 살짝 눌러줍니다.

: cd key를 어둠의 경로에서 얻었다면 문제가 있을 수 있는데요. 그건 알아서... ㅋㅋ;

: 물론 이거 하기 전에 네트웍 연결해줘야합니다.

13) 마지막으로 ms office iso 파일이 있다면

데몬툴즈를 다운받아서 설치하고, iso를 추가해서 setup 실행시키면 잘 설치될거에요.

글로는 좀 길지만, 맥북에어에서 하니 아주 빠르게 진행되네요.

Posted by 다오나무
영삼이의 IT정보2012. 5. 19. 14:29

1. 맥 OS X가 설치되었다면 응용프로그램 > 유틸리티 > Bootcamp 지원 을 선택해서 부트캠프로 윈도우 7을 설치할 수 있다.

2. 외장 ODD가 있다면 그걸 이용하면 되지만 없을 경우에는 부팅 USB 드라이브를 만든다. 보통 윈도우 7용 부팅 USB는 MS의 USB Tool이나 UltraISO 등을 이용해서 만드는데, 라이온 이상의 맥 OS에서는 부트캠프 내에 자체적으로 부팅 USB를 만들어 주는 기능이 있으므로 이런 것을 이용할 필요는 없다.

3. 부트캠프를 실행하면 3가지 항목이 나온다.

1) Windows 7 설치 디스크 생성 :
이게 부팅 USB를 만드는 항목이다. (당연히 ODD로 설치할 경우에는 필요없다)
이 항목을 선택했을 경우, 설치에 사용할 윈도우 7 원본 설치 DVD 이미지(ISO파일)의 경로와, 대상 USB 드라이브를
지정할 수 있다.

2) Apple에서 최신 Windows 지원 소프트웨어 다운로드 :
부트캠프를 이용해 윈도우 7을 설치했다고 하더라도, 실제 윈도우를 기동하면 맥북의 각종 하드웨어를 윈도우에서
제어하는 데에 필요한 드라이버가 설치되지 않은 상태이다. 이를 위해서는 맥을 위해서 제공되는 드라이버들이 필요한데
바로 이 드라이버들을 다운받는 항목이다. 이 항목을 선택했을 경우, 설치 디스크 생성 과정이 끝난 뒤 인터넷으로
드라이버를 다운로드하게 된다. (꽤 상당히 시간이 걸린다)

3) Windows 7 설치 :
1)에서 생성된 USB나, ODD의 설치 디스크를 이용해서 실제로 윈도우 7을 설치한다.
이 항목을 선택했을 경우, 설치 과정에서 맥북의 하드디스크 파티션을 원하는 크기만큼 나누어 윈도우용으로 할당할 수
있다. (별도의 포맷 과정이 필요없다)

Posted by 다오나무