一些 Ruby Dynamic Features 記事 (1) OOP

趁過年把 The Ruby Way 拿起來讀一讀,大部頭一本沒辦法從頭念到尾,就挑了最重要的第11章( OOP and Dynamic Features in Ruby) 來念。這個主題值得閱讀的還有 Ruby for Rails 第13章(Ruby dynamics) 跟最近出的 Advanced Rails 一書第1章(Foundational Techniques),因此這幾篇文我還會修修改改就是了。

閱讀全文〈一些 Ruby Dynamic Features 記事 (1) OOP〉

Spakit: A SPA Rails plugin

Spakit 源自 registrano.comMassage,是一個可以讓你將現成的網站輕鬆轉換成 SPA (single page application) 的 Rails Plugin。只需在 view 中換用 Spakit helper,不需要更動 controller code,就可將超連結和表單送出變成 Ajax 送出並更新頁面。

spakit 目前放在 github,另外也包成 gem,安裝方式如下:

 gem install spakit
 cd /your_rails_app/vendor/plugin
 gem unpack spakit
 mv spakit-0.9.0 spakit

並且 rename 成 spakit。裝好之後,首先建立一個 Spakit 專用的 Layout,一個簡單的範例如下:

# /view/layouts/spakit.rhtml
<p><%= flash[:notice] %></p>
<%= yield %>

接著就可以使用 Spakit 專用的 helpers,目前有 spakit_link_to, spakit_form_for 和 spakit_form_tag 三種可以使用,用法如下:

spakit_link_to 'new person', :url => new_person_path
spakit_form_for @person, :url => people_path

如此按下連結或送出表單後,Spakit 就會送出 Ajax request(i.e. prototype’s Ajax.Updater ),然後將回傳的 HTML 結果更新到#content 區塊。

如果你想要支援 Ajax 的 Histroy Bookmarks,建議可以採用 Really Simple History(RSH) library 來處理瀏覽器的上一頁下一頁問題,這部份的範例程式附在 plugin 的 README (使用到 jquery library,好心人有空可以幫忙寫 prototype version)。

P.S. 這篇文的英文版在 Handlino’s blog

如何寫出有效率的 Ruby Code

又來推薦 PDF 武功秘笈, Writing Efficient Ruby Code

Ruby 是個很慢的語言,但有些作法應用得當,還是會有不錯的改善。不過要知道程式碼的可讀性跟執行效率有時候是衝突的,這點還需拿捏,尤其 software life cycle 一開始可讀性比較重要。有句最佳化的經典名言一定要引一下:

未成年就這麼優,是一切邪惡的根源
Premature optimization is the root of all evil

這裡紀錄一些看到有趣的事情,PDF 裡有更詳盡的 example code。

閱讀全文〈如何寫出有效率的 Ruby Code〉

新年快樂: Blog is back

硬碟 crash 之後,因為工作忙也就暫時沒管。這幾天試著把硬碟接起來救救看,還蠻慘的幾乎讀不到什麼,只好用手邊一個多月前的資料庫備份來重建,除了留言五月份之後的都不見了 :<。WP Theme 也重挑新的。

前幾天過了25歲生日,這個年紀還蠻令人害怕的,已經不能說是小孩了。回顧今年,畢業後就沒打算念研究所,如願地把補充兵當完,然後繼續投入這個從大一就開始接觸的網路軟體業,百家爭鳴熱熱鬧鬧的一行。

這幾個月很少寫部落格,都在忙著開發 Registrano,真槍實彈的用 RESTful Rails 2.0 寫 code,幾個月下來也已經能自在地應用 REST 概念(還有踩到不少 Rails edge 鐵路地雷… XD),也寫了幾個 plugins 近期準備釋出。2008 將至,目前的計畫將以四月的 OSDC.tw 為一個大 milestone,把 Registrano 做到理想中的 Software as a Service 程度,希望能藉此經驗投出一個 Modern Rails2 Development – The Registrano Way 議程。

Textmate with SVNMate

推薦個 Textmate 超棒 plugin: SVNMate,這是一套 TortoiseSVN-like Interface for TextMate,讓每個檔案會有個小小的 icon 來表示目前的 SVN 狀態,非常方便。
下載執行就會裝好了,進入 Textmate 的 Preferences 可以換喜歡的 icon 樣式。
一般來說,簡單的操作我會用 Textmate 內建的 alt+shift+A 來操作,不過 commit 東西一多的話,我會改用 svnX。
by the way, winson 介紹的 Visor 也棒極了,樂。

Mac 安裝軟體 Part 2

承上一篇,把後來裝的軟體也列出來:

  • Growl 好玩的自動提示,可以吃其他應用軟體的訊息。
  • Parallels Desktop *: 可跑 Windows 的厲害軟體
    • Office 2007 : Mac 版的 Microsoft Office 用不習慣
  • NetNewsWire *: RSS Reader, 用這個就不想用 Web 版的 Reader 了。
  • OmniWeb * : Webkit based Browser,喜歡他的 Tab 在左邊 改用 Safari 4 了
  • iWork * : 主要要用 Keynote 做投影片,08新版的 Number 也還不錯用適合簡單的試算表。
  • Koolclip: 紀錄下你每次的複製文字 或 Jumpcut 更輕量
  • Onyx: System/Disk 整理工具
  • Colloquy: IRC client,當 server 上的 irssi 不能用的時候的替代軟體
  • Panic Transmit*: Mac 上超棒的FTP軟體
  • Panic CODA*: 可以遠端操作的多功能網頁編輯器
  • PEMDAS: 超棒的 dashboard 的計算機,本來內建的難用死了。
  • Screenshop Plus : 螢幕抓圖的 dashboard 工具,簡單又好用
  • Nally: 終於可以在 Mac 上好好打 BBS 了… m_m
  • Navicat* : 專業的 MySQL 軟體,如果你有舊版本MySQL的編碼問題無法順利dump出來,可以試試。

另外 MacOS 10.5 Leopard 也在用了,雖然大體上跟 Tiger 差別不大。不過我覺得最讚的是搭配 Spaces 虛擬桌面功能,可以把整個 Windows XP 開全螢幕到一個 Space,非常方便切換。而 Finder 超強預覽功能跟 Dock 支援文件夾也不錯用。Time Machine 也推薦使用,我本來都一直懶得備份,現在只要把外接硬碟接上一切就自動了。