2010년 1월 21일 목요일

Android 에서 Handler와 Message 란?

Android(안드로이드) 개발시 사용되는 Handler(핸들러)와 통신에 사용되는 Message(메시지)에 대해서 알아보자.

 

핸들러란?

 

안드로이드의 시스템은 사용자가 작성한 UI에서 빠른 응답을 요구하고 있다.

만약 5초 이상의 응당이 없을 경우 최악의 경우 작성된 프로그램이 강제로 종료가 되는 경우도 발생할 수 있다.

이런 상황을 방지하기 위해서 시간이 오래걸리는 작업이 필요한 경우 두가지의 방법으로 해결을 할 수 있다.

첫번째는 시간이 오래걸리는 작업은 서비스로 만들어서 처리하는 방법

두번째는 새로운 쓰레드로 처리를 하는 방법

 

두번째 방법으로 쓰레드를 생성해서 데이터 처리등의 시간이 오래걸리는 작업을 지원하기 위한 클래스가 존재하는데 그것이 핸들러(Handdler)이다.

 

간략하게 요약을 해보면

  • 백그라운드 쓰레드 생성을 위한 가장 유연한 방법이다.
  • 인스턴스 생성시 자동으로 안드로이드가 실행 관리한다.
  • 메시지를 전달받게 되면 호출 되는 handlerMessage()에 실제 처리내용을 구현한다.
  • post(), postDelayed()를 통해서 인자로 실행하고 자하는 Runnable객체를 전달할 수 있다.
  • View단에도 Runnable객처를 인자로 전달가능하고 이럴경우 코드가 심플해지는 경우도 있을수 있지만 Handler를 추천한다.

 

 

메시지(Message)란?

 

UI등에서 실제로 처리를 담당하는 쓰레드로 데이터를 전송하거나 작업을 요청하기 위해서 전달하는 객체이다.

 

  • 핸들러로 전달되는 객체이다.
  • 전달된 메시지는 메시지 Queue를 통해서 핸들러가 가져다 사용한다.
  • 메시지를 전달하기 위해선 핸들러의 obtainMessage()호출해서 메시지 풀의 메시지를 획득해서 전달해야한다.
  • 메시지를 전달하기 위해서는 sendMessage() 등을 사용한다.

 

메시지 전달 방식의 종류

  • sendMessage() - 큐의 마지막에 메시지를 삽입한다.
  • sendMessageAtFrontQueue() - 큐의 맨앞에 메시지를 삽입한다.(우선처리)
  • sendMessageAtTime() - 장비기동시간을 기준으로 삽입한다.(SystemClock.uptimeMillis()참고)
  • sendMessageDelayed() - 특정시간만큼 지연 삽입한다.

 

 

2010년 1월 20일 수요일

TOW(Track On Windows) 사용하기 - 설치

개요

 

프로젝트를 관리하기 위한 툴들은 많이 존재한다.

그중 무료소프트웨어로 Track가 있는데 이 프로그램의 설치가 만만치 않다.

하지만! 국내 개발자가 원샷으로 설치가 가능하게 패키징해서 배포하고 있다.

바로 TOW(Trac On Windows)라는 패키지로 요기(http://trac.tistory.com/)에서 확인할 수 있다.

 

공식 블로그 : http://trac.tistory.com/

 

이제 설치해보도록 하자

 

설치하기

 

1. 다운로드

   TOW 0.2.2.a - http://sourceforge.net/project/showfiles.php?group_id=192688&package_id=254120&release_id=579291

   위의 링크에서 Standard-ko버전을 다운받도록 하자

 

2. 설치

  기본적으로 TOW는 C드라이브에서 작동되도록 설정되어 있으나

  필자는 C드라이브에 개발 프로그램 설치를 하지 않으므로 D드라이브에 저장한다.

 

  a. 다운받은 파일을 D드라이브의 압축을 풀어준다.(D:\TOW)

 

  b. TOW폴더에서 set-tow.bat파일을 열어서 아래와 같이 수정한다.

  

set TOW_HOME=D:\TOW

 


  c. 아파치의 설정 변경을 한다.

  

D:\TOW\Apache\conf\httpd.conf 파일을 연다.
"C:/TOW" 를 "D:/TOW" 로 치환한다. (16개 항목이 치환된다.)
저장한다.

 

 

  d. 아파치의 포트를 변경한다.(Option)

      TOW는 기본적으로 80포트를 사용하나 필자의 경우 8080포트는 이미 사용중이므로 8000포트로 변경한다.

      (포트8080을 쓰려는 유저는 이번 항목은 무시한다.)

 

D:\TOW\Apache\conf\httpd.conf 파일을 연다.
"Listen 8080"  부분을 "Listen 8000" 으로 변경한다. (53Line)
"ServerName tow.localhost:8080"  부분을 "ServerName tow.localhost:8000" 으로 변경한다.(142Line)
저장한다.

 

  e. 기본 템플릿 파일을 변경한다.

 

D:\TOW\Setup\TracRepo\Projects\HelloTOW\conf\ 폴더의 *.tpl 파일을 연다.(4개파일)

"C:\TOW" 를 "D:\TOW" 로 치환한다. (2개파일 2개 항목)
"C:\\TOW" 를 "D:\\TOW" 로 치환한다.(4개파일 8개 항목)

 

 

  f. Repository 경로를 변경한다.

 

D:\TOW\create-svn-repo.bat 파일을 연다.
"C:/TOW" 를 "D:/TOW"로 치환한다.(1개항목)
저장한다.

 

 

  g. Python 경로를 변경한다.

      이부분은 무시하도록 하자. Python의 경로 변경이 정상적으로 되지 않는다.

     추후 변경 방법이 생기면 보충하도록 하겠다.

      경로 변경은 레지스트리를 손대야 하므로 아래 2개의 레지스트리 파일을 만들어서 수정한다.

      (레지스트리 파일은 첨부파일 참고)

      PortablePython.reg

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Python]
[HKEY_CURRENT_USER\Software\Python\PythonCore]
[HKEY_CURRENT_USER\Software\Python\PythonCore\2.5]
[HKEY_CURRENT_USER\Software\Python\PythonCore\2.5\InstallPath]
@="D:\\TOW\\Python"
[HKEY_CURRENT_USER\Software\Python\PythonCore\2.5\InstallPath\InstallGroup]
@="Python 2.5"
[HKEY_CURRENT_USER\Software\Python\PythonCore\2.5\Modules]
[HKEY_CURRENT_USER\Software\Python\PythonCore\2.5\PythonPath]
@="D:\\TOW\\Python\\Lib;D:\\TOW\\Python\\DLLs;D:\\TOW\\Python\\Lib\\lib-tk"

 

      PortablePythonHome.reg

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment]
"PYTHONHOME"="D:\\TOW\\Python"

 

 

  g. Python폴더 위치 이동

 

D:\TOW\Python 폴더를 C:\TOW\Python 으로 이동한다.

 


  h. D:\TOW의 start-tow.bat 를 실행한다.

 

 

  i. 브라우저를 열고 http://localhost:8000/projects 를 열면 HelloTOW의 기본 프로젝트 페이지가 있으면 된다

 

 

 

3. 서비스 등록

  부팅후 서비스를 등록해서 처리해야 하나 필자는 서비스 등록이 귀찮아 패스한다.

  관련 링크는 아래와 같다.

 

이상으로 설치에 관련된 내용을 마치며

다음 번에는 기본적으로 사용할 프로젝트의 대한 설정을 해보도록 하겠다.

 

2010년 1월 11일 월요일

틀리기 쉬운 한글 맞춤법

잊기 쉬운 / 틀리기 쉬움 맞춤법

  1.  모음이나 ㄴ받침 뒤에 이어지는 렬/율 은 열/율로 표기한다.
    • 백분율, 투표율, 규율 /  합격률, 성장률, 확률
    • 나열, 분열 / 작렬
  2. 않/안의 구분
    • 않 - '아니하다'의 준말
    • 안 - '아니다'의 준말
      • 좋지 않다 / 안 좋다
  3. 어떻게 / 어떡해의 구분
    • 어떻게 -  방법
    • 어떡해 -  어떻게 해의 준말
      • 어떻게 먹니?  / 어떻게 해야할지 모르겠다
      • 힘들어서 어떡해 ( = 힘들어서 어떻게 해)
      • 나 어떡해 ( = 나 어떻게 해)
      • 어떻하지? / 어떻해

 

 

 

 

2010년 1월 6일 수요일

2010년 독서 목록(15권)

롱테일 법칙/스가야 요시히로/재인 - ★☆☆☆☆

 

동급생/히가시노 게이고/창해 - ★★☆☆☆

  평 : 역시 초창기의 작품이라 그런지 근래의 작품과는 다르게 특유의 날카로움이 적게 나타난다. 어떻게 보면 연결이 된 사건들이지만 치밀하지 못한 억지의 느낌을 지울 수가 없다.

 

