struct objc_class *Class

Base 클래스인 NSObject의 헤더에는 다음과 같이 선언되어 있습니다.

@interface NSObject <NSObject>
{
  Class isa;
}

isa는 클래스 타입의 변수로 모든 인스턴스 객체는 이 isa에 의해 자신이 속한 클래스 객체를 참조합니다. 이것은 objc/objc.h 에 다음과 같이 정의되어 있습니다.

struct objc_class *Class;

그리고 이 구조체는 다음과 같은 내용을 담고 있습니다.

struct objc_class {
    struct objc_class *isa;
    struct objc_class *super_class;
    const char *name;
    long version;
    long info;
    long instance_size;
    struct objc_ivar_list *ivars;
    struct objc_method_list **methodLists;
    struct objc_cache *cache;
    struct objc_protocol_list *protocols;
};
http://macdevcenter.com/pub/a/mac/2002/05/31/runtime_parttwo.html?page=2

Posted by Enowy

2009/10/27 14:13 2009/10/27 14:13
, , , , , ,
Response
No Trackback , 20 Comments
RSS :
http://enowy.com/blog/rss/response/161

사용자 삽입 이미지
야옹신부님께서 아이팟 나노 1세대를 교체받으셨다는 말씀을 듣고 교체 신청을 한 결과 새로 교체를 받았습니다. 아마도 리퍼제품이 아닐까 싶습니다만 새것이라고 봐도 무방할 정도 입니다. 나이키 스포츠 센서와 함께 운동을 시작해 봐야 겠습니다.

Posted by Enowy

2009/10/12 14:13 2009/10/12 14:13
, , , , , , ,
Response
No Trackback , 14 Comments
RSS :
http://enowy.com/blog/rss/response/158

How to make Safari stop using Acrobat for PDF preview?

아크로뱃 설치 이후 사파리에서 pdf를 보면  preview 가 아닌 아크로뱃이 작동됩니다.

이것을 기본 환경으로 돌리기 위해서는 다음의 과정을 수행합니다.

  1. /Library/Internet Plug-Ins 로 이동합니다.
  2. Disabled 라는 이름의 폴더를 새로 만듭니다.
  3. AdobePDFViewer.plugin을 그 폴더 안으로 넣습니다.
  4. Safari를 재시작합니다.

참고 : http://forums.macrumors.com/showthread.php?t=198977

Posted by Enowy

2009/05/26 14:23 2009/05/26 14:23
, , , , , , ,
Response
No Trackback , a comment
RSS :
http://enowy.com/blog/rss/response/144

사용자 삽입 이미지


802.11G를 지원하는 구형 Airport Express의 경우 채널이 13까지 지원됩니다.
현재 시판되는 11n 지원의 신형 모델들도 규격상 13까지 지원되는 것으로 알고 있습니다.

하지만 PowerBook에 장착된 AirPort Extreme Card는 11까지만 지원되어 Airport Express의 채널이 12, 13으로 설정되면 인식을 하지 못하는 현상이 발생됩니다. 이 경우 채널을 11이하로 설정해 준다면 인식이 가능해 집니다.

이전에 전파법으로 인해 11까지만 이용할 수 있도록 제한이 있었던 것으로 기억합니다만 정확하지는 않네요....

Posted by Enowy

2009/02/15 04:27 2009/02/15 04:27
, , , , , ,
Response
No Trackback , a comment
RSS :
http://enowy.com/blog/rss/response/138

Mac OS X Server 10.5 에 GD library 설치

사용자 삽입 이미지


Mac OS X Server 10.5.5에 gd lib을 설치하는 방법을 올립니다. (제로 보드 설치때문에 꼭 필요합니다.)

참고 사이트:
mac@facault : Mac OS X Server 10.5 에 GD library 설치


전체 순서는 아래와 같습니다.
  1. libjpeg 설치
  2. gd lib 설치
  3. php 재 설치
주의 1 : 아래의 내용중 configure 부분은 32비트와 64비트로 구분되어 있습니다. PowerPC G4, Core Duo 시스템이라면 32비트, PowerPC G5이거나 Core 2 Duo 이상이라면 64비트입니다.

주의 2 : 아래의 내용은 10.5.5 기준으로 설명합니다.

주의 3 : OS 설치시 X11이 선택되어 설치되어 있어야 합니다.

주의 4 : Xcode 가 설치되어 있어야 합니다.

