BLOG main image
Category (326)
News (16)
All about me (1)
Diary (1)
Projects (8)
Programming (95)
Ideas (8)
Treasures (28)
Study (59)
Bookmark (19)
iPhone (77)
만들어보자!! Game Engine fo.. (0)
Android (0)
The matter of a single trade c..
17:23 - Ken Griffey Jr Shoes
The matter of a single trade c..
17:23 - Ken Griffey Jr Shoes
The matter of a single trade c..
17:22 - Ken Griffey Jr Shoes
Concentration and perseverance..
17:19 - Ken Griffey Jr Shoes
http://www.replicaoakleysungla..
05/18 - hgfhg
thanks for sharing
05/16 - replica watches
For Coach handbags alone, eBay..
05/10 - Coach outlet
thanks for sharing
05/10 - Coach outlet
좋은 게시물, 공유를위한 감사합..
05/10 - china wholesale
All of us need to preserve up..
05/07 - replica watches
free microsoft office 2010
free microsoft office 2010
特殊網站設計
特殊網站設計
特殊網站設計
特殊網站設計
Business Idea
Business Idea
surf lessons newport beach
surf lessons newport beach
295,709 Visitors up to today!
Today 2 hit, Yesterday 192 hit
daisy rss
tistory 티스토리 가입하기!
'전체'에 해당되는 글 326건
2012/01/10 10:14

#define TCP_NODELAY 0x0001

int opt_val = 1;
setsockopt( sock, IPPROTO_TCP, TCP_NODELAY, &opt_val, sizeof(opt_val));

 

Trackback Address :: http://joyholic.kr/trackback/446 관련글 쓰기
Name
Password
Homepage
Secret
2012/01/03 09:59

2012년,  올 한해도 방문하시는 모든 분들 새해 복 많이 받으시고, 하시는 일 마다 대박이 함께 하시길 진심으로 기원할게요.

사이트를 만들어 놓고 만성 귀차니즘과, 타의 추종을 불허하는 게으름으로 관리를 하지 못한 점, 질문에 제대로 답변을 드리지 못한점 정말 정말 송구스럽습니다. ^^

이 사이트 개설 후, 회사와, 업무가 두번 바뀌었습니다.

사이트 개설 당시는 Gameloft라는 회사에서 게임을 개발했었으나, 그후 2년정도 'SKAF' 플랫폼 코어쪽 개발을 하다, 지금은 모바일 보안쪽(VPN) 개발 관련된 일을 하고 있습니다.

한 분야를 지속적으로 해서 그분야의 최고가 되어야하는데... 아무래도 저는 끊기가 좀 부족한가 봅니다. 
 
그건 그렇고, 갈수록 심해지는 디지털 치매(?) 증상으로 인하여, 저의 경력 중 가장 큰 포션을 
차지하는 게임 개발 쪽은 이젠 기억 저편으로 사라지는 듯 합니다.

그나마 2D쪽은 아직까진 죽진 않았으나, 3D쪽은 이젠 기억이 나지 않습니다. -0-

암튼, 2012년은 이 사이트를 조금더 신경을 쓰도록 하겠습니다.

주로 iOS 개발이나 모바일 보안 쪽이 될듯합니다.

좋은 하루 되시구요. 

다시한번 2012년 올 한해도 건강하시고, 행복하세요. ^^

이일영 드림 
 
Trackback Address :: http://joyholic.kr/trackback/445 관련글 쓰기
Name
Password
Homepage
Secret
2011/10/10 18:48
http://www.pixelprospector.com/the-big-list-of-game-design/
Trackback Address :: http://joyholic.kr/trackback/444 관련글 쓰기
Name
Password
Homepage
Secret
2011/04/19 17:51
Original : http://tigelane.blogspot.com/2011/01/apple-itunes-export-restrictions-on.html
 

Apple iTunes export restrictions on apps

I recently went through the process of building an app for the iTunes app store that used SSL (HTTPS) encryption.  While this seems trivial, it's not.  Depending on where you go, and what you read you might think you don't need to do anything.  That's wrong.  If you application uses encryption (including SSL and HTTPS, possible other public domain encryption) then you need to get at least get an ERN before submitting your app to Apple for approval. 

I believe there was some rule changes in May 2010 that made this possible.  Prior to these changes, you would have had to get a CCATS for your application.  I originally did the full CCATS process, but it was not approved, and they in their own words told me to use this method.

Here is what I did.

Read all the steps before you do this:
1.  Go to this link and use his instructions.  This is a great post:
http://zetetic.net/blog/2009/08/03/mass-market-encryption-commodity-classification-for-iphone-applications-in-8-easy-steps/
2. Do step 1 and 2 for all cases.  If you built your own encryption mechanism, that follow the entire post.  If you used SSL or other public domain encryption, then you can stop after you have your SNAP-R account.
3.  Go to the SNAP-R login site and login:  https://snapr.bis.doc.gov:443/snapr/exp/UserLoginLoad
4.  Click "Create Work Item"
5.  Select "Encryption Registration"

6.  Most if it will be filled out for you.  Add this information to the "Additional Information" field.  I made this up, so your milage will vary.

7. Then attach a document that looks like this one for Encryption Registration Supplement No. 5 to Part 742
Control Policy—CCL Based Controls Supplement No. 5 to Part 742--page 1
Export Administration Regulations June 25, 2010
SUPPLEMENT NO. 5 TO PART 742 - ENCRYPTION REGISTRATION
Certain classification requests and self-classification reports for encryption items must be supported by an encryption registration, i.e., the information as described in this Supplement, submitted as a support documentation attachment to an application in accordance with the procedures described in §§ 740.17(b), 740.17(d), 742.15(b), 748.1, 748.3 and Supplement No. 2 to part 748 of the EAR.
(1) Point of Contact Information
(a) Contact Person
Tige Phillips
(b) Telephone Number
1-xxx-xxx-xxxx
(c) Fax Number
1--xxx-xxx-xxxx
(d) E-mail address
xxx@xxx.com
(e) Mailing Address
xxxx E. General Road 
Somewhere, OR 9xxxx
(2) Company Overview (approximately 100 words)
I am an individual developer of software.  The software I create typically falls into one of two categories: Business related, where it would interact with systems created by Cisco Systems, or Recreation software that would be simple fun programs for use by individuals.  For development I use openly available development platforms from Apple Computers and other manufactures.  Creating software is a hobby, not my primary profession.
(3) Identify which of the following categories apply to your company’s technology/families of products:
(a) Wireless
(i) 3G cellular
(ii) 4G cellular/WiMax/LTE
(iii) Short-range wireless / WLAN
(iv) Satellite
(v) Radios
(vi) Mobile communications, n.e.s.
(b) Mobile applications
(c) Computing platforms
(d) Multimedia over IP
(e) Trusted computing
(f) Network infrastructure
(g) Link layer encryption
(h) Smartcards or other identity management
(i) Computer or network forensics
(j) Software
Yes:  I only create software.
(i) Operating systems
(ii) Applications
(k) Toolkits / ASICs / components
(l) Information security including secure storage
(m) Gaming
(n) Cryptanalytic tools
(o) “Open cryptographic interface” (or other support for user-supplied or non-standard cryptography)
(p) Other (identify any not listed above)
(q) Not Applicable (Not a producer of encryption or information technology items)
(4) Describe whether the products incorporate or use proprietary, unpublished or non-standard cryptographic functionality, including encryption algorithms or protocols that have not been adopted or approved by a duly recognized international standards body. (If unsure, please explain)
My products do not use any proprietary, unpublished or non-standard cryptographic functionality.  I only use standards based encryption that can be found on the Internet.  Standards based Secure Socket Layer (SSL) encryption is an example of what I use.  I also only use encryption mechanisms that are available in development platforms by companies like Apple Computers.
(5) Will your company be exporting “encryption source code”?
No.
(6) Do the products incorporate encryption components produced or furnished by non-U.S. sources or vendors? (If unsure, please explain)
No.
(7) With respect to your company’s encryption products, are any of them manufactured outside the United States? If yes, provide manufacturing locations. (Insert “not applicable”, if you are not the principal producer of encryption products) 
No.
8. Once you hit submit, you will get a message in your message box.


9.  That message with have your ERN (Encryption Registration Number) in it.  
10. Open the message and take a screen shot of the message.

11.  Go submit your app to the app store.  When they ask about encryption, tell them.  If you need to submit an ERN, you have one.  :)  I gave them a word document with the screen shot of the ERN, and a very brief explanation. 



You're done.  The first status your app will go through is "Waiting for export compliance".  Once your app is approved you will have a LEGAL app on the app store and you didn't have to lie to Apple or the US government.
LABELS:  
Trackback Address :: http://joyholic.kr/trackback/441 관련글 쓰기
Name
Password
Homepage
Secret
2011/02/07 10:36
http://developer.apple.com/library/ios/#documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html
Trackback Address :: http://joyholic.kr/trackback/435 관련글 쓰기
Name
Password
Homepage
Secret
2011/02/07 10:16
Original : http://improgrammer.com/12



KT앱 대회 준비하면서 모은 자료들을 정리해서 올립니다.
개인 학습용으로 모은 자료들이라 출처가 틀릴 수도 있습니다.
답글 주시면 수정토록 하겠습니다.

-푸쉬  서버  개발  관련 자료-
이지 APNS 오픈 소스 라이브러리
http://www.easyapns.com/
구글 코드 APNS 오픈 소스
http://code.google.com/p/apns-php/
서버 튜토리얼
http://blog.boxedice.com/2009/07/10/how-to-build-an-apple-push-notification-provider-server-tutorial/


-label이나 textView에 현재 시간을 표시하고 싶습니다-
NSDate *t = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
NSString *timeStr = [formatter setDateFormat:@"HH:mm:ss"];
myLabel.text = timeStr;
...
[textView scrollRangeToVisible:NSMakeRange([textView.text length]-1, 1)];


-시뮬레이터 포토 라이브러리 자신의 이미지 추가 방법-
UIImage * sShot = [UIImage imageNamed:@"imageName.jpg"];
UIImageWriteToSavedPhotosAlbum(sShot, nil, nil, nil);


-네이게이션바 스타일 바꾸기-
http://cafe.naver.com/mcbugi/1241


