본문 바로가기

프로그래밍439

jquery.validator 정리 출처:http://phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=72358 수리도랑님 jquery.validator Option 정리 debug 기본값: false 디버그 할 수 있도록 입력값이 유효해도 submit 하지 않는다 $(".selector").validate({ debug: true }) submitHandler 폼이 submit 될때 마지막으로 뭔가 할 수 있도록 핸들을 넘겨준다. $(".selector").validate({ submitHandler: function(form) { $(form).ajaxSubmit(); } }) invalidHandler 입력값이 잘못된 상태에서 submit 할때 자체처리하기전 사용자에게 핸.. 2012. 1. 27.
xcode 4.0에서 gh-unit을 이용해서 unittest 하기.. xcode 4.0으로 넘어 가면서.. 이래저래 익숙하지 않아서 난감한게 많네요. 코드를 작성하다가.. unittest를 하려고 하다 보니.. 4.0에서는 또 다른 일이네요 -_-;; 적용하다가.. 알게된 gh-unit이라는 라이브러리가 있어서.. 4.0용에서 사용 하는 과정을 정리해 봤습니다. 이게 ui도 잘 되어 있고, 훨씬 좋더라구요 ^^; https://github.com/gabriel/gh-unit 시작 하시기 전에 기존 프로젝를 띄우시거나, 빈 프로젝트를 띄어 줍니다. 1. target 추가 하기. File > New > New Target... 으로 타겟을 추가해 줍니다. Application > Window-based Application 을 선택해 줍니다. 여기선 tests라는 이름으로 타.. 2012. 1. 18.
MapView에 특별한 Annotation 붙이기 보통 PinAnnotationView으로 모양을 많이 내지만 특별하게 사용자 맘대로 그리고 싶을 때 역시 방법이 있더라. 뭐 구조상 당연히 가능하겠지만. PinAnnotationView는 MKAnnotation을 MapView에 박았을 때 mapView:viewForAnnotation을 통해서 넘겨주는 View의 일종일 뿐이지. 그렇다면 이런 AnnotationView구조를 상속받아서 붙여보면 아마도 될거다. 우선 Annotation 부터 @interface SomeAnnotation : NSObject { } @property (nonatomic, readonly) CLLocationCoordinate2D coordinate; @end @implementation SomeAnnotation @synth.. 2012. 1. 16.
MapView MapView는 기본적으로 화면에 지도를 표시해주고 좌표를 물리적인 주소로 반환해주거나 특정지역에 핀을 꽂고 설명을 달수도 있다. MapView는 구글 지도 서비스를 이용하며 사용하기 위해서는 MapKit.framework를 포함 시켜줘야 하고, 위치 정보도 함께 이용을 하기 위해서는 CoreLocation.framework도 포함 시켜줘야 한다. 맵 뷰에서 사용자는 확대나 축소를 위한 핀치 더블 탭등의 제스처를 사용할수 있고 이러한 반응에 대한 관리는 Delegate에서 한다. 맵 뷰의 표현 방식에는 3가지 방식이 있다. ================================================================================== enum { MKMapTypeSta.. 2012. 1. 16.
위치정보를 이용하는 어플 예제 GPS리시버를 사용하여 우주에 떠 있는 인공위성을 통해 현재 위치를 간단하게 알 수 있다. 단, GPS리시버가 정확하게 처리되게 만들려면 GPS신호 수신 가능범위에 있어야 한다. 그래서 건물내에서는 불가능하다. 그 외 자신의 위치를 아는 방법중 하나는 휴대전화의 안테나에 의한 삼각측량방법이 있다. 대기 상태의 휴대전화는 범위내 기지국에 연결한 상태를 가지고 있다. 그런 안테나탑 ID를 알 수 있다면, 안테나탑ID와 지리적 위치가 기록된 데이터베이스를 사용하여 물리적인 위치를 계산할 수 있다. GPS와 달리, 안테나탑 삼각측량은 위성을 사용하지 않기 때문에 실내에서 사용가능하다. 단, 이 방법으로 계산된 위치정보는 자신이 있는 영역내 안테나탑 끼리 간격에 좌우되므로, GPS만큼 정확하지는 않다. 이 방법은.. 2012. 1. 16.
iOS (iPhone,iPod touch) 의 MKMapView 정리하기 - 개인적인용도로 요약한 글이라 글에서는 경어체를 사용하지 않습니다. 글 읽으시는데 참고부탁드립니다. - Mac의 Pages 로 작성한 후 블로그에 포스팅하려니 서식이 다 깨졌네요. PDF 파일로 보는것이 보기 좋습니다. 저번엔 안드로이드용 위치기반 지점찾기 (LBS)를 구현하였고, 이번에 아이폰용 뱅킹어플을 만들면서 아이폰용도 지점찾기를 어플로 구현할 필요가 생겼다. 이번엔 계속 써와서 익숙한 Java 가 아니라 Objective C 여서 시작하기가 막막했다. 배우면서, 삽질하며 완성시킨거라 버그도 있을것이고 여러부분에서 미숙한 점이 있을테지만 마찬가지로 까먹지 않기 위하여 정리를 해둔다. 1. 프로젝트에 프레임웍 추가하기. 프로젝트의 프레임웍에서 마우스 오른쪽버튼 (또는 옵션클릭)을 하여 프레임웍을 .. 2012. 1. 16.
Push Notification 적용하기 #2. 앱 수정 Registering for Remote Notifications 애플리케이션이 프로바이더로 부터 Remote Notifications(푸시 알림)을 받기 위해서는 다음 그림과 같은 일련의 등록 과정을 거쳐야 한다. 등록 과정은은 3단계로 나눠지며, 실제로 서비스 될 앱을 개발할 경우 등록 후 발급받은 디바이스 토큰을 프로바이더로 전달해주는 과정이 추가로 필요하다. 여기서는 애플리케이션이 푸시 알림을 사용할 수 있는 '최소한의' 과정만을 설명한다. 실제 프로젝트에서는 더욱 많은 소스 코드가 필요하다. Local and Push Notifications Programming Guide, Apple * 알림을 발생하는 서비스를 프로바이더(Provider)라 한다. registerForRemoteNotific.. 2012. 1. 13.
Push Notification 적용하기 #1. SSL 인증서 생성 APNS (Apple Push Notification Service) iOS 기반의 서버/클라이언트(앱) 서비스 개발시, 서버에서 발생한는 다양한 이벤트나 데이터를 클라이언트에 전달하기 위해서는 APNS를 사용해야만 한다. iOS는 백그라운드 프로세스를 '제한적으로만' 제공하기 때문에 안드로이드처럼 폴링 방식을 사용할 수 없기 때문이다. 폴링 방식은 백그라운드 프로세스를 통해 서버와의 연결을 지속적으로 유지해야 하며, 짧은 주기로 서버와 통신을 해야 한다. 적은 메모리와, 더럽게 적은 배터리같이 한정된 자원을 가진 스마트폰이나 스마트패드에서 사용하기에는 껄끄로운 방법이다. 대신, 애플은 APNS라는 아주 세련된 방법을 통해 아이폰에게 데이터를 '던져' 줄 수 있는 방법을 제공한다. 배터리 걱정도 없고 보.. 2012. 1. 13.
UIImage에서 그림 그리는 방법 UIImage에서 그림 그리는 방법 by alex 4. 5월 2009 13:15 -(UIImage *)addCircle:(UIImage *)img radius:(CGFloat)radius latCon:(CGFloat)lat lonCon:(CGFloat)lon{ int w = img.size.width; int h = img.size.height; lon = h - lon; CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst); //draw the circ.. 2012. 1. 12.
간단한 손가락으로 그리기 소스 1. --> 아 제 프로젝트라 ;; 파일명 신경쓰지 말아주세요 ㅎ #import @interface webViewer : UIViewController { UIImageView *drawImage; BOOL mouseMoved; BOOL mouseSwiped; CGPoint lastPoint; CGPoint currentPoint; } @property (nonatomic, retain) UIWebView *web; @end 2. #import "webViewer.h" @implementation webViewer @synthesize web; - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = .. 2012. 1. 12.
uiimageview위에 그림 그리기 헤더파일 @interface CustomView: UIViewController { UIImageView *drawImage; CGPoint lastPoint; CGPoint currentPoint; } // xib파일과 연결된 UIImagView의 프라퍼티 @property (strong, nonatomic) IBOutlet UIImageView *drawImageView; @end .m파일 // Override메서드 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { NSLog(@"touch began"); UITouch *touch = [touches anyObject]; // 3번 터치하면 이미지 초기화 if ([touch tap.. 2012. 1. 12.
터치가 발생했을때 뷰 위에 직접 그림을 그리기 위한 코드 MyUIView.h #import @interface MyUIView : UIView { NSSet *touches; } @property(nonatomic, retain) NSSet *touches; @end #import "MyUIView.h" MyUIView.m @implementation MyUIView @synthesize touches; #pragma mark - #pragma mark DrawFuction -(void)drawRect:(CGRect)rect{ CGContextRef context = UIGraphicsGetCurrentContext(); //그리기 작업을 위해 그래픽 컨텍스를 얻음 CGFloat gray[4] = {0.5f, 0.5f, 0.5f, 1.0f}; CGContext.. 2012. 1. 12.
UILabel 세로 정렬하기 ( Vertical align ) 구글링을 해보니 UILabel은 세로 정렬이 원래 없나부다.. 그래서 다음과 같은 함수를 만들어서 쓴다.. 누가 만들었는지 감사하다..ㅋ 덕분에 금방해결~ - (void)setUILabel:(UILabel *)myLabel withMaxFrame:(CGRect)maxFrame withText:(NSString *)theText usingVerticalAlign:(int)vertAlign { CGSize stringSize = [theText sizeWithFont:myLabel.font constrainedToSize:maxFrame.size lineBreakMode:myLabel.lineBreakMode]; switch (vertAlign) { case 0: // vertical align = top .. 2012. 1. 12.
UIImageView 테두리넣기 및 모서리 깎기 일단 기본 메소드로는 제공을 하지 않아서 UIImageView 의 layer를 직접 손대야 한다. 일단 #import 헤더파일을 임포트하고 [thumbImgView.layer setBorderColor:[RGB(140, 200, 251) CGColor]]; [thumbImgView.layer setBorderWidth:2]; [thumbImgView.layer setMasksToBounds:YES]; [thumbImgView.layer setCornerRadius:6]; thumbImgView 객체의 레이어에 직접 메소드를 이런식으로 불러주면 RGB 140/200/251 색에 2픽셀짜리 테두리가 생기고, 6픽셀만큼의 테두리를 둥글게 처리해준다. 일단은 리젝사유는 아닌 것 같으니 (이 코드가 들어있는 앱이.. 2012. 1. 11.
UIImageView에 라운딩 처리 UIImageView *image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"item.png"]]; //라운딩처리 image.layer.cornerRadius = 5.0; image.layer.masksToBounds = YES; //라운드 테두리 image.layer.borderColor = [UIColor lightGrayColor].CGColor; image.layer.borderWidth = 1.0; QuartzCore Framework를 포함해야함. 이렇게 좋은 방법이 있는줄도 모르고 그냥 이미지 자체에 뽀샵으로 라운딩 처리할라고 했네.ㅋㅋ 무식하면 몸이 고생이라지. ㄷㄷㄷㄷㄷㄷ 출처:UIImageView에 라운딩 처리 2012. 1. 11.
UIImageView 회전 시키기. UIImage *arrowImage = [UIImage imageNamed:@"popup_arrow.png"]; UIImageView *arView = [[UIImageView alloc] initWithImage:arrowImage]; arView.transform = CGAffineTransformMakeRotation(1.57);//Right -1.57 Left //[arView setFrame:CGRectZero]; [arView setAlpha:1.0f]; [arView setHidden:NO]; 위 소스 코드는 우측으로 90도 회전시키는 것이다. arView.transform = CGAffineTransformMakeRotation(1.57);//Right -1.57 Left 위의 코드이며 단.. 2012. 1. 9.
iOS 이미지 확대/축소 아이폰의 기능중 이미지를 멀티 터치로 확대/축소 하는 기능을 구현해 보자... 아주 아주 간단하다~!!! Step1. 먼저 Window base의 프로젝트를 생성한다. 프로젝트 이름은 ImageZoomTest로 하자! Step2. 새로운 클래스를 하나 만든다.,,,NSObject를 상속받는 클래스를 하나 만들자. 이름은 간단하게 MyImageZoom로 하자 Step 3. 아래 처럼 상속 구조를 NSObject => UIScrollView로 변경하자. // 기존 @interface MyImageZoom : NSObject { } @end //변경후 @interface MyImageZoom : UIScrollView { } @end Step 4. UIScrollView 관련 delegate추가 하자 , 또한.. 2012. 1. 6.
iOS의 UDID 제거 이후 나오는 대안들 지난번 글에서 썼듯이 애플은 이후 iOS에서 UDID를 완전히 제거할 예정입니다. 간단하게나마 CFUUID를 이용한 대체 방법을 설명했었는데요, 저희 회사의 다른 팀에서 확인한 바로는 원하는대로 동작하지 않아서 맥어드레스로 대체하자는 결론을 내린 상태였습니다. 근데 요즘 뉴스를 살펴보니 해당 부분에 대한 몇가지 대안들이 나오고 있는 상태입니다. 대표적인 두가지를 확인해 보고 장단점에 대해서 간단하게 써보도록 하겠습니다. OpenFeint - OFUID 오픈페인트 에서 OFUID라는 UDID 대용 방안을 내놓았습니다. 일단 기존에 오픈페인트 쓰시던 분들이라면 부담없이 사용하실 수 있을테구요, 사용법도 간단하고 사용자도 많고 나름대로 잘 쓰일것 같은 서비스입니다. 단 저희같이 게임센터 사용하면서 오픈페인트 .. 2012. 1. 3.
iOS5의 UDID 정책 변경에 따른 문제해결방안 uniqueIdentifier 메소드가 사라질 예정 UDID는 단말기를 식별하기 위해 고유하게 할당된 40개의 숫자와 문자열입니다. 이런 고유값은 개인정보이다. 아니다 기기 식별값이므로 개인정보는 아니다라는 논란으로 잠시 인터넷이 뜨거웠던 적이 있습니다. (2011/05/10 서울경제 기사, http://economy.hankooki.com/lpage/it/201105/e20110510173640117700.htm) 이 UDID는 구글, 오픈페인트를 비롯한 여러 광고 및 트래픽 분석툴에 사용되고 있는 상황에서 애플이 드디어 칼질을 가하기 시작했습니다. 최근 릴리즈된 iOS5 beta 6에서는 UDID를 가져올 때 사용하는 메소드를 없애겠다는 의지로 해당 메소드를 deprecated시키고 대신 Core 레.. 2012. 1. 3.
이미지의 이동, 회전, 스케일 변경 이미지의 이동, 회전, 스케일 변경을 위해서는 보통 Quartz 2D 나 Core Animation 을 이용한다. 간단한 경우에는 Quartz 2D, 그렇지 않은 경우는 Core Animation 을 이용해서 CAKeyframeAnimation 등으로 보다 자세하게 설정하자. 유념해야 할 것은 원하는 효과를 얻기 위해서 center 값을 적절하게 조절해야 한다는 것, 그리고 회전과 스케일 변경을 동시에 적용하고 싶은 경우에는 concat 을 이용해서 두개의 행렬을 곱해서 처리하면 된다는 것이다. 자세한 내용은 개발자 문서를 참고하자. 1. Quartz 2D 을 이용한 회전, 스케일 변경 UIImageView *starImageView = [[UIImageView alloc] initWithImage:[U.. 2011. 12. 27.
파일 압축, 압축 해제 라이브러리. http://code.google.com/p/objective-zip/ //압축하는 법. - (IBAction) doZip { NSArray *pa = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *filepath2 = [pa objectAtIndex:0]; NSString *filePath = [filepath2 stringByAppendingPathComponent:@"write.zip"]; ZipFile *zipFile= [[ZipFile alloc] initWithFileName:filePath mode:ZipFileModeCreate]; ZipWriteStream *s.. 2011. 12. 27.
공통으로 쓰이는 코드, Library로 만들기. 출처 : http://cafe.naver.com/mcbugi/136955 이미지가 제대로 나올지 걱정이 되네요. 제 블로그에 쓴 글을 복사한 것입니다. (반말로 써져있어서.. 죄송하다는 말씀부터 ㅎㅎ;;) http://hiphapis.net/entry/static-library 개발하다보면 Common Module 혹은 Common Library 등.. 이런 뉘앙스의 이름으로 불리는 녀석들이 있다. 개발하는데 공통적으로 쓰이는 것들을 모아놓은 녀석들을 지칭하는 말인데, cocoa에서는 이렇게 안부르고 static library라고 부른다. iPhone, iPad의 경우 시뮬레이터가 있다보니 시뮬레이터(simulator)용, 디바이스(device)용 이렇개 2가지를 만들어서 상황에 맞게 사용을 해야 하는데.. 2011. 12. 27.
앱 아이콘의 상단부가 shining (빛 나는) 되는 효과 없애기!! – Remove Shine / Gloss Effect on iPhone Icon [출처: http://alones.kr/1353] 최근 어떤 앱들은 아이팟 (아이폰)에서 아이콘의 상단 부가 빛나는 효과가 없다. 디폴트로 아이콘이 그렇게 빛나면 멋져 보이기도 하지만, 57*57에 앱을 잘 표현할 수 있는 아이콘을 만들 때 상단 부가 빛나면 그 부분이 불투명해져서 난감한 경우가 있다. 디폴트로 Shine / Gloss Effect가 반영된 아이콘 Shine / Gloss Effect를 없앤 아이콘 방법은 아래와 같이 .plist file에 UIPrerenderedIcon entry를 추가하고 값을 YES로 설정하거나 UIPrerenderedIcon YES 동일한 작업을 XCode에서 .plist XML을 UI 상에서 아래와 같이 UIPrerenderedIcon entry 를 추가하고 마.. 2011. 12. 21.
사용자 한글 글꼴 사용하기 인사드리며... 사용자 한글 글꼴을 사용하는 방법을 찾아봤는데, 웹에 나와 있는 방법들이 살짝 모자란(?)듯 보이네요. 고걸 정리해봤습니다. 1. plist에 항목에 파일이름을 등록합니다. (확장자도 포함해서) 물론 글꼴도 리소스에 포함해야겠죠. 2. Finder의 Inspector를 보고 글꼴의 패밀리 이름을 알아둡니다. 또는 Font Book으로 열어서 얻을 수 있습니다. 참고로 나눔글꼴(OTF)은 "NanumGothicOTF", 맑은 고딕(TTF)은 "Malgun Gothic"이 됩니다. NSLog(@"FONTS: %@", [UIFont familyNames]); 해서 패임리 이름이 보이면 글꼴이 등록된 것입니다. 3. 글꼴을 사용하기 위해서 이름을 알아야하는데, NSLog(@"FONTS: %@",.. 2011. 11. 29.