1. 터미널을 열고 su 명령어로 root로 전환합니다.

2. 임시 폴더를 하나 만듭니다.
mkdir -p ./source
cd ./source

3. libjpeg과 gd 라이브러리의 소스를 다운로드하고 압축을 해제합니다.
curl -O http://www.ijg.org/files/jpegsrc.v6b.tar.gz
curl -O http://www.libgd.org/releases/gd-2.0.35.tar.gz
tar xzpf jpegsrc.v6b.tar.gz
tar xzpf gd-2.0.35.tar.gz

4. libjpeg부터 설치를 시작합니다.
cd /source/jpeg-6b
cp /usr/share/libtool/config.sub .
cp /usr/share/libtool/config.guess .

5. configure를 수행합니다.
32 비트 시스템이면

./configure –enable-shared

64비트 시스템이면

MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS=”-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe -no-cppprecomp” CCFLAGS=”-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe” CXXFLAGS=”-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe” LDFLAGS=”-arch ppc -arch ppc64 -arch i386 -arch x86_64 -bind_at_load” ./

./configure –enable-shared

5. libjpeg를 컴파일 하고 설치합니다.

make
mkdir -p /usr/local/include
mkdir -p /usr/local/bin
mkdir -p /usr/local/lib
mkdir -p /usr/local/man/man1
make test
make install

6. gdlib를 설치합니다.
cd ../gd-2.0.35

7. configure를 수행합니다.

32비트

./configure

64 비트

MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS=”-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe -no-cppprecomp” CCFLAGS=”-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe” CXXFLAGS=”-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe” LDFLAGS=”-arch ppc -arch ppc64 -arch i386 -arch x86_64 -bind_at_load”

./configure –disable-dependency-tracking

8. gd lib을 컴파일 하고 설치 합니다.

make
make test
make install

9. 애플의 darwin source중 자신의 OS 버전에 맞는 php소스를 다운 받아서 재컴파일 합니다. (여기서는 10.5.5입니다.)
cd ../
curl -O http://www.opensource.apple.com/darwinsource/10.5.5/apache_mod_php-44.1/php-5.2.6.tar.bz2
tar xjf php-5.2.6.tar.bz2
cd ./php-5.2.6/ext/gd
phpize

32 비트 시스템이면 다음과 같이 합니다.

./configure --with-zlib-dir=/usr --with-jpeg-dir=/usr/local/bin --with-png-dir=/usr/X11R6 --with-freetypedir=/usr/X11R6 --with-xpm-dir=/usr/X11R6

64 비트 시스템이면 다음과 같이 합니다.

MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS=”-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe -no-cppprecomp” CCFLAGS=”-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe” CXXFLAGS=”-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe” LDFLAGS=”-arch ppc -arch ppc64 -arch i386 -arch x86_64 -bind_at_load”

./configure --with-zlib-dir=/usr --with-jpeg-dir=/usr/local/bin --with-png-dir=/usr/X11R6 --with-freetypedir=/usr/X11R6 --with-xpm-dir=/usr/X11R6

10. php를 컴파일 합니다.

make
make test
make install

11. php.ini 파일을 수정합니다.
/etc 디렉토리에 php.ini.default 라는 기본 파일이 있습니다. 이 파일을 이용해  php.ini를 만듭니다.

cd /etc
cp php.ini.default php.ini
chmod 711 php.ini
vi php.ini

12. 실행된 vi에서 다음의 내용을 추가합니다.

extension=gd.so

13. 또한 extension_dir= 이라는 설정을 찾아서 주석처리합니다.

12. 아파치를 재시동 합니다.
apachectl graceful 를 쓰거나 Server Admin에서 Web을 재시작합니다.

13. /Library/WebServer/Document에 test.php라는 파일을 만들어 테스트합니다.
내용은 
<?
phpinfo();
?>
입니다.
그리고 권한을 변경해 줍니다. chmod 777 test.php

14.해당 페이지에 접속하여 내용을 확인합니다. 아래와 같이 출력되면 성공입니다.

GD Supportenabled
GD Versionbundled (2.0.34 compatible)
GIF Read Supportenabled
GIF Create Supportenabled
JPG Supportenabled
PNG Supportenabled
WBMP Supportenabled
XPM Supportenabled
XBM Supportenabled



