ThoughtWorks高級諮詢師最新力作
學習輕量級、最新的Web開發方法
輕量級Web開發是一個很廣的主題,開發人員經常提到,但卻少有人能夠講明它的內涵。
好的程式設計師 就是從基礎開始,作業系統、工具、開發環境、程式語言、測試架構、資料庫、雲端平台等,如果都做到了輕量級,整個程式自然就執行飛快,測試容易,錯誤變少,維護方便。
本書將教會你如何將一個想法變成實際的Web應用。從高效的程式設計工具、開發流程,到敏捷開發中的各種輕量級實踐,再從零開始開發一個具體而微的實例。
■ 使用Mac OS作為開發作業系統:既能享受Windows的方便,又是原生UNIX
■ 用zsh取代bash,少打很多字,少用很多cd到處找
■ 用vim不用普通的文字編輯,所有和文字有關的事,手都不需離開鍵 盤
■ 用Ruby作為網頁語言,天生的Web DNA,非傳統程式思考方式
■ 用Bootstrap/Foundation作為樣式框架,又漂亮又簡單
適用:軟體開發人員、對輕量級Web開發感興趣者。
作者簡介:
邱俊濤
軟體工程師,現就職於ThoughtWorks,喜歡程式設計,尤其喜歡程式設計帶來的成就感。對動態語言,函數式程式設計等有濃厚的興趣。
喜歡開源軟體,喜歡知識分享,並從他人的分享中學習。崇尚簡單,輕量的設計和模式。
各界推薦
名人推薦:
推薦序
進入雲端時代後,硬體也從原子變成位元,使得用程式的描述方式進行軟體開發,轉變成更下層的平台建置、運維管理、甚至是硬體控制都成為可行。從前層次分明的程式設計師、運維工程師、伺服器/ 網路管理工程師之間的界限越來越重疊,這也使得程式設計師不得不跨足到Opeartion 這一塊,這也是DevOp 這一個工作興起的原因。
當程式設計師跨足到運維時,最大的優點就是利用程式設計師的邏輯,但光有邏輯還不夠,能層層架疊的Stack,讓每一個層次能不互相依賴,最大的功臣就是每一個層次所架起Stack 的抽象化,而抽象化要真正能實作,就是層次功能的輕量化。
輕量化是目前資訊業的趨勢,就以純位元的架構來說,當Docker 取代了虛
擬化成為資源佈署的單位,當Heroku、Google App Engines 取代了傳統的
Platform 之後,上層的程式也開始流行輕量化。用JSON 表示資料,用快而輕的編譯器、這些都再再顯示我們已經習慣用更小的積木來堆成巨大的產品,當然這些積木本身已經設計十分精良,足以承受非常大的任務。
開發語言本身也有輕重之分。從前一直流行的LAMP 架構,在面對輕量化的趨勢,慢慢也讓工程師有點頭痛。Ruby 一直是目前主流網站使用的語言,快速架設及快速原型,讓工程師能專心在程式的邏輯而非瑣事,自然成為主流。
但本書最大的特色,對我來說反而不是用什麼軟體或是什麼設計,而是作者極嚴謹的思考習慣。從系統選擇(Windows 還是Mac ?)、shell 選擇(使用了zsh 而非預設的bash)、工具選擇(vim 或sublime text)開始,每一個步驟都為接下的開發打下最好的基礎。有了這個嚴謹的思考習慣,以及什麼事都要做到最方便的原則之下,接下來的Sinatra、Rake、Jenkins、以及自動化的Chef(筆者本身則是更愛Ansible),就順理成章了。
一個好的程式設計師,不是一天能產生多少行的程式碼,而是這個程式碼真的有沒有寫到最符合需要。當你在每一個細節都非常非常苛求時,相信你最後完工的程式碼也會具有相當的品質。這本難得的好書,真的在每一方面都做到了,著實不容易。
胡嘉璽
名人推薦:推薦序
進入雲端時代後,硬體也從原子變成位元,使得用程式的描述方式進行軟體開發,轉變成更下層的平台建置、運維管理、甚至是硬體控制都成為可行。從前層次分明的程式設計師、運維工程師、伺服器/ 網路管理工程師之間的界限越來越重疊,這也使得程式設計師不得不跨足到Opeartion 這一塊,這也是DevOp 這一個工作興起的原因。
當程式設計師跨足到運維時,最大的優點就是利用程式設計師的邏輯,但光有邏輯還不夠,能層層架疊的Stack,讓每一個層次能不互相依賴,最大的功臣就是每一個層次所架起Stack 的抽象化,而抽象化要真正...
目錄
前言
第1 章 環境設定與工具準備
1.1 Shell
1.2 管線
1.3 幾個常用指令
1.4 編輯器
1.5 程式啟動器
1.6 關於Windows
第2 章Web 應用伺服器
2.1 Rack
2.2 Sinatra
2.3 Grape
第3 章 資料庫存取層
3.1 資料庫的存取
3.2 資料庫結構(schema)的修改
3.3 ActiveRecord
3.4 DataMapper
第4 章 用戶端架構
4.1 豐富型使用者端
4.2 Backbone.js 簡介
4.3 Angular.js
第5 章 CSS 架構簡介
5.1 Foundation 簡介
5.2 BootStrap 簡介
第6 章 用戶端測試架構
6.1 Jasmine 簡介
6.2 Mocha
第7 章 現代的前端開發方式
7.1 Karma 簡介
7.2 前端相依管理
7.3 架設專案
7.4 測試驅動開發
7.5 實例Todoify
第8 章 撰寫更容易維護的JavaScript 程式
8.1 應用實例
8.2 重構:更容易測試的程式
8.3 重點分離:另一種實現方式
第9 章 本機建置
9.1 Ruby 中的建置
9.2 JavaScript 中的建置
第10 章 持續整合
10.1 環境架設
10.2 持續整合伺服器
10.3 與Github 整合
第11 章 單元測試與整合測試
11.1 RSpec 單元測試
11.2 整合測試工具Selenium
11.3 架設Selenium 獨立環境
第12 章 環境架設的自動化
12.1 自動化工具Chef
12.2 安裝nginx 伺服器
第13 章 應用程式發佈
13.1 使用Heroku 發佈應用程式
13.2 發佈到虛擬機器環境
13.3 伺服器典型設定
第14 章 範例:植物世界(前端)
14.1 線框圖
14.2 搜索結果頁面
14.3 詳細資訊頁面
14.4 加入JavaScript
第15 章範例:植物世界(後台)
15.1 第一個重疊過程
15.2 發佈到Heroku
15.3 更進一步
第16 章 範例:植物世界(整合)
16.1 發佈
16.2 增加圖片
16.3 新的問題
16.4 檔案儲存
Appendix A Web 運行原理
A.1 CGI 的相關背景
A.2 設定Apache 支援CGI
A.3 更進一步
A.4 一個稍微有用的指令稿
A.5 更進一步FastCGI
Appendix B Angular.js 的測試
B.1 測試Controller
B.2 測試Service
前言
第1 章 環境設定與工具準備
1.1 Shell
1.2 管線
1.3 幾個常用指令
1.4 編輯器
1.5 程式啟動器
1.6 關於Windows
第2 章Web 應用伺服器
2.1 Rack
2.2 Sinatra
2.3 Grape
第3 章 資料庫存取層
3.1 資料庫的存取
3.2 資料庫結構(schema)的修改
3.3 ActiveRecord
3.4 DataMapper
第4 章 用戶端架構
4.1 豐富型使用者端
4.2 Backbone.js 簡介
4.3 Angular.js
第5 章 CSS 架構簡介
5.1 Foundation 簡介
5.2 BootStrap 簡介
第6 章 用戶端測試架構
6.1 Jasmine 簡介
6.2 Mocha
第7 章 現代的前端開發方式
...