-이미지 자르기 함수를 소개합니다. (UIImage)-
- (UIImage*)imageByCropping:(UIImage *)imageToCrop toRect:(CGRect)rect
{
CGImageRef imageRef = CGImageCreateWithImageInRect([imageToCrop CGImage], rect);
UIImage *cropped = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
return cropped;
}
http://www.hive05.com/2008/11/crop-an-image-using-the-iphone-sdk/


-HTTP 라이브러리-
http://allseeing-i.com/ASIHTTPRequest/How-to-use


-json 관련-
라이브러리 http://code.google.com/p/json-framework/
json 투토리얼 http://iphonedevelopertips.com/networking/iphone-json-flickr-tutorial-part-1.html


-알럿 템플렛-
self.myAlertView = [ [UIAlertViewalloc]
initWithTitle:@"알림"
message:@"이메일을입력해주세요"
delegate:self
cancelButtonTitle:nil
otherButtonTitles:@"확인", nil];
self.myAlertView.delegate = self;
[self.myAlertViewshow];


-푸쉬서버 구현을 위한 서버 인증서 pem 만들기-
애플 개발자 센터 apps ID 추가 (이때 와일드카드(*)는 사용하면 안됨)
키체인에서 개인 인증서 하나 만들어 애플 개발 센터에 등록
애플 개발센터에서 cert파일을 다운받아서 키체인으로 추가

키체인에서 내보내기로 p12파일로 저장

커맨드에서  p12파일을 pem파일로 변환
openssl pkcs12 -in quizers_dev_cert.p12 -out quizers_dev_cert.pem -nodes -clcerts


-전역변수를 사용해 보자...-
http://cafe.naver.com/mcbugi/55643


-JSON 2중 뎁스 이상 키 접근하기-
NSDictionary*feed =[self downloadPublicJaikuFeed];
// get the array of "stream" from the feed and cast to NSArrayNSArray*streams =(NSArray*)[feed valueForKey:@"stream"];
// loop over all the stream objects and print their titlesint ndx;
NSDictionary*stream;
for(ndx =0; ndx < stream.count; ndx++){
        NSDictionary*stream =(NSDictionary*)[streams objectAtIndex:ndx];
        NSLog(@"This is the title of a stream: %@", [stream valueForKey:@"title"]);
}


-배열 NSArray-
초기 데이터로 생성
NSArray *array = [[NSArray alloc] initWithobjects:추가할 객체들.. , nil];
 스트링으로 생성
NSArray *joins =(NSArray*)[result objectForKey:@"joins"];
길이 구하기
NSLog(@"Array size : %d " , sizeof(BUILDING_DATA) / sizeof(BUILDING_DATA[0]));


-NSString 클래스를 이용하여 문자을 넣자니 유니코드를 받아 초기화-
-(NSUInteger) UnicharLength:(const unichar*)str
{
unichar* pStr = (unichar*)str;
for( ; pStr[0] != nil ; pStr++ );
return (NSUInteger)(pStr - str);
}
[[NSString alloc] initWithCharacters:(원본문자열) length:[self UnicharLength:(원본문자열)]];


-랜덤 출력-
srandom(time(NULL));
value = random() % 100;
위처럼 하시면 0~99사이의 한수를 리턴합니다.
srandom(time(NULL)); 는 첨에 한번만 해주시면 됩니다.


-Code Sign error: Provisioning profile이 맞지 않을 때 변경 방법-
여러 장비에서 작업을 하거나 여러 프로젝트를 진행 중에 변경된 Provisioning profile이 적용되지 않아 Debug를 할 때 ”Code Sign error: Provisioning profile ‘3E6AA725-6534-46F8-B9CE-D19AC9FD854B’ can’t be found” 이런 오류가 발생하는 경우가 있는데요. 이럴 때 현재 사용중인 Provisioning Profiles로 프로젝트 세팅을 변경해주는 방법을 소개한 글(원문)이 있어서 공유합니다.

1. 실행중인 Xcode Project를 닫습니다.
2. Finder에서 프로젝트 폴더로 이동합니다.
3. 프로젝트 .xcodeproj 파일 선택하고 마우스 오르쪽 키를 눌러 '패키지 내용 보기'를 선택합니다.
4. 패키지 내용 보기를 통해 패키지 안에 있는 project.pbxproj 파일을 Xcode로 불러옵니다.
5. 검색을 통해 PROVISIONING_PROFILE 부분을 찾아 변경된 Provisioning profile 로 변경해줍니다.
6. 현재 Provisioning profile을 확인하려면 Organizer 창을 열어보면 알 수 있습니다.
7. Window > Organizer로 Organizer 창을 열고 왼쪽에 IPHONE DEVELOPMENT > Provisioning Profiles로 이동합니다.
8. 오른쪽에 있는 Profile Identifier를 복사해서 변경해주면됩니다.
9. 변경이 끝나면 project.pbxproj 저장하고 프로젝트를 열어 테스트합니다.


-아이폰 웹개발에서 디바이스 아이디 가져올수있나요?-
[[UIDevice currentDevice] uniqueIdentifier];



-Accessing Objects in a NSArray-
To access an object in an NSArray, you use the -objectAtIndex: method, as in the following example:NSArray *numbers;
NSString *string;

numbers = [NSArray arrayWithObjects: @"One", @"Two", @"Three",
                                     nil];
string = [numbers objectAtIndex: 2];   // @"Three"

Of course, you have to be careful not to ask for an object at an index which is negative or bigger than the size of the array; if you do, an NSRangeException is raised (we'll learn more about exceptions in another tutorial).
To get the length of an array, you use the method -count, as in:
NSArray *numbers;
int i;

numbers = [NSArray arrayWithObjects: @"One", @"Two", @"Three",
                                     nil];
i = [numbers count];   // 3


-상태바 제어-
안 보이게
[UIApplication sharedApplication].statusBarHidden = NO;

스타일
UIApplication *myApp = [UIApplication sharedApplication];
[myApp setStatusBarStyle:UIStatusBarStyleBlackOpaque];


-메모리 오버되어서 어플이 죽는 경우에 호출되는 이벤트??-

뷰컨트롤러 베이스로 작업을 한다면

- (void)didReceiveMemoryWarning

함수로 메모리가 위험할시에 위 함수를 핸들링하니 내부에 관련 대응할 처리를 구현해주면 됩니다.



-D-Day 구하기-
NSDate* date  = [NSDatedateWithNaturalLanguageString:@"2010-06-30"];
NSDate* d_day = [NSDatedateWithNaturalLanguageString:@"2010-12-31"];

NSDateComponents *dcom = [[NSCalendar currentCalendar]components: NSDayCalendarUnit
fromDate:date 
  toDate:d_day 
  options:0];

NSLog(@"day=%d",   [dcom day]);   // 184


-라디오 버튼이나 체크박스등을 찾지를 못하고  있는데-
Interface Builder 에서 library를 보시면 segmented control, switch가 보일겁니다.
말씀하시는 라디오버튼이나 체크박스는 없지만 
라디오버튼은 segmented control로 대체, 체크박스는 switch 로 대체하셔서 사용하시면 될듯합니다.


-책장 넘기기 효과-
UIView 를 하나 만들고 그 안에 UIImageView 를 만들었습니다.
이제 이미지뷰어의 내용을 채울때 책장을 넘기듯이 넘기는 방법입니다.

[UIView baginAnimations:@"stalker" context:nil]; <- stalker 는 UIView 의 이름입니다
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:stalker cache:YES];
[UIView setAnimationDuration:1.0];
imageView.image = [UIImage imageNAmed:이미지파일명];
[UIView commitAnimations];

이 걸 터치 이벤트나 이런곳에 삽입하면
책장을 넘기듯이 이미지의 전환이 일어납니다.


-image를 fade out 효과-
[UIView beginAnimations:nil context:NULL];
[imageView setAlpha:0.0];
[UIView commitAnimations];


-UIView Animation 중복방지-
[UIView beginAnimations:nil context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
....
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationFinished:finished:context:)];
        [UIView commitAnimations];

이런 식으로 에니메이션을 만들었는데 간단하게 UIImageView를 한점에서 다른 한점으로 이동시킵니다.
근데 그래서 에니매이션이 끝나면 다시 또다른 다른 두 좌표로 해서 위의 코드가 실행되서 계속해서 UIImageView를 움직이게 하고 있습니다.

근데 질문은 1. setAnimationDidStopSelector 에서 에니매이션이 끝난것을 알기전에 강제로 에니메이션을 멈출수 있나요?
2. 제 경우에는 어떤 경우에 위 코드가 setAnimationDidStopSelector 가 호출되었을때 만 실행되는 것이 아니라 다른 부분에서도 호출하기도 합니다.  근데 문제는 동시에 위 코드가 중복되어서 호출되면 이상하게 작동해요.  그래서 꼭 위 코드를 실행(에니매이션을 commit 하기전에는 반드시 에니메이션을 강제로 멈추던지 아니면 다른 체크를 해야 할것 같은데..... 

혹시 방법이 있으면 부탁드립니다.

꾸벅~

답글 :
[UIView setAnimationsEnabled:NO];
// 에니메이션을 종료 합니다.


-일정시간 딜레이 후 함수 호출-
[self performSelector:@selector(playerStop) withObject:nil afterDelay :1.0f];

-(void) playerStop
{
}


-개발 완료, 베타 테스팅용 Ad Hoc 배포-
http://cafe.naver.com/mcbugi/9042


-테이블뷰에 원격이미지를 넣을경우 스크롤이 느려지는 현상-
LazyTableImages 샘플 http://developer.apple.com/iphone/library/samplecode/LazyTableImages/Introduction/Intro.html#//apple_ref/doc/uid/DTS40009394
AsyncImageView 클래스 http://www.markj.net/iphone-asynchronous-table-image/


-테이블 뷰 섹션별로 이름 주기-
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
if( section == 0 ) {
return@"발행한퀴즈";
} elseif( section == 1 ) {
return@"참여한퀴즈";
} else {
return@"진행중인퀴즈";
}
}


-정사각형으로 사진을 CROP 하고, 썸네일 크기에 맞게 리사이즈-
먼저, 출처는 다음 기사입니다.
http://tharindufit.wordpress.com/2010/04/19/how-to-create-iphone-photos-like-thumbs-in-an-iphone-app/
 
