電影流水帳(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),中譯:納尼亞傳奇-黎明行者號。哥哥跟姊姊跑去美國了,只剩下弟弟跟妹妹在倫敦,寄住在親戚家裡,跟表弟處的不是很愉快。某天,三人又快要吵起來的時候,牆上畫裡的海水突然動了起來,海上的船也隨著海浪搖搖擺擺,風浪越來越大、越來越大,海水流出了畫框,淹沒了整個房間。這三個人就隨著海水流到了納尼亞去,並且遇到了賈思潘王子。他們就跟著王子航行到了一個島,發現這裡有怪霧會把人帶走。接著就進行調查,在路上遇到一個巫師,好心的跟他們說明了是哪裡有問題,要把七把劍都收集到放到亞斯蘭桌上才能解決,然後就出發跟隨著晨星去冒險了。在航海的途中,表弟變成飛龍,這讓表弟非常沮喪與害怕,但經過老鼠劍士的鼓勵,他們繼續航行。最後終於要對付大魔王了,他們陷入了苦戰,飛龍表弟被打落,但卻意外恢復人形,把所有的劍都放到了亞斯蘭桌上,打敗了大魔王。打敗大魔王之後,他們一起見到了亞斯蘭並且談話,之後,老鼠劍士到了亞斯蘭的國度,賈斯潘認清了自己該做納尼亞的王,而三人則是回到倫敦,結束這場冒險。回到倫敦後,表弟對納尼亞完全改觀,常跟表哥表姊聊起納尼亞的事情。
    就蠻普通,維持跟前兩部一樣的風格。我沒看賈斯潘王子那一集,但看起來似乎沒什麼影響,有機會再來看好了。

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

Stars Geoffrey Rush and Sophie Nélisse of "The Book Thief" at the opening reception at the Mill Valley Film Festival在偷書賊裡飾演養父女的 Geoffry Rush 與 Sophie Nélisse,兩人的互動流露出真摯的情感,很難想像 Geoffry Rush 會是神鬼奇航裡那個亦正亦邪的 Barbossa 船長。

  • The book thief (IMDB, Wikipedia),中譯:偷書賊。小說改編的電影,改編的不錯,故事溫馨。但我覺得比較奇妙的是,作者刻意以死神來講述一些段落,讀起來會有刻意的感覺。電影倒是還好,只有在片頭跟片尾才有死神的旁白出來,但在小說裡就很多地方了。
    故事主要是講小女孩 Liesel 的故事,小女孩 Liesel 的母親很窮,只能把 Liesel 跟弟弟送給人收養,在路上,弟弟死去,只剩下 Liesel。到了收養家庭以後,養父很慈愛,養母嘴巴刻薄,鄰居 Rudy 也對她很好,接著就是講 Liesel 的生活點滴了。說她為了想認字,去偷取書來看,在深夜跟養父一起念。生活裡也有遇到不一樣的人,例如被迫害的猶太人 Max。就這樣直到被空襲轟炸為止,在這個時間點,死神到來,並且帶走了所有 Liesel 才剛喜歡上的人與事。Liesel 再次孤單踏上人生的旅程,直到後來又遇上 Max ,最後是死神的旁白以及隱喻的場景,說明 Liesel 到了美國,並且活的很好。
  • I, Frankenstein (IMDB, Wikipedia),中譯:科學怪人-屠魔大戰。我覺得這部電影真的是不怎麼樣,劇情普普通通。
    Adam 被 Frankenstein 製造出來以後,沒多久就跟 Frankenstein 反目,所以就殺了 Frankenstein 的太太,Frankenstein 就追著 Adam 想復仇,後來在極地被冷死。Adam 帶著屍體回來埋葬時,遇到了惡魔,還好 Gargoyle 在附近,救了 Adam。Gargoyle 跟 Adam 解說了惡魔與 Gargoyle 的情況,可是因為 Adam 有感覺到被歧視,選擇離開。Adam 孤身一人生活了兩百多年,直到現代,才決定把所有惡魔都幹掉。於是,惡魔、Gargoyle 跟 Adams 這三方開始進行角力,這次的角力有人類科學家加入,他們是受雇於惡魔,在進行讓死人復活的科學研究。總之,打的亂七八糟之後,最後就是 Adams 跟 Gargoyle 一起把惡魔以及他們的意圖都消滅掉這樣。
  • 僵屍 (IMDB, Wikipedia),英譯:Rigor Mortis。劇情很簡單的鬼片,導演拍的很到位。與其說是鬼片,我覺得導演想拍的是眷念與不捨,梅姨對丈夫的不捨,錢小豪對自己孩子的不捨,九叔對自己身體的眷念,阿鳳對房子的不捨…,這些串起了整部電影。
    錢小豪是過氣的武打明星,搬到這舊大樓去住,才剛搬進去,就遇到了雙生女鬼,差點就沒了命,幸好阿友出手幫忙。後來梅姨的老公冬叔失足跌落而死去,梅姨想冬叔繼續陪她,就請道士九叔幫忙,看是否能讓冬叔復活。豈料九叔居心叵測,幫忙養出僵屍,在連續的死人之後,阿友跟小豪就只能聯手解決僵屍。

MMS 與 SMIL 小記

SMIL 是 MMS 在使用的格式,其實就是類似 HTML/XML 的文字檔案,還蠻容易了解的,比較詳細的介紹可以參考這篇文章:SMIL Guide

  • 在 Android 裡,可以把下列的檔案複製出來,然後用 sqlite3 打開,輸入 select * from part; 就可以看到
    • /data/data/com.android.providers.telephony/databases/mmssms.db
    • /data/data/com.android.providers.telephony/databases/mmssms.db-journal
  • 基本上只要在簡訊裡附加圖片並輸入文字,也就是 MMS ,就可能會使用到 SMIL 。
  • SMIL 的 layout 放在 head tag 裡,也就是說,假若有多個 slide,都會是同一個 layout,因為一份 SMIL 文件只會有一個 head tag。而 body tag 裡的 par tag 代表一張 slide,這裡可以利用 dur attribute 指定播放的時間。slide 可能不只一張,所以可以有多個 par tag。
  • 電信營運商 (Carrier)  的不同有可能會導致送出的 SMIL 與收到的 SMIL 不一樣,目前我有遇到的情況是,營運商是遠傳,送出文字在上、圖片在下的 Slide 以後,收到會是圖片在上、文字在下的 Slide;中華電信的話,就沒問題。
  • 傳送 3gp 的影片,傳送以後,收到時會是一個 GIF 圖片以及一個 AMR 音效檔,Android 並沒有做轉換的工作,轉換是在運營商那邊完成的。

AngularJS 起手式

我是參考這篇教學:Learn to Build Modern Web Apps with the AngularJS Tutorial

教學裡使用的是 yeoman ,這真的有方便。首先要安裝 nodejs 跟 npm,在 Ubuntu 13.10 裡,就用 sudo apt-get install nodejs npm 就行了,如果是 Ubuntu 12.04,得另外裝 chris lea 的 PPA,再 update/install。教學裡的第一步,就是安裝 yeoman,用 sudo npm install -g yo 來安裝,可是我不太喜歡直接裝到 /usr 系統資料夾去,所以找了一下,看能不能像 Python 的 pip install xxx –user 一樣裝到使用者目錄下。

搜尋的結果是可以的,但需要做些設定。設定值大致如下:

這樣就可以不用 sudo,然後用 npm install yo 就可以把相關模組都裝到使用者目錄下了,而且相關的指令也都可以用。

參考資料: