2008/01/30

Japan drama in winter '07. Vol 2.

到今天為止冬季日劇都已經演個2~3集了,推薦度也有所變更,之前我一直以為我是個劇情取向的人,不是個卡司取向或是xx取向,但是看到現在,結論是.....我是正妹取向 科科

以下是由推薦到不推薦的排序:
  • SP (11集完)
  • 沒有玫瑰的花店 (竹內結子跟釋由美子超正)
  • 談判專家 (米倉涼子身材超好)
  • 明天的喜多善男 (小忍魂)
  • 蜂蜜與四葉草 (內有正妹,請進)
  • 愛迪生之母 (這部在看劇情)
  • 齊藤太太 (觀月亞理莎太老了,不合我胃口)
以下提不起勁來看:
  • 一磅的福音
  • 未來老師(雖然深田恭子很可愛,但劇情太爛)

2008/01/29

Porting linphone to PXA270

前言
最近在幫別人做embeded system design的期末作業,這作業主要是要讓板子pxa270能有網路電話的功能voip。

我嘗試了兩套softphone,分別為pjsip及linphone,就這兩套來講那一套比較適合拿來開發我會推薦使用pjsip,主要是因它是提供了一套library來讓開發者使用,所以對於往後的ui開發,需要增加自己的額外功能時,pjsip一定是首選。

然而,我們這次作業並沒有使用pjsip,是因pjsip我們cross-compiler完後,使用它的voip功能,電話播通後卻無法成功將聲音播出或送出去,但直接使用其library放音卻可以。

最後我們放棄使用pjsip,改換成linphone來porting,linphone有為需要cross-compile的人寫了一份參考文件,但該文件略嫌簡略,又有些地方有誤,故我將compile經過重新記錄一次,以供大家參考。

Porting過程
在porting前必需先將需要幾個dependency package抓好(依編譯順序排列):
  • readline-5.2
  • ncurses-5.6
  • libosip2-3.0.3
  • libeXosip2-3.0.3
  • libogg-1.1.3
  • speex-1.2beta3
  • linphone-2.0.1
首先,先設定一些環境變數
export ARM_INSTALL_TREE=/home/timy/armbuild
export PATH=$PATH:/opt/microtime/pro/devkit/arm/pxa270/gcc-4.0.2-glibc-2.3.3/arm-unknown-linux-gnu/bin
開始編譯:
Cross compiling ncurses for ARM:
********************************
./configure --prefix=/usr --host=arm-linux --with-gnu-ld --with-shared
make
make install DESTDIR=$ARM_INSTALL_TREE
make install DESTDIR=`pwd`/armbuild
Cross compiling readline for ARM:
*********************************
./configure --prefix=/usr --host=arm-unknown-linux-gnu --with-gnu-ld --disable-static
make
make install DESTDIR=$ARM_INSTALL_TREE
make install DESTDIR=`pwd`/armbuild
Cross compiling libosip for ARM:
********************************
./configure --prefix=/usr --host=arm-unknown-linux-gnu --with-gnu-ld --disable-static
make
make install DESTDIR=$ARM_INSTALL_TREE
make install DESTDIR=`pwd`/armbuild
Cross compiling libeOsip for ARM:
********************************
./configure --prefix=/usr --host=arm-unknown-linux-gnu --with-gnu-ld --disable-static CFLAGS=-I$ARM_INSTALL_TREE/usr/include LDFLAGS=-L$ARM_INSTALL_TREE/usr/lib
make
make install DESTDIR=$ARM_INSTALL_TREE
make install DESTDIR=`pwd`/armbuild
Cross compiling libogg for ARM:
********************************
./configure --prefix=/usr --host=arm-unknown-linux-gnu --with-gnu-ld --disable-static
make
make install DESTDIR=$ARM_INSTALL_TREE
make install DESTDIR=`pwd`/armbuild

