找 Openbox 熱鍵

因為公司在用的鍵盤上有 Fn ,跟筆記型電腦一樣,某些按鍵上有特殊的符號,就想在 Openbox 設定檔裡加上設定。原本很單純的以為設定為 Fn+F1 這樣就可以,但是實際上並沒有所謂的 Fn  (參考:keyboard shortcuts – Adding key bindings for “Fn” + “Control” key in openbox)。

但是不知道按鍵的名稱,就無法設定。Google 以後,發現可以用 xev 來尋找熱鍵,在 terminal 下輸入 xev ,試著去按按看,就可以找出來。

KeyRelease event, serial 48, synthetic NO, window 0x6200001,
    root 0x31a, subw 0x0, time 2366748, (278,-31), root:(279,866),
    state 0x0, keycode 225 (keysym 0x1008ff1b, XF86Search), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

以上面的例子來說,就是 XF86Search,在 openbox 設定檔 keybind 的 key 裡填入,再設定要執行的動作就行了。

參考資料:

電影流水帳(2016/1/17~2016/1/24)

Ellen Barkin

Ellen Barkin ,在 Ocean Thirteen 裡飾演 Willie Bank 的助理,乍看之下,以為還蠻年輕的,查了維基百科才知道在那個時間點,大約是 50 歲上下,真的是駐顏有術!

這次看的幾部片,除了 Ocean Thirteen 是第一次看以外,其他三部都是重看的。Inception 之前有紀錄內容,就不寫了。Ocean Twelve 有紀錄,但只有簡單的感想,這次補一下故事大意。

  • Ocean’s Eleven (IMDB, Wikipedia),台譯:瞞天過海。想不到這是一部重拍的作品 (Ocean’s Eleven),不知道跟之前的差距多少。印象中,媽媽好像跟我說過這件事情,但我不太確定。
    Ocean 出獄以後,找了搭檔 Rusty,決定幹一票,於是找了 Reuben 幫忙出資,以及其他的伙伴,就開始行動了。我覺得整個行動有兩個蠻巧妙的兩個地方,第一個是在倉庫裡搭設了一個與真實金庫相似的場景,在這個假場景拍攝行搶畫面以後,駭入真實金庫的攝影機線路,將假的畫面傳輸到金庫的中控中心,於是中控中心呼叫警察過來支援,但警察是假的,因此可以大大方方的進入金庫把裏面的鈔票帶出來。第二個是利用 Benedict 逮住 Ocean 關到小房間的機會,將計就計,讓 Ocean 透過小房間的通風管移動到金庫幫忙再回來,既有了不在場證明,又確確實實的偷了東西。
    行動的結果當然是成功的偷到了錢,Ocean 也順利贏回前妻的芳心,不過 Ocean 還是因為違反假釋條例進了監牢三個月。大致故事就是這樣,第一集的故事還不錯,我挺喜歡的。
  • Ocean’s Twelve (IMDB, Wikipedia),台譯:瞞天過海2-長驅直入。這集的故事是上次幫 Ocean 偷錢的人都被 Benedict 找到了,並且 Benedict 要求他們把之前偷到的錢吐出來。一伙人就暈了,湊到一起商量還錢的事情,討論的結果決定去歐洲幹一票來還錢。
    一行人浩浩蕩蕩到了歐洲,先去找案子,這一段我覺得蠻好笑。Linus 急於表現自己的成熟,就自告奮勇要跟 Ocean 與 Rusty 一起去,結果場面弄的很尷尬。然後就開始幹第一票買賣了,一伙人在水底下設置了千斤頂,把整個房子抬高一點點避掉警鈴,結果卻發現裏面的東西已經被 Night Fox 偷走了,一群人都暈了。這次的行動也驚動了 Rusty 的前女友 Isabel,Isabel 決心要逮到他們。
    他們循線找到 Night Fox,問他為什麼沒守道上的規矩,原來是因為 Night Fox 不爽 Ocean ,所以跟 Benedict 通風報信,也故意先把東西偷走,殺殺 Ocean 一行人的威風。Night Fox 跟 Ocean 約定來比賽偷金蛋,如果 Ocean 贏了,那 Benedict 那邊的欠債就算了,反之,就承認 Night Fox 是世界第一。為了欠債,雖然難偷,也是要拼命,Ocean 一行人就開始佈局,可是等到約定開始偷的時候,非常的不順利,一行人紛紛被 Isabel 給抓走。甚至還找了 Tess 來假冒 Julia Roberts,想救出一些先被抓的人,但都沒辦法,全被抓走了。這一段算是第二個有趣的地方,讓 Julia Roberts 假扮 Julia Roberts,還被 Bruce Willis 認出來是假貨。還好 Linus 的老媽冒充國際刑警之類的把這群罪犯帶走了,也順便帶走了 Isabel 。一行人就這樣沒事的走了,Rusty 則是跟偽造調動追捕令的 Isabel 說明了一切。
    這群人到歐洲以後,早就知道是 Night Fox 搞的鬼,已經預先跟 Isabel 的老爸,同時也就是 Night Fox 的師父取得連繫,以設局跟 Isabel 的老爸交換幫忙還債的事情。這個局就是讓他跟女兒 Isabel 見面。最終就是 Night Fox 知道自己輸了,父女團圓,Benedict 的債也還清了,就這樣。
    坦白說,這一集開始有點不是那麼好看了。
  • Ocean’s Thirteen (IMDB, Wikipedia),台譯:瞞天過海-13王牌。這集就比較索然無味了,有點像是敷衍了事的感覺。
    Reuben 被送到醫院了,躺在床上動都不能動,Ocean 等人趕到醫院去看他,才知道 Reuben 是被 Willy Bank 給設局氣到了。Willy Bank 找 Reuben 合夥蓋賭場,Reuben 雖然知道 Willy 風評不好,但想說商業合作黑紙白字應該沒問題,但最終 Willy 還是翻臉不認人。
    Ocean 等人決定為 Reuben 出一口氣,於是等到 Willy 的賭場蓋好,即將營運的時候,佈下局,要讓 Willy 難看。他們不但設法讓匿名的賭場評鑑委員對賭場做出負評,更運用各種技巧破解了賭場裡的各種賭博遊戲,甚至不惜跟昔日仇敵 Benedict 合作,運用地底鑽頭去製造地震以妨礙賭場裡的動態監測系統。
    最後在營運當天,Reuben 從打擊中站起來,而 Ocean 一行人也成功的給 Willy 難看,不但偷了 Willy 的鑽石,也讓 Willy 的賭場整個完蛋。片尾 Ocean、Rusty 跟 Linus 在機場裡的對話頗有深意,所以應該是沒打算再拍續集了。

關於 Ansible EC2 module 的紀錄

指定 exact_count=1,第一次執行時,新建的 instances 會同時放在 instances 與 tagged_instances 裡。(請看 ec_create_result.txt)

exact_count=1,再執行一次,changes 會是 false,instances 裡是空的,而 tagged_instances 裡則是之前已經建立的 instances (請看 ec2_create_again_result.txt)

將 exact_count 設定為 2,再次執行,changes 會是 true,instances 裡是新建的 instance,tagged_instances 裡除了之前已經建立的 instance 之外,還會有新建的 instance。

將 exact_count 改回 1,再次執行,changes 會是 true,instances 裡是被終結掉的 instance,state 是 terminated,而 tagged_instances 裡則是仍存活的 instances。 (請看 ec2_create_decrease_exact_count_result.txt)

電影流水帳(2016/1/1~2016/1/16)

Zeta-JonesCatherine Zeta-Jones,知名作品有蒙面俠蘇洛、將計就計等等,在航站情緣裡其實戲份不重,與主角 Navorski 好不容易擦出小小的火花之後,卻一下就消逝了。一起看的小姨子看完以後說,「就這樣子喔~還以為兩人會在一起呢~」,不過,人世間就是這樣,不是那麼完美的故事,反而有種餘韻。

The matrix 系列其實已經重看好幾次了,找了一下之前的舊文,居然都沒有紀錄過,趁這次租用 Netflix 又重看,把它們紀錄下來。

  • The Matrix (IMDB, Wikipedia),台譯:駭客任務。Anderson 是一個駭客,意外接觸了 Morpheus ,因此被 Agent Smith 追殺,Agent Smith 後來逮到了 Anderson ,在他身上埋了追蹤器。Morpheus 與 Trinity 等人在 Agent Smith 還沒意識到 Anderson 的重要性前,救走了他,解除了追蹤器。接著稍稍跟他說明了現在的世界其實是個假象,並要他做出選擇:「You take the blue pill, the story ends. You wake up in your bed and believe whatever you want to believe. You take the red pill, you stay in wonderland, and I show you how deep the rabbit hole goes.」。Anderson ,也就是 Neo ,選擇了紅藥丸,於是他重新認識了世界。
    原來人類所認知的世界是電腦所給予的,所有剛出生的人類都會被丟到培養皿裡並接上電線,除了汲取人體的微弱電力之外,也讓人類的大腦接受刺激以避免身體的衰弱。
    而駭客們就是生活在真實世界裡的人類,他們利用電腦世界的弱點穿梭在虛假與真實的世界裡,以尋找適合的對象,讓他們回到真實的世界。Neo 重新認知世界以後,接受很多訓練,只是 Neo 還有迷惘,他不明白為什麼 Morpheus 相信他是救世主。在過了一陣子以後,Morpheus 決定帶他去找 Oracle,讓 Oracle 為 Neo 占卜。
    Oracle 告訴 Neo ,你現在還不是救世主,Morpheus 會因為你而捨身,但他的命運要看你的選擇。就這樣,他們聽完預言就回去了。孰料,Cypher 出賣了大家的位置,所以駭客們被 Agent Smith 等人包圍,必須要殺出一條生路。果然,真的如 Oracle 所預言,Morpheus 真的捨身,讓 Trinity 跟 Neo 順利逃回真實世界。就在他們要拔掉 Morpheus 的線時,Neo 決定要回去救 Morpheus,Trinity 也決定跟著去。經過一番大戰以後,救出了 Morpheus,Trinity 也順利回到真實世界了,但 Neo 就沒這麼幸運了,跟 Agent Smith 打鬥以後,開始逃跑,三個 Agent 窮追猛打。經過一番追逐,Neo 好不容易找到能回去真實世界的房間,才一打開門,Agent Smith 已經站在門後,瞄準 Neo 開了數槍。Neo 倒地,看似已經死去,在真實世界裡的 Trinity 親吻了 Neo 以後,Neo 重新活了過來,身體內的能力也覺醒,打敗了 Agent Smith ,順利回到真實世界。
  • The Matrix Reloaded (IMDB, Wikipedia),台譯:駭客任務2:重裝上陣。一開始,Neo 做了噩夢,預知了 Trinity 的死亡,然後驚醒。接著他們回到 Zion,在這個片段裡,可以看到 Zion 人們的生活。Zion 採用的是議會制,人們則各司其職,在地底有機器為這些人類服務。有個議員在跟 Neo 聊天時,提出一個疑問,為什麼地底會有機器為我們服務呢?沒有人明白機器是怎麼運作的。這點很有趣,在此其實已經透露了,機器是故意讓這些人類活著的。
    Zion 的防衛部門指揮官希望所有船隻都留下來保衛 Zion,但 Morpheus 的意志讓議會願意釋出三台船艦出去找 Oracle,指揮官勉為其難的接受了。Neo 去找 Oracle 時,向 Oracle 提出了疑問,Oracle 告訴他,沒錯,我是一個程式,虛擬世界(母體, The matrix)與真實世界的牽連也如你所想的,但這些事情,你得先找到 Keymaker ,回到 Source,Source 是一個房間,裏面有 The Architect ,找到他才能找到答案並解救 Zion。於是他們找到囚禁 Keymaker 的 Merovingian,Merovingian 並不願意幫忙,但透過 Merovingian 旁的 Persephone,他們找到 Keymaker,跟 Merovingian 的手下展開一場公路追逐戰 (這場公路戰很貴,電影團隊真的在澳洲打造了一段高速公路),最後靠著 Neo 的飛行術救了所有人。
    要進入 Source,需要 Keymaker 的鑰匙,並讓整個城市停電,因此分成倆批人,Neo, Morpheus 跟 Keymaker 到 Source 門口待命,另一艘艦上的人則去發電廠進行破壞。但滲透進來的某個 Agent Smith 分身提早發射了電磁波,電子烏賊此時並不在射程內,因此電子烏賊得以消滅了這批正要去破壞發電廠的人。Trinity 為了 Neo,決定孤身進去破壞發電廠。Neo 因此能進到 Source,但 Trinity 卻身陷險境。Source 裡的 The architect 向 Neo 說明了一切。原來救世主不只一人,Neo 已經是第六任救世主了,Zion 裡的人類也是 The architect 故意讓他們存活的,是一個有意的巧妙缺陷,以避免母體 (The matrix) 過於完美而崩潰。接著給 Neo 兩個選擇,挑選一些人,重新打造 Zion ,或者是不管,先去救 Trinity 再說。Neo 出乎 The architect 的意料,選擇了救 Trinity。Morpheus 則在這個時候抓破頭,想不通為什麼 Zion 的攻擊沒有因此而停止。真實世界裡,電子烏賊來襲,船艦受損,Neo 使用了奇妙的能力阻止了電子烏賊,然後就昏倒了…
  • The Matrix Revolutions (IMDB, Wikipedia),台譯:駭客任務完結篇-最後戰役。
    Neo 昏倒了,Morpheus 跟 Trinity 詢問了 Oracle ,才知道 Neo 被困在真實世界與母體間的交界處,一個由 Merovingian 手下 Trainman 所掌管的神秘月台,沒辦法出去。而 Neo 醒來,詢問了月台上的一家人,也知道了自己的處境。經過 Morpheus 跟 Trinity 的努力,他們救出了 Neo。
    在真實世界的三個艦長討論著現在該怎麼做,Zion 正陷入險境,他們很困惑。值此同時,Agent Smith 的分身一直昏迷不醒,艦長們無法得知另一艘船艦為何全滅的原因。而醒來的 Neo 再次找了 Oracle,了解情況,這次跟 Oracle 碰面以後,Agent Smith 隨後就到了,並且吸收了 Oracle。Neo 回到真實世界,要求給他一艘船艦,Naobe 不顧其他艦長的反對,將自己的旗艦給了 Neo (為什麼 Naobe 會毅然決然的幫助 Neo 呢?據說這是一段在電玩遊戲裡的劇情,Oracle 給 Naobe 的預言就是你要選擇幫或不幫 Neo)。Neo 與 Trinity 開著 Naobe 的旗艦前往 The matrix 所在的機器城市,而其他人則搭著船艦冒險衝回 Zion。
    電子烏賊已經攻入了 Zion ,人類與電子烏賊展開激戰,Naobe 冒險開回的船艦為人類爭取了一些時間,以船艦上的電磁波暫時消滅了第一波的電子烏賊。Neo 跟 Trinity 前往機器城市,在路上被偷偷躲起來的 Agent Smith 分身攻擊,Neo 因此瞎了。他們解決掉 Agent Smith 分身以後,繼續前往機器城市,卻被機器大軍阻擋, Neo 提議衝上高空,高繞過去,但俯衝著陸時,Trinity 死了。Neo 忍著悲痛,跟 The architect 談判,以幫忙消滅 Agent Smith 的代價換取 Zion 與 The matrix 的和平。
    最後,Neo 與 Agent Smith 展開大戰,Neo 故意落敗讓自己被 Agent Smith 吸收,The architect 得以將 Agent Smith 這個病毒程式破壞掉,The matrix 裡被 Agent Smith 感染的程式都復原了,The architect 也遵守約定,停止了對 Zion 的攻擊。Zion 的人們歡聲雷動,感謝 Neo 的幫忙。只是,這樣的和平又能維持多久呢?Oracle 與小女孩、 The architect 的談話隱隱透露出,也許未來的不久,又會有個救世主出現…
  • Léon (IMDB, Wikipedia),台譯:終極追殺令。Mathilda 是個十二歲的小女孩,某天,她邂逅了鄰居 Léon ,因此有了好感。過沒兩天,Mathilda 的父親跟 DEA 的 Stansfield 起了衝突,全家被 Stansfield 幹掉了,Mathilda 因為出去幫忙買東西,幸運逃過一劫。回到家門口看到全家被殺,急中生智的她走到鄰居 Léon  家去敲門,心軟的 Léon  收留了她。Mathilda 就這樣跟 Léon 一起生活,發展出跨越年齡的愛情。後來 Mathilda 跑去 DEA 找 Stansfield 尋仇,Stansfield 知道了,原本要處理掉 Mathilda 的,但臨時有事,就走開了。出外工作回來的 Léon 知道了,就循線找到 DEA ,大開殺戒,救出了 Mathilda。
    DEA 死了不少人,Stansfield 的面子掛不住,找到 Léon 的老闆 Tony,進而找到他們的藏身處,包圍了他們,展開一場大戰。Léon 掩護 Mathilda,讓她逃出去,自己則假裝成受傷的員警,想趁機走出去。可是後來 Stansfield 認出了 Léon ,趁 Léon 就要走出大門時,從背後開槍。Léon 受了重傷,但他假裝有事要告訴 Stansfield,引爆了炸藥,幫 Mathilda 報了仇。
    Mathilda 原本有了寄託的感情,就此失去憑藉,她先去找了 Tony,想拿 Léon 之前放在他那兒的錢,可是 Tony 只願意給予部份;Mathilda 又表示可以繼承 Léon 的位子當殺手的時候,Tony 就翻臉不認人了。Mathilda 只能回到之前寄宿的學校,這裡很諷刺的一點是,老師說如果 Mathilda 說出實情的話,學校可以想辦法給予幫助,可是 Mathilda 說出實情的時候,反而嚇到老師了。
    如果不是去年看過回魂夜,我想我大概不會想看這部電影,看完以後,覺得這是蠻有意思的故事。
  • Gravity (IMDB, Wikipedia),台譯:地心引力。故事超簡單的,但是電影的內容相當不錯。
    Ryan 是一個技術專家,被 NASA 延攬,請她到哈伯望遠鏡上安裝她所發明的儀器。在安裝的時候,發生了意外,太空的碎片將太空梭擊毀,上面的太空組員幾乎都罹難了,只有 Matt 還活著。透過 Matt 的幫忙與鼓勵,兩人一起漂流到太空站,想利用太空站的小艇飛到神舟號。不過 Matt 運氣不是很好,在到達太空站的時候,沒能抓好,就飛出去了,只剩下 Ryan 獨力應付。Ryan 一開始的嘗試並不順利,因為小艇的降落傘勾住了太空站,沒辦法順利飛走,Ryan 設法解開降落傘,並設法啟動。但事情不是那麼的順利,有一度,她甚至想放棄了。在這個時候,已經飄走的 Matt 突然打開艙門進來跟 Ryan 聊天,這個聊天打開了 Ryan 的心結,也鼓起了求生的意志。但接著,Rhyan 醒來,發現身邊並沒有 Matt。接著她設法接近了神舟號太空站,並利用神舟號回到地球。
    這部電影如果少了 George Clooney 飾演的 Matt,相信會失色很多,他是一個非常畫龍點睛的角色。沒有他的碎碎念,沒有他的詼諧,大概 Ryan 也沒辦法鼓起勇氣,打開心結吧。另外,Sandra Bullock 的身材保持的真不錯。
  • The Terminal (IMDB, Wikipedia),台譯:航站情緣。情緣是用來柔化主線的故事副線,但是的確蠻動人的,讓人會期望男女主角修成正果。故事整體來說,講的雖然是嚴肅的人球問題,但是在導演的掌鏡與 Tom Hanks 生動的表演下,讓電影以輕快的節奏進行下去,變得不是那麼沉悶了。
    Navorski 來到美國,想幫父親完成遺願,卻發現自己的國家在旅程中已經消失,護照跟簽證都沒辦法使用,無法踏入美國國土,也因為戰亂沒有航班可以回國,Navorski 只能在機場求生活。依法行事的機場主管 Frank 不是那麼想要 Navorski 在機場裡求生存,可是又不能顯的太過絕情,就想了一些方法想讓他被其他的單位收容。不過語言不通的 Navorski 卻總是幸運的找到出路,繼續在機場裡生活。在機場裡他認識了幫助他的好朋友,也認識了免稅商店裡的人,甚至認識了空姊,展開若有似無的情愫。經過漫長的時間下來,Navorski 幫助了許多人,自己國家的戰亂也結束了,終於可以回家。

 

