推薦閱讀 - Language

之前有一篇介紹 PEG.js,其實在那之後我還有花不少時間想深入理解,然後家裡小寶寶就誕生了,還沒機會完整理解到我想要的程度,因為現在可以自由研究、寫程式的時間比較少了,時間都拿去寫另外一個工具了,等能理解透徹不知道還要何時,所以先把其中一篇覺得很棒的參考文件放上來:

這篇對我來說是篇相見恨晚的文件,裡面很有條理的從最基礎的語言定義開始介紹到 Parser 相關的語法,也解答了我幾個存在已久的疑問:

  • 正規表示式(Regular Expression)的正規是什麼意思
  • Context Free Grammar 的 Context Free 是什麼意思
  • 為什麼 RE 無法 parse HTML 文件

演算法筆記這網站我其實也不是第一次看到,之前忘了研究什麼的時候也有找到這,當時就覺得怎麼有人這麼佛心的用中文解釋這麼多演算法,其實有搜尋了一下沒找到原作者是誰,倒是有看到以前要找人維護的消息,倒是我比較喜歡以前的樣式,現在這樣式,先不說粉紅色系,文字顏色和背景對比很低,讀起來比較辛苦啊。


DIY一次搞定網站易用性問題

ROCKET SURGERY MADE EASY
圖片放在 Flickr

本書評由othree 評論於2010/11/17 ,評分為4.5分(滿分5分) ,採創用 CC 姓名標示 授權條款釋出。

Steve Krug 的新書,他之前寫過 Don't Make Me Think (如何設計好網站),這次的主題也是 Usability,中文有人翻譯為易用性、優使性等,不過焦點是在意用性測試這點,整本書就是教你如何設計、安排易用性測試,並將測試安排進你的開發流程。其實會買到這本書完全是意外,大概兩週前難得去天瓏想要敗家的時候,一如往常,只花一點點時間在中文區晃一下,不過突然發現某本封面特色讓我很熟悉的書,一哪起來才發現竟然是 Don't Make Me Think 作者的新書,所以二話不說就直接買下了,現在想想就覺得還好出版社沒隨便自己設計新封面,不然我大概完全不會注意到。

整本書大概可以分為兩部分,第一部分是講說他這幾年的經驗,為什麼會需要易用性測試,如何說服長官,什麼時候該開始等等算是前置的問題,第二部分則是如何安排和進行易用性測試,場地軟體的挑選,一些必須遵守的準則等,整本書以我的說法來說就是很實用,就是一步一步的教你把易用性設計導入你的開發流程內,相信有不少人或公司有想進行易用性測試卻不知道該從何開始的,這本書正好適合你,非常值得一讀,當然,最好不要讀完就沒事了,實際下去操作才是重點。

一點補充的,今天剛好看到癮科技報導 DELL 創新設計中心,最後一張照片就是一個使用性測試的房間。


JavaScript Patterns

JavaScript Patterns
圖片放在 Flickr

本書評由othree 評論於2010/11/09 ,評分為4.5分(滿分5分) ,採創用 CC 姓名標示 授權條款釋出。

Stoyan Stefanov , phpied.com 的作者,Yahoo Search! 的前端工程師,之前寫過 Object Oriented JavaScript (之前寫的 書評),這次的新書是 JavaScript Patterns ,內容以 JavaScript 的 Coding Style 和 Design Pattern 為主,程式設計師們長年累積的經驗為主,而且內容扎實,沒有灌水章節,不像 Test-Driven JavaScript Development 前面又塞了一堆基本的東西,雖然有部分內容之前也在別本書看過,像是 The Good PartPro JavaScript Techniques這幾本書都有一些內容在這邊也有出現,不過重新整理過放在一起看感覺還是不一樣,目前市面上也蠻缺少這種書籍的,Douglas 的 The Good Part 算是一本,不過內容的涵蓋範圍還是不太一樣。