iPhone 사진앨범의 특징은 가로나 세로가 긴 이미지라 할지라도,
정사각형으로 사진을 CROP 하고, 썸네일 크기에 맞게 리사이즈 시킵니다.
 
위의 기사의 내용을 나름대로 보기 편하게(?) 수정을 했습니다.
 
함수명 - makeThumbnailImage
파라미터 - 원본 이미지, 리사이즈없이 CROP만 할지 여부, 리사이즈할 정사각형 한변의 길이
리턴값 - CROP 및 리사이즈된 이미지
 
- (UIImage*) makeThumbnailImage:(UIImage*)image onlyCrop:(BOOL)bOnlyCrop Size:(float)size
{
 CGRect rcCrop;
 if (image.size.width == image.size.height)
 {
  rcCrop = CGRectMake(0.0, 0.0, image.size.width, image.size.height);
 }
 else if (image.size.width > image.size.height)
 {
  int xGap = (image.size.width - image.size.height)/2;
  rcCrop = CGRectMake(xGap, 0.0, image.size.height, image.size.height);
 }
 else
 {
  int yGap = (image.size.height - image.size.width)/2;
  rcCrop = CGRectMake(0.0, yGap, image.size.width, image.size.width);
 }
 
 CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], rcCrop);
 UIImage* cropImage = [UIImage imageWithCGImage:imageRef];
 CGImageRelease(imageRef);
 if (bOnlyCrop) return cropImage;
 
 NSData* dataCrop = UIImagePNGRepresentation(cropImage);
 UIImage* imgResize = [[UIImage alloc] initWithData:dataCrop];
 
 UIGraphicsBeginImageContext(CGSizeMake(size,size));
 [imgResize drawInRect:CGRectMake(0.0f, 0.0f, size, size)];
 UIImage* imgThumb = UIGraphicsGetImageFromCurrentImageContext();
 UIGraphicsEndImageContext();
 [imgResize release];
 return imgThumb;
}

위 소스를 참고하시면, 이미지를 CROP 하는 방법이나, 이미지를 RESIZE 하는 방법을 참고하실수 있을겁니다.
 
사족을 붙이자면, 왜 Resize 할지 여부를 따로 분리 시킨 이유는 실제로 사용을 해보면 Resize 루틴에서
많은 CPU 부하가 걸립니다. 그래서 UIImageView 에  contentMode를 UIViewContentModeScaleAspectFit 로 설정해서
자체적으로 리사이즈를 하게 하는 방법이 비동기적으로 괜찮습니다. (물론.. 실제 Resize된 이미지가 아니므로 메모리적인 소비는 있습니다.)
 
많은 도움 되셨으면 좋겠네요 ^^


-사진찍을때  아래에서  올라오는  메뉴 UIActionSheet-
http://ykyuen.wordpress.com/2010/04/14/iphone-uiactionsheet-example/


-uibutton disable-
http://www.iphonedevsdk.com/forum/iphone-sdk-development/2499-uibutton-disable.html


-이미지  슬라이드  샘플-
http://lievendekeyser.net/index.php?module=messagebox&action=message&msg_id=1351


-커버플로우  라이브러리-
http://apparentlogic.com/openflow/


-Xcode3.2.3과 SDK4로 업그레이드 후, 기존 앱 업그레이드 하는 법-
XCode3.2.3 과 SDK4로 버전업한 후, 기존 앱을 업그레이드 할 때 간단한 Tip 입니다.
1. XCode3.2.3과 SDK4로 업그레이드 한다. 별도로 기존 XCode 3.1 버전을 따로 보관할 필요가 없습니다.
2. 기존 앱을 새 XCode3.2.3에서 연다.
3.Group & Files를 right click -> Get Info 후
  3-1.General Tab 에서
Project Format 을 Xcode 3.2-compatible 로 바꾼다.
 3-2.Build Tab 에서
 Base SDK를 iPhone Device 4.0(배포시), 혹은 iPhone Simulator 4.0(테스트시) 로 바꾼다
 iPhone OS Deployment Target 을 iPhone OS 3.0 (즉 지원하고자 하는 하위버전으로) 로 바꾼다.
이렇게 하시면 됩니다.


-객체 타입 비교-
if ( [a isKindOfClass:b] )


-문자열 비교-
NSString *strText = idField.text;
if([srText isEqualToString:@"mihr01"])
....
else if([srText isEqualToString:@"mihr02"])
....
else
...
이렇게 하셔도 되고요 완전 같은 스트링이 아니라
 
포함된것을 찾으려면
if([strText rangeOfString:@"mihr01"].length)


-탭뷰에 스타일시트를 붙일때-
UIActionSheet *popupQuery = [[UIActionSheetalloc]
initWithTitle:nildelegate:self
cancelButtonTitle:@"취소"
destructiveButtonTitle:nil
otherButtonTitles:@"사진찍기", @"기존의사진선택", nil];
popupQuery.actionSheetStyle = UIActionSheetStyleBlackOpaque;
QuizersAppDelegate *appDelegate = (QuizersAppDelegate *)[[UIApplicationsharedApplication] delegate];
[popupQuery showInView:appDelegate.window];


-스크롤  밀어서  데이터  리플래쉬  하기-
소스코드
http://github.com/facebook/three20/tree/master/samples/TTTwitter/
설명
http://www.drobnik.com/touch/2009/12/how-to-make-a-pull-to-reload-tableview-just-like-tweetie-2/


-테이블뷰 위에 검색창 붙이는 방법-
테이블뷰 위에 검색창 넣으신 후에, viewDidLoad 메서드 부분에 [table setContentOffset:CGPointMake(0.0, 44.0) animated:NO];해주시면 처음 보여질 때는 검색창이 안 보이다가 밑으로 땡기면 나타나게 됩니다.


-네트워크  연결  됐는지  확인 Reachability-
http://www.raddonline.com/blogs/geek-journal/iphone-sdk-testing-network-reachability/
http://theeye.pe.kr/entry/how-to-check-network-connection-on-iphone-sdk



-아이폰 강제종료 버튼 이벤트-
아래 메소드가 어플이 종료될 때 수행되는 함수입니다.
종료될 때에 각종 리소스들을 Free시킬 경우에 사용됩니다.
참고하시면 될 듯 합니다~
 - (void)applicationWillTerminate:(UIApplication  *)application



-크랙 방지 클래스-
http://cafe.naver.com/mcbugi/11661



-어플을 강제 종료하는 API 는 아이폰에서 제공하지 않는다?-
http://cafe.naver.com/mcbugi/11803



-탭바 클릭시 바로 UISearchBar 클릭되도록 할려면 어떻게 해야 하나요?-
UISearchBar가 first responder가 되게 하면 됩니다.
[searchBarObj becomeFirstResponder];



-UITextField 입력값 체크하기 : 문자열 길이, 숫자여부 체크-

헤더(.h)에 UITextFieldDelegate 선언

@interface 클 래스명 : UIViewController <UITextFieldDelegate>



구현부(.m)에 다음 메쏘드를 구현하면 됨

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 

//return NO하면 입력이 취소됨
//return YES하면 입력이 허락됨
//textField 이용해서 어느 텍스트필드인지 구분 가능

//최대길이

int maxLength = 128;

NSString *candidateString;

NSNumber *candidateNumber;


//입력 들어온 값을 담아둔다

candidateString = [textField.text stringByReplacingCharactersInRange:range withString:string];


if(textField == IDField) {
maxLength = 8;
} else if(textField == AgeField) {
//숫자여부 점검

//length가 0보다 클 경우만 체크
//0인 경우는 백스페이스의 경우이므로 체크하지 않아야 한다

if ([string length] > 0) {

//numberFormatter는 자주 사용할 예정이므로 아래 코드를 이용해서 생성해둬야함

//numberFormatter = [[NSNumberFormatter alloc] init];

//[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];


//numberFormatter 를 이용해서 NSNumber로 변환

candidateNumber = [numberFormatter numberFromString:candidateString];


//nil이면 숫자가 아니므로 NO 리턴해서 입력취소

if(candidateNumber == nil) {

return NO;

}


//원 래 문자열과 숫자로 변환한 후의 값이 문자열 비교시 다르면

//숫자가 아닌 부분이 섞여있다는 의미임

if ([[candidateNumber stringValue] compare:candidateString] !=  NSOrderedSame) {

return NO;

}


maxLength = 2;

}

}

//길이 초과 점검

if ([candidateString length] > maxLength) {

return NO;

}


return YES;

}

http://cafe.naver.com/mcbugi/37651



-How to split string into substrings on iPhone?-
http://stackoverflow.com/questions/594076/how-to-split-string-into-substrings-on-iphone



-메모리 누수-
http://cafe.naver.com/mcbugi/64257


-디바이스 가로 세로 상태-
UIDeviceOrientationIsLandscape([UIDevicecurrentDevice].orientation) ?


-UITextField 에 자동 포커스 주기-
키보드 올리면서 커서를 넣을때는 아래방법을 이용하시면 됩니다.
[textField becomeFirstResponder];
참고로 이건 커서를 빼면서 키보드를 내리실때 사용하시면 되구요...
[textField resignFirstResponder];


-홈버튼이 눌렸을 때도 텍스트뷰 내용을 저장하려면 어떻게 해야할까요?-
- (void)applicationWillTerminate:(UIApplication *)application / Application Delegate 메서드 부분에 구현하시면 되지않을가요?


-3.2 4.0  동영상  플레이-
http://iphonedevelopertips.com/video/getting-mpmovieplayercontroller-to-cooperate-with-ios4-3-2-ipad-and-earlier-versions-of-iphone-sdk.html


-한글완성형(EUC-KR)을 iPhone/Mac에서 사용할 수 있는 언어셋으로 변환하기-
http://blog.backpackholic.tv/160


-인터페이스 함수들을 편하게 가져오는 방법-
http://code.google.com/p/xcode-auto-assistant/


-#pragma mark로 코드 쉽게 구분하기-
http://cafe.naver.com/mcbugi/64408


-os4에서 applicationWillTerminate가 안먹어서 알게된것-
os4에서 applicationWillTerminate: 가 안먹어서 삽질하다가 알아낸 결과입니다.
뒷북 인지는 모르지만 혹시 모르시는 분을 위해서 적어봅니다.
os3.x 에서는 홈버튼을 한번만 누르면 applicationWillTerminate 가 아주 잘 호출됩니다.
하지만 os4 에서는 홈버튼을 한번만 누르면 
applicationDidEnterBackground 가 호출됩니다.
os4 에서 멀티태스킹을 위해서 좀 바뀌었습니다.
os4에서도 홈버튼 한번 누를때 applicationWillTerminate 가 호출되게 하려면
info.plist 에서 'Application does not run in background' 이 속성을 추가해주면 됩니다.
위 속성이 없으면 기본적으로 멀티태스킹이 되는걸로 간주합니다. (진짜 멀티태스킹은 아니지만)
위 속성이 없을때 호출되는 메소드를 실험해 봤습니다.
-----------------------------------------------------------------
처음 어플을 실행시키면
     didFinishLaunchingWithOptions, 
applicationDidBecomeActive
이 호출되고
홈버 튼을 한번 만 누르면
applicationWillResignActive, 
applicationDidEnterBackground
호출되면서 어플이 종료되고
이상태에서 다시 어플을 실행시키면
applicationWillEnterForeground, 
applicationDidBecomeActive
호출됩니다.
홈버튼을 두번 누르면
applicationWillResignActive
이 호출됩니다.
----------------------------------------------------------------
'Application does not run in background' 을 체크하면
홈버 튼을 한번만 누르면 applicationWillTerminate 를 호출합니다.
'근데 속성 체크 안했을때 applicationWillTerminate 는 호출이 안되는건지 궁금하네요.
아시는 분 좀 알려주세요.

답글 :
Applicationwillterminate함수 대신에 applicationDidENterBAckground 사용하라고하네여 이곳에서 공유자원해제나 사용자데이타 저장,타이머 무효화,어플상태정보등 저장을 하라고 합니다. http://cafe.naver.com/mcbugi/65497


-COCOS2D 번개 효과-
http://www.cocos2d-iphone.org/forum/topic/370


-iPhone 4.0 호환 키보드에 버튼 or 뷰 붙이기-
기존꺼에 비해 약간 수정되 었을뿐입니다....
하지만 -_-이거 찾느라 ㅠㅠ;;

3.1.x에서는 windows 서브뷰에 항상 키보드 뷰가 있었지만 ...
4.0 부터는 windows 에 항상 있는게 아니고, 키보드를 불렀을때 -_- 붙어서 오더라고요.. 그래서

Done 버튼 붙이는 예제 입니다. (Number 패드에)

아래 액션을 Text필드의 BeginTouched 에 연결 시킵니다.
 // 키보드가 나왔을때랑 사라질때의 이벤트를 잡아냅니다.
//3.1.X 에서는 UIKeyboardWillShowNotification 으로 잡지만
// 4.0 때문에 --; DidShow로 잡아줬습니다.
//그래야 윈도우에 키보드가 있더라고요 ;;;
-(IBAction)FieldTouched{
   
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyboardWillShow:)
                                                 name:UIKeyboardDidShowNotification
                                               object:nil];
   
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyboardWillHide:)
                                                 name:UIKeyboardWillHideNotification
                                               object:nil];
   
   
}

// 키보드가 나왔을때 Done 버튼 붙여주기
- (void)keyboardWillShow:(NSNotification *)note { 
   
    UIButton *doneButton = [UIButton buttonWithType:UIButtonTypeCustom];
    doneButton.frame = CGRectMake(0, 163, 106, 53);
    doneButton.adjustsImageWhenHighlighted = NO;
    [doneButton setImage:[UIImage imageNamed:@"DoneUp.png"] forState:UIControlStateNormal];
    [doneButton setImage:[UIImage imageNamed:@"DoneDown.png"] forState:UIControlStateHighlighted];
    [doneButton addTarget:self action:@selector(backgroundTap:) forControlEvents:UIControlEventTouchUpInside];

    //3.1.x 와 4.0 호환 키보드 붙이기
    for( UIWindow *keyboardWindow in [[UIApplication sharedApplication] windows] ){
        for( UIView *keyboard in [keyboardWindow subviews] ){
            NSString *desc = [keyboard description];
            if( [desc hasPrefix:@"<UIKeyboard"]==YES ||
               [desc hasPrefix:@"<UIPeripheralHostView"] == YES ||
               [desc hasPrefix:@"<UISnap"] == YES )
            {
                [keyboard addSubview:doneButton];
            }
        }
    }
   
}

// 키보드가 없어질때 Done 버튼을 삭제 합니다.
- (void)keyboardWillHide:(NSNotification *)note { 
   
    for( UIWindow *keyboardWindow in [[UIApplication sharedApplication] windows] ){
        for( UIView *keyboard in [keyboardWindow subviews] ){
            NSString *desc = [keyboard description];
            if( [desc hasPrefix:@"<UIKeyboard"]==YES ||
               [desc hasPrefix:@"<UIPeripheralHostView"] == YES ||
               [desc hasPrefix:@"<UISnap"] == YES )
            {
                for(UIView *subview in [keyboard subviews])
                {
                    [subview removeFromSuperview];
                }
               
            }
        }
    }
}

도 움 되시길 바랍니다 ;)
http://cafe.naver.com/mcbugi/62349


-배열내 숫자 값 비교해서 정렬하기-
만약에 객체내의 인스턴스를 키로 정렬할 경우에는 NSSortDescriptor 를
쓰시면 됩니다.
아래는 name으로 정렬한 예입니다.

@interface Test :
NSObject {
NSString *name;
double distance;
}
@property
(nonatomic, retain) NSString *name;
@property double
distance;
@end

@implementation Test
@synthesize name, distance;
@end


아 래는 사용방법입니다.
       Test *t1 = [[Test alloc] init];
Test *t2 = [[Test alloc] init];
Test *t3 = [[Test alloc] init];
[t1 setName:@"마바사"];
[t2 setName:@"아자차"];
[t3 setName:@"가나다"];
[t1 setDistance:1.2];
[t2 setDistance:2.5];
[t3 setDistance:0.5];
NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject:t1];
[array addObject:t2];
[array addObject:t3];
[t1 release];
[t2 release];
[t3 release];
// 이름순으로 정렬
NSSortDescriptor *nameSort = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES selector:@selector(localizedCompare:)];
[array sortUsingDescriptors:[NSArray arrayWithObjects:nameSort, nil]];
[nameSort release];
for(Test *t in array) {
NSLog(@"%@ %f", [t name], [t distance]);
}
[array removeAllObjects];


------[결 과]------
2010-07-12 17:46:13.117 Sort[5070:20b] 가나다 0.500000
2010-07-12 17:46:13.125 Sort[5070:20b] 마바사 1.200000
2010-07-12 17:46:13.130 Sort[5070:20b] 아자차 2.500000


p.s. distance로 정렬하고자 한다면 
NSSortDescriptor *distanceSort = [[NSSortDescriptor alloc] initWithKey:@"distance" ascending:YES];
nameSort 대신 distanceSort를 넣으시면 됩니다.
http://cafe.naver.com/mcbugi/65873


-[TIP] 시뮬레이터 사진앨범에 사진넣기-
1) 시뮬레이터를 실행시킵니다.

2) 맥에서 포토라이브러리에 넣을 사진을 시뮬레이터로 Drag&Drop 합니다.

3) 그러면, 사파리가 열리면서 Drag한 이미지가 표시가 될겁니다.

4) 그 표시된 이미지를 마우스로 꾸~~~~~~욱 눌러줍니다.

5) 그러면, 메뉴가 뜨면서 이미지를 저장할건지 복사할건지를 묻습니다.

6) 이미지 저장을 누릅니다.

7) 이제 시뮬레이터의 사진앨범에 가 보시면 아까 저장한 사진이 들어가있을겁니다.



위 글이 유용하셨다면 http://durl.kr/23tin 응원 한마디 부탁드립니다. 
Trackback Address :: http://joyholic.kr/trackback/434 관련글 쓰기
Name
Password
Homepage
Secret
2010/11/09 12:37
https://github.com/rcarlsen/Pocket-OCR
Trackback Address :: http://joyholic.kr/trackback/433 관련글 쓰기
Name
Password
Homepage
Secret
2010/09/16 22:40
아이폰 4로 영화제를 연다고 합니다.
재미는 둘째치고, 핸드폰으로 영화를 촬영한다니.. 신기한 세상이죠.
10월 6일에 개막해서 31일까지 연다고 하니 관심을 가지고 한번 지켜보려 합니다.

국내 영화 감독들도 상당수 참여한다고 하니 개중 잘 만들어서 히트 치는 작품도 분명 있을거라 사료되네요.

말아톤-정윤철, 신데렐라-봉만대, 마린보이-윤종석, 작전-이호재, 남극일기-임필성, 호우시절-김병서,
달콤한 인생-김지용, 친절한 금자씨-정정훈, 거북이 달린다-조용규, 마더-홍경표, 아트디렉터-이현하, 뮤직비디오감독-홍원기 등

갠적으로 쵸큼 좋아라 하는 김지용 감독님이 기대가 되네요.

'넌 나에게 모욕감을 줬어..'

아이폰 4로 촬영하고 참여자 중 일부는 편집에서 음악작업까지 전부다 아이폰으로 제작한답니다.

720P HD급 고화질로 제작된다니, 영상도 그럭저럭 괜찮을 것 같습니다.

기대 되네요.

요즘, 아이폰4 말이 좀 많긴한데, 아이폰 4로만 촬영하는 영화, 정말 정말 기대되네요.

어떤 영상이 나올지...

암튼 출품작 12편에, 상영을 아이폰 4 필름 페스티벌 공식 홈페이지랑 아이폰 전용 어플리케이션, 또
10월 8일에서 14일까지 부산 해운대에서 상영한다고 합니다.

기대 됩니다.




Trackback Address :: http://joyholic.kr/trackback/432 관련글 쓰기
Name
Password
Homepage
Secret
2010/08/08 10:41
Trackback Address :: http://joyholic.kr/trackback/430 관련글 쓰기
Name
Password
Homepage
Secret
2010/07/21 14:33

