Thursday, January 29, 2015

TOW D드라이브에 설치하기

C:\TOW에 설치되었던 TOW를 D:\TOW로 옮기는 작업을 해보았다. 수정되는 파일과 절차는 다음과 같다.

1. 아래의 파일에서 "C:\TOW"를 "D\TOW"로 변경
set-tow.bat
start-tow.bat
create-svn-repo.bat

2. 아래의 파일에서 "C:/TOW"를 "D:/TOW"로 변경
apache\conf\httpd.conf

3. C:\TOW\Python은 그대로 남겨두기

이렇게 하면 D:\TOW폴더에서도 TOW를 실행시킬수 있어서 윈도우 포맷시 따로 백업하지 않아도 된다.

Monday, January 26, 2015

Eclipse Line Number

Windows - Preferences 
General - Editors - Text Editors
Show line numbers

Tuesday, January 13, 2015

Android ndk-build multiple target patterns stop

아래와 같이 ndk-build시 "multiple target patterns. Stop."이라는 메세지를 받을때가 있다.

$ ndk-build
Android NDK: WARNING: APP_PLATFORM android-21 is larger than android:minSdkVersion 19 in /Users/duongame/Downloads/FrameBufferObjectSample/AndroidManifest.xml    

/Users/duongame/Downloads/FrameBufferObjectSample/obj/local/armeabi/objs/my_lib/my_lib.o.d:1: *** multiple target patterns.  Stop.

이럴 때는 obj/local/armeabi/objs/.../*.o, *.o.d를 전부 삭제해주면 된다.

ndk-build clean을 해주면 동일한 효과를 얻을 수 있다.(이 방법은 테스트 결과 동작하지 않는다.)

Android NDK MacOSX 버전에서 bin파일 실행시키기

MacOSX용 Android NDK의 확장자가 tgz에서 bin으로 변경되었다.
그런데 Finder에서 더블클릭하면 실행이 바로되지 않는다.

이럴 때는 터미널을 열어서 "chmod +x *bin"한 다음, 해당 bin을 실행시키면 압축파일을 푸는 것과 동일한 효과를 얻을 수 있다.

Wednesday, January 7, 2015

Unity3D 안드로이드 프로젝트 Export시 JDK가 없다고 나오는 경우

Unity3D에서는 JDK를 최신버전 1.7을 설치해서 사용하는데도 불구하고 Export시 없다고 나오는 경우가 있다.

이럴때는 JDK를 x64를 사용하고 있더라도 i586 버전을 한번더 설치해 주면 해결된다.

Unity3D AngryBots 프로젝트 위치

Unity3D를 처음 시작하면 AngryBots 프로젝트를 읽어와서 보여주는데 한번 닫으면 다시 열기가 쉽지 않다. 프로젝트가 어디에 있는지 찾기가 어렵기 때문이다.

아래와 같은 위치에 AngryBots프로젝트가 존재한다. 여기서 프로젝트를 읽으면 AngryBots를 다시 사용할 수 있다.

C:\Users\Public\Documents\Unity Projects\4-0_AngryBots

Monday, January 5, 2015

MySQL Error> 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)

MYSQL C API 사용시 아래와 같은 에러가 발생하는 경우가 있다.

MySQL Error> 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)

이 에러는  mysql_real_connect()에 host로 "localhost"를 넣는 경우 발생한다.
이럴 때는 host에 "localhost"대신에 "127.0.0.1"을 넣으면 문제가 해결된다.

MySQL libmysqlclient.so.18: cannot open shared object file: No such file or directory

CentOS에서 MySQL C API를 사용하는 프로그램을 실행 도중 위와 같은 에러가 발생했다.
find로 찾은 결과 다음과 같은 위치에 있었다.

[root@SE3576 src2]# find / -name  libmysqlclient.so.18
/usr/local/src/mysql-5.6.21/libmysql/libmysqlclient.so.18
/usr/local/mysql/lib/libmysqlclient.so.18

그래서 다음과 같이 LD_LIBRARY_PATH를 정해주어야 한다.
내가 작업하는 CentOS 서버의 경우에는 iconv.so까지 찾을수가 없어서 다음과 같이 정의했다.
export LD_LIBRARY_PATH=/usr/local/mysql/lib/:/usr/local/src/libiconv-1.14/lib/.libs/:$LD_LIBRARY_PATH





Android @hide 코드 호출하기

안드로이드에서 @hide로 정의된 코드는 소스에는 존재하나 SDK 사용시 일반적인 방법으로는 호출할 수 없다.

/** @hide */
public static int checkUidPermission(String permission, int uid) {
    try {
        return AppGlobals.getPackageManager()
                .checkUidPermission(permission, uid);
    } catch (RemoteException e) {
        // Should never happen, but if it does... deny!
        Slog.e(TAG, "PackageManager is dead?!?", e);
    }
    return PackageManager.PERMISSION_DENIED;
}

그런데 다음과 같이 Java reflection을 사용하면 호출이 여전히 가능하다.
Class c;
c = Class.forName("android.app.ActivityManager");
Method m = c.getMethod("checkUidPermission", new Class[] {String.class, int.class});
Object o = m.invoke(null, new Object[]{"android.permission.READ_CONTACTS", 10010});