
掃描右側(cè)圖片或微信搜索 “ Java技術(shù)分享屋 ” ,回復(fù) “ 驗(yàn)證碼 ” ,獲取驗(yàn)證密碼。
本資料僅供讀者預(yù)覽及學(xué)習(xí)交流使用,不能用于商業(yè)用途,請(qǐng)?jiān)谙螺d后24小時(shí)內(nèi)刪除。如果喜歡,請(qǐng)購(gòu)買正版!
一.資料圖片
二.資料簡(jiǎn)介
本書來(lái)自真正的開發(fā)現(xiàn)場(chǎng),是BePROUD公司眾多極客在真實(shí)項(xiàng)目中的經(jīng)驗(yàn)總結(jié)和智慧結(jié)晶。作者從Python的環(huán)境搭建開始講起,介紹了Web應(yīng)用的開發(fā)方法、項(xiàng)目管理及審查、測(cè)試與高效部署、服務(wù)器調(diào)試等內(nèi)容,盡可能網(wǎng)羅了Python項(xiàng)目開發(fā)流程中的方方面面,有助于開發(fā)者建立有序生產(chǎn)環(huán)境,提高開發(fā)效率,讓編程事半功倍。此外,在本書中Python僅僅是一個(gè)載體,很多知識(shí)點(diǎn)在非Python下也適用。三.作者簡(jiǎn)介
日本BePROUD股份有限公司
BePROUD是一家專注于Python開發(fā)的公司,因云集了眾多行業(yè)精英而聞名于日本國(guó)內(nèi)。多年來(lái)的軟件開發(fā)碩果累累,其精湛的技術(shù)水平,得到了客戶及業(yè)界人士的認(rèn)可和好評(píng)。
四.資料目錄
第1部分 Python開發(fā)入門 1第1章 Python入門 2
1.1 安裝Python 2
1.1.1 安裝deb包 3
1.1.2 安裝第三方包 4
1.1.3 virtualenv的使用方法 5
1.1.4 多版本Python的使用 7
1.2 安裝Mercurial 9
1.2.1 Mercurial概述 10
1.2.2 安裝Mercurial 10
1.2.3 創(chuàng)建版本庫(kù) 11
1.2.4 文件操作 12
1.3 編輯器與輔助開發(fā)工具 14
1.3.1 編輯器 14
1.3.2 開發(fā)輔助工具 20
1.4 小結(jié) 22
第2章 開發(fā)Web應(yīng)用 24
2.1 了解Web應(yīng)用 24
2.1.1 Web應(yīng)用是什么 24
2.1.2 Web應(yīng)用與桌面應(yīng)用的區(qū)別 25
2.1.3 Web應(yīng)用的機(jī)制 25
2.2 前置準(zhǔn)備 28
2.2.1 關(guān)于Flask 28
2.2.2 安裝Flask 28
2.3 Web應(yīng)用的開發(fā)流程 29
2.4 明確要開發(fā)什么應(yīng)用 30
2.4.1 留言板應(yīng)用的需求 30
2.4.2 明確必備的功能 30
2.4.3 明確必備的頁(yè)面 31
2.5 頁(yè)面設(shè)計(jì) 31
2.5.1 確定成品頁(yè)面的形式 31
2.5.2 編寫HTML和CSS 32
2.6 實(shí)現(xiàn)功能 37
2.6.1 保存留言數(shù)據(jù) 37
2.6.2 獲取已保存的留言列表 38
2.6.3 用模板引擎顯示頁(yè)面 39
2.6.4 準(zhǔn)備評(píng)論接收方的URL 42
2.6.5 調(diào)整模板的輸出 43
2.7 查看運(yùn)行情況 45
2.8 小結(jié) 47
第3章 Python項(xiàng)目的結(jié)構(gòu)與包的創(chuàng)建 48
3.1 Python項(xiàng)目 48
3.2 環(huán)境與工具 49
3.2.1 用virtualenv搭建獨(dú)立環(huán)境 49
3.2.2 用pip安裝程序包 55
3.2.3 小結(jié) 62
3.3 文件結(jié)構(gòu)與發(fā)布程序包 62
3.3.1 編寫setup.py 62
3.3.2 留言板的項(xiàng)目結(jié)構(gòu) 64
3.3.3 setup.py與MANIFEST.in——設(shè)置程序包信息與捆綁的文件 65
3.3.4 setup.py——?jiǎng)?chuàng)建執(zhí)行命令 69
3.3.5 python setup.py sdist——?jiǎng)?chuàng)建源碼發(fā)布程序包 71
3.3.6 提交至版本庫(kù) 71
3.3.7 README.rst——開發(fā)環(huán)境設(shè)置流程 73
3.3.8 變更依賴包 75
3.3.9 通過(guò)requirements.txt固定開發(fā)版本 77
3.3.10 python setup.py bdist_wheel——制作用于wheel發(fā)布的程序包 78
3.3.11 上傳到PyPI并公開 79
3.3.12 小結(jié) 85
3.4 小結(jié) 86
第2部分 團(tuán)隊(duì)開發(fā)的周期 87
第4章 面向團(tuán)隊(duì)開發(fā)的工具 88
4.1 問題跟蹤系統(tǒng) 88
4.1.1 Redmine 88
4.1.2 安裝Redmine 89
4.1.3 Redmine的設(shè)置 91
4.1.4 插件 93
4.2 版本控制系統(tǒng) 94
4.2.1 Mercurial與Redmine的聯(lián)動(dòng) 94
4.2.2 用于生成版本庫(kù)的插件 95
4.3 聊天系統(tǒng) 97
4.3.1 Slack 97
4.3.2 Slack的特點(diǎn) 98
4.3.3 Slack做不到的事 101
4.3.4 Slack的注冊(cè) 102
4.4 對(duì)團(tuán)隊(duì)開發(fā)有幫助的工具 102
4.4.1 Dropbox 102
4.4.2 Google Drive 102
4.5 小結(jié) 103
第5章 項(xiàng)目管理與審查 104
5.1 項(xiàng)目管理與問題的區(qū)分使用 104
5.1.1 項(xiàng)目管理的前置準(zhǔn)備工作 104
5.1.2 創(chuàng)建問題 105
5.1.3 整理問題 107
5.1.4 分割問題 107
5.2 問題模板 108
5.2.1 安裝插件 108
5.2.2 問題模板的使用方法 109
5.2.3 Global Issue Templates 111
5.2.4 問題模板示例 112
5.3 問題驅(qū)動(dòng)開發(fā) 114
5.3.1 別急著敲代碼,先建問題 114
5.3.2 創(chuàng)建與問題編號(hào)同名的分支 115
5.3.3 讓發(fā)布與分支相對(duì)應(yīng) 115
5.3.4 分支的合并 116
5.4 審查 117
5.4.1 為什么需要審查 117
5.4.2 審查委托:代碼審查篇 118
5.4.3 審查委托:作業(yè)審查篇 119
5.4.4 實(shí)施審查:代碼審查篇 120
5.4.5 實(shí)施審查:作業(yè)審查篇 123
5.5 小結(jié) 123
第6章 用Mercurial管理源碼 125
6.1 Mercurial版本庫(kù)的管理與設(shè)置 125
6.1.1 服務(wù)器上的Uinx用戶群設(shè)置 125
6.1.2 創(chuàng)建版本庫(kù) 126
6.1.3 hgrc的設(shè)置 127
6.1.4 使用設(shè)置好的版本庫(kù) 127
6.1.5 使用hgweb建立簡(jiǎn)易中央版本庫(kù) 127
6.2 靈活使用“鉤子” 128
6.2.1 鉤子功能的設(shè)置方法 129
6.2.2 嘗試鉤子腳本 129
6.2.3 鉤子事件 130
6.2.4 鉤子功能的執(zhí)行時(shí)機(jī) 131
6.2.5 編寫鉤子腳本 134
6.3 分支的操作 136
6.4 關(guān)于合并 137
6.4.1 未發(fā)生沖突的合并 138
6.4.2 合并時(shí)發(fā)生沖突以及用文本編輯器解決沖突的方法 140
6.4.3 合并的類型與沖突 143
6.4.4 用GUI的合并工具進(jìn)行合并 144
6.5 GUI客戶端 147
6.5.1 GUI客戶端的介紹 147
6.5.2 GUI客戶端的優(yōu)點(diǎn) 149
6.5.3 GUI客戶端的缺點(diǎn) 151
6.6 考慮實(shí)際運(yùn)用的BePROUD Mercurial Workflow 152
6.6.1 概述 152
6.6.2 背景 152
6.6.3 版本庫(kù)的結(jié)構(gòu) 153
6.6.4 提交源碼 154
6.6.5 提交設(shè)計(jì) 156
6.6.6 分支的合并 157
6.6.7 集成分支 158
6.7 小結(jié) 160
第7章 完備文檔的基礎(chǔ) 162
7.1 要記得給項(xiàng)目寫文檔 162
7.1.1 寫文檔時(shí)不想做的事 162
7.1.2 什么樣的狀態(tài)讓人想寫文檔 164
7.2 Sphinx的基礎(chǔ)與安裝 165
7.2.1 Sphinx的安裝 166
7.2.2 reStructuredText入門 167
7.2.3 用Sphinx寫結(jié)構(gòu)化文檔的流程 169
7.2.4 Sphinx擴(kuò)展 174
7.3 導(dǎo)入Sphinx可解決的問題與新出現(xiàn)的問題 175
7.3.1 由于是純文本,所以能在平時(shí)用的編輯器上寫文檔 176
7.3.2 信息與視圖相分離,所以能集中精神編輯內(nèi)容,不用顧慮裝飾等外觀問題 176
7.3.3 可根據(jù)一個(gè)源碼輸出PDF等多種格式 179
7.3.4 通過(guò)結(jié)構(gòu)化,文檔可分成幾個(gè)文件來(lái)寫 180
7.3.5 能用Mercurial等輕松實(shí)現(xiàn)版本管理 181
7.3.6 API參考手冊(cè)與程序的管理一體化 182
7.3.7 通過(guò)Web瀏覽器共享 184
7.3.8 導(dǎo)入Sphinx后仍存在的問題 185
7.4 文檔集的創(chuàng)建與使用 186
7.4.1 什么是文檔集 186
7.4.2 項(xiàng)目所需文檔的一覽表 187
7.4.3 面向項(xiàng)目組長(zhǎng)、經(jīng)理 187
7.4.4 面向設(shè)計(jì)者 189
7.4.5 面向開發(fā)者 189
7.4.6 面向客戶 189
7.5 小結(jié) 190
第8章 模塊分割設(shè)計(jì)與單元測(cè)試 191
8.1 模塊分割設(shè)計(jì) 191
8.1.1 功能設(shè)計(jì) 191
8.1.2 構(gòu)成Web應(yīng)用的組件 192
8.1.3 組件設(shè)計(jì) 194
8.1.4 模塊與程序包 195
8.2 測(cè)試 197
8.2.1 測(cè)試的種類 197
8.2.2 編寫單元測(cè)試 198
8.2.3 從單元測(cè)試中剔除環(huán)境依賴 209
8.2.4 用WebTest做功能測(cè)試 215
8.3 通過(guò)測(cè)試改良設(shè)計(jì) 219
8.4 推進(jìn)測(cè)試自動(dòng)化 221
8.4.1 用tox自動(dòng)生成執(zhí)行測(cè)試的環(huán)境 221
8.4.2 可重復(fù)使用的測(cè)試環(huán)境 223
8.5 小結(jié) 223
第9章 Python封裝及其運(yùn)用 224
9.1 使用程序包 224
9.1.1 程序包的版本指定 224
9.1.2 從非PyPI服務(wù)器安裝程序包 226
9.1.3 程序包的發(fā)布格式 228
9.1.4 生成wheelhouse的方法 230
9.1.5 從wheelhouse安裝 231
9.2 巧用程序包 232
9.2.1 私密發(fā)布 232
9.2.2 巧用requirements.txt 232
9.2.3 requirements.txt層級(jí)化 233
9.2.4 為部署和CI+tox準(zhǔn)備的requiremests 234
9.2.5 通過(guò)requirements.txt指定庫(kù)的版本 235
9.3 小結(jié) 236
第10章 用Jenkins持續(xù)集成 237
10.1 什么是持續(xù)集成 237
10.1.1 持續(xù)集成的簡(jiǎn)介 237
10.1.2 Jenkins簡(jiǎn)介 239
10.2 Jenkins的安裝 239
10.2.1 安裝Jenkins主體程序 239
10.2.2 本章將用到的Jenkins插件 240
10.3 執(zhí)行測(cè)試代碼 241
10.3.1 讓Jenkins運(yùn)行簡(jiǎn)單的測(cè)試代碼 241
10.3.2 添加Job 242
10.3.3 Job的成功與失敗 244
10.4 測(cè)試結(jié)果輸出到報(bào)告 246
10.4.1 安裝pytest 246
10.4.2 調(diào)用pytest命令 246
10.4.3 根據(jù)pytest更改Jenkins的設(shè)置 246
10.5 顯示覆蓋率報(bào)告 247
10.5.1 安裝pytest-cov 248
10.5.2 從pytest獲取覆蓋率 248
10.5.3 讀取覆蓋率報(bào)告 248
10.6 執(zhí)行Django的測(cè)試 250
10.6.1 安裝Python模塊 250
10.6.2 Django的調(diào)整 251
10.6.3 示例代碼 251
10.6.4 Jenkins的調(diào)整 255
10.6.5 “構(gòu)建后操作”選項(xiàng)卡的設(shè)置 257
10.7 通過(guò)Jenkins構(gòu)建文檔 260
10.7.1 安裝Sphinx 261
10.7.2 在Jenkins添加Job 261
10.7.3 Sphinx構(gòu)建發(fā)出警告時(shí)令Job失敗 261
10.7.4 查看成果 262
10.7.5 通過(guò)Task Scanner Plugin管理TODO 263
10.7.6 Task Scanner Plugin的設(shè)置示例 264
10.8 Jenkins進(jìn)階技巧 265
10.8.1 好用的功能 265
10.8.2 進(jìn)一步改善 267
10.9 小結(jié) 268
第3部分 服務(wù)公開 269
第11章 環(huán)境搭建與部署的自動(dòng)化 270
11.1 確定所需環(huán)境的內(nèi)容 270
11.1.1 網(wǎng)絡(luò)結(jié)構(gòu) 270
11.1.2 服務(wù)器搭建內(nèi)容的結(jié)構(gòu)化 272
11.1.3 用戶的設(shè)置 273
11.1.4 選定程序包 274
11.1.5 中間件的設(shè)置 277
11.1.6 部署 280
11.2 用Ansible實(shí)現(xiàn)自動(dòng)化作業(yè) 282
11.2.1 Ansible簡(jiǎn)介 282
11.2.2 文件結(jié)構(gòu) 287
11.2.3 執(zhí)行Ansible 288
11.2.4 與最初確定的結(jié)構(gòu)相對(duì)應(yīng) 288
11.2.5 將各步驟Ansible化 289
11.2.6 整理Ansible的執(zhí)行環(huán)境 295
11.3 小結(jié) 296
第12章 應(yīng)用的性能改善 298
12.1 Web應(yīng)用的性能 298
12.1.1 Web應(yīng)用面對(duì)大量集中請(qǐng)求時(shí)會(huì)產(chǎn)生哪些問題 298
12.1.2 針對(duì)高負(fù)荷的對(duì)策 299
12.2 評(píng)估留言板應(yīng)用的性能 300
12.2.1 什么是應(yīng)用的性能 300
12.2.2 安裝ApacheBench 300
12.2.3 用ApachBench評(píng)估性能 301
12.3 gunicorn簡(jiǎn)介 303
12.3.1 安裝gunicorn 304
12.3.2 在gunicorn上運(yùn)行應(yīng)用 304
12.4 nginx簡(jiǎn)介 306
12.4.1 安裝nginx 306
12.4.2 檢測(cè)nginx的性能 307
12.5 在nginx和gunicorn上運(yùn)行應(yīng)用 310
12.5.1 gunicorn的設(shè)置 310
12.5.2 nginx的設(shè)置 310
12.5.3 評(píng)估nginx+gunicorn的性能 311
12.5.4 性能比較 312
12.6 小結(jié) 313
第4部分 加速開發(fā)的技巧 315
第13章 讓測(cè)試為我們服務(wù) 316
13.1 認(rèn)識(shí)現(xiàn)狀:測(cè)試的客觀環(huán)境 316
13.2 將測(cè)試導(dǎo)入開發(fā)各個(gè)階段 317
13.2.1 文檔的測(cè)試(審查) 317
13.2.2 測(cè)試設(shè)計(jì)的編寫方法(輸入與輸出) 320
13.2.3 測(cè)試的實(shí)施與測(cè)試階段的輪換(做什么,做多少) 323
13.3 小結(jié):測(cè)試并不可怕 326
第14章 輕松使用Django 327
14.1 Django簡(jiǎn)介 327
14.1.1 Django的安裝 327
14.1.2 Django的架構(gòu) 327
14.1.3 Django的文檔 331
14.2 數(shù)據(jù)庫(kù)的遷移 331
14.2.1 什么是數(shù)據(jù)庫(kù)的遷移 331
14.2.2 Django的遷移功能 332
14.3 fixture replacement 339
14.3.1 什么是測(cè)試配置器 339
14.3.2 幾種不便使用默認(rèn)配置器的情況 342
14.3.3 如何使用factory_boy 343
14.3.4 消除“不便使用默認(rèn)配置器的情況” 345
14.4 Django Debug Toolbar 346
14.5 小結(jié) 353
第15章 方便好用的Python模塊 355
15.1 輕松計(jì)算日期 355
15.1.1 日期計(jì)算的復(fù)雜性 355
15.1.2 導(dǎo)入dateutil 357
15.2 簡(jiǎn)化模型的映射 359
15.2.1 模型映射的必要性 359
15.2.2 映射規(guī)則的結(jié)構(gòu)化與重復(fù)利用 360
15.2.3 導(dǎo)入bpmappers 363
15.2.4 與Django聯(lián)動(dòng) 366
15.2.5 編寫JSON API 367
15.3 圖像處理 369
15.3.1 安裝Pillow 369
15.3.2 圖像格式轉(zhuǎn)換 371
15.3.3 改變圖像尺寸 372
15.3.4 剪裁圖像 374
15.3.5 對(duì)圖像進(jìn)行濾鏡處理 375
15.4 數(shù)據(jù)加密 377
15.4.1 安裝PyCrypto 377
15.4.2 通用加密系統(tǒng)的加密及解密 377
15.4.3 公鑰加密系統(tǒng)(RSA)的加密與解密 378
15.5 使用Twitter的API 382
15.5.1 導(dǎo)入tweepy 382
15.5.2 添加應(yīng)用與獲取用戶密鑰 382
15.5.3 獲取訪問令牌 385
15.5.4 調(diào)用Twitter API 385
15.5.5 編寫用Twitter認(rèn)證的系統(tǒng) 387
15.6 使用REST API 393
15.6.1 REST簡(jiǎn)介 394
15.6.2 導(dǎo)入Requests 394
15.6.3 導(dǎo)入測(cè)試服務(wù)器 394
15.6.4 發(fā)送GET請(qǐng)求 396
15.6.5 發(fā)送POST請(qǐng)求 397
15.6.6 發(fā)送JSON格式的POST請(qǐng)求 398
15.6.7 使用GET/POST之外的HTTP方法 399
15.7 小結(jié) 400
附錄 401
附錄A VirtualBox的設(shè)置 402
A.1 安裝VirtualBox 402
A.2 新建虛擬機(jī) 403
A.3 備份虛擬機(jī) 404
附錄B OS(Ubuntu)的設(shè)置 407
B.1 安裝Ubuntu 407
B.2 SSH的設(shè)置 417
B.3 中文的設(shè)置 419
B.4 添加用戶 419