因為要取得噗的所有回應,所以我參考dotplurk的getAllResponses()來取,基本上是用Plurk API 的 getResponses。只是,dotplurk應該是誤解了 getResponses 的用法。他的作法是假定getResponses一次傳回五筆,所以有抓到回應的話,就再把offset累加5,然後呼叫getResponses,就這樣重複,直到抓沒有response為止。但是getResponses並不是一次傳回五筆,而是不定筆數,因此offset的累加我改為累加這次取回的responses筆數,於是這樣就對了。
另外,plurkSearch 傳回的 plurk,裏面有 response_seen 跟 response_count 欄位,我想應該也可以利用這兩個欄位事先得知這個噗有多少回應,來決定怎麼去取responses,只是我就沒有去利用了,畢竟我自己的噗浪回應數都沒超過100(目前最高樓應該還是酪梨壽司那一噗吧,記得有上萬)。除了跟 response 有關的值以後,plurk 裡還有 friends 這欄位,表示參與 response 的人有哪些,從這裡就可以取出 user_id 對應的 display_name,而不需要再呼叫 getPublicProfile 去取得,這樣可以少掉很多往返網路的時間。
應該不會再有下篇了,因為我的備份噗浪到blogger的程式完工了。
Microsoft Security Essential與Proxy
公司的NB一直都沒裝防毒軟體,也不知道要去公司的哪裡下載防毒軟體來安裝。前公司是很貼心,只要一登入公司的網域,如果沒裝公司御定的防毒軟體,那麼防毒軟體的安裝程式就會跳出來,要你安裝。
好吧,前一陣子有聽說Microsoft Security Essential免費又很不錯,就裝上來試試看。裝完以後馬上遇到的第一個問題就是proxy,爬文以後,發現幾乎都是說不支援proxy。但很幸運的在微軟論壇裡找到方法,原來Microsoft Security Essential是用winhttp,而不是會自動使用IE設定的wininet,也就是說要用proxycfg來設定,才可以。
所以看你是要 proxycfg -u 去 follow IE proxy 設定,或是 proxycfg -p your_proxy_server 來設定,就可以了。
plurklib小記
plurklib是official Plurk API的python實作。
原始碼只有兩個檔案,readme.py就是每個function的使用方法,plurklib.py則是主要的實作。
我主要用到 plurkSearch,plurkSearch 傳回的是一個 dictionary,所以就可以用 keys() 去看有哪些 key,大致上有 has_more、plurks、last_offset。has_more 可以用來判斷還有沒有更多的搜尋結果,last_offset 則是可以在下次 plurkSearch 時帶入,表示要搜索更之前的紀錄。plurks 則是一個 list,裏面每個元素則又是 dictionary。完全不使用 class 的好處是,用 python 基礎型別就可以搞定,不需要再多的檔案,其實也算是作者偷懶吧,因為內部是用 json 來解析結果,而 json 解出來的結果就是 dictionary。
再來就是日期,日期的解析,本來已經打算要用 datetime.strptime 來硬轉了,但還好在 StackOverflow: Converting string into datetime 看到可以用 dateutil.parser 來轉換,這樣就輕鬆省事多了。
電影流水帳(2010/10/28~2010/11/11)
哈哈,本想找電影海報來放的,但是 flickr 跟 picasaweb 上都沒有適合的,算了。
- Resident Evil: Afterlife(IMDB, Wikipedia),中譯:惡靈古堡IV-陰陽界。延續上一集的劇情,Alice開始卯起來惡搞,開始去挑掉每間保護傘的分公司,結果踢到鐵板,差點掛掉,所以大難不死的她,就去找她之前的朋友。但是到了預定要碰面的地方時,卻找不到,只找到喪失記憶的第2女主角:Claire,於是就帶著她從阿拉斯加往南找,到了倖存者頑強抵抗的一棟監獄。接著,僵屍就衝進來了,然後就一場屠殺。後來從下水道逃出去,到了船上,在船上碰到大魔王,又是一場死戰。死戰終了,救出之前被抓去實驗的人,可是好景不常,保護傘公司的一群直昇機來了,接著就…沒了,請期待下集。
- RED(IMDB, Wikipedia),中譯:超危險特工。這故事不錯,是漫畫改編的。就已經退休的Frank都已經在把妹了,卻被中情局追殺,沒辦法,為了保護他所愛的人,只能帶著她一邊逃一邊找出真相,最後當然是找出真相,原來是副總統跟他的合夥人在搞鬼。這部電影除了後來改幫主角的小反派:Karl Urban跟演副總統的Julian McMahon之外,其他影星,全部大於45歲,連女主角Mary-Louise Parker也是(保養的也太好了吧,我以為只有3x歲),真的是呼應了主題 Retired。對裏面印象最深的幾個橋段,都是Helen Mirren跟Ivan演的,一開始她邊把風邊跟女主角娓娓道出她為了任務被迫槍殺她所愛的男人,到後來她遇到沒死的愛人,所表現出來的感覺,讓人忘不了。總之,這部片很不錯看。
xml2
今天把 conky 裝起來,然後參考了 To-Dos, Weather, and Twitter on a Linux Desktop 來改,不過,文章裡用的是英國BBC氣象資料,也搞不清楚地區代碼是哪個,所以就乾脆去看中央氣象局的網站,看有沒有資料可以直接撈。
現在中央氣象局網站做的不錯,已經有提供 RSS 了,所以就拿 RSS 來 parse。可是,你知道 RSS 其實是 XML,要parse XML總是麻煩,想在一行之內做完,看來是不太可能。
就想說找一下,看有沒有現成的工具可以用,就用 apt-cache search xml 來找。找的結果,發現有個 xml2 的套件,說明說是 Convert between XML, HTML, CSV and a line-oriented format,應該是合用,就裝上試試看了。
xml2 就很簡單把 xml 轉成文字檔,結果大致是這樣 tag1/tag2/tag3…=node value
所以接著就可以用 awk 開刀了:
curl -s --connect-timeout 30 "http://www.cwb.gov.tw/rss/forcast/36_04.xml" | xml2 | awk -F '=' '/^\/rss\/channel\/item\/title/{print $2;}'
這樣,就可以得到目前的天氣了。用bash真的是很好處理東西~
crosscompile lua
bc 好久都沒出新版了,裏面原本的 configure 對 crosscompile 支援不良,而且因為用到 flex 跟 bison 的關係,這兩個也要跟著 crosscompile,太麻煩,所以就想找一些輕量級的 script 語言來用。
仔細想想,lua 似乎是最好的選擇,就拿來用了。lua 原始碼解開只有 Makefile,原本以為 crosscompile 會很麻煩的,仔細看過以後,發現不難,只要這樣編譯,就可以了。
make CC=arm-none-linux-gnueabi-gcc RANLIB=arm-none-linux-gnueabi-ranlib ansi
用 ansi 的原因,是可以避掉要連結 ncurse、dl 等的 library dependencies,如果用 generic 或 linux 就得要再 crosscompile ncurse。
電影流水帳(2010/10/1~2010/10/27)
- Paprika(IMDB, Wikipedia),中譯:盜夢偵探。我只能說超好看!一開始就是一個夢境,在夢裡是 Paprika 的 Chiba 是個曾經罹患憂鬱症的醫師,現在則是使用 DC mini 進入病人夢境以治療病人心理問題,可是 DC mini 卻失竊了。周遭的人都陸續被夢境混淆,於是他們就開始尋找偷走 DC mini 的人,最後卻發現是理事長。故事不會難以理解,看完以後,我真的非常佩服導演,完全善用了卡通來表達夢境與現實之間的穿梭,真的,很好看!
- 歲月神偷(IMDB, Wikipedia)。很簡單的故事,其實就是賣鞋的夫妻有兩個兒子,大兒子很優,樣樣強,小兒子調皮搗蛋。可是大兒子樣樣優的背後,卻得了血癌。已經是很窮苦的一家,在這樣的情況下,仍然盡力救治,最後當然是…走了。這電影在任達華跟吳君如的加持之下,是挺不錯看的,可是說真的,抽離了他們兩個,就會是很平淡的電影了。
- Kamome Diner(IMDB, Wikipedia),中譯:海鷗食堂。在芬蘭開食堂的サチエ,食堂生意非常冷清,這一天她遇到了一個曾經去日本留學的芬蘭年輕人跑進來問他,科學小飛俠(科學忍者隊)的主題曲怎麼唱,她一直想不起來。下班的路上,她遇到了不知道為什麼跑來芬蘭的ミドリ,問到了主題曲,就問她一起來住了。之後又遇到マサコ,發生了一些溫馨的事情。怎麼說呢?這是相當平淡,但是又有點溫馨的故事,我覺得是挺好看的。一開始的科學小飛俠主題曲真的是很歡樂,然後看完,會有想去芬蘭的衝動!
Android 的多國語言
一般抓下來 build,應該就會有多國語言了,如果沒有的話,就檢查 AndroidProduct.mk 裡的 PRODUCT_LOCALES。
從 T 公司拿到的這一包,裏面正好就只放了 en_US,所以 build 出來就只看到英文,其他國家都沒看到。在 PRODUCT_LOCALES 加上所需的區域代碼以後,重新 build,就可以看到了。
mtab有多重要?
android 裡面沒有提供 mkfs.ext3,雖然 android source code 裡面有e2fsprogs,但沒有 build 出來。
如果使用 android source code 裡提供的 1.40.x 版的e2fsprogs,cross compile 時,要用 LDFLAGS=-static ./configure –host=arm-none-linux-gnueabi –with-cc=arm-none-linux-gnueabi-gcc 才行,只用 –host 的話,是不行的。我試了好一陣子才試出來。
如果你自己下載 1.41.x版的e2fsprogs,編譯指令簡單多了,只要用 LDFLAGS=-static ./configure –host=arm-none-linux-gnueabi 就行了。
為什麼會提到 1.40.x 跟 1.41.x 呢?這是因為我拿 mkfs.ext3 到 android 環境下格式化分割區,在格式化以後卻發現無法 mount,mount 會出現 Invalid argument的錯誤。原本以為是版本的問題,可是試過1.40.8、1.40.9跟1.41.x以後,發現都不行。接著再試 busybox 提供的 mke2fs,也不行。
實在是沒辦法,只好用 dd 來做。不過 dd 速度真的是不快,而且為了要能把 image 放到 sd 卡上,我還用了 gzip 來壓縮。既要在 android 機器上解壓縮,又要做 dd,自然是慢到爆。 (指令是 gunzip -c xxx.img.gz | dd of=/dev/block/mmcblknpn)
最後的最後,終於想到要注意 mke2fs 關於 /etc/mtab 的警告訊息,它一直很盡責的告訴我,沒有 mtab,它沒辦法檢查分割區是否有 mount 起來。所以我在 /etc 加了一個空的 mtab,再去 mke2fs,完成以後再 mount,想不到就可以了耶~
追查 e2fsprogs 的原始碼,發現的確是有檢查 mtab,而且沒有 mtab 的時候,它不會去製作 journaling,換言之,也就是分割區的確格式化了,但是沒有 journaling 訊息,這也導致了無法 mount 的情況。
呼應主題,mtab有多重要呢? 拿 HTML 的 h1~h7 來比喻的話,mtab 大概有 h1 那麼重要!!!
wine的慘事

