網頁

搜尋此網誌

2013年7月29日 星期一

National Taipei University of Technology 台北科技大學

今年(2013年)捐贈書籍的時間又到了。延續去年 Web 浪潮,今年對於 Web 與行動網頁開發的書籍非常多, HTML5 和 CSS3 方面的基礎書籍已經逐漸飽和(氾濫),出版社開始引進較進階的內容(吸引讀者),像是效能最佳化、大規模建置等議題。

另一方面,NoSQL 資料庫的風潮逐漸受到開發者注意,彈性而無 Schema 的方式讓生產力有所提升,目前也有些 NoSQL 資料庫的書籍翻譯發行。這種有別於關聯式資料庫 (RDBMS) 的開發使用方式還很新,值得各位開發人員學習並評估是否適用。



這次捐贈的書籍清單如下所述:
  • Kristina Chodorow, Michael Dirolf著,吳曜撰譯 ,MongoDB技術手冊,台北:歐萊禮,2012。
  • Christopher Schmitt, Kyle Simpson著,賴屹民譯 ,HTML5 錦囊妙計,台北:歐萊禮,2013。
  • Steve Souders著,楊仁和譯,高效能網站建置指南,台北:歐萊禮,2013。
  • Rachel Andrew著,羅友志譯,CSS3網頁設計師手札,台北:碁峰資訊,2013。
  • 郭欣,巨型網站大師親自指導-建立極速Web站台的祕密,台北:佳魁資訊,2013。
  •  Matt West著,林盈新譯,HTML5 新世代網頁建置-新手也可以快速設計出專業網站,台北:果禾文化,2013。
  • 郭家寶,Google 御用網頁語言 Node.js:一流程式設計師養成精華,台北:佳魁資訊,2013。
  • 高俊峰,網站平台全面換血+完美優化:Linux伺服器加速營運14大原則,台北:佳魁資訊,2013。
  • Pramod J. Sadalage、Martin Fowler著,吳曜撰譯,搞懂NoSQL的15堂課,台北,碁峰資訊,2013。
  • 張春曉等編著,王者歸來:UNIX 王者殿堂,台北:佳魁資訊,2013。
  • Ian Lunn著,陳亦苓譯,CSS3 網頁設計優化-新手也能快速建立跨平台網頁台北:果禾文化,2013。
  • 張宴,Nginx-完全取代Apache,超輕、快、強的Web伺服器,台北:佳魁資訊,2013。
###

2013年7月23日 星期二

NoSQL Distilled 搞懂 NoSQL 的15堂課

最近這一年以來,NoSQL 資料庫越來越熱門,一直缺少一本書籍好好介紹 NoSQL ,現在,「搞懂NoSQL的15堂課 (NoSQL Distilled 中文版)」是很好的基礎入門書,讓我們搞清楚什麼是 NoSQL 資料庫,作者不講各個資料庫的操作細節,而是站在一個高度下有系統的介紹 NoSQL 資料庫,讓我們清楚瞭解 NoSQL 資料庫,不管你是否正在使用 NoSQL ,這本搞懂 NoSQL 的15堂課都非常值得閱讀。

Pramod J. Sadalage、Martin Fowler 著,吳曜撰譯,搞懂 NoSQL 的15堂課,台北,碁峰資訊,2013。
譯自:NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence

NoSQL 不是 Not Only SQL ,事實是來自 Twitter 的分類標籤 (hashtag) ,由 Johan Oskarsson 命名使用的。實際上, NoSQL 是對一種類型資料庫的統稱,這類資料庫有幾個特徵:聚集 (aggregate) 的資料模型、無綱要 (schemaless) 、使用叢集 (cluster) 執行等,目前世界上有的 NoSQL 清單可以參考這個網站:http://nosql-databases.org/

「搞懂 NoSQL 的15堂課」分成兩大部分共15章,第一部分介紹 NoSQL 的資料模型,主要讓我們瞭解 NoSQL 的特點,第二部分則針對實作進行說明,主要是說明鍵值資料庫 (Key-Value Databases)文件資料庫 (Document Databases)欄位群資料庫 (Column-Family Stores ) 圖形資料庫 (Graph Databases) 這四大資料模型的差異與特性。

NoSQL 由於無綱要的性質,使得程式設計師開發應用程式的生產力提高,加上叢集的實現方式, NoSQL 有利於大規模的資料量。相對的,這些看似優點的特性也產生另外一些問題,例如一致性 (consistency) 的議題,由於無綱要與叢集的性質,這讓資料必須分散在各主機上,加上聚集的資料模型,使資料庫在讀取與更新的一致性必須處理與注意。

書中最後提到不同的資料庫是設計用來解決不同的問題,我們面對 NoSQL 的同時,不應該完全放棄使用關聯式資料庫,針對不同應用場合使用特定的資料庫,或是採用多語言維持 (polyglot persistence) 的儲存方式,這些都值得我們進一步思考設計。

###

2013年7月21日 星期日

Go Programming Language

最近檢視一下Google開發的Go程式語言,這裡是一些學習筆記。
  • 發明者
    • Robert Griesemer
    • Rob Pike
    • Ken Thompson (B語言發明者)
  • 開發小組,總共有5人,除3位發明者外,還有
    • Ian Taylor
    • Russ Cox
Go程式語言的發展歷史,這部份可以參考常見問題,摘要如下:
Go程式語言的標準規範:http://golang.org/ref/spec

Go程式語言的簡介,參考『The Expressiveness of Go』投影片的內容
  • 發明原因:為了Google內部需要
    • 有效率大規模的編程
    • 加速編輯撰寫
    • 分散式系統
    • 多核心與網路硬體
  • 速度與安全,或容易使用,結合下列兩類語言的特質
    • C++, Java
    • Python, JavaScript
  • 設計4原則
    • 簡單(simple)
      • 概念是容易理解認識的
    • 正交(orthogonal)
      • 混合概念是清楚的
      • 容易理解和預測發生什麼行為
    • 簡潔(succint)
      • 不需要預先宣告任何意圖
    • 安全(safe)
      • 違反的行為應該被偵測到
  • 簡單原則可以從語言的關鍵字評比
    • Go語言:25個
    • Python 2.7:31
    • C (K&R):32
    • C++:48
    • C#:77
  • 著眼點
    • Go相信程式設計師所寫下的程式碼
    • 意思是,Go試著尊重程式設計師的意圖
    • 這將是安全(safe)而有趣(fun)
    • 用比喻來說,這是安全帶(seat belts)和輔助輪(training wheels)的差異
到這裡為止,對Go程式語言已有初步的認識,了解Go是為了大規模的分散式系統而發明的程式語言。目前工作上也沒有這類應用場合,所以也不會特別花心思去學習,但Go在大規模Web Application上的應用確實有潛力,值得留意Go程式語言的發展。

###

熱門文章