出版時間:2012-1-10 出版社:華中科技大學出版社 作者:[意] Paolo Perrotta 頁數(shù):288 譯者:廖志剛,陳睿杰
Tag標簽:無
內容概要
《Ruby元編程》以案例形式循序漸進地介紹了Ruby特有的實用編程技巧
(元編程)。通過分析案例、講解例題、回顧Ruby代碼庫的實現(xiàn)細節(jié),《Ruby元編程》作者Paolo Perrotta
不僅向讀者展示了Ruby編程的優(yōu)勢和Ruby特有的解決問題的方式,更詳細列出了發(fā)揮其優(yōu)勢的技巧和常用的Ruby設計模式。
Ruby創(chuàng)始人松本行弘作序推薦。
作者簡介
Paolo
Perrotta有超過10年的軟件設計和開發(fā)經驗,發(fā)表過上百篇技術文章。他用過Java、C++、C#編程,最后愛上了Ruby。他是較早接受敏捷方法的實踐者,在Yoox(一家大型互聯(lián)網時尚公司)從事管理敏捷團隊的工作。他還在歐洲各國教授編程培訓課。目前他和女友(還有一只貓)住在意大利,專心鉆研Ruby。
書籍目錄
前言
致謝
引言
“元”這個字眼
關于本書
關于你
第1部分 Ruby元編程.
第1章 星期一:對象模型
1.1 跟Bill在一起的星期一
1.2 打開類
1.3 類的真相
1.4 小測驗:缺失的連接線
1.5 調用一個方法時發(fā)生了什么
I.6 小測驗:混亂的模塊
1.7 對象模型小結
第2章 星期二:方法
2.1 一個重復代碼的問題
2.2 動態(tài)方法
2.3 method—mtssing()方法
2.4 小測驗:狩獵Bug
2.5 關于method—missing()方法的更多內容
第3章 星期三:代碼塊
3.1 怎樣度過駝峰日
3.2 小測驗:Ruby的#符號
3.3 閉包
3.4 itance eval()
3.5 可調用對象
3.6 編寫一種領域專屬語
3.7 小測驗:更好的領域專屬語言
第4章星期四:類定義
4.1類定義揭秘
4.2 小測驗:Taboo類
4.3 單件方法
4.4 Eigenelass
4.5 小測驗:模塊的麻煩
4.6 別名
4.7 小測驗:打破數(shù)學規(guī)律
第5章 星期五:編寫代碼的代碼
5.1 帶路
5.2 Kernel#eval
5.3 小測驗:校驗過的屬性(第一步)
5.4 小測驗:校驗過的屬性(第二步)
5.5 小測驗:校驗過的屬性(第二三步)
5.6 小測驗:校驗過的屬性(第四步)
5.7 鉤子方法
5.8 小測驗:校驗過的屬性(第五步)
第6章 尾聲
第2部分 Rails中的元編程.
第7章 AcllyeRecord的設計
7.1 準備旅程
7.2 ActiveRecord的設計
7.3 經驗教訓
第8章 深入AcllyeRecord
8.1 動態(tài)屬性
8.2 動態(tài)查找器
8.3 經驗教訓
第9章 安全元編程
9.1 元編程的測試
9.2 化解猴子補丁
9.3 經驗教訓
第3部分 附錄
附錄A 常見慣用法
A.1 擬態(tài)方法
A.2 空指針保護
A.3 關于方法參數(shù)的技巧
A.4 Self Yield
A.5 Symbol#to_proc()方法
附錄B 領域專屬語言
B.1 關于領域專屬語言
B.2 內部和外部領域專屬語言
B.3 領域專屬語言和元編程
附錄C 法術手冊
C.1 法術集
附錄D參考書目
索引
章節(jié)摘錄
版權頁: 插圖: ——可以格式化你的硬盤,更糟糕的是,甚至可以讀到你有點肉麻的電子情書。這種行為被稱為代碼注入攻擊。 防止代碼注入 很顯然,下一個要問Bill的問題就是,“怎樣才能保護我的代碼免受代碼注入攻擊呢?”你也許可以解析所有的字符串代碼(第142頁),以識別其中可能有危險的操作。不過,這種方式已經被證明不大有效,因為惡意代碼的寫法成千上萬,想要戰(zhàn)勝一個一心想搞破壞的黑客,對你和你的計算機來說都是危險的。 當談到代碼注入時,有些字符串會比其他字符串更安全。只有從外面輸入的字符串才可能包含惡意代碼,因此可以簡單地限制eval()只執(zhí)行那些你自己寫的字符串。當然,說起來容易,追蹤字符串的來源可能會出乎意料的困難。 由于上面的原因,一些程序員傾向于完全禁止使用eval()方法。有些程序員緊張那些可能出錯的東西,因此徹底禁止eval()方法成了一種非常流行的做法?!叭绻麤]有eval()方法,則只能根據(jù)具體問題來尋找替代方法。還記得“代碼建入”(第148頁)中的數(shù)組探索者程序么?你可以使用動態(tài)派發(fā)(第41頁)技術來代替eval()方法: def explore_array(method,*arguments) [′a′,′b′,′c′],send(method,*arguments) end. 不過,有時候你還是會懷念eval()方法的。例如,最近,這個安全版本的數(shù)組探索者要求分開輸入方法名和參數(shù)。不幸的是,分開輸入這種方式可能會讓你的Web界面顯得不那么方便。另外,這個安全版本還不能調用像find()這樣接受塊的方法。如果需要支持塊,那么不得不允許在系統(tǒng)中輸入任意代碼。在大量使用和完全不使用eval()之間并沒有一個容易找到的“甜點,~。如果不想完全棄用eval(),Ruby的確也提供了一些能讓它更安全的方式。下面看看這些特性。 污染對象和安全級別 Bill繼續(xù)關于安全性的話題,介紹了污染對象的概念。Ruby會自動把不安全的對象——尤其是從外部傳入的對象——標記為被污染的。污染對象包括程序從Web表單、文件和命令行讀入的字符串,甚至包括系統(tǒng)變量。每次從污染字符串運算而來的新字符串,也是被污染的。
媒體關注與評論
Ruby的很多特性繼承自其他語言,這些語言包括Lisp、Smalltalk、C、Perl等。其元編程特性來自于Lisp(以及Smalltalk)。元編程看起來有點像魔術,功能強大。但是你必須牢記:能力越大,責任越大。享受Ruby編程吧?! 杀拘泻?Ruby之父
編輯推薦
《Ruby元編程》填補了Ruby語言參考手冊和編程案例之間的空白。它不僅解釋了各種元編程的技術,還展示了編寫更精練、更優(yōu)良代碼的方法。不過要事先警告你,熟悉了新方法后,你會難以忍受目前主流的編程方法。
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載