2009년 12월 27일

아바타를 눌러버릴 듯한 기세의 액션 블록 버스터 신작! "비정한 부녀지간" 1편, 2편 동시 개봉!!!

주연: 박연우(34개월)
감독: 박준철
심의등급: 9금 (다소 잔인)









감독 코멘터리
기획, 시나리오, 촬영 모두 순식간에 벌어졌습니다.
연우가 갑자기 엄마 iPhone을 들고 오더니 저한테 총을 막 쏘는 것입니다
그래서 즉흥적으로 제 iPhone 으로 한번 찍어봤어요.
인디 영화 감독으로 전격 데뷔하는 순간입니다.
연우가 시킨대로 잘 하더군요 ㅎㅎ
찍고나니 다소 비정한 느낌이 들어서 제목을 "비정한 부녀지간"으로 정했습니다.
아이한테 다소 교육적이지 않은것 같네요.
심의 등급은 자체적으로 9금으로 정했습니다.
관람객 여러분의 많은 사랑 부탁드립니다~
넙죽 ~(_ _)~

2009년 10월 12일

밀린 블로그 정리 - Twobody

유럽 여행 갔다와서 사진을 정리하기 위해 만든 프로그램입니다.
이름하야 투바디! http://code.google.com/p/twobody/

맞습니다... 투바디... 남자들의 로망인 투바디...
두개의 바디를 가지고 여행을 갔다왔는데...
두개의 바디가 시간이 12시간 3분 차이가 나는 바람에... TT
2000장 넘게 찍어온 사진을 정리하는데 쓰고자 만든 프로그램 입니다.
캐논 500D 를 새로 사자마자 바디시간 설정을 하는데 오후 12시로 맞춘다는 것을 오전 12시로 맞추고 유럽 여행을 다녀오는 바람에 펜탁스로 찍은 사진들과 같이 볼때 시간이 틀어져버린 사태를 수습하고자 만들게 되었습니다.

만든지는 한 3개월 된것 같은데 게을러서 3개월 만에 제 블로그에 소개를 하게 되었네요...

Windows, Mac OS X 그리고 Linux 를 지원합니다.
다운로드: http://code.google.com/p/twobody/downloads/list


다음과 같이 사진을 드래그하여 갔다 놓으면 EXIF 정보를 이용하여 카메라 별로 사진을 분류해줍니다. 그런다음에 동일 시간에 찍은 것으로 추정되는 사진을 고른다음에 '동기화' 버튼을 누르면 두대의 카메라로 찍은 사진들의 시간을 보정해줍니다.





아래는 투바디 홈페이지의 소개 내용입니다.


투바디에 관하여

당신은 두대의 D-SLR 카메라로 사진을 찍었습니다, 그런데 만약 두 카메라의 시스템 시간이 다르다면, 당신은 아마도 당신의 화일 브라우져에서 정렬되지 않은 사진들을 보게 될 것입니다. 투바디는 두대의 D-SLR 사이에 '시간 동기' 기능을 제공합니다. 당신은 이런 끔찍한 상황을 해결할 수 있습니다.

개념

동일순간으로 예상되는 사진을 하나씩 선택해서 시간을 맞추면 두 바디로 찍은 모든 사진의 시간이 맞춰집니다.

스크린샷

Mac OS X
Windows XP
Linux


밀린 블로그 정리 - 유럽여행기 2 - 로마

6월에 다녀온 파리, 로마 여행중 로마에서 찍은 사진들입니다.

밀린 블로그 정리 - 유럽여행기 1 - 파리

6월에 다녀온 파리, 로마 여행중 파리에서 찍은 사진들입니다.

2009년 4월 25일

Google App Engine을 이용한 소소한 Podcast 개발기

작년 12월경 부터 IPod Touch 를 이용하여 잘 듣던 모 라디오 방송사의 영어 방송이 아쉽게도 얼마전부터 iTunes의 Podcast directory 에서 더이상 업데이트 되질 않고 있었습니다. 그런데 앞으로도 주욱 할생각이 없는 모양이라서 개인적으로 불편이 이만 저만이 아니었습니다.

4월 초 까지는 다음과 같이 그 방송을 들을 수 있었습니다.
  1. IPod Touch 의 음악 탭을 눌러 Podcast 를 누른다.
  2. 더 많은 에피소드 얻기 버튼을 누른다. (Wi-fi로 인터넷에 접속됨)
  3. 새로 올라온 에피소드를 받는다.
  4. 출근한다. (기분 좋게 운전하면서 듣는다.)

그 방송을 IPod 으로 계속 해서 들으려면 다음과 같은 일련의 과정을 거쳐야 합니다.
  1. PC와 모니터의 전원을 인가한다.
  2. Windows XP 부팅을 기다린다.
  3. Internet Explorer 로 모 라디오 방송사 홈페이지에 접속한다.
  4. Active X를 이용하여 그날 올라온 mp3 를 다운받는다. (물론 지금도 free)
  5. iTunes 를 실행한다.
  6. 다운받은 mp3를 재생목록에 추가 한다.
  7. IPod Touch와 PC를 USB 케이블로 연결한다.
  8. 동기화 시킨다.
  9. 다시 USB 케이블을 뽑는다.
  10. PC와 모니터를 끈다
  11. 출근한다. (방송국에 섭섭하다... 기분이 안좋다)
^^;;;;

과정이 복잡해진것은 물론이고 수십배 이상의 시간을 투자해야 하는 엄청난 불편함이 따릅니다.
이 10단계를 거쳐서 podcast를 들으려면 전보다 30분은 일찍 일어나야 하지요...
그래서 한 2주간 방송을 못들었습니다.

아무튼 이러한 상황을 타개해 보고자 개인적으로 podcast 를 한번 만들어 보기로 하였습니다.
이 방송의 mp3 가 free 이기는 하나 저작권 문제도 있고 여러가지 문제가 있을 법하여, 좀 이기적이지만 저만 사용하고 Feed URL을 공개하지 않으려고 합니다.
그런데 이렇게 포스팅 하는 이유는 Python 을 이용하여 Google App Engine 을 이용하여 이런 응용을 해봤다는 것을 자랑하려고 ... ^^;


그럼 개발기(?)를 간단히 소개해 보겠습니다.

1. Podcast 에 대해 리뷰
Podcast 써보기만 했지 이것을 만들어 보게 될줄은 몰랐습니다. Podcast 는 RSS 와 같은 형식으로 작성 하는 것인데 자세한 스펙은 Apple 홈페이지에 잘 나와 있습니다. 뭐 간단하게 이 형식을 준수하며 text/xml 로 출력해주면 됩니다.

2. mp3 URL 조사
방송사 홈페이지의 Active X가 실제로 mp3 를 받아오는 경로를 조사하기 위해서 Wireshark 를 실행했는데 집의 PC가 무선랜카드를 쓰는이유로 패킷 캡춰가 안되었습니다. 무선 인터페이스를 통한 패킷 캡춰는 AirPcap 이라는 드라이버를 돈을 주고 사야 되더군요. 예전에 Ethereal 썼을 때는 되었던것 같은데 아무튼 지금은 돈이 들더군요. 그래서 공짜로 쓸수 있는 패킷 캡춰 프로그램을 찾아 봤는데 고맙게도 MS에서 Network Monitor 3.2 라는 툴을 공짜로 제공해주더군요. 무선 I/F 도 잘 캡춰가 됩니다.
이걸로 mp3 를 서빙하는 위치를 알아내었습니다.
왜 Active X 로 HTTP 를 써서 공짜 mp3 를 제공해주는지 참으로 이해하기 힘들더군요. 왜 일까... 왜...

3. Google App Engine 학습
Google App Engine 은 구글의 Cloud Computing 서비스 플랫폼 입니다. 뭐 여러가지 의미가 있겠지만 저같은 사람의 입장에서 설명하자면, 개발자들에게 공짜로 호스팅 환경을 제공해 주는 구글의 실험적인 서비스라고나 할까요? 구글의 웹서버와, Python/Java 개발환경, Database 등을 맛볼수 있습니다. 트래픽의 제한이 있으나 저같이 짜잘한 용도로 쓰는 경우라면 큰 무리가 없지요.