Cross compiling speex for ARM:
********************************
First you need to remove ogg headers from your build system to avoid a dirty conflict between your build machine binaries and the arm binaries. They are usually in a libogg-dev package (rpm or deb).
Then:
./configure --prefix=/usr --host=arm-unknown-linux-gnu --with-gnu-ld --disable-static --enable-arm-asm CFLAGS=-I$ARM_INSTALL_TREE/usr/include LDFLAGS=-L$ARM_INSTALL_TREE/usr/lib
make
make install DESTDIR=$ARM_INSTALL_TREE
make install DESTDIR=`pwd`/armbuild
Cross compiling linphone for ARM
********************************
First you need to remove all .la files from the ARM_INSTALL_TREE because it confuses libtool and makes
the linker use your build machine binaries instead of the arm-crosscompiled ones.
rm -f $ARM_INSTALL_TREE/usr/lib/*.la
#for some reason pkg-config doesn't like cross-compiling...
export PKG_CONFIG=/usr/bin/pkg-config./configure --prefix=/usr \
--host=arm-unknown-linux-gnu \
--with-osip=$ARM_INSTALL_TREE/usr \
--with-readline=$ARM_INSTALL_TREE/usr \
--includedir=$ARM_INSTALL_TREE/usr/include \
--enable-gtk_ui=no \
--enable-console_ui=yes \
--includedir=$ARM_INSTALL_TREE/usr/include \
--disable-video \
SPEEX_CFLAGS="-I$ARM_INSTALL_TREE/usr/include" \
SPEEX_LIBS="-L$ARM_INSTALL_TREE/usr/lib -lspeex -lspeexdsp" \
LDFLAGS="-L$ARM_INSTALL_TREE/usr/lib" \
LIBS="-leXosip2 -losip2 -losipparser2" \
CFLAGS="-I$ARM_INSTALL_TREE/usr/include"
make
make install DESTDIR='pwd'/armbuild


問題與討論
configure或compile時出現錯誤 T_T
遇到錯誤時,我的處理方法大都是:
  1. 判斷錯誤發生原因,藉由:
    • 螢幕上的輸出
    • log檔(for example, config.log)
  2. 重製錯誤(configure錯誤可以跳過此步)
    • 稍後會有詳細解說
  3. 解決問題
    • 大部分的問題皆是修改CFLAGS, LIBS, LDFALGS這幾個參數,至於這幾個參數的用處,請自己google一下gcc的compile教學,或是問人會比較快。
底下我將舉一個make時發生的錯誤,這是在編linphone時發生的錯誤:
gcc -shared .libs/linphonecore.o .libs/exevents.o .libs/misc.o .libs/enum.o .libs/sdphandler.o .libs/presence.o .libs/proxy.o .libs/friend.o .libs/authentication.o .libs/lpconfig.o .libs/chat.o .libs/general_state.o -Wl,--rpath -Wl,/home/fcwu/arm/src/linphone-2.0.1/mediastreamer2/src/.libs -Wl,--rpath -Wl,/home/fcwu/arm/usr/lib -leXosip2 -losipparser2 -losip2 ../mediastreamer2/src/.libs/libmediastreamer.so -Wl,-soname -Wl,liblinphone.so.2 -o .libs/liblinphone.so.2.0.1
/usr/bin/ld: cannot find -leXosip2
collect2: ld returned 1 exit status
make[2]: *** [liblinphone.la] Error 1
make[2]: Leaving directory `/home/fcwu/arm/src/linphone-2.0.1/coreapi'
從倒數第4行可以看到ld(linker)找不到libeXosip2.so,我第一個假設會是"尋找library的路徑"設定有錯,換句話說就是LDFLAGS有問題,為了證實確實是發生這問題,我們可以到/home/fcwu/arm/src/linphone-2.0.1/coreapi目錄下輸入arm-linux那行(第一行)看看會不會產生這個錯誤,若確實產生這個錯誤再append "-L/home/fcwu/arm/usr/lib",看看問題是否解決。等確定無誤後,重新./configure一次,並加入LDFALGS="-L/home/fcwu/arm/usr/lib"即可。

../coreapi/.libs/liblinphone.so: undefined reference to `ms_alsa_card_new_custom'
參考這個討論串裡的diff檔,修改即可。

出現asm...的錯誤
這是由於arm-linux-gcc不支援inline assembly的某些寫法(?)造成了。解法我是移植Linux kernel source code裡的include/asm-arm/裡的__FD_ZERO等4個micro到compiling的機器上的/usr/include/sys/select.h(應該是這個位置)。
這個問題應該有更好的解法,但是我很懶。

參考資料
  • Linphone的porting,可以參考以下幾個文件:
  • 在linphone資料匣內的README.arm(最重要)
  • 在linphone資料匣內的README.arm
  • 在linphone資料匣內的INSTALL
  • ./configure --help

2008/01/26

Lunch today: steamed bread

steamed bread是刈包,如下圖:




加1塊入口即化的豆腐(魯過的)、一塊素肉、一些花生粉、一些起士口味的素肉鬆、一些酸菜及香菜。我只能說:太好吃了....

Timy time: Hula hoop of WiiFit

Cute Timy came my home to play hula loop of WiiFit.

Timy was playing...


Rickey was play...

2008/01/24

BackTrack: hacking tool

BackTrack: the highly popular and regarded Linux Security Distro for ethical hackers

Get the demo video http://www.ethicalhacker.net/content/view/167/2/
I was so shocked by how easy to steal wlan password, hack gmail account, and invade someone computer.

Official site: Remote-Exploit

Seam Carving

剛才看到的一篇很好玩的影像處理技術。這種技術可以找到圖片裡不重要的橫軸或縱軸加以刪除,讓圖片能夠只縮長度或寬度並且看起來像是等比例的縮(不會失真)。這種方法又可以叫Retarget。

Image resizing by seam carsing (YouTube)

原文,是從Tsung's Blog出來的。

2008/01/22

paper, vulnerability sensor

Vulnerability sensor,這是最近在趕的paper,老師叫我負責寫的部分有introduction,related works及最後的reference,其他部分是由william,工程師來寫,而老師是做最後的修訂。

就我寫的部分,related works是比較不好寫的部分,在這裡我大概引用了20篇文章。在寫之前,首先我對他們做了分類,接下來再將這20篇的文章以優缺點的方法加以貫通。有時為了將一篇文章用簡單的1至2句話來說明,光是1句話就必需想很久,因為寫之前一定要對該文有基本的了解。

趕這篇文章大概花了5個工作天,這幾天幾乎都沒什麼睡,醒著的時候都在寫,實在是很痛苦。如今,寫完了,真是一整個痛快。

接下來還有很多事要做:
  • 1/25 論文計畫書
  • 1/31 論文outline
  • 1/31 實驗數據 (will miss deadline certainly)
  • 2/?? 書的初稿
實驗數據我一定會miss first deadline,追根就底,會miss絕大是因為老師叫我幫他寫paper。當然,如果miss deadline,不會怎樣就算了,但是老師前幾天還寄信來說:你們這些碩二的如果有誰miss deadline,第一次,你們會受到10-10的處罰(早上10前到實驗室,晚上10點後才能離開),第二次,扣你們的薪水。收到那封信時,當埸想回信罵他。

2008/01/17

Japan drama in winter '07. Vol 1.

目前正在追的2007冬季日劇(以我進薦程式來排序,推->不推):
  • SP
    要人警護官,由岡田准一主演,此部劇情很緊湊,且拍片手法也獨樹一格,也又有不錯的武打動作
  • 愛迪生之母
    由伊東美咲主演,劇情相當不錯,主要是描述一位天才兒童在學校學習碰到的問題,舉凡老師、家長等,其中在有些小孩提出的問題,都可讓"大人"們好好思考。舉例來說1+1為什麼會等於2(或許有些人會想到這是數論的問題),都十分的有趣。
  • 明天的喜多善男
    比起前幾部,這部陰沉了許多,此片主角(小日向文世)主演,在劇中飾演一位決定在11天之後要自殺的人,為什麼他可以那麼平淡決定自己在11天後要自殺?而在這11天當中,他又有什麼事是想要完成的。小日向的演技十分優秀,在第一集中,他與自己的對話讓我雞皮疙瘩掉滿地。
  • 沒有玫瑰的花店
    竹內結子主演,純脆是因為喜歡她,所以才在追這部片。
  • 談判專家
    米倉涼子主演,這部算是不錯的警察片,但是沒法讓我產生什麼共鳴,所以相對起來我沒有很推薦。
  • 齊藤太太
    日本的「親戚不計較」。觀月亞理莎主演。
  • 蜂蜜與四葉草
    年輕人的愛情劇,內有正妹。
  • 一磅的福音
    愛情拳擊片,愛情佔了較多的部分。
  • 未來老師
    爛片,一點都不好笑,深田恭子主演,本來很期待這部,可是劇情太爛。
其中,明天的喜多善男是分隔線,以它之上(包含它),是我認為比較好看的,下面的則是要不要繼續看都無所謂。

每部片的詳細介紹自行參閱豬豬字幕組的網頁

To be a Ph.D?

前陣子老師認為我目前的論文方向很有趣,問我要不要繼續唸博班,當時給他的回答是「不要」。

那時,主要不想繼續唸的原因大概有幾點:
  1. 博班唸出來,除了學歷上是博士,對於工作上,並不會有太多的幫助。
  2. 我討厭寫paper。對於寫paper而言,動手實做更能得到更多樂趣。
  3. 讀博士會變窮人。若是我博班讀4年,這4年可能的月收入大約3萬。
讀博班的好處呢?
  1. 英文會變好。
  2. 思考更有邏輯,文章會愈寫愈好。
  3. 更會present
從優點與缺點看來,似乎我最不能忍受的是「收入3萬」這點。其次再來是讀博班會要很痛苦的寫paper。

今天老師寫了一封信出來說:他現在有4個科技替代役名額,問如果有人想唸博班可以同時服替代役並且同時讀博班。當下,這讓我有點心動是否要讀博班。

但是,心動不到一分鐘,我又繼續開始寫我的paper後,我就完全不思考這件事了......寫paper實在是很痛苦