電影流水帳(2015/12/13~2015/12/31)

Keira Knightley
Keira Knightley ,很厲害的英國女演員,演過很多電影,都有不錯的成績。

轉眼就年底了,真快~今年總共看完 60 部電影,重看了 2 部之前看過的電影,一部日劇跟一部美劇。

  • 神さまの言うとおり (IMDB, Wikipedia),台譯:要聽神明的話。從漫畫翻拍成電影,不過這部只算是上集,從結局看來,是還會有另外一部電影來解釋。
    故事是一個覺得自己人生很無聊的少年在教室上課,突然一個不倒翁出現在講台上,殺了老師,接著開始殺戮,班上的少年少女們發現不倒翁後面有個按鈕,得設法按下去才能停止這場殺戮,後來男主角在班長的幫助下,按下按鈕,過了這關。
    基本上後續就是連續的關卡,貓咪關、小熊關…等等,少年少女們必須通過這些關卡才能活下去,否則必須死。之後在一連串的關卡中,少年少女們發展出奇妙的關係,通過最後一關以後,他們來到某個大樓樓頂,卻只看到一個像是流浪漢的老人,然後就沒了,請期待下集。
  • Interstellar (IMDB, Wikipedia),台譯:星際效應。去年一上片就一直蠻想看的電影,終於等到 HBO 播出了。
    Cooper 原本是個太空人,後來 NASA 被廢掉,Cooper 成了一個農夫,努力的種田以解決植物枯萎症的問題。有一天女兒 Murphy 在書房發現了奇怪的現象,找老爸討論,Cooper 教了他要仔細觀察與紀錄,這樣才是科學。後來他們發現這是一組座標,就照著這組座標找到了原本應該廢棄卻還在運作的 NASA。有時候來的早不如來的巧,計劃的主持人正好想找一個知道怎麼開太空船的太空人,之前曾經開過太空船的他為了救女兒,也為了地球上的其他人,就被說服了。
    可是 Murphy 不諒解自己的父親,Cooper 試著哄 Murphy,Murphy 從話裡聽出了爸爸這次去也沒把握回來時,整個暴走,超級不諒解。Cooper 還是上了太空,心裡掛記的還是女兒。
    上了太空,一行人穿越黑洞,開始進行探險,第一個是最靠近黑洞的行星 – 米勒,在這裡因為時間受到黑洞影響,過的很慢,導致他們登陸再回到母船時,已經經過數十年,留守的人已經老了很多。接著去第二個星球探險,Mann 從那個星球上傳送出適合人類居住的訊息,不過到了那裡喚醒 Mann 以後,透過一些蛛絲馬跡,發現 Mann 說了謊話。更令人驚訝的是,Dr. Brand 也說了謊,原本讓全人類移民太空的計劃 A ,根本不可能實現。而 Mann 為了要回去,想殺人滅口,經過一番爭執,Mann 損壞了永續號太空船,Cooper 跟 Amelia 費盡了九牛二虎之力,重新接上永續號太空船,制定了接下來的計劃。Amelia 繼續前往第3個可能適合人居住的星球,而 Cooper 則跟 Tars 前往黑洞收集數據。Cooper 跟 Tars 觀測到黑洞的數據,並且運氣很好的,透過可能是未來的人類的幫助,他們掌握了第五維度,並且將數據傳送回過去。在這個時候,前面埋的梗一次爆發了,原來之前 Murphy 在書房所遇到的怪現象就是 Cooper 在這個維度所傳送的,接著 Cooper 將 Tars 觀測到的數據以手錶秒針擺動的形式傳送到手錶上,而在那個時間點的 Murphy 也不負父親期望的解開了父親傳送過來的數據,解開了 Dr. Brand 的方程式,讓全人類得以移民外太空。隨後,可能來自未來的人類解除了第五維度,Cooper 跟 Tars 在太空繼續漂流。
    又過了數十年,移民到外太空的人類在土星附近發現了被冰凍的 Cooper ,並將他救醒。父女再次團圓,只是 Murphy 已經老了很多,而 Cooper 還是年輕的樣子。Murphy 告訴 Cooper ,快去找 Amelia ,故事就結束了。
    也許是之前陸陸續續地看了太多劇透,等到真的看完時,反倒覺得還好。比較出人意料的是我家大公子居然很有興趣的陪我看完,而且隔天還記得電影在演些什麼,或許他有念物理的潛力也說不定。 🙂
  • 我的少女時代 (IMDB, Wikipedia)。今年上半年大賣的一部電影,蠻出人意料。說真的,當初看到片名,真覺得應該沒什麼,看了預告以後,整個改觀,覺得應該會不錯。
    故事蠻簡單的,一開始是成年後的林真心在現實生活的壓迫下想起了高中時的事情,接著就倒敘高中的事情。林真心在高中時是個不會打扮自己的璞玉,很善良。因為幸運信的關係,遇上了學校裡的惡霸徐太宇,因緣際會地相識。到了後來,其實兩人相互都有好感,林真心也打開了徐太宇的心結,眼看就有一點點的機會修成正果,卻發生了誤會。機會一旦錯過,就又是二十年後的事情了 (有這麼久嗎?我估計應該是差不多)。回憶完了以後,林真心下定決心不再慣老闆,也不再慣男友,想去看劉德華演唱會,卻沒買到票,只能去演唱會的外面逛。想不到真的很好運,巧遇劉德華,還一起拍了照,拿了簽名。劉德華這次來演唱會,是因為一個朋友的促成,知道眼前的女人就是林真心時,他留下電話,讓林真心打電話去拿演唱會的票。透過這支電話,林真心又跟徐太宇碰上了。
    網路上有人提到這故事跟「初戀這件小事」蠻像的,我個人覺得,的確,整個架構上是相似的,但是在一些轉折上,我覺得「我的少女時代」更勝一籌。故事裡有些不太合理,但還可以容許的地方,例如,林真心的個性似乎不太可能在外搶業務搶的那麼成功,又或者是成年後的徐太宇跟年輕時的徐太宇整個氣場差很多,不過這些就算了,瑕不掩瑜啦。
  • Begin Again (IMDB, Wikipedia),台譯:曼哈頓戀習曲。不得不說,英文片名比較好。
    Dan 是個失意落魄的音樂製作人,工作上不得意,家庭關係也不是很理想。而 Gretta 是個音樂創作人,跟著男朋友來到紐約,過了沒多久卻發現男朋友劈腿,於是跑去好友 Steve 家療傷。Steve 不放心 Gretta 一個人在家,就帶著他去酒吧,並推她上台演唱,結果歌聲被 Dan 聽到。Dan 覺得這歌真是太棒了,就搭訕了她,想找 Gretta 出唱片。
    Gretta 想了一晚上,就答應了。他們想出一個在城市裡到處錄音的點子,找了一群願意先無酬演奏的樂手,然後搭上 Gretta 創作的歌曲,就開始錄起來了。整個錄製的過程裡,非常的順利與融洽,Dan 解決了家庭關係的問題,Gretta 也走出了情傷。最後,專輯完成,Gretta 確實地跟男友分手,Dan 搬回家,跟唱片公司談了之後,Gretta 決定自己上網銷售這張唱片,不透過唱片公司。
    我覺得這有點像是公路電影的形式,在一個事件的過程裡,去處理掉情感上的問題,蠻好看的,歌曲也很好聽。

電影流水帳(2015/11/26~2015/12/12)

Hong Kong Tramways, Ltd | 102 / Crossing Hennessy | Hong Kong | China
我知道我這篇的照片必須選湯唯~她太正了~ 她在華麗上班族裡飾演會計主管蘇菲,感情使她盲目,為了感情的慰藉,她幫助王大偉做帳,想讓他避過這次危機。但是王大偉這次遇到的是金融海嘯啊,如果是早幾年或晚幾年,或許能全身而退,所以王大偉最後是逃不了,自殺了。

  • The Little Price (IMDB, Wikipedia),台譯:小王子。電影並不完全是書上的故事,不過改編的還不錯。剛剛在翻閱維基百科回想故事時,才發現書裡的人都沒名字耶~
    小女孩的媽媽希望小女孩照著計劃走,好好的唸書,她相信,只要這樣作,他們就能擺脫現在的生活,讓未來變得更好。他們搬到了一個老人的家附近,這個老人很怪異,小女孩原本覺得不要跟他接近,但讀了他射來的紙飛機上的故事以後,小女孩被這個故事吸引了,這個故事講的就是小王子的故事。小女孩接近了老人,於是在媽媽出門上班,小女孩應該照表操課的時候,她跑去老人家裡讀小王子的故事,一起玩,她覺得很開心。直到某天,老人開著車帶小女孩出門被警察攔下來,才被小女孩的媽媽發現這件事情,想當然爾,媽媽禁止小女孩繼續跟老人碰面。直到小女孩要入學的前一天,她跟媽媽回來,看到老人被送進醫院裡了,她知道老人一直想再去找小王子,於是她趁著夜色跑到老人家裡,開著老人的飛機展開冒險,去找尋小王子,打算讓老人跟小王子見上一面。小女孩並沒有飛到小王子的星球上,反而到了一個古怪、沉悶的星球,在一棟大樓上,她看到了一個很像是小王子的男人。她排除萬難去找小王子,卻發現小王子已經忘了初衷,她盡她最大的努力讓小王子回想起有個人在等他這件事情,經歷一番歷險之後,終於讓小王子回到原來的星球上,並且恢復了原來的樣子。
    隔天早上,小女孩的媽媽敲小女孩的房門,發現小女孩不見了,一轉頭,發現小女孩正刷著牙說,「媽媽,我們今天要早點出門,在上學前去看看老爺爺」鏡頭帶到醫院,小女孩拿出一本裝訂好的書,裏面就是小王子的故事 (之前被分拆成好多頁),老人流著淚,媽媽看著他們,也改變了原本既有的想法。
  • 華麗上班族 (IMDB, Wikipedia)。這是一部歌舞電影。
    電影裡的某些場景故意搭的很有舞台感,所以往往看著主角的同時,透明的牆外有街上的人走過去,這點很特別。故事算蠻簡單,但是人物之間的關係有點複雜。故事我就不寫了,只講我印象比較深的幾場戲。
    王大偉投資沒有見好就收,欠了一屁股債,不敢進公司,只敢打電話給同一條船上的蘇菲幫忙,但是蘇菲也很為難,只說快回公司。總經理張威在廁所遇到神色慌張的蘇菲,問她什麼事情,蘇菲說沒有就走開,此時,手機電話聲又再響起,張威拿起蘇菲忘在洗手台上的手機接聽,只聽到王大偉說約在天台碰面。到了天台,王大偉見到張威,自然的抱住她說,救我。緊跟著上來的蘇菲看到兩人抱著,心整個都碎了,我猜她心裡一定在想著「原來這男人還是騙了我~」,大偉也看到蘇菲了,他認定此時只有張威能救他,於是忍心不理蘇菲~
    另外一場是結尾的時候,張威要離開公司了,搭電梯下樓,問緊跟著來的李想說,「你滿幾個月了?」李想說「早滿3個月了」張威就說,「進來吧」兩人一起搭電梯下樓,出了電梯門口,張威再問:「你的名字是?」李想說:「李安的李、夢想的想」張威意味深長的說:「希望你以後不要忘了你的名字~」
  • The school of Rock (IMDB, Wikipedia),台譯:搖滾教室。前兩年看到一則新聞,說搖滾教室裡的學生們再次跟 Jack Black 重逢,就想到對喔,這部電影好像蠻久了,也常在第四台看到重播,不過都只看到最後一段,不如有機會就來看一下。
    故事是講想一直玩搖滾樂的 Dewey 被朋友催討房租,在此時,他接到電話說要找他朋友當代課老師,於是他心生一計,冒充他朋友去任教。到了班上,原本意興闌珊,後來卻發現學生都有學音樂,想去參加搖滾樂團大賽的他,就騙這些小孩,教他們唱搖滾樂、創作歌曲。
    不過故事一定要來個轉折,在參加比賽的前一天,校長找他去家長會。出發前,他朋友接到學校電話,事情曝光了。到了家長會場,他招架不住家長的問題,再加上看到外面的警察、校長跟朋友,有些慌張,只好把事情都如實講出來。隔天,家長疲勞轟炸校長,班上的學生在開會討論後,決定還是要參加比賽,就找了校車去找 Dewey ,然後就一起上台參加比賽。發現孩子不見的家長們跟校長也趕到比賽現場,發現了孩子的另一面,對教育的看法從此改觀。
    電影的結尾是 Dewey 跟班上同學練團的畫面,還蠻有趣的。

加上上面,到目前為止看完 56 部電影~要衝一下破 60 嗎? XD

keyring

試用 python keyring 這個模組的一些紀錄:

  • 用法就這麼簡單:keyring.set_password(service, username, password) 或 keyring.get_password(service, username, password)
  • keyring password 的長度幾乎沒有限制,至少到 8192 個字元是沒問題。
  • keyring 的密碼存放在哪裡? 可以看看 keyring.get_keyring().file_path 。如果想換位置,沒問題,有兩個方法:
    1. 設置 XDG_DATA_HOME 這個環境變數,這比較簡單
    2. 把 keyring.util.platform_ 裡的 data_root 與 config_root 這兩個函式替換掉。
  • 要有加密功能的話,安裝 pycrypto ,backend 會自動替換為 EncryptedKeyring ,預設是 PlaintextKeyring 。
  • 要看有哪些 backend ,可以看 keyring.backends ,除了檔案為基礎的 PlaintextKeyring、EncryptedKeyring 以外,還有其他的可用。
    目前真正能用的 backends ,是用 keyring.backend.get_all_keyring()
  • 替換 backend 則是用 keyring.set_keyring() ;看目前的 backend 是用 keyring.get_keyring()。

Swift 2.2

今天網路上除了 PHP 7 釋出的消息外,就是 Apple 開放 Swift 2.2 源碼的消息了。

上 Swift.org 看,現在已經可以安裝在 Ubuntu 上,就寫了一個簡單的腳本來安裝。

執行完會安裝到 /opt/swift-2.2 下,PATH 需要自己加。

中文的學習手冊可以看 The Swift Programming Language中文版

這篇則是知名開發者 zonble 的心得分享,但要注意的是,這篇心得分享文是在 Swift 剛剛推出的時候所寫的,與現在可能有不小的差距:Swift

關於接下來幾個月的變化可以參考 Apple 釋出的計劃表:https://github.com/apple/swift-evolution

電影流水帳(2015/11/1~2015/11/25)

Pimchanok Luevisadpaibul "baifern"
พิมพ์ชนก ลือวิเศษไพบูลย์ ,初戀那件小事的女主角,在電影裡扮醜。

 

隔了一段時間才想起來要寫。

  • 捉妖記 (IMDB, Wikipedia)。大公子跟我說他在學校裡有看過這電影,所以才找來看看。原本以為電影裡的妖是恐怖的,不過這部電影裡的妖是用 CG 繪製,相當可愛。以一部真人與動畫互動演出的電影來說,我覺得這部電影的成就蠻高的。主打孩童市場也相當正確,故事很溫馨,不過我個人覺得故事有點弱。
    妖界發生大事,妖后懷著小妖王逃到人間,遇到了主角宋天蔭,妖后死了,小妖王到了宋天蔭肚子裡。霍小嵐則是天師,天師是來捉拿妖的,遇到了宋天蔭,與宋天蔭合謀要帶著肚子裡的小妖王去領賞。後來小妖王在領賞的路上出生了,好歹總是肚子裡的一塊肉,於是宋天蔭跟小嵐就對小妖王有了感情。領賞的路上有不少阻礙,三人一一克服了,到了城裡找湯唯要領賞,宋天蔭雖然捨不得,卻還是留下小妖王。小妖王就被送去有錢人的廚房。在電影裡的設定,妖怪不是殺人,就是被人吃,所以有特別的妖怪廚房,專門宰殺妖怪供人食用。小妖王是皇族之後,被認為有特殊的療效,所以也特別珍貴。宋天蔭事後覺得捨不得,就說服了小嵐,想要贖回小妖王,但是小妖王已經被送到葛千戶那兒去了。於是兩人就上葛千戶那兒去找人。
    葛千戶就是下令要捉拿小妖王的人,小妖王送到他那兒去以後,他就預備了一桌筵席,並且讓人預約來食用。宋天蔭兩人潛入以後,開始救援計畫,原本帶著妖后一起逃亡的隨從也一起來攪和,一陣攪和之下,發現了葛千戶也是個妖,經過一番打鬥,消滅了葛千戶,救回小妖王。這一行人也發現妖並不全都是壞的,宋天蔭讓妖怪隨從帶著小妖王回到深山裡去,他則是跟著小嵐繼續營救妖怪。
  • สิ่งเล็กเล็กที่เรียกว่า…รัก (IMDB, Wikipedia),台譯:初戀那件小事。是因為「我的少女時代」的新聞才會想看這部電影。
    故事蠻簡單的,就是少女小嵐暗戀學長小莫,然後努力改變自己。到了畢業,兩人分開,但是經過9年以後,小莫成了攝影師,小嵐成了知名造型師,兩人重新在電視節目上相遇。
    電影還不錯,但也沒辦法說很好看就是。男主角是真的很帥,女主角也不錯,真正讓我驚訝的是女配角,如果我沒看錯的話,她也在「撞鬼那件小事」裡演出,在那部電影裡她看起來身材有點小胖,但是在這部電影裡,就判若兩人,整個漂亮很多。

截至目前看完 53 部電影啦!

Django model 的 validate

同事問,為什麼用 model 建立 instance 以後,呼叫 save 沒有觸發 validate?

上網找了一下,大致有兩種方法:

  1. 用 ModelForm 的 is_valid() 做檢查,Correct Way to Validate Django Model Objects?
  2. 覆寫 model 的 save(),Django model mixin to force Django to validate (i.e. call `full_clean`) before `save`

事情沒有這樣結束,因為很好奇 Django 的作法,就去追 Code。

如果是走 is_valid() :

  1. forms/models.py:ModelForm 繼承自 BaseModelForm,而 BaseModelForm 又繼承自 BaseForm,這個檔案裡,沒有看到 is_valid
  2. forms/forms.py:
    1. BaseForm.is_valid() 很簡單的只回傳 self.is_bound and not self.errors ,self.is_bound 跳過不看,self.errors 是一個 property,裏面呼叫了 self.full_clean()
    2. self.full_clean() 呼叫了 self._clean_fields(), self._clean_form() 與 self._post_clean() ,關鍵在 self._post_clean() 。BaseForm 裡的 _post_clean() 是空的,讓繼承 BaseForm 的類別去決定。
  3. forms/models.py: 回頭看 BaseModelForm._post_clean(),這裡呼叫了 self.instance.full_clean() ,並處理 ValidationError 。instance 就是 model 類別所創出的實體,Model 繼承自 ModelBase 所以接著看 ModelBase 類別。
  4. db/models/base.py: ModelBase 的 full_clean() 呼叫了 self.clean_fields(), self.clean() 與 self.validate_unique ,並且在這裡處理了 ValidationError 例外,最後判斷了 errors 裡是否有東西,有的話,丟出 ValidationError。先看 self.clean_fields() ,函式裡去取得定義在類別裡的欄位,並且呼叫每個欄位 (Field) 類別的 clean() 函式。如果有錯誤就丟出 ValidationError()
  5. db/models/fields/__init__.py:Field 類別定義在這個檔案裡,裏面的 clean() 呼叫了 self.validate() 、self.run_validators()

至此,ModelForm 的路徑就確定了。

來看看第二個方法,他是要求 Model 類別除了繼承 Django Model 之外,再繼承 ValidateModelMixin 這個自訂類別以覆寫 save() ,看看裏面的 save(),就只是多呼叫了 full_clean() 來檢查,也就是走上述步驟 4 以後的路線。

Django 官方網站不建議直接去呼叫 full_clean() 這件事,不過找了一下,也沒找到什麼更好的解法~

P.S.

Github ATOM

Github 推的編輯工具,還蠻好用,跟 Sublime Text 比起來,至少可以打中文… XD

