AppWidget 은 http://developer.android.com/guide/topics/appwidgets/index.html 에 있는 것처럼 꽤 쉽게 개발을 시작할 수 있다. 하지만, 직접 개발하다보면 꽤 개발이 힘든데, 바로 UI 를 설정하지 못하고, RemoteViews 를 써야한다는 점과 몇몇 UI component 는 쓸 수 없다는 점에서 그렇다. 그리고 개발 중에 계속 뭔가 이상하게 계속 broadcast receiver 가 제대로 동작하지 않아서 좀 고생했는데, 원인은 의외의 곳에 있었다. 바로 AppWidget 에서 처음에 한번 호출되는 onEnabled 함수가 제대로 호출되지 않는 것이다(이 함수 안에서 boradcast receiver 를 등록하고 있었음). 근데 이게 늘 호출..
eclipse marketplace 기능이 들어온지도 어느 정도 지났는데(Helios 부터 추가되었음), 각종 글들이 아직도 url 을 넣는 방식으로 설명하고 있다. 좀 아쉬운 상황. 이제는 유명한 플러그인이라면, marketplace 에서 검색해보자~ 위와 같이 Help -> Eclipse Marketplace 를 클릭하자. 간단히 Find 창에 원하는 플러그인을 검색하면 바로 install 이 가능하다. PyDev(python 개발환경), Subclipse(subversion 사용), FindBugs(Java 버그 찾기) 등은 이와 같은 방법을 통해 쉽게 설치할 수 있다. 유명한 플러그인이라면서 번거롭게 홈페이지에서 설치 url 을 찾기 위해 시간을 낭비하지 말자~!!
하드디스크를 정리하다가, 문득 못보던 아이콘이 있어서 확인해보니, 정말 소소하지만 사용자 편의를 도와주는 기능을 발견했다. 바로 위의 화살표인데, 아래와 같이 파일 동작(복사, 이동 등) 중이면 위의 아이콘이 생긴다. 그리고 이 아이콘을 클릭하면 복사 대화창 보이기라는 명령을 내릴 수 있는데, 이 명령을 내리면, 아래의 창이 다른 창에 가려 안 보이더라도 앞으로 보여준다. 시간이 오래 걸리는 복사/이동 등의 명령을 내려놓으면, 언제 끝나나, 다 끝났나 하는 마음으로 한번씩 창을 뒤져서 저 창을 보거나, 늘 보이는 위치에 저 창을 위치 시켜놓는데, 이런 아이콘을 하나 보여주고, 창을 앞으로 옮겨주도록 해놓아서 꽤 편리하게 사용할 수 있었다. 리눅스로 데스크탑 환경을 옮기면서 꽤 마음에 드는 기능~~
우분투 리눅스에서 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. :)
indigo 의 cdt 부터는 toolchain 에 Microsoft Visual C++ 설정이 포함되어 있다. 그런데 이 설정이 path 가 제대로 설정되지 않아 제대로 컴파일이 되지 않는다(incubation tool 인듯.. 아마 sr1 쯤 나오면 수정될지도?). 여튼, 빌드 시에 다음과 같은 에러를 낸다면, MSVCRT.lib(crtexe.obj) : error LNK2019: unresolved external symbol __imp__HeapSetInformation@16 referenced in function ___tmainCRTStartup MSVCRT.lib(crtexe.obj) : error LNK2019: unresolved external symbol __imp__EncodePoi..
Java 는 학교 때 배우고, 틈틈이 혼자 보기도 해서 어느 정도 안다고 생각했는데.. 아래의 내용들을 이 책에서 얻을 수 있었다. break [label], continue [label] 기능이 있다. 중첩 loop 을 한번에 벗어난다는!!! UI thread 의 우선순위가 background thread 보다 높아야 좋다. UI thread 는 어차피 wait 상태일 것이기 때문에, 우선순위가 background thread 보다 높아도 큰 상관이 없으며, 빠른 반응 속도를 보장할 수 있다!! 아.. thread 의 우선순위가 이렇게 와닿는 거였구나... 난 여태 thread 를 대부분 server programming 하면서만 써서 이런 의미를 부여할 수 있는 줄 몰랐음;;
드디어, hello world 를 제외하고 왠만큼 동작하는 안드로이드 프로그램을 완성했다. 역시 직접 폰을 가지고 만지면서 만들어봐야 하는 것 같다 ㅋ 만들어진 코드를 보면 꽤나 짧지만 과정이 아직은 낯설고, xml 컴파일 에러와 런타임 에러가 좀 힘든듯 -_-; 그래도 소스가 공개되어 있어서, 그 코드를 찾아보는게 꽤 재미있었고, 아무래도 내가 쓸 프로그램이니까 왠지 모를 뿌듯함이 좋다~~~ 아직 소소한(......) 버그가 있긴 하지만, 조금만 더 손 보면 될 거 같다....라고 믿는 중 ㅋ 이거 만들면서 경험해본 것들은, - Content Resolver - Content Observer - 외부의 activity 시작시키기 - AppWidget 만들기 - Android Test Project - ..
안드로이드 프로그래밍 중 AppWidget 관련 프로그래밍을 하다가, 치명적인 오류가 한번 발생하면, 이상하게도 process is bad 라는 오류를 내면서 제대로 broadcast 를 받지 못하는 상황이 생긴다. 내 경우에는 unregisterContentObserver() 를 하다가 null pointer exception 으로 죽은 후에 이 상황이 계속 발생하는데, 검색해보니 다음과 같은 방법 밖에 해결책이 없는 듯 하다 -_-; - 개발중인 해당 프로그램 제거 - 폰 리부팅 음... 일단 이렇게 하면 잘되긴 하는데... 추후 세부 내용을 알게되면 업데이트 해야 할 듯...
빠르게 따라하기: 패키지에 대고, New -> JUnit Test Case 한 다음에, 클래스를 하나 적당히 생성.(JUnit4 build path 가 없다는 대화상자가 나오면 'Perform the following action: Add JUnit 4 library to the build path' 를 선택하고 OK 생성된 클래스를 'junit.framework.TestCase' 클래스를 상속 받도록 수정. 생성된 클래스에 public void 이며, 함수 이름이 test 로 시작하는 함수를 만듦. assertEquals() 함수들을 이용하여 적절한 테스트 케이스를 입력. 해당 프로젝트를 Run as -> JUnit Test 로 실행. 소스는 아래와 같음. package com.wimy.java.tes..
정말 오랜만에 정말 와닿는(!) 글을 읽었다 - [아는 것과 실행하는 것] '지금은 그럴 여유가 없다', '그럴 시간이 없다' 이러고만 있지는 않은지... 정말 시간이 있을 때 코드를 정리하고, 운동을 하는지 뒤돌아보자. 앞의 말들은 핑계일 뿐이지 않은가... 댓글 중에 정말 금쪽같은 말을 인용해본다. Jake : 소프트웨어 공학을 꼭 도입해야만 제대로 된 소프트웨어를 만드는 것은 아니겠지요. 그리고 제대로 된 소프트웨어만이 성공한다는 보장도 없고요. 그래서 전 이렇게 비유를 합니다. 축구에서 포지션도 없고 전술도 없어도 골을 넣을 수 있습니다. 멋있게 넣어도 한골이고 문전 앞에서 밀어 넣어도 한골이죠. 하지만 선수 특징에 맞는 포지션과 잘 훈련된 전술을 구사를 하면 멋있는 골을 넣을 수 있는 가능성이 ..
- Total
- Today
- Yesterday