개를 훔치는 완벽한 방법/바바라 오코너/다산책방 - ★★☆☆☆

  평 : 발상은 좋은 느낌이었다. 이기심과 순수한 어린소녀의 내면을 잘 표현했다. 하지만 청소년추천 도서 답게 너무 뻔한 등장인물과 다소 심심한 결말이 아쉽다.

 

  마음속 어디에선가 양심이라는 게 나타나 '안 돼, 나쁜 짓이야'라고 자꾸만 속삭였지만, 나는 그것 역시 마음 안쪽 깊숙한 곳에 밀어 넣어버렸다.

 

  떄론 살아갈날보다 살아온 날들의 발자취가 더 중요한 법이야. 내게 돈이 필요한 것보다 세상이 내 힘이 필요로 할 때가 더 많으니까

 

 

개밥바라기별/황석영/문학동네 - ★★☆☆☆

  평 : 아버지 세대의 풍경을 느낄 수 있게 하는 문체와 50년대의 흑백 풍경 사진을 떠오르게 하는 내용이었다. 또한 세대간의 차이를 느낄 수 있게 하는 책이었다. 내가 잘 모르던 그시절의 풍경과 느낌, 문제가 색달랐다. 그리고 그 세대들 또한 나름대로의 젊음과 방황을 가지고 삶을 살아온 것을 보면 묘한 동질감을 느꼈다. 하지만 작가가 전달하고자 하는 의미를 쉽게 이해하지 못한건 나의 문학적 소양이 부족하기 때문일까?

 

  뭣 땜에 살아야 하는지 모르겠어. 그냥 온 세계가 무심해. 나만 빼놓고 저희끼리 굴러가.

 

  어디에서나 기억은 거기 있는 사람과 함께 남는다.

 

  목마르고 굶주린자의 식사처럼 맛있고 매순간이 소중한 그런 삶은 어디에 있는가

 

  사람은 씨팔...... 누구든지 오늘을 사는거야

 

  고해 같은 세상살이도 오롯이 자기의 것이며 남에게 줄 수 없다는 것이다.

 

  잘 나갈 때는 샛별, 저렇게 우리처럼 쏠리고 몰릴 때면 개밥바라기.

 

모방범1,2,3/미야베 미유키/문학동네 ..ing

  평 : 너무 두껍고 길다. 비정상적인 환경 속에서 불안한 정서를 가진 자들의 사회. 그런 모습속을 보면서 삼류드라마에 몰입해서 느끼는 분노를 느낀다. 그런 분노를 느끼는 나  또한 불안한 면을 가지고 있을 지도 모른다. 모방범! 창의력대장이 되고 싶은가?

 

오 해피데이/오쿠다 히데오/재인 - ★★★☆☆

  평 : 무료하고 따분하다고 생각되는 일상생활속에서 찾을 수 있는 소소한 즐거움을 다시 한번 생각해볼 수 있었다.

 

걸/오쿠다 히데오/북스토리 - ★★★☆☆

  평 : 여자들이 겪을 수 있는 이야기들을 단편식으로 엮어 놓았다. 특정한 사건에 대한 여자의 입장에서 여자의 속마음을 기술한 방식이 독특했던.. 하지만 난 남자라 공감은 그닥 가지 않았다.

 

은행원 니시키의 행방/이케이도 준/media2.0 - ★★★☆☆

  평 : 승진과 진급에 매달리는 은행원의 애환을 통해서 조직 사회의 무서운 일면이 잘 드러난다

 

모든 게 다 우울한 밤에/나카무라 후미노리/이룸 - ★☆☆☆☆

  평 : 우울하다

 

개미 1,2,3 /베르나르 베르베르/열린책들 - ★★★★☆

  평 : 초반의 굉장한 흡입력. 아직 다 읽지 않았지만...

 

1Q84 1,2/3 무라카미 하루키/문학동네 - ★★★★☆

  평 : 이어지지 않는 인연이 과연 공기번데기를 통해서 이어질까? 아니면 슬픈 기억으로 남을것인가? 아니 그 인연의 공간조차 다 꿈인건가?

 

2009년 12월 31일 목요일

에뮬레이터(Emulator) 기동시 AVD 에러 해결방법

안드로이드(Android) SDK를 설치하고 에뮬레이터를 기동시에

아래와 같은 에러가 나타나는 경우가 있다.

 

emulator: ERROR: unknown virtual device name: 'Test-AVD'
emulator: could not find virtual device named 'Test-AVD'


 

위와 같은 문제는 에뮬레이터와 안드로이드 툴킷의 설정 문제이다.

 

위와 같은 상황일때에는 Win+R 을 눌러서 Cmd명령을 입력해서

커맨드 창을 열고

echo %USERPROFILE% 를 입력해서 출력되는 내용을 보면

필자는 아래와 같이 C드라이브로 설정되어 있고

 

실제로 사용하고 있는 유저의 프로파일 경로는 아래와 같이 E드라이브를 사용하고 있다.

 

에뮬레이터는 C로 만들어진 어플리케이션으로 %USERPROFILE%를 참고해서 AVD를 찾고

안드로이드툴은 Java로 만들어진 어플리케이션으로 실제 사용중인 프로파일 경로의 .android

폴더를  참조하게 된다. 이러한 차이로 AVD를 찾지 못하는 것이다.

 

이것을 해결하기 위한 방법은 여러가지로 제시가 되고 있지만 최고의 방법은

 

아래와 같이 환경변수에 ANDROID_SDK_HOME을 설정하는 것이다.

 

위와 같은 설정을 하게 되면 .android폴더가 지정한 경로의 하위 폴더로 설정되어 AVD들이

동일한 곳에 저장되어 툴킷과 에뮬레이터가 같은 곳을 참조하게 되므로

문제를 해결할 수 있다.

 

2009년 12월 15일 화요일

Miki - Happy Ending 뮤직비디오

서핑을하다가 노래가 궁금해서 찾아봤네요.

 

Mika라는 가수의 Life in CartoonMotion이라는 앨범의  HappyEnding이네요

 

 

This is the way you left me
당신은 이런 식으로 날 떠났어요
I'm not pretending
난 그런 척 하지 않아요
No hope, No love, No glory
희망도 없고, 사랑도 없고, 영광도 없고
No happy ending
행복한 결말도 없어요

This is the way that we love
우리는 이런 식으로 사랑을 해요
Like it's forever
마치 영원한 것처럼
Then live the rest of our life
그리고 우리 여생을 살아가요
Both not together
둘이 함께가 아니라
 
Wake up in the morning
아침에 일어나서
Stumble on my life
내 삶에 괴로워해요
Can't get no love without sacrifice
희생없이 어떤 사랑도 얻을 수 없어요
If anything should happen
무슨 일이든 일어나야 한다면
I guess i wish you well
난 당신이 잘 되길 바래요
Mmm, a little bit of heaven
음, 조금은 천국이지만
But a little bit of hell
조금은 지옥같군요
 
This is the hardest story
이건 가장 힘든 이야기네요
That i have ever told
내가 이제까지 말해왔던
No hope, or love, or glory
희망도, 사랑도 영광도 없고
Happy endings gone forever more
행복한 결말은 영원히 사라져 버렸어요
 
Ah, i feel as if i'm wasting
아, 마치 시간낭비 하며
And i waste every day
매일을 허비하는 것 같아요
 
This is the way you left me
당신은 이런 식으로 날 떠났어요
I'm not pretending
난 그런 척 하지 않아요
No hope, No love, No glory
희망도 없고, 사랑도 없고, 영광도 없고
No happy ending
행복한 결말도 없어요
 
This is the way that we love
우리는 이런 식으로 사랑을 해요
Like it's forever
마치 영원한 것처럼
Then live the rest of our life
그리고 우리 여생을 살아가요
Both not together
둘이 함께가 아니라
Too blck in the morning
아침엔 너무 암담해요
Someone's on my mind
누군가 내 마음속에 자리잡고 있어요
Can't get no rest
쉴수가 없어요
Keep walking around
근처를 두리번거리고 있어요
If i pretend that nothing ever went wrong
만일 아무것도 잘못되지 않은 척 한다면
 
I can get to my sleep, I can dream now and just carry on?
난 지금 잠들 수 있고, 꿈꿀 수 있으며 삶을 지속할 수 있을까요?
This is the hardest story
이건 가장 힘든 이야기네요
 
That i have ever told
내가 이제까지 말해왔던
No hope, or love, or glory
희망도, 사랑도 영광도 없고
Happy endings gone forever more
행복한 결말은 영원히 사라져 버렸어요
Ah, i feel as if i'm wasting
아, 마치 시간낭비 하며
And i waste every day
매일을 허비하는 것 같아요
 
A little bit of love
작은 사랑을
Little bit of love
작은 사랑이라도
Ah, i feel as if i'm wasting
아, 마치 시간낭비 하며
And i waste every day
매일을 허비하는 것 같아요
Hey, hey, hey
 
*This is the way you left me
당신은 이런 식으로 날 떠났어요
I'm not pretending
난 그런 척 하지 않아요
No hope, No love, No glory
희망도 없고, 사랑도 없고, 영광도 없고
No happy ending
행복한 결말도 없어요
This is the way that we love
우리는 이런 식으로 사랑을 해요
Like it's forever
마치 영원한 것처럼
Then live the rest of our life
그리고 우리 여생을 살아가요
Both not together
둘이 함께가 아니라

