1. NDK 환경 변수 설정


Window > Preferences > C/C++ > Build > Environment


Variable: NDKROOT 

Value: (android-ndk 폴더 위치)



2. Build command 설정


해당 프로젝트 > 우클릭 > Properties > C/C++ Build


Builder Settings 탭 Builder 항목

Build command: ${NDKROOT}/ndk-build



3. NDK 인클루드 경로 설정


해당 프로젝트 > 우클릭 > Properties > C/C++ General > Paths and Symbols

includes 탭

GNU C 및 GNC C++ 항목에 각각 다음을 추가

${NDKROOT}/platforms/{안드로이드 min sdk 버전}/arch-arm/usr/include

${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/include

${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include


*안드로이드 min sdk 버전은 안드로이드 프로젝트에서 설정된 minSdkVersion에 맞추면 됨

예: android-8

Posted by unknowny
:

잘 돌아가던 앱이 어느 순간 런타임시에 ClassNotFoundException 에러를 내뿜으며 죽을 때가 있다.


1. clean 빌드/설치를 한다.

2. proguard를 최신 버전으로 설치한 후 clean 빌드/설치를 한다.

3. 해당 프로젝트의 Properties > Java Build Path > Order and Export 에 가서 목록의 모든 항목들을 선택하고 OK 한 후 clean 빌드/설치를 한다.


이거 하면 대충 해결된다.

Posted by unknowny
:
defaults write com.apple.dock persistent-others -array-add '{ "tile-data" = { "list-type" = 1; }; "tile-type" = "recents-tile"; }' killall dock

클리앙에서 퍼옴
Posted by unknowny
:
다음 사이트를 참고하세요.


Posted by unknowny
:
지난 밤 삽질의 기억을 정리한다.

발단.
연구실에서는 현재 제대로된 소스 관리가 이루어지지 않고 있다. '버전관리'의 개념은 커녕 각자가 개발하고 있는 소스를 체계적으로 관리하고 공유하려는 노력도 없는 상태.
게다가 얼마전 연구실 서버를 갈아엎으면서 기존의 cvs, svn 서버를 날린 상태.
그래서 놀고 있는 맥미니(Intel Core Duo, 2006년 모델)에 개발 서버 환경을 설치하고자 한다.

전개.
일단 subversion server를 설치하기 위해 구글 검색을 해 보았다. 사실 Snow Leopard 에는 이미 svn, apache2 가 지원되므로 간단한 터미널 명령을 통하여 svn 서버를 구축할 수 있다. (는 것을 삽질을 다 해 보고 깨달았다.)

아래의 사이트를 참고하였으며 이 사이트에서 설명하는 바를 차근히 좇으면 문제없이 진행된다. 한 곳만 빼고.
위 사이트를 거의 번역하는 수준에서 일단 진행하도록 하겠다.

0. 개요. 
위 사이트는 Mac OSX Leopard에 subversion server와 trac을 설치하고 승인된 사용자만 접근할 수 있으며 id/pw 정보를 주고 받을 때 https 프로토콜을 이용한 암호화를 제공하는 웹 사이트 및 svn 서버 구축 방법을 설명하고 있다. 진행은 "터미널"에서 이루어지며 관리자 권한으로 진행한다.
먼저 subversion 저장소와 trac 디렉토리를 미리 정하자. 이 글에서는 다음과 같이 정하였다. 
trac 저장소 - /usr/local/project/trac
svn 저장소  - /usr/local/project/svn
각각의 저장소 하위 디렉토리에 프로젝트 별 저장소를 만들 것이다.
이 글에서는 예제로 coffee 라는 프로젝트를 생성하겠다.


1. Subversion 저장소 만들기
# cd /usr/local/project/svn
# svnadmin create coffee
 
새로 생성된 저장소에 기본 구조를 만들고 이를 commit 한다.
# cd /tmp
# svn co file:///usr/local/project/svn/coffee
# cd coffee
# svn mkdir tags branches trunk
A         tags
A         branches
A         trunk
# svn ci -m "initial structure"
Adding         branches
Adding         tags
Adding         trunk

Committed revision 1.

2. HTTP를 통한 접근 활성화. (웹 브라우저에서 저장소에 접근할 수 있다.)
Mac OSX에는 apache 웹 서버가 기본으로 지원된다. 확인하는 방법은 "시스템 환경설정(System Preferences) > 인터넷 및 무선 - 공유(Sharing)" 에서 왼쪽 목록에서 "웹 공유(Web Sharing)"를 켜면 아파치 웹 서버가 가동된다.
http 프로토콜로 svn에 접근하도록 하기 위해서는 /etc/apache2/httpd.conf 파일을 편집해야 한다. 이 파일은 아파치 웹서버의 설정정보를 가지고 있다.
이 파일은 분량이 방대하고 많은 정보를 담고 있으므로 보통 별도의 설정 파일을 만들고 이를 httpd.conf 파일에서 include 한다.

subversion 설정 파일을 /etc/apache2/extra 폴더에 만든다. (파일이름은 꼭 아래의 예를 따라갈 필요는 없다. 적당히 정해준다.)
# cd /private/etc/apache2/extra
# vi httpd-subversion.conf

httpd-subversion.conf 파일에 아래와 같은 내용을 입력한다.
LoadModule dav_svn_module     libexec/apache2/mod_dav_svn.so
LoadModule authz_svn_module   libexec/apache2/mod_authz_svn.so

<Location /svn/coffee>
   DAV svn
   SVNPath /usr/local/project/svn/coffee
</Location>
첫번째 줄은 apache2 시작시에 svn 모듈을 로드하는 명령이고 두번째 줄은 svn authorizing 모듈을 로드하는 명령이다.
<Location>은 URL에서 도메인 네임 (또는 IP) 뒤에 붙는 주소의 위치를 알려주는 정보이다.
(예를 들어, http://localhost/svn/coffee 라고 url을 입력하면 /svn/coffee의 위치를 정해줌)

이제 httpd.conf 파일에 httpd-subversion.conf 파일을 include 하도록 하자.
/etc/apache2 에서 httpd.conf 파일을 관리자 권한으로 열고 아래를 적당한 위치에 추가한다.
# Subversion
Include /private/etc/apache2/extra/httpd-subversion.conf
(/etc와 /private/etc 에 대해서는 위에 링크한 사이트에서 읽어보시라. 둘다 같은 위치임.)

이제 아파치 서버를 다시 시작하고 웹 브라우저에서 svn 서버에 접근할 수 있는지 확인해보자.
아파치 서버 재시동은 "시스템 환경설정(System Preferences) > 인터넷 및 무선 - 공유(Sharing)" 에서 왼쪽 목록의 웹 공유를 껐다 켠다.
http://localhost/svn/coffee
앞에서 추가한 branches, tags, trunk 폴더가 웹 브라우저에 보이면 성공. 에러나면... 나도 모름.

3. svn 서버 접근 시 사용자 ID 및 패스워드 적용하기.
sonzea - Installing a Subversion server on Leopard 사이트에서는 웹 서버에서 SSL 활성화를 먼저 설명하고 있으나 여기서는 일단 svn 서버 접근 시 ID/PW 요구하는 것을 먼저 설명한다.

사용자 ID와 패스워드 정보를 관리할 authentication 파일을 생성한다.
# htpasswd -cm /etc/apache2/subversion.auth starbucks
New password: *****
Re-type new password: *****
Adding password for user starbucks
-c는 파일을 새로 생성함을 뜻하고, -m은 패스워드를 암호화하도록 하는 옵션이다.
위 명령은 /etc/apache2 디렉토리에 subversion.auth 라는 파일을 만들고 starbucks라는 아이디를 추가한다. 이때 패스워드를 암호화한다.
subversion.auth 파일을 텍스트 에디터로 열어보면 사용자 아이디와 암호화된 패스워드를 볼 수 있다.
파일을 생성한 후 사용자를 추가할 때는 다음과 같이 한다.
# htpasswd /etc/apache2/subversion.auth pascucci

이제 /etc/apache2/extra/httpd-subversion.conf 파일을 열어서 svn 저장소에 접근 시 사용자 아이디와 패스워드를 묻도록 만들자. 
LoadModule dav_svn_module     libexec/apache2/mod_dav_svn.so
LoadModule authz_svn_module   libexec/apache2/mod_authz_svn.so

<Location /svn/coffee>
   DAV svn
   SVNPath /usr/local/project/svn/coffee

   # How to authenticate a user
   AuthType Basic
   AuthName "Subversion repository"
   AuthUserFile /private/etc/apache2/subversion.auth
   # Only authenticated users may access
   Require valid-user
</Location>

웹 서버를 재시작 후 다시 웹 브라우저에서 다시 접근하면 다음과 같이 아이디와 패스워드를 묻는 화면을 볼 수 있다.

4. SSL을 이용한 사용자 정보 암호화
OpenSSL을 이용한 사용자 정보 암호화는 sonzea - Installing a Subversion server on Leopard 사이트를 참고하도록 한다.

5. Trac의 설치
Trac 설치는 http://trac.edgewall.org/ 를 참고한다.
  
sonzea 웹에서는 clearsilver 라는 프로그램을 먼저 설치하라고 안내하고 있는데 이것 없이도 Trac 0.12 버전은 문제없이 설치됐다. 아래는 sonzea 웹의 Trac 설치 방법을 그대로 옮긴 것이다.

From http://www.clearsilver.net/downloads/ get clearsilver-0.10.5.tar.gz

Extract, configure and build

$ tar xzf clearsilver-0.10.5.tar.gz 
$ cd clearsilver-0.10.5
$ ./configure --with-python=/usr/bin/python
$ make
$ sudo make install

perhaps also

$ cd python
$ sudo python setup.py install

Download the latest stable version of Trac fromhttp://ftp.edgewall.com/pub/trac/Trac-latest.tar.gz. Then extract and install the system:

$ tar zxf trac-latest.tar.gz
$ cd trac-latest
$ sudo python ./setup.py install

※ copied from http://www.sonzea.com/articles/subversion-trac.html



6. Trac을 apache 웹 서버를 통해 기동하기.
여기가 삽질을 한 부분인데 sonzea 블로그를 통해서 설치를 진행하면 잘 되다가 Configure Apache to run TRAC using FastCGI 부분에서 제대로 동작을 하지 않게 된다.
여기서부터는 Trac의 공식 설치 가이드 중 Running Trac on a Web Server 를 따른다.

apache 웹 서버를 통한 Trac의 구동 방법은 웹 브라우저를 통해 Trac이 설치된 경로로 사용자가 접근하면 trac.fcgi 를 실행하도록 환경을 꾸미는 것이다. 그러나 sonzea 블로그의 방법을 그대로 좇으면 /usr/local/share/trac/cgi-bin/trac.fcgi 가 존재하지 않아 해당 웹 페이지에 접근할 수가 없다.

먼저 Trac 프로젝트를 새로 생성한다. coffee라는 프로젝트를 생성하도록 하겠다.
# mkdir -p /usr/local/project/trac/coffee
# trac-admin /usr/local/project/trac/coffee initenv
위와 같이 실행하면 프로젝트 이름과 db 이름을 입력하는 프롬프트를 만난다. 프로젝트 이름은 coffee로 하고 두번째는 그냥 엔터를 입력해서 디폴트 값을 사용하도록 한다.

이제 fcgi를 통해서 Trac을 실행시킬 수 있는 환경을 마련하자. 이것은 한번만 해주면 된다. 
# trac-admin /usr/local/project/trac/coffee deploy /tmp/deploy
# mv /tmp/deploy/* /usr/local/project
위를 실행하기 전에 /tmp/deploy 디렉토리가 존재한다면 비어있는지 확인한다.
위를 실행하면 /usr/local/project 디렉토리 아래 cgi-bin, htdocs 디렉토리가 생성된다. 이렇게 생성된 cgi-bin 디렉토리가 sonzea 블로그의 /usr/local/share/trac/cgi-bin/trac.fcgi 에 해당하는 cgi-bin 디렉토리이다.

/usr/local/project/cgi-bin 디렉토리에 가면 trac.cgi, trac.fcgi, trac.wsgi 세 개의 파일이 있음을 확인할 수 있다. 세 파일에 실행 권한을 주자.
# chmod +x trac.*


이제 apache 웹 서버와 연동하기 위한 준비가 되었다. subversion 과 마찬가지로 별도의 설정파일을 만든다. 
Trac은 FastCGI를 사용하므로 먼저 이에 관한 설정 파일을 만든다. /private/etc/apache2/extra/httpd-fastcgi.conf 파일을 아래 내용으로 만든다.
# Enable fastcgi for .fcgi files
<IfModule mod_fastcgi.c>
   AddHandler fastcgi-script .fcgi
   FastCgiIpcDir /private/var/run/fastcgi
</IfModule>

LoadModule fastcgi_module libexec/apache2/mod_fastcgi.so

아래의 내용으로 /private/etc/apache2/extra/httpd-trac.conf 파일을 생성한다.
ScriptAlias /trac/coffee /usr/local/project/cgi-bin/trac.fcgi
FastCgiConfig -initial-env TRAC_ENV=/usr/local/project/trac/coffee

<Location "/trac/coffee">
   SetEnv TRAC_ENV "/usr/local/project/trac/coffee"
</Location>

<Directory "/usr/local/project/cgi-bin">
   AllowOverride None
   Options None
   Order allow,deny
   Allow from all
</Directory>

httpd.conf 파일에 httpd-trac.conf 파일을 include 하도록 하자.
/etc/apache2 에서 httpd.conf 파일을 관리자 권한으로 열고 아래를 적당한 위치에 추가한다.
# FastCGI
Include /private/etc/apache2/extra/httpd-fastcgi.conf
# TRAC
Include /private/etc/apache2/extra/httpd-trac.conf

웹 서버를 재시작하고 아래와 같이 웹 브라우저에서 접근해 보자.
http://localhost/trac/coffee

7. Trac 사용자 등록
Trac에서는 별도의 회원가입(register) 기능이 없다. subversion 에서의 사용자 추가와 마찬가지 방법을 통하여 사용자를 관리한다. subversion 에서 생성한 authentication 파일을 그대로 사용한다.

/etc/apache2/extra/httpd-trac.conf 파일을 다음과 같이 수정한다.
ScriptAlias /trac/coffee "/usr/local/project/cgi-bin/trac.fcgi"
FastCgiConfig -initial-env TRAC_ENV=/usr/local/project/trac/coffee

<Location "/trac/coffee">
   SetEnv TRAC_ENV "/usr/local/project/trac/coffee"
</Location>

<Location "/trac/coffee/login">
   AuthType Basic
   AuthName "coffee Project"
   AuthUserFile /private/etc/apache2/subversion.auth

   Require valid-user
</Location>

<Directory "/usr/local/project/cgi-bin">
   AllowOverride None
   Options None
   Order allow,deny
   Allow from all
</Directory>

웹 서버를 재시작하고 coffee 프로젝트에 접근한다. 첫 화면 오른쪽 상단에 Login을 클릭하면 다음과 같이 나타난다.


끝.

앞으로 할 일.
Trac과 subversion 연동

Posted by unknowny
:
이 에러는 맥 OSX 10.6 Snow Leopard에서 macport를 통해 오픈소스 라이브러리들을 설치하고
이 라이브러리들을 이용하여 프로그래밍을 할 때 볼 수 있는 에러.

구체적으로 컴파일된 소스 파일들을 링크할 때 libGLEW.dylib 이라는 동적라이브러리 파일이
컴파일된 소스와 방식이 맞지 않음을 말한다.

즉, 소스 파일들은 32비트로 컴파일되었는데 libGLEW.dylib 라이브러리 파일은 64비트로만 컴파일되어서 링크가 안된다고 하는 것.

이와 관련된 자료가 인터넷에 있기는 하나 매우 소수이고--구글링해도 한페이지가 채 안된다-- 그 글을 잘 뜯어봐도 크게 도음을 받지 못하였다.

아무튼 원인은 macport 를 통하여 설치한 glew 라이브러리가 64비트로만 컴파일 된 게 문제.

시도 1. 구글링에서 찾은 방법을 적용해 봄.
/opt/local/etc/marports  폴더에 가보면 macports.conf 라는 환경설정 파일이 있다.
이것에 w 권한을 주고 관리자 권한으로 파일을 열어서 아래와 같이 수정

# Options for Universal Binaries (+universal variant)
universal variant
 
# machine architectures
universal_archs     x86_64 i386

이렇게 했는데 해결이 안됨.

시도 2. 소스를 64비트로 컴파일
한참의 삽질을 통해 컴파일된 환경(32비트, 64비트)이 맞지 않아 발생하는 것이라는 것을 알아내고는
소스를 64비트로 컴파일했더니 옘병~
가져다 쓰는 오픈 소스 중에서 3DS 파일을 읽을 수 있는 라이브러리가 제대로 동작을 안함.

시도 3. 해결!
macports로 glew를 다시 설치했는데 아래와 같이 했음

sudo port install glew +universal

macports.conf 파일을 수정할 필요 없이 위와 같이 하면 32/64비트로 컴파일이 되어서 문제가 해결됨.


Posted by unknowny
:
Torx-6 드라이버(별 드라이버)가 필요하다고 하였으나 일단 과감히 시작.


준비물:
사랑스런 맥북 프로(4.1),
새 하드 드라이브(WD 500G/5400rpm),
십자 드라이버,
나사를 놓아둘 흰 종이와 맥북프로를 올려놓을 적당한 천,
3M 스카치 테잎







일단 바닥에서 배터리와 메모리를 들어냅니다. 메모리 커버를 고정하는 세 개의 나사는 스카치 테잎에 붙여서 메모리 커버에 잘 붙여 놓습니다.









메모리 커버를 들어내면 메모리 슬롯 양쪽으로 두 개의 별모양 나사가 보입니다. 이 두 나사는 1.8mm짜리 일자 드라이버로 손쉽게 풀립니다.

역시 별 드라이버는 필요없었어! 라고 환호하는 Jaeyoung.








배터리 슬롯 안쪽에 두 개의 나사,
바닥 힌지 쪽에 네 개의 나사,
뒷면 힌지 양쪽에 두 개의 나사,
양 옆면에 각각 네 개씩의 나사를 꺼내어
각각 테잎으로 고정하고 위치와 수량을 적어 놓습니다.





















액정을 수직으로 세우고 상판을 들어냅니다.
다른 곳은 쉽게 들리는데, 적외선 수신부 쪽과 DVD 슬롯 윗 부분에 상판과 하판이 단단히 고정된 부분이 있습니다.
이 부분을 쇠붙이 말고 플라스틱과 같이 흠집을 안 낼만한 도구로 상판과 하판을 분리합니다.
딱! 소리가 나면서 상판이 하판으로부터 분리됩니다.
(다음 사진 참고.)



사진에 보시면 상판 끝단에 짙은 회색빛의 납작한 일자모양이 다섯개가 보입니다.
가운데 트랙패드를 중심으로 왼쪽에 하나, 오른쪽에 나란히 네 개.
이 녀석들이 하판과 단단히 결합되어 있습니다.
분리할 때나 조립할 때 딱! 소리가 나도록 해야 합니다.
조립할 때 주의하셔할 점!
왼쪽 녀석은 잘 조립됩니다. 오른쪽의 네 녀석은 DVD 슬롯 윗부분에 위치합니다. 이 녀석들을 끼우겠다고 강한 힘을 가하면, 결합이 되는 게 아니라 DVD 슬롯 윗부분이 주저앉게 됩니다. 따라서 슬롯 부분에 주저앉지 않도록 지지할 만한 것을 끼워넣고 위에서 강한 힘을 가하여 결합해야 하판이 변형되는 것을 막을 수 있습니다.


상판을 들어올린 모습.
상판을 확 들어올리면 안됩니다.
상판과 하판을 연결하고 있는 얇은 필름이 있습니다.
이것을 뽑으면 상판과 하판이 완전히 분리됩니다.







들어올릴 때 주의하셔야할 점!

사진 가운데 부분에 갈고리처럼 보이는 것이 있습니다. 이 녀석은 상판에 붙어 있어서 안쪽에서 하판과 나사를 통해 고정되는 녀석인데요 상판 분리하겠다고 들었다 놨다 하는 동안 어느 새 사진에서처럼 바깥쪽으로 휘어져 버렸습니다.
이 녀석은 힌지 양쪽에 있으므로 상판을 들어올리실 때 주의하시기 바랍니다.


















분리된 하판과 상판의 모습. 간단하게 먼지 등을 청소해 줍니다. 구형 MBP는 키보드 양쪽에 나 있는 구멍들이 제법 커서 먼지가 잘 들어갑니다. 상판 안쪽에서 압축공기등을 살살 쏘아서 이 먼지들을 제거합니다.
아주 속이 시원하군요~.



문제의 나사!
하판 왼쪽 하단에 하드 드라이브가 자리하고 있습니다. 4.1 버전의 경우 하드 드라이브 오른편의 브라켓을 제거한 후 오른편을 들어올리면서 하드 드라이브를 제거하는 방식입니다. (3.1 버전과 다름)
두 개의 별 나사가 브라켓에 조여져 있습니다. 이 나사들은 단단히 고정되어 있어서 앞서의 일자 드라이버 신공으로 절대 풀리지 않습니다. 때문에 용산으로 별드라이브 구입하러 갔다왔습니다.
별드라이버로 두 개의 나사를 풀어내면 하드 디스크의 한쪽을 고정하고 있던 브라켓을 분리할 수 있습니다.



하드 디스크에 연결되어 있는 세 개의 케이블을 분리합니다.
이것으로 하드디스크는 하판에서 완전히 분리됩니다.

조심해야 할 부분!
하드 디스크 윗면에 양면 테이프로 고정되어 있는 케이블이 있습니다. 이것을 분리하려면 사진에 보이는 두 개의 플러그(흰 머리들이라고 부릅시다.)가 있는 쪽부터 분리해야 합니다. 하드 커넥터 쪽으로부터는 분리할 수 없습니다. 흰 머리중에서 큰 쪽(아래것)은 부착이 안되어 있고 작은 쪽(윗것)부터 하드 커넥터에까지 양면테이프로 고정되어 있습니다. 작은 쪽 밑으로 얇은 도구를 밀어넣어서 한번에 떼도록 합니다.
이 과정에서 조심하지 않으면 작은 쪽의 납땜부위나 케이블이 상할 수 있습니다. 저는 강하게 접힌 자국이 남았습니다.


자 이제 핵심!
두 하드 디스크를 교체합니다.
기존 하드 디스크 양쪽으로 별나사가 단단히 박혀 있습니다.
맞교환합니다.








역순으로 새 하드 디스크를 장착한 모습.




















이제 새로 OS를 설치합니다.


주의.
Torx-6 드라이버가 반드시 필요하다.
하판에서 제거하는 나사 들이 많으므로 잘 정리하자.
상판과 하판을 분리/조립할 때 조심하자.
하드 디스크에 붙어 있는 케이블을 조심스럽게 분리하자.



Posted by unknowny
:
오늘도 내 삽질 인생에 족적을 남긴다.

이번에는 공개 개발 툴인 Eclipse를 맥에 설치하여 보았다. Eclipse는 open source, cross platform의 통합 개발 도구, 이른바 Integrated Development Environment(IDE)이다. 더 이상의 자세한 설명은 생략.

오늘 삽질했던 내용.
1. 정적 라이브러리로 개발하여 빌드된 "libuser.a" 라는 라이브러리가 있다고 하자. 이놈을 응용프로그램 프로젝트에서 링크하려고 한다. 어떻게?
  1. 응용프로그램 프로젝트의 Properties을 연다. (옵션+엔터)
  2. 좌측의 메뉴에서 C/C++ Build > Settings 항목을 선택.
  3. 오른쪽 창에서 Tool Settings를 선택. (첫번째 항목임)
  4. 서브 메뉴의 MacOS X C++ Linker > Miscellaneous 선택.
  5. Other objects 항목에 링크하고자 하는 라이브러리를 입력한다.
  6. Build
2. 이렇게하여 링크할 라이브러리를 추가하고 다시 빌드 하였더니 이번에는 다음과 같은 링크에러가 떴다.
구글신에게 물어보자. 원인은 정적라이브러리의 오브젝트 파일(.o)들을 압축할 때 목차를 만들지 않았기 때문이다. 콘솔에서는 ranlib 명령을 이용하는데 Eclipse의 Static Library 프로젝트 템플릿에서는 이 과정을 거치지 않는 모양이다. 해결책은 다음과 같음.
  1. 정적라이브러리 프로젝트의 Properties을 연다.
  2. 좌측의 메뉴에서 C/C++ Build > Settings 항목을 선택.
  3. 오른쪽 창에서 Tool Settings를 선택. (첫번째 항목임)
  4. 서브 메뉴의 GCC Archiver >> General 선택.
  5. Archiver flags라는 항목 하나가 나타난다. 여기에 "-r -s"라고 입력.
  6. Build
다시 빌드를 하면 Console 창에서 ranlib이 실행됐음을 확인할 수 있다.

3. 이렇게 해서 끝난 줄 알았더니 끝이 아니었음. 3D 시뮬레이터라서 OpenGL, GLUT, glew 등의 라이브러리가 필요했던 것.

glew의 추가: glew는 macports를 이용하여 설치했으므로 다른 Linux OS와 같이 링크한다.
  1. 응용프로그램 프로젝트의 Properties을 연다. (옵션+엔터)
  2. 좌측의 메뉴에서 C/C++ Build > Settings 항목을 선택.
  3. 오른쪽 창에서 Tool Settings를 선택. (첫번째 항목임)
  4. 서브 메뉴의 MacOS X C++ Linker > Libraries 선택.
  5. Libraries (-l) 항목에 glew를 추가. 
OpenGL, GLUT의 추가: OpenGL 및 GLUT 라이브러리는 위와 같은 방법으로는 추가가 안된다. 맥 OSX에서는 OpenGL과 GLUT를 framework(헤더와 라이브러리가 들어있는 압축파일)로 제공하고 있다.
  1. 응용프로그램 프로젝트의 Properties을 연다. (옵션+엔터)
  2. 좌측의 메뉴에서 C/C++ Build > Settings 항목을 선택.
  3. 오른쪽 창에서 Tool Settings를 선택. (첫번째 항목임)
  4. 서브 메뉴의 MacOS X C++ Linker > Miscellaneous 선택.
  5. Linker flags 라는 한줄짜리 항목이 있다. 이곳에 "-framework GLUT -framework OpenGL" 을 입력.

이렇게 해서 결국 성공했음.





Posted by unknowny
:
OpenSceneGraph(OSG)는 OpenGL을 이용하여 사용자가 손쉽게 다양한 기능을 구현하여 3D 렌더링을 할 수 있도록 하는 open source, cross platform library 이다.

이것을 내 맥북프로 Mac OS 10.5.6에 설치하는데 문제가 계속 발생했다.

Undefined symbols for architecture ppc:

Mac에 설치하는 방법은 두 가지인데 Xcode용 인스톨러 패키지를 다운받아서 설치하는 방법과 소스를 다운받아서 직접 컴파일해서 설치하는 방법이 있다.
전자는 /Library/Frameworks 안에 Xcode 용 framework을 설치하고 Xcode용 project 템플릿을 추가한다. 
후자는 /usr/local/include, /usr/local/lib 등에 헤더와 라이브러리 파일을 설치한다.

아무튼 console에서 후자의 방법을 통해 OSG를 설치하는데 80%쯤 컴파일을 하고나서 컴파일 에러를 띄우면서 설치가 되지 않았다. 에러로 봐서는 도대체 무슨 상황인지 알 수 없는 상황. 그래서 포기하고 있다가 며칠전 OSG 포럼에 글을 남겼더니 어제 답이 떴다. 아래는 포럼 링크.


일단 원인은 OSG는 CMake를 이용하여 소스를 컴파일하는데 이때 기본적으로 PPC용 및 Intel용으로 모두 컴파일하도록 설정이 되어 있다. 그런데 내 맥에 PPC용 Inventor를 설치했던 흔적이 남아있고 OSG가 이것에 대해 제대로 컴파일을 할 수가 없어서 에러내고 종료되는 것이었다. Inventor에 대한 의존성과 어떤 경로에 어떻게 설치되어 있는지 모르기 때문에 설정에서 OSG를 Intel용으로만 컴파일하도록 설정하여 다시 했더니 깔끔하게 잘 되었다.

어떻게 했는지에 대해 기록을 남기자.

일단 CMake를 이용하는 소스는 해당 폴더 내에 CMakeList.txt라는 파일이 있다. OSG의 경우
[설치폴더]/OpenSceneGraph/CMakeList.txt
라는 파일이 있다.
[설치폴더]로 가서 (OpenSceneGraph 폴더가 아님. 그 상위 폴더) 다음을 실행한다.
ccmake OpenSceneGraph (<- CMakeList.txt 파일이 들어있는 폴더명)

그러면 환경 설정 화면이 뜬다.

아래에서 1/3 지점쯤에 CMAKE_OSX_ARCHITECTURES 라는 항목이 있고 이 항목의 값이 i386으로 되어있는 것을 볼 수 있다. (이미 수정된 후)
위 에디터는 보통의 텍스트 에디터와는 다르게 한줄 한줄 수정이 가능하다. 위 그림의 아래에서부터 다섯번째 라인이 반전되어 있는 것을 볼 수 있는데, 이곳에서만 편집을 할 수 있다. (이를 편집라인이라 부르자!)
화살표키로 위아래로 움직이면 상단에 열거돼 있는 항목들이 이 편집라인에 한줄씩 나타나고 항목에 대한 설명이 같이 나타난다. 수정하고자 하는 목록을 화살표키로 이 편집라인에 나타나도록 한 후 엔터키를 치면 값을 바꿀 수 있다. ON/OFF 값과 같이 값이 정해져 있는 경우 엔터키를 칠 때마다 값이 토글된다. 문자열의 경우는 직접 편집하면 된다.

편집을 마치면 c 키를 눌러 configure를 실행하자. 이때 임시 configuration이 일어나고 값이 변경된 항목들에 * 표가 표시되어 값이 바뀔 것임을 알려준다. 일종의 '이거 변경할 건데 맞지?'하고 한번 더 확인하는 셈.
확인이 끝났으면 c 키를 한번 더 누른다. 그럼 실제 값을 변경하고 configuration을 마친다. 마치고 나면 *표가 사라졌음을 알 수 있다. 이제 g 키를 눌러서 (뭔가를) 생성하고 완료되면 종료한다.

이제 OpenSceneGraph 폴더로 들어가서 make & make install 하면 새로운 세팅으로 컴파일을 한다.

끗.



Posted by unknowny
:
앞서 언급한 macheist.com 을 통해 구입한 번들 중 하나를 건졌다. 바로 Espresso
사실 이 소프트웨어는 이미 훌륭하다고 소문이 나 있는 모양이다. Web page 저작 툴인데 내가 전문 디자이너도 아니고 (사실 전문가가 이런 툴을 쓸까) 평소에도 특별히 웹페이지를 만들거나 하지 않기에 이것에 주목하지 않았었다.

현재 개발하고 있는 동역학 라이브러리와 관련해 사이트를 하나 관리하고 있는데, 다운받아본 기념(?)으로 'Espresso'를 이용해 보았다. 소감은 대 만족.

일단 내 웹페이지 제작 환경은, TextMate(편집) + Safari(브라우저) + ForkLift(Explorer+FTP) 이다. TextMate는 project 방식으로 여러 페이지 및 폴더 관리가 편하고 HTML등의 predefined keyword에 대한 색상 관리를 지원하므로 텍스트 편집하기에 좋은 소프트웨어이다. Safari는 페이지 확인하느라 쓰고 ForkLift로는 작성된 웹페이지를 서버로 업로드하는데 사용한다. 대개 이런 기능들을 모두 제공하는 all-in-one 웹개발 소프트웨어들이 있는데 써 본 경험으로는 내가 필요한 기능(텍스트 편집+브라우저로 확인+FTP)을 제공하기 보다는 나름 사용자를 고려한답시고 테마나 템플릿 등을 제공하고 원치않는 자동화와 제멋대로의 서버와의 sync 기능들을 제공한다. 사용하기 갑갑한 느낌을 지울 수가 없었다. 그래서 저런 조합으로 나름 적응해서 지내고 있었는데 Expresso는 내가 원하는 '그 것'을 제공해 주었다. 아 이 얼마나 아름다운 소프트웨어란 말인가.
Espresso는 TextMate과 같이 project 방식으로 파일과 폴더를 관리하고 편집할 수 있다. 또한 버튼 하나만 누르면 편집중인 페이지를 새로운 탭을 열어 브라우저로 보여준다. 업로드할 서버를 등록하면 로컬 파일들과 서버에 올려져 있는 파일들을 세로로 분리된 두 explorer를 통해 비교해서 보여주고 사용자가 각각의 파일들에 대해 sync, upload, download, ignore 등을 설정할 수 있도록 해 준다. 이런 소프트웨어야 말로 all-in-one 아니겠는가. 참으로 만족스럽지 않을 수 없다.


Posted by unknowny
: