애플 저장소 관련 이슈 회피 법&샘플소스 IPhone개발


이전 포스팅 애플은_나에게_똥을 던졌어. 에서 소개한 바와 같이, 
갑작스런 저장소 관련 변경 이슈를 개발자들에게 떠밀어 버린 사건이 있었죠.

이 이슈를 회피하는 법을 찾아는 냈지만,
웹이라는게 사실 그렇게 신용도가 높지는 않습니다...;;;

오늘 가장 확실한 회피법이라고 생각되는 애플의 샘플 코드를 이용한
확실한 회피법을 소개해 드립니다. 그리고, 이렇게 수정한 결과, 재 심사에서
오늘 정상적으로 업데이트 처리가 되엇으므로, 안전도도 높습니다.

---------------------------------------------------------------------------

#pragma mark -

#pragma mark DO NOT BACKUP 관련 소스.


//도큐먼트 폴더의 모든 개체를 백업금지로 등록합니다.

- (void)AddAttributeToAllFolder{

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

    NSString *documentsPath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;

    NSArray *dirContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsPath error:nil];

for (int i =0; i < [dirContents count]; i++) {

        NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/%@",documentsPath,[dirContents objectAtIndex:i]]];

        if ([self addSkipBackupAttributeToItemAtURL:url]) {

            NSLog(@"success! could add do not backup attribute to folder");

        }

    }

}



//도큐먼트 폴더의 특정 개체를 백업금지로 등록합니다.

- (void)AddAttributeToFolder:(NSString*)folderName{

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

    NSString *documentsPath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;

NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/%@",documentsPath,folderName]];

    if ([self addSkipBackupAttributeToItemAtURL:url]) {

        NSLog(@"success! could add do not backup attribute to folder");

    }

}


//애플에서 공개한 Do Not Backup 관련 소스.

- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL{

    if (URL == nil) {

        return NO;

    } else if (![URL isFileURL]){

        return NO;

    }

        

    u_int8_t b = 1;

    int result = setxattr([[URL path] fileSystemRepresentation], "com.apple.MobileBackup", &b, 1, 0, 0);

    if (result == 0) {

        NSLog(@"success result:%d path:%@", result, [URL path]);

    } else {

        NSLog(@"failur result:%d path:%@", result, [URL path]);

    }

    return result == 0;

}


--------------------------------------------------------------------------------------------------------

일단, 제 경우는 이전 버전과의 호환성 문제로 폴더 위치를 바꿀 수 없었기 때문에 이런 코드를 만들어야 했지만, 
도큐먼트 특정 폴더 안에 관련 파일들을 넣게 된다면, 최초 폴더 생성 시 한번만 백업금지로 등록해 두면,
이후 편안하게 사용이 가능합니다. 전 오히려 이쪽을 추천합니다.

파일 뿐만 아니라, 폴더도 백업금지로 걸 수 있습니다.

공유하기 버튼

 
 

애플은_나에게_똥을 던졌어.

하아...

뭐...메이저 업데이트 마다 분뇨차로 한바가지씩 개발자들에게 돌린게 어제오늘의 일은 아니지만...

iOS5의 아이클라우드 백업에 의한 멋대로 바꾼 저장소 가이드라인은 정말 할 말을 잃었다. 씨바.
이러니까 장사는 아직도 구벙가게 수준이라는 소리를 듣는거라고. 애플 이냥반아!

간단하게 설명하자면 이런 내용이다.


이제까지는 어플이 사용하는 중요 생성밑 다운로드 파일은 <Application_Home>/Document 라는
폴더에 저장을 하는 방식으로 개발을 하도록 되어있었는데, 갑자기 뜬금없이

-우리 아이클라우드는 <Application_Home>/Document폴더를 백업하니깐 아무거나 넣지말라능! 뿌우! 용량 없다구!

라면서 시스템의 근간을 뒤없는 발언을 하는것이 아닌가.
그러면서 던져준 가이드 라인이...

- <Application_Home>/Document폴더를 못 쓴다면 <Application_Home>/Library/Caches 폴더나 <Application_Home>/tmp 폴더가 있지 않습니까? 오호호호호! 

존나 그럴 듯 한 변명이다. 하지만, 그 뒤에 숨겨진 거대한 어둠의 그림자가 있는데...

1.Cached data may be purged in low storage situations
2.Temporary data should be put in the <Application_Home>/tmp directory.Files in this directory may be cleaned up by the system
-Apple iOS Developer Library Technical Q&A QA1719에서 발췌.

캐쉬와 템프 폴더는 시스템의 상황에 의해 지워질 수 있습니다....라는 의미다.


그러니까...중요 데이터 중 용량이 큰 건 Document 폴더를 사용하면 안되고. Library나 tmp 에 저장하면 사용자의
의지따위는 무시하고 임의로 지워질 수 있다?

예를 들자면, 게임 추가 데이터(DLC)를 받았는데, 어느 날 갑자기 내 게임 설정 및 추가 데이터가 몽땅 날아가 있다....
라는  시나리오가 일어날 수 있다는거다. 이딴 걸 어떻게 고객에게 팔아!!! 욕먹으려고 작정한거지! 

개발자들이 들고 일어서자 이번에 바뀐 정책이 바로 "do not back up" 이라는 것 인데, 요는 Document폴더에 
저장이 되거나 생성이 될 때 마다 모든 파일에 저 속성을 추가하라는 뜻. 저 속성을 추가하면 아이클라우드에
백업이 되지 않는다는 이야기다.

...결국 내놓는다는게 이따구야...씨바. 디지털 매거진은 한번에 다운로드 되는게 수백장이 넘는데, 이걸 다 걸라고?
미쳤냐? 앙? 미쳤어? 폴더에도 걸 수 있다고 했으니 한번 믿고 해보겠다만, 진짜 이건 아니지...
간단하게  Plist설정에 아이클라우드 백업 기능을 켜고,끄게 하는 옵션정도는 두었어야지, 이게 뭐냐고?!

결코, 이 사건 때문에 리젝먹고 연말에 못쉬는 것 때문이 아님.
진짜 아님.
.
.
.
...저주할테다.

공유하기 버튼

 
 

힘 세고 건강한 드립...신선함!

