순수중독, 방동근, Stefan, PureHolic, Mac, iPod, Travel, Korea…

Archive for the ‘취미 : Computer’ Category


포인터와 레퍼런스의 차이

Sep 18, 2008 Author: 순수중독 | Filed under: C/C++ | View counter: 100

 C++ 을 하면서 어려우면서도 좋다는 것을 알게된 포인터(Pointer)와 레퍼런스(Reference : 참조)가 있다. 하지만 오래간만에 생각하니깐 이 둘의 차이점과 사용할 때를 명확하게 구별하기가 어려웠다.

차이점

  • 포인터는 NULL을 가질 수 있다.
  • 레퍼런스는 NULL을 가질 수 없다.
    (레퍼런스는 C++부터 지원)

C++에서는 레퍼런스는 선언과 동시에 정의되어야 하며 레퍼런스는 포인터처럼 다른 객체로 바꿀 수 없다.

그리고 일부에서는 NULL레퍼런스를 가질 수 있다고 하기도 하지만 개인적인 생각에는 레퍼런스는 "레퍼런스는 NULL을 가지지 않는다" 라는 것이 전제가 된다고 생각한다. 실제로 레퍼런스는 alias의 개념이 강하기 때문이다.

 

레퍼런스를 사용할 때

  1. 객체의 시작이나 끝이나 한가지만을 가르킬 때
  2. operator 함수를 정의할 때 좌변의 객체에 쓸 수 있는 값을 반환해 줄 때

 

 레퍼런스는 값의 수정을 못하게 보장해준다는 점에서 괜찮다고 생각된다. 그리고 가능한 레퍼런스를 사용하여 나도 모르는 값의 참조를 막아주는 것이 좋을 것 같다.

iPhoto에서 지도태그사진 구글맵스와 연동하기

Aug 7, 2008 Author: 순수중독 | Filed under: 맥북 : iLife | View counter: 209

 저번에 Google Earth와 Geotagger라는 프로그램을 이용해서 사진에 지도태그를 삽입하는 방법을 적은 적이 있다. 하지만 이렇게 정리한 사진들을 그저 플리커(Flickr)에 올리는 것만으로밖에 사용할 수 없었는데, 이를 이용해서 iPhoto에서 바로 구글맵스에서 그 위치를 보여주는 방법애플포럼에서 alexken님께서 알려주셨다.

 하지만 방법에 유일한 단점이 있었으니 올려진 파일은 한국어를 이용해서만 사용할 수 있게 만들어주신 것이다. 나 같이 영어상위로 사용하는 사람들에게는 "보기"라는 버튼이 보이지 않아, 혹시 내가 직접 nib파일을 수정하면 되지 않을까? 싶은 생각에 해보았는데 성공하였다.

 

