'영삼이의 IT정보' 카테고리의 다른 글
윈도우 apache가 만일 start 가 안될 경우 (0) | 2012.06.15 |
---|---|
ViewController 위에 TableView를 올렸을 때 에러나는 이유 (0) | 2012.06.14 |
PHP 소수점이하 두자리까지 자르는 방법 (0) | 2012.06.14 |
이미지 URL을 UIImageView로 바로 뿌려주기 (0) | 2012.06.13 |
svn merge 방법 (0) | 2012.06.12 |
윈도우 apache가 만일 start 가 안될 경우 (0) | 2012.06.15 |
---|---|
ViewController 위에 TableView를 올렸을 때 에러나는 이유 (0) | 2012.06.14 |
PHP 소수점이하 두자리까지 자르는 방법 (0) | 2012.06.14 |
이미지 URL을 UIImageView로 바로 뿌려주기 (0) | 2012.06.13 |
svn merge 방법 (0) | 2012.06.12 |
방법1. number_format(값,자리수); 함수 사용
예---------------------------------------
코드.
<?
$char = 1234;
echo number_format($char,2);
?>
실행 결과.
1,234.00
-----------------------------------------
1,234.00 이라는 소수점 두 자리까지의 처리 결과를 돌려 준다.
일반적으로 number_format() 함수는 숫자를 금액 단위로 표현하여
화면에 보여주려고 할 경우 많이 사용하는 함수입니다.
방법2. floor(); 함수 사용
예---------------------------------------
코드.
<?
$char = 1234.123;
$char2 = floor($char*10000))/100
echo ($char2);
?>
실행 결과.
1234.12
-----------------------------------------
1234.123값을 123412.3으로 만든 다음 floor()함수를 써서 정수값만 가져온다.
그런다음 /100을 해서 소수점 두자리까지의 값을 가져온다.
[출처] PHP 소수점이하 두자리까지 자르는 방법|작성자 리나
ViewController 위에 TableView를 올렸을 때 에러나는 이유 (0) | 2012.06.14 |
---|---|
네비게이션 뷰 컨트롤러에서 탭바 숨기기 (0) | 2012.06.14 |
이미지 URL을 UIImageView로 바로 뿌려주기 (0) | 2012.06.13 |
svn merge 방법 (0) | 2012.06.12 |
mac용 svn시작하기 [출처] mac용 svn시작하기|작성자 seungbeomi (0) | 2012.06.12 |
UIImageView는 참 편리하게 여기저기 많이 사용됩니다. 로컬에 있는 이미지들을 화면에 뿌려줄 때 참 좋죠. 하지만 이미지가 http://www.xxx.xx/123.jpg라면 어떻게 보여줄 수 있을지 한번 살펴보겠습니다.
UIImageView * couponImageView =
[UIImageView alloc] initWithFrame:CGRectMake(0,0,100,100)];
[couponImageView setImage:
[UIImage imageWithData:
[NSData dataWithContentsOfURL:
[NSURL URLWithString:@"http://www.xxx.xx/123.jpg"]]]];
이렇게 하면 URL에 있는 이미지를 바로 UIImageView로 뿌려줄 수 있습니다. 당연히 UIImage형태가 들어가는 모든곳에서 NSData를 이용해서 이미지를 뿌려줄 수 있는데요. 버튼이나 라벨등에도 사용 가능합니다.
한발 더 나아가서, 만약 이미지를 asynch로 가져와서 NSData로 데이터를 다 받은 다음 뿌려주도록(물론 데이터를 받아오는 도중에는 인디케이터 같은걸 돌려서 사용자가 앱이 작동중이라는 사실을 확인할 수 있도록 해야겠죠.)할 수 있을까요?
UIImageView는 이미지가 다 로드 되었는지 아닌지를 확인하는 이벤트를 전혀 발생시켜주지 않습니다.
하지만 다른 방법으로 원하는 이벤트를 받을 수 있는데요.
NSMutableURLRequest * request =
[NSMutableURLRequest requestWithURL:
[NSURL URLWithString:@"http://www.xxx.xx/123.jpg"]];
[NSURLConnectionsendAsynchronousRequest:request
queue:[[[NSOperationQueue alloc] init] autorelease]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
//데이터를 다 받은 경우
if (data) {
[couponImageView setImage:[UIImage imageWithData:data]];
}
//데이터를 받지 못한 경우
else {
}
}];
이렇게 이미지 URL을 뿌려주고 다 받은 경우의 이벤트를 사용할 수 있겠습니다.
네비게이션 뷰 컨트롤러에서 탭바 숨기기 (0) | 2012.06.14 |
---|---|
PHP 소수점이하 두자리까지 자르는 방법 (0) | 2012.06.14 |
svn merge 방법 (0) | 2012.06.12 |
mac용 svn시작하기 [출처] mac용 svn시작하기|작성자 seungbeomi (0) | 2012.06.12 |
mac os x 에 apache module dav_svn 설치하기. (0) | 2012.06.12 |
svn merge 작업은 몇달에 한번씩만 하다보니 명령어를 까먹어서 매번 검색을 하는거 같다.
그냥 내 블로그에 정리를 해두자~
"1.1-stable" 이라는 브랜치의 작업 내용을 "trunk"에 반영(merge) 작업을 한다고 가정함.
1. "1.1-stable"이 최초로 생성된 revision을 얻는다. 아래의 명령어를 이용하여 가장 밑에 로그 revision을 확인함.
$ svn log --stop-on-copy svn://www.test.com/test/branches/1.1-stable
$ cd trunk
$ svn merge --dry-run -r3000:HEAD svn://www.test.com/test/branches/1.1-stable ./
$ svn merge -r3000:HEAD svn://www.test.com/test/branches/1.1-stable ./
$ svn diff | vi -
$ svn commit -m "브랜치 1.1-stable 작업 내역을 trunk에 반영함"
PHP 소수점이하 두자리까지 자르는 방법 (0) | 2012.06.14 |
---|---|
이미지 URL을 UIImageView로 바로 뿌려주기 (0) | 2012.06.13 |
mac용 svn시작하기 [출처] mac용 svn시작하기|작성자 seungbeomi (0) | 2012.06.12 |
mac os x 에 apache module dav_svn 설치하기. (0) | 2012.06.12 |
맥용 SVN 서버 설치 (0) | 2012.06.12 |
참고 : http://seino-takahiro.blogspot.com/2009/04/mac-os-x-105-leopard-svn.html
1. svn디렉토리생성
svnadmin create /Users/seungbeomi/Sites/svn
sudo chown -R www /Users/seungbeomi/Sites/svn
2. 체크아웃 테스트
svn co file:///Users/seungbeomi/Sites/svn
3. svn 기본디렉토리생성(svn/repos)
mkdir trunk branches tags
4. import
svn import -m "init" . file:///Users/seungbeomi/Sites/svn
5. apache의 httpd.conf파일 수정
open -a macvim /etc/apache2/httpd.conf
LoadModule dav_svn_module libexec/apache2/mod_dav_svn.so # 모듈은 /usr/libexec/apache2/에 있다
6. apache기동
시스템환경설정 > 공유 > 웹 공유
7. svn 접속
이미지 URL을 UIImageView로 바로 뿌려주기 (0) | 2012.06.13 |
---|---|
svn merge 방법 (0) | 2012.06.12 |
mac os x 에 apache module dav_svn 설치하기. (0) | 2012.06.12 |
맥용 SVN 서버 설치 (0) | 2012.06.12 |
Tabbar 아이콘 (0) | 2012.06.11 |
나는 내가 할줄 아는 대부분의 것들도 인터넷으로 찾아서 하는 편인데 그 이유는
mac os x Leopard 에 dav_svn 을 설치하는 과정은 검색해 보았으나 쉽게 찾을 수는 없었다. 검색 결과(mac leopard dav_svn) 중 하단의 블로그 결과로 봐줄만 한게 있었으나 "고기를 잡는 과정은 있으나. 고기를 잡는 방법에 대한 과정" 이 기술되어 있지 않은듯 하여 직접 기술 하게 되었다.
Running a subversion server on my Mac Mini
– 2010년 1월 3일 I recently installed a Mac Mini to be run as a media server. … Create a new file for dav_svn.conf. sudo vi /private/etc/apache2/extra/dav_svn.conf …
dav_svn 은 WebDAV 에 Subversion 을 융합시키기 위한 모듈이다. WebDAV 는 Web-based Distributed Authoring and Versioning 으로서 웹을 통한 웹을 기반으로 하는 공동 저작활동을 할 수 있도록 해 주는 http 서버의 모듈이다. SubVersion 은 CVS의 단점을 개선하여 나온 신 버전 관리 시스템으로 볼 수 있다. dav_svn 을 융합시키면 좋은 이유는 다음의 2가지 정도로 볼 수 있다.
따라서 svn server 를 잘 운영하고 있다 하더라도 WebDAV 를 이용해서 한단계 업그레이드 시키는 것은 권할만한 사항이라고 생각한다.
사실 mac 이든 어디든 dav_svn 을 설정하는 것은 그다지 어려운 일이 아니다. 다만 mac은 다른 리눅스 진영과 달리 컴파일보다는 바이너리 설치에 사람들이 익숙하고 아래 순서에 나와 있지만 하필 httpd.conf 에 svn관련 설정만 딱 빠져 있기 때문에 컴파일을 다시 해야 하나? 등의 오해를 불러 일으킬 수 있다. 따라서 해당 모듈이 이미 mac에 있다는 사실만 알면 된다. 참고로 아래 내용은 httpd.conf 그리고 module 이 무엇인지 아는 정도 레벨에서 이해할 수 있도록 기술 되어 있다. 짧게나마 쓴다면 httpd.conf 는 apache 웹서버의 설정값이 기술되어 있고 module 은 apache 웹서버의 플러그인으로 볼 수 있다.
좀 길게 적은감이 있다. 사실 중요한 것은 mac os x에는 dav_svn 을 위한 설정은 존재 하지 않지만 수동으로 추가 할 수 있도록 해당 모듈은 준비해 놓고 있다. 결국 위의 과정중 module 을 찾아내고 그것에 대한 설정을 추가하는 과정이 핵심이라고 할 수 있다.
svn merge 방법 (0) | 2012.06.12 |
---|---|
mac용 svn시작하기 [출처] mac용 svn시작하기|작성자 seungbeomi (0) | 2012.06.12 |
맥용 SVN 서버 설치 (0) | 2012.06.12 |
Tabbar 아이콘 (0) | 2012.06.11 |
StoreKit (0) | 2012.06.10 |
기본적으로 Mac OS X에는 Subversion 프로그램이 있다.
1.터미널에서 SVN 서버와 클라이언트 버젼을 확인해 보자
서버 : svnserve --version
클라이언트 svn --version
svnadmin create [경로]
익명 사용자 접근 막기 (anon_access = none)
인증 사용자 쓰기 권한 (auth_access = write)
인증 데이터베이스는 passwd 사용 (password-db = passwd)
svnserve -d --listen-port=3690 -r [Repository경로]
chmod 755 [스크립트 파일 경로]
디렉토리 생성
svn mkdir svn://localhost/trunk
svn mkdir svn://localhost/branches
svn mkdir svn://localhost/tags
svn: Could not use external editor to fetch log message; consider setting the $SVN_EDITOR environment variable or using the --message (-m) or --file (-F) options
svn: None of the environment variables SVN_EDITOR, VISUAL or EDITOR is set, and no 'editor-cmd' run-time configuration option was found
export SVN_EDITOR=vi
svn rm svn://localhost/trunk
프로젝트 Import
svn import --no-auto-props --no-ignore -m "test프로젝트 추가" /Volumes/data/workspace/test svn://localhost/trunk/test
--no-auto-props --no-ignore 옵션을 주면 바이너리 파일을 추가 할수 있음.
-m "메시지" SVN 기록 메시지
프로젝트 export
svn export svn://localhost/trunk/test
[출처] SVN 사용법(import, export)|작성자 미니187
mac용 svn시작하기 [출처] mac용 svn시작하기|작성자 seungbeomi (0) | 2012.06.12 |
---|---|
mac os x 에 apache module dav_svn 설치하기. (0) | 2012.06.12 |
Tabbar 아이콘 (0) | 2012.06.11 |
StoreKit (0) | 2012.06.10 |
iOS 키보드 (0) | 2012.06.10 |
아이폰(iPhone) 탭바 구현 - (3) 탭(tabBar)에 아이콘과 색깔 넣기 |
개발환경 : Mac OS X 10.6.3, Simulator - 3.1.3 |
글보다는 그림(아이콘) 이 탭바에 들어가게 되면 보다 명확하게 어떤 기능을 하는
곳을 가리키는지 알려줄수 있어서 좋다. 하지만 단점이 있다. 일반 그림이 들어가게
되면 색깔정보(Opaque) 는 무시되고 이미지에 포함된 Alpha(투명색) 정보로만
표시가 된다. 그러니까 일반 그림을 넣게되면 형태만 나오게 된다.
테스트를 해보고 싶다면 투명색정보를 집어넣던지 아니면 투명색 정보가 있는
아이콘으로 해보면 될것이다. 색깔 쪽은 무지한 상태로 일단 넘어가기로 한다.
[원본그림]
[표현그림]
들어가는 이미지의 기본크기는 30x30 이다. 이에 맞지 않는다면 자동으로 확대/축소된다.
탭에 이미지를 넣고 싶다면 먼저 Resources 폴더에 쓸만한 아이콘을 집어넣는다.
그리고 MainWindow.xib 를 클릭해 인터페이스 빌더를 띄운다. 탭을 클릭하지 말고
? 표나 타이틀을 클릭하게 되면 그 부분만 선택되게 된다. 그 상태에서 Inspector 창의
Attributes 란을 보게 되면 아래쪽에 Image 라는 란이있다. 콤보를 클릭해서 보면
Resources 란에 집어넣었던 이미지가 다 나오게 되는데 이중 하나를 선택하면
표시가 되게 된다. 다른 탭도 마찬가지 과정을 거치면 된다.3개의 탭에 모두 다른 그림을 집어넣고 실행한 화면이다. 어째 마음에 안들지만
Alpha 어쩌구 때문에 그렇다는건 알았기 때문에 그걸로 만족해야겠다mac os x 에 apache module dav_svn 설치하기. (0) | 2012.06.12 |
---|---|
맥용 SVN 서버 설치 (0) | 2012.06.12 |
StoreKit (0) | 2012.06.10 |
iOS 키보드 (0) | 2012.06.10 |
아이폰 OS 개발 자료 총정리 (2) | 2012.06.04 |
스토어 킷의 클래스
SKProductsRequest : 삼풍 정보를 얻기 위해서 애플 앱스토어에 요청을 보낸다.
SKProductsResponse : 검색된 결과를 저장하는 클래스 SKProduct의 배열을 담고있다.
SKProduct: 상품 하나에 대한 정보를 저장한다. 가격, 설명 등이 주된 내용이다.
SKPayment: SKProduct를 구입하기 위해서 이클래스를 생성한다.
SKPaymentQueue: 결제를 요청하기 위해서 SKPaymentQueue 객체에 SKPayment를 넣어준다.
SKPaymentTransaction: 결제 결과를 담고 있는 클래스이다.
다양한 구매등록방법
웹서버 동기화, 로컬파일 생성, 사용자 기본값에 기록, 키체인 추가
//1. 프레임워크 추가
StoreKit.framework
//2. 헤더파일 추가
#import <StoreKit/StoreKit.h>
//3. 델리게이트 추가
SKProductsRequestDelegate, SKPaymentTransactionObserver
//4. 감시 객체 등록
- (void)viewDidUnload {
//앱에서 아이템을 구매하려면 먼저 트랜잭션 옵져버를 추가해야한다.
//옵져버가 있어야 실제 구매를 시작할 때 구매GUI사용 할수있음.
SKPaymentQueue* queue = [SKPaymentQueue defaultQueue];
[queue removeTransactionObserver:self];
}
- (void)viewDidLoad {
SKPaymentQueue* queue = [SKPaymentQueue defaultQueue];
[queue addTransactionObserver:self];
}
//5. 구매처리
-(IBAction)actionNoAD
{
if ([SKPaymentQueue canMakePayments])
{ // 스토어가 사용 가능하다면
NSLog(@"Start Shop!");
[[SKPaymentQueue defaultQueue] addTransactionObserver:self]; // Observer를 등록한다.
}
else
{
NSLog(@"Failed Shop!");
}
//상품 요청을 생성하고 실행한다.
SKProductsRequest *productRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:@"com.corealism.FamilyMapCh.ddd"]];
productRequest.delegate = self;
[productRequest start];
}
//6. SKProductsRequest 델리게이트 구현
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
NSLog(@"SKProductRequest got response");
if ( [response.products count] ==0 )
{
UIAlertView* askView = [[UIAlertView alloc]
initWithTitle:NSLocalizedString(@"Buy", @"buy items")
message:NSLocalizedString(@"Can't retrieve product information.", @"buy items")
delegate:self
cancelButtonTitle:NSLocalizedString(@"Okay", @"confirm action")
otherButtonTitles:nil
];
[askView show];
[askView release];
return;
}
if( [response.products count] > 0 )
{
SKProduct *product = [response.products objectAtIndex:0];
NSLog(@"Title : %@", product.localizedTitle);
NSLog(@"Description : %@", product.localizedDescription);
NSLog(@"Price : %@", product.price);
SKPayment *payment = [SKPayment paymentWithProduct:product];
[[SKPaymentQueue defaultQueue] addPayment:payment];
}
if( [response.invalidProductIdentifiers count] > 0 )
{
NSString *invalidString = [response.invalidProductIdentifiers objectAtIndex:0];
NSLog(@"Invalid Identifiers : %@", invalidString);
}
}
//7.SKPaymentTransactionObserver 델리게이트 구현
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
for (SKPaymentTransaction *transaction in transactions)
{
switch (transaction.transactionState)
{
case SKPaymentTransactionStatePurchasing:
NSLog(@"SKPaymentTransactionStatePurchasing");
break;
case SKPaymentTransactionStatePurchased:
NSLog(@"SKPaymentTransactionStatePurchased");
NSLog(@"Trasaction Identifier : %@", transaction.transactionIdentifier);
NSLog(@"Trasaction Date : %@", transaction.transactionDate);
[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
break;
case SKPaymentTransactionStateFailed:
NSLog(@"SKPaymentTransactionStateFailed");
[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
break;
case SKPaymentTransactionStateRestored:
NSLog(@"SKPaymentTransactionStateRestored");
[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
default:
break;
}
}
}
//8. 과거에 구매한 내역
-(void) onRestror
{
SKPaymentQueue *queue =[SKPaymentQueue defaultQueue];
[queue restoreCompletedTransactions];
}
//9. 구매 등록
//사용자 설정을 변경한다.
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"Puchased"];
[[NSUserDefaults standardUserDefaults] synchronize];
//구매버튼 숨김
self.navigationItem.leftBarButtonItem=nil;
맥용 SVN 서버 설치 (0) | 2012.06.12 |
---|---|
Tabbar 아이콘 (0) | 2012.06.11 |
iOS 키보드 (0) | 2012.06.10 |
아이폰 OS 개발 자료 총정리 (2) | 2012.06.04 |
UIImageJPEGRepresentation (0) | 2012.06.04 |
- (void) viewDidLoad 에서
scrollView.contentSize = self.view.frame.size;
선언 이후 화면 변환(키보드 등장)에 대한 노티피케이션 감시 코드 추가
1) viewWillAppear 에서 UIKeyboardDidShowNotification 과 UIKeyboardDidHideNotification 등록
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:nil];
-(void)keyboardDidShow:(NSNotification *)notif
{
//키보드를 여러 객체들이 열 수 있는데, 자신의 키보드에만 반응하기 위해서, 이 정보를 갖고 있어야 한다
if(keyboradVisible)
{ return; }
NSDictionary* info = [notif userInfo];
NSValue* aValue = [info objectForKey:UIKeyboardBoundsUserInfoKey];
CGSize keyboardSize = [aValue CGRectValue].size;
CGRect viewFrame = self.view.frame;
viewFrame.size.height -= keyboardSize.height;
scrollView.frame = viewFrame;
keyboardVisible = YES;
}
-(void)keyboardDidhide:(NSNotification *)notif
{
if(!keyboardVisible)
{ return; }
NSDictionary *info = [notif userInfo];
NSValue *aValue = [info objectForKey:UIKeyboardBoundsUserInfoKey];
CGSize keyboardSize = [aValue CGRectValue].size;
CGRect viewFrame = self.view.frame;
viewFrame.size.height += keyboardSize.height;
scrollView.frame = viewFrame;
keyboardVisible = NO;
}
2) viewWillDisappear 에서 등록 해지
[[NSNotificationCenter defaultCenter] removeObserver:self]
Tabbar 아이콘 (0) | 2012.06.11 |
---|---|
StoreKit (0) | 2012.06.10 |
아이폰 OS 개발 자료 총정리 (2) | 2012.06.04 |
UIImageJPEGRepresentation (0) | 2012.06.04 |
XHTML/CSS 무료 템플릿 배포사이트 (0) | 2012.06.01 |