Python開發實戰pdf

圖書網
圖書網
圖書網
10540
文章
1402
評論
2018年1月9日09:44:48 評論 761
摘要

真實項目中的經驗總結
行業精英們的智慧結晶
團隊開發環境的搭建與管理 / ticket驅動開發 / 源代碼管理(Mercurial) / PyPI包 / Jenkins持續集成 / 性能優化(nginx與gunicorn) / GAE開發 / Django框架……
《Python開發實戰》來自真正的開發現場,是BePROUD公司眾多極客在真實項目中的經驗總結。

Python開發實戰 內容簡介

《Python開發實戰》來自真正的開發現場,是BePROUD公司眾多極客在真實項目中的經驗總結。

作者從Python的環境搭建講起,介紹了Web應用開發方法、任務管理,以及評審、測試及高效部署、服務器調試等內容,盡可能網羅了Python開發流程中所涉及的方方面面。在這里,Python僅僅是一個載體,很多知識點在非Python下也適用,這也是本書大的特色所在。

《Python開發實戰》適合有一定基礎的Python開發者,以及使用PHP或Ruby進行網頁開發的讀者閱讀。

Python開發實戰 目錄

第一部分 使用Python開發

01 開始使用Python  2

01.01 Python環境搭建  2

01.01.01 安裝apt軟件包  2

01.01.02 easy_install 與pip  3

01.01.03 安裝virtualenv  4

01.01.04 使用不同版本的Python  9

01.02 Mercurial環境搭建  12

01.02.01 Mercurial的簡介  12

01.02.02 Mercurial的安裝  12

01.02.03 代碼庫的建立  13

01.02.04 文件的操作  14

01.03 編輯器與方便的開發工具  17

01.03.01 編輯器  17

01.03.02 Python開發小貼士  19

01.04 本章小結  22

02 開發Web應用程序  23

02.01 了解Web應用程序  23

02.01.01 什么是Web應用程序  23

02.01.02 Web應用程序與桌面應用程序的不同  24

02.01.03 Web應用程序的機制  24

02.02 Web應用程序開發的事前準備  27

02.02.01 關于Flask  27

02.02.02 Flask的安裝  27

02.03 Web應用程序的開發流程  28

02.04 明確需要開發的目標系統  28

02.04.01 留言簿應用程序的需求  28

02.04.02 明確必要的功能  29

02.04.03 明確頁面的表現形式  29

02.05 頁面設計  29

02.05.01 頁面設計草圖  30

02.05.02 設計HTML和CSS  30

02.06 后臺功能的開發  35

02.06.01 保存評論數據  35

02.06.02 取出保存過的評論數據  36

02.06.03 使用模板引擎顯示頁面  37

02.06.04 準備評論的目標URL地址  39

02.06.05 調整模板輸出  40

02.07 功能驗證  41

02.08 本章小結  42

第二部分 團隊開發的周期和流程

03 準備團隊開發環境  46

03.01 在公共服務器上建立用戶、設置權限  46

03.01.01 用戶與用戶組的建立  46

03.01.02 sudoers  46

03.01.03 virtualenv  47

03.02 問題跟蹤系統  47

03.02.01 Trac  48

03.02.02 安裝Trac  48

03.03 版本控制系統  51

03.04 有利于團隊開發的工具  52

03.04.01 Skype  52

03.04.02 DropBox  53

03.04.03 Google Docs  54

03.05 本章小結  54

04 編寫開發文檔的準備  55

04.01 編寫項目開發文檔  55

04.01.01 在寫文檔時,我們不想做什么工作  55

04.01.02 愿意在什么樣的條件下編寫文檔  57

04.02 Sphinx的基礎與安裝  58

04.02.01 Sphinx的安裝  58

04.02.02 reStructuredText入門  60

04.02.03 使用Sphinx編寫結構化文檔的流程  61

04.02.04 Sphinx的擴展  66

04.03 引入Sphinx后解決的問題與新的問題  67

04.03.01 采用純文本,可使用一般的編輯器來寫文檔  67

04.03.02 內容與形式分離,不關注文檔形式而專注于內容的編寫  68

04.03.03 不僅僅是PDF,通過一個源可以輸出多種格式  71

04.03.04 將文檔分割成多個文件編輯,進行結構化處理  72

04.03.05 通過Mercurial進行簡單的版本控制  73

04.03.06 將API參考手冊和對應程序協同管理  73

04.03.07 一般文檔可通過Web瀏覽器共享  76

04.03.08 Sphinx引入后仍需探討的問題  76

04.04 文檔集合的創建與利用  77

04.04.01 什么是文檔集合  78

04.04.02 項目中必不可少的文檔列表  78

04.04.03 面向團隊領導、經理  79

04.04.04 面向設計人員  80

04.04.05 面向開發人員  80

04.04.06 面向用戶  81

04.05 本章小結  81

05 問題跟蹤與評審  82

05.01 任務管理與ticket驅動開發  82

05.01.01 開始寫代碼……在這之前還是先創建一個ticket  82

05.01.02 創建和ticket編號一致的分支  83

05.01.03 讓版本發布與分支對應  84

05.01.04 分支的合并  84

05.01.05 整理ticket信息  86

05.01.06 ticket 的分割  86

05.02 評審  87

05.02.01 為什么需要評審  87

05.02.02 作為被評審人:代碼評審篇  87

05.02.03 作為被評審人:工作評審篇  88

05.02.04 作為評審人:代碼評審篇  89

05.02.05 作為評審人:工作評審篇  92

05.03 本章小結  92

06 模塊的分割設計與單元測試  93

06.01 模塊分割設計方法  93

06.01.01 功能設計  93

06.01.02 Web應用程序的構成組件  94

06.01.03 組件設計  96

06.01.04 模塊與包  97

06.02 測試  99

06.02.01 測試的種類  99

06.02.02 編寫單元測試  101

06.02.03 從單元測試中去除環境依賴  109

06.02.04 使用WebTest進行功能測試  114

06.03 從測試來改善設計  118

06.04 邁向測試執行的自動化  120

06.04.01 測試環境的自動生成  120

06.04.02 可以反復執行的測試環境  121

06.05 本章小結  121

07 打包與自動建立環境  122

07.01 源代碼打包與發布自動化  123

07.01.01 打包  123

07.01.02 程序包的自動化發布  127

07.01.03 向PyPI注冊程序包  128

07.01.04 向PyPI上傳程序包  128

07.01.05 書寫程序包的使用說明  129

07.02 安裝與環境關聯庫的介紹  131

07.02.01 Distribute  132

07.02.02 pip  133

07.02.03 virtualenv  134

07.03 應用環境自動構建所必備的功能與工具  135

07.03.01 準備獨立的Python環境  135

07.03.02 Python庫的程序包化以及標準安裝  136

07.03.03 鎖定應用環境的程序包版本  136

07.03.04 整個環境可以離線安裝  136

07.03.05 重建環境時可以復用緩存  137

07.03.06 使用編譯好的二進制模塊  138

07.03.07 當PyPI宕機或高峰時,有備用服務器  138

07.04 自動應用環境構建  140

07.04.01 開始  140

07.04.02 構建初始環境  140

07.04.03 包含源代碼的應用環境  141

07.04.04 在部署環境中的離線安裝  143

07.04.05 安裝部署需要二進制編譯的程序包  144

07.05 公司內部共享專用庫  144

07.05.01 在多個項目間共享代碼的方法  145

07.05.02 自動建立非公開程序包的應用環境  149

07.06 本章小結  152

08 使用Mercurial管理源代碼  153

08.01 Mercurial的代碼庫管理與配置  153

08.01.01 在服務器上設置UNIX用戶與用戶組  153

08.01.02 設置umask值  154

08.01.03 創建代碼庫  154

08.01.04 配置hgrc  155

08.01.05 使用配置后的代碼庫  155

08.01.06 使用hgweb作為簡易的中央代碼庫  155

08.02 靈活使用鉤子功能  156

08.02.01 鉤子功能的設置方法  157

08.02.02 使用鉤子腳本  157

08.02.03 鉤子事件  157

08.02.04 鉤子執行的時機  159

08.02.05 編寫鉤子腳本  161

08.03 分支操作  164

08.04 分支間的合并  165

08.04.01 沒有沖突的合并  165

08.04.02 用文本編輯器消除合并沖突  167

08.04.03 合并的模式與沖突的種類  169

08.04.04 使用圖形界面合并的方法  170

08.05 GUI客戶端  173

08.05.01 GUI客戶端的介紹  173

08.05.02 GUI客戶端的優點  176

08.05.03 GUI客戶端的缺點  179

08.05.04 hgwebcommit  180

08.06 考慮實際運用而產生的BP Mercurial W/F  182

08.06.01 概要  182

08.06.02 背景  183

08.06.03 代碼庫的構成  183

08.06.04 源代碼提交  184

08.06.05 設計師的提交操作  186

08.06.06 分支的合并  187

08.06.07 集成分支  188

08.07 本章小結  189

09 使用Jenkins持續集成  192

09.01 什么是持續集成  192

09.01.01 關于持續集成  192

09.01.02 關于Jenkins  194

09.02 Jenkins的安裝  194

09.02.01 安裝Java  194

09.02.02 安裝Jenkins主體程序  194

09.02.03 本章用到的Jenkins插件  195

09.03 執行測試代碼  195

09.03.01 簡單測試代碼的示例  195

09.03.02 注冊作業  196

09.03.03 作業執行成功與失敗  198

09.04 測試結果通過報表輸出  199

09.04.01 安裝nose  199

09.04.02 調用nosetests命令  199

09.04.03 為使用nose修改Jenkins配置  200

09.05 展示代碼覆蓋率報告  201

09.05.01 coverage的安裝  201

09.05.02 coverage命令的概述:分為“統計”和“輸出”兩步  201

09.05.03 通過nose執行coverage  201

09.05.04 讀取代碼覆蓋率的報告  202

09.06 執行Django測試  204

09.06.01 Django模塊的安裝  204

09.06.02 Django的安裝  204

09.06.03 樣本代碼  205

09.06.04 Jenkins的創建  208

09.06.05 “構建后處理”部分的配置  210

09.07 通過Jenkins構建文檔  212

09.07.01 Sphinx的安裝  212

09.07.02 配置Jenkins作業的注冊信息  212

09.07.03 Sphinx的構建在出現告警時作業失敗  213

09.07.04 查閱編譯成果  214

09.07.05  使用Task Scanner Plugin管理TODO信息  215

09.07.06 Task Scanner Plugin的配置示例  216

09.08 進一步靈活使用Jenkins  216

09.08.01 便捷的功能  216

09.08.02 進一步的改善  218

09.09 本章小結  219

第三部分 服務的公開

10 自動構建和部署環境  222

10.01 安裝與配置具有依賴關系的程序包  222

10.01.01 創建操作用戶  223

10.01.02 列舉必要的程序包  224

10.01.03 封閉環境的安裝  226

10.01.04 應用程序的配置  228

10.01.05 環境驗證  231

10.02 整理部署的操作步驟  231

10.02.01 賦予代碼庫訪問權限  232

10.02.02 克隆源代碼庫  232

10.02.03 部署方法總結  232

10.03 使用Fabric將操作步驟自動化  233

10.03.01 什么是Fabric  233

10.03.02 安裝與環境配置  233

10.03.03 編寫簡單的腳本  234

10.03.04 參考步驟說明書進行自動化  234

10.03.05 驗證執行行為  238

10.03.06 添加注釋  238

10.04 本章小結  239

11 改善應用程序的性能  240

11.01 Web應用程序的性能  240

11.01.01 Web應用遭遇大量請求時會如何  240

11.01.02 高負載時的對策  241

11.02 留言簿應用程序的性能測試  242

11.02.01 什么是應用程序的性能  242

11.02.02 ApacheBench的安裝  242

11.02.03 使用ApacheBench檢測性能  242

11.03 關于gunicorn  245

11.03.01 gunicorn的安裝  245

11.03.02 使用gunicorn運行應用程序  245

11.04 關于nginx  247

11.04.01 nginx的安裝  248

11.04.02 nginx的性能測試  248

11.05 使用nginx和gunicorn共同承載應用程序  250

11.05.01 gunicorn的配置  250

11.05.02 nginx的配置  251

11.05.03 測定nginx+gunicorn組合的性能  251

11.05.04 性能的比較  252

11.06 本章小結  253

12 Google App Engine  254

12.01 關于App Engine  254

12.01.01 什么是App Engine  254

12.01.02 App Engine的優點  255

12.01.03 App Engine平臺的局限性  255

12.01.04 使用案例  256

12.02 App Engine的主要功能  256

12.02.01 數據存儲  256

12.02.02 自動擴展與負載分散  257

12.02.03 在App Engine中的Python運行環境  259

12.03 App Engine的開發準備工作與步驟確認  260

12.03.01 獲取賬號并開發程序  260

12.03.02 創建SDK  263

12.03.03 開發簡單的應用程序  264

12.03.04 部署  266

12.04 在App Engine中開發Flask的應用程序  267

12.04.01 使已有的應用程序運行  267

12.04.02 部署并運行  271

12.04.03 管理終端  272

12.05 調整:改善應用程序性能  274

12.05.01 根據Appstats進行性能測試  274

12.05.02 使用多線程來處理  276

12.06 性能調優:減少計費額  277

12.06.01 與計費有關的配置  277

12.06.02 計費表  277

12.06.03 節約實例的數量  279

12.06.04 減少數據存儲的操作  280

12.07 測試  282

12.07.01 在測試代碼內使用API  282

12.07.02 測試的執行  284

12.07.03 在真實服務器上測試  285

12.08 本章小結  285

第四部分 加速開發的技術

13 測試是不可分割的一部分  288

13.01 認清測試現狀  288

13.02 在開發的各個階段引入測試工作  289

13.02.01 文檔的測試(文檔評審)  289

13.02.02 編寫測試的方法(輸入與輸出)  292

13.02.03 測試的執行與測試階段的輪換(把什么工作做到什么程度)  295

13.03 本章小結:對測試不要抱有恐懼  298

14 便捷地使用Django  300

14.01 什么是Django  300

14.01.01 Django的安裝  300

14.01.02 Django的架構  300

14.01.03 Django的文檔  304

14.02 讓數據庫的集成更加方便  304

14.02.01 什么是數據庫的集成  304

14.02.02 默認情況下Django能做什么  304

14.02.03 對,就是它,使用South就能夠做到  305

14.03 使用fixture replacement使測試更加方便  312

14.03.01 什么是測試配置器(fixture)  312

14.03.02 默認測試配置器的不便之處  314

14.03.03 使用factory_boy  315

14.04 使調試更加方便  318

14.05 本章小結  324

15 使用方便的Python模塊  325

15.01 簡化日期計算的模塊  325

15.01.01 日期計算的復雜之處  325

15.01.02 引入dateutil  327

15.02 簡化模型映射的模塊  329

15.02.01 必須進行模型映射的理由  329

15.02.02 映射規則的構造與復用  330

15.02.03 導入bpmappers模塊  333

15.02.04 與Django的聯動  335

15.02.05 編寫JSON API  336

15.03 判斷字符的編碼  337

15.04 RSS閱讀訂閱的解析模塊  339

15.04.01 導入feedparser模塊  339

15.04.02 使用feedparser解析RSS閱讀訂閱信息  339

15.05 圖像處理模塊  340

15.05.01 安裝PIL模塊  340

15.05.02 轉換圖像格式  341

15.05.03 調整圖像的尺寸  342

15.05.04 截取圖像的某個部分  344

15.05.05 圖像的過濾處理  345

