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 自己編譯。

電影流水帳(2012/7/13~2012/7/31)

brooklyn-decker-gallery-2

  • Battleship(IMDB, Wikipedia),中譯:超級戰艦。電影的故事很合理,外星人的確未必是友善的。地球人主動向外太空可能有生命的地方發射訊號,導致了外星人派出先遣部隊來犯。剛好,降落的地方就在夏威夷舉行軍事演習的地方,就展開了一場戰役。一開始,地球人是處於弱勢的,但是在後期掌握足夠的資訊以後,開始反擊。是說後面也有點誇張,一艘老戰艦竟然還能運作並且作戰。還不錯看啦,只是對於那個男主角,真的很想巴下去,到底是在孬種的什麼勁,該開口跟女友父親說的就快說啊,真是的。男主角正巧就是上次看過的 John Carter 的男主角,表現還不錯,但他的女友才是亮點(如上圖)。
  • Safe house(IMDB, Wikipedia),中譯:狡兔計畫。CIA 在各地都有租用公寓,作為秘密行動時可以使用,被稱為Safe house。這次則是逮到大咖的人 Tobin Frost,他拿了一份秘密的名單遭到追捕,到了男主角 Matt 在顧的公寓,要開始嚴刑拷打。想不到卻被追殺,所有人都被殺了,Matt 帶著 Tobin 要到下個 Safe house 去。Tobin 一直想逃掉,一度也逃掉過,但是在 Matt 鍥而不捨的追查下,還是抓到。在追查的過程中,Tobin 慢慢跟 Matt 分享為什麼他叛逃 CIA 並握有名單的原因。原來是因為 CIA 內部有嚴重的收賄問題,而他握有的名單就是這些人的名單,這也是被追殺的原因。這些追殺他的人其實也是 CIA 的人。最後 Matt 與 Tobin 聯手消滅了追兵,但 Tobin 受傷太重而死去。Matt 回到局裡以後,上了假報告,然後把這份名單偷偷發給媒體,於是高層展開調查…

 

 

calibre-haodoosearch 為 Calibre 增加搜索好讀網站並下載的功能

昨天在用 Calibre 時,突然想到如果可以直接在 Calibre 裡直接做搜索與下載的動作不是很好嗎?原本是先去好讀網站上搜索,然後下載到某個資料夾以後,再放到 Calibre 裡,這樣的動作很繁瑣。

有起了念,就趕緊去找,之前是看過幾次寫 Calibre plugin 的文,但這次是增加對書籍的搜索,不知道是不是可以寫這樣的 Plugin。在 Calibre 的源碼裡翻找了一下,大致知道這樣是要寫個 Store,所以就用 Calibre store plugin 去搜索,就找到 Store plugin 的討論串。這個討論串裡面正好有提供框架,就直接拿來改了。今天改了一上午,就改的差不多了,源碼放在 github 上 。有需要的人就自行取用,使用上有一天一百次的限制,這是 Google APIs 的限制,你可以試著申請 developer key,然後把 haodoo.py 裡的 key 改掉,就可以自己擁有一天 100 次 query 的限額。

順便記錄一下幾個心得:

  • 可以直接用 print() 印訊息,然後搭配 calibre-debug 就可以看到輸出。
  • 在設定 actual_plugin 時,搞了好久,然後才發現是自己忽略了框架plugin裡的 .txt 檔案。這個檔案名稱決定了 actual_plugin 屬性該怎麼寫。
  • 實驗結果,Calibre 從 UI 傳下來的字串是 utf-8,然後直接宣告字串變數的話,該字串變數則是 unicode 。
  • 最好不要使用 Calibre 裡面沒包的 library,要不然會很麻煩。我本來是打算用 Google API client library 來執行 custom search,但是後來發現有太多依存關係,就放棄了。
  • 有些字串在印完會丟出例外,我後來乾脆都用 try except 包起來,要不然會沒辦法繼續執行/除錯。
  • 可以自己寫批次檔來做快速佈署的工作,這在 Writing your own plugins to extend calibre‘s functionality 有介紹,會省掉很多工夫。主要就是 calibre-customize 這指令,當這樣用時 calibre-customize -b /your_plugin/ ,會自動幫你把 your_plugin 壓縮成 your_plugin.zip ,並且放到 Calibre 的 plugins 目錄 (Windows 上是在 $USERPROFILE\Application Data\calibre\plugins )。

 

電影流水帳(2012/6/30~2012/7/12)

A Princess of Mars

  • John Carter(IMDB, Wikipedia),中譯:強卡特戰記。這是改編小說的電影,小說的原名是A Princess of Mars(火星的公主),原文小說可以在古騰堡計畫裡下載。故事採取倒敘法,一開始主角就突然死去,留下家產給他的姪子,他的姪子趕緊趕來,然後開始閱讀他的日記。歷史背景是在美國建國初期,主角原本是個軍人,他把自己奉獻給國家,但是後來卻因為妻小被殺害,萬念俱灰,就不再從軍,改去淘金。淘金時,他被軍隊抓住,之後他挾持軍隊的長官逃出,逃到某個洞穴時,遇到 Thern,被傳送到火星去。在火星,由於重力的關係,主角變得很厲害,一開始是被Tharks(火星上的某個種族)抓住的,之後救了Dejah公主,之後在一連串冒險之後,他找到自己的目標,就在Dejah為了Helium的和平與Zodanga結婚之時,帶領著Tharks打倒Zodanga救了Dejah公主。然後新郎就變成了主角,主角與Dejah公主成親的當晚,他把Thern的項鍊丟掉,決定不再回地球,造化弄人,Thern的領袖突然出現,把他傳送回了地球。主角為了再回到火星,開始運用他找到的金子四處考古,想找到那個可以傳送他回火星的項鍊,但一直都沒找到。這一天,他突然想到一個方法,於是他就發電報找了他的姪子回來…結尾的這個梗我覺得很有趣,暗示了可能拍下一集,我就不破梗了。
  • The RAID: Redemption(IMDB, Wikipedia),中譯:全面突襲。超讚的動作片,從頭打到尾,氣氛跟武打都很到位!主角是個特警,局裡出任務,正好是要去他弟弟所在的地方進行勦滅任務。進去那個屋子以後,就開始打打打,打的很精彩,也很血腥。最後靠著他弟弟的幫忙,打倒了大魔王,然後也帶回那個串通敵方的人。