넥슨 해킹 관련 기사를 읽고...보안업계는 돌팔이 의혹?? (http://unfatalism.egloos.com/2877753)

라는 제목으로 올라온 글인데...
----------------------------------
정치 권력의 잿밥에만 눈이 멀어서, 
바이러스를 치료했던 본연의  임무를 망각하지 마라. 
보안업계는 지금이라도 반성해야 한다.   
지난번 농협사태가 북한의 소행이라는 진실을 받아들여야 한다.
-----------------------------------

....어?

네번 째 문단이 조금 이상하지 않나?

넥슨이 털렸다. -> 보안업체의 기술이 의심된다 -> 고로 농협사태는 북한소행이다.


-뭐야? 이 신선한 개드립은?


마치 선도가 방금 낚시로 건져올린 광어마냥 펄떡대는 신선함이 그야말로 끝장이다.
전혀 관계가 없는 사건을 그럴 듯 하게 이어 붙여서 혹세무민(惑世誣民) 하려 하는데,
정말이지 이럴 땐 무슨 표정을 지어야 할 지 모르겠다.

-웃으면 된다고 생각..

농협사태를 약간의 집중력으로 기사들만 잘 보고 이해를 했다면, 절대 저런 드립은
칠 수가 없었을 것이다. 

1. 농협건은 외부에서의 해킹이 아니다. 물론, 디도스 공격도 아니다.
-> 이건 전산망에 관하여 조금의 지식이라도 있다면 누구나 아는 상식선의 이야기.
이게 가능하면 전 세계에 안전한 은행망 시스템은 단 한군데도 없게된다. 외부와 단절하고
인트라넷만 쓰지 않는이상은.

2.내부에서 사용된 노트북을 통해 이루어졌다고(주장하고있다.)한다.
-> 이 경우, 어째서 그 노트북에 핀 포인트로 심어졌는가. 심어지게 된 경위는 어디인가, 
서버를 작살내는 그 코드의 발동 조건은 무엇인가. 그리고 무슨의도로 이 뻘짓을 하는가...라는 
보고는 단 하나도 없다. 오직 심증과 전혀 엉뚱한 디도스 이야기만 하고 앉아 있다.
최소한, 그런 코드를 작성할 정도로 천재적인 해커라면, 자신을 알리기 위한 의지표현을
반드시 했을 것이며, 최소한 사건발생 후, 자신의 업적이라며 중2병 쩌는 성명을 발표했어야 하는데도,
완전 조용했지? 자기가 한 영광을 북한이 가져가는데도? 

거기다, 이런 코드를 농협에 다니는 사람에게만 핀 포인트로 멀웨어질을 해야하는데,
농협사태 이전에도, 이후에도, 이런 코드를 가진 멀웨어는 다시는 발견도 되지를 않네?
농협 털고 불안해서 이전에 뿌린 코드에 자폭신호를 다 보낸건가?

애초에 타겟이 농협이었다는 것 자체가 북한소행으로 몰고가는데 무리가 많다는것이지.
이런 외계인 기술을 영입한 북한이 노린게 왜 농협이야? 한국은행이나 기업은행같이
거대 은행이 아니라 하층민들의 푼돈으로 이루어져 있는 곳을 공격한다고?
언제부터 북한이 하층민의 주적을 자처했나?
아니, 애초에 이정도 기술이 있으면 차라리 국제적으로 한방 터트리는게 이득이지,
농협하나 털어서 뭐가 나오는데? 
서민들의 거래내역으로 하층민의 경제상황을 파악하려했나?
거기다 거래내역은 모두 복구가 된다고...은행시스템을 물로 보냐고.

이걸로 일단 외부에서의 해킹이라는 개드립은 자제하도록 하자.
이건 어디까지나 내부에서 일어난 사건이다.

3.그렇다면, 보안업체가 문제인가?
외부직원의 노트북이 문제를 일으켰다(고 검찰이 주장). 
라면, 외부직원의 시스템을 제대로 체크하지 않은 내부의 잘못(또는 누군가의 사주로 일부러 검사를 패스).
거기에, 외부직원에게 권한을 마구퍼준 관리하의 잘못(또는 누군가의 사주로 일부러 권한을 퍼줌).

이 두가지가 가장 큰 원인이자, 이유이다. 보안업체의 백신프로그램의 문제가 아니라,
아예 관리 시스템 자체가 개판이었다는 것.

그러니까, 위의 사건은 북의 소행으로 하려면...

북한의 사주를 받고 관리팀과 외부직원이 서로 짜고, 내부에서 시스템을 파괴하려고했으나,
이 둘은 뇌가 초등학생 급이라 은행 시스템의 백업 및 복구 시스템에 관하여 전혀 지식이 없었고, 
서버만 날리면 데이터가 모두 사라질 것으로 생각했다.

라는 이야기가 된다.

보안업체는 뭔 상관인데? 프로그램으로 사람이나 관리환경까지 체크하나?
일단, 거래내역을 사고없이 모두 복구를 한 시점에서 보안업체는 할일을 다 한거다.

검찰은 이런 소설을 쓰지말고, 차라리 내부직원과 보안팀을 타겟으로 하고 고정간첩설을 제기하는게
그나마 신빙성은 있었을 거다. 디도스라니, 해킹이라니 대학교 기본 강좌만 들어도 말 도 안되는 줄 아는
헛소리를 누가 믿을까. 그나마도 증거라고 나온게 1번어뢰 급이니...(조선일보 인간어뢰보다도 더 애잔했다...)

차라리 내가 가이드라인을 줄테니, 앞으로 농협건을 북한으로 엮을 때는 이것을 사용해라.

1. 고정간첩설/ 매수설
1) IBM직원과 보안팀이 북에게 매수되었다.
2) 그 둘은 간첩이다.

2.농협 국가기반시설설.
1)사실 국고는 비밀계좌로 만들어 농협에서 관리하고 있었다.
2)북한이 이 정보를 캐고 이 계좌의 돈을 스위스로 빼내려 했다(그래서 일반 거래내역은 멀쩡했다).

3.농협서버는 사실 국가 안보 정보의 보관소.
1)사실은 국가의 최 중요 보안에 관련된 정보를 농협 전산서버에 숨겨 놓았다.
2) 북한은 그걸 털기 위해 농협을 공격한거다(그래서 거래내역은 멀쩡했다.)

