前言 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.9 Time與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和HTML 396
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文檔中提取所有URL 424
11.14 將純文本轉換為HTML 428
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上控製MySQL 495
13.8 找到查詢返迴的行數 496
13.9 與MySQL數據庫直接對話 499
13.10 和PostgreSQL數據庫直接對話 501
13.11 用ActiveRecord使用對象相關映射 504
13.12 使用對象相關映射Og 508
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.13 ping機器 564
14.14 編寫Internet服務器 565
14.15 分析URL 567
14.16 編寫CGI腳本 570
14.17 設置cookie和其他HTTP響應頭文件 573
14.18 用CGI處理文件上傳 575
14.19 用WEBrick運行servlet 578
14.20 真實世界的HTTP客戶端 584
第15章 Web開發:Ruby on Rails 588
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和JavaScript 615
15.11 設置並找迴會話信息 616
15.12 設置並找迴Cookie 619
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.22 Web站點的單元測試 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服務搜索Web 665
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 遠程控製的Jukebox 694
第17章 測試、調試、優化以及文檔化 700
17.1 隻在調試模式下運行代碼 701
17.2 發齣異常 703
17.3 處理異常 705
17.4 在異常後重新運行 707
17.5 添加日誌到應用程序中 709
17.6 創建並理解Traceback 711
17.7 編寫單元測試 714
17.8 運行單元測試 717
17.9 測試使用外部資源的代碼 720
17.10 使用斷點審查並改變應用程序的狀態 724
17.11 文檔化應用程序 727
17.12 記錄應用程序 731
17.13 Benchmark競爭性解決方案 734
17.14 一次運行多個分析工具 736
17.15 誰調用瞭該方法?調用圖形分析器 738
第18章 打包和發布軟件 741
18.1 通過查詢gem知識庫尋找庫 742
18.2 安裝並使用gem 745
18.3 要求gem的某個特定版本 748
18.4 卸載gem 751
18.5 為已安裝的gem讀入文檔 752
18.6 打包代碼為gem 754
18.7 發布gem 757
18.8 用setup.rb安裝並創建獨立Ruby程序包 760
第19章 用Rake自動執行任務 763
19.1 自動運行單元測試 765
19.3 清除生成的文件 770
19.4 自動構建gem 771
19.5 收集代碼的統計信息 773
19.6 發布文檔 776
19.7 並行運行多個任務 778
19.8 通用的項目Rakefile 779
第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章 用其他語言擴展Ruby 861
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
· · · · · · (
收起)