Ruby HTTP clients

Update(2009/8/12): 加上 open-uri
Update(2010/1/18): 加上 Weary
Update(2010/5/10): github.com/maccman/nestful
Update(2010/5/11): seattlerb.rubyforge.org/net-http-persistent/

透過 HTTP 抓取資料是一個常見的任務,即使只是最基本 GET 網頁,在 Ruby 社群之中也有蠻多選擇的,目前市面上我看到的方案有:

open-uri 是 net/http, net/https 跟 net/ftp 的簡易 wrapper,可以 GET 網頁當作 IO 物件處理。

rest-client 跟 httparty 也都是基於 net/http 的實做,最大的特點在於 API 的改良及簡化,像 httparty 就做成 module 的形式,讓你可以用 include HTTParty 撰寫你自己的 library。如果只是單純的 REST 操作,使用 rest-client 也是不錯的選擇。

typhoeus, patron, curb 則是基於 libcurl 的實做,與 net/http 相比則大大地增加了程式效能。根據 Matt Aimonetti 的補充 (BTW,他是要說得是,重新發明輪子沒什麼不對,因為實做細節人人不同啊。),typhoeus 的強項是有 callback 機制及 non-blocking-multi query,而 patron 在於可以方便地 reuse HTTP session/connection。而 curb 最簡單只單純想做 libcurl 的 Ruby bindings。

httpclient 很奇怪我竟然找不到什麼的英文資源介紹,但好像也不奇怪因為作者是日本人 :p (另一個教訓是 Project 名字要取特別一點,越奇怪越好搜尋到 XD) 怎麼說呢? 去過一趟 RubyKaigi 之後發現日本的 Ruby 社群還蠻不為外(國)人知的,因為人口多加上又是 Ruby 原產国,所以是有不少的国產厲害 Ruby projects 跟 Ruby 書,而形成一個除了有 open source users 也有 open source developers 的健康社群,但是因為語言隔閡的關係,這些資訊產出絕少輸出到國外去,不像歐美的資源因為英文是共通語言的關係,全世界都能很容易的接觸到。英翻日的 Ruby/Rails 書也非常多,Pragmatic 跟 O’Reilly 的書我幾乎都有看到有日文版 (真好 :~)。

回到 httpclient,我是在 Ruby 逆引きレシピ 這本書中看到的 (well, 我看不懂日文, 只是瞎看 ruby code 而已),安裝方式意外簡單也是用 gem install httpclient 即可,強項看起來有 Cookies support 和 streaming POST (POST with File/IO) 檔案上傳。

Ruby Kaigai 2009 日本行 (非關Ruby部份)

大概是6月中才下定決心要去 RubyKaigi 吧。因為是第一次出國,而且又是獨自一人參加會議,周遭的人都覺得挺冒險的 :p 好在有熟東京朋友剛好也要去辦事,有個照應就還蠻順利適應環境的,複雜的東京地鐵真是超級方便。

第一天 7/15

早上10點的 JAL 班機,飛了三個小時到日本成田機場,也就是當地時間2點多到達成田機場。3點多搭上 Skyliner 京成電鐵坐了一個小時到達上野,先把行李丟到飯店後,就去六本木逛街了,像是最有名的 六本木 Hills。

六本木

第二天 7/16

淺草

早上先去逛了淺草寺,在雷門拍了照跟買了土產人形燒,不過淺草寺在整修,整間廟被鷹架圍住。逛了附近的犬印鞄製作所買包包。中午去了表參道逛最有名的表參道Hills,螺旋向下的走廊真厲害。

下午的行程自己去涉谷搭東急東橫線到日吉的慶應大學找高中同學,到日本聊MSN才發現他剛好也來日本做短期研究,也很巧他的學長也來日本自由行,所以就約了一起同行。先是學校逛了一圈,就又繼續坐到終點站元町,往上走到山頂看了海景,接著逛了幾家山手西洋館繼續走到港區未來,剛好碰到橫濱開港150週年,有特別的展場可以逛。最後去日本最高樓 Landmark Plaza,吃了銀座天國的動飯。搭超快電梯到頂樓看橫濱海港夜景。

慶應大學

第三天 7/17 (RubyKaigi 第一天)

築地市場

會議是下午才開始,所以早上先去逛了築地市場,買了有名的玉子燒來吃。

RubyKaigi Day1

終於抵達會場了 :D

第四天 7/18 (RubyKaigi 第二天)

晚上吃了在日本算是非常便宜的吉野家,然後逛了秋葉原,不過沒做什麼功課。有很多 3C 店很好逛,也有漫畫等很多,很多還提供免稅專門樓層可以買。回程反倒買了日本的低中價衣服王者 UNUQLO,日幣990很便宜呢 :p

第五天 7/19 (RubyKaigi 第三天)

晚上去了去了銀座伊東堂,可是竟然 PM7 就關門了,只逛了一下下。去了Apple直營店玩了 iphone 3GS。又去 UNIQLO 買了 $990 的衣服給女朋友… XD 最後回上野飯店附近吃了握壽司套餐。

上野的握壽司

第六天 7/20

一整天安排逛街行程,先去了上野的 UNIQLO 跟松板屋百貨公司。然後下午去了涉谷,接著去新宿。真是超級好逛街的地方,走起來很舒服,不像台灣一堆車烏煙瘴氣。

涉谷

第七天 7/21 (最後一天)

因為錢花的差不多了,只好安排不花錢的行程 :p 去了附近的上野公園,本來想逛博物館,沒想到全部公休… :/

上野恩賜公園

在成田機場的免稅店買了一堆巧克力,把最後的日幣花的乾乾淨淨 XD 晚上七點的飛機返回台北。

Ruby Tuesday 六月場

這個月的 Ruby Tuesday 又來啦!

活動時間:2009/6/30(週二)晚上七點到九點。
活動地點:台北市 典藏咖啡館(民權店)

報名請前往活動網頁,這次的講題是:

xdite: Sinatra: a DSL for quickly creating web-applications in Ruby.
gugod: Cucumber+webrat: Rails integration test

Sinatra 是一套非常有趣的小型 web framework,以其獨到的優雅 DSL 語法聞名,非常適合 tiny web application 開發。而 Cucumber 是一套將測試工作轉化成透過 parsing story-based 純文字來執行,好處是有一份讓非程式設計師閱讀的良好規格文件,同時也可以透過這種方式讓測試程式能自然地 reuse。webrat 則是一套 Acceptance Testing 工具,用以改善及補強 Rails 內建的 integration testing API,另一個好處是它還可以搭配 Selenium 或 Watir 實際打開瀏覽器來做 JavaScript 測試。

兩位講者都有豐富的使用及開發經驗,期待這次的分享 :)

BTW,我決定參加今年在日本的 RubyKaigi2009目前還有票的樣子,有興趣的朋友快衝吧 又賣光啦… XD

Mac 推薦軟體 (2009)

Update(2010/5/11):請參閱最新的 Mac 推薦軟體 (2010)

最近公司又勸敗一位同事採購 Mac 電腦(再一次和多全員Mac化),於是又再一次需要 Mac 推薦安裝軟體,說著說著又整理了一份 2009 年版:(加 * 的是付費軟體)

  • OpenVanillaYahoo! KeyKey: 必備的中文輸入法
  • Safari 4: 用來用去還是我最順手的瀏覽器,另外推薦 safari140 這個 Twitter extension 和 click to flash 這個 plugin 可以讓網頁上的 Flash 要點了才載入。
  • SubEthaEdit * 協同編輯器,若同事也都用 Mac 超級推薦,可以多人同時(即時)編輯一份文件。當做一般文字編輯也非常順手。
  • iWork* : 包含投影片 Keynote、試算表 Numbers、文件編輯 Pages 三套軟體,也可以拿來開 Microsoft Excel、Word 也大多都可以順利開出來。
  • The Hit List*: 大方好用的 Todo 管理軟體
  • LittlleSnapper*: 抓網頁或螢幕的 screenshot 並加以管理、加註。
  • Skitch: 螢幕抓圖工具,更棒的這可以直接網路分享,非常方便可以當做溝通工具。
  • Snapz Pro X*: 錄製 screencast 的軟體,也可以抓 screenshot。
  • Parallels Desktop * 或 VMware Fusion*: 可以在 Mac 上跑其他作業系統,最常見的被迫需求情境是 Windows + IE 瀏覽器。
  • Koolclip: 可以紀錄下你每次的複製文字 或 Jumpcut 更輕量
  • QuickSilver: 鍵盤快速啟動應用程式的好物
  • LaunchBar* : 也是可以透過鍵盤就快速啟動應用程式,它的搜尋比 QuickSilver 聰明,更棒的是他有複製貼上記錄功能(就不用再裝上述的Koolclip或Jumpcut了)
  • VLC 放影片
  • PerianFlip4Mac WMV 可以讓 QuickTime 支援更多播放格式
  • Pixelmator*: 影像編輯軟體,功能類似 Photoshop,但不用這麼貴… XD
  • Burn: 燒錄軟體
  • chicken of the VNC: VNC client
  • Adobe Reader
  • KKBOX*: 聽正版音樂,有出 Mac 版就甘心。
  • iTunes: 搭配 iPhone 或 iPod 的必備軟體

網路相關

  • NetNewsWire *: RSS Reader,快又穩,當訂閱的 feed 很多的時候比起其他 Web 版的 Reader 好用很多。
  • Nally: Mac 上最棒的 BBS 軟體
  • Panic Transmit*: Mac 上超棒的FTP軟體,好操作介面佳,還支援 Amazon S3。
  • Cyberduck: 這則是免錢的 FTP/SFTP client
  • Tweetie: Twitter 的桌面軟體,我會特別需要桌面版的 Twitter 軟體是因為我有多個帳號需求。
  • Colloquy: IRC client,當 server 上的 irssi 不能用的時候的替代軟體
  • Adium: 整合msn/gtalk等的IM
  • Skype: 喂喂
  • Microsoft Messenger: 有時候 Adium 會秀斗沒辦法登入 MSN
  • Remote Desktop Connection: 可以連接 Windows 桌面
  • Dropbox: 可以在不同電腦間共享檔案,蠻方便簡單好用的服務。

系統管理

  • AppZapper*: 反安裝軟體,可以清比較乾淨
  • CandyBar*: 可以換系統 Icon
  • iStat menus: 換掉內建的日期顯示
  • Growl 好玩的自動提示,可以吃其他應用軟體的訊息。
  • smcFanControl 手動控制風扇
  • MacFusion/MacFUSE: 可將FTP/SFTP等網路資源掛載成磁碟
  • Onyx: System/Disk 檢查整理工具,其他類似的還有 MainMenu, Cocktail
  • Monolingual: 砍沒用的語系檔案跟 Power PC Binary 檔案,大約可以省5G
  • OmniDiskSweeper: 磁碟清理工具,可以很方便地找出到底哪個檔案跟目錄是最佔空間
  • coconutBattery: 電池狀態查詢跟紀錄

程式開發

  • iTerm: 支援多 Tab 的 Terminal,我主要拿來做 SSH 登入
  • Visor: 把 Mac 內建的 Terminal 改成透過熱鍵即可呼叫出來,我主要拿來下程式開發中的各種 script 指令
  • MacPorts: command line 愛好者必備,和 FreeBSD 的 Ports 系統類似。MacPorts 還需要裝 Apple 的 Xcode,如果需要 compile source,也會需要裝 Xcode。
  • Textmate * Rails Developer 都會有的一套編輯器,請進一步參考推薦安裝Plugins
  • GitX: Git GUI
  • svnX : Subversion 的免錢 GUI
  • Sequel Pro: MySQL 的 GUI
  • Navicat* : 比較專業的 MySQL GUI,覺得最方便的是支援 SSH 登入遠端操作資料庫(畢竟很少情況會開 3306 Port 可以遠端連線),另外處理編碼也很聰明,印象中很少看到出現亂碼。如果你有舊版本MySQL的編碼問題無法順利dump出來,可以試試。

網頁設計

Dashboard

用 Mac 快兩年了,發現其實有不少好用軟體是需要付費買的(當然,都可以找到免費的替代軟體,只是可能介面跟使用性沒這麼好而已),所以請不吝支持正版軟體囉,其中有些是跟著一年一度的 MacHeist Bundle 一起買的,所以還算便宜 :p

BTW,竟然沒有一套 AIR application,裝過的用一用都不好用,結論是還是 Native UI 的最好。

Building Web Interface On Rails @Ruby Tuesday 投影片

這次的 Ruby Tuesday 花了不少時間在準備 example code 跟釋出兩個 plugins,放在 Github 上:

BTW,Ruby Tuesday 的投影片我們都有請講者放到 slideshare 了,包括這次 kevin 的 Streaming Service on Flex and Rails :)