安裝相當簡單,到 ATOM 網站,下載對應的安裝檔案安裝就可以了,我是用 Ubuntu,下載 .deb 用 dpkg -i 安裝就可以了。

安裝以後,需要調校一下,因為字型的關係,中文會顯示不出來。設定可以參考下面來進行調整:

不過說真的,我不是很常用這個,大部份還是用 vim。這兩天再拿出來用,才發現多了一個 apm 的指令,顧名思義就是管理 ATOM packages 用的,像是安裝、反安裝或更新等等,都可以透過這個指令進行。

不過,要檢查 ATOM 更新的話,就比較麻煩了,還好有 package 可以幫忙做這件事情,我是用 atom-update 這個 package。

補充:參考這篇 Atom 使用心得與 Package 推薦 跟根據自己需求,裝了一些 packages/themes:

  • atom-beautify
  • atom-hexo
  • atom-material-syntax
  • atom-material-ui
  • atom-update
  • autocomplete-python
  • color-picker
  • ex-mode
  • file-icons
  • git-blame
  • git-log
  • git-plus
  • highlight-selected
  • indent-helper
  • linter
  • linter-flake8
  • markdown-preview-plus
  • markdown-toc
  • merge-conflicts
  • minimap
  • project-manager
  • recent-projects
  • vim-mode

Migrate ghost to hexo

Hexo 是一個快速、簡單且強大的網誌框架,Ghost 是一個用 javascript 寫的 Blog 平台。

我在公司有用 Ghost 架一個小小的 Blog ,紀錄一些事情,後來想把 Ghost 搬到 Raspberry PI 上,但是 Raspberry PI 的效能不是很好,就轉念改用 Hexo。Raspberry PI 只架設單純的 Web server,桌機用 Hexo,在產生完網頁之後,再 Deploy 到 Raspberry PI 上。

要搬家基本上不難,Hexo 這邊先安裝 hexo-migrator-ghost,然後依照說明,先到 Ghost 那邊 (http://yourblog.com/ghost/debug/) 匯出資料,然後回到 Hexo ,用 hexo migrate ghost exported_json 匯入剛剛在 ghost 匯出的檔案就可以了。

圖片的話,要自己處理,最快的方法是複製 your_ghost_folder/content/images 到 your_hexo_folder/source/images ,然後將文章裡圖片路徑的 /content 移掉就可以了。

Hexo 在處理文章圖片上有更好的方式,可以參考這篇文章:Asset Folders ,在 _config.yml 裡啟用 post_asset_folder: true 以後,在建立新文章時,hexo 會自動建立以文章標題為名的資料夾,把圖片放到該資料夾下面,然後引用就可以了。這樣做比大堆頭的擺在 source/images 下自己管理來的好。

error, fat_get_cluster: invalid cluster chain

Android 手機沒辦法掛載 MicroSD,插到多合一讀卡機裡,接到桌機上,用 dmesg 看,發現有這樣的訊息:

error, fat_get_cluster: invalid cluster chain

請 Google 大神幫忙找答案:

循線找到 testdisk 這工具,sudo apt-get install testdisk 就可以安裝。

安裝以後,直接執行 sudo testdisk,大致就依照畫面,依照下面的選擇去選就可以了。

>Create a new log file
[Choose Disk]
>Intel/PC partition
>Advanced
[Choose Partition]
>Boot
>Repair FAT
[Accept Defaults and Write]
>(Q)uit until exited

大體來說,就是選磁碟、選 Intel/PC partition,選分割區,選 Boot,選 Repair FAT,再選 Accept default and Write 就行了。

想不到有這麼神奇的指令,托福,我的 MicroSD 救回來了。

gitlab 的備份檔

gitlab 的備份是一個 tar 檔案,用 tar xf 解開以後,會依照你 gitlab 裡的 user/group 區分目錄,解開以後,會發現裏面又是一堆 .bundle 檔案。

.bundle 該怎麼解開呢?其實它也是一個 tar 檔案,用 tar tf 就可以看到內容,所以如果要還原的話,就先建一個目錄,再切到該目錄下解開就可以了。