참고 사항:
최신의 Developer Tools를 사용할 경우 php 컴파일시에 문제가 있는 경우도 있다고 합니다. 이 경우 /usr/X11/lib/libpng.la 파일을 찾아서 다음 처럼 수정합니다.
library_names=’libpng12.0.dylib libpng12.dylib
libpng12.0.26.0.dylib’
current=26
age=26

라는 행들을 아래처럼 수정 합니다.

library_names=’libpng12.0.dylib libpng12.dylib
libpng12.0.24.0.dylib’
current=24
age=24


Posted by Enowy

2008/12/15 01:30 2008/12/15 01:30

사용자 삽입 이미지
Mac OS X Server 10.5에는 MySQL이 답재되어 있습니다. 10.5.5 의 경우 MySQL의 버전은 5.0.67입니다. 하지만 여기에 설치되는 MySQL의 인코딩은 Latin 1으로 설정되어 있습니다. Mac OS X Server는 현재 영어, 일본어, 독일어로 제공되고 있습니다만 일본어 버전을 설치해도 유니코드드로 지정이 안되는 것으로 알고 있습니다. (오래 전에 시도해 봤던 것이라 잘 모르겠네요. Apple Support Discussions - Mac OS X Server 에서 보고가 없는 것으로 보면 일본어로 설치하는 경우 자동으로 UTF-8 설정이 될 지 모르겠습니다.)

방법은 아래의 방법으로 수행하시면 간단히 해결하실 수 있습니다.

  1. 터미널을 실행하고 sudo vi /etc/my.cnf 를 입력합니다.
  2. 패스워드를 입력하고 내용을 편집하기 시작합니다.
  3. [client]  키워드를 찾아 맨 아래쪽에 default-character-set=utf8 을 입력합니다.
  4. skip-networking을 찾아 default-character-set=utf8, default-collation=utf8_general_ci  의 두 줄을 입력합니다.
  5. 저장 후 Serve Admin에서 MySQL을 재시작합니다.
  6. MySQL에 root로 로그인하고 show variables like 'char%'; 를 입력하면 변경내역을 확인할 수 있습니다.
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       | 
| character_set_connection | utf8                       | 
| character_set_database   | utf8                       | 
| character_set_filesystem | binary                     | 
| character_set_results    | utf8                       | 
| character_set_server     | utf8                       | 
| character_set_system     | utf8                       | 
| character_sets_dir       | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+


기본적으로 mysql 은 /etc/my.cnf에 설정을 사용합니다. 그래서 이곳에 수정을 해준 것이고요.. 그리고 내용중 아래의 내용을 기입한 것입니다.
[client]
default-character-set=utf8

[mysqld]
skip-networking
default-character-set=utf8
default-collation=utf8_general_ci
 
참고 사이트 : 
MacPorts-MySQL : MacPorts를 이용하여 설치하기
미남이의 이러쿵저러쿵 : MySQL의 기본 인코딩(default encoding)을 UTF8으로 설정하기
rain9.com : MySQL 를 설치했는데 character set 의 변경
싸인펜의 Life Log : OSX mysql 설치, 설정
SimpleThing : 웹 개발을 위한 Mac OS X 환경 구축
정목이의 블로그 : Mac OSX에서 Apache + MySQL + PHP 개발환경 구축하기

Posted by Enowy

2008/12/14 12:46 2008/12/14 12:46

드디어 8GB의 RAM...

사용자 삽입 이미지

사용자 삽입 이미지

8GB를 램으로 사용하는 시대가 왔네요. 가격도 생각보다 굉장히 낮습니다.
비스타는 32비트 버전이라 4GB를 다 사용하지 못하지만 Mac OS X에서는 모두 사용할 수 있습니다.

이것 저것 벌려놓고 쓰는 성격에 아무런 문제 없이 작동되는 군요.

삼성 DDR2 PC2-6400 / DDR800 2GB*2 : 44300원입니다.

Posted by Enowy

2008/12/12 17:17 2008/12/12 17:17
, , , , ,
Response
No Trackback , No Comment
RSS :
http://enowy.com/blog/rss/response/126

오늘로서 Mac OS X 10.5.5 설치가 끝났습니다.

사용자 삽입 이미지

오늘로서 10.5.5 설치가 끝났습니다.

무려 3주가 걸렸네요. 

정리하고 나니 새삼 느끼는 게 데스크탑이 하는 역할과 노트북이 하는 역할은 따로 있군요.

그동안의 스토리를 들자면...

ASUS의 P5LD2 보드, Pentium D, 4GB 메모리 머신에 10.4.11를 깔아 쓰고 있었습니다.
(애플에서 10.4.12를 내놓지 않아 업데이트 걱정없이 한 1년 가까이 잘 쓰고 있었습니다.)

한가지 문제가 CPU 사양이 낮다는 것인데 Aperture를 쓰면 반응이 많이 느렸습니다.  
(턱 턱 멈추고 기다리는게 정말 정리할 맛 안나게 만들더군요..)

그래서 올해 3월부터 P5LD2가 지원하는 최고 CPU의 중고 가격을 지켜 보고 있었습니다.
(지금은 환율때문에 쓸만한 성능이 되는 CPU 들은 가격이 상당합니다.)
적합한 CPU가 E6700인데 얼마전 알아본 중고 정품이 14만원 정도 하는 것 같더군요.

문제는 중고 제품 구하는 것이 하늘에 별따기 입니다.
불황탓인지 새제품으로 바꾸시는 분들이 적고 중고 제품들을 찾으셔서 인지
매물이 올라왔다 하면 바로 사라집니다. 아니면 거리가 먼 곳에서 직거래를 원하신다던지요...

결국 눈을 돌린 곳이 용산의 중고 부품 판매점입니다. 일일이 연락을 해 본 결과 한군데 있더군요... 
16만 5천원..
가격이 좀 높긴 했지만 더 이상 시간 낭비 하고 싶지 않아 연락하고 바로 갔습니다. 
그 날짜가 11월 22일.. 
구매하고 집에 부리나케 와서 꽂아 봤더니, 어라? 부팅이 안됩니다. 
켜면 전원이 인가되는 듯 싶더니 바로 꺼집니다. 
도통 영문을 알 수가 없어 한 시간을 헤메다 구글 검색을 해 봤습니다.
헉... E6700이 제 보드의 리비전에서 지원하지 않는 CPU더군요. 리비전을 못본겁니다. 
(2.0이 지원하는 데 전 1.03이더군요...)

결국 회사에서 사용하는 머신에 테스트해보니 정상.
이제부터 고민입니다. 환불이냐 아니냐.... 
찍어 놓은 보드가 P35-DS3인데 이것도 중고 물건이 별로 없어서 일주일 동안 찾았습니다.
일주일 내에 매물이 생기면 CPU를 쓰고 안생기면 환불하자 였죠.

오호라. 금요일 매물 발견! P35-DS3P를 11만원에 일요일날 구입.
그때부터 삽질입니다. Boot-132와 리테일 디스크로 설치하는 방법을 사용했습니다.
그러길 또 일주일의 삽질 후 결국 지난 주말에 성공하긴 했습니다.
(맥을 System 6.0.4부터 만져 왔지만 이렇게 많이 깔아 보긴 처음이네요.)

그렇게 하고 마무리를 지으니 그래픽 카드가 말썽입니다. 
X1600 Pro이고 10.4.11에서 잘 쓰던 카드인데, Quartz Extreme과 Core Image가 안됩니다.

결국 교체할 그래픽 카드를 알아보고 구매합니다.   
구매한 모델은 ASUS GeForce EN8800GT 512MB VF9. 21만원.
맥프로 구입시 선택할 수 있는 카드중에도 8800GT가 있습니다.
결국 이걸로 끝나 이틀정도 정리하고 오늘 마무리 했네요.
(어부지리로 시네마 HD에서 x1600은 바이오스 화면이 출력이 안됐는데 지금은 되네요. 
모니터를 따로 구매하지 않아도 되겠군요.) 

이제 다음은 NAS네요...

느낀점
  1. 맥프로보다 싸다. (성능이 낮긴하지만 아이맥 성능의 데스크탑을 원했으므로...)
  2. 설치시 일반 키보드보다 애플 키보드가 더 낫다.
  3. 해킨토시를 깔려면 고생이 많다. 고생을 줄이려면 검색해서 많이 쓰는 걸로 골라라.
  4. 많이 쓰는 부품을 찾으면 보통 제품 단가가 비싸다.
  5. 까는데 고생도 많고 향후에도 어찌될 지 모른다.
  6. 재력이 받쳐준다면 맥프로를 사는게 더 낫다.

시간이 나면 설치하는 단계를 정리해 봐야 겠습니다.

ps. 요즘 램값 엄청납니다. 그나마 낮은 가격에 매일 몇백원씩 떨어지더군요.

Posted by Enowy

2008/12/11 19:53 2008/12/11 19:53

윈도우 마켓 쉐어 처음으로 90% 이하로...

사용자 삽입 이미지
December 1, 2008 (Computerworld) Microsoft Corp.'s Windows OS last month took its biggest market share dive in the past two years, erasing gains made in two of the past three months and sending the operating system's share under 90% for the first time, an Internet measurement company reported today.
윈도우 마켓쉐어가 90%이하로 처음 떨어졌다고 합니다. 사실 실제 그래프 상에서는 살짝 내려온 정도지만 수치상의 의미가 큰 것이겠죠.. 특히 Mac OS  X의 시장 점유율이 점차 높아 지는 것 같습니다. 예전에 컴퓨터가 아닌 다른 제품으로 다변화하는 것을 보면서 이전의 스컬리 시절을 살짝 걱정하기도 했습니다만 오히려 시장의 반응으 좋고 오히려 OS의 마켓 쉐어를 늘릴 수 있는 기회가 되었네요. (스컬리 회장때는 참 여러가지를 만들었었지요...) NeXT에서 구체화 시켰던 자신의 생각을 발전시켜가는 잡스도 대단히 부러운 사람입니다.

출처 : ComputerWorld
자료 : Market Share

Posted by Enowy

2008/12/02 16:09 2008/12/02 16:09

Mac OS X의 한글 저장 방식

Mac OS X에서는 모든 한글을 유니코드로 저장하고 있습니다. 하지만 윈도우에서 접근하는 경우 모두 깨져 보이게 되는데 리눅스의 경우는 그렇지 않죠.

Mac OS X의 경우 Unicode Normalization 규칙에서 최대한 분해된 상태인 NFD(Normalization Form D)로 저장하고 lookup, readdir등의 파일시스템 요청을 그 상태 그대로 응답합니다. 따라서, Mac OS X 으로부터의 UTF-8 유니코드 이름은 전부 최대한 디컴포즈된 상태로 오기 때문에, 일반적으로 조합된 상태로 쓰는 한글 (U+AC00)영역만을 지원하는 xterm 등 일반 애플리케이션들에서는 정상적으로 볼 수 없습니다.

Unicode Normalization Forms - http://unicode.org/reports/tr15/

U+AC00 영역 - http://www.unicode.org/charts/PDF/UAC00.pdf

한글을 제대로 보이게 하시기 위해서는 U+1100영역으로 완전히 분해된 한글을 ls에서 뿌리기 전에 조합해 주거나, 아니면 터미널에서 U+1100 출력을 지원하는 방법이 있고, MacOS X에서 패치하는 방법도 있습니다.

U+1100 영역 - http://www.unicode.org/charts/PDF/U1100.pdf

NFD
Normalization Form Canonical Decomposition
Characters are decomposed by canonical equivalence.
NFC
Normalization Form Canonical Composition
Characters are decomposed and then recomposed by canonical equivalence. It is possible for the result to be a different sequence of characters than the original.
NFKD
Normalization Form Compatibility Decomposition
Characters are decomposed by compatibility equivalence.
NFKC
Normalization Form Compatibility Composition
Characters are decomposed by compatibility equivalence, then recomposed by canonical equivalence.


그렇지만, most decomposed로 저장하는 것은 Darwin의 기본 정책이기 때문에, 이쪽은 매우 힘들고, 또한 ls나 xterm에서 normalization을 지원하도록 하는 것도 상당히 힘든 일입니다. 이 문제에 대해서는 우선은 뾰족한 해결책이 없습니다.

참고로, NFS를 직접 쓰시려는 목적이 아니고, 그냥 옮기시려는 목적이라면 KoreanCodecs처럼 U+1100과 U+AC00 간의 전환을 도와주는 툴을 사용하시면 쉽게 이름을 바꿀 수는 있습니다. 그리고, GNOME2.4같이 GTK+2를 기반으로 한 프로그램들은 Unicode Normalization을 지원하고 있어서 Nautilus같은 파일 관리자를 사용하시면 MacOS X 파일 시스템의 한글도 보실 수 있습니다.

- 출처 : 장혜식님의 방명록 -
http://openlook.org/guestbook/reply.php?id=68&db=perky
(블로그 내용이 아닌 방명록에 있어서 옮겨 왔습니다.)

Posted by Enowy

2008/06/23 10:48 2008/06/23 10:48