2009/01/15

好康推薦:PrintWhatYouLike.com

網路世界的資源非常豐富,但不一定長久。不管是書籤還是最愛,留下 URL 並不能保證將來你還可以再找到相同的資料。所以,當發現有些值得保存的資料時,我會想辦法留下副本。

另存新檔?詳實用 HTML 紀錄原始的資料,但垃圾多又不方便管理。所以我習慣輸出成 PDF 文件。不過網頁上通常充斥廣告等不相干的內容,令人想去之而後快。還好,Firefox 有許多外掛程式提供這類編輯網頁的功能,如:Nuke Anything EnhancedPage Hacker 等。

這次要推薦的不是以上那些 extension,而是一個有同樣功能的服務網站:
透過這個網站,編修網頁更加容易上手。當然,缺點就是不是所有的網頁都可以利用這項服務,例如公司內部網站。如果,printwhatyoulike 能夠改寫成 extension,那就是太完美了。

Firefox 的 PDFescape Extension

唉... 可能寫筆記不夠用心,竟然跟上時代潮流放起無薪假來了。趁著悠閒,上網看看 Firefox 有什麼新鮮的外掛程式可用,發現 PDFescape 是蠻有意思的服務。

裝上這個 extension 之後,你可以將網路上的 PDF 文件送到 http://www.pdfescape.com 作線上編輯,如:用空白蓋掉原有的內容、加上新的文字和簡易的方圓等圖形,甚至可以加上文字輸入方塊和 checkbox 等。等改好之後,就可以下載這份修改過的文件。

我想到一個使用場合。有時我們必須下載 PDF 格式的表格,印出、填寫然後拿去申請任何東東。有了這服務,寫字難看的我就可以先加工過再印出來,頂多留下簽名欄位就可以了。

我承認用到的場合不多,所以我不會安裝這個 extension。因此隨手記下,以備將來之需...

2009/01/13

使用 vim 和 cscope 來 trace 程式碼

Vim 是個很實用的程式編寫工具,不過一開始需要花點心力走過學習曲線。有興趣的人可以在網路上找找學習教材;如果你已經有點基礎但記不清按鍵,以下這個網址提供相當有系統的整理,依照功能分成七個自學課程,很值得一看:
除了編寫程式,Vim 用來追溯程式 (trace code) 也相當好用。例如,先將游標移到程式的某個文字串,再按以下按鍵:
  • '*' 往前找出此文字串 (按 n、N 繼續找)
  • '#' 往後找出此文字串 (按 n、N 繼續找)
  • 'gd' 將此文字串視為 local 變數,找到定義此 local 變數的地方 (如果有的話)
其他追溯程式常見的動作:
  • '%' 找到被配的括號
  • '[[' 找到函數的開頭
  • ']]' 找到下一個函數的開頭
當你維護的軟體專案不小時,上述功能絕對不夠用。這時你需要 cscope 的協助。當你安裝好 cscope,而且建立好專案的 cscope 資料庫之後,將游標移到程式當中某個文字串,按 Ctrl+\ 再按以下按鍵:
  • 's': 即 Symbol,以此文字串當識別字,列出專案當中所有參考到此識別字的地方,包含定義和引用
  • 'g': 即 Global,以此文字串當作 global 變數或函數的名稱,跳到專案中定義此 global 變數或函數的地方 (這個功能有另一個與 ctags 相同的快速鍵 Ctrl-])
  • 'c': 即 Calls,以此文字串當函數名稱,找出所有呼叫到的此函數的函數
  • 't': 即 Text,列出專案中所有出現此文字串的地方 (包含註解)
  • 'e': 即 Egrep,以此文字串當 regular expression,用 egrep 方式來搜尋
  • 'f': 即 File,以此文字串當檔案名稱,開啟此檔案
  • 'i': 即 Includes,以此文字串當 header 檔名稱,列出所有 include 此檔案的檔案
  • 'd': 即 calleD,以此文字串當函數名稱,列出此函數所呼叫到的函數
上述指令若是列出相關程式碼,你可以輸入數字加 Enter 來跳到該檔案的相對位置。按 Ctrl-T 就會回到游標原來的檔案和位置。你也可以用以下的方式來輸入指令 (foo 就是搜尋的文字串):
  • :cscope find symbol foo
  • :cs f s foo
安裝 cscope 的方法:
sudo apt-get install cscope
mkdir -p ~/.vim/plugin
cd ~/.vim/plugin
wget http://cscope.sourceforge.net/cscope_maps.vim
建立及更新軟體專案 cscope 資料庫的簡單方法如下 (其他更複雜的用法請參考 http://cscope.sourceforge.net):
cd PROJECT
cscope -bR

2009/01/07

Ubuntu 存放 icon 的位置

這絕對是一件小事,但每次都記不得,所以決定寫下來:Ubuntu 存放 icon 的主要目錄是 /usr/share/pixmaps。當你在面板上加入自訂的程式啟動圖示時,常常會需要到這個目錄找應用程式的圖示。