出版時(shí)間:2008 年7月 出版社:電子工業(yè)出版社 作者:(美)Eldon Alameda 頁(yè)數(shù):537 字?jǐn)?shù):921600 譯者:張若飛;,王峰;馬連浩
Tag標(biāo)簽:無
前言
關(guān)于作者Eldon Alameda是一名Web開發(fā)人員,現(xiàn)居住于氣候寒冷的堪薩斯州。他現(xiàn)在為堪薩斯市一家剛起步的小型科技公司開發(fā)Ruby on Rails應(yīng)用。在這之前,他在當(dāng)?shù)氐膹V告公司、Sprint PCS及IBM等多家公司從事過軟件開發(fā)工作。關(guān)于技術(shù)評(píng)審Paul Bentley已經(jīng)有10多年專業(yè)軟件的開發(fā)經(jīng)驗(yàn)。他涉獵過計(jì)算機(jī)的許多領(lǐng)域,其中包括從嵌入式設(shè)備到3D圖形等。他尤其精通電話技術(shù)領(lǐng)域,不管是在傳統(tǒng)的計(jì)算機(jī)電話技術(shù)方面,還是在基于SIP的解決方案方面都有相當(dāng)豐富的經(jīng)驗(yàn)。他現(xiàn)在使用Rails來開發(fā)Web應(yīng)用程序,以為解決企業(yè)應(yīng)用的一系列問題提供穩(wěn)定的方案。致謝說實(shí)話,寫本書真的很難。其實(shí)我更想說的是,如果沒有許多人的幫助、耐心及智慧,這本書也就根本不可能與大家見面。Keir Thomas、Chris Mills和Ben Renow-Clarke也曾參與了這個(gè)項(xiàng)目,感謝你們對(duì)整個(gè)項(xiàng)目的指導(dǎo)、建議和幫助。Paul Bentley是本書的技術(shù)評(píng)審,感謝你花了很長(zhǎng)時(shí)間審閱本書的代碼,你那些見解深刻的評(píng)論及鼓勵(lì)的話語一直激勵(lì)著我們。Tracy Brown Collins是本書的項(xiàng)目經(jīng)理,感謝你為了保證一切處于正軌而不知疲倦地工作,也感謝你在交稿期限到來時(shí)對(duì)我的通融。Heather Lang是本書的文字編輯,感謝你對(duì)本書文字上的修改及潤(rùn)色。感謝Laura Cheu和她的產(chǎn)品團(tuán)隊(duì),你們?yōu)榱四茏尡緯M快上市所做的辛勤工作,以及容忍我每次在最后時(shí)刻的改變。在很多時(shí)候你們拯救了我,任何言語也無法表達(dá)我對(duì)你們的感激之情。感謝我的妻子Dori,感謝你的善良、支持、鼓勵(lì)及在過去的9個(gè)月里對(duì)家庭的照顧,還要感謝你在每次晚飯幫我訂辣雞翅時(shí),(幾乎)從來都沒有抱怨過。最后,我要感謝我的女兒Kaylee,她是我的陽(yáng)光,總是能給我?guī)硇β?。大多?shù)培訓(xùn)書籍和課程的不足在我的職業(yè)生涯中,曾經(jīng)參加過許多技術(shù)培訓(xùn)課程,并且發(fā)現(xiàn)其中的大多數(shù)都有一個(gè)共同的缺點(diǎn)——實(shí)際上沒有教授任何東西。我整個(gè)星期都坐在一間教室里,僅僅來證明我能夠遵循按部就班的指導(dǎo)。但是,我即使整天做著白日夢(mèng),也可以通過大多數(shù)這些課程。實(shí)際上只有當(dāng)我回到辦公室,獨(dú)自面對(duì)(由于沒有一個(gè)安全的網(wǎng)絡(luò))需要解決的技術(shù)問題時(shí),才能真正掌握那些知識(shí)。也許只有在沒有理想環(huán)境的條件下,又不得不在實(shí)際中運(yùn)用某項(xiàng)技術(shù)時(shí),它的優(yōu)點(diǎn)和缺點(diǎn)才能充分地展示出來。我相信許多讀者也都有過同樣的經(jīng)歷。不幸的是,如今許多的編程書籍似乎也有了同樣的缺點(diǎn)。這些書規(guī)定了創(chuàng)建應(yīng)用程序的每個(gè)步驟,我們只需要按照“paint-by-numbers”一樣的方式去執(zhí)行就可以了(“paint-by-numbers”是一種繪畫方式,先在底稿上將圖片輪廓畫好,然后在圖上用數(shù)字標(biāo)好每一塊區(qū)域,最后只需要在每一塊區(qū)域中上色就可以了)。這樣即使看完了全書,也只能說明你可以遵循按部就班的指示罷了。但是,我想寫一本與眾不同的書。的確,我熱愛Ruby on Rails,并堅(jiān)信它是當(dāng)今最好的Web開發(fā)框架之一。Rails給我的開發(fā)工作帶來了許多快樂,也使我成為了一個(gè)更好的開發(fā)商。所以,當(dāng)有機(jī)會(huì)寫這本書的時(shí)候,我希望能寫一些可以使讀者同樣對(duì)Rails產(chǎn)生熱愛的東西。于是我重溫了當(dāng)前有關(guān)Rails的書籍,發(fā)現(xiàn)它們大致可以歸為以下幾類。起步介紹型:主要介紹Rails的結(jié)構(gòu)、約定習(xí)慣及特性。這樣的例子有《Beginning Rails: From Novice to Professional》(Jeffrey Allan Hardy,Cloves Carneiro Jr.及Hampton Catlin. Apress,2007),《Agile Web Development with Rails》(Dave Thomas,David Hansson,Leon Breedt和Mike Clark. Pragmatic Bookshelf,2006),甚至包括《Ruby on Rails for Dummies》(Barry Burd. For Dummies,2007)。單一項(xiàng)目型:這種書屬于填鴨式(就是把知識(shí)一味灌輸給學(xué)生)教育,主要讓讀者一步一步地跟著書上步驟來創(chuàng)建一個(gè)項(xiàng)目,例如用Ruby on Rails來創(chuàng)建一個(gè)社交網(wǎng)站或者電子商務(wù)網(wǎng)站。解決特定問題型:這些書主要針對(duì)于高級(jí)Rails開發(fā)商,并通過簡(jiǎn)短的代碼段來說明一些問題的解決方案,例如增加認(rèn)證控制功能等。參考書型:這類書也是針對(duì)于高級(jí)Rails開發(fā)商的,它對(duì)某一特性或者Rails開發(fā)的相關(guān)組件進(jìn)行了深入剖析,例如優(yōu)秀的《Ruby for Rails:Ruby Techniques for Rails Developers》(David Black. Manning Publication,2006),以及《Pro ActiveRecode:Databases with Ruby and Rails》(Kevin Marshall,Chad Pytel和Jon Yurek. Apress,2007)、《Deploying Rails Applications A Step-by-Step Guide》(Ezra Zygmuntowicz和Bruce Tat. Pragmatic Programmer,2007)等書。通常,我建議對(duì)學(xué)習(xí)Rails有興趣的人按照如上順序來閱讀相關(guān)書籍。由起步的Rails書籍開始,然后按照書上步驟去做一些項(xiàng)目,積累一些實(shí)際經(jīng)驗(yàn)。最后,再看些能夠進(jìn)一步加深認(rèn)識(shí)的書籍。這本書有什么不同在上面列舉的幾種書中,我相信讀者從項(xiàng)目型的書中獲得的Rails知識(shí)最多。但是,即使像Rails這么有意思的主題,這些書也會(huì)阻礙讀者的思維發(fā)散,最終只能一步一步按照書中的指示操作,而不是從中去拓展思路。當(dāng)然,我也不是要把這類書一棒子都打死,實(shí)際上我自己也閱讀了大量這類的書籍。我希望能讓讀者從一名Rails初學(xué)者盡快地成為一名有經(jīng)驗(yàn)的Rails開發(fā)商。我希望不只是教給讀者如何創(chuàng)建一個(gè)Rails應(yīng)用,而是教給讀者相關(guān)的實(shí)現(xiàn)方法和知識(shí),使得你可以自己來完成這一類項(xiàng)目的開發(fā),這樣你選擇這本書才算是物超所值。所以,本書不只是簡(jiǎn)單地向讀者介紹一個(gè)獨(dú)立應(yīng)用的創(chuàng)建過程,而是與讀者一起去完成多種類型的項(xiàng)目。書中所選的每一個(gè)項(xiàng)目不僅會(huì)讓讀者掌握Rails的核心特性(例如緩存和REST方式的路由),而且為了激發(fā)讀者的興趣,我們還對(duì)某些問題進(jìn)行了深入探討,其中的每一個(gè)項(xiàng)目都能很容易地?cái)U(kuò)展成單獨(dú)的一本書。學(xué)會(huì)獨(dú)立思考除此之外,我不僅沒有將每個(gè)項(xiàng)目擴(kuò)展成為一本獨(dú)立的書,用填鴨式的方法一步一步指導(dǎo)讀者,反而將每個(gè)項(xiàng)目的規(guī)模縮小了一些,僅向讀者提供了每個(gè)項(xiàng)目的原始版本。這樣不僅能夠保證項(xiàng)目可以成功運(yùn)行,而且讀者可以很容易地進(jìn)行修改和擴(kuò)展,以便使其更符合自己的需求。每當(dāng)描述這本書的時(shí)候,我都把它比喻成是在教別人學(xué)騎自行車。從這點(diǎn)來說,我的任務(wù)就是教會(huì)讀者如何上車和前進(jìn),然后讓讀者自己去學(xué)會(huì)如何掌握方向和平衡,直到學(xué)會(huì)騎自行車。在每一個(gè)項(xiàng)目的最后,我都設(shè)置了一些讀者需要去思考的問題。因?yàn)槲蚁嘈胖挥袑?shí)踐才是檢驗(yàn)真理的唯一標(biāo)準(zhǔn),所以我會(huì)在這個(gè)部分指出項(xiàng)目中一些不盡如人意的地方,來讓讀者進(jìn)行修改。另外,這里提出了一些非常有意思的見解,可能會(huì)使讀者從新的角度來看待項(xiàng)目。強(qiáng)烈建議讀者完成其中的每一個(gè)練習(xí),相信讀者能夠通過這些練習(xí)更好地拓展自己的思路。本書中不涉及的內(nèi)容當(dāng)然,撰寫這樣的一本書需要忍痛割舍掉很多想要涉及的內(nèi)容。如果我將這些內(nèi)容全部寫出來的話,這本書估計(jì)要有2000頁(yè)了(也許我還在寫呢)。因此,一些本書中無法涉及到而有讀者需要的內(nèi)容,只好放在以下這個(gè)部分跟讀者說明了。數(shù)據(jù)庫(kù)調(diào)優(yōu)和索引由于本書中不涉及到數(shù)據(jù)庫(kù)的調(diào)優(yōu)和索引,所以讀者可能會(huì)發(fā)現(xiàn),本書中的大多數(shù)項(xiàng)目都沒有在數(shù)據(jù)庫(kù)中建立任何索引。當(dāng)我們的數(shù)據(jù)庫(kù)數(shù)據(jù)量較小并且查詢語句相對(duì)簡(jiǎn)單的時(shí)候,這可能并沒有什么問題,但是當(dāng)數(shù)據(jù)庫(kù)與應(yīng)用程序隨著時(shí)間不斷增加的時(shí)候,這就可能導(dǎo)致嚴(yán)重的性能問題。也許因?yàn)槲沂菑臄?shù)據(jù)庫(kù)管理轉(zhuǎn)到Web開發(fā)上來的,所以我很難將這個(gè)重要的特性從本書中移除,但是這個(gè)問題實(shí)在是很復(fù)雜,也容不得我在這上面花費(fèi)過多的精力。也許將來我會(huì)再寫一本完全關(guān)于這個(gè)方面的書。測(cè)試在Rails社區(qū)中,測(cè)試驅(qū)動(dòng)開發(fā)(TDD,Test-driven development)顯然占有一席之地。雖然我還沒有先寫測(cè)試的習(xí)慣,但是我很清楚在部署應(yīng)用之前開發(fā)一個(gè)復(fù)雜的測(cè)試套件(Test Suit)的價(jià)值。我曾經(jīng)聽到有人說所有的程序都要經(jīng)過測(cè)試,問題是應(yīng)該由你自己來測(cè)試用例還是直接將程序交給你的用戶,讓他們來幫你進(jìn)行測(cè)試。重構(gòu)(Refactoring)伴隨一系列測(cè)試用例而來的,便是對(duì)代碼進(jìn)行重構(gòu)。由于每個(gè)項(xiàng)目還處于非常初始的演示階段,所以留給了代碼重構(gòu)很大的空間,以使代碼變得更干凈利落,可以優(yōu)化性能和減少代碼量。在每個(gè)項(xiàng)目的練習(xí)部分中,我都會(huì)為讀者指出通常進(jìn)行重構(gòu)和優(yōu)化的正確方向。
內(nèi)容概要
果你是一個(gè)已經(jīng)領(lǐng)略過Ruby on Rails威力的開發(fā)人員,又想進(jìn)一步提升Rails技能,本書對(duì)你而言將是無價(jià)之寶。本書的重點(diǎn)并不在于該框架的應(yīng)用基礎(chǔ),而是聚焦于帶你感受眾多真實(shí)案例的開發(fā)實(shí)踐,包括博客、個(gè)人備忘錄、日歷、一個(gè)由PHP移植為Rails的網(wǎng)站實(shí)例等。每一應(yīng)用實(shí)例均來自最佳實(shí)踐,包括類型、功能、多種Rails插件應(yīng)用、Rails引擎和Ruby Gem。同時(shí),也探討最先進(jìn)的Rails功能,諸如新的REST執(zhí)行和Active Resource。作為必要的回顧,本書在直接進(jìn)入項(xiàng)目實(shí)踐之前,先向讀者介紹了一個(gè)理想開發(fā)環(huán)境的建立。全書內(nèi)容包括:如何基于Windows、Mac OS X和Linux建立Rails;如何配合MySQL and SQLite數(shù)據(jù)庫(kù)使用Rails;如何合并最新插件、引擎和Ruby Gems到應(yīng)用中,以節(jié)省開發(fā)時(shí)間;如何使用Yahoo YUI輕松實(shí)現(xiàn)一致的應(yīng)用風(fēng)格;如何將PHP站點(diǎn)翻新為Rails;如何使用Ajax技術(shù)為應(yīng)用增色;如何使用最先進(jìn)的Rails功能,如REST和Active Resource。 本書適合程序開發(fā)人員參考學(xué)習(xí),還可以作為高等院校相關(guān)專業(yè)師生的參考書。
作者簡(jiǎn)介
Eldon Alameda,一名Web開發(fā)人員,現(xiàn)居住于氣候寒冷的堪薩斯州。他現(xiàn)在為堪薩斯市一家剛起步的小型科技公司開發(fā)Ruby on Rails應(yīng)用。在這之前,他在當(dāng)?shù)氐膹V告公司、Sprint PCS及IBM等多家公司從事過軟件開發(fā)工作。
書籍目錄
第1部分 必要的準(zhǔn)備工作(請(qǐng)不要跳過這一部分) 第1章 搭建開發(fā)環(huán)境 第2章 創(chuàng)建Rails應(yīng)用程序第2部分 Monkey Tasks日常任務(wù)管理 第3章 實(shí)現(xiàn)用戶注冊(cè)與認(rèn)證管理 第4章 實(shí)現(xiàn)日常待辦事項(xiàng)管理 第5章 完善Monkey Tasks第3部分 Exercisr應(yīng)用程序 第6章 開發(fā)基于REST的應(yīng)用程序 第7章 為應(yīng)用程序添加圖形功能 第8章 完善Exercisr第4部分 簡(jiǎn)單的博客程序 第9章 使用Typo創(chuàng)建博客程序 第10章 創(chuàng)建一個(gè)簡(jiǎn)單的博客引擎(Engine) 第11章 完善博客程序第5部分 使用緩存構(gòu)建一個(gè)Web漫畫站點(diǎn) 第12章 使用頁(yè)面緩存構(gòu)建基本的系統(tǒng) 第13章 實(shí)現(xiàn)高級(jí)緩存 第14章 完善Web漫畫站點(diǎn) 第6部分 教會(huì)社區(qū)網(wǎng)站 第15章 用戶和檔案管理 第16章 完善社區(qū)站點(diǎn) 第17章 完善教會(huì)社區(qū)應(yīng)用第7部分 GamingTrend網(wǎng)站 第18章 PHP網(wǎng)站的遺留問題 第19章 轉(zhuǎn)化游戲記錄 第20章 新聞管理功能 第21章 完善游戲網(wǎng)站第8部分 使用Edge Rails(Rails 2.0)集成REST應(yīng)用程序 第22章 Highrise的簡(jiǎn)要介紹 第23章 集成Highrise的REST API 第24章 創(chuàng)建預(yù)約程序 第25章 完善Rails 2.0應(yīng)用程序
章節(jié)摘錄
插圖:第1章 搭建開發(fā)環(huán)境Miracle Max:你催促一個(gè)制造奇跡的人,只能得到一個(gè)糟糕的奇跡?!訵illiam Goldman編劇的影片《公主新娘(The Princess Bride)》,1987年為了能夠運(yùn)行本書中的項(xiàng)目,首先需要保證在機(jī)器上已經(jīng)安裝了如下的軟件。Ruby和Rails:因?yàn)镽ails是一個(gè)針對(duì)于Ruby的框架,并且其自身也是使用Ruby編寫的,所以首先需要安裝Ruby。對(duì)于本書來說,Ruby的版本應(yīng)該在1.8.4以上。稍后我會(huì)講解一些如何快速并且正確安裝Ruby及Rails的方法。數(shù)據(jù)庫(kù)(Database):Rails框架是針對(duì)于創(chuàng)建基于數(shù)據(jù)庫(kù)驅(qū)動(dòng)(Database—driven)的Web應(yīng)用程序。因此如果沒有連接數(shù)據(jù)庫(kù)的話,這個(gè)框架很可能無法啟動(dòng)。稍后會(huì)討論開發(fā)中經(jīng)常會(huì)使用的幾種數(shù)據(jù)庫(kù)類型。代碼編輯器(Code Editor):雖然從Rails的開發(fā)理論上來說,只要使用文本編輯器(可以創(chuàng)建和修改文本文件)就足夠了,但是由于在實(shí)際中可能會(huì)牽扯到大量的文件,所以我們?cè)诤竺鏁?huì)介紹一些高級(jí)技巧,來幫助讀者提高開發(fā)的效率。Web服務(wù)器:再好的機(jī)器也需要借助Web Server才能運(yùn)行Rails程序。幸運(yùn)的是,現(xiàn)在已經(jīng)有幾種非常優(yōu)秀的、基于Ruby實(shí)現(xiàn)的服務(wù)器可以供我們選擇。1.1 安裝Ruby和Rails因?yàn)榭紤]到本書的大部分讀者可能已經(jīng)閱讀過一些入門的Rails書籍,所以我也不打算花費(fèi)太多的時(shí)問來講解如何安裝Rails。但是,又考慮到有些讀者的確需要了解這方面的內(nèi)容,所以我想至少還是應(yīng)該為他們指明一個(gè)正確的方向,以免有讀者在這個(gè)問題上無謂地浪費(fèi)精力和時(shí)間。因此在這個(gè)部分中,我會(huì)從一個(gè)更高層次的角度來介紹如何在Linux、Windows和Mac OSX上安裝Rails。如果讀者想?yún)⒖家槐救腴T級(jí)的Rails書籍,那么最好的選擇是《Agile Web Development with Rails》(Thomas,Dave et al. Pragmatic Programmers,2006)。
編輯推薦
《Rails項(xiàng)目實(shí)戰(zhàn)剖析與技巧大全》適合程序開發(fā)人員參考學(xué)習(xí),還可以作為高等院校相關(guān)專業(yè)師生的參考書。
圖書封面
圖書標(biāo)簽Tags
無
評(píng)論、評(píng)分、閱讀與下載
Rails項(xiàng)目實(shí)戰(zhàn)剖析與技巧大全 PDF格式下載