switch(i) {
    case 0:
        func00(); break;
    case 1:
        func01(); break;
    case 2:
        func02(); break;
...
}

코딩을 하다보면 이런 상황이 간혹 올 때가 있다

코코아에서는 이것을 그나마 좀 더 편하게 할 수도 있다.

NSString* funcName = [NSString stringWithFormat:@"func%02x", i];
[self performSelector:NSSelectorFromString(funcName)];

NSSelectorFromString과 performSelector를 이용하면 함수 이름으로 호출이 가능하다.

없는 함수를 찾는다면?

그냥 실행이 안될뿐.


크리에이티브 커먼즈 라이센스
Creative Commons License
2009/10/17 19:42 2009/10/17 19:42
Posted by 호빵
UB의 포맷은 (의외로?) 대단히 단순하다.

사용자 삽입 이미지

fat_header는 단 2개의 32비트 정수로 이루어진 구조체다.
struct fat_header
   {
uint32_t magic;
uint32_t nfat_arch;
};
magic은 이름에서 짐작하듯이 매직 넘버다. Big Endian에서는 0xCAFEBABE, Little Endian에서는 0xBEBAFECA. 읽어들일 때는 ntohl 따위를 써 주는 편이 좋겠다. 내부에 포함된 Mach-O 포맷(Mac OSX의 진짜 실행파일 포맷)은 엔디안에 따라 저장되는 모양새가 다르지만, UB 헤더는 무조건 Big Endian으로 저장된다. 따라서 인텔 CPU처럼 리틀 엔디안을 쓴다면 ntohl 함수 등을 써서 원래 값으로 복구해 주는 편이 좋다.
nfat_arch는 해당 UB가 지원하는 아키텍처 갯수를 표시한다. 요즘 UB는 대개 2겠지(PowerPC, Intel). 이론적으로는 3 이상이 될 가능성도 얼마든지 있으니 조심.

그 다음으로 이어지는 것은 총 20바이트 크기인 fat_arch 구조체의 리스트다. 절대 2개 고정이 아니며 nfat_arch에 써있는 갯수만큼 나열된다.
struct fat_arch
{
cpu_type_t cputype;
cpu_subtype_t cpusubtype;
uint32_t offset;
uint32_t size;
uint32_t align;
};
뭐.. 설명이 굳이 필요하려나.
offset은 해당 코드가 시작되는 절대위치(파일 시작위치가 0이라고 봤을 때)이므로 주의.
align의 의미는

..잘 모르겠다.

이것은 원문
align

The power of 2 alignment for the offset of the object file for the architecture specified in cputype within the binary. This is required to ensure that, if this binary is changed, the contents it retains are correctly aligned for virtual memory paging and other uses.

아무튼 OSX의 진짜 코드는 executable 자리를 차지하고있는 Mach-O 파일포맷을 분석해야 얻을 수 있다. UB는 포장일 뿐이지. 음하하






크리에이티브 커먼즈 라이센스
Creative Commons License
2009/09/25 18:14 2009/09/25 18:14
Posted by 호빵
TAG
애플의 웹브라우저 사파리가 버전 4 베타를 내놓았다. 소식이 늦어서 이제야 설치해봤지만...

달라진 점

- 크롬같은 방식으로, 제목줄 대신 탭이 그 자리를 차지했다.

- 첫 페이지가 애플스럽게 새단장을 했다. (원래는 뭐였더라)

- 봤던 페이지들을 커버플로우 형식으로 볼 수 있다. 애플답지만, 그다지 끌리지는 않는다.

- ACIDTEST3를 통과했다고 한다. (쉽게 말해 웹표준 테스트로, 현재까지 이것을 통과한 웹브라우저는 없다) 하지만 acid test는 통과해도 대한민국 홈페이지는 통과 못하는 것 같다.

- 어떻게 보면 엽기적일 수도 있는데, Safari 4 Beta는 Safari 3와 따로 설치되는 게 아니라 3를 덮어써버린다. 어차피 원래 파폭쓰던 사람이라 크게 상관은 없지만... 치명적인 버그라도 있으면 어쩌려고?

사용자 삽입 이미지


사용자 삽입 이미지

사용자 삽입 이미지


사파리도 꽤 괜찮은 웹브라우저긴 하지만, 링크가 새 창으로 열리는 것을 막고 반드시 탭으로 열리게 강제하는 옵션이 없어서 안 쓰고 있었는데... 4 베타에도 여전히 그런 기능은 없다. 기능 요청이라도 해볼까.


뱀발 - 다른 (한국) 거야 기대도 안하지만 텍스트큐브조차 사파리에선 정상 작동이 안되는구나.

크리에이티브 커먼즈 라이센스
Creative Commons License
2009/02/25 21:17 2009/02/25 21:17
Posted by 호빵

NSImage의 크기를 구하는 메서드는 size다.

NSImage *image = %*(#&*(@$&;
[image size].width => 너비
[image size].height => 높이

물론 [image size]의 형태는 NSSize 구조체고..

그런데 이 놈은 기준이 뭔진 도무지 모르겠지만 코코아가 일정 비율로 숫자를 바꿔 버린다. 이를테면 256x256 이미지에다 대고 저걸 했더니 127.44 127.44가 나온다거나 하는 식이다. 더럽게시리 비율도 지맘대로다. (뭔가 기준은 있겠지만 못찾았다)

해결책은 NSImage가 아닌 NSImageRep / NSBitmapImageRep의 pixelsWide, pixelsHigh

NSImagRep *imageRep = [NSImagRep
    imageRepWithContentsOfFile:@"test.jpg"];
width = [imageRep pixelsWide]; // int형식
height = [imageRep pixelsHigh]; // 얘도

NSImage의 정해진 용도가 뭔진 모르겠으나 이 놈은 비트맵 데이터를 직접 읽어오지도 못하고, 크기도 코코아에서 지정한 변환을 거친 다음의 것만 얻을 수 있는 걸 봐선 저수준으로 쓰라는 놈은 아닌거 같다.



크리에이티브 커먼즈 라이센스
Creative Commons License
2008/12/24 04:40 2008/12/24 04:40
Posted by 호빵

PDFStudio니 뭐니 해서 온갖 PDF comment 프로그램을 찾아 헤맸으나 결국 skim만한 놈은 없다는 결론에 도달.

나를 좌절케 했던 메모 날아가는 문제는 옵션을 뒤져서 해결책을 찾았다.

사용자 삽입 이미지

Automatically save Skim notes backups를 체크하면 노트를 PDF파일명.skim 이란 파일로 백업을 해둔다. 용량을 아주 조금 더 차지하게 되지만.. 복구가 안되는것보다야 낫지.

결론: Skim 킹왕짱

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/09/25 11:22 2008/09/25 11:22
Posted by 호빵

세상에서 세번째로 쓸모없는게 키보드에 달린 윈도우키(두번째는 메뉴키, 첫번째는 비밀)라고 생각했었는데

맥북에 아이락스 무선키보드를 연결하니 별도 설정 안해도 윈도우키가 애플키로, 메뉴키가 펑션키로

재배치가 되는군여.

맥북상의 배치와는 다르지만(맥북은 fn-ctrl-옵션(alt)-애플(command), 아이락스 키보드는 흔히 보는

ctrl-window-alt 오른편 구석에 메뉴키) 암튼 훨씬 쓸만해진거 같음. 크기도 더 크고.


크리에이티브 커먼즈 라이센스
Creative Commons License
2008/08/04 05:01 2008/08/04 05:01
Posted by 호빵
주인장은 맥북을 구입한 이래로 항상 수업시간에 노트북을 들고다닙니다. 이거 하나로 강의노트와 필기, 참고자료(인터넷)와 딴짓(수업중 와우?)이 모두 해결되니 참 편하죠.

그런데 다른 학교는 어떤지 모르겠는데 울 학교의 경우 강의노트가 거의 다 PDF파일인데.. PDF는 일반 adobe reader로는 편집이 안되죠. (이하 다른 블로그에도 맨날 써있는 진부한 내용 생략) 그래서 찾아봤습니다. pdf의 원래 용도(?)에 걸맞는 편집 프로그램...이 아니라 메모 프로그램.

맥OS X 용으로는 skim 이라는 녀석이 있더군요.

사용자 삽입 이미지
열심히 공부하는 나!

위에도 썼다시피 PDF의 특성상 보통 프로그램으로는 편집이 안 되기 떄문에 이 프로그램(과 다른 여러 PDF 메모 프로그램들)은 원본이 아니라 pdf를 바탕으로 깔고 그 위에 메모나 강조표시/화살표/도형등을 덧씌우는 방식으로 사용합니다. 그러므로 스샷에 보이는 것 같은 메모 등은 skim에서는 멀쩡히 다 보이고 인쇄도 가능하지만, 다른 프로그램(adobe reader 등)으로 볼 경우엔 도로 원본이 그대로 보이게 됩니다. 필기용으로는 딱이죠.

윈도우용으로는 foxit readerPDFXChangeViewer 등이 같은 기능을 제공한다고 하는데 써보진 않아서 잘 모르겠습니다. (데스크탑에는 윈도가 있지만 데스크탑을 들고 수업받으러 갈 수는 없으니까.)

암튼 쓸만하네요.


사족


크리에이티브 커먼즈 라이센스
Creative Commons License
2008/05/19 12:38 2008/05/19 12:38
Posted by 호빵
TAG ,
사용자 삽입 이미지
사용자 삽입 이미지


소문은 익히 들었지만 이거 뭥미?

IE빼고 윈도우에 볼일없는 나로서는 나이스샷?

왼쪽 커맨드키는 윈도우키 오른쪽은 메뉴키로 대입시켜주는 친절함까지..

여튼 멋지네요


크리에이티브 커먼즈 라이센스
Creative Commons License
2008/04/29 21:44 2008/04/29 21:44
Posted by 호빵
...라는 제목을 붙여놓으면 맥 유저 여러분들이 저를 비웃겠죠.
자기전에 풍성한 블로그에 보탬이 되볼까 하야 포스팅 하나 합니다만
네, 사실 맥용 와우가 원래 있습니다. 리눅스처럼 wine이니 어쩌니 그런거 필요없구요,
그냥 네이티브로 돌아갑니다. 설치 앤드 실행 ㄱㄱㄱ.
제 맥북에서는 내장그래픽의 한계로 전혀 쾌적하지 못한 속도가 나와줍니다마는..
기왕 설치해본거 맥용은 뭐가 다른가만 가볍게 살펴보도록 합시다.

사용자 삽입 이미지
별로 특별할 건 없어보입니다. 기본적으로는 윈도우용과 같고, 애드온도 와우를 기반으로 작동하는 것인만큼 (이론적으로는) 모두 수정 없이 멀쩡히 작동합니다. 파워PC용이라 실행만 하면 팬에서 열풍을 뿜어내는 스타크래프트와 동급입니다(?)

사용자 삽입 이미지
물론 완전히 똑같은 건 아닙니다. 화면에서는 Mac 설정이라는 메뉴가 보이네요. 그리고 밑에 희미하게 뭐라고 써있는건 iTunes 리모콘이라는 겁니다. 아이튠즈를 실행시켜 둔 상태에서(실행 안시켜도 되는지는 모르겠는데 저는 일단 실행한 채로) 와우를 실행시키면 와우 내의 단축키 설정으로 아이튠즈의 재생/정지/트랙/음량조절 등을 할 수 있습니다. 모든 맥에는 iTunes가 설치돼 있으니까요.

사용자 삽입 이미지
Mac 설정을 누르면 이런 설정창이 뜹니다. 맥버전은 기본으로 동영상 녹화 기능을 탑재하고 있습니다. 퀵타임의 힘이죠. 저는 사양이 구려서 죄다 최소옵션이기 때문에 녹화를 해도 별 건 안나옵니다.

사용자 삽입 이미지
Command-M을 누르면 이렇게 창모드도 문제없습니다. 윈도우 버전과 다른 점이 있다면 맥버전은 창모드로 들어가면 화면 자체가 줄어들어버립니다. 해상도를 낮추는 게 아니라 축소복사하듯이 줄어들죠.

사용자 삽입 이미지
동영상 녹화를 끝내면 게임 내에서 압축해서 자동으로 저장해 줍니다.

스샷에 찍힌 것 말고는 모두 윈도우용과 같습니다. 일부 애드온은 맥용에서 작동을 안 하는 것도 있다고 하는데 잘 납득이 가지 않는군요. 애드온이라는 것이 와우라는 가상머신 위에서 작동하는 일종의 프로그램이나 마찬가진데.. 

여튼 맥버전이 어떻게 생겼는지 관심있으셨던 분들에게 참고가 되었길 바랍니다. 음하하.
(사실 제가 그랬거든요~)

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/04/07 02:34 2008/04/07 02:34
Posted by 호빵