http://blog.stijnspijker.nl/2009/07/animated-and-transparent-gifs-for-iphone-made-easy/


Trackback Address :: http://joyholic.kr/trackback/428 관련글 쓰기
Name
Password
Homepage
Secret
2010/07/08 16:16

/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Project Templates/Application
Trackback Address :: http://joyholic.kr/trackback/424 관련글 쓰기
Name
Password
Homepage
Secret
2010/07/07 11:43

http://www.qdevnet.com/ar
Trackback Address :: http://joyholic.kr/trackback/423 관련글 쓰기
Name
Password
Homepage
Secret
2010/06/25 14:07

#if __APPLE__
#include "TargetConditionals.h"
#endif

#if TARGET_IPHONE_SIMULATOR
// jobs which should run on your simulator.
[yourObject doSomethingWithSimulator];
#else //TARGET_IPHONE_SIMULATOR
// jobs which should run on a real device.
[yourObject doSomethingWithDevice];
#endif //TARGET_IPHONE_SIMULATOR
Trackback Address :: http://joyholic.kr/trackback/420 관련글 쓰기
Name
Password
Homepage
Secret
2010/06/22 12:30
Original : http://cafe.naver.com/mcbugi.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=1542
 
  • Initial release on iPhone 4
  • General New Features (신규 기능) 
    • Multitasking by double clicking home button (홈 단추 두번 누르기로 멀티태스킹. 멀티태스킹 모드를 지원하는 앱만 사용 가능. 기본적으로 내장된 앱들은 멀티태스킹으로 사용할 수 있지만, 상당수 앱들은 업데이트 필요)
    • Support for Apple Bluetooth keyboards (애플 블루투스 키보드 지원)
    • Game Center social network
    • iBooks with PDF support
    • iAd mobile advertising network
    • Portrait orientation lock
  • iOS 4
    Camera (카메라)
    • 5x digital zoom
    • Tap to focus video (일반 사진에서만 가능하던 기능을 비디오 촬영 시까지 확대)
  • Settings (설정)
    • App-specific location settings (위치 서비스 사용 여부를 앱별로 설정 가능)
    • Cellular data only setting
    • Password with alphabet characters and numbers
    • Simple Passcode Lock (4 digit number) option
    • New Wallpapers
    • Wallpaper available for home screen
    • New Wallpaper preview for home screen and lock screen
    • Set up Internet Tethering
    • New Gmail and Exchange icons in Mail, Contacts, Calendars account settings
    • Support multiple Exchange accounts
    • Custom Dictionary
  • Compass (나침반)
    • Remove the button link to Maps (Added back with build 8A248c β2.)
  • Home Screen (홈 화면) 
    • Ability to categorize apps into folders with default folder naming based on category name in App Store
    • Up to 2,160 instead of 180 visible apps (12 apps per folder)
    • Folder name supports up to 13 characters
    • Custom backgrounds for Home screen and Lock Screen
    • Dock redesigned to that of the iPad
    • Rate on deleting app removed
    • Default utilities folder which contains the clock, calculator, voice memos and compass apps
  • Photos (사진)
    • Categorized by Albums, Faces, Events and Places (under iPhoto in Mac OS X)
    • Select multiple photos for mass deletion (여러 사진 한 번에 지우기 가능)
    • Support landscape mode
  • Camera Roll (카메라 롤)
    • Rotate photos
    • Resize photos
    • Categorization by All, Photos and Videos
    • Support landscape mode
  • App Store
    • Ability to gift apps (유료 앱을 다른 사용자에게 선물로 전송하는 기능)
  • Maps
    • Unified "locate me" icon
    • Background location icon shown on status bar (현재 앱이 위치 서비스를 사용하고 있다면 상태 막대에 관련 아이콘 표시)
  • iPod
    • Playlist creation on device
    • Nested playlists
    • Lyrics and Podcast info on Setting
    • Volume control with Bluetooth headsets
    • Art in Album View
  • Notes (메모)
    • Notes syncing with MobileMe, Gmail IMAP and Yahoo! Mail
    • Accounts management appears if syncing is enabled
    • Notes setting below Mail, Contacts, Calendars Settings if syncing is enabled
    • Moved search box into title bar
  • Calendar (캘린더)
    • Birthday calendar
    • CalDAV invitations
  • Contacts (연락처)
    • Unified Info by linking contacts from different accounts
    • CardDAV
    • Streamlined "New Contact" Screen
  • Spotlight
    • Search with Web or Wikipedia
  • Safari (Webkit version 532.9)
    • Bing is now a search option, along with Google and Yahoo (검색 옵션에 Bing 추가)
    • Recent Searches below search field
    • Top Hit in Search
    • Google Suggest appears below search field if Search Engine is set to Google
    • Unified "Search" keyboard button when search field being used
    • In-Page Video Playback (페이지 내에 삽입된 비디오 재생 시 전체 화면 모드로 전환되었으나, 이제는 페이지 내에 삽입된 상태로 재생 가능)
  • YouTube
    • Rotate & Zoom Videos in vertical and horizontal Position
  • Nike+
    • Upload workouts to Nike+
  • Accessibility
    • Larger fonts in Mail, SMS & alerts
  • Message
    • Include a Search bar
    • Character count (Can be enabled or disabled in Settings -> Messages screen)
    • Failed SMS Notification
    • Option to toggle off the ability to send group messages
  • Mail
    • Unified Inboxes
    • Edit from Outbox
    • Support for multiple Exchange accounts
    • File & delete Mail search results
    • Organize By Thread in Mail
    • Quicklook attachments
    • Open attachments by registered filetype with corresponding Apps from App Store
    • Smart Links For Dates and Addresses
    • Contact Pictures in Emails
    • Create Calendar events from dates within emails
  • International
    • Spell Check
    • Added Cangjie and Wubihua Keyboards for Simplified and Traditional Chinese
    • Text replacement between Simplified and Traditional Chinese
    • Switch keyboard shortcut (holding the "earth" button on keyboard for a while)
    • Added support for Danish voice control
    • Hungarian Language added
  • Other
    • Persistent Wi-Fi (잠자기 모드에서도 와이파이 연결 상태 유지)
    • Wake on Wireless
    • Auto-join and Auto-login and IPv6 on individual Wi-Fi Networks setting
    • Enhanced data protection
    • Wireless app distribution
    • Mobile device management
    • SSL VPN support (both Juniper and Cisco)
    • Microsoft Exchange Server 2010 support
    • Improved Bluetooth driver for A2DP devices
  • 주: iPod Touch 1st gen and iPhone 1st gen devices are not supported, while iPhone 3G and iPod touch 2nd gen have limited support. iPhone 4, iPhone 3GS, and iPod touch 3rd gen are all fully supported.
Trackback Address :: http://joyholic.kr/trackback/418 관련글 쓰기
Tracked from printer monitor tool | 2012/04/26 15:44 | DEL
Joy Holic!! - 새로운 아이폰 운영 체제 iOS 4.0 신규 기능 정리
Tracked from stock newsletter | 2012/04/29 02:08 | DEL
Joy Holic!! - 새로운 아이폰 운영 체제 iOS 4.0 신규 기능 정리
Name
Password
Homepage
Secret
2010/06/15 13:51
간만에 트위터에 글을 하나 남길려고 접속하려고 하니.. 이런 창이 ㅡㅡㅋ

이건 먼가효..

인기가 많긴 많은가보네 ㅠㅠ 난 언제쯤 이런걸 만들어보나...


Trackback Address :: http://joyholic.kr/trackback/417 관련글 쓰기
Name
Password
Homepage
Secret
2010/06/15 13:42

http://www.getpaint.net/
Trackback Address :: http://joyholic.kr/trackback/416 관련글 쓰기
Name
Password
Homepage
Secret
2010/06/15 13:40
Possible freebie options for game designers on a budget:
Gimp for raster graphics.
Inkscape for vector graphics.

These are the two that I use for the most part. Note that you can also create 2D game art by creating 3D models in Blender then rendering. This is how I make most of my UI stuff.

Trackback Address :: http://joyholic.kr/trackback/415 관련글 쓰기
Name
Password
Homepage
Secret
2010/06/14 12:35
뭘까나??..
[UITextField명 becomeFirstResponder];

Trackback Address :: http://joyholic.kr/trackback/413 관련글 쓰기
Name
Password
Homepage
Secret
2010/06/14 11:30
#!/bin/bash
projectName="FlashCard"
xcodebuild -project $projectName.xcodeproj -configuration DIST clean build
rm -rf ~/Desktop/$projectName.zip
cd build/DIST-iphoneos/
zip -y -r ~/Desktop/$projectName.zip $projectName.app
 
Trackback Address :: http://joyholic.kr/trackback/412 관련글 쓰기
Name
Password
Homepage
Secret
2010/06/07 13:47
Original : http://iphonedevelopment.blogspot.com/2010/03/xcode-project-template-expansion-macros.html

Xcode Project Template Expansion Macros

Earlier today, I lazy-tweeted to see if anyone had a definitive list of Xcode's project expansion macros. If you open up a project template and poke around, you'll see both in filenames and in file contents, these all-cap words surrounded by three underscores like ___PROJECTNAME___. These are replacement macros that get replaced with some other value when you create your project based on that template. ___PROJECTNAME___, for example, gets replaced with the name of the project as it was typed in by the user into the new project assistant.

I've assembled from a few different sources a list of all the known macros.

Token

Replaced By

___PROJECTNAMEASIDENTIFIER___

The project name with spaces and any filename-illegal characters replaced by underscores.

___PROJECTNAME___

The project name exactly as entered by the user when the project was created.

___PROJECTNAMEASXML___

The project name exactly as entered by the user when the project was created, but with converted using XML encoding so that it's legal XML.

___FULLUSERNAME___

The long user name of the developer who created the project pulled from the account information.

___USERNAME___

The short user name of the developer who created the project.

___TIME___

The time of the day at which the project was created.

___DATE___

The date on which the project was created.

___YEAR___

The four-digit year in which the project was created.

___ORGANIZATIONNAME___

The name of the company or organization for which the developer works (SEE SIDEBAR).

___UUID___

A generated unique identifier for your project.

___UUIDASIDENTIFIER___

The same unique identifier as ___UUID___, but with spaces and illegal characters converted to underscores.


One of the values in that table, however, doesn't belong there. I've included it (___ORGANIZATIONNAME___) because Apple uses it in most (all?) of their own Xcode templates, but it's not a built-in value like the others with a set meaning. It's a custom macro and (as you may know) you have to manually add it to Xcode's list of macros to get it to work. To make things more confusing, there's no place in Xcode where you can actually set this value (that I know of, at least).

To define the organization name that will be used in place of the ___ORGANIZATIONNAME___replacement token that's used in Apple's provided templates, you have to drop down to the terminal and type something like:
defaults write com.apple.Xcode PBXCustomTemplateMacroDefinitions '{ "ORGANIZATIONNAME" = "Naked Software, Inc.";}'
That's a pain, but the good news is, this mechanism is generic. It works for any replacement token you want to define. You could, for example, type this command in the terminal:
defaults write com.apple.Xcode PBXCustomTemplateMacroDefinitions '{ "MYTESTTOKEN" = "Hee Haw";}'
And anywhere in a project templates where you included ___MYTESTTOKEN___ in a filename or as part of a file's contents, Xcode would substitute Hee Haw for it.

If you want to find out what expansion macros you have defined, you can do this:
defaults read com.apple.Xcode PBXCustomTemplateMacroDefinitions
Now, in reality, there's a limit to just how useful this feature is. Apple's not likely to start using custom tokens other than ___ORGANIZATIONNAME___ and for your own templates, you can put whatever the hell you want in there, so unless you have machine- or user-specific data to insert into new projects, you'll probably never actually use this feature further than to define ___ORGANIZATIONNAME___, but it's nice to know it's there and understand what's going on a little better under the hood.


Matt Gemmell and two commenters reminded me that organization name IS now exposed in Xcode starting with 3.2 and that if it's not set, Xcode will pull it from your card in Address Book, so ___COMPANYNAME___ does belong in the list. The rest of the above is still true, however.
Trackback Address :: http://joyholic.kr/trackback/410 관련글 쓰기
Name
Password
Homepage
Secret
2010/06/07 11:10

Creating Xcode project templates

From Mac Guides

Jump to: navigation, search

This guide explains how to create new project templates in Xcode. Project templates appear in the list of project types in the New Project dialog.

  1. Create a new project and setup everything as you'd like (NIB files, graphics, sounds, settings, code etc)
  2. Optionally, build and make sure the project works
  3. Use Finder and locate the project folder for your project you created in step 1
  4. Open another Finder window and navigate to /Library/Application Support/Apple/Developer Tools/Project Templates/. You have two options here:
    • Create a new folder for your custom project templates - this will appear as a category when creating a new project in XCode
    • Choose an already existing folder (eg Application) - this will place the project template in that category
  5. Open the new/chosen category folder and create a new folder inside. You can name this new folder whatever you like and it will appear as the project template name.
  6. Copy all files from the project folder in step 3 to the new template folder created in step 5. Note: If you built the project, delete the build folder from the template folder.
  7. Try to create a new project in Xcode. You should see your project template in one of the original categories or in the category you created, whichever you decided.
Trackback Address :: http://joyholic.kr/trackback/409 관련글 쓰기
Name
Password
Homepage
Secret
2010/06/04 17:29
Original : http://cafe.naver.com/mcbugi.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=21701



A. 배포전에 진행사항
1. Distribution Provisioning Profiles 만들기
 - 개발사이트 우측 Program portal 
 - App ID 만들기
   : New App ID
   : Description -> 어플id
   : Bundle Seed ID -> Generate New (그대로)
   : Bundle Identifier -> 홈페이지URL을 거꾸로 + 어플ID (예: kr.co.hello.skyworld )
 - Provisioning -> Distribution 
   : New Profile
   : (0)App Store -> Profile Name : 보통 어플 ID와 동일하게 입력 -> 위에 입력한 App ID 선택
 - Provisioning Profile을 다운로드 받는다.
 - Macintosh HD > 사용자 > 홍길동(?) > 라이브러리 > MobileDevice > Provision Profiles에 복사한다.

2. Xcode에서 배포파일 만들기
  - Xcode project(Groups & Files) Info
    : Configurations 탭에서  "Release" 항목을  아래 Duplicate한후 "Distribution"으로 Rename한다.
    : Build 탭에서 좌측상단 Configuration을 Distribution으로 변경
    : Base SDK를 iPhone Device 2.2.1로 변경한다.(아이폰2세대 지원할 경우)
    : 항목중 Code Signing 에서 Any iPhone OS Device내용을 1.에서 만든 Provisioning Profile을 선택한다. (iPhone Distribution : 홍길동)
  - Resource 그룹 중에 Info.plist를 열면
    : Bundle display name을 입력하고, Bundle identifier를 입력한다.(예:kr.co.hello.skyworld)
    : Bundle version은 일반적으로 1.0으로 하고 향후 업뎃할때 1.1로 함

  - 배포용 파일 만들기
    : 상단 툴바 상태를  [ Device - 2.2.1 | Distribution ]으로 한다. (2.2.1 지원할 경우)
    : 메뉴바에서 Build를 선택한 후 [ Build ]를 한다.
    : 빌드가 성공하면 Groups & Files의 Products 그룹에 Project name .app가 생성된다.
    : .app에 마우스 우클릭하여  Reveal in finder를 선택한다.
    : finder폴더 위치가 프로젝트 - build- Distribution iphoneos 로 연결된다.
    : 확장자 없는 파일이 배포될 파일이다.
    : 확장자 없는 파일을 압축한 후 (.zip) 개발 사이트를 통해 앱스토어에 등록한다.

B. AppStore에 등록하기
1. iPhone Developer Program
 a. Over view
 - iTunes Connect -> Manage Your Applications -> Add New Application
 -  Does your prodect contain encryption ? 암호화 유무 
 - Application name : 앱스토어에 나타나는 이름
 - Applicaiotn Description : 앱스토에에 나타나는 어플 설명
 - Device Requirements : 아이폰, 이이팟 선택
 - Primary Category, Secondary Category : 장르 선택
 - Copyright : 자작권자
 - Version Number : 어플리케이션 버전, Xcode Boundle version (예: 1.0)
 - SKU Number : 개발자가 관리하는 관리코드, 본인이 관리하는 어플의 유일코드
 - Keywords : 검색어 (주의사항 : 자작권위반, 유명인사이름, 애플관련 단어는 절대 안됨)
 - Application URL, Support URL : 개인 블로그나 기타 어플 피드백용 홈페이지
 - email...
 - Demo : 리뷰어가 어플 테스트시 도움이 되는 설명사항
------------------------
 b. Ratings
 - 등급 넣기 : 일반적으로 NONE
------------------------
 c. Upload
 - Application : Build한후 zip으로 만든 파일 , Upload 완료후에 iPhone3.0테스트 완료했다는 체크 하기
 - Large 512 icon : 512*512 jpg파일 -> 어플의 57*57아이콘과 동일한 이미지로 하기 , 앱스토어에 노출됨
 - Primary Screenshot: 어플 화면
 - Additional Screenshots : 등록할때 뒷부분 이미지부터 선택할 것 4->3->2->1순으로.
------------------------
 d. pricing
  날짜 선택 : in Review 후 Ready For Sale되면  RFS 날짜 기준으로 판매 될 예정, 손 볼 것 없음
  가격 선택 : 표를 보고 확인하기.
------------------------
 e. localization : 각 국가별 언어로  해당 언어를 따로 보여 주기
  예: korean을 선택후 어플 이름, 설명을 한글로 넣으면 한국앱스토어에선 한글로 나타남
------------------------
 f. Review
  위 사항 최종 확인
------------------------
 일단 등록 끝

C. 애플에서의 진행 상태
 1) Waiting for Review : 테스트 대기상태
 2) In Review : 애플에서 어플 테스트 중
 3) Ready for sale : 앱스토어에 판매 대기 및 판매중
 4) Reject : 판매 보류, 이후는 어플리케이션 수정후  B.사항부터 할 것 version은 수정하지 않는다.
Trackback Address :: http://joyholic.kr/trackback/408 관련글 쓰기
Name
Password
Homepage
Secret
2010/06/04 17:14
What you need:
1: An app
2: A patched MobileInstallation file installed on your iPhone or iPod Touch. 
3: Lastly, you need to know that when I say "ProgName", substitute the name of the program you're working with 
Getting the iTunesArtwork file
The iTunesArtwork file is simply a jpeg image with the extension taken off, and is included in application's install folder on your device for every app downloaded from the app store. This image is what appears in the Applications section of iTunes as the icon for the app, and is definitely nice to have -- if you don't have it, you get a generic, black icon that no one wants to see. If you have the iTunesArtwork file, skip all this and go down to the next red headline! Otherwise, read on:
1: Open iTunes on your computer and find your application in the iTunes Music Store. On the application's page, find the app icon at the top-left corner of the page and right-click it. Now choose "Copy iTunes Store URL". Your clipboard now contains something like this:
Code:
http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284962368&mt=8
2: Paste that somewhere (in your browser or a text editor) and replace the section that says
Code:
phobos.apple.com
with this:
Code:
ax.phobos.apple.com.edgesuite.net
Go to the resulting URL in your browser.
3: Do a search on that page for the text:
Code:
100x100-75
Safari users will have to right-click the page and select "View Source" before searching for the above text.
Once the text is found, copy the entire URL it's in to your clipboard. For example, this is the URL I ended up with:
Code:
http://a1.phobos.apple.com/us/r30/Purple/fe/c1/bc/mzl.gpjkgpje.100x100-75.jpg
4: Paste the URL from the last step into your browser again, but change the "100x100" to "512x512". The image that loads will be the official, Apple-provided iTunesArtwork file. Save this to your desktop.
5: Rename the file to "iTunesArtwork" with NO extension. Note that doing this from the GUI on Mac will simply hide the extension, not remove it. If this is the case, open Terminal (found in /Applications/Utilities) and paste this line into it:
Code:
mv ~/Desktop/iTunesArtwork.jpg ~/Desktop/iTunesArtwork
Mac and Linux users should then execute this line in Terminal to apply the appropriate permissions to the file:
Code:
chmod 665 ~/Desktop/iTunesArtwork
Windows users will need to enable the "Show known file extensions" option in their folder options in order to remove the extension properly.
6: Pat yourself on the back! You've just gotten your iTunesArtwork file.
Bundling the .IPA
1: Create a folder on your desktop called "working". Open that, and create another folder inside of it called "Payload". Case-sensitive.
2: Move your iTunesArtwork file into the "working" folder, and your .app into the Payload folder.
3: Mac and Linux users only: Open Terminal and run the following command:
Code:
chmod -R 775 ~/Desktop/working/Payload
4: Go into your ProgName.app folder within Payload (Mac users, right-click ProgName.app and choose Show Package Contents).
5 (For Mac users with Dev Tools installed ONLY): Double-click the Info.plist file. The Property List Editor will open and show a simple table. Click the last row of the table, then press the + button that appears to create a new row at the bottom. In the first new cell enter
Code:
SignerIdentity
and in the second new cell, enter
Code:
Apple iPhone OS Application Signing
Save this file.
5 (For Windows, Linux, and other Macs): Visit the following site: https://brokolice.drsny.net/iphone/plutil/ (You may have to Approve the security certificate -- don't worry, it's safe)
Browse for your Info.plist file, and press the "Convert" button. Save the resulting file to your computer. Windows users, open this file in WordPad. Mac and Linux users can use any text editor.
scroll to the bottom of the file and make a new line just before
Code:
</dict>
And paste the following in that spot:
Code:
<key>SignerIdentity</key>
<string>Apple iPhone OS Application Signing</string>
The end of the file should now look like this:
Code:
<key>SignerIdentity</key>
<string>Apple iPhone OS Application Signing</string>
</dict>
</plist>
Save the file (Make sure the name is Info.plist -- case sensitive!) and replace the Info.plist in ProgName.app with it.
6: Time to zip it up. Use your favorite method to zip the iTunesArtwork file and Payload folder together in one .zip file. Mac users can select both, right-click, and choose "Compress 2 Items". Windows users can select both, right-click, and choose "Add to Archive" (remember to select ZIP, not RAR if that option is available).
If you unzip the file, you should see this structure:
Code:

iTunesArtwork
+Payload
AppName.app
7: Rename the zip file to ProgName.ipa
8: All done! Congratulations!
Trackback Address :: http://joyholic.kr/trackback/407 관련글 쓰기
Name
Password
Homepage
Secret
2010/06/04 10:05
Originals : http://www.worldcupbuzz.com/espns-2010-fifa-world-cup-murals/

ESPN’s 2010 FIFA World Cup Murals

by Jesse Chula on May 27, 2010 · 129 comments

All 32 Nations ESPNs 2010 FIFA World Cup Murals

ESPN have recently released their brilliant advertising campaign for this summer’s World Cup in the form of creatively designed artistic murals. 33 in total, all 32 nations are represented with the above placed South Africa World Cup mural to highlight what’s to come. Continuing reading after the break to view each nation’s unique and colorful mural. Visit the official Facebook site to download each one of the murals as you anxiously await June, 11th.

Algeria ESPNs 2010 FIFA World Cup Murals

  • Wolves howl in a South African dusk as the Algerian team celebrates a potential group stage victory over England or the US as a rabid nation looks on excitedly.

Argentina ESPNs 2010 FIFA World Cup Murals

  • The MESSIah like Lionel Messi steams toward goal as a proud nation remembers earlier victories claiming the world title in ‘78 and ‘86. Can a once proud son lead La Albiceleste and the current best footballer on the planet to another title on 2010?

Australia ESPNs 2010 FIFA World Cup Murals

  • The Aussies made a good show of themselves in 2006 and will look to build upon that respectable performance when Tim Cahill and Co battle what looks to be one of the groups of death featuring Germany, Serbia and Ghana.

Brazil ESPNs 2010 FIFA World Cup Murals

  • The once star of the national team looks to carry the weight of enormous expectations of Brazil and may even be celebrating a bit early. Hey, there’s even a bikini in the audience.

Cameroon ESPNs 2010 FIFA World Cup Murals

  • Samuel Eto’o and the rest of the lion-esque Cameroon squad will look to thrive on the fact they’ll be on their home continent come this June. The goal-scoring Eto’o has just come fresh of a treble winning domestic season with Inter Milan and will look to keep his good form with his country.

Chile ESPNs 2010 FIFA World Cup Murals

  • The Chileans are quick and will most likely play 3 at the back. They’ll be exciting to watch when they commit that many players forward. Their group stage clash with Spain is sure to delight.

Denmark ESPNs 2010 FIFA World Cup Murals

  • Olsen’s Eleven, very clever take on the heist film. Martin Olsen and Denmark are a European side not to be underestimated. They finished first in their group ahead of Portugal, Sweden and Hungary. A group stage match up with fellow European representatives the Netherlands looks set to be a good one.

England ESPNs 2010 FIFA World Cup Murals

  • Rooney, Gerrard and the rest of the England players look to finally impress on the world stage and add another W next to the year 1966. 2010 may just be England’s best chance to “bring football home” with the brilliant Fabio Capello at the helm.

France ESPNs 2010 FIFA World Cup Murals

  • Will Les Bleus over-achieve like they did in 2006 or under-achieve like they did in 2002? Is Raymond Domenech really the right man to mold all that incredible French talent? We’ll soon find out.

Germany ESPNs 2010 FIFA World Cup Murals

  • What a photo. They’re now without their Captain and leader Michael Ballack, but one should never underestimate the mighty Germans. Calling on greats from Germany’s past, Ballack will hopefully pass on his leadership role to another as Germany looks for glory in South Africa.

Ghana ESPNs 2010 FIFA World Cup Murals

  • Another vitally important player that will miss out because of injury, Michael Essien carries not only the flag, he carried Ghana’s best chance of making an important run in South Africa. Ghana will look to avenge their loss in the final of the 2010 African Cup of Nations to Egypt as they play their second major tournament on the continent this year.

Greece ESPNs 2010 FIFA World Cup Murals

  • Onward the Greeks! They figured out modern civilization and a way to win Euro 2004, can they figure out how to get out of their group this summer?

Honduras ESPNs 2010 FIFA World Cup Murals

  • They may have erected a statue of American defender Jonathan Bornstein in Tegucigalpa, but the Hondurans didn’t get to South Africa by the head of Bornstein. Honduras have a difficult group stage run having to face Spain, Chile and Switzerland. They’ll want to represent their nation and CONCACAF well, but will need to be at their best.

Italy ESPNs 2010 FIFA World Cup Murals

  • Defending Champions are never easy to eliminate – just ask Inter Milan about Barcelona. The Italians aren’t being picked by many to repeat which could ultimately benefit the notoriously slow starting Europeans. They’d love nothing more than to fly under the radar to the quarter and semi finals only to shut down the opposition en route to another final.

Ivory Coast ESPNs 2010 FIFA World Cup Murals

  • Cote d’ Ivoire led by the brilliant Didier Drogba, Salomon Kalou and the brothers Toure are another African nation that will look to impress with former England boss Sven-Goran Eriksson at the helm. They’ll attack with purpose and defend bravely. Surely a dark horse for many making predictions.

Japan ESPNs 2010 FIFA World Cup Murals

  • One of my favorite murals from the lot of them, this brilliant depiction of a classic Japanese striker-samurai shredding and slicing through rival nations while continuing to hold up the ball is a treat.

Mexico ESPNs 2010 FIFA World Cup Murals

  • El Tri will look to build upon the turn around of sorts they enjoyed when current boss Javier Aguirre took over from the lackluster Swed Sven-Goran Ekirsson. They also came out on the short end of a meeting with England but impressed with their speed and passing abilities.

Netherlands ESPNs 2010 FIFA World Cup Murals

  • The flying Dutchmen anyone? Many a football fans second favorite team, the Dutch always play their positive brand of attacking football and could be a favorite to win the title if they can avoid a classic meltdown in later stages.

New Zealand ESPNs 2010 FIFA World Cup Murals

  • The lone qualifier from Oceania, New Zealand will face three difficult group stage matches and will be facing a miracle if they advance. Great photo though.

Nigeria1 ESPNs 2010 FIFA World Cup Murals

  • The fantastic Super Eagles will look to soar high above their opponents led by Obafemi Martins, the experienced Kanu, and Mikel John Obi. Like the other African nations competing, Nigeria have the advantage of playing together as a team in the 2010 African Cup of Nations earlier this year where they made the semi final.

North Korea ESPNs 2010 FIFA World Cup Murals

  • If Cape Verde can hold fellow group G participants Portugal to a 0-0 draw, you better believe the organized and defensively minded North Koreans can do the same. On paper, they should exit the group stages with 0 points, but don’t underestimate North Korea being difficult to break down.

Paraguay ESPNs 2010 FIFA World Cup Murals

  • They finished ahead of Argentina in the difficult CONMEBOL World Cup qualifying group which proves Paraguay possess some quality. Led by Nelson Valdez, Paraguay will be a strong South American team that should progress out of group F with Italy.

Portugal ESPNs 2010 FIFA World Cup Murals

  • There seems to be some questions surrounding this Portugal team as they enter into June. One doesn’t get a sense of confidence when watching them especially after leaving qualifying late. Still though, with players like Cristiano Ronaldo and Nani, Portugal can’t be over-looked and are always dangerous.

Serbia ESPNs 2010 FIFA World Cup Murals

  • Serbia posses a strong starting eleven featuring the likes of Nemanja Vidic, Neven Subotic and Dejan Stankovic. They’re big, strong and will look to avenge their first round exit from 2006.

Slovakia ESPNs 2010 FIFA World Cup Murals

  • Having qualified for their first finals, Slovakia will face Italy and Paraguay in the group stages. Their best chance for a meaningful result will be when they clash against New Zealand. Looks cold.

Slovenia ESPNs 2010 FIFA World Cup Murals

  • Could that bear be the England National team? I’m not so sure, but the Eastern Europeans will look to slay the USA and Algeria in hopes they can make it out of the group for a potential round of 16 match up v Germany.

South Africa ESPNs 2010 FIFA World Cup Murals

  • This proud African nation gets the distinct pleasure of hosting the first World Cup on African soil, but will South Africa get the not so distinct pleasure of being the first host nation to not advance from the group stages?