This is the way you left me
당신은 이런 식으로 날 떠났어요
I'm not pretending
난 그런 척 하지 않아요
No hope, No love, No glory
희망도 없고, 사랑도 없고, 영광도 없고
No happy ending
행복한 결말도 없어요

2009년 12월 3일 목요일

죽은 왕녀를 위한 파반느

죽은 왕녀를 위한 파반느 중에서
두사람의 대화를 볼 때마다 마음이 아련해진다.
그런 느낌을 담아서 적어 본다.
단, 책 내용이 들어날 수 있으니 책을 보실 분은 보지 않는 것을 추천한다.

라스 메니나스(Las Meninas)

있을... 까?
있을... 거라고

올줄몰랐어요.
하지만... 기다렸잖아.


실은... 안 올지도 모른다 생각했어요.
너무 보고 싶었어,

미안해요

괜찮...아요?
아무렇지 않아.

눈이 그쳤어요,
눈이 그쳤군,

부끄러웠던 적이
알아요.
눈을 감으세요.

들어볼까

마음에 드세요?

안아줘요.

춥지 않아?
후회하지

그녀를 사랑하고, 사랑했었다.


무비스타

죽지 마.


내가 처음 당신의 얼굴을 보았을 때

해볼까... 싶어,
하긴 오늘 특별하다, 싶을 정도로 못생긴 애를 보긴했어.



켄터키 치킨

네...

무겁네요.
아, 네...
잠깐만요. 잠시 쉬었다 가죠.



루씨, 인 더 스카이 위드 다이아몬드

아뇨.
아, 네.
고마웠어요.

저랑 친구 하지 않을래요?

맥주 드시겠어요?
네,
아니, 아니에요.

위하여!
위하여!

형이 뭐라 한 거예요?
아니, 아니에요.

아니, 아니에요.
그떄도... 또 지금도.
아... 뭘요.

형도 성공작이에요.



겨울, 나무에 걸린 오렌지 해

안녕하세요?
아... 안녕하세요.
아니,아니에요.

아니, 아니에요.아, 예.
괜찮은 게... 아니잖아요.

재밌지 않았어요?
재밌었어요.
거기로 가요.

춥지 않아요?
아니, 괜찮아요.
이제 어디로 갈까요?
좋아요,
그냥 걸어요,

사람이 너무 많아요,
미안해요.
나... 때문에.

너무 못생겼어요.
알아요.

아니, 아니에요.

여보세요?
아, 저예요...
전화를 걸고 싶었어요.

전화를 걸고 싶었어요.



딸기밭이여, 영원하리

힘들게 이런 걸 왜 짰어요?
뜨개질을 잘 못해서... 그래도 목도리는 제일 쉬운 거예요

고마워요,
1월12일이야.
메리 크리스마스야

그래도 좋아요.
나도 그래

왜 웃어?
그러니까... 샴푸냄새가 참 좋아요. 아까부터...
아름다워요,

요.
괜찮아요,
알겠어,

그러니까
괜찮아 얘기해
부끄럽지 않았나요?

납득
진심으로

메리 크리스마스야.

이상하게

삶이란 뭘까요?

여보세요.
그렇군요,
괜찮을... 거에요,

저도 여태 <숭어>로 알고 있었어요...

잘 자.
잘자요.


달의 편지

그래도 다행이에요.
이상해,
그럼... 어쩌지?

아니, 아무것도 아니야.
아니, 아니에요...


바람만이 아는 대답

잘 지내고 있어
요한도 잘 지내고 있어,

잘 지내고 있어
저도 잘 지내고 있어요,
나도 잘 지내고 있어...

정말 잘 지내고 있는 거야?
실은 나도...
잘 지내지 못해.


어떤, 해후(邂逅)

있을까?

좋은데
고마워요,

안녕...
나 이렇게... 잘 지내고 있어.

그런 사소한 말들

외로웠어요.
또다시...
또다시 어렇게 헤어지진 말아요.

해피엔딩

괜찮아요...
괜찮아.

독일어는 배우기 어려워?
쉬워요.

Writer's cut
그와 그녀, 그리고 요한의 또 다른 이야기

요한의 이야기

아니, 아니에요


그녀의 이야기

잘 지내시나요?
사는 게
사랑하고 있습니다.
당신을 사랑합니다.


그리고, 그의 이야기

행복한 웃음이야.
사랑해요,
사랑해.