電影流水帳(2014/4/15~2014/4/23)

Natalie Portman 本來想貼 Kim Basinger 的,但在 flickr 裡沒找到合適的照片,所以後來就放棄,改用 Natalie Portman 的照片了。

  • Grudge Match (IMDB, Wikipedia),中譯:進擊的大佬。這部電影是兩個老拳擊手 Razor 跟 Kid 的故事,在三十年前兩人較量,雙方各勝一場,但之後隨著 Razor 的隱退,雙方算是未分勝負,在彼此心中都留下遺憾。三十年後,當年主辦拳賽的人的兒子出面邀約,Razor 迫於生活壓力接受了,而 Kid 為了分出勝負也欣然同意。兩人因為這場拳賽,重新訓練自己,並且把當年的事情弄清楚。最後這場拳賽以 Razor 獲勝告終,但兩人心裡的誤會與種種也都釋然,算是完美的結局。
    片尾有意外的花絮,非常有趣。就是主辦者因為拳賽辦的很成功,就再次找了 Mike Tyson 跟 Evander Holyfield 來談,這兩人也曾經對戰了兩次,並發生了有名的咬耳朵事件。三人談了許久,Evander  都不答應,最後主辦人說,我安排你在「醉後大丈夫 4」裡尬一角,Evander 才勉為其難考慮並答應。如果你看過「醉後大丈夫」的話,就會知道這是因為 Mike 在「醉後大丈夫」有尬一角的關係,這一幕還蠻逗趣的。
    史特龍有演過有名的「洛基」系列電影,這我知道,但我就不知道勞勃迪尼洛有演過拳擊電影了,這演員的組合很有意思。再加上美魔女 – Kim Basinger 跟老牌演員 Alan Arkin,整部電影相當不錯,還蠻好看的。
  • Ice Soldiers (IMDB, Wikipedia)。這部電影在臺灣好像沒上片的樣子,我是因為搞混了 Ice Soldiers 跟 Winter Soldiers 才會看這部電影。
    1960 年左右,蘇聯人研發出三個基因改造過的士兵,就用飛機打算載到美國去進行破壞,但天候不佳,飛機墜落在北極圈裡 (大約是加拿大跟阿拉斯加附近) ,駐扎在那附近的美軍發現了他們,就把士兵弄回來,結果士兵展開屠殺,滅了基地裡的所有男人,並玷污了一個女人,只有她生還。
    四十幾年後,又有勘探隊來到這基地,名義是要開採石油,實際上,是博士 Malraux 透過種種關係而來到這裡。對,Malraux 就是那個女人的兒子,為了調查那三個士兵而來到這裡。總之就是在大風雪裡進行搜尋,然後找到那三個被冰起來的士兵;這三個基因改造過的士兵身體強壯,再次復甦展開殺戮。Malraux 逃過一劫,循線去追那三個人。在路上遇到一個獵人,跟他一起去追並且把他們消滅,大概就這樣子。
    電影的場景都在冰天雪地裡,風景壯闊,只是我一直在想,他們為什麼都沒戴太陽眼鏡,這樣不會雪盲嗎?我看電影看的都快瞎了。飾演 Malraux 的男主角就是演 Prison Break 的 Dominic Purcell ,現在每次看到他就會想起 Prison Break,雖然我沒把 Prison Break 給追完。
  • Thor: The dark world (IMDB, Wikipedia),中譯:雷神索爾2-黑暗世界。我對雷神索爾的故事比較沒興趣,可能是因為故事缺乏心理層面的因素吧。為了 Marvel 埋的線索,還是看了。
    這次故事是因為九星彙集的時空混亂,導致遠古與 Asgardian 爭戰的 Dark Elf 的秘密武器被釋放出來,而這個武器又不巧地被 Jane 帶走。於是 Dark Elf 的倖存者就去找 Jane,Jane 這時又不巧地被 Thor 帶到 Asgard,於是整個 Asgard 被 Dark Elf 入侵,陷入混亂,疼愛 Loki 的母后也掛了,後來 Dark Elf 不敵索爾逃走了。Thor 跟父王 Odin 的意見再次不合,Odin 想在 Asgard 決戰,但 Thor 卻想在境外決戰,就違抗命令,跟牢裡的 Loki 聯手,Thor、Jane、Loki 三人就靠著同伴的幫助,出了 Asgard。
    事情果然沒有 Thor 想的簡單,Jane 身上的武器被 Dark Elf 吸走,Loki 在此也死去。Thor 不知道該怎麼回去,跟 Jane 走到一個山洞,Jane 發現這裡有些不屬於這裡的東西,就進了時空裂縫回到地球 (這也太巧了)。在知道 Dark Elf 要做什麼之後,Jane 跟 Dr. Eric 剛好也在研究九星的現象,知道怎麼阻止 Dark Elf,於是就在地球展開決戰,最後阻止了 Dark Elf。
    我覺得比較奇怪的是那個武器 – Aether ,在 Jane 這樣搞一搞之後就可以阻止 Dark Elf?? 有點不太合理。然後,Darcy 還是一樣風趣,Loki 並沒有真的死掉,反而回到 Asgard 取代了 Odin,Odin 的生死則未明。最後的片尾透露出奇妙的線索,有人說,兩個戰士交給收藏家的就是 Aether 。

用 mutt 閱讀 Thunderbird 郵件

上網找了不少資料,終於試出來方法:

  1. 安裝 mutt
  2. 將目前目錄切換到 $HOME/.thunderbird/xxxx.default/Mail 下
  3. 輸入 mutt -R -f Inbox 即可。如果你在 Thunderbird 裡有多個資料夾,你會發現在目前的目錄下就有對應的檔案或資料夾,將 Inbox 替換為你要閱讀的資料夾名稱即可。用 -f 是指定檔案;用 -R 是表示以唯讀開啟,如果不用 -R,像是刪除或修改什麼的,mutt 是會真的去處理的。

有附件時,按 v  會讓你選擇檔案,這時就可以選 s 另存新檔,或是按 enter 以 mailcap 來顯示。用 mailcap 的話,可以在 $HOME/.mailcap 裡定義 content type 與其對應的處理。但是在命令列模式下,mailcap 能做的有限就是。

PDF 的話,可以用 pdftotext/pdftohtml 來處理,如果轉成 html 的話,就可以再用 w3m 來顯示。老話一句,在命令列下,像這種很需要圖形介面的,能做的真的有限。

電影流水帳(2014/4/2~2014/4/14)

她是寂寞拍賣師的女主角 Sylvia Hoeks,在片中飾演一個有人群恐懼症的女人,讓人憐愛,也因此主角 Virgil 才會上勾。

  • The best offer / La migliore offerta (IMDB, Wikipedia),中譯:寂寞拍賣師。Virgil 是個知名的拍賣師,某天他接到了神祕女子 Claire 打來的電話,要請他去大宅裡估價。幾次電話下來,他被勾起了好奇心,於是前往一探究竟。幾次交手下來,他慢慢的愛上了 Claire。再加上機械人的組件與工匠 Robert 的推波助瀾,他成功的讓有人群恐懼症的 Claire 擺脫了恐懼,決定兩人廝守。換言之,他無可自拔地陷入了這場愛情騙局。同居以後,他去倫敦進行最後一次的拍賣,回來卻是人去樓空,他珍藏的畫不見了,心也跟著死了。我覺得最後的這段劇情雖然都沒有說話,但是很清楚的表達了 Virgil 心裡的那種空洞感、失落感與被欺騙的心痛。
    男主角是由 Geoffry Rush 飾演的,跟之前 The book thief 的感覺又是截然不同。看完這部電影最大的感想就是要多陪陪獨居的長輩,免得他們不小心因為寂寞而受騙。寫著寫著,我不知怎麼地想起之前李安拍的飲食男女裡的一場戲,老朱最後也是宣佈結婚,豈料對象竟是錦榮,而非年紀相當的梁媽媽,當場讓梁媽媽氣的暈倒。
  • Saving Mr. Banks (IMDB, Wikipedia),中譯:大夢想家。嚴格來說,這應該是 Mrs. Travers 的故事才是,Disney 只是配角。話說,Disney 想用 Mrs. Travers 筆下的 Mary Poppins 故事來拍電影,前前後後花了二十年時間,終於請到 Mrs. Travers 來到 Disney 公司討論劇本並希望能簽下合同。然而,Mrs. Travers 打的卻不是這個主意,她來到美國 Disney 公司,是想要讓他們碰軟釘子,自己知難而退。之後,Mrs. Travers 撕破臉打道回倫敦,Disney 鍥而不捨追到倫敦,終於以誠意說服了 Mrs. Travers 簽下合同,順利拍出 Mary Poppins 這部電影。
    飾演主角 Mrs. Travers 的 Emma Thompson 演技非常的令人注目,讓其他演員相形失色,幸好飾演 Disney 的 Tom Hanks 能與之抗衡,要不然可能就是她唱獨角戲了。電影裡交錯著 Mrs. Travers 的童年,讓人能理解為什麼他會寫出 Mary Poppins 的故事以及最後在戲院痛哭的原因,劇情很圓滿。電影的最後有播出 Mrs. Travers 與劇本小組討論的錄音,那個口音乍聽之下會讓人以為是戲裡的 Emma Thompson 在講話,真的是佩服 Emma Thompson,不過或許這也是故意找有英國口音的 Emma Thompson 來演的原因吧。

