本書榮獲 2007 年第 17 屆 JOLT 大獎提名,以及 Amazon 五顆星的評價。
想要將 Ruby 的威力發揮到淋漓盡致嗎?就現今最熱門的程式語言 Ruby 而言,《Ruby 錦囊妙技》堪稱最完整、最全面的問題解決指南,為真實世界的疑難雜症提供了上百種解決方案,並且附帶了清楚的解釋,以及數千行可用在你自己的專案裡的程式碼。從資料結構和演算法,到與尖端技術的整合,《Ruby 錦囊妙技》涵蓋了每一位程式人員所需的知識與技能。不論是初學者,還是高階 Ruby 程式人員,同樣都能從本書獲益,學習到如何運用下列內容進行編程︰
* 字串與數字
* 資料庫
* 陣列與雜湊
* 繪圖
* 類別、模組、與名稱空間
* 電子郵件、SSH、與 BitTorrent 之類的網際網路服務
* 反射機制與中介編程
* XML 與 HTML 處理
* 多工
* Ruby on Rails(含 Ajax 整合)
* 圖形與終端界面
如果你需要進行 Web 應用程式,本書會告訴你如何從 Rails 開始。如果你需要重新命名數千個檔案,你會知道如何使用 Ruby 完成這一類日常工作。你將學會如何讀寫 Excel 試算表、如何使用 Bayesian 過濾器對文字內容進行分類、以及如何建立 PDF 文件。另外,本書甚至包含了一些小絕竅,例如,如何讓鍵盤上的指示燈產生閃爍。
《Ruby 錦囊妙技》是現今關於 Ruby 最有用的一本書。在你需要解決某個問題時,不必靠自己篳路藍縷從頭開始︰你可以先在本書中找找看。
作者簡介:
Lucas Carlson 是一名專業的 Ruby 程式人員,專精於 Rails 相關的 Web 程式開發。他已經撰寫過6個程式庫,並對許多其他程式庫具有相當的貢獻,包括 Rails 和 RedCloth。
Leonard Richardson 使用許多語言建立與維護程式庫,包括 Rubyful Soup。
各界推薦
名人推薦:
「程式人員不是單靠語法吃飯,而是以他們所撰寫的每一行具體、有用的程式碼為生。就此而言,本書的內容全都是實用的秘訣、技巧、知識、與智慧。冀望它的循循善誘,能夠引導讀者諸公到達 Ruby 編程的另一個美麗境界。」
─ Yukihiro(Matz) Matsumoto,Ruby 創造者
「你或許以為這些只不過是傳統的、刻版的秘訣,實則不然。本書所涵蓋的錦囊妙技真的是非同小可,簡直是棒極了。例如版本控制系統、BitTorent 客戶端、以及遺失恐龍的廣告等等,精彩絕倫,不勝枚舉。本書的內容可謂學習 Ruby 的玉液瓊漿,提升程式能力的心靈雞湯。」
─ Why the lucky stiff
名人推薦:「程式人員不是單靠語法吃飯,而是以他們所撰寫的每一行具體、有用的程式碼為生。就此而言,本書的內容全都是實用的秘訣、技巧、知識、與智慧。冀望它的循循善誘,能夠引導讀者諸公到達 Ruby 編程的另一個美麗境界。」
─ Yukihiro(Matz) Matsumoto,Ruby 創造者
「你或許以為這些只不過是傳統的、刻版的秘訣,實則不然。本書所涵蓋的錦囊妙技真的是非同小可,簡直是棒極了。例如版本控制系統、BitTorent 客戶端、以及遺失恐龍的廣告等等,精彩絕倫,不勝枚舉。本書的內容可謂學習 Ruby 的玉液瓊漿,提升程式能力的心靈雞湯。...
目錄
第 1 章︰字串,包含建構、處理、和操作文字字串的秘訣。我們特別介紹若干有關正規表達式的秘訣(1.17 節至 1.19 節),但是,我們所關注的重點是 Ruby 特定的問題,而正規表達式則是一種非常通用的工具。如果讀者尚未使用過,或者對它感到恐懼,那麼,建議你閱讀線上教學指南,或者由 Jeffrey Friedl 所撰寫的《Mastering Regular Expressions》(O'Reilly)。
第 2 章︰數字,介紹不同類型數字的表示,包括︰實數、複數、任意精度的小數等等。還包括常見的數學和統計演算法的 Ruby 實作,並解釋在建立自己的數字類型時,會遇到的一些 Ruby 獨有的特性(2.13 節和 2.14 節)。
第 3 章︰日期與時間,涵蓋 Ruby 在時間處理上的兩個介面︰一個是奠基於 C 的時間程式庫,這在其他程式語言中比較常見;另一個則是純 Ruby 的實作,這比較合乎語言的習慣。
第 4 章︰陣列,介紹 Ruby 最簡單的複合資料型別(compound data type)︰陣列。陣列的許多方法實際上來自 Enumerable 混成(mixin);這意味著你可將這些秘訣應用在雜湊(hash)或其他的資料型別上。Enumerable 的一些特性被涵蓋在本章之中(4.4 節和 4.6 節),還有一些特性則在第 7 章介紹。
第 5 章︰雜湊,介紹 Ruby 的另一種基本複合資料型別︰雜湊。雜湊讓物件與其名稱相關聯,以便爾後查詢(雜湊有時被稱為"查詢表"或"字典")。結合雜湊與陣列的使用,可以輕鬆地建構深化且複雜的資料結構。
第 6 章︰檔案與目錄,包含讀取、寫入、和操作檔案的技術。Ruby 的檔案存取介面奠基於 C 的標準檔案程式庫,因此,你可能已經很熟悉。本章還涉及 Ruby 用於搜索和操作檔案系統的標準程式庫,許多秘訣將在第23章中再次說明。
第 7 章︰程式碼區塊與迭代,包含探討 Ruby 程式碼區塊(也稱為閉包,closure)之各種可能性的秘訣。
第 8 章︰物件與類別,介紹 Ruby 對物件導向編程的處理。包括撰寫不同類型的類別與方法的秘訣,以及幾個說明所有 Ruby 物件能力的秘訣(例如 freezing 和 cloning)。
第 9 章︰模組與名稱空間,介紹 Ruby 的模組(module)。這類構造(construct)用於將新行為「混進」(mixin)既有類別中,以及將功能性分隔到不同的名稱空間中。
第10章︰反射機制與中介編程,涵蓋以程式化手段探索和修改 Ruby 類別定義的技術。
第11章︰XML與HTML,說明如何處理最受歡迎的資料交換格式。本章主要涉及剖析他人的 XML 文件和 Web 網頁(參見秘訣 11.9)。
第12章︰圖形與其他檔案格式,介紹 XML 和 HTML 以外的其他資料交換格式,特別關注於圖形的生成與操作。
第13章︰資料庫和永續儲存,涵蓋 Ruby 對資料儲存格式最好的介面,不管是將 Ruby 物件序列化到磁碟上,或是在資料庫中儲存結構化資料。從序列化資料和對文字內容做索引,到 Ruby 針對流行的 SQL 資料庫所提供的客戶端程式庫,再到像 ActiveRecord 這類發展成熟的抽象層(讓你完全免於撰寫 SQL),本章皆針對其不同作法提出說明。
第14章︰網際網路服務,透過說明以 Ruby 程式庫撰寫的各種客戶端和伺服端,開始介紹我們的網際網路服務。
第15章︰Web 開發︰Ruby on Rails,介紹近來讓 Ruby 形成風起雲湧之熱潮的 Web 應用程式框架。
第16章︰Web Service 及分散式編程,介紹在 Ruby 程式裡於不同電腦之間共享資訊的兩種技術。為了使用 Web Service,你必須對其他電腦上的程式(通常是你沒有控制權的電腦)發出 HTTP 請求。Ruby 的 DRb 程式庫可讓你在執行於一組電腦上的程式之間,共享 Ruby 的資料結構。
第17章︰測試、偵錯、最佳化、及文件化,重點放在處理例外狀況以及為程式碼建立單元測試,另外,還有一些關於偵錯和最佳化程序的秘訣。
第18章︰打包與部署軟體,主要是處理 Ruby 的 Gem 打包系統,以及保存許多 gem 檔的 RubyForge 伺服器。其他章節中的許多秘訣要求你安裝特定的 gem,因此,如果你對 gem 不熟悉,建議你特別閱讀 18.2 節。本章也說明如何為自己的專案建立和部署 gem。
第19章︰使用 Rake 自動執行任務,介紹最流行的 Ruby 建置工具(build tool)。藉由 Rake,你可以讓像是執行單元測試,或者將程式碼打包成 gem 的常見任務自動化。儘管通常被用在 Ruby 專案中,但它是一種通用的建置語言,你可以將它用在任何可能使用 Make 的地方。
第20章︰多工與多執行緒,說明如何利用多執行緒同時進行更多工作,以及如何使用 Unix 子程序執行外部命令。
第21章︰使用者介面,介紹使用者介面(除了第 15 章介紹過的 Web 介面)。我們討論了命令列介面、具有 Curses 和 HighLine 程式庫並且以字元為基礎的 GUI、為各種平台準備的 GUI 工具組、以及更多類型的特殊使用者介面(秘訣 21.11)。
第 22 章︰以其他語言擴展 Ruby,主要的焦點在於:為效能考量或存取更多程式庫,將 Ruby 和其他語言連繫起來。本章大部分聚焦在存取 C 的程式庫,但也有一個關於 JRuby 的秘訣,JRuby 是執行在 Java 虛擬機器(JVM)上的 Ruby 實作(秘訣 22.5)。
第 23 章︰系統管理,介紹眾多完成管理任務(通常使用其他章節的技術)的自我完備(self-contained)程式。這些秘訣側重於 Unix 上的管理任務(但是對 Windows 使用者也有一些資源可供參考(秘訣 23.2)),以及一些跨平台的指令稿(script)。
索引
第 1 章︰字串,包含建構、處理、和操作文字字串的秘訣。我們特別介紹若干有關正規表達式的秘訣(1.17 節至 1.19 節),但是,我們所關注的重點是 Ruby 特定的問題,而正規表達式則是一種非常通用的工具。如果讀者尚未使用過,或者對它感到恐懼,那麼,建議你閱讀線上教學指南,或者由 Jeffrey Friedl 所撰寫的《Mastering Regular Expressions》(O'Reilly)。
第 2 章︰數字,介紹不同類型數字的表示,包括︰實數、複數、任意精度的小數等等。還包括常見的數學和統計演算法的 Ruby 實作,並解釋在建立自己的數字類型時,會遇到的一些 R...