'개발관련'에 해당되는 글 100건
- 2011/12/19 64비트 윈도우에서 현재 프로그램이 64비트로 동작 중인지 확인하기
- 2011/12/18 안드로이드 Lint 초기 경고 없애기
- 2011/12/17 안드로이드 개발환경 설정이 쉬워졌다
- 2011/10/17 우분투 리눅스 화면이 깜빡인 후 뻗을 때
- 2011/09/09 Android 에서 AppWidget 을 개발할 때 유의점 (2)
- 2011/09/02 eclipse marketplace 를 이용하자 - Use eclipse marketplace (2)
- 2011/08/24 Ubuntu 11.04 Unity 에서 파일 복사할 때의 깨알같은 좋은 기능
- 2011/08/16 ubuntu linux 에서 subclipse 로 ntfs 에 있는 repository 로 svn 사용시 chmod error ( chmod error when using ubuntu linux and subclipse on ntfs repository)
- 2011/07/16 eclipse indigo cdt 에 Microsoft Visual C++ 환경 설정하기 (2)
- 2011/06/02 제임스 고슬링의 자바를 읽으며...
작업 관리자를 띄웠을 때 자신의 프로세스 옆에 *32 표시가 있으면 32비트 모드로 실행되는 것이다. ( http://en.wikipedia.org/wiki/Windows_XP_editions#Windows_XP_64-Bit_Edition ) 참고.
ps : ZViewer 가 32비트로 실행되는구나... 64비트도 한번 빌드해봐야 할 듯 :)
안드로이드 개발툴의 최신 버젼(ADT 16버젼 - 2011년 12월)에는 Lint 라는 툴이 추가되었다. 설치 후, 화면에 아래와 같은 아이콘을 클릭하면, Lint 를 실행하여 잠재적으로 문제가 있는 부분을 알려주게 된다.
그런데, 웃긴건 안드로이드 기본 프로젝트를 생성해도 위와 같은 경고를 보여준다는 것이다. 위 내용을 읽어보면, drawable-xhdpi 라는 density 가 없다는 것인데, 요즘 고해상도 폰이 많이 나오면서 높은 해상도를 지원하라는 의미로 받아들이고, 일단 res 디렉토리 아래에 drawable-xhdpi 를 만들고, 임시로, drawable-hdpi 의 이미지 파일을 넣어보자. 그러면....
위와 같이 해상도 크기가 다르니 어쩌고 저쩌고 한다.... 에잇 그래서 대충 뒤져보니, http://developer.android.com/guide/topics/resources/providing-resources.html 의 중간쯤을 보면, ldpi, mdpi, hdpi, xhdpi 이런 부분을 보면 3:4:6:8 의 크기로 하라는 얘기가 있다. 즉, ldpi:mdpi:hdpi:xhdpi = 3:4:6:8 로 하라는 이야기이다.
기존의 우리가 새로 만든게 xhdpi 이므로, mdpi 에 있는 아이콘 크기의 2배로 하면 되겠다. 그래서 mdpi 의 크기를 보면 기본적으로 48x48 이므로, 우리는 96x96 크기의 아이콘을 만들어서 넣어주면 되겠다.
이제 Lint 를 다시 실행시켜보면 깔끔하게 하나의 경고도 없는 것을 볼 수 있다.
아마 ADT 최신 버젼이 나오면 알아서 xhdpi 용 아이콘을 넣어주지 않을까 싶지만, 임시로 이렇게 해서 깔끔하게 Lint 사용을 시작해보자~
그런데, 웃긴건 안드로이드 기본 프로젝트를 생성해도 위와 같은 경고를 보여준다는 것이다. 위 내용을 읽어보면, drawable-xhdpi 라는 density 가 없다는 것인데, 요즘 고해상도 폰이 많이 나오면서 높은 해상도를 지원하라는 의미로 받아들이고, 일단 res 디렉토리 아래에 drawable-xhdpi 를 만들고, 임시로, drawable-hdpi 의 이미지 파일을 넣어보자. 그러면....
위와 같이 해상도 크기가 다르니 어쩌고 저쩌고 한다.... 에잇 그래서 대충 뒤져보니, http://developer.android.com/guide/topics/resources/providing-resources.html 의 중간쯤을 보면, ldpi, mdpi, hdpi, xhdpi 이런 부분을 보면 3:4:6:8 의 크기로 하라는 얘기가 있다. 즉, ldpi:mdpi:hdpi:xhdpi = 3:4:6:8 로 하라는 이야기이다.
기존의 우리가 새로 만든게 xhdpi 이므로, mdpi 에 있는 아이콘 크기의 2배로 하면 되겠다. 그래서 mdpi 의 크기를 보면 기본적으로 48x48 이므로, 우리는 96x96 크기의 아이콘을 만들어서 넣어주면 되겠다.
이제 Lint 를 다시 실행시켜보면 깔끔하게 하나의 경고도 없는 것을 볼 수 있다.
아마 ADT 최신 버젼이 나오면 알아서 xhdpi 용 아이콘을 넣어주지 않을까 싶지만, 임시로 이렇게 해서 깔끔하게 Lint 사용을 시작해보자~
어느샌가(ADT r14 버젼 이 후) 이제 eclipse 의 플러그인인 ADT(Android Development Tool)만 설치하면 아래 화면과 같이 최신 SDK 를 쉽게 설치할 수 있게 되었다.
기존에는 SDK 를 직접 받아서 설치하고, ADT 를 설치해야했지만, 이제 ADT 만 설치하면 ADT 를 통해서 쉽게 SDK 도 설치가 가능해졌다. ( http://tools.android.com/recent/welcomewizard ) 참고.
이제 초보 안드로이드 개발자들은 Java -> eclipse -> ADT 만 기억하면 된다~
기존에는 SDK 를 직접 받아서 설치하고, ADT 를 설치해야했지만, 이제 ADT 만 설치하면 ADT 를 통해서 쉽게 SDK 도 설치가 가능해졌다. ( http://tools.android.com/recent/welcomewizard ) 참고.
이제 초보 안드로이드 개발자들은 Java -> eclipse -> ADT 만 기억하면 된다~
ctrl + alt + f1 을 눌러서, 콘솔창을 띄운 후, 로그인을 하고,
top 명령을 지켜보면, compiz 와 Xorg 가 1,2 순위 왔다갔다하면서 CPU 를 90% 넘게 잡아먹는게 보입니다. 조금 지나면 얘들이 사라지는데,
이 때 ctrl + alt + F7 을 눌러서 GUI 로 돌아온 후, 바탕화면에 오른쪽 클릭해서 '터미널에서 열기' 후, compiz 를 실행하면, 그나마 제대로 돌아옵니다.
일단 상황을 보니 그래픽카드와 compiz 와의 충돌로 보이는 것 같습니다. 아직 compiz 가 좀 불안한데, 이 녀석이 없으면 사용성이 좀 떨어지다보니(창을 화면의 제일 위로 이동시 전체 화면 등)... 일단 이대로 써야할듯;;
AppWidget 은 http://developer.android.com/guide/topics/appwidgets/index.html 에 있는 것처럼 꽤 쉽게 개발을 시작할 수 있다. 하지만, 직접 개발하다보면 꽤 개발이 힘든데, 바로 UI 를 설정하지 못하고, RemoteViews 를 써야한다는 점과 몇몇 UI component 는 쓸 수 없다는 점에서 그렇다.
그리고 개발 중에 계속 뭔가 이상하게 계속 broadcast receiver 가 제대로 동작하지 않아서 좀 고생했는데, 원인은 의외의 곳에 있었다. 바로 AppWidget 에서 처음에 한번 호출되는 onEnabled 함수가 제대로 호출되지 않는 것이다(이 함수 안에서 boradcast receiver 를 등록하고 있었음). 근데 이게 늘 호출안되었으면 바로 알았을건데, 개발 중에, re-install, 즉, 이미 내가 만든 AppWidget 이 떠있을 때 다시 설치(eclipse 에서는 그냥 Run As)를 하면 onEnabled 는 안 불린다는 것이다... -_-;
이미 설정되어 있는 AppWidget 을 길게 눌러서 휴지통에 버리고, 다시 AppWidget 을 Home Screen 에 넣어줘야 onEnabled 가 제대로 불린다. re-install 시에 이미 놓여진 AppWidget 을 자동으로 휴지통에 버려줬으면 당연히 다시 넣으면서 onEnabled 가 제대로 불렸을 건데 쩝... 자동으로 화면이 잘 업데이트되길래 제대로 로그 확인을 안해봐서 좀 헤맨듯 ㅠㅜ
결론 : AppWidget 개발시에는 Run As 후, appwidget 을 휴지통에 넣었다가 다시 설정해줘야 onEnabled 가 제대로 호출된다.
그리고 개발 중에 계속 뭔가 이상하게 계속 broadcast receiver 가 제대로 동작하지 않아서 좀 고생했는데, 원인은 의외의 곳에 있었다. 바로 AppWidget 에서 처음에 한번 호출되는 onEnabled 함수가 제대로 호출되지 않는 것이다(이 함수 안에서 boradcast receiver 를 등록하고 있었음). 근데 이게 늘 호출안되었으면 바로 알았을건데, 개발 중에, re-install, 즉, 이미 내가 만든 AppWidget 이 떠있을 때 다시 설치(eclipse 에서는 그냥 Run As)를 하면 onEnabled 는 안 불린다는 것이다... -_-;
이미 설정되어 있는 AppWidget 을 길게 눌러서 휴지통에 버리고, 다시 AppWidget 을 Home Screen 에 넣어줘야 onEnabled 가 제대로 불린다. re-install 시에 이미 놓여진 AppWidget 을 자동으로 휴지통에 버려줬으면 당연히 다시 넣으면서 onEnabled 가 제대로 불렸을 건데 쩝... 자동으로 화면이 잘 업데이트되길래 제대로 로그 확인을 안해봐서 좀 헤맨듯 ㅠㅜ
결론 : AppWidget 개발시에는 Run As 후, appwidget 을 휴지통에 넣었다가 다시 설정해줘야 onEnabled 가 제대로 호출된다.
eclipse marketplace 기능이 들어온지도 어느 정도 지났는데(Helios 부터 추가되었음), 각종 글들이 아직도 url 을 넣는 방식으로 설명하고 있다. 좀 아쉬운 상황.
이제는 유명한 플러그인이라면, marketplace 에서 검색해보자~
위와 같이 Help -> Eclipse Marketplace 를 클릭하자.
간단히 Find 창에 원하는 플러그인을 검색하면 바로 install 이 가능하다.
PyDev(python 개발환경), Subclipse(subversion 사용), FindBugs(Java 버그 찾기) 등은 이와 같은 방법을 통해 쉽게 설치할 수 있다.
유명한 플러그인이라면서 번거롭게 홈페이지에서 설치 url 을 찾기 위해 시간을 낭비하지 말자~!!
이제는 유명한 플러그인이라면, marketplace 에서 검색해보자~
위와 같이 Help -> Eclipse Marketplace 를 클릭하자.
간단히 Find 창에 원하는 플러그인을 검색하면 바로 install 이 가능하다.
PyDev(python 개발환경), Subclipse(subversion 사용), FindBugs(Java 버그 찾기) 등은 이와 같은 방법을 통해 쉽게 설치할 수 있다.
유명한 플러그인이라면서 번거롭게 홈페이지에서 설치 url 을 찾기 위해 시간을 낭비하지 말자~!!
하드디스크를 정리하다가, 문득 못보던 아이콘이 있어서 확인해보니, 정말 소소하지만 사용자 편의를 도와주는 기능을 발견했다.
시간이 오래 걸리는 복사/이동 등의 명령을 내려놓으면, 언제 끝나나, 다 끝났나 하는 마음으로 한번씩 창을 뒤져서 저 창을 보거나, 늘 보이는 위치에 저 창을 위치 시켜놓는데, 이런 아이콘을 하나 보여주고, 창을 앞으로 옮겨주도록 해놓아서 꽤 편리하게 사용할 수 있었다.
리눅스로 데스크탑 환경을 옮기면서 꽤 마음에 드는 기능~~
바로 위의 화살표인데, 아래와 같이 파일 동작(복사, 이동 등) 중이면 위의 아이콘이 생긴다. 그리고 이 아이콘을 클릭하면 복사 대화창 보이기라는 명령을 내릴 수 있는데, 이 명령을 내리면, 아래의 창이 다른 창에 가려 안 보이더라도 앞으로 보여준다.
시간이 오래 걸리는 복사/이동 등의 명령을 내려놓으면, 언제 끝나나, 다 끝났나 하는 마음으로 한번씩 창을 뒤져서 저 창을 보거나, 늘 보이는 위치에 저 창을 위치 시켜놓는데, 이런 아이콘을 하나 보여주고, 창을 앞으로 옮겨주도록 해놓아서 꽤 편리하게 사용할 수 있었다.
리눅스로 데스크탑 환경을 옮기면서 꽤 마음에 드는 기능~~
2011/08/16 21:47
ubuntu linux 에서 subclipse 로 ntfs 에 있는 repository 로 svn 사용시 chmod error ( chmod error when using ubuntu linux and subclipse on ntfs repository)
2011/08/16 21:47 in 개발관련

우분투 리눅스에서 eclise & subclipse 로 svn(subversion) 사용시 commit 시에 chmod 를 할 수 없다면서 에러를 낼 경우에는 다음과 같이 SVN interface Client 를 바꾸면 해결이 된다. 만약 Client 에 SVNKit 이 없다면, subclipse 설치시에 SVNKit 모듈을 설치했는지 확인하자.
If you face a error related chmod when using subclipse on ntfs repository, try to change SVN interface Client to SVNKit. If there is no SVNKit, please check installed module of subclipse. :)
If you face a error related chmod when using subclipse on ntfs repository, try to change SVN interface Client to SVNKit. If there is no SVNKit, please check installed module of subclipse. :)
indigo 의 cdt 부터는 toolchain 에 Microsoft Visual C++ 설정이 포함되어 있다. 그런데 이 설정이 path 가 제대로 설정되지 않아 제대로 컴파일이 되지 않는다(incubation tool 인듯.. 아마 sr1 쯤 나오면 수정될지도?).
여튼, 빌드 시에 다음과 같은 에러를 낸다면,
메뉴의 Project -> Properties 에 가서, C/C++ Build -> Environment 중에서 INCLUDE, LIB 항목을 살펴보자.
만약 VC++ 98, VC++ 2010 등 여러 툴이 깔렸다면, INCLUDE, LIB 를 그 중에서 하나만 참조되도록 맞춰주자. 즉, 경로를 VC++ 2010 만 참조하도록 수정.
예를 들어 경로에 C:\Program Files\VC98;C:\Program Files\VC2010 이렇게 98과 2010 이 섞여있다면, VC98 관련은 제거하자.
이렇게 수정한 후에 다음과 같은 에러가 난다면,
LIB 경로에 다음 경로(디렉토리명은 자신의 환경에 따라 다를 수 있음)를 추가(!)해보자.
결론은, 경로 설정을 잘하자. ^^/
ps : eclipse cdt 가 이제 Microsoft Visual Studio toolchain 을 제공해준다. 좋구나 -_-/
여튼, 빌드 시에 다음과 같은 에러를 낸다면,
MSVCRT.lib(crtexe.obj) : error LNK2019: unresolved external symbol __imp__HeapSetInformation@16 referenced in function ___tmainCRTStartupMSVCRT.lib(crtexe.obj) : error LNK2019: unresolved external symbol __imp__EncodePointer@4 referenced in function _pre_c_initMSVCRT.lib(atonexit.obj) : error LNK2001: unresolved external symbol __imp__EncodePointer@4MSVCRT.lib(atonexit.obj) : error LNK2019: unresolved external symbol __imp__DecodePointer@4 referenced in function __onexit
메뉴의 Project -> Properties 에 가서, C/C++ Build -> Environment 중에서 INCLUDE, LIB 항목을 살펴보자.
만약 VC++ 98, VC++ 2010 등 여러 툴이 깔렸다면, INCLUDE, LIB 를 그 중에서 하나만 참조되도록 맞춰주자. 즉, 경로를 VC++ 2010 만 참조하도록 수정.
예를 들어 경로에 C:\Program Files\VC98;C:\Program Files\VC2010 이렇게 98과 2010 이 섞여있다면, VC98 관련은 제거하자.
이렇게 수정한 후에 다음과 같은 에러가 난다면,
LINK : fatal error LNK1104: cannot open file 'kernel32.lib'
LIB 경로에 다음 경로(디렉토리명은 자신의 환경에 따라 다를 수 있음)를 추가(!)해보자.
C:\Program Files\Microsoft SDKs\Windows\v7.0A\Lib
결론은, 경로 설정을 잘하자. ^^/
ps : eclipse cdt 가 이제 Microsoft Visual Studio toolchain 을 제공해준다. 좋구나 -_-/
-
김도형 2011/11/09 14:49
CDT VC++ 지원에서 전 include path에 공백 들어가니까 컴파일 자체가 안되고 "..."로 감쌀 수도 없고 그래서 make로 갔더니 Makefile 자동 생성 쪽도 뭔가 문제가 있고 해서 makefile 직접 만들까 하다가 그냥 MinGW로 갔습니다. 별 문제 없으셨는지요?
-
zelon 2011/11/17 13:12
네. 저는 위와 같은 방법으로 했을 때 별다른 문제가 없었습니다. 근데 일반적으로 VC 가 Program Files 라는, 공백이 있는 경로에 설치될건데, 공백문제가 있다니 좀 의아하긴 하네요.
다음에 다시 해볼때 관련 문제가 생기는지 확인해봐야겠네요.
-
Java 는 학교 때 배우고, 틈틈이 혼자 보기도 해서 어느 정도 안다고 생각했는데.. 아래의 내용들을 이 책에서 얻을 수 있었다.
break [label], continue [label] 기능이 있다. 중첩 loop 을 한번에 벗어난다는!!!
UI thread 의 우선순위가 background thread 보다 높아야 좋다. UI thread 는 어차피 wait 상태일 것이기 때문에, 우선순위가 background thread 보다 높아도 큰 상관이 없으며, 빠른 반응 속도를 보장할 수 있다!! 아.. thread 의 우선순위가 이렇게 와닿는 거였구나... 난 여태 thread 를 대부분 server programming 하면서만 써서 이런 의미를 부여할 수 있는 줄 몰랐음;;
break [label], continue [label] 기능이 있다. 중첩 loop 을 한번에 벗어난다는!!!
UI thread 의 우선순위가 background thread 보다 높아야 좋다. UI thread 는 어차피 wait 상태일 것이기 때문에, 우선순위가 background thread 보다 높아도 큰 상관이 없으며, 빠른 반응 속도를 보장할 수 있다!! 아.. thread 의 우선순위가 이렇게 와닿는 거였구나... 난 여태 thread 를 대부분 server programming 하면서만 써서 이런 의미를 부여할 수 있는 줄 몰랐음;;
Prev
Rss Feed