RubyCookbook中文版

RubyCookbook中文版

RubyCookbook中文版,是一種為簡單快捷的面向對象編程(面向對象程式設計)而創的腳本語言。

基本信息

前言

這是一本關於秘訣的書籍,其中包括:對一般問題的解決方案、複製和貼上代碼段、解釋、示例和簡短指南。本書意欲為讀者節省時間。人們總是說,時間就是金錢,但時間也是個人生命的構成。我們的生命應當花在創造新事物上,而不是用於抗擊我們自己的錯誤或者解決那些已經解決過的問題。我們提供此書的願望是:它的所有讀者所節省的時間遠遠超過我們編寫它所花掉的時間。
Ruby程式語言本身是一種非常節省時間的工具,與其他程式語言相比,它能產生更高的生產率,因為用戶會花費更多的時間讓計算機做自己想做的事情,而思考語言本身的時間則較少。但是,對於一名Ruby程式設計師,可能有很多情況即使沒做任何事情也花費了 很多時間,下面是我們遇到過的各個方面:
將時間花在編寫通用算法的Ruby實現上。
將時間花在調試通用算法的Ruby實現上。
將時間花在發現和修正Ruby特有的缺陷上。
將時間花在應當自動執行的重複性任務上(包括重複性編程任務!)。
將時間花在重複其他人已經公開實現過的工作上。
將時間花在搜尋運行X的庫上。
將時間花在對運行X的多個庫進行評估和確定上。
將時間花在由於文檔的匱乏或過時而學習如何使用庫上。
將時間浪費在由於懼怕而不敢接觸有用的技術上。
我們以及本書的許多投稿人還清楚地記得我們自己浪費的那些時日。我們將自己的經歷提煉進本書中,從而讓讀者不再浪費自己的時間——或者至少讓讀者愉快地將時間花在其他更有趣的問題上。
我們的另一個目標是擴大讀者的興趣。如果讀者閱讀本書後希望能夠使用Ruby生成算法音樂,沒問題,12.14節將會節省讀者的時間。迄今為止,讀者更可以不必考慮可能性問題。本書中每個秘訣的形成和編寫都在理念上帶有如下這樣兩個目標:節省讀者時間以及讓讀者的頭腦對新觀點保持活躍。

關於Ruby

Ruby,一種為簡單快捷的面向對象編程(面向對象程式設計)而創的腳本語言,在20世紀90年代由日本人松本行弘(まつもとゆきひろ/yukihiro Matsumoto)開發,遵守GPL協定和Ruby License。它的靈感與特性來自於 Perl、Smalltalk、Eiffel、Ada 以及 Lisp 語言。由 Ruby 語言本身還發展出了jruby(Java 平台)、IronRuby等其他平台的 Ruby 語言替代品。Ruby的作者於1993年2月24日開始編寫Ruby,直至1995年12月才正式公開發布於fj(新聞組)。因為Perl發音與6月誕生石pearl(珍珠)相同,因此Ruby以7月誕生石ruby(紅寶石)命名。

作者簡介

LucasCarlson是一個專業Ruby程式設計師,專長RailsWeb開發。他已經負責編寫了6個庫,同時為很多其他庫做出了貢獻,其中包括Rails和RedCloth。他住在俄勒岡州波特蘭市。

目錄

前言1
第1章 字元串13
1.1根據部分構建字元串16
1.2將變數代入字元串18
1.3將變數代入現有的字元串20
1.4按字或字元逆轉字元串22
1.5表示不可列印字元23
1.6字元與值的相互轉換26
1.7字元串與符號之間的相互轉換27
1.8每次處理字元串中的一個字元28
1.9每次處理字元串中的一個字30
1.10修改字元串的大小寫32
1.11管理空白34
1.12測試對象是否類似於字元串35
1.13獲得想要的字元串部分36
1.14處理國際編碼38
1.15帶自動換行的文本39
1.16生成字元串的後繼41
1.17使用正則表達式匹配字元串44
1.18一遍替換多種模式46
1.19驗證電子信箱地址47
1.20 使用貝葉斯分析器對文本進行分類50
第2章 數字53
2.1由字元串分析數字54
2.2浮點數的比較57
2.3表示數字至任意精度59
2.4有理數的表示62
2.5隨機數的生成64
2.6數字基之間的轉換66
2.7獲取對數67
2.8確定平均數、中值和模69
2.9度數與弧度之間的轉換72
2.10矩陣乘法74
2.11求解線性方程組79
2.12複數的使用81
2.13模擬Fixnum的子類84
2.14使用羅馬數字進行數學運算88
2.15生成數字序列93
2.16生成素數96
2.17檢查信用卡校驗和99
第3章 日期與時間102
3.1查找當前日期105
3.2精確或模糊地分析日期108
3.3列印日期111
3.4日期上的疊代117
3.5計算日期119
3.6從任意日期開始計算天數121
3.7時區轉換123
3.8檢查夏令時是否起效126
3.9Time與DateTime對象之間的轉換127
3.10查找周日期130
3.11處理商用日期132
3.12周期性運行代碼塊133
3.13等待固定長度的時間135
3.14為長期運行的操作添加逾時138
第4章 數組140
4.1在數組上疊代142
4.2不使用臨時變數重排值146
4.3去除數組中的重複元素148
4.4逆轉數組149
4.5數組排序150
4.6排序字元串時忽略大小寫152
4.7確保已排序數組保持有序153
4.8數組項求和158
4.9按出現率排序數組159
4.10打亂數組161
4.11獲取數組的N個最小項163
4.12使用Injection構建散列 165
4.13提取部分數組167
4.14在數組上處理集合運算170
4.15集合劃分或分類173
第5章 散列177
5.1使用符號作為散列鍵179
5.2創建帶默認值的散列181
5.3向散列添加元素182
5.4從散列中去除元素185
5.5使用數組或其他可修改對象作為散列鍵186
5.6為相同散列鍵保持重複值188
5.7在散列上疊代190
5.8按插入順序在散列上疊代192
5.9散列列印193
5.10反轉散列196
5.11隨機選擇加權列表197
5.12構建柱狀圖200
5.13重新映射散列的鍵與值202
5.14提取部分散列203
5.15使用正則表達式搜尋散列204
第6章 檔案與目錄206
6.1檢查檔案是否存在209
6.2檢查對檔案的訪問210
6.3更改檔案許可權212
6.4查看上次使用檔案的時間216
6.5目錄清單217
6.6讀取檔案內容220
6.7寫檔案224
6.8寫臨時檔案225
6.9從檔案中挑選隨機行227
6.10比較兩個檔案228
6.11在“唯讀一次”輸入流上執行隨機訪問232
6.12遍歷目錄樹234
6.13檔案加鎖237
6.14備份至帶版本號的檔案名稱240
6.15偽裝字元串為檔案242
6.16重定向標準輸出或輸出245
6.17處理二進制檔案247
6.18刪除檔案251
6.19截短檔案252
6.20查找所需檔案253
6.21查找並修改當前工作目錄255
第7章 代碼塊與疊代257
7.1代碼塊的創建與調用260
7.2編寫接收代碼塊的方法262
7.3將代碼塊參數與變數綁定264
7.4作為閉包的代碼塊:在代碼塊內使用外部變數267
7.5在數據結構上編寫疊代器268
7.6更改對象的疊代方式271
7.7編寫分類或收集的代碼塊方法273
7.8停止疊代275
7.9並行地在多個疊代變數上循環277
7.10隱藏塊方法中的設定與清除281
7.11使用回調的松耦合系統284
第8章 對象與類288
8.1管理實例數據290
8.2管理類數據293
8.3檢查類或模組的成員296
8.4編寫一個繼承類298
8.5方法重載300
8.6驗證並修改屬性值302
8.7定義虛屬性304
8.8授權對另一對象的方法調用305
8.9對象到不同類型的轉換與強制轉換308
8.10從任意對象獲取人類可讀的列印輸出312
8.11接收或傳遞參數的變數數目315
8.12模擬關鍵字參數317
8.13調用超類的方法319
8.14創建抽象方法321
8.15凍結對象以防修改324
8.16生成對象的副本326
8.17聲明常量329
8.18實現類方法和singleton方法331
8.19通過私有化方法控制訪問333
第9章 模組與命名空間337
9.1使用混入模擬多重繼承 337
9.2使用模組擴展特定對象341
9.3混用類方法343
9.4實現Enumerable:編寫一個方法,獲得22種免費方法345
9.5使用命名空間避免名字衝突347
9.6按需自動載入庫349
9.7包括命名空間351
9.8初始化模組定義的實例變數352
9.9自動初始化混合插入的模組353
第10章 反射與元編程357
10.1查找對象的類和超類358
10.2列出對象的方法359
10.3列出對象獨有的方法362
10.4獲得方法的引用363
10.5修正別人類中的錯誤365
10.6偵聽類的變化367
10.7檢查對象是否具有必需的屬性369
10.8回響對未定義方法的調用371
10.9自動初始化實例變數375
10.10使用元編程避免刻板代碼377
10.11帶字元串計算的元編程379
10.12計算早先上下文中的代碼382
10.13取消定義方法383
10.14為方法起別名386
10.15面向方面的編程389
10.16強制實施軟體契約391
第11章 XML和HTML396
11.1檢查XML的良構性397
11.2從文檔的樹結構中提取數據399
11.3解析文檔時提取數據401
11.4使用XPath導航文檔403
11.5解析不合法標記405
11.6將一個XML文檔轉換為一個散列408
11.7驗證XML文檔411
11.8取代XML實體414
11.9創建並修改XML文檔417
11.10壓縮XML文檔中的空白420
11.11猜解文檔的編碼422
11.12從一種編碼轉換為另一種編碼423
11.13從HTML文檔中提取所有URL424
11.14將純文本轉換為HTML428
11.15將HTML文檔從Web轉換為文本429
11.16一個簡單的提要聚合器432
第12章 圖形與其他檔案格式437
12.1縮略圖形437
12.2向圖形中添加文本440
12.3將一個圖形格式轉換為另一種443
12.4用圖表示數據446
12.5使用sparkline添加圖形化上下文449
12.6強加密數據453
12.7解析逗號分隔的數據455
12.8解析非完全逗號分隔的數據457
12.9生成並分析Excel電子數據表459
12.10使用Gzip和Tar壓縮並存檔檔案462
12.11讀寫ZIP檔案465
12.12讀寫配置檔案467
12.13生成PDF檔案468
12.14將數據表示為MIDI音樂473
第13章 資料庫和持久性477
13.1用YAML串列化數據480
13.2用Marshal串列化數據484
13.3用Madeleine保持對象485
13.4用SimpleSearch索引結構化文本488
13.5用ferret索引結構化文本490
13.6使用Berkeley DB資料庫493
13.7在Unix上控制MySQL495
13.8找到查詢返回的行數496
13.9與MySQL資料庫直接對話499
13.10和PostgreSQL資料庫直接對話501
13.11用ActiveRecord使用對象相關映射504
13.12使用對象相關映射Og508
13.13以編程方式構建查詢512
13.14用ActiveRecord確認數據516
13.15阻止SQL注入攻擊519
13.16在ActiveRecord里使用交易522
13.17添加掛鈎程式到表事件中524
13.18用資料庫Minxin添加標籤526
第14章 Internet服務531
14.1抓取Web頁面的內容532
14.2傳送HTTPS Web請求534
14.3自定義HTTP的請求頭檔案536
14.4執行DNS查詢539
14.5傳送郵件541
14.6用IMAP閱讀郵件545
14.7用POP3閱讀郵件549
14.8作為FTP客戶端552
14.9作為Telnet客戶端554
14.10作為SSH客戶端558
14.11複製檔案到其他機器560
14.12作為BitTorrent客戶端561
14.13ping機器 564
14.14編寫Internet伺服器 565
14.15分析URL567
14.16編寫CGI腳本570
14.17設定cookie和其他HTTP回響頭檔案573
14.18用CGI處理檔案上傳575
14.19用WEBrick運行servlet578
14.20真實世界的HTTP客戶端584
第15章 Web開發:Ruby on Rails588
15.1編寫簡單的Rails應用程式顯示系統狀態590
15.2 從控制器傳遞數據到視圖593
15.3創建頁眉和頁腳的布局596
15.4重新定位不同的位置599
15.5用render顯示模板601
15.6集成資料庫到Rails應用程式中604
15.7理解複數規則607
15.8創建登錄系統609
15.9保存散列化的用戶密碼到資料庫中613
15.10轉義顯示用的HTML和JavaScript615
15.11設定並找回會話信息616
15.12設定並找回Cookie619
15.13提取代碼到輔助函式中621
15.14重構視圖為視圖的部分片斷623
15.15用script aculo us添加DHTML效果627
15.16生成操作模型對象的表格629
15.17創建Ajax表格633
15.18在Web站點上發布Web服務636
15.19用Rails傳送郵件639
15.20自動傳送錯誤信息到信箱641
15.21文檔化Web站點643
15.22Web站點的單元測試645
15.23在Web應用程式中使用斷點648
第16章 Web服務及分散式編程652
16.1搜尋Amazon上的書653
16.2找到Flickr上的照片656
16.3編寫XML-RPC客戶端659
16.4編寫SOAP客戶端662
16.5編寫SOAP伺服器663
16.6用Google的SOAP服務搜尋Web665
16.7使用WSDL檔案更簡單地構建SOAP調用667
16.8用信用卡支付669
16.9通過UPS或FedEx找到裝運包的費用671
16.10在任意數目的計算機間共享散列672
16.11實現分散式查詢676
16.12創建共享的“白板”678
16.13通過訪問控制列表保障DRb服務的安全682
16.14通過rinda自動發現DRb服務683
16.15代理無法分布的對象 685
16.16用MemCached在分散式RAM上保存數據 688
16.17用MemCached高速快取重要結果690
16.18遠程控制的Jukebox694
第17章 測試、調試、最佳化以及文檔化700
17.1隻在調試模式下運行代碼701
17.2發出異常703
17.3處理異常705
17.4在異常後重新運行707
17.5添加日誌到應用程式中709
17.6創建並理解Traceback711
17.7編寫單元測試714
17.8運行單元測試717
17.9測試使用外部資源的代碼720
17.10使用斷點審查並改變應用程式的狀態724
17.11文檔化應用程式727
17.12記錄應用程式731
17.13Benchmark競爭性解決方案734
17.14一次運行多個分析工具736
17.15誰調用了該方法?調用圖形分析器738
第18章 打包和發布軟體741
18.1通過查詢gem知識庫尋找庫742
18.2安裝並使用gem745
18.3要求gem的某個特定版本748
18.4卸載gem751
18.5為已安裝的gem讀入文檔752
18.6打包代碼為gem754
18.7發布gem757
18.8用setup.rb安裝並創建獨立Ruby程式包760
第19章 用Rake自動執行任務763
19.1自動運行單元測試765
19.3清除生成的檔案770
19.4自動構建gem771
19.5收集代碼的統計信息773
19.6發布文檔776
19.7並行運行多個任務778
19.8通用的項目Rakefile779
第20章 多任務和多執行緒787
20.1在Unix上運行守護進程788
20.2創建Windows服務791
20.3用執行緒一次做兩件事情795
20.4同步訪問一個對象797
20.5中止執行緒800
20.6在很多對象上同時運行代碼塊802
20.7用執行緒池限制多執行緒805
20.8用popen驅動外部進程808
20.9通過unix shell命令抓取輸出和錯誤流810
20.10控制其他機器上的進程811
20.11避免死鎖812
第21章 用戶界面816
21.1一次得到輸入中的一行817
21.2一次得到輸入的一個字元819
21.3分析命令行參數822
21.4測試程式是否互動運行825
21.5設定和卸載curses程式825
21.6清空螢幕828
21.7決定終端大小829
21.8改變文本的顏色831
21.9讀入密碼834
21.10允許用ReadLine編輯輸入835
21.11使得鍵盤指示燈閃爍836
21.12用Tk創建一個GUI應用程式839
21.13 用wxRuby創建一個GUI應用程式843
21.14用Ruby/GTK創建一個GUI應用程式847
21.15用RubyCocoa創建一個Mac OS X應用程式851
21.16用AppleScript得到用戶輸入859
第22章 用其他語言擴展Ruby861
22.1為Ruby編寫C擴展程式862
22.2在Ruby中使用C庫865
22.3通過SWIG調用C庫869
22.4通過SWIG調用C庫871
22.5用JRuby使用Java庫874
第23章 系統管理878
23.1腳本化外部程式879
23.2管理Windows服務880
23.3作為另一個用戶運行代碼882
23.4不用cron或at運行周期性任務884
23.5刪除匹配正則表達式的檔案885
23.6批量重命名檔案888
23.7找到複製的檔案891
23.8自動備份894
23.9在用戶目錄下規範化所有權和許可權895
23.10為給定用戶殺死所有進程898

相關詞條

相關搜尋

熱門詞條

聯絡我們