電影流水帳(2013/11/9~2013/11/19)

Miley-Cyrus-Twitter-Picture1 copyMiley Cyrus ,就是演孟漢娜的女主角,Disney 力捧的新一代女星。不算漂亮,但是笑起來很可愛。

  • So Undercover (IMDB, Wikipedia),中譯:女生部裡的秘密。不怎麼樣的青春校園片。Molly 高中畢業以後就幫著他私家偵探的爸爸在調查案件,某天,自稱是 FBI 的人要 Molly 進學校去幫他查案,在生活壓力下,她只好接下這任務,去學校幫忙查案。查案的過程裡,就幫著姊妹會、跟男生約會等等的,說實話,還蠻沒邏輯性的。最後的結果頗出人意料,原來委託 Molly 查案的 FBI 並不是 FBI,真相大白之後,幫著真正的 FBI 將這個人抓起來。
  • The paperboy (IMDB, Wikipedia),中譯:性腥聞。有點像是紀錄片的形式,整體來說有點悶。片子一開始是由一個黑人女僕來進行描述,Jack 是 Ward 的弟弟,目前輟學,幫著爸爸的報社送報。Ward 則是一個記者,Ward 跟他的朋友 Yardley 在調查一件可能是冤獄的事情,Jack 就幫著開車。冤獄的人是 Hillary,被控告殺害了一位警長。Charlotte 則是一個有魅力的女生,不知道為什麼跟在獄中的 Hillary 勾搭上了,Ward 為了釐清案情,就找了她來一起調查。在調查的過程裡,Jack 愛上了  Charlotte ,也發現了一些 Hillary 可能不是兇手的線索。到後來,發生了意外,Ward 被虐待,Yardley 發表了報導,讓 Hillary 得以無罪釋放。Hillary 一出獄就去找了 Charlotte ,並帶走她。隔了好幾個月之後,Charlotte 在這期間寫了封信給 Jack,跟他說她選錯了,並不幸福,Ward 也慢慢復原並走出創傷。Jack 在父親結婚這天爆發了,找了哥哥一起去 Hillary 的住處,發現 Charlotte 被殺,衝突之下,哥哥 Ward 也被 Hillary 殺掉。Jack 趕緊跑掉,在沼澤裡躲藏了一夜,才又趁著 Hillary 在沼澤裡找 Jack 的這當下,回到 Hillary 的小屋把屍體運走,並報警處理。故事就這樣結束了,Jack 後來成為知名的作家。

Android 與網路攝影機(1)

大部份網路攝影機都會提供多種格式,例如 AVI、Motion JPEG 等等,這邊我選擇的是 Motion JPEG,主要原因是 Android 有直接支援這種格式 ,不會牽涉到「可能沒有解碼器」的問題。

首先是環境的準備,因為手頭沒有一般市售的網路攝影機,只好搭配手頭上有的 USB Cam ,克難的自己弄一個。 很幸運,正好有人用 python + OpenCV 寫了一個簡單的 Streaming Server,輸出格式正好就是 Motion JPEG ,網址是 https://gist.github.com/n3wtron/4624820

然後播放的部份,我是參考 StackOverflow 上的這篇 Android and MJPEG – Stack Overflow ,程式主要是繼承 SurfaceView 做出 MjpegView 來使用,MjpegView 裡則使用 thread 搭配 MjpegInputStream 去讀取指定位址的 Motion JPEG,進行播放。但這個程式有一個小問題,在 Android 3.0 以後,以 HttpClient (MjpegInputStream 裡使用了 HttpClient )去讀取網路資源時,會丟出 NetworkOnMainThreadException 。因此需要對程式進行改寫。

很幸運,StackOverflow 又有人提出解:Android ICS and MJPEG using AsyncTask – Stack Overflow 。這樣拼拼湊湊之下,要播放網路攝影機上的影像不是難事。

P.S. StackOverflow 上的範例程式有個問題,就是沒妥善處理 onPause/onResume,因此在按 Home 或切到別的程式再回來時,會沒辦法繼續播放。

[Android]用 am 輸入 MMI code

在 Android 裡,用 am 撥號,可以這樣用:am start -a android.intent.action.CALL -d tel:09xxxxxxxx

在撥號畫面裡,使用 MMI code 可以帶出一些特殊的畫面,每隻手機都不太一樣,但一般來說都會有 # 這些特殊字元,因此 -d tel:*#38# 這樣的參數就會失效。am 的原始碼在 frameworks/base/cmds/am 下,這邊可以看到 am 會用 Uri.parse 去解析 -d 後的參數,問題就出在這裡。因為是以 Uri 處理,因此也需要遵循 Uri 的規則,# 應該要使用 %23 才行。

所以使用 am start -a android.intent.action.CALL -d tel:*%2338%23 就可以成功。

小技巧是,你可以在編譯後,執行 out/host/linux-x86/bin/monkeyrunner ,在裡面依序輸入,就可以取得編碼後的 Uri 字串:

[python]
from android.net import Uri
print Uri.encode(‘your_string’)
[/python]

GoAgent 3.0.8 小記

升級以後,就爆炸了。而我居然直接覆蓋,沒留原來的檔案,只能摸摸鼻子把它修好。

是故,得重新設置,主要就只要改 proxy.ini 。第一個要動的部分是把 [proxy] 裡的 enable 設為 1,然後修改 host/port,這是因為公司內部需要透過 proxy 上網,而我又弄了 cntlm 去繞過 microsoft proxy server 的 NTLM 的關係,這裡的 host/port 是我的 cntlm 的 proxy/port。第二個要動的是 [gae] 裡的 appid/profile/obfuscate,appid 是 goagent 說明文件有特別提到的部分,profile 是為了解決 403 錯誤,詳情可以閱讀 【已解决】goagent打开页面出现403错误:Your client does not have permission to get URL /2 from this server,obfuscate 則是為了解決 Connection() argument 1 must be OpenSSL.SSL.Context 問題,這是我閱讀 local/proxy.py 以後看到的,設置 validate 應該也可以解決,但我沒試。

server 部分只要執行 server/uploader.bat 重新上傳就行了,執行的時候,會詢問你 appid/帳號跟密碼,依次輸入就可以。uploader.bat 裡蠻有趣的是, python 可以直接執行一個 .zip 檔。在閱讀原始碼的時候,發現 server 的版本沒跟著調整,仍然是 3.0.7 版。在上傳以後可以在瀏覽器裡輸入 <your_appid>.appspot.com/2 看是否順利運行。

電影流水帳(2013/10/31~2013/11/8)

Aubrey Plaza Safety Not Guarantee 的女主角 Aubrey Plaza ,我覺得還蠻漂亮的。今年8月的 GQ 有她的專訪喔。

  • Safety Not Guarantee (IMDB, Wikipedia),中譯:超時空徵友啟事,好像有在 2012 高雄電影節上映過。雜誌社發現了一則徵求同伴一同回到過去的啟事,就決定去採訪這個人 Kenneth,特約記者 Jeff 找了兩個實習生一起去。Jeff 其實只是想回到那個地方找舊情人,實習生 Darius 則假裝自己有興趣,去面試當同伴,結果意外成功。Kenneth 開始訓練 Darius ,為回到過去做準備。在這段準備的日子裡,發生了不少事情,兩人相互愈來愈有好感,而 Jeff 也重溫了跟舊情人的感情。到了要回到過去的那天,Darius 的身份曝光,Kenneth 驚訝之餘,自己就逃走了。Darius 緊跟著追去說明,最後在 Jeff 與 FBI 的見證下,兩人搭著時光機器回到過去。故事還蠻有意思的,有時光機器的元素,但科幻元素並不濃厚,主要還是有意思在人跟人之間的互動。Kenneth 在營火旁唱的歌蠻好聽的,Youtube 上有人節錄出來了 <a href=”http://youtu.be/_Dz_nQYwkl4″>http://youtu.be/_Dz_nQYwkl4</a>。
  • The Experiment (IMDB, Wikipedia),中譯:判獄風雲。蠻沈重的片,大意就是一個監獄實驗,這個實驗意外挖掘出人的另外一面。一開始大致介紹每個人,並且有穿插訪談,讓觀眾了解每個人大致的個性。然後就關進去了,在監獄裡,因為相互的不了解跟誤會,不滿的情緒慢慢積累,並且蔓延開來。在扮演犯人的一方被壓迫到極致的最後,就是爆發了衝突,有人死了,獄警被追著打,在打開監獄大門看到陽光的一瞬間,突然大家想起了自己的身份而停手。之後就在房子前面等車子來接,有人死了,活著的人都拿到了錢,但是心裡都帶著疙瘩。
  • Seeking a friend for the end of the world (IMDB, Wikipedia),中譯:末日倒數怎麼伴。在衛視西片台看的電影,故事很有意思。因為有外太空的隕石即將到地球,無法避免,這等同是宣告了世界末日的到來。Dodge 樓下的鄰居 Penny 酒醉,走錯到了 Dodge 的房子,Dodge 只能先收留她,等到她酒醒,就送她回去。兩人邊走邊聊,Dodge 卻意外發現了自己的太太有外遇,然後拿了一堆信回來。Dodge 非常難過,出去胡搞了一夜,原本想要自殺,但自殺失敗,反倒收養了一隻狗。接著他在新聞看到有暴民,馬上就有人丟石頭進來,他趕緊去找 Penny ,要一起逃走。兩人邊走的路上,相互了解,並且愛上對方。到了 Dodge 爸爸那邊,Dodge 跟父親和解,並請父親帶 Penny 走,自己獨自開車回到住處。開門一進去,Dodge 看到他的管家來打掃,管家跟往常一樣跟他打招呼,Dodge 生氣的說「怎麼不跟家人團聚還來這邊打掃呢?」管家說,「不來這兒打掃,我也不知道該去哪兒啊?」 Dodge 突然氣消了,跟管家說,「我不是這個意思,抱歉。」管家說沒關係,笑著說,那麼,下週見囉。Dodge 說,「好」。接著,Dodge 看了最後一則新聞,主播在播報隕石來的時間之後,跟大家告別;然後持續的聽著音樂,直到沒電睡著了。醒來的時候,發現 Penny 也回來了。兩人開始一直聊天,聊到說,怎麼沒早點認識之類的。我印象很深的一句話,Dodge 說,「如果不是這種情況,恐怕我們不會在一起,而你也不會愛上我…」大致就這樣,相當不錯的電影,蠻值得一看的。

電影流水帳(2013/10/23~2013/10/30)

Rose ByrneRose Byrne,具知性美的女演員,在 The internship 裡飾演 Google 的員工,跟實習生 Nick (Owen Wilson) 後來發生戀情。

  • The internship (IMDB, Wikipedia),中譯:實習大叔。故事還蠻勵志的,主要是想講除了專業能力強以外,跟人溝通、和平共處的能力也很重要。兩個失業的中年大叔,利用短期進修的學生身分加入了 Google 實習計畫,在裡面因為年紀的關係,不得人緣,後來就一群不得人緣的人湊到一起,變成一組。這個小組原先是不和的,後來在兩個中年大叔的協調下,慢慢有了向心力,到最後甚至可以跟最強的一組競爭。最後當然是順利拿到可以在 Google 工作的機會,小組的成員也因為這次的經歷而更為成長。
  • Assassin’s Bullet (IMDB)。這片,我看到十幾分鐘後,就用快轉看完了。故事圍繞在女主角身上,女主角因為小時候的創傷跟際遇,導致了她有多重人格,所以她一下子是老師,一下子是舞孃,一下子是殺手。因為沒細看,所以我推測是美國在女主角失去雙親後,把她導到某個計畫去,結果艱苦的訓練導致她出現了多重的人格。男主角受託進行調查,最後發現他所愛上的人跟所要調查的人居然是同一個,最後女主角沒有殺死男主角,遠走高飛,就這樣。

Vim C-] 失效

問題描述:vim 裡確定 tags 的設定都正確,但按下 Ctrl-] 卻沒有跳到游標所在函式的定義。

