RESTful Design 雜談

看了上一篇可能會有些混淆: 整個 Wide World Web 可以概觀看成 REST 架構,但是微觀看 Web 就不完全是了。來看看 Rails 的 URL routes 設計: 指定Controller之後指定action,基本上它是個程序性(procedural)的框架,我們利用URI syntax來決定執行什麼動作。然而 Web 基本上不是個 procedural 環境,而是 RESTful 的,但是就像你在物件導向的環境中仍然可以寫 procedural code,你也可以在 RESTful 環境中作 procedural,只是很不幸的會失去一些RESTful的優點而已。

不過這不表示Rails不夠好,事實上目前任何 web application 框架要成功,都必須支援 procedural 的開發,這是因為基本上目前存在的主流框架都是 procedural 的,人們也都習慣於procedural開發。目前的潮流只有在部分需要做 web service 的地方,會在SOAP之外另外提供REST方法(提供XML格式),在整個網站上使用RESTful仍不多見。因此除非看到有人率先做出成功的RESTful 網站吧,雖說 RESTful is right way,但是它的觀念與大家已經會的 procedural 有著根本上的差異,所以這種改變跟限制到底能提供多少實際好處呢? anyway… 走在時代尖端的 Ruby on Rails 註定會走這對的一步 (事實上是併行: 你可以用本來的方法設計,也可以用RESTful方式)。  閱讀全文〈RESTful Design 雜談〉

EQ 十週年紀念版

十年的經典書籍了,1996年初版時我還在唸國二吧,那時候似乎非常暢銷轟動,不過以我那時候的年紀,印象中在書店看到覺得太深奧看不太懂很無趣呢。

今年時報出版重新換封面出了十週年紀念版(新封面比較好看有質感),我在學校的書店看到這本書就買下來了。對於EQ,大概的概念想必大家都知道了,這本書用了非常多的實驗結果來論述EQ的本質跟影響,包括神經科學、心理學、演化論等,理性與感性同樣重要,EQ情緒跟我們的生理機制十分密切,互相影響。其中讓我聯想到之前念過的神經外科的黑色喜劇中的第一條規則 : 當你的腦袋被打開,跟空氣接觸之後,你就再也不是從前的你了。這本EQ就有些例子就是開過腦之後因為傷害到腦的某些神經,手術後性情大變….:p

這一陣子的暢銷書先別急著吃棉花糖的實驗也在這本書提到了,小時候如果能克制先拿棉花糖,長大後有比較好的表現。這是因為抗拒衝動是各種情感自制力的根源,自我調節情緒的根本意義在於克制衝動以達成某種目標。

這本書也提出很多方法增進EQ能力及如何處理負面情緒(憤怒/焦慮/沮喪),除了可以好好了解EQ之外,對於各種日常生活、男女關係、婚姻、親子關係、教育、工作、健康等都非常有幫助的一本書。

Agile Web Development with Rails 第二版預告

 

Ruby on Rails 最重要的一本書 Agile Web Development with Rails, 2nd Edition 終於定稿送印了,即將在 12/15 上市,如果等不及也可以線上買PDF。這是個偉大的時刻搭配 Rails 1.2 的發布,它將涵蓋 RJS, migrations, resources, multi-format actions with respond_to, polymorphic associations 跟其他最新的功能。

想像一下這本書有多麼不容易,作者群除了撰寫 Rails 核心程式碼,還要分神寫書。Rails 1.2 RC才剛出來不久,等到你拿到這本書的同時,final release of 1.2 才正要熱騰騰發行呢~… :)

資料來源: Riding Rails 跟 DHH 部落格

什麼是REST跟RESTful?

Update(2008/5): 事隔一年多,我對於 Rails 如何應用 RESTful 這個概念有完全不同的切入角度,詳見 Practical Rails2 投影片。

Ruby on Rails 1.2 的一個重要進展是 RESTful,在了解怎麼用之前,我們要先了解什麼是 REST(Representational State Transfer)?

什麼是REST?

REST 是一種分散式超媒體系統(如WWW)的軟體架構風格,你可以想像它是一個良好設計的Web應用程式規則: 一組網路Web頁面(虛擬的狀態機器),其中 Client 透過點選超連結(狀態變換),結果是下個Web頁面(表示應用程式的下一個狀態)。

REST 所描述的網路系統包括三個部份:

  • data elements (resource, resource identifier, representation)
  • connectors (client, server, cache, resolver, tunnel)
  • components (origin server, gateway, proxy, user agent)
  • 幾個重點:

  • Data elements 由標準化介面存取
  • Components 透過介面傳輸 資源表徵 (representations of resources) 來溝通,而不是直接操作資源本身。
  • Connectors 提供 component 的抽象介面來溝通,隱藏溝通機制的實作細節。
  • Components 使用 connectors 來存取,connectors 提供資源的存取或居中。
  • 所有來自 connector 的 requests 必須包含所有必要的資訊來了解該 request,不需要依靠之前的request (即 stateless) 閱讀全文〈什麼是REST跟RESTful?〉
  • Kaspersky Anti-Virus 6 中斷錯誤

    雖然防毒評比總是第一,不過竟然要使用者手動修正程式錯誤問題,實在不是很友善:

    首先是不定期中斷執行 : 卡巴斯基斷開問題

    再來是從11/22之後無法更新病毒碼 : 11月22日之後卡巴斯基產生程式錯誤自動中斷的錯誤修正步驟

    另外當初花錢買的時候(難得花錢買軟體哩~),竟然沒有辦法馬上安裝正式版,只能跑試用版。必須手動上他們網站登記啟動碼,然後過個三四天等他們email寄給你key(我是等不耐煩又寄email過去催),就算要防盜版也可以像微軟一樣直接網路啟動啊~ 一買到沒辦法馬上用還蠻不高興的。