分章節來介紹一下:第一章是語言背景概念還有工具介紹,介紹的工具是 JSLint 和 Console ,分別是用來作程式碼檢查和除錯測試用的,JSLint 我也介紹過不少次。第二章則是寫作 JavaScript 程式必要的知識,裡面包括不少 Good Part 的內容,還有一些基礎的效率問題,比較特別的是還介紹了如何用 JSDoc 這類工具自動產生 API 文件。第三章是程式語法和建構函式,這章開始講到物件的部份,不過還是很初步的接觸而已,第四章是函式的部份,一些函式的使用方法都在這章介紹,像是 callback 或是 return function 、 curry function 等都有。第五章則是回到物件的部份,不過還沒到繼承,而是介紹了不少架構 Framework 的方法,像是 Namespace 的概念,還有比較少人介紹過的 sandbox pattern。第六章終於講到物件繼承的部份,不過其實這章是在講程式碼再利用,所以除了物件繼承外還介紹了 call 和 apply 。第七章就是設計模式了,介紹了 Singleton、Factory、Iterator、Decorator、Strategy、Facade、Proxy (和 jQuery 的 proxy 不一樣)、Mediator 和 Observer,除了 Pattern 的實作外,都還有提到怎樣的場合適合使用。最後一章是比較現實層面的 DOM 操作和瀏覽器差異等,另外還介紹了 JSONP

過去我覺得 JavaScript 有兩本必讀的書,第一本是 PPK on JavaScript,第二本是 JavaScript The Good Part,現在 JavaScript Patterns 或許可以成為第三本,天瓏那邊也賣的蠻不錯的,我要買的時候老闆還問了我一下這本是什麼,現在也缺貨中。PPK 和 Good Part 都有出中文版,希望這本之後也能出版,不過 O'Reilly 退出台灣後,會是哪間出版社來出版就不知道了。


Object Oriented Javascript

Object Oriented JavaScript

本書評由othree 評論於2009/03/29 ,評分為4.5分(滿分5分) ,採創用 CC 姓名標示 授權條款釋出。

看書名就知道,這本書是專門在講 JavaScript 的物件導向,其實看完這本書我當下的想法是:「媽媽我不要用 JavaScript 寫物件導向程式 Q_Q。」

這本書總共有八章,我大概可以切成三段,首先是一到四章,講基礎的 JavaScript,裡面有些東西後面會用到還蠻重要的,再來是本書最重點的五六兩章,在講 prototype 和物件繼承,最後是剩下的BOM、DOM、design pattern和附錄,前後的部份我也沒看的很仔細,主要還是五六章為主。

第五章介紹 JavaScript 特有的 prototype 屬性,接著第六章就開始講解要怎樣利用 prototype 來實作物件繼承,這部份真是越看越不想用 JavaScript 來寫 OO 的程式,作者一種方法接著一種方法介紹,然後再說有什麼問題,解著介紹比較好的方法,整章看下來早就忘了已經介紹幾種方法了,就是看完這張才讓我有了上面的感想,不過用像 Base 這種已經寫好的 library 我到還可以接受啦。

總之,結論,這本在 prototype 和 JavaScript 物件繼承的部份,講的很詳細,是別本書無法取代的,如果對這部份想要深入研究的,那我會推薦來看這本,不過很多時候的 Web Develop 是用不太到這些東西的(開發 Firefox Extension 用到的機會還比較大)。


Everything You Know About CSS Is Wrong 書評

The Principles of Beautiful Web Design

先節錄一下我在IRC上講的內容摘要:

01:01 @othree 基本上就是在講css-table來排版
01:01 @othree 可能遇到的問題 ex: position:ralative, colspan, rowspan
01:02 @othree 然後要如何應付就瀏覽器 1.不理他 2.做個簡單排版給他 3.用現在的技術做給他
01:03 @othree 中間有稍微講如果要做到3那為什麼還要用css-table
01:03 @othree 最後講css3的一些排版的新東西
01:04 @othree multicolumn, grid, advanced layout(書內是用template layout)

我是覺得這本書的中心思想是不錯的,不該拿來做排版的東西就不應該拿來排版,不過css-table也不像是拿來排版的東西啊,CSS規格書上的說法讓我覺得他是為了XML那種資料格式可以直接使用表格形式呈現而設計的,我是覺得不該用作來做為整個網頁的版面配置用,CSS一直以來都有一個問題,就是程式設計師和平面設計師學起來都不容易,在這個問題點上,我覺得用上css-table其實也沒什麼改變,更何況css-table沒真的table靈活,沒有colspan和rowspan,要做到類似的效果變成要用nested-table,大福增加HTML結構的複雜度,怎麼看都是弊大於利,我實在是不覺得用css-table來做排版是個好選擇。

最後,如果要我挑理想的排版方法的話,我是覺得還在制定中的CSS Template Layout比較理想,畢竟是圖形化的編排方式,對於設計師來說直觀許多,而且在設計上也確實是排版用的屬性。


JavaScript 優良部分

JavaScript 優良部分

JavaScript 優良部分(JavaScript: The Good Parts)在英文版出版消息出來時我就很有興趣了,本來也預訂要購買了,沒想到中文版很快就出了,當然是二話不說就買下來了,畢竟不管英文閱讀能力如何,我看中文吸收還是比較快,書到手時首先被他的厚度嚇了一跳,全書才160多頁,定價420,不過內容實在是很不錯,我是覺得收穫/頁數比Pro JavaScript Techniques還要高。

書中主要是分成分成語法、物件、函式、繼承、陣列和正規表示式(Regular Expression)幾個部分來介紹JavaScript的優良部分,除了語法部分外,每章都講到不少慣例的寫法,許也可以稱為設計模式,像是var that = this;這個作法,我以前比較有印象是看過var self = this;,我自己則沒有特別用哪個變數名稱,不過看到這段之後去google了一下,用that的其實比較多。書中比較難的大概還是函式和繼承這部份吧,以繼承來說,JavaScript其實在設計上並沒有真的講到繼承(inherit)的,資料封包也是,不過都有其他方法可以做到這些事情,書中提到的繼承方法大概有三四種,其特性都有介紹。至於函式的部份我還有一些還沒花腦袋去把code看懂,不過就已經理解或是用過的方法而言,這章節介紹的東西都很有用,寫小script可能用不到,不過需要複雜一點的演算法的時候,相信裡面的東西就會很有幫助了。

除了優良部分外,還有一篇附錄是講JavaScript不良的部份,像是每本書都會提到的 == 的怪異行為,一些可能會造成錯誤解讀的用法等等,除了這些優良部分和不良部份的介紹外,其實書中在各個章節,都若有若無的在強調寫code要保持良好的程式碼風格,到第九章還特別把這件事提除來強調,即使到附錄的不良的部份也還事宜在提到這些事情,這部份的內容其實我覺得是蠻意外的收穫,因為這些慣例的寫法通常不屬於規格的一部分,如果沒人整理出來要靠自己學習事很花時間的,為此接下來也還要買Pro JavaScript Design Patterns,希望也會是一本好書。

JavaScript 優良部分整體而言內容紮實,長度短了點,雖然部分內容有些複雜,不過就如序文所說,這本書我也推薦給剛開始接觸JavaScript的人,畢竟,不該碰的東西,該養成的習慣都是早點知道比較好啊。


赤朽葉家的傳說

赤朽葉家的傳說

上週日下午把之前買的「天才搶匪盜轉地球 」看完,接著拿起赤朽葉家的傳說,想說隨便看一點,結果,一個下午我就把這本389頁的書看完了,看的時候幾乎是整個陷入那一端的世界,書中的種種都可以在我腦海裡描繪出來,即使看到第三部的時候,旁邊電視的聲音和影像也影響不了。

