Vim C-] 失效

問題描述:vim 裡確定 tags 的設定都正確,但按下 Ctrl-] 卻沒有跳到游標所在函式的定義。

問題發生要件:

  1. 使用 gcin
  2. 使用 gnome-terminal, terminator … 等非 xterm 的終端機程式

原因:

gcin 設定的「內定輸入法」裡,「Ctrl 輸入標點符號」被勾選了。將這個設定取消,就沒有問題了,因為勾選時, gcin 會將 Ctrl-] 轉譯為 “」”。

電影流水帳(2013/10/10~2013/10/22)

Emma RobertsEmma Roberts 在 We are the Millers 裡飾演女兒的角色,電影裡除了 Jennifer Aniston 這個熟女之外,就屬她最正了。

  • We are the Millers (IMDB, Wikipedia),中譯:我家就是米家。David 是個毒販,在幫鄰居 Kenny 的時候,被洗劫了所有的錢跟他借來賣的毒品,所以他被追殺。毒梟給他一條生路,要他去墨西哥走私毒品回來,David 為了生存,再怎麼難也只能答應。David 本來是很苦惱的,結果坐在路邊的時候,看到露營車而想出一個好主意,就是假扮出遊的一家人去墨西哥,就不會被發現了。於是他就找了 Kenny、Rose、Casey 假扮兒子、媽媽跟女兒,就去墨西哥了。運毒的過程有驚險,有搞笑,最後是平安的運回美國,並且設計想打算白吃 David 的毒梟進監獄,然後接受証人保護計劃,一家人假戲真做的住到一起,算是一個好結局。這部片還算蠻好笑,可能是因為我覺得 Kenny 本身就很有喜感吧。
  • Pacific rim (IMDB, Wikipedia),中譯:環太平洋。機器人電影,大致上就是日本怪獸片加上類似福音戰士的巨大機器人這樣子,劇情相當的簡單。太平洋海溝出現時空裂縫,怪獸跑來太平洋周圍肆虐,人類製造超大機器人與之對抗,經過了十數年之後,終於到了生死存亡的關鍵時刻。怪獸也愈來愈厲害,各國受不了無止盡的以物資支援製造機器人計劃 (這裡也很妙,其實明知蓋圍牆是無效的,還是打算這樣做,這到最後就會像是「進擊的巨人」講的那樣,人類最後只能居住在一定的範圍裡,其他地方都被怪獸佔領。),計劃負責人決定在最後的有限時刻奮力一搏,用核彈把時空通道炸掉,故事就這樣展開。最後當然是皆大歡喜的把通道炸掉,怪獸不會再來地球,男女主角也相擁,未來將踏上相知相守的旅程 將見證地球美好的未來…

Python patterns – Visitor

開始來看 Python patterns,第一個看的是 Visitor。

  1. __mpro__ :這個內建的隱藏屬性可以列出父類別以及其上的所有類別,程式利用這個來取得繼承樹,並進行訪問。這部分的說明可以參考 What does “mro()” do in Python? – Stack Overflow
  2. 程式利用 getattr() 先去查看類別是否有實作 visit_xxx 方法,如果有就呼叫,如果沒有,才呼叫 generic_visit 的方法。

這跟 Visitor Pattern 似乎不太一樣,作者也在 Extrinsic Visitor Pattern in Python with support for Inheritance – Peter Hoffmann 裡說了,這是一個變形過的 Pattern。

如果要 Python visitor 的範例,可以參考 PythonWise: Visitor Design PatternThe Visitor Pattern in Python

補充:後來看了 ast module 以後,其實作者提的就跟 ast module 裡一模一樣。主要還是應用在 Tree 上。

gtk+ windows 應用程式裡的文字亂碼

大多數的 gtk+ Windows 應用程式都有相似的問題。

第一步,要先知道應用程式是使用哪裡的 gtk+ library,一般省麻煩的,會自己包在一起,安裝時會放在安裝目錄下。所以可以找到 etc/gtk-2.0 這個目錄,請編輯 gtkrc ,加上:

style "user-font"
{
    font_name="Sans 12"
}
widget_class "*" style "user-font"

就可以解決了。

如果不是在安裝目錄下的,就得自己回想一下看之前安裝在哪裡了。

PokerTH 0.4 編譯問題

環境:Ubuntu 12.04

下載 PokerTH 0.4 版來編譯,QT 的系統都是要先打 qmake 來產生 Makefile:

qmake
make

結果會出現錯誤

‘class boost::detail::try_lock_wrapper<boost::timed_mutex>’ has no member named ‘locked’

12.04 有 3 個 libboost-thread 版本:1.46, 1.48, 1.49 ,試過以後都不行。

直接去 /usr/include/boost/thread 看,原來是沒有 locked() method,去 src/core/common/thread.cpp 裡,將使用 locked() 函式的地方修改為 owns_lock() 就可以編譯了。

電影流水帳(2013/10/2~2013/10/9)

Wonder Woman - Adrianne Palicki圖片是 G.I. Joe Retailation 的女主角 Adrianne Palicki ,堪稱亮點,至於這部片的其他部份就…嗯…

在查白百何資料時,才發現她的老公是陳羽凡,之前在「我是歌手」跟主持人搭檔演唱的歌手,真是讓我嚇一跳!

  • G.I. Joe: Retaliation (IMDB, Wikipedia),中譯:特種部隊2-正面對決。延續上集的劇情,眼鏡蛇的首腦都被捕,只剩下白幽靈跟冒充美國總統的 Zartan 。眼鏡蛇開始反撲,冒充美國總統的 Zartan 以莫須有罪名抹殺 G.I.Joe,Duke 陣亡,主角變成 Roadblock (Johnson) 跟 Jaye (Adrianne Palicki) ,然後展開雪冤、保護總統的秘密行動。白幽靈則是救出眼鏡蛇首腦後,被 Snake Eyes 綁走,帶回審判,白幽靈因此得知殺害師傅的兇手是 Zartan。眼鏡蛇在重獲自由後,利用美國總統的權力召開世界核武會議,並脅迫各國首腦屈服。Snake Eyes 、白幽靈、Jinx 跟 Roadblock 、 Jaye 、 Flint 會合後,去找死不了的 Joe Colton (Bruce Willis),一起去解決世界危機。最後在經歷一番的亂打之後,救出總統,並解決世界核彈危機。我覺得這集沒有第一集來的好看,劇情也有點不太連貫。
  • 被偷走的那5年 (IMDB, Wikipedia)。故事設定很有意思。一開始是何蔓的回憶,在蜜月的時候發生車禍,醒來以後,卻發現自己遺失了5年的記憶。原來他們結婚後的第3年開始發生爭吵,第五年離婚,離婚的當天發生了車禍,因此遺失 5 年的記憶。何蔓透過謝宇的幫忙,想找回這 5 年的記憶,豈料找回的卻是傷心的往事。之後,他倆重新開始,卻發現何蔓因為腦部血塊而有失智症的情況,謝宇把握時間重新求婚,這段求婚的畫面好歡樂,蠻讓人感動的。結婚以後,何蔓選擇開刀,想要讓謝宇幸福,雖然手術成功的機率是 20% ,但上天往往是殘酷的,何蔓癱瘓。拖延了好長一段時間之後,何蔓要求安樂死,謝宇掙扎著痛哭,電影倏地就此結束。
    這部電影給我兩個感想,第一個是婚姻的維持需要用心,一旦走遠、錯開了,往往很難破鏡重圓,電影裡主角的境遇是幸運的,他們又重新走回到一起,相當不簡單。我原本以為謝宇會切不開 Lily 的說。第二個是安樂死,目前已經是有所謂的「安寧緩和醫療條例」了,也就是避免「無效醫療」讓病人痛苦的活著。說真的,真的有那種情況的時候,我捨得放掉嗎?

安寧緩和醫療條例的參考資料:

 

ArchLinux 裡的 locale 設定