問題發生要件:

  1. 使用 gcin
  2. 使用 gnome-terminal, terminator … 等非 xterm 的終端機程式

原因:

gcin 設定的「內定輸入法」裡,「Ctrl 輸入標點符號」被勾選了。將這個設定取消,就沒有問題了,因為勾選時, gcin 會將 Ctrl-] 轉譯為 “」”。

電影流水帳(2013/10/10~2013/10/22)

Emma RobertsEmma Roberts 在 We are the Millers 裡飾演女兒的角色,電影裡除了 Jennifer Aniston 這個熟女之外,就屬她最正了。

  • We are the Millers (IMDB, Wikipedia),中譯:我家就是米家。David 是個毒販,在幫鄰居 Kenny 的時候,被洗劫了所有的錢跟他借來賣的毒品,所以他被追殺。毒梟給他一條生路,要他去墨西哥走私毒品回來,David 為了生存,再怎麼難也只能答應。David 本來是很苦惱的,結果坐在路邊的時候,看到露營車而想出一個好主意,就是假扮出遊的一家人去墨西哥,就不會被發現了。於是他就找了 Kenny、Rose、Casey 假扮兒子、媽媽跟女兒,就去墨西哥了。運毒的過程有驚險,有搞笑,最後是平安的運回美國,並且設計想打算白吃 David 的毒梟進監獄,然後接受証人保護計劃,一家人假戲真做的住到一起,算是一個好結局。這部片還算蠻好笑,可能是因為我覺得 Kenny 本身就很有喜感吧。
  • Pacific rim (IMDB, Wikipedia),中譯:環太平洋。機器人電影,大致上就是日本怪獸片加上類似福音戰士的巨大機器人這樣子,劇情相當的簡單。太平洋海溝出現時空裂縫,怪獸跑來太平洋周圍肆虐,人類製造超大機器人與之對抗,經過了十數年之後,終於到了生死存亡的關鍵時刻。怪獸也愈來愈厲害,各國受不了無止盡的以物資支援製造機器人計劃 (這裡也很妙,其實明知蓋圍牆是無效的,還是打算這樣做,這到最後就會像是「進擊的巨人」講的那樣,人類最後只能居住在一定的範圍裡,其他地方都被怪獸佔領。),計劃負責人決定在最後的有限時刻奮力一搏,用核彈把時空通道炸掉,故事就這樣展開。最後當然是皆大歡喜的把通道炸掉,怪獸不會再來地球,男女主角也相擁,未來將踏上相知相守的旅程 將見證地球美好的未來…

Python patterns – Visitor

開始來看 Python patterns,第一個看的是 Visitor。

  1. __mpro__ :這個內建的隱藏屬性可以列出父類別以及其上的所有類別,程式利用這個來取得繼承樹,並進行訪問。這部分的說明可以參考 What does “mro()” do in Python? – Stack Overflow
  2. 程式利用 getattr() 先去查看類別是否有實作 visit_xxx 方法,如果有就呼叫,如果沒有,才呼叫 generic_visit 的方法。

這跟 Visitor Pattern 似乎不太一樣,作者也在 Extrinsic Visitor Pattern in Python with support for Inheritance – Peter Hoffmann 裡說了,這是一個變形過的 Pattern。

如果要 Python visitor 的範例,可以參考 PythonWise: Visitor Design PatternThe Visitor Pattern in Python

補充:後來看了 ast module 以後,其實作者提的就跟 ast module 裡一模一樣。主要還是應用在 Tree 上。

gtk+ windows 應用程式裡的文字亂碼

大多數的 gtk+ Windows 應用程式都有相似的問題。

第一步,要先知道應用程式是使用哪裡的 gtk+ library,一般省麻煩的,會自己包在一起,安裝時會放在安裝目錄下。所以可以找到 etc/gtk-2.0 這個目錄,請編輯 gtkrc ,加上:

style "user-font"
{
    font_name="Sans 12"
}
widget_class "*" style "user-font"

就可以解決了。

如果不是在安裝目錄下的,就得自己回想一下看之前安裝在哪裡了。