15.06 數據的加密處理模塊  346

15.06.01 PyCrypto的安裝  346

15.06.02 共同密鑰的加密與解密  347

15.06.03 公開密鑰方式的加密與解密  347

15.07 調用Twitter的API模塊  351

15.07.01 導入tweepy模塊  351

15.07.02 應用程序的登錄域和Consumer Key的獲取  351

15.07.03 獲得Access Token  354

15.07.04 調用TwitterAPI  354

15.07.05 開發使用Twitter認證的應用程序  356

15.08 本章小結  361

附錄A 建立VirtualBox環境  362

附錄B 建立操作系統環境  366

Python開發實戰 前言/序言

BePROUD 股份有限公司在眾多的項目開發中使用了Python編程語言。我們希望通過撰寫本書,與你分享在項目實踐中所積累Python使用技巧。

最近,公司的員工數量不斷增加,為了讓新員工快速上手,我們亦將在BePROUD工作必須掌握的基礎知識寫入本書中。

本書從整個工程環境的建立開始,介紹了Web應用開發方法、任務管理,以及評審、測試及高效部署、服務器調試等內容,盡可能網羅了Python開發流程中所涉及的一系列內容。如書名所示,本書更多關注項目實戰技巧。

在進入正題前,我想先談談BePROUD公司日常工作的思維方式。

Geek/Nerd云集的公司

BePROUD是一個Geek和Nerd眾多的公司,云集了許多行業精英。

出于興趣,這些員工經常利用自己的業余時間學習,將學到的知識付諸實踐。作為Geek/Nerd,他們永遠不會吝惜時間和精力。

當然,Geek/Nerd中有許多怪人,但BePROUD公司所有成員都有這樣的共識:

盡量簡化不想做的工作。

掌握了好的方法就要付諸實踐。

帶著好心情快樂地工作。

盡量簡化不想做的工作

在工作中,重復地做一項工作是非常無聊的。我們都盡量想辦法使其一勞永逸。另外,我們也不喜歡那些過程復雜且又容易失敗的工作。因此我們盡可能將其簡化,防止失敗。

掌握了好的方法就要付諸實踐

世間總有一些好辦法或一些新想法,我們總是積極地在工作中去嘗試。

在工作中去實踐好方法往往可以減輕我們的負擔。但在實踐之前,我們必須先甄別出可以真正起到作用的方式方法,然后再開始學習、應用。

帶著好心情快樂地工作

如前所述,當掌握了好的方法,提高工作效率之后,我們就可以抱有一種好心情去享受工作了。比如做一個好玩的Skype機器人,在下班后找一個空閑的會議室玩LT游戲等。我們都認為,公司不僅是工作場所,也是一個讓大家在做好工作的同時又能夠享受它的地方。

本書的內容基于BePROUD公司員工的實踐經驗,因此不會強迫你去單純地記憶復雜的知識,而是為你提供能夠在實踐中直接應用的內容。如果本書中介紹的知識能夠對你的實際工作有幫助,我們將感到莫大的欣慰。
圖書網:Python開發實戰pdf

繼續閱讀
  • 我的微信
  • 掃一掃加好友
  • weinxin
  • 微信公眾號
  • 掃一掃關注
  • weinxin
深入淺出Spring Boot 2.x pdf 程序設計

深入淺出Spring Boot 2.x pdf

適讀人群 :各類Java微服務開發人員,Spring開發人員,互聯網技術愛好者,微服務開發人員,由于Java EE在互聯網的強勢地位,擁有的讀者比較廣闊。 本書重點講解Spring...
Spring源碼深度解析(第2版)pdf 程序設計

Spring源碼深度解析(第2版)pdf

全面剖析Spring源碼,方便讀者根據業務需求進行更改或擴展 所有知識點秉承由淺入深、由易到難的講解架構 采用抽絲剝繭的方式來闡述復雜的邏輯,降低理解難度 Spring是一個源碼開...
匿名

發表評論

匿名網友 填寫信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: