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
:
이 에러는 맥 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
:
환경:
Ubuntu Linux 8.10.
3DConnexion Space Navigator for Notebook.

드라이버 다운로드:
http://www.3dconnexion.com 에서 드라이버를 다운받는다.

다운받은 드라이버를 /tmp 디렉토리에 저장한다.
아래 명령을 root 권한으로 차례로 실행한다.

tar xfz 3dxware-linux-v1-3-0.i386.tar.gz install -3dxunix.sh
./install-3dxunix.sh

필요한 라이브러리 설치:
나의 경우는 드라이버를 다운로드하여 설치하고 실행하려 하자
"libXm.so.3 이라는 파일을 열 수 없어서 안되겠네~" 라고 에러가 떴었다.
먼저 아래를 실행하여 필요한 라이브러리를 설치하자.

apt-get install libmotif3

/etc/3DxWare/daemon/ 폴더로 이동.
Space Navigator를 연결하고 다음을 실행

./3dxsrv -d usb

이것을 실행한 상태에서 다른 프로그램 사용이 가능하다.
이것을 종료시키면 사용할 수 없음.

/tmp 폴더에 xcube, xvalue 라는 실행파일이 있으니 실행시켜본다.


Posted by unknowny
:
1. 디스플레이 끄기
맥에서 화면만 끄는 방법은 Expose의 Hot corner를 이용하는 방법 밖에는 찾을 수 없었다.
그러나 역시 정보의 바다는 광활한 법.

"Control + Shift + Eject"를 누르면 디스플레이만 끌 수 있다.
외장으로 연결된 보조 디스플레이까지 같이 꺼진다.

2. 사용자 전환
윈도우즈를 사용하다보면 자주 쓰는 기능 중 하나가 "윈도우즈 키 + L" 단축키이다.
이는 현재 사용중인 사용자가 로그아웃 하지 않은 상태에서 다른 사용자로 전환하기 위하여 로그인 화면으로 돌아가도록 해준다.
즉, 잠깐 자리를 비울 때 이 키를 누르므로써 로그아웃 하지 않고 컴퓨터를 잠그는 방법이다.
윈도우즈를 사용할 때는 이 기능을 유용하게 사용했었는데 맥에서는 이 기능이 없어서 답답해 했었다.
물론 맥은 매우 훌륭한 "잠자기" 기능이 있고 또한 화면보호기에 암호를 입력받도록 할 수도 있다. 그러나 잠자기는 빈번하게 사용하긴 무리가 있고 화면보호기는 활성화되기까지 시간이 걸리므로 적당하지 않다.

System Preferences > Accounts > Login Options > Enable fast user switching 을 활성화하여 이용하면 "윈도우즈 키 + L"와 같은 사용자 전환을 할 수 있다. 그러나 역시 단축키는 없다.

여기에 [^F8] + [^F9] 를 이용하여 같은 기능을 활성화 하는 방법을 소개한다.
이 역시 정보의 바다에서 찾은 방법인데 썩 괜찮은 방법은 아니다.

Keychain access 실행
Keychain access > Preferences > Activate "Show Status in Menu Bar"

System Preferences > Keyboard & Mouse > Keyboard Shortcuts
마지막 줄의 application Keyboard Shortcuts > All Applications 에 다음 shortcut을 추가
"Lock Screen" "^F9"

끗.

이제 [^F8] + [^F9]를 이용하여 화면을 잠글 수 있다.

Posted by unknowny
:


OS X에서 Parallels를 사용하면, Parallels 가상머신에 설치된 OS의 응용프로그램과 OS X에 설치된 응용프로그램을 공유하는 옵션이 있다. 이 옵션 덕(?)분에 OS X 사용할 때 "마우스 우클릭 > Open With"를 보면 왼쪽 그림과 같이 응용프로그램 목록이 지저분하게 뜬다.

이 목록에는 Parallels로 인해 생긴 것도 있고 예전에 있었으나 지금은 없는 응용프로그램의 목록도 들어있다. 이를 정리하는 방법을 소개한다.

출처는 여기 -
http://support.apple.com/kb/TA24770?viewlocale=en_US

1. [Home 폴더] > Library > Preferences
2. com.apple.LaunchServices.plist  파일을 삭제하거나 다른 이름으로 바꾼다.

끗.


















Posted by unknowny
:
우선 내가 참고한 사이트는 여기.

이 사이트에서 소개하고 있는 방법은 프린터 프로토콜이 smb인 경우인데, 사실 이와 관련된 글은 "Mac, printer, windows"의 키워드로 구글에서 검색해보면 쉽게 찾을 수 있다.

내 경우에는 현재 프린터 주소가 http 프로토콜로 되어 있어서 위 링크된 사이트에서 소개하고 있는 방법으로는 안된다.

링크된 사이트에서 Advanced > Type 부분을 보면 http 프로토콜을 선택할 수 있다. 그런후 URL에 주소를 적어넣고 프린터 드라이버 잡아서 설치하면 끝.

다만 문제가 있는데, (이것이 문제인지, 문제라면 항상 나타나는 문제인지 아니면 이곳에서만 겪는 문제인지 확인되지 않았지만) 프린터가 자동으로 Pause 되는 현상이 나타나고 문서가 출력이 완료된 후 목록에서 사라지지 않고 남아있다.


Posted by unknowny
:
MacPorts


몇 개만 적어놓자.

port selfupdate
port list
port search []
port install []
port uninstall []

[] 안에는 패키지 이름. MacPorts에서는 "port"라고 부른다.
설치는 dependency를 고려하여 필요한 port까지 다 설치하고
제거는 dependency의 유무에 따라 되기도 안되기도 한다.
Guide 페이지를 잘 읽어보자.


Posted by unknowny
: