作者从Python的环境搭建开始讲起,介绍了Web应用开发方法、任务管理,以及评审、测试及高效部署、服务器调试等内容,尽可能网罗了Python开发流程中的方方面面。在这里,Python仅仅是一个载体,很多知识点在非Python下也适用,这也是本书最大的特色所在。
本书适合有一定基础的Python开发者,以及使用PHP或Ruby进行网页开发的读者阅读。
第一部分 使用Python开发
01 开始使用Python2
01.01 Python环境搭建2
01.01.01 安装apt软件包2
01.01.02 easy_install 与pip3
01.01.03 安装virtualenv4
01.01.04 使用不同版本的Python9
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 关于Flask27
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和CSS30
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 sudoers46
03.01.03 virtualenv47
03.02 问题跟踪系统47
03.02.01 Trac48
03.02.02 安装Trac48
03.03 版本控制系统51
03.04 有利于团队开发的工具52
03.04.01 Skype52
03.04.02 DropBox53
03.04.03 Google Docs54
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 开始写代码……在这之前还是先创建一个ticket82
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 Distribute132
07.02.02 pip133
07.02.03 virtualenv134
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 配置hgrc155
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 hgwebcommit180
08.06 考虑实际运用而产生的BP Mercurial W/F182
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 关于Jenkins194
09.02 Jenkins的安装194
09.02.01 安装Java194
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 安装nose199
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执行coverage201
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 进一步灵活使用Jenkins216
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 什么是Fabric233
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 关于gunicorn245
11.03.01 gunicorn的安装245
11.03.02 使用gunicorn运行应用程序245
11.04 关于nginx247
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 Engine254
12.01 关于App Engine254
12.01.01 什么是App Engine254
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 创建SDK263
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 在测试代码内使用API282
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 便捷地使用Django300
14.01 什么是Django300
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_boy315
14.04 使调试更加方便318
14.05 本章小结324
15 使用方便的Python模块325
15.01 简化日期计算的模块325
15.01.01 日期计算的复杂之处325
15.01.02 引入dateutil327
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 API336
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 Token354
15.07.04 调用TwitterAPI354
15.07.05 开发使用Twitter认证的应用程序356
15.08 本章小结361
附录A 建立VirtualBox环境362
附录B 建立操作系统环境366
《深度学习:智能时代的核心驱动力量》内容简介:全球科技巨头纷纷拥抱深度学习,自动驾驶、AI医疗、语音识别、图像识别、智能翻译
《Android群英传》对具有一定Android开发基础的读者,以通俗易懂的语言介绍了Android开发的进阶技巧。《Android群英传》共分为13
《如果有来生 还是做记者》内容简介:本书是纪念“范敬宜新闻教育奖”颁发六周年的感言集。41篇新闻学子真挚深情的文章,记录了他们
精通XNA图形与游戏程序设计 本书特色 作为一本介绍XNA游戏程序设计的书籍,杨关胜等编著的《精通XNA图形与游戏程序设计》把“实用”作为每一章节的出发点和落脚...
机器智能人脸工程 本书特色 人脸工程学的研究内容主要包括人脸识别、表情识别和人脸合成三个部分。本书分别介绍了人脸识别、表情识别和人脸合成研究中用到的相关理论和算...
本书的目的是想让人们考虑设计虚拟世界的问题。问题不在于你是否赞同其中的观点,而在于——除非你能够提出自己的观点。从虚拟世
“从公元前1世纪到公元15世纪的漫长岁月中,中国人,在应用自然知识与满足人的需求方面,曾经胜过欧洲人,那么,为什么近代科学革
《企业网络安全建设最佳实践》内容简介:本书是“奇安信认证网络安全工程师系列丛书”之一,全书采用项目式、场景式的知识梳理方式
潛入!圖解王久恆啟一的圖解教室!在日本,有「職場圖解王」稱號的久恆啟一,本書中首度公開他在圖解教室裡,如何指導學生「自己
《电商大数据——用数据驱动电商和商业案例解析》重点介绍了电子商务数据驱动的理论和商业案例。《电商大数据——用数据驱动电商
随着宽带数据和多媒体业务的迅猛发展,第三代移动通信原定目标规定的2Mbit/s的传输速率已经远远不能满足需求,加上WiMAX等宽带无
社会网络分析方法在图书情报领域的应用研究 本书特色 目前,图书情报领域应用社会网络分析法的研究论著不断增加,已成为国内社会网络分析应用*重要的研究领域?本书通过...
本书内容包括:背景、DNS是如何工作的、建立BIND、DNS和电子邮件、培植主机、维护BIND、扩展你的域、用解析器和名字服务器的库例
《戊戌变法的另面:“张之洞档案”阅读笔记》内容简介:作者在“张之洞档案”的系统阅读中突出地感受到,这批史料给今人提供了观察
《想清楚 说明白》内容简介:本书主题与每个普通职场人日常工作生活都密切相关,属于绝大多数职场白领想要提升的重要素质之一。对于
《中国合作经济评论 (2017年第1期/总第1期)》内容简介:本书是以合作社为主要研究对象的国际化、学术性专题集刊,设有以下栏目:
Javaisanewobject-orientedprogramminglanguagethatwasdevelopedbySunMicrosystemsfor...
《现代对位及其赋格》内容简介:《现代对位及其赋格》通过探讨20世纪现代音乐的复调思维、对位技术及其在赋格中的应用,力求从流派
《唯食物可慰藉》内容简介:本书收录与饮食相关的美文22篇,一一讲述生命中的深情故事。一蔬一饭的爱意源远流长,岁月深处的凝望穿
《PHP求职宝典》以PHP求职面试为核心,全面介绍了在PHP面试中重点考查的各个考点,并从求职面试、职业规划、面试渠道、面试真题、