HTTP: The Definitive Guide Part 1

 雖然搞網站好幾年了,對於Client-side (如HTML,CSS,Javascript等)或Server-Side(如PHP)等技術都算熟悉,之前修過網路概論的課也對TCP/IP等網路架構有所了解,但是對Web中一項最重要的通訊協定HTTP卻所知有限,網路概論中對HTTP也講的非常簡單。

不過在看過蔡學鏞學長的書評之後,讓我燃起想深入了解的興趣,整個 HTTP Architecture 講起來也厚達六百多頁呢,而且最近剛好看到廖長輩貼的HTTP加速文,關於keep-alive,pipelined connections等這些我都不太清楚什麼作用的東西,也都在這本書的範疇內。

Part1 主講 HTTP 通訊協定本身,第一章是概論,第二章講Internet Resource的觀念(URI),其中有兩種實作方法URL及URN,URI的語法包含scheme(用什麼protocol來互動),server address跟path(放哪裡)。URN則是指定某resource名稱,不需要管放在哪裡,不過URN缺少實際架構,很少在用。

第三章則仔細講解 HTTP Messages,包含有哪些 Methods, Status Codes,Headers等,還有HTTP 0.9,1.0,1.1的各版本差異。不過 Headers 主要只是分類描述而已,本書各章在講解Web架構的同時,會在仔細說明相關的HTTP協定。

第四章講HTTP如何管理 TCP connections,一般講HTTP大都著墨在封包本身,對於HTTP connections卻講不多,但這卻是HTTP programming必須要了解的東西。這章有很多我以前不知道的東西,也複習了一下TCP協定,非常精采,值得另闢專文討論

另外這本書的插圖實在很棒,又多又好,把一些重要觀念都畫出來了。

接下來Part2則是HTTP Architecture,包含 Web Servers, Proxies,Caching,Gateway,Tunnels,Relays,SSL,Web Robots,HTTP-NG(HTTP/2.0)等。

蕃薯藤新聞改版

之前提過用IE7會有問題的蕃薯藤新聞改版了(當然是因為跟webs-tv合併的成果吧),網頁的風格感覺跟之前還蠻像的,蠻喜歡這種簡潔的風格的,版寬1024px,採用二欄式廣闊配置,內文竟然有640px(勝!)。

其他幾家新聞網站順便看一下(比較新聞內頁):

Yahoo奇摩新聞最近改版的,雖然也是二欄式,但是真正的內文只佔580px,可能是因為有框線的關係,所以不知不覺padding必須比較多。

聯合新聞網 傳統三欄式(選單/內文/廣告),內文佔580px,我覺得左欄選單設計太保守了,選單下面竟然都是空的!!太浪費空間的吧,兩層式的動態選單太複雜不好用,需要滑鼠滑來滑去才能看到新聞標題。

另外不得不罵的就是那個蠢死的《這篇文章的重要性》評比,我完全猜不透這有任何實值效用,還要讀者給1到10分共10個選項好難喔,要麻也學digg,不然學yahoo選心情也好選多了。

東森新聞報 也是三欄式,不過選單在上面,左欄不知道在放什麼也是浪費了,內文佔580px。版面感覺小亂,上方的動態選單我用IE6,IE7跑起來很不順耶(很怕把瀏覽器搞當掉),Firefox是還可以。東森也許證明了Firefox效能的確比IE好,不過我記得好像9成民眾用IE吧,總之那個Javascript應該沒寫好。By the way… 我建議東森可以擺個推薦Firefox下載(想要順暢瀏覽東森新聞報嗎?請改用Firefox!)。

中時報子報 四欄(選單/內文/雜七雜八/廣告),版面最亂最難看,內文只剩440px最少,真慘。

天氣涼了

秋天來了,整個就是涼了,今天還下雨。

最近兩週開始慘酷的期中考了,放下Ajax&Javascript&Ruby,拾起了機率論跟複變數函數論,腦袋像換一個情境似的。

趁著考完一科的空檔,這兩天拿了本 A Semantic Web Primer來啃,它的繁中翻譯語意網技術導論翻的錯誤百出,inferencing 可以看錯成介面(差太多了吧),specification可以翻成描述(應該是規格吧),其它詞不達意罄竹難書。好在有買原文書可以對照一下,不然真是一頭霧水。

Comet : 超越 Ajax 的新技術?

Update (2006/11/5) : thegiive 兄也針對 Comet 也做了一番研究。 

Update(2007/4/6) : lazy Guy 提出了更深入的觀察跟看法。

Comet 這個名詞是由 Alex Russell (Dojo的開發者) 今年五月所提出,比較熟知的名稱有 HTTP_StreamingServer Push。讓 Client 瀏覽器與 Server 建立長時間的連線,因此Server可以想傳就傳資料給 Client,不需要 Client 先送 request,Server 才能送資料。 閱讀全文〈Comet : 超越 Ajax 的新技術?〉

UJS Rails Plugins : Unobtrusive Ajax for Rails

正是我夢幻想要的啊!! 看完 DOM Scripting之後,對 Unobtrusive Javascript (可以參考 Jeremy Keith’s Behavioural Separation 的介紹) 念之不忘,想說 Rails 要怎麼支援 unobtrusive 跟degrades gracefully 的特性呢? 因為我們看到 Rails 內建的 helper 都是寫在HTML裡成 onclick = ‘xxx’ ,如支援 Ajax 的 link_to_remote 就是用 href=’#’ onclick=’new Ajax.Request(…)’ 云云。

所以我想是不是要改寫 link_to_remote之類的,另外寫套 helper 來讓 Javascrit 不要與HTML混在一起。不過… 今天在 Ajaxian Unobtrusive Ajax for Rails by Dan Webb 上看到介紹,有個 UJS Rails Plugins,可以讓你用它的 helper 掛 javascript 到 event (用CSS-selector) 上,而不用跟 (X)HTML 混在一起,達到網頁 Behavioural 的分離。

話不多說,請看作者的 Presentation Slides,真是太令人興奮了,作者的野心不小,非常令人期待。對網頁標準愛好者來說,這 plugin 真是太棒了。就算你不是基本教義派信徒,看到投影片的例子,焉不心動?… :p

寫了一個簡單的 UJS demo,搭配 RJS 超讚~ 不過我覺得 UJS 有點多管閒事的地方是它預設修改 Rails 的 link_to , link_to_remote, form_remote_tag 等成 Unobtrusive 版本,把 onclick 通通移除了,當場讓我之前的RJS demo爛掉,好險code不用再改,只需補上 javascript_include_tag :unobtrusive 即可。

至於degrades gracefully,因為連結都還保留著 href,所以就算使用者 Javascript 關閉,還是可以連到東西,只是server端要檢查是不是 ajax request 來決定回應什麼格式。

Erlang and Yaws

Erlang 最早是由電信廠商 Ericsson 所發展出來的 funcaiotnal programming language,在1998年轉成open-source,最大的特色就是 concurrent 的能力。藉由語言層次對平行運算的支援,達到高度 reliability, scalability, availability的能力。Yaws 則是基於 Erlang 所開發的 Web server,根據這篇文章 利用 16 台 cluster server 所做的實驗,Yaws可以承受超過八萬個parallel session,Apache則在四千個就掛了。

這趟旅程是從這篇文章開始的,隨即逛了 Yariv’s Blog,裡面對 Erlang 大加讚揚,認為Erlang在Web領域淺力無窮,尤其隨著 Comet 對 server scalable 能力的要求,更可以展現它高度的性能。Yariv 甚至拿 Ruby on Rails來比較一番,說他雖然也愛 Ruby on Rails,但是更愛 Erlang…:p

基於好奇心我就在 FreeBSD 上裝了起來,試玩了一下,不過我對 functional language 實在是不熟(惟一的經驗是寫過一個scheme作業),而且我也沒有這麼多Server可以試驗Scalable的能力…:p 這趟旅程只好先點到為止了 。

其它參考文章