gitlab-ci-multi-runner 在 archlinux 上的設定

gitlab-ce 到 8.0 以後,就把 gitlab-ci 整進去了,要用 gitlab-ci ,需要安裝 gitlab-ci-multi-runner。

archlinux AUR 裡已經有人包進去了:

  1. 用 yaourt -S gitlab-ci-multi-runner 安裝。
  2. 用 sudo systemctl enable gitlab-ci-multi-runner 啟用
  3. 執行 gitlab-ci-multi-runner register 進行設定,設定時會問:
    1. gitlab-ci coordinator URL :請到 gitlab 專案設定裡的 runner 畫面取得
    2. gitlab-ci token for this runner:跟上面一樣,到 gitlab 專案設定裡的 runner 畫面取得
    3. gitlab-ci description for this runner: 隨便填,能認得就好
    4. gitlab-ci tags for this runner:隨便填,不填就按 enter
    5. executor:這邊就看需求,我是填了 docker
    6. Docker image:應該是選了 docker 的關係,這邊需要填,主要是問要以哪個 image 為基底,ruby 可以填 ruby:2.1,python 可以填 python:2.7,日後有用到再去找。
    7. 其他:問 mysql, postgresql, redis, mongodb 要用哪個版本。
  4. 設定完,gitlab-ci-multi-runner 服務會自動載入新設定,不放心的話,用 sudo systemctl restart gitlab-ci-multi-runner 重新啟動。

到 gitlab 專案設定裡的 runner 畫面去看,應該就會看到剛剛新增的 runner。

使用上可以參考這篇 gitlab ci quickstart 來做,大致就是在專案裡新增 .gitlab-ci.yml ,裏面填好要執行的步驟,加入 repository、提交、push,之後每次 push 時,就會執行 .gitlab-ci.yml 裡的步驟了。

Deprecation of tags= in include

碰到這個訊息:

[DEPRECATION WARNING]: You should not specify tags in the include parameters. All tags should be specified using the task-level option. This feature will be removed in a future release. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.

這是因為這樣寫:

- include: setup.yml tags=myrole,setup
- include: myrole.yml tags=myrole

論壇有人問,開發團隊回答說,建議的作法是把 tags 拿下來,不要放在 include: xxx 的後面,也就是:

- include: setup.yml
  tags=myrole,setup
- include: myrole.yml
  tags=myrole

Automate Django createsuperuser in Ansible

Ansible 有個 django_manage 模組,可以很方便的執行 django 裡的 manage.py,但是受限於 createsuperuser 的關係,並沒辦法在建立 superuser 的同時,一併設定密碼。

一般網路上的解決方法是自己寫個小 python 腳本 (可以看這篇 How to automate createsuperuser on django? ),丟給 shell 去執行。我是想到可以利用 manage.py 提供的 changepassword 並搭配 expect 來做,大致上是這樣子:

另外也做了避免重複建 superuser 的機制。

Ansible notify

notify 很方便,可以先不執行 task,等到都執行完了才執行 handler 裡的 task。

但我遇到明明有 notify ,handler 裡的 task 卻沒有執行到,試了很久,找了好久才知道,必須 task 的狀態有改變的時候才會 notify ,而 ansible 的每個 task 的狀態並不是都會改變的,例如 ansible 發現檔案跟要變更的一致就不會改變狀態。

如果要強制改變,可以加上 changed_when: true ,這樣在執行完 task 時,永遠都把狀態設定為改變,也就會 notify 了。

- name: Install nginx configuration
  template: src=nginx.conf.j2 dest=/etc/nginx/sites-enabled/default
  notify:
    - reload nginx
  changed_when: true