iPhoto NIB파일 수정하기

  1. iPhoto > 우클릭 > Show Package Contents
  2. Contents > Resources > English.Iproj 로 이동
  3. Interface Builder를 이용해서 InfoPanel.nib 파일을 연다.(D-Click)
    - XCode를 설치하면 자동으로 Interface Builder도 설치가능
    - 다른 언어팩의 경우엔 수정이 안되었음.
    + 혹시 모를 사태를 대비해 백업을 미리합시다. 
  4. 아래와 같이 패널에서 Exposure을 선택한다.
    - 왼쪽의 info(File's Owner의 아래)를 더블클릭하면 나옴

    infopanel.nib     

     

  5. show 버튼위에서 마우스 오른쪽 버튼을 클릭한다.
    The inspection window of the show button   

     

  6. Referencing Outlets 중에 mGPSShowButton 항목을 제거한다.
    - File's Owner 앞에 X를 누르면 됨.

    - 때때로 위의 사진과 다르게 Referencing Outlets 항목이 없을 때가 있다. 이때는 File's Owner에서 오른쪽 클릭한 뒤에 거기에 있는 mGPSShowButton 오른쪽에 있는 Square Textured Button 항목을 해제(x)하자.
     

  7. 저장 후 종료, iPhoto의 재실행 후 Show 버튼 확인
  8. iPhoto의 사진의 정보를 보면 다음과 같이 Show 버튼이 생겨난 것을 확인할 수 있다. 그리고 그 버튼을 클릭하였을 경우 구글맵스의 그 좌표로 자동으로 뜨게 된다.
    iPhoto and Google Maps

 

 그래도 코코아 프로그래밍을 공부하고 있었던 바람에 Interface Builder를 이용해서 쉽게 수정하여 사용할 수 있게 되었다. 다른 플러그인들도 이런식으로만 만들 수 있다면 한번 해보고 싶은데... 머리가 아파온다. ^^;

혹시 모르니 꼭 위의 작업을 하기 전에 백업을 하고 실패할 땐(?) 언제든지 다시 덥쳐써서 사용하자. 그리고 위의 수정을 통하여 Show 버튼을 나타내게 했지만 지도 태그가 없는 사진에도 뜨게 된다. -_-;

코코아개발 #02 - Objective-C의 클래스

Aug 1, 2008 Author: 순수중독 | Filed under: 코코아 : Cocoa | View counter: 314

 Objective-C는 브래드 콕스(Brad Cox)란 사람이 옛날 옛적에 C에 스몰토크와 비슷한 클래스들과 메시지 전송 매커니즘들을 추가하여 만든 언어이다. 그래서 문법은 생소할지 몰라도 전체적인 모습은 C언어를 공부하였다면 쉽게 다가갈 수 있다. Objective-C에서 추가된 클래스와 메시지 전송 매커니즘에 대해서 공부를 하였다.

 

Objective-C의 클래스 사용방법

NSMutableArray *foo;
 
foo = [NSMutableArray alloc]; // NSMutableArray의 인스턴스 생성
[foo init]; // foo가 가르키는 객체에 init 메시지 전송
[foo release]; // foo의 인스턴스를 해제

 위의 예제를 보면 알 수 있지만 [foo init] 의 의미는 C언어에서 foo.init(); 과 동일한 의미이다. C언어에서 없는 클래스와 관련된 명령들은 대부분 [     ] 대괄호 안으로 입력이 되는 것을 볼 수 있다.

 

Objective-C에서 새로운 객체 작성

 C언어에서 확장된 Objective-C기 때문에 객체의 선언 부분은 약간 특이하다. 특히 적응되지 않는 [  ] 대괄호의 사용은 언젠가 계속 접하다보면 편해지길 바라며 쓸 뿐이다.

File > New file... > Objectvie-C class 선택하여 작성.

foo.h 파일

#import <Cocoa/Cocoa.h>
 
@interface foo : NSObject {
	NSMutableArray *array;
	int foo_no;
	int prev_no;
	int next_no;
}
- (void)setNumber:(int)no;
- (int)foo_no;
- (int)prev_no;
- (int)next_no;
@end

foo.m 파일

#import "foo.h"
 
@implementation foo
 
- (void)setNumber:(int)no {
	foo_no = no;
}
- (int)foo_no {
	return foo_no;
}
- (int)prev_no {
	return prev_no;
}
- (int)next_no {
	return next_no;
}
 
@end

 위와 같이 Objective-C에서의 클래스는 다른 언어(JAVA, C# 등)들과 의미는 같지만 문법이 약간 다르다. 적응하는데 약간 시간이 걸릴듯하다.

 

Objective-C의 메세지 전송 매커니즘

 Objective-C의 메시지 전송 매커니즘의 문법은 많은 프로그래머들이 매우 멋지다고 말을 한다. 그 이유는 간단하다. 모든 메서드의 인수의 의미 파악이 쉽기 때문이다.

NSMutableArray *foo;
foo = [[NSMutableArray alloc] init];
 
[foo insertObject:bar];
[foo insertObject:bar atIndex:7];
 
[foo release];

 위의 예제처럼 인수를 넘길 땐, : 를 이용한다. 그리고 복수의 인수가 있을 경우에는 InsertObject:bar atIndex:7 이렇게 적어준다. 스몰토크를 사용할 줄 아는 사람은 이것이 쉽게 다가 온다는데... 난 전혀 안 다가온다. 나중에 이용하면서 적응해 나가야할 듯하다.

Flickr PhotoStream

    2008.10.17 검정조끼 방동근2008.10.16 와인셔츠 방동근2008.10.15 가디건 방동근2008.10.11 동전노래방에서 - 22008.10.11 동전노래방에서 - 1

글목록


그 밖의 기능


Sponsors