小試 LXC

開始試試看 LXC,LXC 是輕量級的虛擬環境,沒有摹擬硬體層,硬體層是跟 Host 共用,最大的好處就是建一個 container 的成本遠比用 VirtualBox/VMWare 建 VM 來的低。

Ubuntu 12.04 上預裝好的 LXC 是 0.75 版,現在已經是 1.0 了,要使用最新的版本,可以用這個 PPA:ppa:ubuntu-lxc/stable 。在 0.75 時,只要安裝 lxc 即可;到了 1.0 版,拆成兩包:lxc 跟 lxc-templates ,所以安裝時要用 sudo apt-get install lxc lxc-templates 。

主要的操作,ls /usr/bin/lxc-* 就可以看到,這裡講一下比較入門的指令 (其實是我現在也只有用到這些):

  • 建立 container :sudo lxc-create -n container_name ,加 -t 可以指定要使用的 template,template 可以想作是 distribution,前面提到的 lxc-templates 裡面就是放已經客製好的 template,也可以自己做。所以你可以建 archlinux 的 container 或是 opensuse 的 container 來練習。
  • 刪除 container :sudo lxc-destroy -n container_name
  • 啟動 container :sudo lxc-start -n container_name ,執行完,終端機會馬上被 container 接手,輸入預設的帳號跟密碼 ubuntu/ubuntu 就可以登入。如果不想被 container 接手,可以加上  -d 。
  • 停止 container :sudo lxc-stop -n container_name
  • 列出現有的 container: sudo lxc-ls -f
  • 連上已經啟動的 container :sudo lxc-console -n container_name
  • 連上已經啟動的 container 並執行指定指令:sudo lxc-attach -n container_name command

大致上就這樣,現在還有 docker ,其實它就根植在 LXC 上,主要是簡化自動化操作,大部分都用來測試,晚點再來看看怎麼用。

參考資料:

 

 

PHP Cannot create references to/from string offsets

之前在自家的 wordpress 上用了 muki-tag-cloud ,在翻 apache log 時,發現常會出現這錯誤:

PHP Fatal error: Cannot create references to/from string offsets nor overloaded objects in wp-content/plugins/muki-tag-cloud/widget.php on line 230

今天發狠找出原因了,首先還是要先瞭解 PHP 的 reference 是幹嘛的,我覺得這篇 PHP Reference 測試 不錯,裡面沒什麼解說,就是幾個範例與執行結果,看完大概可以了解到 PHP 的 reference 的行為是什麼。

接著就是試著寫小程式複製出錯誤。

可以複製出來之後,就知道問題在哪裡了 (好吧,我知道 log 的訊息其實很清楚,但我對 PHP 不熟,所以…),PHP 不允許建立字串中字元的參考。知道問題了,就可以解決了,後來就簡單加上判斷,如果發現 $widget[‘callback’] 是字串的話,就跳過,不建立 $widget[‘callback’][0] 的參考,如此一來就解決問題了。

順手發了 pull request 給作者,希望是會改,要不然每次更新這 plugin 時,都要再改一次。

awk 的 pipe

之前都很笨,用 awk 處理完,還是都先用 printf 輸出到檔案,再用 sh 去執行。今天終於去查了 awk script 裡是否有類似 system() 的用法,果然 awk manual 裡就有提到 system() ,不過該小節建議了更好的做法,就是直接用 | 把輸出的指令 pipe 到 sh 去。

作法大致是這樣:

awk '{printf("cp %s /media/usbdisk%s\n", $1, $1) | "/bin/sh" }' files-list.txt

loopback device

要掛載一個 image,就得利用到 loopback device,一般來說只要在 mount 時,指定 -o loop 跟 image 檔名就可以了,例如:sudo mount -o loop your_image /mnt

但是,我遇到 image 檔案無法掛載的情況。用 file 指令去看,發現到 image 檔裡有多個 partition 。

precise-desktop.img: x86 boot sector; partition 1: ID=0xc, active, starthead 1, startsector 32, 147424 sectors; partition 2: ID=0x83, starthead 45, startsector 147456, 4864000 sectors, code offset 0x0

後來想起多年前看過的 losetup,就看了一下 losetup 的使用說明,裏面提到 -o 這個參數,這是用來指定 offset 的,也就是說,可以把 image 檔案裡從指定 offset 開始的地方指派到某個 loopback device 去。於是根據 file 的資訊,算出 offset 是 147456*512 = 75497472,然後用 sudo losetup -o 75497472 /dev/loop0 precise-desktop.img 去指定,這樣 /dev/loop0 就對應到 precise-desktop.img 檔案裡的第二個 partition ,最後就可以用 sudo mount /dev/loop0 /mnt 掛載了。

反過來,也可以對一個檔案做 fdisk。這時要先預先用 dd 幫檔案配置空間,例如要配置一個 512M 的檔案:dd if=/dev/zero of=my.img bs=1M count=512 。接著一樣用 losetup 把 image 檔指派到 loopback device:sudo losetup /dev/loop1 my.img ,最後就可以用 fdisk 來分割了。

debian package 的相依性圖形

找了半天找不到適當的指令顯示套件的相依套件,想起之前無意找到的 apt-cache dotty,就想說用圖形來看套件的相依性還是最快的。

產生圖形的方法:

  • apt-cache:apt-cache 本身就有提供 dotty command 可以產生,用法是 apt-cache dotty your_package > out.dot
  • debtree:debtree 需要另外安裝,好處是有提供更多額外的參數來產生圖形,用法是 debtree your_package > out.dot

接著就可以利用 dot 指令來產生圖形了,dot 是 graphviz 套件提供的指令,可以根據 dot 語法來產生圖形,用法是 dot -T png -o out.png out.dot。用 apt-cache dotty 產生的 dot 語法,會讓 dot 產生圖形的速度變得非常慢;而 debtree 所產生出來的 dot 語法,就不會如此。我猜想是 debtree 有預先排除掉 libc6, libstdc++6 與 zlib1g 的關係吧。

電影流水帳(2014/3/20~2014/4/1)

pr006 Georgie Henley,飾演納尼亞傳奇裡的 Lucy,從第1集到現在,轉眼也過了5年,每次看這種主角是小女孩的系列電影,都會有「啊~長大了啊」的感嘆。

  • Iron Man 3 (IMDB, Wikipedia),中譯:鋼鐵人3。Tony 閒閒沒事幹,做了好多鋼鐵人。其實 Tony 在復仇者聯盟紐約一戰之後心裡很害怕,開始有恐慌症,這也是為什麼做鋼鐵人的原因。這次的對手是多年前被 Tony 放鴿子的 Aldrich 博士, Aldrich 在被確定放鴿子之後,本來想自殺了,後來想開了,發奮圖強,跟 Maya 一起發明了很威的東西。這次就是 Aldrich 的復仇,他利用電影特效以及一個演員創造了十環幫與神祕的首腦,威脅全世界與 Tony,背地裡,其實是他的武器在威脅世界。Maya 跑去找 Tony 要說出真相,這時 Tony 的房子被攻擊了,Tony 在救出 Pepper 跟 Maya 之後,展開反擊,之後人就不見了。Pepper 帶著 Maya 逃走,並且聽 Maya 說故事,然後 Aldrich 就跑出來把兩人帶走了。Tony 意外掉到某個小鎮,遇到了小男孩,兩人建立起奇妙的友情,Tony 並因此領悟到他其實不需要恐慌,有問題,解決就好了,反正工程師雙手萬能。透過萬能的電腦,Tony 也拼湊出 Aldrich 就是幕後主使者。Aldrich 也趁 Tony 不在的時候綁架了總統,並且收買了副總統,打算掌權。Pepper 被 Aldrich 改造,Tony 為了救他,與 Aldrich 展開決戰。大戰到最後,眼看 Tony 就要落敗,被改造過的 Pepper 大展神威,把 Aldrich 打趴。故事的最後,Pepper 得到醫療,變回原來的樣子;Tony 拿掉了身體裡的碎片,也不再恐慌;鋼鐵人三部曲算是告一個段落。
    這部電影的精彩刺激程度沒有前兩部來的好看,比較偏向於交代鋼鐵人的心病,我覺得這樣很好。超級英雄也是人,人的喜怒哀樂、心情的高低起伏,他們都有,如果完全強調他們強的那一面,那就不好看了。另外一個亮點是馬克 47 號,可以遙控組合真的很酷,但經常性的失靈也很逗趣,為電影增添不少樂趣。
  • The Chronicles of Narnia: The Voyage of the Dawn Treader (IMDB, Wikipedia),中譯:納尼亞傳奇-黎明行者號。哥哥跟姊姊跑去美國了,只剩下弟弟跟妹妹在倫敦,寄住在親戚家裡,跟表弟處的不是很愉快。某天,三人又快要吵起來的時候,牆上畫裡的海水突然動了起來,海上的船也隨著海浪搖搖擺擺,風浪越來越大、越來越大,海水流出了畫框,淹沒了整個房間。這三個人就隨著海水流到了納尼亞去,並且遇到了賈思潘王子。他們就跟著王子航行到了一個島,發現這裡有怪霧會把人帶走。接著就進行調查,在路上遇到一個巫師,好心的跟他們說明了是哪裡有問題,要把七把劍都收集到放到亞斯蘭桌上才能解決,然後就出發跟隨著晨星去冒險了。在航海的途中,表弟變成飛龍,這讓表弟非常沮喪與害怕,但經過老鼠劍士的鼓勵,他們繼續航行。最後終於要對付大魔王了,他們陷入了苦戰,飛龍表弟被打落,但卻意外恢復人形,把所有的劍都放到了亞斯蘭桌上,打敗了大魔王。打敗大魔王之後,他們一起見到了亞斯蘭並且談話,之後,老鼠劍士到了亞斯蘭的國度,賈斯潘認清了自己該做納尼亞的王,而三人則是回到倫敦,結束這場冒險。回到倫敦後,表弟對納尼亞完全改觀,常跟表哥表姊聊起納尼亞的事情。
    就蠻普通,維持跟前兩部一樣的風格。我沒看賈斯潘王子那一集,但看起來似乎沒什麼影響,有機會再來看好了。