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 被關閉為止。

電影流水帳(2012/8/24~2012/9/10)

The Avengers movie art

  • The Avengers (IMDB, Wikipedia),中譯:復仇者聯盟。網樂通最近強推,就趁機會看完了,花了 48 元。這集的反派是Loki,而搶奪的東西則是宇宙魔方。宇宙魔方突然能量大增,Loki 出現,接著用魔法迷惑了神盾局的鷹眼與 Dr. Selvig,搶走宇宙魔方。神盾局當然不會坐以待斃,開始追蹤,並且找人,組成 Avengers。想不到 Loki 後來自投羅網,試圖造成 Avengers 的內鬨 (事實上也不全然是 Loki 所造成,神盾局本身與各個角色本來就有不少糾葛),的確,有造成此一效果,神盾局的那艘超級航母因此受損,我很喜歡的角色 Phil 也死掉了。這個人成為 Avengers 團結的關鍵角色,到了這個時候,片子也快滿兩個小時,再不大戰就悶了,於是 Dr. Selvig 在這個時候利用新建史塔克大樓的電力打開了時空門,讓外星人來到地球,Iron man、Hulk、Captain America、Thor、Black widow、回復神智的 Hawkeye 就開始跟外星人打起來。打了好一陣子之後,Loki 被打下來,Hulk 衝過去就抓起 Loki ,像甩打麵糰一樣甩打 Loki,邊說著,怎麼有這麼虛弱的神啊,這一幕讓人印象深刻。接著,很像是 SEELE 的美國議會不顧 Nick Fury 的反對,決定要發射核彈到紐約曼哈頓島,核彈在秘密的指令下被發射了,飛啊飛。這個時候 Black widow 透過 Dr. Selvig 的幫忙,控制了時空門,問說該不該破壞。從 Phil 身上體會了犧牲奉獻真義的 Iron man 說,這個核彈不能在曼哈頓島爆炸,於是奮勇利用最後的能源把核彈送到時空門的另外一邊,但 Iron man 自己也沒有能源,掉了下去 (是說,在外太空有所謂的重力嗎?為什麼會掉回地球? ),核彈爆炸了。眾人在等了許久,等不到 Iron man 回歸之際,Captain America 只能很沉痛的下令說要把時空門關上,Black widow 就破壞了時空門的裝置。Iron man 很幸運地在時空門關閉前掉了下來,但是沒有能源的他,就一直掉一直掉,Hulk 很帥地在這個時候救了 Iron man。最後,外星人都被殲滅了,Loki 被抓住並與 Thor 回了 Asgard,並且透露了會有續集的可能。
  • Act of Valor (IMDB, Wikipedia),中譯:海豹神兵。有點悶的片,這部片子裡沒有大牌,也沒有那種大場面的戰爭畫面,但是劇情很真實,就是海豹部隊出任務。從救人、阻止炸彈爆炸,都很像真的,我甚至覺得這會不會是一部有簡單劇情的紀錄片。

 

電影流水帳(2012/8/1~2012/8/23)

TANGLED | ENROLADOS

  • Journey 2: The mysterious island(IMDB, Wikipedia),中譯:地心歷險2-神秘島。很歡樂的片子,不太需要花力氣就能理解劇情,明顯是給中小學生看的電影。上集的主角有了新的繼父,雖然繼父對他很好,但是主角不領情。片子的一開始,主角因為收到神祕的電波,想收的更清楚而跑到衛星發射站去收,結果被警察追捕。繼父後來保了他出來,並且問他為什麼,並幫主角破譯,才知道是祖父在夏威夷神祕島發出的信號。於是他們就一起去了夏威夷要找祖父。在夏威夷遇到漂亮的女孩跟她開直昇機的父親,就出發去神祕島了。依據電波所指名的經緯度,他們算是順利的找到神祕島,但直昇機因為圍繞在神祕島周圍的風暴而墜毀了。到了神祕島,果不其然,一切事物都非常的奇妙,也找到了祖父。然後,去看遺跡的時候,主角的繼父用手掬起一把地上的水,舔了舔之後,就說,「水鹹鹹的,這島快沈了,大概還有兩三天的時間。」是有沒有這麼神?好吧,島上的地震頻繁,而且還有火山爆發,是真的快沈了。然後他們就決定去找 Captain Nemo 的鸚鵡螺號(不是Pixar的Nemo),想藉著潛水艇逃出神祕島。Captain Nemo 的鸚鵡螺號是凡爾納小說裡的神奇潛水艇,也曾經出現在The League of Extraordinary Gentlemen裡。經過一番歷險之後,就順利找到潛水艇,還用電鰻補了電,終於逃了出去。最後主角跟繼父、繼父跟祖父的感情變好,主角跟女主角也成為男女朋友,皆大歡喜。片尾似乎透露了還有拍第3集的意願,上月球?!
  • Tangled (IMDB, Wikipedia),中譯:長髮公主。故事是來自格林童話裡的Rapunzel,迪士尼稍做改變。巫婆因為神奇的花被國王拿去救懷孕的太太,太太之後生了小孩,而小孩的頭髮因為花的關係有了神奇的力量,所以把小女孩Rapunzel綁架走,帶到高塔之上。為了神奇的力量,她不敢剪Rapunzel的頭髮,就這樣過了十八年。Rapunzel在這十八年間,每年生日的時候都看到天燈,對外面心生嚮往。十八歲生日的時候,她跟以為是媽媽的巫婆繼母說,想出去走走,巫婆繼母為了神奇的力量,當然是不願意。後來,有個通緝犯逃了進來,Rapunzel 跟他做了交易,就出去冒險了。巫婆繼母為了神奇的力量,跟蹤出去,並且設計了詭計,讓Rapunzel以為外面的人不可以被信任。回到高塔以後,卻想不到一連串的冒險讓Rapunzel想起了嬰兒時期的事情,知道了自己就是國王所要找的公主,也知道自己誤會了男主角。男主角則是透過Max馬的幫忙逃出監牢,去到高塔。上了高塔之後,卻被捅了一刀,快死掉了。Rapunzel為了救男主角,跟巫婆繼母交換條件,救了男主角就跟你走。想不到男主角拼著最後的力氣,把Rapunzel的頭髮給剪了,神奇的力量就此消失。巫婆繼母大驚之餘,掉到高塔之下死去,Rapunzel抱著男主角屍體痛哭,這時候想當然爾的發生了奇蹟,男主角再次活了過來,Happy ending…

 

 

jsdx-toolkit的安裝

安裝碰到的問題,安裝時會要編譯,所以需要安裝必要的開發套件,其實也就3個:libclutter-1.0-dev、libmx-dev、libclutter-gst-dev,然後再安裝 jsdx-toolkit 即可:npm install jsdx-toolkit

奇怪的是我執行了兩次 npm install jsdx-toolkit 才成功。

死亡證明這件事

父親往生了,因為慌亂,沒請醫院開死亡證明,葬儀社就找了醫生來幫忙開死亡證明。

遺體送到殯儀館時,醫生已經在那邊等了,不知道是不是等太久,從我們口中無法得知正確死因時,他看起來有點生氣。後來聽他抱怨之後,才知道,現在其實很多死亡證明都是隨便開開。在殯葬界,有好幾組醫生是專門在開死亡證明的,他所知道的這些醫生,其實都是有執照但沒開業的醫生,在開的時候,都是助理寫一寫,醫生在旁邊看,所以死因都是一些器官衰竭、心臟麻痹……等千篇一律的病名。也因為這樣,他抱怨政府在這方面的鬆散,跟衛生署建議,衛生署也不理,衛生署的十大死因根本就不準確。我想他是相當嚴謹的人,只是想把自己本份做好,不想這樣隨便把死亡證明開出去,這樣的人值得佩服。

聽了抱怨之後,醫師接下來要我們去聯絡醫院主治醫師,他口頭詢問。還好妹妹剛好有去醫院申請診斷證明書,就請她幫忙找主治醫師。之後,葬儀社的師兄來了,就跟他小吵了一下,說醫院現況大部份都是你自行出院時,院方不負責開立死亡證明。講了好一會兒,醫師最後還是答應開,就根據我們所說的,儘可能符合現況,在開完的時候,妹妹聯絡到醫生了,他們通了電話之後,確定跟剛剛所開立的死亡證明相符,開死亡證明這件事情就此落幕。

 

FreeBSD 9 小記

上次裝 FreeBSD,是在 FreeBSD 4 的時候,換言之,已經是差不多快十年前的事情了。

首先當然是下載光碟,我下載了 DVD 版本,下載完畢,就用來開機。開機以後,安裝步驟出乎意料的簡單,問了鍵盤配置、網路、磁碟等等,不超過五個問題,就開始安裝。安裝完以後,就可以開機進去了。

進去以後,想要裝一些趁手的軟體,安裝是使用 pkg_add。pkg_add 預設是使用 FTP 去下載軟體來安裝,因為公司網路對 FTP 的封包非常不友善,於是要改為 HTTP,這裡要用 setenv PACKAGESITE http://ftp.tw.freebsd.org/pub/FreeBSD/ports/i386/packages-9.0-release/Latest/ 把預定要下載的網站改為台灣的伺服器,同時也將 ftp:// 改為 http:// ,這樣就好多了。

目前就先裝了 vim 跟 kde4,晚點再來試試用 ports 自己編譯。