ArchLinux 的全域 locale 設定 (LANG)是在 /etc/locale.conf ,如果個別使用者想要設定自己的 locale 怎麼辦呢?

在登入,執行 bash 以後,bash 會先去載入 /etc/profile ,通常 /etc/profile 會去載入並執行 /etc/profile.d 下的所有 .sh 的檔案,這裡有個 locale.sh ,這邊就註明了會去哪裡載入。

首先會看是否有 $XDG_CONFIG_HOME/locale.conf ,有就載入;然後再看 $HOME/.config/locale.conf ,有就載入;再來才是看前面提到的 /etc/locale.conf ;最後才是參考 rc.conf。

所以只要在 $HOME/.config/locale.conf 裡寫 LANG=zh_TW.UTF-8 就可以囉。

同場加映,ArchLinux 已經不再使用 sysv ,這表示再也沒有 /etc/init.d 這類的目錄,ArchLinux 已經改用 systemd 了。

ArchLinux Yaourt/Pacaur

今天再次把 ArchLinux 開來玩。裝了 Razor-QT 以後,發現 Razor 設定中心裡的圖示都沒有出現,以為是安裝的問題,就想說用 yaourt 重新裝一次。

yaourt 是一個輔助 pacman 的工具,除了可以當作 pacman 來用之外,它還會自動從 AUR 取得軟體並進行編譯跟安裝。詳細的說明可以參考 ArchLinux Wiki 上的說明。依照指示設定以後,安裝失敗,我遇到是 GPG 驗證失敗的訊息,用 sudo pacman-key –init 無效,後來是在 /etc/pacman.conf 裡 [archlinuxfr] 的地方增加 SigLevel = Optional TrustAll ,然後重新執行 sudo pacman -Syu yaourt 才裝好。

執行 yaourt razor-qt 重新編譯安裝以後,圖示仍然沒有出現,再請 Google 大神幫忙以後,才知道是沒裝圖示套件的緣故,就用 sudo pacman -Ss oxygen-icons 就順利解決了。

另外在噗浪的回應裡看到說,除了 Yaourt 之外,還有一個 pacaur ,同樣也是類似 Yaourt 的工具,所以就順便裝上來試試看。但 pacaur 不在官方套件庫裡,只能用 yaourt 來裝,執行 yaourt -S pacaur 就可以了。

 

電影流水帳(2013/9/14~2013/10/1)

EVA MENDESEva Mendes ,超性感的女星,不過在 The places beyond the pines 這部電影裡並不是主角,所以也不很亮眼。

  • 駱駝客 (時光網):這部電影不錯看,是講抗戰時期新疆駱駝客的故事,故事還蠻簡單的,裏面不管是口音、弓箭什麼的,都很地道。主角的師傅是駱駝客,在師傅身上學了好身手。師傅有個女兒,主角愛上了,可是女兒卻許配給別人。這次師傅接到委託,要運送貨物到甘肅去,順便就帶女兒去婆家。這次的運送相當的兇險,因為前幾次東家委託別人,都被官方哈密府的快槍隊給收拾了。在半路上,師傅讓主角帶女兒去婆家,自己帶著其他人繼續運送物品,快槍隊在半路上的綠洲下了藥,師傅的人差點就全軍覆沒。而這時候主角違背了師傅的命令,帶著師傅的女兒跟師傅會合。師傅超生氣的,但沒辦法,是自己的女兒,就讓主角帶著貨物先走,自己留下來應付後面的追兵。以弓箭對抗快槍的的結果是,師傅帶的人全滅,主角被快槍隊的一個人追上,主角用弓箭殺了他,然後跟師傅的女兒回頭去找師傅,看到師傅死了之後,跟快槍隊剩下的頭頭進行決戰,最終是打敗了他,並且將貨品安全運到。
  • The place beyond the pines (IMDB, Wikipedia),中譯:末路車神。中譯片名再次跟故事一點關係都沒有,有點像是紀錄片,故事分成三個段落。第一個段落是講 Luke 的事情,Luke 在遊樂園表演特技機車以餬口,某天,女主角 Romina ,也就是前女友來找他吃飯。之後,Luke 得知她生下了他的兒子,這讓 Luke 想要復合來照顧小孩,可是 Luke 本身沒錢。某天,Luke 去練車的時候,遇到了 Robin ,兩人激出要搶銀行的火花,就開始搶銀行。搶了幾次都很順,但在某次 Luke 跟 Romina 男友起了衝突被拘補之後,Robin 不想跟 Luke 合作了,Luke 只好自己去搶。自己去搶的這次就出了事,被警察 Avery 不當的擊斃,Avery 在警察局接受調查時,聲稱自己是正當防衛,因此成了英雄。接著變成是 Avery 的故事。Avery 成名以後,警局裡的前輩也來交際,並帶他去 Romina 那邊做了非法的調查,取的 Luke 搶銀行的贓款,之後又發生了一些事情,讓 Avery 知道了景局骯髒的黑幕。後來 Avery 在一些掙扎之下,決定揭發,再次成了英雄。第三段是 Avery 小孩 AJ 跟 Luke 小孩 Jason 的故事,Avery 此時正要競選議員。兩個小孩因為毒品走到一起,後來 Jason 發現 Avery 就是殺了他老爸的人,兩人起了衝突,之後 Jason 拿著槍去尋仇,AJ 受了傷,Avery 跟 Jason 到森林去時,Avery 下跪道歉並哭泣。最後,Jason 離家出走買了一輛機車,而 Avery 順利當選,跟兒子 AJ 一同出席慶功。

相關影評:

ArchLinux 初體驗

在 VirtualBox VM 裡裝的。

我是下載 CD image 來安裝,光碟是 LiveCD,只是沒圖形介面,所以拿光碟開完機就是 console,讓我小錯愕一下,還特別重新開機再確認一次。詳細安裝可以參考 Beginners’ Guide ,我是照這篇來安裝的。步驟很詳細,我覺得缺點是初學者可能會不知道要選哪一個。每個章節裡是一個大項目,然後裏面才會提到選擇,例如 bootloader 你可以選 syslinux, grub … 或是磁碟配置你可能要依照情況使用 cgdisk 或 fdisk 等工具。做完,一個乾淨的系統就安裝完成了,開完機會進 Console 模式。

由於是在 VirtualBox 裡,VirtualBox guest utility 必裝:Arch Linux as a guest in a Virtual Machine

pacman 是必學的指令,詳細的說明可以閱讀 ArchLinux Wiki,這邊只提幾個常用的:

  • pacman -Syy :類似 apt-get update
  • pacman -Syu :類似 apt-get upgrade
  • pacman -S :類似 apt-get install
  • pacman -R :類似 apt-get remove
  • pacman -Q :類似 dpkg -l
  • pacman -Ss :類似 apt-ache search

接著是安裝一些必裝的:

  • sudo :總不能一直都用 root 登入,裝這個以後,先新增使用者,設置群組,將使用者加到 wheel 群組裡,然後在 /etc/sudoers 裡取消 wheel 該行的註解。
  • vim :我用 vim …
  • base-devel :為了要編譯 razor-qt 用,這邊我是參考 AURAUR 有點像是寫好的 script,下載 AUR 裡套件的 PKGBUILD 以後,就可以用 makepkg 來包出所需的 package。
  • slimxorg :就為了圖形介面,不過 xorg 連結裡提到的 hal,我沒辦法安裝。有人說是新版已經不需要了。
  • gcin :好用的輸入法
  • firefox :好用的瀏覽器
  • terminator :好用的終端機
  • openbox :搭配 razor-qt 用的,LXDE 也用這個。

桌面環境,我是用 razor-qt,用 pacman -Ss 找不到,所以自己去 AUR 找 PKGBUILD,然後 build,再安裝。接著依照 Wiki 上的說明去設置 .xinitrc。

最後就大功告成了。裝完以後的感想是,對終端機的操作有點基礎會比較適合使用這個 distro。

參考資料: