演講: Rails Best Practice @ Kungfurails

Update(2009/10/25): 釋出投影片

KungFu_Rails_Logo

這次受邀到 Kungfurails – 中国rails开发者大会 演講,地點在上海,時間是 2009/10/24,這也是我第一次去大陸 :)

我的講題是 Rails Best Practice: Write Better Code

摘要:

隨著程式碼越趨龐大複雜,如果沒有好的程式規範,很容易隨著時光流逝而成為一團無法維護的程式碼。因此,我們需要一些好的原則、設計模式和最佳實務,來保持容易閱讀、高一致性、容易維護的好程式。本議程除了示範一些好的設計模式、也將瞄準一些常見的糟糕程式碼(AntiPatterns)加以重構。

Ruby 程式語言與 Ruby on Rails 入門課程投影片 at KaLUG

這次一次進行六小時的課程,包含上機練習。感謝 KaLUGOSSF 的招待 :)

最後五分鐘的 Rails 生態圈一覽 出自我四月在 OSDC 的演講。

關於課程,還是沒來得及(準備)深入 ActiveRecord,像是 Associations、Validation、Callback 等,看來需要更多時間才能包海包海的講完 Ruby on Rails :p 另外每次都會有人問 Deployment 的部份,以後有機會也可以加進來。

快速安裝 Rails 開發環境 Ubuntu 9.04

Update(2010/5): 後來發現更快又更好的安裝方式是,直接使用 REE 的 Ubuntu 套件:請在 Ubuntu 裡用 Firefox 瀏覽 Download Ruby Enterprise Edition 中的 Ubuntu Linux,然後點選下載套件並安裝即可。

最近有機會做一些 Ruby on Rails 的上機教學,根據之前上課的經驗,能夠讓學員快點開始寫 code 練習是最重要的事情,花時間在安裝軟體、排除不同安裝環境出現的問題之類的最浪費教學時間了。如果有人自備 NB,但是怎麼裝都裝不起來,而我又不能只顧解決他的環境問題……..orz 另外如果每個人上課(和回家之後)的練習環境都一樣,這樣照著教學練習就不易出錯,我想新手最怕的就是照著教學打結果 error 卡關,學習的滿腔熱血就這樣被澆熄 :p

因為 Windows 環境實在有點討厭,總是有人裝不起來(?),加上跑起 Ruby 效能又不太好,所以這次一不作二不休,乾脆改用 VM 環境,使用免費的 VirtualBox (註) 來模擬 Ubuntu 9.04 Desktop edition 作業系統,並使用內建就有的文字編輯器 gedit 來練習 (NetBeans 是另一個選擇)。BTW,熟悉 Ubuntu 環境對將來佈署 production server 也蠻有幫助的。

為了製作安裝快速、統一又乾淨的 Ruby on Rails 開發練習環境,所以花了點時間寫了安裝指令檔,只要在 Ubuntu 下執行這隻程式,然後大概五分鐘就可以開始寫 Rails 程式了。(當然是不包括把 VirtualBox 裝好,然後把 Ubuntu 安裝進去的時間…. zzz)。實際上課的話,可以用內網分享製作好的 Appliance 映像檔(~1G),直到倒進 VirtualBox 裡,馬上就有熱騰騰的 Ubuntu 桌機版可以練習 Rails 啦。

註一: 裝好進入 ubuntu 後,記得安裝客端額外功能才能調整螢幕解析度大小及進入全螢幕模式。

註二: 除了 VirtualBox,wubi 也是不錯的方式讓 Windows 與 Ubuntu 共存。

KaLUG 社群技術分享工作坊 – Ruby 程式語言與 Ruby on Rails 入門

這次受 KaLUG 的邀請到高雄開課,內容是 Ruby 程式語言與 Ruby on Rails 入門,對象是從未接觸過 Ruby on Rails,但是有些網站程式設計背景的朋友。課程及報名網頁在 OSSF 工作坊

  • 活動時間: 2009-09-20 早上 9:30 ~ 下午 17:00
  • 活動地點: 高雄市左營區裕誠路1055號(三民家商正門口對面)

相較於上次工作坊三小時的課程,這次的時間又更充裕了,將從基本的 Ruby 程式語言、Rails MVC 介紹起,除了可以涵蓋上次的 RESTful Rails,也可以有時間講解 ActiveRecord 操作資料庫的部份。

Cucumber: 小黃瓜驗收測試工具@COSCUP 2009

今天報名 COSCUP 2009 Lightning Talk 講的 cucumber 投影片:

不過效果似乎不太好,我沒這麼 high 好像不太適合講 Lightning talk …. XD,加上重點的 live demo 跌股了,應該很多人看不懂我在幹麼,果然是 never live demo 啊!watir 開出來的 safari 視窗畫面沒出現在投影機上,只出現在我的 MBP 上,然後跑完自動測試就自動關掉了,結果大家都看不到 :/ 時間有限一時也來不及把螢幕設定改成 Mirror,就這樣提早下台了… orz

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) 檔案上傳。