사실 몇달 전에 잠깐 만져보았었는데, 이번에 다시 들어가 보니 Java 개발 환경이 추가 되어 있더군요. 뭐 저야 Python 으로 작업할 생각이라 별 관심은 없지만, Java 개발자들도 이제 관심을 가져볼만 할듯 싶습니다. 앞으로도 PHP등의 다른 개발환경도 추가된다는 이야기도 본것 같은데, Java로 PHP 를 구현하여 미리 사제 PHP for Google App Engine 을 구현해 버린 사람도 있네요. 대단합니다. Jython 같은 건가요...

뭐 어찌 되었건 이번 사소한 개발에서 Google App Engine 의 역할은 RSS 를 제공해주는 웹서버가 될것입니다. Google App Engine의 Python 환경이 DJango를 써서 웹사이트를 개발하도록 제공하고 있는데, DJango 같은것 몰라도 RSS 정도는 쉽게 만들수 있습니다. XML을 만들어서 print 만 하면 되니까요.

4. 준비물 (Windows 환경)
Google App Engine SDK, msys, git, gvim 정도 준비하면 끝.
아 당연히 Google App Engine 서비스에 가입해야 하는데, 저는 http://exman.appspot.com 을 할당 받아 쓰고 있습니다.
소스를 날리는 것에 대비해서 git 로 local repository 를 만들어 작업 했습니다.
저는 Windows 에서 개발할때 msys 환경에서 주로 작업합니다. msys 만세!,
윈도우즈용 git 도 msys 환경으로 빌드 되어서 배포 되고 있더군요.

$ mkdir exman.appspot
$ cd exman.appspot
$ git init
$ git add app.yaml exman.py ...

5. 시퀀스

http://exman.appspot.com/ 는 제 개인 놀이터 입니다. 이 아래의 urn 은 비공개로 작업을 하고 있습니다. 뭐 찍으면 맞출수 있겠죠... 아무튼 / 으로 들오오면 "Hi surfers! 어쵸고 저쵸고" 가 보일 뿐입니다.

아무튼 제 google app engine 에서 이번 소소한 개발에 사용된 구성 요소는 다음의 3가지 입니다.
ㄱ. http://exman.appspot.com/xxxx-update : RSS를 새로 갱신하여 Cache 를 만듭니다.
ㄴ. http://exman.appspot.com/xxxx : Podcast RSS
ㄷ. /xxxx-update 을 3시간 마다 실행시켜 주는 Cron Job

ㄱ. 의 /xxxx-update 를 먼저 웹브라우져를 통해서 최소 하루에 1번은 Request 를 해주어야 합니다. 이 urn 에 해당하는 python script 에서 모 방송사의 홈페이지의 RSS을 urlfetch 를 이용하여 다운로드 받습니다. 그리고 minidom 을 이용하여 각각의 item 정보를 얻어온뒤 net monitor로 알아낸 mp3 URL 을 넣어서 다시 RSS data 를 만들고 memcache 를 이용하여 캐쉬해 둡니다.

ㄴ. 의 /xxxx 에서는 이렇게 캐쉬된 RSS 데이타를 그냥 출력해줍니다. 매번 방송사 사이트에서 RSS를 가져와서 데이타를 가공하여 출력하지 않기 때문에 빠릅니다. 방송사 사이트에 트래픽으로 인한 피해도 주지 않지요.

ㄷ. 은 cron.yaml 을 만들어 주고 다음과 같이 작성해주었습니다.
cron:
- description: daily xxxx update
url: /xxxx-update
schedule: every 3 hours

이러면 3시간 마다 /xxxx-update 을 request 하여 마치 Unix 의 Crontab 을 설정 한것과 같아 집니다. 3시간 마다 자동으로 ㄱ.의 과정을 수행해 주는 것이지요.

6. 테스트
소소한 개발은 다 끝났습니다. google app engine 의 SDK 를 이용하여 다음과 같이 업데이트를 합니다.

$ appcfg.py update .

이제 PC의 iTunes 에서 Podcast 등록 메뉴를 통해 http://exman.appspot.com/xxxx 를 등록하고 즐기면 됩니다.
그리고 IPod Touch 에 Sync 하면 그때부터 Touch 에서 Wi-fi 를 통해 Podcast 를 편리하게 Update 할수 있을.......줄..... 알..... 았..... 는..... 데......


TT

안되네요. 쩝...

RSS URL을 Podcast Directory 에 등록하지 않아서 그런 것인지...
PC 의 iTunes 에서만 잘 동작합니다.
자세한 이유는 모르겠습니다만 Touch 에서는 '더 많은 에피소드 얻기' 를 하면 그냥 iTunes 웹사이트만 뜨고 RSS 가 나오지는 않네요.
아쉽지만 더이상의 삽질은 이제 그만하기로 하고 마음 정리를 하였습니다.

그래서 지금은 Mobile Cast 라는 Cydia App 을 이용하여 저의 '사제 XXXX Podcast' 를 즐기고 있습니다. 이 프로그램은 이런 RSS의 데이타를 IPod Touch 에 저장하여 볼수 있는 기능이 있어서 Podcast 를 저장해서 들을 수 있네요...
일단 Mobile Cast 에서라도 잘 동작 한다는 것에 만족하고 소소한 개발은 막을 내립니다.

Cydia 만세!!!

...



7/1 일 추가
Podcast Directory 에 소심하게 등록했었는데, 아이팟 터치의 iTunes에서 검색이 안되길래 등록에 실패한것으로 알고 있었는데, 몇일 걸렸던 모양입니다.
그동안 Mobile Cast 를 이용해서 제가 등록한 Podcast RSS를 직접 땡겨와서 듣고 있었는데, 오늘 문득 iTunes 에서 검색해보니 나오네요. ㅎㅎ
아이팟 터치에서도 "음악" 프로그램으로 업데이트 받을 수 있고, 잘 됩니다. ㅎㅎ

그리고 그 영어 방송의 Podcast 도 다시 부활한 모양인데, 여러개가 나옵니다.
제가 만든거는 그중에서 인기도 3위이네요 ㅎㅎ
혹시 쓰시는 분들은 이게 Google App Engine 으로 도는것인지 아시려나 ㅎㅎ

2009년 2월 9일

Mac OS X Leopard 에서 NFS 서버 돌리기

Android 를 target 에서 nfsroot 방식으로 부팅 시켜야 하는데, 제 작업 노트북이 Macbook 이라 한번 알아 보았습니다. 인터넷에 찾아보니까 자료가 별로 없어서 포스팅 해봅니다.
Tiger 때와는 설정 방법이 달라 진것 같습니다만, 그래도 됩니다.

일단 man exports 를 참고하여 /etc/exports 파일을 만듭니다.

제 설정은 다음과 같습니다.

/Volumes/Workspace/mydroid/out/target/product/xxx/root -mapall=root

이런 다음 nfsd 를 실행하면 끝!

그런데 만약 busybox 같은 nfs client 에서 접속이 안되는 경우가 있습니다. 에러 메세지는 까먹었는데, 그런 경우에는 man nfs.conf 를 참조하여 옵션을 바꿔줄 수 있습니다.
저는 /etc/nfs.conf에 다음과 같이 설정 했더니 문제가 해결 되었습니다.


nfs.server.require_resv_port = 0
nfs.server.mount.require_resv_port = 0

2009년 1월 14일

Qt 4.5 LGPL 발표 기념, PyQt4 강좌 계획

와우.. Qt4.5 부터 3가지 옵션으로 라이센스를 선택할수 있다는 발표가 났네요.

큐트 소프트웨어 만세!!! 노끼아 만세!!!

라이센스 때문에 울며 겨자먹기로 GTK+를 써야했던 설움이 사라지는 순간입니다.
이번 사건을 계기로 Qt가 디 펙토 스텐다드로 발돋움 하면 좋겠습니다.

만약 그렇게 된다면 저같이 Qt를 너무 좋아해서 다른 Gui 툴킷을 배우기 꺼려하는 개발자 들이게는 다음과 같은 몇가지 나아진 상황을 상상해 볼수 있었습니다.

1. Qt에 대해 더이상의 자세한 설명은 생략한다.

Before)
이면박 사장: 우리 제품을 윈도우즈로 포팅해야 하는데 할줄 아나?
나: 네 Qt라고 크로스 플랫폼 Blah Blah... 뭐 그런게 있는데 그건 할줄 압니다.
이면박 사장: 음 그런것도 있었군... 그런데 MFC 가 아닌데 괜찮을까?
나: 음... KDE 가 어쵸고 구글 어스가 저쵸고 ... (아 설명하기 귀찮다)

