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