TextMate tips

Update(2007/8/9): 從 Midnight Blog 得知一個跟 TextMate 相關的 Rails Plugin 叫 footnotes,功用是當頁面跑爛掉的時候,會自動在發生錯誤的檔名上加上超連結,點下去就自動開TextMate到那一行去,真是方便到了極點。

工欲善其事,必先利其器,花了點時間研究 TextMate Editor 有那些好用的快捷鍵跟功能:

  • 按 ESC 會有 autocomplete 的功能,他會搜尋該文件已經有的詞彙。
  • F1 收合程式區塊
  • Command+ option + [ 整塊自動縮排
  • Command + / 整塊加註解
  • Command + ` 切換不同Textmate視窗
  • snippets 功能,只要輸入特定關鍵字之後按 tab 就會出現整塊程式碼

走訪檔案

  • Command + T : 跳到特定檔案
  • Command + option + 右: 切換Tab
  • Command+ shift + T 跳到特定的method
  • Command + W 關閉 tab

走訪文件

  • Command + 右 到行尾
  • Command + 上 到頁頭
  • option + 上 跳段落
  • option + 下 跳頁
  • Command + F2 加註記點
  • F2 跳到註記點
  • Command + option + 1 或 2 或 3,會收合縮排層次

在 terminal 中也有支援 command-line 指令:

  • mate -h
  • mate . 打開整個目錄
  • mate app config lib test 打開特定目錄

另外讓我嚇到的是 subversion 的強力支援,只要按 ctrl+shift+A 就會出現快捷選單。本來以為只有簡單的功能,但其實還蠻強大的,commit/update都不成問題,而且可以很方便查到該檔案的log,看來可以減少使用 svnX 了…:p

Mac 首週安裝軟體

玩到捨不得關機睡覺了啦!! 不過看一整天的視窗滑來滑去有點頭暈… :p軟體的話,裝了以下來用 (加 * 的是要錢軟體)

  • OpenVanilla 必備的中文輸入法
  • Firefox  Web Developer 必用的瀏覽器
  • Textmate * 鐵道員都會有的一套編輯器
  • SubEthaEdit * 協同編輯器
  • WriteRoom * 讓你專心思考文字的編輯器
  • Subversion&SVK: 程式設計師一定用的工具
  • svnX : Subversion 的 GUI,不過老實說還是 windows 上的 TortoiseSVN 好用穩定
  • Locomotive : Rails 火車頭
  • MySQL
  • cocoaMySQL Sequel Pro: MySQL的GUI
  • iTerm: 把內建的 terminal 換掉吧
  • Cyberduck : FTP/SFTP client
  • MacFusion/MacFUSE: 可將FTP/SFTP等網路資源掛載成磁碟
  • Adium: 整合msn/gtalk等的IM
  • Skype: 喂喂
  • MPlayer 放影片
  • VLC 放影片
  • smcFanControl 控制風扇
  • chicken of the VNC : 就 VNC 的 client,名字怪怪的
  • yep *瀏覽一堆PDF的好物
  • MacPorts: command line 愛好者必備,和 FreeBSD 的 Ports 系統類似。MacPorts 還需要裝 Apple 的 Xcode
  • iStat menus: 換掉內建的日期顯示
  • quicksilver: 鍵盤快速啟動應用程式的好物

感謝 hlb,gugod 長輩的推薦跟燈哥的這篇軟體清單,讓我沒幾天就裝了這麼多套….XD

7/17 (二) Ruby Tuesday: Rails Testing

Update: 今日的投影片在這裡,預計下回再來分享 BDD&Rspec,屆時會在講清楚 mock 的用法…:)

不小心被 lukhnos 拱了出來… :p 我要分享的主題是 Rails Testing,有時間的話,也打算提一下 RSpec,這是一套從 TDD (Test-Driven Development) 改進發展出來的 BDD (Behavor-Driven Development) 開發方式。

時間是晚上 8:00-10:00,地點沒錯的話會到新 opcafe,屆時也請大家分享一下寫 testing 的經驗吧… :)

用 Hpricot 來 parsing HTML

Update(2009): 新的 Ruby XML parsing 王道是 nokogiri 了 (via The State of XML Parsing in Ruby (Circa 2009))。

Hpricot 是個快又好用的 Ruby HTML parser,點子來源是 JQuery。它的兩大優點是 1.速度快,因為核心用C改寫了 2.好用的介面,你可以用CSS selectors,element IDs,tag types 等。

其它的優點還有可以吃 XML,可以吃 invaild 的 HTML,甚至可以更改 document 結構。

首先是安裝

gem install hpricot

基本用法

require 'rubygems'
require 'hpricot'
document = <<END
<ul>
<li>first item</li>
<li>second item</li>
</ul>
END
doc = Hpricot.parse(document)
(doc/'li').each do |item|
puts item.inner_html
end

出來的結果就是 first item 跟 second item 囉。其中 (doc/’li’) 意同 doc.search(‘li’),就是搜出 li 這個 tag。

進階用法

可跑 nested 迴圈,而除了 inner_html,也可以抓屬性值如 attributes[‘href’] 。我拿交大某站來練習一下:

require 'rubygems'
require 'hpricot'
require 'open-uri'
url = "http://www.pac.nctu.edu.tw/news/news_msg.php"
doc = Hpricot(open(url))
doc.search('table tr td div.tbCopy font').each do |item|
(item/'a').each do |nav|
puts nav.attributes['href']
puts nav.inner_html
end
end

心得是若 HTML 有好的結構,則 hpricot 可以快速走訪到你想要的位置。例如有設定 element IDs 或 class 的話,就可以用 doc.search(‘table#myid’) 或 doc.search(‘span.myclass’) 快速到位。

不過就算是如上述的老式HTML網站,要找 CSS selector 只要搭配服用 firefox extension Web Developer 也不難解決,點選 CSS > View Style Information 就可以看到路徑了。