星期五, 2月 12, 2016

Celery 的 autodiscover_tasks

跟 Django 的整合可以參考 First steps with Django
裏 面會要求你在 django app 的目錄下新增一個 celery.py,這裡有一行 app.autodiscover_tasks(lambda: settings.INSTALLED_APPS) ,這行就是找到所有 tasks 的關鍵。找不到 task 的話,執行 python manage.py celeryd 時,不會有錯誤訊息,只在程式要執行這些 task 時印出錯務訊息,說找不到。
原始碼是在 celery/app/base.py 裡,大致就是依照 INSTALLED_APPS 列出的 package 去找 tasks,有的話就 import 進來。如果你的 celery task 沒有列在 INSTALLED_APPS 裡,或是函式不在 tasks 裡的話,可以再多加 app.autodiscover_tasks,例如 app.autodiscover_tasks(['your_module'], related_name='my_tasks') ,這樣就可以引入使用了。

星期日, 2月 07, 2016

電影流水帳(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 在機場裡的對話頗有深意,所以應該是沒打算再拍續集了。

星期五, 2月 05, 2016

Ansible 的 callback

Callback 可以讓人有機會處理執行的結果,網路上有些人會寫自己的 callback plugin 以便統計執行結果什麼的。寫 callback plugin 的方法蠻簡單的,先繼承 CallbackBase ,然後覆寫裏面的方法即可,Ansible 有提供不少範例可供參考。
幾件事情要注意:
  • 寫 callback plugin 時:
    • 要寫 CALLBACK_TYPE,這裡如果填 'stdout' 時,在 ansible.cfg 裡的 stdout_callback 也要指定為這個 callback ,這樣 callback 才會生效。
    • 要寫 CALLBACK_NAME,這是 callback 的名稱,建議最好跟檔案名稱相符,並且不要跟官方的 callback 重複。
  • 使用時:
    • ansible.cfg 裡要指定 callback_plugins,這是填路徑。可以填相對路徑也可以填絕對路徑。
    • ansible.cfg 裡要指定 callback_whitelist,這是填 callback 的名稱,可以用 ',' 分隔多個 callback。顧名思義,是一個白名單的形式,有填才表示啟用 callback。
    • callback 在預設情況下只有在使用 ansible-playbook 時才會生效,如果要讓 ansible adhoc 也能用 callback,得在 ansible.cfg 裡指定 bin_ansible_callback=True 。不過,CALLBACK_TYPE='stdout' 的 callback plugin 是適用的。

星期四, 2月 04, 2016

Apache 設定多個 VirtualHost 的預設

一台主機上要綁定多個 domain name ,是藉著設定 Apache 的 VirtualHost 來完成。那如果在沒輸入 domain name 的情況下,要使用指定的設定該怎麼做呢?
簡 單的說,Apache 會以第一個 VirtualHost 來當作預設的。例如現在有兩個 VirtualHost,一個是 A,使用 www.example.com;一個是 B,使用 www.example.net ,那麼網址列輸入 IP 時,會看到 A。想要有預設的 VirtualHost,就是在設定 A 的前面多加一個 VirtualHost,裏面不指定 ServerName 就可以了。

星期二, 2月 02, 2016

找 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 裡填入,再設定要執行的動作就行了。
參考資料:

您或許對這些文章有興趣

Related Posts Plugin for WordPress, Blogger...