Python開發(fā)實戰(zhàn)介紹如何用Python開發(fā)科學(xué)計算的應(yīng)用程序,除了介紹數(shù)值計算之外,我們還將著重介紹如何制作交互式的2D、3D圖像;如何設(shè)計精巧的程序界面;如何和C語言所編寫的高速計算程序結(jié)合;如何編寫聲音、圖像處理算法.
《Python開發(fā)實戰(zhàn)》來自真正的開發(fā)現(xiàn)場,是BePROUD公司眾多極客在真實項目中的經(jīng)驗總結(jié)。
作者從Python的環(huán)境搭建講起,介紹了Web應(yīng)用開發(fā)方法、任務(wù)管理,以及評審、測試及高效部署、服務(wù)器調(diào)試等內(nèi)容,盡可能網(wǎng)羅了Python開發(fā)流程中所涉及的方方面面。在這里,Python僅僅是一個載體,很多知識點在非Python下也適用,這也是本書最大的特色所在。
《Python開發(fā)實戰(zhàn)》適合有一定基礎(chǔ)的Python開發(fā)者,以及使用PHP或Ruby進(jìn)行網(wǎng)頁開發(fā)的讀者閱讀。
Python開發(fā)實戰(zhàn)目錄
01開始使用Python
01.01Python環(huán)境搭建
01.01.01安裝apt軟件包
01.01.02easy_install與pip
01.01.03安裝virtualenv
01.01.04使用不同版本的Python
01.02Mercurial環(huán)境搭建
01.02.01Mercurial的簡介
01.02.02Mercurial的安裝
01.02.03代碼庫的建立
01.02.04文件的操作
01.03編輯器與方便的開發(fā)工具
01.03.01編輯器
01.03.02Python開發(fā)小貼士
01.04本章小結(jié)
02開發(fā)Web應(yīng)用程序
02.01了解Web應(yīng)用程序
02.01.01什么是Web應(yīng)用程序
02.01.02Web應(yīng)用程序與桌面應(yīng)用程序的不同
02.01.03Web應(yīng)用程序的機(jī)制
02.02Web應(yīng)用程序開發(fā)的事前準(zhǔn)備
02.02.01關(guān)于Flask
02.02.02Flask的安裝
02.03Web應(yīng)用程序的開發(fā)流程
02.04明確需要開發(fā)的目標(biāo)系統(tǒng)
02.04.01留言簿應(yīng)用程序的需求
02.04.02明確必要的功能
02.04.03明確頁面的表現(xiàn)形式
02.05頁面設(shè)計
02.05.01頁面設(shè)計草圖
02.05.02設(shè)計HTML和CSS
02.06后臺功能的開發(fā)
02.06.01保存評論數(shù)據(jù)
02.06.02取出保存過的評論數(shù)據(jù)
02.06.03使用模板引擎顯示頁面
02.06.04準(zhǔn)備評論的目標(biāo)URL地址
02.06.05調(diào)整模板輸出
02.07功能驗證
02.08本章小結(jié)
第二部分團(tuán)隊開發(fā)的周期和流程
03準(zhǔn)備團(tuán)隊開發(fā)環(huán)境
03.01在公共服務(wù)器上建立用戶、設(shè)置權(quán)限
03.01.01用戶與用戶組的建立
03.01.02sudoers
03.01.03virtualenv
03.02問題跟蹤系統(tǒng)
03.02.01Trac
03.02.02安裝Trac
03.03版本控制系統(tǒng)
03.04有利于團(tuán)隊開發(fā)的工具
03.04.01Skype
03.04.02DropBox
03.04.03GoogleDocs
03.05本章小結(jié)
04編寫開發(fā)文檔的準(zhǔn)備
04.01編寫項目開發(fā)文檔
04.01.01在寫文檔時,我們不想做什么工作
04.01.02愿意在什么樣的條件下編寫文檔
04.02Sphinx的基礎(chǔ)與安裝
04.02.01Sphinx的安裝
04.02.02reStructuredText入門
04.02.03使用Sphinx編寫結(jié)構(gòu)化文檔的流程
04.02.04Sphinx的擴(kuò)展
04.03引入Sphinx后解決的問題與新的問題
04.03.01采用純文本,可使用一般的編輯器來寫文檔
04.03.02內(nèi)容與形式分離,不關(guān)注文檔形式而專注于內(nèi)容的編寫
04.03.03不僅僅是PDF,通過一個源可以輸出多種格式
04.03.04將文檔分割成多個文件編輯,進(jìn)行結(jié)構(gòu)化處理
04.03.05通過Mercurial進(jìn)行簡單的版本控制
04.03.06將API參考手冊和對應(yīng)程序協(xié)同管理
04.03.07一般文檔可通過Web瀏覽器共享
04.03.08Sphinx引入后仍需探討的問題
04.04文檔集合的創(chuàng)建與利用
04.04.01什么是文檔集合
04.04.02項目中必不可少的文檔列表
04.04.03面向團(tuán)隊領(lǐng)導(dǎo)、經(jīng)理
04.04.04面向設(shè)計人員
04.04.05面向開發(fā)人員
04.04.06面向用戶
04.05本章小結(jié)
05問題跟蹤與評審
05.01任務(wù)管理與ticket驅(qū)動開發(fā)
05.01.01開始寫代碼……在這之前還是先創(chuàng)建一個ticket
05.01.02創(chuàng)建和ticket編號一致的分支
05.01.03讓版本發(fā)布與分支對應(yīng)
05.01.04分支的合并
05.01.05整理ticket信息
05.01.06ticket的分割
05.02評審
05.02.01為什么需要評審
05.02.02作為被評審人:代碼評審篇
05.02.03作為被評審人:工作評審篇
05.02.04作為評審人:代碼評審篇
05.02.05作為評審人:工作評審篇
05.03本章小結(jié)
06模塊的分割設(shè)計與單元測試
06.01模塊分割設(shè)計方法
06.01.01功能設(shè)計
06.01.02Web應(yīng)用程序的構(gòu)成組件
06.01.03組件設(shè)計
06.01.04模塊與包
06.02測試
06.02.01測試的種類
06.02.02編寫單元測試
06.02.03從單元測試中去除環(huán)境依賴
06.02.04使用WebTest進(jìn)行功能測試
06.03從測試來改善設(shè)計
06.04邁向測試執(zhí)行的自動化
06.04.01測試環(huán)境的自動生成
06.04.02可以反復(fù)執(zhí)行的測試環(huán)境
06.05本章小結(jié)
07打包與自動建立環(huán)境
07.01源代碼打包與發(fā)布自動化
07.01.01打包
07.01.02程序包的自動化發(fā)布
07.01.03向PyPI注冊程序包
07.01.04向PyPI上傳程序包
07.01.05書寫程序包的使用說明
07.02安裝與環(huán)境關(guān)聯(lián)庫的介紹
07.02.01Distribute
07.02.02pip
07.02.03virtualenv
07.03應(yīng)用環(huán)境自動構(gòu)建所必備的功能與工具
07.03.01準(zhǔn)備獨立的Python環(huán)境
07.03.02Python庫的程序包化以及標(biāo)準(zhǔn)安裝
07.03.03鎖定應(yīng)用環(huán)境的程序包版本
07.03.04整個環(huán)境可以離線安裝
07.03.05重建環(huán)境時可以復(fù)用緩存
07.03.06使用編譯好的二進(jìn)制模塊
07.03.07當(dāng)PyPI宕機(jī)或高峰時,有備用服務(wù)器
07.04自動應(yīng)用環(huán)境構(gòu)建
07.04.01開始
07.04.02構(gòu)建初始環(huán)境
07.04.03包含源代碼的應(yīng)用環(huán)境
07.04.04在部署環(huán)境中的離線安裝
07.04.05安裝部署需要二進(jìn)制編譯的程序包
07.05公司內(nèi)部共享專用庫
07.05.01在多個項目間共享代碼的方法
07.05.02自動建立非公開程序包的應(yīng)用環(huán)境
07.06本章小結(jié)
08使用Mercurial管理源代碼
08.01Mercurial的代碼庫管理與配置
08.01.01在服務(wù)器上設(shè)置UNIX用戶與用戶組
08.01.02設(shè)置umask值
08.01.03創(chuàng)建代碼庫
08.01.04配置hgrc
08.01.05使用配置后的代碼庫
08.01.06使用hgweb作為簡易的中央代碼庫
08.02靈活使用鉤子功能
08.02.01鉤子功能的設(shè)置方法
08.02.02使用鉤子腳本
08.02.03鉤子事件
08.02.04鉤子執(zhí)行的時機(jī)
08.02.05編寫鉤子腳本
08.03分支操作
08.04分支間的合并
08.04.01沒有沖突的合并
08.04.02用文本編輯器消除合并沖突
08.04.03合并的模式與沖突的種類
08.04.04使用圖形界面合并的方法
08.05GUI客戶端
08.05.01GUI客戶端的介紹
08.05.02GUI客戶端的優(yōu)點
08.05.03GUI客戶端的缺點
08.05.04hgwebcommit
08.06考慮實際運用而產(chǎn)生的BPMercurialW/F
08.06.01概要
08.06.02背景
08.06.03代碼庫的構(gòu)成
08.06.04源代碼提交
08.06.05設(shè)計師的提交操作
08.06.06分支的合并
08.06.07集成分支
08.07本章小結(jié)
09使用Jenkins持續(xù)集成
09.01什么是持續(xù)集成
09.01.01關(guān)于持續(xù)集成
09.01.02關(guān)于Jenkins
09.02Jenkins的安裝
09.02.01安裝Java
09.02.02安裝Jenkins主體程序
09.02.03本章用到的Jenkins插件
09.03執(zhí)行測試代碼
09.03.01簡單測試代碼的示例
09.03.02注冊作業(yè)
09.03.03作業(yè)執(zhí)行成功與失敗
09.04測試結(jié)果通過報表輸出
09.04.01安裝nose
09.04.02調(diào)用nosetests命令
09.04.03為使用nose修改Jenkins配置
09.05展示代碼覆蓋率報告
09.05.01coverage的安裝
09.05.02coverage命令的概述:分為"統(tǒng)計"和"輸出"兩步
09.05.03通過nose執(zhí)行coverage
09.05.04讀取代碼覆蓋率的報告
09.06執(zhí)行Django測試
09.06.01Django模塊的安裝
09.06.02Django的安裝
09.06.03樣本代碼
09.06.04Jenkins的創(chuàng)建
09.06.05"構(gòu)建后處理"部分的配置
09.07通過Jenkins構(gòu)建文檔
09.07.01Sphinx的安裝
09.07.02配置Jenkins作業(yè)的注冊信息
09.07.03Sphinx的構(gòu)建在出現(xiàn)告警時作業(yè)失敗
09.07.04查閱編譯成果
09.07.05使用TaskScannerPlugin管理TODO信息
09.07.06TaskScannerPlugin的配置示例
09.08進(jìn)一步靈活使用Jenkins
09.08.01便捷的功能
09.08.02進(jìn)一步的改善
09.09本章小結(jié)
第三部分服務(wù)的公開
10自動構(gòu)建和部署環(huán)境
10.01安裝與配置具有依賴關(guān)系的程序包
10.01.01創(chuàng)建操作用戶
10.01.02列舉必要的程序包
10.01.03封閉環(huán)境的安裝
10.01.04應(yīng)用程序的配置
10.01.05環(huán)境驗證
10.02整理部署的操作步驟
10.02.01賦予代碼庫訪問權(quán)限
10.02.02克隆源代碼庫
10.02.03部署方法總結(jié)
10.03使用Fabric將操作步驟自動化
10.03.01什么是Fabric
10.03.02安裝與環(huán)境配置
10.03.03編寫簡單的腳本
10.03.04參考步驟說明書進(jìn)行自動化
10.03.05驗證執(zhí)行行為
10.03.06添加注釋
10.04本章小結(jié)
11改善應(yīng)用程序的性能
11.01Web應(yīng)用程序的性能
11.01.01Web應(yīng)用遭遇大量請求時會如何
11.01.02高負(fù)載時的對策
11.02留言簿應(yīng)用程序的性能測試
11.02.01什么是應(yīng)用程序的性能
11.02.02ApacheBench的安裝
11.02.03使用ApacheBench檢測性能
11.03關(guān)于gunicorn
11.03.01gunicorn的安裝
11.03.02使用gunicorn運行應(yīng)用程序
11.04關(guān)于nginx
11.04.01nginx的安裝
11.04.02nginx的性能測試
11.05使用nginx和gunicorn共同承載應(yīng)用程序
11.05.01gunicorn的配置
11.05.02nginx的配置
11.05.03測定nginx+gunicorn組合的性能
11.05.04性能的比較
11.06本章小結(jié)
12GoogleAppEngine
12.01關(guān)于AppEngine
12.01.01什么是AppEngine
12.01.02AppEngine的優(yōu)點
12.01.03AppEngine平臺的局限性
12.01.04使用案例
12.02AppEngine的主要功能
12.02.01數(shù)據(jù)存儲
12.02.02自動擴(kuò)展與負(fù)載分散
12.02.03在AppEngine中的Python運行環(huán)境
12.03AppEngine的開發(fā)準(zhǔn)備工作與步驟確認(rèn)
12.03.01獲取賬號并開發(fā)程序
12.03.02創(chuàng)建SDK
12.03.03開發(fā)簡單的應(yīng)用程序
12.03.04部署
12.04在AppEngine中開發(fā)Flask的應(yīng)用程序
12.04.01使已有的應(yīng)用程序運行
12.04.02部署并運行
12.04.03管理終端
12.05調(diào)整:改善應(yīng)用程序性能
12.05.01根據(jù)Appstats進(jìn)行性能測試
12.05.02使用多線程來處理
12.06性能調(diào)優(yōu):減少計費額
12.06.01與計費有關(guān)的配置
12.06.02計費表
12.06.03節(jié)約實例的數(shù)量
12.06.04減少數(shù)據(jù)存儲的操作
12.07測試
12.07.01在測試代碼內(nèi)使用API
12.07.02測試的執(zhí)行
12.07.03在真實服務(wù)器上測試
12.08本章小結(jié)
第四部分加速開發(fā)的技術(shù)
13測試是不可分割的一部分
13.01認(rèn)清測試現(xiàn)狀
13.02在開發(fā)的各個階段引入測試工作
13.02.01文檔的測試(文檔評審)
13.02.02編寫測試的方法(輸入與輸出)
13.02.03測試的執(zhí)行與測試階段的輪換(把什么工作做到什么程度)
13.03本章小結(jié):對測試不要抱有恐懼
14便捷地使用Django
14.01什么是Django
14.01.01Django的安裝
14.01.02Django的架構(gòu)
14.01.03Django的文檔
14.02讓數(shù)據(jù)庫的集成更加方便
14.02.01什么是數(shù)據(jù)庫的集成
14.02.02默認(rèn)情況下Django能做什么
14.02.03對,就是它,使用South就能夠做到
14.03使用fixturereplacement使測試更加方便
14.03.01什么是測試配置器(fixture)
14.03.02默認(rèn)測試配置器的不便之處
14.03.03使用factory_boy
14.04使調(diào)試更加方便
14.05本章小結(jié)
15使用方便的Python模塊
15.01簡化日期計算的模塊
15.01.01日期計算的復(fù)雜之處
15.01.02引入dateutil
15.02簡化模型映射的模塊
15.02.01必須進(jìn)行模型映射的理由
15.02.02映射規(guī)則的構(gòu)造與復(fù)用
15.02.03導(dǎo)入bpmappers模塊
15.02.04與Django的聯(lián)動
15.02.05編寫JSONAPI
15.03判斷字符的編碼
15.04RSS閱讀訂閱的解析模塊
15.04.01導(dǎo)入feedparser模塊
15.04.02使用feedparser解析RSS閱讀訂閱信息
15.05圖像處理模塊
15.05.01安裝PIL模塊
15.05.02轉(zhuǎn)換圖像格式
15.05.03調(diào)整圖像的尺寸
15.05.04截取圖像的某個部分
15.05.05圖像的過濾處理
15.06數(shù)據(jù)的加密處理模塊
15.06.01PyCrypto的安裝
15.06.02共同密鑰的加密與解密
15.06.03公開密鑰方式的加密與解密
15.07調(diào)用Twitter的API模塊
15.07.01導(dǎo)入tweepy模塊
15.07.02應(yīng)用程序的登錄域和ConsumerKey的獲取
15.07.03獲得AccessToken
15.07.04調(diào)用TwitterAPI
15.07.05開發(fā)使用Twitter認(rèn)證的應(yīng)用程序
15.08本章小結(jié)
附錄A建立VirtualBox環(huán)境
附錄B建立操作系統(tǒng)環(huán)境
- PC官方版
- 安卓官方手機(jī)版
- IOS官方手機(jī)版