有用 wine 跑 win32 application 的人都知道,常常會遇到 .dll 缺東缺西的。這一天,我自作聰明地就想,反正裝的是雙系統,如果把 .wine/drive_c/windows 跟 .wine/drive_c/Program files 直接指向 windows 分割區裡的 windows 跟 Program files 資料夾的話,應該就萬無一失了吧~
所以立馬就先把 .wine/drive_c 下的 windows 跟 Program files 更名,做 symbolic link 連到 windows 分割區下的 windows 跟 Program files,接著就跑 excel 試試看。哈哈~我真是太聰明了,果然可以執行,但是有一些錯誤產生,後來想說還是照網路上的教學文件,用 winetricks 裝上必要的元件,然後直接裝 office 2003 好了。所以就把 symbolic link 移除掉,把之前更名的資料夾改回原名,進行安裝。這次就可以順利跑起來了,不過沒有詳細去試。
然後,就想說要回 windows 去收信,結果,悲劇就發生了,Windows 一直重開機、一直重開機…試著用安全模式開進去,不行,也是會重開機。我猜想,應該是某些檔案被覆蓋或被修改了,所以我重回到 Linux 下,把 .wine 更名,然後執行 wine,看 wine 到底在 .wine 下產生了什麼檔案。我根據這些產生的檔案,去另外一台完好的 windows 下把這些檔案複製回來,放到 windows 分割區對應的路徑下。哈,這次可以進安全模式了,可是如果以正常模式開機,還是會一直重開機。既然可以進安全模式了,那麼,系統還原就派上用場,不過,只有一次,因為在windows還活著的時候,我把保留給系統還原的空間砍到最少。不幸的是,還原的結果是….失敗。
啊!!!!!沒辦法了,重灌吧!!!鄉親啊,千萬不要學我這樣子啊!!!