After)
이면박 사장: 우리 제품을 윈도우즈로 포팅해야 하는데 할줄 아나?
나: 네 Qt 쓰면 됩니다.
이면박 사장: 오 Qt를? 자네 그런것도 쓸줄 아나?
나: (음흐흐) 기본입니다.
이면박 사장: 그런데 Qt로 땅도 팔수 있나?
나: ...


2. 더 많은 프로그램을 리눅스나 맥에서 즐길수 있다.

Before)
포도샵 개발실장: 윈도우즈 점유율은 점점 떨어지는데 맥용 따로 윈도우즈용 따로 개발해야 하나 TT
나: 음 Qt 라고 있는데 그게 GPL 이라 어쵸고 저쵸고....
포도샵 개발실장: ...

After)
포도샵 개발실장: 다음 버전은 Qt로 개발해서 단일 소스로 윈도우즈, 맥은 물론 점점 점유율이 높아만 가는 Ubuntu 버전 만들어서 팔아보자.
나: 음 Qt로 하는건 좋은데 윈도우즈용으로 빌드해 봤자 누가 쓰겠어요?
포도샵 개발실장: 그래도 아직 10에 1명 정도는 쓰니까 어쩔수 없지...

더 적어 보고 싶은데 생각하기가 귀찮군요. 어찌 되었건 개인 적인 바람이 있다면 이번 사건으로 PyQt도 LGPL 로 바뀌게 되면 좋겠습니다. 음 어찌 보면 PyQt로 수익을 보고 있던 Riverbank Computing 에게 안좋은 영향이 미치는것 아닌가 걱정도 드는 군요.

어찌되었건 이번 사건에 자극을 받아서 6년전에 제 홈페이지에 게재 했던 PyQt3 강좌의 자료를 살려 볼까 했는데 PyQt3 때와는 달라진것도 많고, 최근에 다시 블로그를 하기 시작했기 때문에 새 마음으로 새 강좌를 시작 해볼까 합니다. 그때나 지금이나 PyQt에 대한 국내 자료는 인터넷상에 별로 없군요 ^^

2009년 1월 8일

Qt 엔지니어의 센스있는 동영상

오랜만에 Trolltech 홈페이지에 들어가봤는데, Trolltech 가 Nokia 에 인수되면서 Qt Software로 회사명이 바뀐 모양입니다.
원래는 qtopia 소스를 받아서 테스트를 좀 하려고 들어갔는데, qtopia가 qt-extended 로 이름이 바뀌면서 소스를 다운로드 할수 없게 된것 같습니다만 덕분에 인상깊은 비디오를 하나 보게 되었습니다.

아직 정식 출시되지 않은 Mac용 Qt 4.5를 소개하는 동영상인데요. Qt Software 의 시니어 엔지니어가 직접 소개를 하는데, 많이 보아왔던 구글 엔지니어들의 동영상들 과는 색다른 포스(?)가 느껴 지는 군요.

일단 동영상의 도입부 부터가 색다릅니다.... 느끼한 BGM과 눈덮힌 겨울 풍경으로 시작하는 이 동영상은 기술 자료를 다룬 동영상이라고 하기에는 파격 그 자체입니다. '헉' 소리가 절로 나옵니다.
그리고는 '아름다워~' 를 외치면서 분위기를 한껏 음미하고는 Qt 로고가 새겨진 머그컵에 담긴 Cocoa와 Carbon을 들고 야릇한 미소를 지으며 맥용 Qt를 소개를 하는 모습에서 이 엔지니어가 보통이 아님을 직감할 수 있습니다.

백문이 불여일견...



마지막의 반전도 놓치기 아까운 장면입니다.
카본을 코코아에 담그고는 후루룹 마셔버리는... 대인배의 모습을 보여주며 마지막까지 기대를 저버리지 않습니다. ㅎㅎ
저도 언젠가 회사의 제품을 소개하는 동영상을 촬영하게 된다면 이렇게 색다르게 촬영 해보고 싶네요 ㅎㅎㅎ 최고! 최고!

FIFA 09, 부상(?)으로 시즌 마감

xbox 360이 공포의 red-ring 3개가 뜨면서 고장이 나는 바람에 이번 시즌의 피파 라이프를 조기 마감 했습니다.
아 아쉽군요. 피파 09 산지 몇달 안되었는데. 하긴 뭐 6시즌이나 즐겼으니 충분히 즐기긴 한것 같군요.
작년에 피파 09가 출시 되었을때 고민했던 일이 현실로 나타났습니다.

당시의 고민은 다음과 같습니다.

내 나이 30인데 피파09를 계속 해야할까?
98 부터 했으니 그만 할때가 된것도 같은데...
이제 선수 생활 접고 Football Manager 2009 로 지도자 생활을 시작해 볼까?
아니다... 올시즌 까지 선수생활을 연장해보고 결정하자...


그리고는 감독모드로 "약간의 시뮬레이션 진행 + 중요 게임은 직접 플레이 하루 두게임"의 철칙을 준수하면서 선수 생활을 만족스럽게 즐기고 있었습니다.
인떼르밀란으로 2시즌 맨체스터유나이티드로 4시즌 했군요...
맨유4시즌때는 설기현을 영입해서 풀럼전때 써먹는 재미가 쏠쏠 했는데 말이죠 TT
한창때 처럼 월드클래스의 실력은 아니지만 아직 프로페셔널 난이도를 유지하고 있었습니다.
나이가 들면서 기량이 조금씩 떨어지긴 했지만 은퇴할 정도는 아니었는데...
XBox 360이 고장나면서 아쉬운 선수 생활의 쓸쓸한 은퇴를 맞이하게 되었습니다...

아듀 피파...
20대를 함께한 게임이여 안녕~

2008년 12월 3일

Mac OS X용 Native Gimp 2.6 사용하기

요즘은 회사에서 일할때 Linux 를 잘 쓰지 않고 Mac을 쓰고 있습니다.
Linux 가 설치된 PC가 오래되어 맥북보다 느려서 점차 외면 당하고 있는데요.
맥에서 작업하다보니 코딩하다가 간단하게 이미지를 수정하고자 할때 마땅한 편집툴을 못찾고, 어쩔수 없이 친숙한 Gimp 에 손이 가게 되더군요.

그런데 이 Gimp가 맥에서는 X윈도우를 필요로 하는데, 그러면 좀 자세가 안나옵니다. 저는 가급적 오픈소스 기반의 맥용 S/W를 설치할때는 가급적 Cocoa 기반의 Native GUI 를 제공하는 프로그램을 선호합니다.
찾아보니 GIMP.app 가 있더군요.
얼마전 새로 나온 Gimp 2.6을 GTK+ Native Mac 을 이용하여 패키징한 모양입니다.
올초에 GTK+를 회사에서 개발한 윈도우즈 시스템에 포팅기위해 GTK+ Mac 을 참조하여 개발한 경험이 있어서 친숙한데요, 실행해보니 한글로 나와야 할 부분이 네모로 나오는것도 아니고 아예 안나오더군요. TT

이것을 해결하기 위해 2가지 방법을 시도해 보았습니다.
1. 터미널에서 LANG=C ./GIMP.app 를 실행하여 영문모드로 사용
2. gtkrc 파일을 찾아 default font 를 Gulim 으로 설정

1번 방법은 당연히 잘 되는데 좀 귀찮고요, 2번 방법은 오랜만에 gtkrc 를 고치다 보니 가물가물 해서 그런지 잘 적용이 안되더군요. 그리고 한글 출력 부분이 네모로 조차 나오지 않아서 뭔가 다른 문제가 있는것 같아 일단 임시방편으로 1번을 쓰기로 했는데, 뭔가 자세가 안나옵니다. 터미널을 켜야하고...

다음과 같이 하면 한글 Mac OS X에서 터미널로 실행하지 않고도 Native GIMP를 영문 환경으로 실행 가능합니다.

1. GIMP.app 에 들어가서 script 파일을 편집

exman2:~ jooncheol$ cd /Applications/GIMP.app/Contents/Resources/
exman2:Resources jooncheol$ vi script


2. 마지막줄 전에 환경변수 LANG 설정

... 중략
export LANG=C
exec "$CWD/bin/gimp" "$@"


이러면 Finder 나 Dock 에서 아이콘을 클릭하여 영문모드로 실행이 가능합니다.
한글 메뉴가 안나오긴 하지만 급한데로 써야지요.