批次改 wordpress 文章可見度為 Private (私有)

有在用 SEO 的話,這功能應該是用不到,剛好有用到,就研究了一下。

一開始是想,有 plugin 可以做到這件事情,所以就找 plugin 看看。先找到 PrivatePostDefault,這可以把預設發文的可見度改為私有,但沒找到可以批次修改的 plugin。胡亂找了半天,終於發現我是白痴,原來早就有這功能,只是不知道怎麼用。先選到 All posts,然後選右上角的 screen options,設一頁可顯示的筆數,這時候是愈多愈好。保存以後,選 Public,勾選所有文章,在 Bulk action 的地方,改選 Edit,然後按下 Apply,再把 Status 改為 Private 即可。打完收工。

電影流水帳(2012/10/1~2012/10/15)

DSC08351_ZAG

  • The Hunger games (IMDB, Wikipedia),中譯:饑餓遊戲。去年有看過書的三部曲了,所以看電影的目的就只是想要看看跟書上的差距有多少。我個人是覺得還可以,可是有些劇情的開展,並不如小說來的清楚。例如,Rue (捲髮小女孩,很會躲)那一段,沒看過小說的人應該會覺得莫名其妙,電影裡只交代了「果」,就是他們一起設計去燒了物資,並沒有交代他們怎麼會認識並成為好朋友。還有就是跟 Peeta 的糾葛,怎麼會又愛又冷的感覺。很多人都說劇情有點像是大逃殺,我個人覺得是不相同的類型,應該算是那種浩劫餘生,資源被強國掌握,被迫要照強國安排走的的悲慘局面。為了走出這局面,男女主角以相較於以往不同的方式來反抗,而湊巧這就跟以往一直在地下游走的反抗勢力結合,這部分會在後續兩部電影交代。
  • 痞子英雄首部曲:全面開戰 (IMDB, Wikipedia),英譯:Black & White Episode I: The Dawn of Assault。是電視劇的前傳,劇情有撲朔迷離到,然後也有誇張到,相當緊湊,還不錯看。徐達夫為了女人,冒險去做黑市交易,豈料卻捲入陰謀之中。然後就跟吳英雄結合查案,最後發現是SPARK公司為利,要讓恐怖份子與海港城發生戰爭,然後解決危機這樣。整部片裡我覺得最有趣的是戴立忍以標準國語解說為什麼他要這樣做的部分,不,並不是戴立忍演技有問題,只是這樣的口音跟解說實在是讓人覺得有突兀感,就這樣。

 

scraperwiki

scraperwiki.com 是一個可以讓你寫網路爬蟲程式的網站,在網站上寫,立刻就能執行並看到結果。語言的話可以用 PHP/Python/Ruby 這三種程式語言,而資料是儲存到 sqlite3 資料庫裡。

Android螢幕解析度

需要寫一個程式同時支援平版跟手機,是故,螢幕解析度就是一個討厭的問題了。上網 Google 了一下,在 StackOverflow 裡看到一篇:Android : App support for multiple tablet screen resolutions,雖然還沒投票選出最佳答案。但是第一個回覆蠻中肯的,他建議先去看 Android 開發網站的這篇 Using new size qualifiers ,就是一般的就用原來的 layout,那平版就用 layout-sw600dp 或 layout-sw720dp ,甚至乾脆就用 layout-v11。總之,Android 開發網站上 Best practice 裡的 Support multiple screens 很值得一看,有提到設計的原則、圖形怎麼選用與縮放,也提到怎麼測試。

說真的,其實現在也不知道用的平板是那一塊,就先弄一般手機 layout 的就好,等知道了平板的解析度,再來調整也不遲。

 

EditText 的 setOnEditorActionListener

還是紀錄一下好了。

在改 2.3.3 Phone app 裡的 GetPin2Screen 時,很妙的一點,它只有去設置 mPin2Field 的 onClick 事件,這樣的結果是導致輸入完 PIN2,按下 Done 以後,一點反應都沒有。

上網 Google 了一下,看了一堆 EditText 的介紹/密技以後,發現是要用 setOnEditorActionListener 去攔截按下 Done 的動作。所以就老實地實作了 OnEditorActionListener 介面,然後 setOnEditorActionListener()。原本 mClicked 裏面的 code 則被我整理成 function,給 OnEditorActionListener 呼叫。軟體鍵盤右下角的 “Enter” 可以透過改 layout 解決,要幫 EditText 增加一個 attribute:android:imeOptions=”actionDone” 。

主要參考資料:

 

 

vim調整split後的區域大小

按下 ctrl+w s 與 ctrl+w v 以後分割出來的區域,vim 裡是叫作 window,所以用 google 去找 vim split window size 就可以找到說明。

要調整 window 的方法,也是要先按下 ctrl+w:

  • ctrl+w +、ctrl+w -:先按下 ctrl+w 再按下加號或減號,是增加或減少列數,也就是調整上下分割時用的。
  • ctrl+w >、ctrl+w <:先按下 ctrl+w 再按下大於或小於符號,是左右分隔線向右或向左的意思,主要是調整左右分割實用的。

以前就很想知道這功能了,其實早就應該去查了,這樣才會記的住,才不會老是在想說該怎麼弄。

Python Performance Enhancement Tips筆記

以下是摘要:
  • python -m cProfile -s cumulative $1
  • time 指令
  • 用 pypy 與 python 對比:time python a.py 與 time pypy a.py
  • 可以考慮組合應用,一部份用 pypy,一部份用 python,因為 pypy 無法使用某些模組。
  • thread 效能不彰,因為 GIL 的關係,儘量使用 multiprocessing module 來代替 thread。要注意不可以使用函式內的函式,否則會有 Exception 發生,參數函式跟回傳值都要是 pickable 的。
  • 可以考慮使用 gevent:淺談coroutine與gevent

 

 

電影流水帳(2012/9/11~2012/9/30)

Aishwarya Rai

  • Men in black 3 (IMDB, Wikipedia), 中譯:星際戰警3。這集玩的梗是時空悖論,在他們去阿波羅 11 號太空梭搭建ArcNet的那段,我覺得怪怪的,但我說不上來。在 1969 年被 K 關到月球監獄的 Boris 透過幫忙,逃出了監獄,他用時空跳躍器回到過去,殺死了 K。J 一覺醒來,發現自己超愛喝巧克力牛奶,而且周圍的人都不記得 K 了。O 告訴 J ,可能是有人回到過去,你會記得,可能是因為你們過去有牽絆。於是 J 就回到過去,跟過去的 K 一起冒險,他們要拿 Griffin 的 ArcNet 去阿波羅 11 號,把 ArcNet 發射到外太空以保衛地球。在把 ArcNet 放到阿波羅 11 號時,與兩個 Boris 展開激戰,最後的一段插曲真的很溫馨,不僅帶出了為什麼 K 那麼少話,也帶出了為什麼 K 與 J 會有那個牽絆,甚至在之後 K 錄用了 J。還不錯看,應該不會再拍 4 了吧?
  • Enthiran (IMDB, Wikipedia),中譯:鐵甲戰神。前兩年就看過有人介紹說不錯看了,今天正好在好萊塢電影台看到,就順著一直看下去,所以其實也沒有真的全部看完,大約是從十分之二左右處開始看。前面的劇情很老梗,就是有個印度科學家 Vaseekaran 造了機器人 Chitti ,他一直想藉此揚名立萬,但是國家科學委員會的委員長 Dr. Bohra 一直阻攔。藉著這個阻攔,Vaseekaran 讓機器人 Chitti 有了感情,並且向社會大眾證實了機器人真的可以保家衛國,拯救人類。豈料 Chitti 在有了情感以後,愛上了 Vaseekaran 的女友 Sana,這也是後面一場大戰的緣由。Dr. Bohra 一直阻攔是因為他想拿到這機器人的關鍵組件來製作可以作為戰爭用途的機器人,他接了恐怖份子的訂單,但是一直沒辦法研發出關鍵組件,眼見就要開天窗了。Vaseekaran 在這時候與熱戀上 Sana 的 Chitti 鬧翻,Vaseekaran 把 Chitti 解體丟掉。Dr. Bohra 在這時救了 Chitti,重新組裝以後,額外加上了紅色的破壞程式晶片,這個晶片讓 Chitti 變得非常邪惡與強大。仍然熱愛著 Sana 的 Chitti,首先就去搶了婚,接著製作自己的分身機器人並殺了 Dr. Bohra,Dr. Bohra 真的沒想到他的破壞程式晶片這麼強大 (這些人是都沒想到要裝後門嗎?)。Chitti 製作了許多分身機器人,成為一股勢力。Vaseekaran 要救女友,就化妝成 Chitti 的樣子混進去 (就在這時,我發現 Chitti 跟 Vaseekaran 是同一個人演的,囧,我也太遲鈍) 進行破壞。第1招是中斷電力,機器人是以電力作為能源的,中斷電力的話,就可以讓機器人失去動力,這招差點就成功,敗在汽車手下,在幾乎要沒電的時候,Chitti 用汽車電池充了電。捲土而來的 Chitti 更加強大,接下來的科幻程度超乎我的想像,這些機器人可以組成球、蛇甚至機器人開始追殺 Vaseekaran 跟 Sana,以人型機器人來做組合的這個段子在其他電影中沒看到過,想看精彩片段的可以參考 Youtube。第2招則是病毒,這招也不行,聰明的 Chitti 在打壞 Vaseekaran 的電腦後,自己啟動了殺毒程式,清除了自己與分身機器人身上的病毒。最後則是在解除 Chitti 磁吸程式,讓 Chitti 與分身機器人解除合體以後,以強力電磁鐵把真身 Chitti 吸到車子裡,快速地打開身體,啟動破壞程式破壞其他分身機器人,並拿出紅色破壞程式晶片,總算解除危機。造成這麼大的危害,Vaseekaran 被法院判了死刑,機器人 Chitti 跳出來以證物的身份翻案,指出其實是 Dr. Bohra 造成了,法官因此決定翻案,免了 Vaseekaran 死刑,但是 Chitti 要被解體。片子最後就是 Chitti 被解體,然後頭被放到博物館展覽。
  • The smurfs (IMDB, Wikipedia),中譯:藍色小精靈。不錯,重拾了兒時的回憶,如果小時候沒看過,也許對這部片就比較沒感覺,不過我家大公子倒是看的津津有味。我是從大約五分之三左右開始看的,前面大概可以猜到劇情,應該是因為某些原因,賈不妙打開了時空通道,讓藍色小精靈跟賈不妙一眾人等來到現在的紐約市。藍色小精靈認識了正因為懷孕而苦惱的男女主角,並得到他們的幫助,尋找如何回家的方法。而賈不妙則利用他的魔法開始追捕藍色小精靈。整個故事就是在紐約展開,在一連串的冒險之後,老爹找到如何回家的方法;賈不妙本來被抓到監獄,透過蛾聯絡蒼蠅以後,逃出監獄;藍色小精靈一眾人去舊書店找咒語時,被隨後而到的賈不妙看到,老爹犧牲自己,要其他人快回去。藍色小精靈當然不肯,回去跟男女主角商量以後,男主角出來幫忙,而小聰明則是打開時空通道,把所有村民都找來一起救老爹。最後當然是救出了老爹,所有藍色小精靈回到村子,有皆大歡喜的結局。

vim 凸顯游標所在列

因為要對 log,所以有此需求,印象中vim 可以做到,但不知道指令。

後來 google 了一下,找到是 cursorline,輸入 :set cursorline! ,游標所在列就會出現光棒或是有底線 (視 vim 所在環境而定)。有游標列,就有游標行,:set corsorcolumn! 就是了。

 

資料連線的重試

主要是看資料連線會怎麼個重試法。

從 ConnectivityManagerService 可以看到有追蹤 Mobile data state (MobileDataStateTracker),這裡會呼叫到 Phone 裡的 enableApnType(),這個函式最終是呼叫到 DataConnectionTracker.enableApnType(),而這個 method 其實是 virtual 的,分別由 CdmaDataConnectionTracker 與 GsmDataConnectionTracker 這兩個類別去實作。

在 CdmaDataConnectionTracker 裡可以看到利用 ALARM_SERVICE 進行重試連線的機制。Intent 名稱是 INTENT_RECONNECT_ALARM,而重試時間則是由 nextReconnectDelay 決定。nextReconnectDelay 則是從 mRetryMgr.getRetryTimer() 取得。mRetryMgr.getRetryTimer() 其實是依據 mRetryArray 裡的值來回傳,mRetryArray 則是在 mRetryMgr 被建立時,用 configure() 方法去初始的。configure() 收一個字串,CdmaDataConnectionTracker 裡會先看 ro.cdma.data_retry_config 這個 property,如果沒有,就丟 DataConnectionTracker.DEFAULT_DATA_RETRY_CONFIG 這個字串給 mRetryMgr.configure() 去解析。

字串裡的格式,主要以逗號分隔,可以有這四種:

  • default_randomization 預設亂數時間
  • max_retries 最大重試次數
  • delay_time 延遲時間,亂數時間則是使用 default_randomization
  • delay_time:randomization_time 延遲時間與亂數時間

DEFAULT_DATA_RETRY_CONFIG 裡是這麼寫的:default_randomization=2000,5000,10000,20000,40000,80000:5000,160000:5000,320000:5000,640000:5000,1280000:5000,1800000:5000  ,解析以後,會把 5000 到後面的值都放到 mRetryArray 裡,所以 mRetryArray 就有十個元素。

運作時會依據 mRetryArray 的值進行重試 (單位是 ms 亦即除以 1000 就是秒),當連線失敗,會等待 5 秒+亂數2秒,然後重試;如果失敗,接著會等待 10 秒+亂數2秒,然後重試;如果又失敗,接著會等待 20秒+亂數2秒,然後重試;依此類推;當重試超過第十次時,就會一直用第十次的值,繼續去重試。

這個重試的過程會一直持續下去,直到沒訊號、 漫遊或是設定裡的 Data Enabled 被關閉為止。