South Korea ESPNs 2010 FIFA World Cup Murals

  • South Korea seem to always make a good show of themselves in the World Cup. 2002 and that incredible run to the semi finals wasn’t so long ago. With another quick attacking squad, South Korea would love nothing more than to repeat their results in 2002.

Spain ESPNs 2010 FIFA World Cup Murals

  • Fernando Torres slaying Brazil, Germany and Italy for their first World Cup title? Not so sure, but Spain seem to be odds on favorite to do just that. There may not be a better passing team out of the 32 and a potential final v Brazil could be one of the best ever.

Switzerland ESPNs 2010 FIFA World Cup Murals

  • If I’m not mistaken, Switzerland didn’t concede a single goal last time out, yet they failed to progress out of the group stages. Can the Swiss bolster their defensive squad with a little flair and some goals in 2010?

Uruguay ESPNs 2010 FIFA World Cup Murals

  • Uruguay are one of only seven nations to actually win the Cup when they did it first time out in 1930 and proved it was no fluke by accomplishing it again in 1950. Having fallen a long way since those glory days, Uruguay haven’t progressed to the round of 16 since 1990 and failed to even qualify in 2006.

USA ESPNs 2010 FIFA World Cup Murals

Depicting a dramatic scene from the Revolutionary War when the USA defeated the British, the Yanks will hope to defeat them, well at least the English, when they face England in one of the most important opening group stage matches the USA has ever played. Many will be watching.

Feel free to leave any comments about the incredible murals in the comments section below.


VN:F [1.8.8_1072]
Rating: 4.6/5 (65 votes cast)
ESPN's 2010 FIFA World Cup Murals4.6564
Trackback Address :: http://joyholic.kr/trackback/406 관련글 쓰기
Name
Password
Homepage
Secret
2010/06/03 17:37
Origin : http://forums.macosxhints.com/showthread.php?t=98428


Custom DMG packaging and deployment with Sparkle with ChocTop

ChocTop packages and deploys any Cocoa application in a custom DMG, with generated Sparkle XML support.



You configure your custom DMG + upload settings in a simple text file (a Rakefile, but easy syntax to learn), and generate the custom DMG with "rake dmg" and upload with "rake upload".

I've written a screencast to show how it all works. The screencast is about 30 mins, but it takes 5 minute to use ChocTop

Blog post: http://drnicwilliams.com/2009/02/03/...-applications/

ChocTop homepage: http://drnic.github.com/choctop
Trackback Address :: http://joyholic.kr/trackback/405 관련글 쓰기
Name
Password
Homepage
Secret
2010/05/31 17:39
Originals : http://www.greengar.com/2010/03/iphone-opengl-es-drawing-references/

We’ve been working with lots of OpenGL code today, so I thought I should document some of the resources we’re using. These might prove useful for others, too.

Apple’s GLSprite Sample Code

Framebuffer Object 201 – GameDev.net

Official OpenGL Documentation for glFramebufferTexture2D, which is very closely related to glFramebufferTexture2DEXT() and glFramebufferTexture2DOES() [most importantly, for iPhone OS]

Using Framebuffer Objects to Render to a Texture - iPhone Dev Center

Using a Framebuffer Object as a Texture - Mac OS X Reference Library

Forum – Render to Texture Example – Related to this Developer Forums post on how to Blit from one GL_TEXTURE_2D to another

Framebuffer Object 101

GLPaint Dissected – Forays into iPhone OpenGL ES – Introduction

FBO direction – iDevGames – iPhone Game Developers Forum – Render to texture example

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); // notice the 'f'. is this guaranteed to fail?

rendering to an offscreen framebuffer – apple discussion forums

That’s all for now.

Trackback Address :: http://joyholic.kr/trackback/402 관련글 쓰기
Name
Password
Homepage
Secret
2010/05/31 09:45
출처를 모르겠습니다. 저도 메일로 받은거라..
혹시, 문제가 되면, 바로 지우도록 하겠습니다. 


Feature creep이라는 말이 있습니다. 게임 개발 뿐만 아니라 많은 소프트웨어 개발 프로젝트에서 발견할 수 있는 것들입니다.

 

마침 위키피디아에서 feature creep을 잘 설명한 글이 있습니다. (링크) 요약해보죠.

  • 제품을 개발하다보면 사용자들이 원하는 기능과 쓸모있는 기능들을 넣고자 하는 열망이 생긴다. 그리고 그렇게 함으로 매출을 올리고자 한다아이러니하게도, 이것이 feature creep의 시작이다.
  • feature creep이 지속되면 불필요한 기능들이 자꾸만 들어가게 되고 프로젝트의 복잡도가 증가하며 제품의 특장점과 핵심 기능이 서서히 감춰지게 된다.
  • feature creep은 이미 개발된 (혹은 개발중인) 프로젝트를 유지하려는 의지가 원인이 되기도 한다.
  • feature creep은 프로젝트의 개발 비용을 과다하게 증가시킬 뿐만 아니라 프로젝트를 죽여버리는 원인이 되기도 한다.

Feature creep으로 진화된 물건바지 주머니에 넣으려면?

 

feature creep 매우 흔합니다당장에 여러분이 참여하고 있는 프로젝트에서도 발견할지도 모릅니다.

 

feature creep을 일으킬 수 있는 위험인자는 흔하게 널려있습니다. 여러분의 직장 상사, 여러분의 친인척들, 심지어 여러분 자신 및 여러분이 지금 열심히 보고 있는 책에도 있을 수 있습니다저 또한 많은 feature creep에서 고생해본 사람이기도 합니다.

 

어떤 경우에서 생기는지 보도록 하죠.

 

프로그래머들은 신기술이 나오면 바로 적용해보고 싶어합니다. 뭔가 엘레강스한 대단한 아키텍처(나중에 알고보니 안티패턴임을 뒤늦게 깨달을)를 적용해보고 싶어합니다어느날모노리스 코드가 만들어지고 심지어 자기 스스로도 감당하기 힘든 복잡도를 가진 괴물을 만들고 맙니다. 그리고 회사가 개발 일정과 (자금이) 나빠지면서 슬슬 구인 게시판을 뒤져보기 시작합니다. 중요한 실력과 정교한 개발보다 많은 시도를 해보고 싶어하는 (나쁘게 말해서 회사를 상대로 실험해보려는모험심 강한 (그러나 실력과 책임감이 그만큼 받쳐지지 못하는프로그래머에게서 볼 수 있습니다.

 

게임 기획자들은 대단한 게임을 만들고 싶은 마음에 여러가지 아이디어들을 계속 집어넣습니다. 다른 게임에서 감동한 기능들을 자꾸만 넣습니다. 뭔가 엘레강스한 완성도의 게임을 꿈꾸며 대량의 기획서를 작성합니다. 그리고 플레이를 해보니 별로 재미가 없습니다안되겠습니다. 뭔가를 추가해야겠다고 생각합니다. 장르도 늘어납니다. 처음에는 액션 게임이었는데 만들다보니 MMO + RPG + 전략시뮬 + 커뮤니티 + 어드벤처 + 음악댄스 + 영어교육 게임이 되어버립니다.

 

경영진,마케터,운영팀도 feature creep에 일조합니다. 유저들의 피드백, 시장 현황, 소문 등은 개발 방향에 자꾸만 쓸데없는 암세포를 붙이게 합니다.

 

횟집은 뭐니뭐니해도 회가 신선하고 맛있어야 합니다스끼다시와 매운탕만 잔뜩 줘봤자 회가 물러터졌으면 소용없죠. Feature Creep은 동네 음식점에서도 흔히 볼 수 있습니다.

 

feature creep으로 고생하는 게임 개발 프로젝트의 공통점은 다음과 같습니다.

  • 프로젝트 초기에 만들려고 했던 것이 분명하게 구체화되어있지 않았습니다. 아무것도 구체화되어있지 않으면서 정작 만들고자 하는 것은 거대한 꿈 덩어리입니다.
  • 현실 감각을 잊은 지나친 열정을 갖고 있습니다. 단 한개의 궁극 완성도 제품을 만들려는 열망만 가득합니다현실적으로, 신차를 개발해도 포니부터 시작해야 소나타도 만들고 그랜저도 만들고 궁극적으로 에쿠스도 만드는건데, 처음부터 페라리를 만들려고 합니다. 즉 프로젝트 범위의 상한선을 미리 그어놓지 않았습니다.
  • 디렉터가 중간 결과물이 별로 마음에 들지 않는다는 이유로 당황합니다. 그리고 돌파구를 "더 멋진 시스템의 추가"에서 찾으려만 합니다. 그냥 버리고 완전히 새로운 것을 시작하는게 더 나을 것 같은데 말이죠.

단도직입적으로 말하죠. Feature creep은 가장 쉬우면서 무능력한 개발 방향입니다

 

Feature creep "자꾸만 넣는다"인데 이에 반대되는 말은 "더 이상 뺄 것이 없을 때까지 빼기"입니다. 그리고 더 이상 뺄 것이 없을 때까지 빼버리고, 남은 것들에 대해서는 최고의 품질을 만들기 위해 집중을 한 제품 중에서는 시장에서 성공한 것이 많습니다제가 생각하는 이러한 예는 비주얼드, 광란의 수족관, 팡야(골프게임), 아이팟입니다. ProudNet을 쓰는 프로젝트 중 몇 개도 있고요.

 

혹시 여러분의 프로젝트에서는 알게 모르게 feature creep이 범해지고 있지 않나요?

Trackback Address :: http://joyholic.kr/trackback/401 관련글 쓰기
Name
Password
Homepage
Secret
2010/05/27 17:34

[NSString stringWithCString:message 
                         encoding:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingEUC_KR)];

Trackback Address :: http://joyholic.kr/trackback/400 관련글 쓰기
Name
Password
Homepage
Secret
2010/05/24 10:35
http://homepage3.nifty.com/ysflight/
Trackback Address :: http://joyholic.kr/trackback/397 관련글 쓰기
Name
Password
Homepage
Secret
2010/05/13 09:42
http://alleg.sourceforge.net/
Trackback Address :: http://joyholic.kr/trackback/395 관련글 쓰기
Name
Password
Homepage
Secret
prev"" #1 #2 #3 #4 #5 ... #11 next