關於書中內容我不會講太多,不過如果確定會看這本書的人,或許還是不要往下看比較好。赤朽葉家的傳說分為三部,第一部的標題是神話年代,我在初看這部份的時候,還覺得說神話年代真是有點言過其實,但是等到進入第二部的時候,整個感覺完全改變,同樣的人物、地點,時間推移的這麼平順,但是透過櫻庭一樹的描寫,兩邊卻呈現完全不一樣的風格,這時候才感覺到,第一部時的故事什麼都帶著點神話色彩,到了第二部,巨大而空虛的時代,神話色彩消失,但卻一點也不突兀,描寫到了第三部,時間幾乎與現在無異,回想第一部的種種,神話的感覺又更加的強烈。這三部之間文字風格的轉換,是令我最感到厲害的地方。

書中的角色每個我都很喜歡,大家都是好人,努力的在自己的時代活下去,比較讓人捨不得的是第二代的幾位,雖然早就知道泪會死,不過真是想不到對整個家族影響這麼大,從那邊開始時間好像加速停不下來一樣,直到毛毬也過世,這段應該是整本書最讓人難過且喘不過氣的一段了。

看的時候我一直有淡淡的鬱卒感,不只是汨過世到毛毬過世那段,即使在赤朽葉家最輝煌的那段時期也是一樣有種淡淡的鬱卒感,雖然這不是第一本讓我有這種感覺的書了,不過赤朽葉家的傳說卻把這種感覺控制的很微妙,鬱歸鬱,卻不影響心情,還真是蠻微妙的感覺,我想主要是因為赤朽葉家隨著時間的推移,整個家勢都是在衰退的吧,這也是為了要和書末要傳達給讀者的訊息相關,不過看到最後的時候,我已經不太在意書中想傳達什麼訊息了,而是充滿了即將要把書看完的寂寞感。


老貓學出版

老貓學出版

現在我在Bloglines裡面訂閱的消息來源已經超過三百個了,不過很多的文章我都只是快速掃過,不少文章連標題都還沒看清楚就被我略過了,而老貓學出版是在這三百多個消息來源中,我少數會每篇新文章都從頭到尾看完的部落格,不過即使如此,我卻還是懶得回去看他之前的舊文章,數百篇的文章要在線上看完,那真是會讓我受不了,對於那些一直沒看過的好文,也只能怨歎相見恨晚了,不過就在今年,老貓把部落格上的精華文章整理出書了,我自然沒錯過這個好機會,從博客來訂了一本。

書的厚度是我本來預計的1.5倍厚,所以看起來花了不少時間,內容大概分為四大類,從編輯的入門、心得到果國內外市場分析都有,要我說我對這本書有什麼感想的話,其實沒有什麼特別的感想,只不過這些文章的內容我都很有興趣,在看完這本書之後,我試著思考為什麼我會對出版工作、市場一直有些興趣,或許和我收藏不少漫畫有關係,任何東西只要接觸多了,自然會對他越來越熟悉,即使只是漫畫,漸漸的也會在意起書籍的紙質、價錢定位、翻譯品質等等,如果有人問我國內漫畫哪家出板社的品質比較好,我不但可以馬上回答對方,還可以多講上一堆相關的東西。而最近一次我認真的想了解出版相關業務的其實就是在去年,也是因為漫畫的關係,因為aNobii網路書櫃的關係,我發現到尖端和長鴻兩間出版社出版的漫畫都沒有申請ISBN,我覺得這根本就是瞧不起漫畫的行為,即使尖端出版的書籍品質還不錯,甚至是早期品質最好的。寫信過去詢問,結果都沒的到正面的回應,尖端直接沒回信,長鴻則是有發公告說會在內部討論(因為當時不只我寫信去關切,不過時至今日,長鴻出版的漫畫依然沒ISBN),當時我就有去了解相關的作業流程,於是深切的瞭解到,申請ISBN一點也不難...

除了我對出版的工作事務有些興趣外,看完這本書後我明確的瞭解到編輯到底是幹什麼用的,不知道可不可以算是意外的收穫,這種感覺和我看交響情人夢一樣,看交響情人夢之前,我一直都不知道指揮到底是做什麼用的,看過之後,或許不能明確的講出來,但是我確實知道指揮在樂團中的地位為何。所以,編輯還真是辛苦,需要負責的東西實在比我原來所能想像到的東西多太多了。

最後我要回應一下老貓部落格上的調查,關於紙本和網路版本的閱讀經驗比較,我一直是比較喜歡紙本閱讀的,我實在無法想像要用電腦來看整本都是文字的書,所以即使很多原文書網路上都抓的到,我要看的話還是會用買的,而不考慮已經有書的狀況,即使文長都不長,像是老貓學出版那樣,我也不會有動力去翻過往的文章來看,對我來說太花時間了,進入網路時代後,除非是看小說看的很投入,我看書也會看一陣子就會看看網路上有沒有新文章,甚至網路上的文章看到一半跑去看有沒有其他地方有新文章,過陣子再回來看(有時候是幾天後,像我現在瀏覽器分頁裡就有兩三篇文章還沒看完),如果老貓沒出書的話,這些文章我大概一輩子都不會看到吧,而書中大概不到10篇是我在網上有看過的,不過網路版不是完全沒用,最新的文章依然只有網路上才有,當然如果紙本能像網路這樣方便迅速的就得到最新的內容的話,我大概還是會選紙本吧,這有點像我對電子書的期望,我的期望是目前技術還做不到的程度,我期望的理想電子書只要能開PDF就好,畫面不閃爍、解析度夠高(現在有些電子墨水的技術可以做出不閃爍的效果),輕薄,但是不用很短小,當然能折疊攜帶更好。

其他:寫這篇文章我才想到oc是怎麼來的XD。


Pro JavaScript Techniques 書評

Pro JavaScript Techniques

雖然年假期間幾乎都在打電動,不過還是有一天晚上忘了什麼原因沒辦法打,所以把這本書剩下的最後兩三章一口氣看完了,這本書大致上可以分為三個部份,第一部份是關於開發方法的,這裡介紹了js的物件觀念、如何產生可再利用的程式碼以及開發和除錯工具。第二部份則是不亂入的JavaScript,這部份從DOM開始介紹,接著介紹怎樣控制事件、怎樣增進網頁的易用性,最後則是實際提供了兩個case。第三部份則是Ajax,這部份一開始先介紹Ajax相關的知識,介紹完的時候也建好一個Ajax Library,而後續就使用這個Ajax Library來時做了幾個case,其中包括現在很常見的auto complete。

這本書的內容理所當然都是屬於進階的內容,入門看ppk on javascript,繼續深造就看這本,書中介紹了不少中小型的JavaScript Library,而且不只是介紹用途,還有講解程式碼,其實看的過程中,我會漸漸覺得非不得已不需要使用Library,因為這些Library包的功能通常都比你需要的還多很多。除此之外,書中對開發工具的介紹也很詳細,想必大家都知道JavaScript是出了明的難開發的,因為每個瀏覽器行為都不同,又不是每個瀏覽器都有Firebug可以用,提供的錯誤訊息常常都很沒用,要是在IE上出錯都要找半天,甚至是使用試誤法來找,雖然這本書沒有提供更好的IE除錯辦法,但是對Opera和Safari的除錯工具都有介紹,像Safari的要用終端機輸入指令才會打開除錯工具,以前我根本不知道,一直以為只有nightly build才有。那至於IE要怎麼辦?其實微軟有提供Internet Explorer Developer Toolbar,只不過時間是在這本書出版之後,雖然沒Firebug強大,還是可以幫助解決不少問題了,唯一有個小問題是只支援IE7。

其實在這本書還沒看完的時候,我因為一些原因看起jQuery的程式碼,也了解了其中一部分的架構,剛好這本書的作者也是jQuery的開發者,所以其實看到不少熟悉的東西。除此之外,我還用書中提到的Dean EdwardsBase做了一個電腦模擬課程的作業,base2是一個用來讓JavaScript有物件繼承能力的base class,因此可以用來開發物件導向的程式。在經歷這些之後,我覺得自己對使用JavaScript的觀念和以前又不一樣了,要說差在哪的話,之前我可能都用jQuery,現在我到是很想只用Dean Edwards的Base和addEvent來開發個什麼東西。

結論:看完jQuery作者的書後反而不想用jQuery了XD。

補充:我一直沒把Base和base2分清楚@@。


黑暗元素三部曲

黑暗元素三部曲

這次的心得是先在BBS發文,分前後兩篇,後面那段是補充,所以有點不連貫。

這故事算是顛覆傳統的吧,所以我才會覺得在西方這種題材竟然能成為兒童文學感到有點困惑,故事是從另一個世界開始的,主角萊拉的世界裡,科學家們發現一種稱為塵的粒子,而塵被認為是構成原罪的基本粒子,不過在觀察塵的時候,艾塞列公爵發現了不同於他們世界的其他世界,重疊在一起,但卻永遠都碰不到,於是他便想連接這些不同的世界,他想毀滅塵的源頭,如此一來,人類就不在有罪惡...etc,這是第一集的主軸,在第一集的最後,艾塞列公爵成功的築起了通往其他世界的橋樑,萊拉也跟著他的腳步前往其他世界(不過我忘了當時動機)。

在第二集,故事從我們的世界開始,所有世界的關係也才明朗化,所有的世界都是平行世界,在什麼時候產生分岐,然後就越來越多世界,天使有能力穿越不同的世界,所有世界的神其實都是同一個,在萊拉的世界被稱為無上權威,在我們的世界被稱為上帝,不過也不是所有世界都有他們的勢力,總之,這位無上權威其實也是天使,而且是第一位天使,他騙其他在他之後誕生的天使說是他創造了他們,以便君臨其下,艾塞列公爵的目標變成打垮此一勢力,於是他找了一個什麼都沒有的世界開始建立根據地,從不同的平行世界廣結同盟,他的軍隊包含了各種各樣的奇怪種族,有科技世界來的,也有奇幻世界來的,而這一個軍隊在第三集還會和天使的聯軍對戰,敵人也不是只有天使,各個世界在他們旗下(教會)的軍隊也都派遣過來,然後因為種種原因,那時戰場還會有幽靈、靈魂,我看到這時真是超期待電影到時後會拍成怎樣XD,不過在那的時間沒很長就是~_~。

艾塞列公爵要做的事其實就和路西法背叛上帝時是一樣的,不過我覺得他真的是超帥的,路西法至少本來就是一名高階天使,還帶領了三分之一的天使叛變,但是艾塞列公爵,只是一名肉身的人類,竟然也想做一樣的事情,而他招集的軍隊,甚至比路西法的軍隊還龐大。

再來講講其他,在這堆世界當中的智慧生命體(因為有些不是人形),可能都流傳著類似的傳說,每個生命都有三個部份,肉體、靈魂、守護精靈,即使在我們這裡也是一樣,只是我們的守護精靈不會顯現,我們也不知道他們存在,無上權威所作的其中一件豐功偉業,就是在人死後,只有靈魂會被帶到冥界,困在那,什麼也做不了,另外兩個部份都會消散為世界中的粒子,守護精靈會直接消散,肉體會漸漸腐敗被大自然所吸收,但是靈魂卻會被困在冥界,這裡其實很地海XD,另外冥界有種人首妖鳥,我直覺想到妖鳥死麗濡,然後黃金羅盤的功用是和塵溝通,中國的易經也是一種和塵溝通的方法,在裡面看到不少其他東西的影子,還蠻有趣的。

最後,作為一本小說他很出色,一段一段看著,不知不覺就看了好幾段,但是要改編成電影應該會有些難度,主要是三本結尾的地方其實都不如過程有力,要怎樣做出一個漂亮的結尾還蠻令人期待的。

昨天寫完後才發現萊拉我完全沒寫XD,不過講真的我不太知道要寫什麼,我知道旅程結束後,他有所成長,他學到了些東西,但是我不知道是什麼,他的旅程說來都是塵為了修復世界所造成的,正因為是有辦法完成塵所交待的任務的他才會受到塵的指引,這是他的幸運,也是不幸,所以當失去解讀真理探測儀的能力時,他才會那麼惶恐,要是我,我寧願不要從恩惠中這種能力。


此類別所有文章