RJS Minus R (MinusMOR)

UPDATE (11/24): 順應大夥要求,Dan Webb重新發一個 MinusMOR 版本,使用 .ejs 來表示 JavaScript with embedded Ruby templates。這樣就可以跟本來的 .rjs 共存了。希望這個 pure Javascript template 以後可以加入 Rails core 囉~

RJS是很棒的玩意,這殺手級的功能讓你寫AJAX response超簡單,只用Ruby即可。但是很明顯的它是個會漏的抽象層(leaky abstraction,事實上根據抽象滲漏法則,所有重大的抽象機制在某種程式上都是有漏洞的),一但開始漏而要寫raw Javascript時,在RJS中就要用page.call 之類的,但這就看起來比較醜陋,尤其是有Javascript條件式或raw Javascript很多的時候。另外就是RJS完全依賴Prototype跟Scriptaculous,如果你要改用別的Javascript framework時,Ruby版的RJS就不太有用了。

from RubyInside

因此如果你已經很熟 Javascript 跟 Prototype,或是你想改用別的 Javascript framework,可能就比較想直接用 Javascript 來寫 AJAX response,因此Dan Webb提出一個新選擇(新實驗?)  RJS Minus R (沒有Ruby的RJS!),MinusR 把 .rjs 改成寫 Javascript (用Erb內嵌Ruby code),主要就是給你一個 js helper 自動呼叫 to_json 來轉換 Ruby 資料。

討論串在爭論說應該要用另外 extension 副檔名表示這種 pure Javascript,因為這個 plugin 目前更改了 .rjs 的定義,造成本來用ruby寫的 .rjs template 不能用了。這部份該怎麼實作解決似乎還沒有定論。

DHH的回應說的很好,這是一個很好的實驗讓我們好好省思RJS,RJS不是萬靈丹,就像Rails的Active Record本身也是個會洩漏SQL抽象層,重點是如何讓80%的工作可以超簡單達成,and 另外的20%有彈性手動來變花樣。

另一篇介紹文: RJS templates without the R!

註: 目前的stable Rails版本不行跑這個 plugin,必須裝EdgeRails(開發中的Rails版本),請執行 rake rails:freeze:edge 安裝 (要有subversion)。另外 EdgeRails 只用於該 rails application,而不是整個升級系統 library 的Rails版本。

期中考告一段落

期中考告一段落了,顯然我還得多多努力準備期末考,很down的心情,and 手邊想念的書一堆,每本都念一點念一點 :

  • 資訊經營法則,很精采的1999年資訊經濟學(軟體行銷學)經典,看一半。
  • SQL之美學,很特別的SQL書,提供精彩的建議而不是SQL語法,看到第二章。
  • 時間管理-給系統管理者,跟GTD類似的個人時間管理術,不過我最近事情沒這麼雜多就是了,看到第二章。
  • ppk on Javascript,很期待想看完學好Javascript,但只看到第一章完(不過第一章就很精采)
  • CSS Mastery,大精華 CSS,前兩章就cover最重要的觀念(只也看到前兩章)。
  • Ajax in Action,架構層級的Ajax觀念,剩下後半範例還沒看。
  • Pragmatic Ajax,第一章看完(沒什麼進度的意思)
  • HTTP The Definitive Guide,進到 Part 2 的 Proxy,這本好厚。
  • A Semantic Web Primer,老實說蠻無趣的語意網,停在RDF。
  • Ruby for Rails,書籤還夾在第一章… Orz
  • Ruby Cookbook,看完Rails那部份,想繼續看完Part2 的Object,Metaprogramming的部份。

雖然很想在期末前唸完幾本… :p 不過目前的情況實在超懶的,連Blog可能都會隔很久才更新吧。

啊~突然想起這個桌布 : You may now rest, rest in peace. 

清大oz工作站由來

清大學生的Email都是 @oz.nthu.edu.tw 結尾,很久以前有人在bbs上討論到oz的由來,當時我正好在學校計中打工,答案是這個 oz 是由 The Wonderful Wizard of Oz (綠野仙蹤)來的,不過當初是誰這麼有創意就不得而知了。

另外教職員用的 @mx.nthu.edu.tw 是 mail exchange record 來的(DNS術語), 而新的 my (也是教職員用) 的緣由是 mx-> my。所以如果有下一台,可能會取名 mz 也說不定。

Adobe 開放 ActionScript VM engine

事情是 Adobe 開放 Flash Player Scripting Engine (即 ActionScript VM engine) 原始碼加入 Mozilla 的 Tamtrin Project,預計將可大幅提升 Firefox 的 Javascript 效能。

不過這不代表 Firefox 以後不用加裝Flash,雖然 ActionScript 與 Javascript 都是依循 ECMAscript 標準規格所實作出來的語言(core language完全相同),但是因為執行環境不同,加上的extentions也不相同(Flash的DOM和網頁的DOM不一樣),因此 Flash 的程式(swf)還是要在 Flash Player 裡執行。

所以廖長輩的公式應該改成 Flash Player = Tamarin + Flash-specific DOM

Mozilla 的好處是得到一個效率高的 scripting engine,Adobe 則藉由 open source 吸引開放原始碼社群做 scripting engine 最佳化(把手放開,專心去做其他更重要的事情),以及讓大家了解 Javascript 與 Actionscript 在語法上的共通性,藉此吸引人們使用 Flash或Flex。

想了解更多的話,請看 d.CAT 的這兩篇文章 What Tamarin really means ? 和 adobe team up with firefox – tamarin project