그럴 듯 하지?

넥슨이 털린 건 털린거지만, 농협과 이 사건을 연결지으려고 하는 건 말도 안되는 사실이다.
농협을 털어서 넏을 수 있는 이익과 넥슨을 털어서 얻을 수 있는 이익은 비교도 할 수가 없고,
보안업체의 과실 여부역시 이 둘은 완전히 다른 방향으로 봐야 한다.

공유하기 버튼

 
 

이렇게 고백하면 절대 안된다 - 공대생 일상

오늘 인텔에서 올라 온 문제가 바로 이것 이었다. 

이 숫자의 의미는??? :)
1101010110001001 1011110011110101 1101010101011100 
1100100011111100 1011100111010000 1011110011110100 
1011000010110100 1100000100111000 1100011010010100

정답은

[ 행복한주말보내세요 ] 이다.

오랜만에 공대생 다운 고민을 해 볼 수 있는 문제였지만, 갑자기 이런생각이 문득 들었다.

- 이거 풀었다고 주변에 누구에게 자랑을 하지?
-여러분

차라리 전 3차원에는 흥미가 없습니다! 라고 사무실에서 큰소리로 커밍아웃을 하는 게
사람들의 관심을 끌겠지만, 이 문제 풀었다고 하면 과연 누가 관심이나 가져 줄 것인가.

예전에 드라마를 통해 사랑 방정식인가 하는 17x²-16|x|y+17y²=225’  라는 수식이 잠시 화제가 된 적이 있지만,
관심있는  여자에게 저거 말해서 이해하는 걸 기대하느니,  그녀가 '우주세기파'일 확률에 걸겠다.

어차피 이 글을 심도있는 연애 이야기도 아니고, 갑자기 든 공대생의 주변사람들에게 이해받지 못하는
전문용어 개그 같은게 떠올라서 씁쓸한 기분에 쓰는 이야기일 뿐이다.

하지만, 여기서 장담하건데, 나는 위의 저 사랑 방정식이나, 이하의 2진수 코드로 커플티를 제작해서
입을 것이다.(반지에 새기기엔 코드가 너무 길어!) 이건 나 자신과의 약속이기도 하다.

1001001 0100000 1001100 1001111 
1010110 1000101 0100000 1011001 
1001111 1010101 0101110

위 2진수의 의미는 ASCII 코드를 아는 사람들에게는 너무나 유명한 것이다.

[I LOVE YOU.]

하지만, 이딴걸로 고백했다가는 [공돌이재섭써!] 소리를 들을 수 있으므로, 
이성이 이것을 충분히 이해할 수 있는 것인가를 먼저 생각해 보도록 하자.
사랑을 이루기 위해서는 상대방에 대한 배려도 중요하다.

아니, 그전에, 저런거 일일이 코드로 변환하고 있을 시간에 그녀와 함꼐 하는
시간을 더 가지는게 효율적이라는 것은 공대생이 아니더라도 충분히 도출해 낼 수 있는 결론일 것이다.

사실, 가장 뛰어난 해결법은, 2진수코드를 복호하는 프로그램을 만들어서 이런일이 있을 때 마다
사용하는거다...어? 결국 공대생은 가장 쓸모없어 보이지만, 가장 효율적인 면만 쫗기때문에 공대생인거다.

아래는 유명한 공대생 개그.

구의 부피


수학자, 물리학자, 공학자에게 고무공의 부피를 알아내라는 임무가 주어진다.

그들은 측정에 필요한 것이라면 무엇이든지 얻을 수 있다.

수학자는 먼저 실로 공을 한 바퀴 빙 두른 후, 실의 길이를 알아내고,

그 길이를 2 곱하기 파이로 나누어서 반지름을 구한 후,

다시 4/3 과 파이를 곱한 후 반지름을 세제곱하여 부피를 구해낸다.

물리학자는 수조에 물을 가득 담은 후, 공을 그 안에 빠뜨려서, 넘친 물의 부피를 매스 실린더를 이용하여 측정한다.

공학자는 고무공에 적힌 시리얼 넘버를 알아낸 후 제조회사에 전화를 건다.

공유하기 버튼

 
 

카도카와 서점의 전자서점. BookWalker 업데이트 후 상당히 좋아졌군요.

電子書籍-BOOKWALKER-  참고 사이트는 이쪽입니다(새창)

PC / Ios/ Android등 다양한 플랫폼에서 구입 및 구독이 가능한 
카도카와 서점의 전자서점 플랫폼. BookWalker가 업데이트 되면서 상당부분
불편했던 점들을 개선 시켰습니다.

1. 회원가입이라는 장벽은 생겼지만, 이로 인해, 모든 플랫폼에 독립적으로
구입한 서적의 증빙이 가능해졌습니다.(정보제공이라고 해 봐야 이메일, 탄생 년/ 월 만 제공.)

예를 들어, 같은 아이디를 공유하는 아이폰, 아이패드라면 아이튠즈를 통해 구입 증빙이 가능했지만,
똑같이 돈을 내고 구입을 했음에도 안드로이드 플랫폼이나 PC상에서는 그것을 증명할 길이 없었습니다.
이제는 구매 데이터를 관리하는 하나의 통합된 서비스를 제공함으로서, 어느 플랫폼에서 구입을 하더라도,
모든 플랫폼에서 이 정보를 공유할 수 있습니다.

2. 1)로 인해 구입 이력을 확인할 수 있게 되었다.

이전, 실수로 아이튠즈 업데이트 중, 이 어플을 날려버렸습니다만,
이전에 구입한 목록이 기억이 나지를 않아서 쓸데없이 지출이 늘어날까봐 이후의 구배가 꺼려지거나,
이전에 구입했던 것은 확실한데, 어느순간 저작권 문제로 검색에서 제외된 구작들을 다시 다운 받을 수 없는
그런 문제가 있었습니다. 

하지만, 지금은 계정별 구입 이력에 의해 이전에 구입했던 책들 중, 현재 저작권 문제로 검색에서 사라진
도서도 이력을 통해 다시 다운로드가 가능해 졌습니다.

3. 책꽂이의 책을 삭제/편집이 가능해 졌다.
사실 처음에 이말을 들으면 의아해 하실 분들도 있겠지만...
이전 버전에서는 한번이라도 다운을 받으면 책꼳이에서 삭제가 불가능했습니다.  거기에 항상 샘플 도서 
세 권이 상위에 죽치고 있어서 새로 산 책을 보려면 페이지를 몇전이나 넘겨야 하는 불합리한 방식이었지만,
현재는 도서 리스트와 책장을 별개의 스키마로 정의해 두어서인지, 어느 책장에 속한 것인지, 책장에서는 몇번 째인지,
다운로드가 된 것인지, 아닌지 모두 상태를 나누어서 관리가 가능합니다.

쉽게말해서, 남들에게 보이기 부끄러운 책일 경우, 책장에서만 내려놓게 되면, 몇번의 과정을 거치지 않고서는
확인할 수 없게 만들수도 있습니다. 카도카와 굿잡!

4. 장서의 종류밑 질적 향상.
전자서적의 가장 근원적인 골칫거리문제인 것이 바로 이것이죠. 컨텐츠의 질이 형편없다는 것.
수년 전의 도서나 가끔 업데이트 된다거나, 그나마도 가격이 어처구니가 없다거나...
사실, 초기만 해도 장서의 내용은 형편없었습니다. 스즈미야 하루히의 인기로 좀 버텨보자...라고
보일 정도로, 노골적으로 스즈미야 하루히 관련 도서 아니면 수년 전의 도서나 여성향 로맨소설만
가득하던 시절이 있었습니다. 하지만, 지금은 매주 패미통등의 전문잡지도 꾸준하게 업데이트되고,
신간도 발매 당일부터 등록이 됩니다. 장서도 지금으로서는 충분할 정도로 넘쳐나고 있죠.
역시, 이런건 처음부터 컨텐츠 홀더들이 시작했어야 했어요. E-Book Japan은 추억팔이나 하는 
고전 자료의 무덤일 뿐이지...

이제는 갤탭과 아이패드에서도 편하게 책을 공유하면서 볼 수 있을 것 같습니다.
출근시간이 즐거워지는걸요?

공유하기 버튼

 
 

1 2 3 4 5 6 7 8 9 10 다음


Twitter