¥ 56 4.4折 ¥ 128 全新
仅1件
作者[美]格里格·乔治乌 著;[美]诺亚·吉夫特、[美]肯尼迪·贝尔曼、[美]阿尔弗雷多·德萨、安道 译
出版社中国电力出版社
出版时间2022-03
版次1
装帧平装
货号58765617
上书时间2024-12-19
·Python基础知识,简单介绍语言特性。
·如何自动处理文本,编写命令行工具和自动处理文件系统。
·Linux实用程序、包管理、构建系统、监控、监测和自动化测试。
·云计算、IaC、Kubernetes和Serverless。
·站在DevOps的角度探讨机器学习和数据工程。
·构建、部署和优化一个机器学习项目。
Noah Gift是西北大学和杜克大学研究生院数据科学专业与工程项目的讲师和顾问。
Kennedy Behrman是一位资深顾问,专门为初创企业设计和实施云解决方案。
Alfredo Deza是一位软件工程师和开源软件开发者,他重建了公司的基础设施。
Grig Gheorghiu是一名程序员、研究实验室主任、系统/网络/安全架构师和软件测试工程师。
目录
前言 . 1
第1 章 Python DevOps 基础知识 11
1.1 安装和运行Python 12
1.1.1 Python shell 12
1.1.2 Jupyter Notebooks13
1.2 过程式程序设计 13
1.2.1 变量 14
1.2.2 基本的数学运算 15
1.2.3 注释 15
1.2.4 内置函数16
1.3 执行控制 17
1.3.1 if/elif/else .17
1.3.2 for 循环 .18
1.3.3 while 循环 20
1.4 处理异常 20
1.5 内置对象 21
1.5.1 对象是什么 .21
1.5.2 对象的方法和属性 22
1.5.3 序列 23
1.6 函数 .35
1.6.1 函数剖析36
1.6.2 函数是对象 .37
1.6.3 匿名函数38
1.7 使用正则表达式 39
1.7.1 搜索 39
1.7.2 字符集合40
1.7.3 字符类 41
1.7.4 分组 41
1.7.5 具名分组42
1.7.6 查找所有42
1.7.7 查找迭代器 .42
1.7.8 替换 43
1.7.9 编译 43
1.8 惰性求值 44
1.8.1 生成器 44
1.8.2 生成器推导 .45
1.9 更多IPython 功能 .46
1.9.1 在IPython 中运行UNIX shell 命令46
1.9.2 使用IPython 的魔法命令 47
1.10 练习题 .47
第2 章 文件和文件系统自动化处理 49
2.1 读写文件 49
2.2 使用正则表达式搜索文本 .59
2.3 处理大型文件 .61
2.4 加密文本 62
2.4.1 哈希和hashlib 63
2.4.2 使用Cryptography 库加密 63
2.5 os 模块 65
2.6 使用os.path 管理文件和目录 .67
2.7 使用os.walk 遍历目录树 70
2.8 使用pathlib 处理路径对象 71
第3 章 使用命令行 . 73
3.1 使用shell 73
3.1.1 使用sys 模块探知系统信息 73
3.1.2 使用os 模块处理操作系统 .74
3.1.3 使用subprocess 模块派生进程 .75
3.2 编写命令行工具 77
3.2.1 使用sys.argv .79
3.2.2 使用argparse .81
3.2.3 使用click .85
3.2.4 使用fire 90
3.2.5 实现插件系统 95
3.3 案例分析:使用命令行工具提速Python 96
3.3.1 使用Numba JIT 编译器 97
3.3.2 通过Python CUDA 使用GPU 99
3.3.3 使用Numba 真正多核多线程运行Python 代码 100
3.3.4 k 均值聚类算法 .101
3.4 练习题 .103
第4 章 Linux 实用程序 105
4.1 磁盘实用程序 106
4.1.1 衡量性能106
4.1.2 分区 .108
4.1.3 获取特定的设备信息 109
4.2 网络实用程序 111
4.2.1 SSH 隧道 111
4.2.2 使用Apache Benchmark(ab)评测HTTP . 112
4.2.3 使用molotov 做负载测试 . 113
4.3 CPU 实用程序 . 116
4.3.1 CPU 实用程序简介 116
4.3.2 使用htop 查看进程 . 116
4.4 使用Bash 和ZSH 118
4.4.1 自定义Python shell . 119
4.4.2 递归路径模式匹配 120
4.4.3 搜索和替换确认提示 120
4.4.4 删除Python 临时文件 122
4.4.5 列出和筛选进程 122
4.4.6 UNIX 时间戳 123
4.5 Python 与Bash 和ZSH 混合使用 124
4.5.1 随机密码生成器 124
4.5.2 这个模块是否存在 125
4.5.3 进入模块所在的目录 125
4.5.4 把CSV 文件转换成JSON 文件 .126
4.6 Python 单行程序 .127
4.6.1 调试器 127
4.6.2 这段代码的运行速度有多快 128
4.7 strace .129
4.8 练习题 .131
4.9 实操题 .132
第5 章 包管理 133
5.1 打包简介 .134
5.1.1 打包的重要性 .134
5.1.2 何时不需要打包 134
5.2 打包准则 .135
5.2.1 恰当的版本号 .135
5.2.2 更改日志136
5.3 选择一种策略 137
5.4 打包方案 .138
5.4.1 Python 原生包 138
5.4.2 Debian 包 145
5.4.3 RPM 包 153
5.5 使用systemd 管理服务 160
5.5.1 长时间运行的进程 161
5.5.2 创建项目161
5.5.3 systemd 单元文件 .163
5.5.4 安装单元164
5.5.5 处理日志166
5.6 练习题 .167
5.7 实操题 .168
第6 章 持续集成和持续部署 . 169
6.1 真实案例分析:把维护不善的WordPress 网站转换成Hugo 169
6.1.1 设置Hugo .171
6.1.2 把WordPress 文章转换成Hugo 文章 .172
6.1.3 创建并更新Algolia 索引 174
6.1.4 使用Makefile 编排流程 176
6.1.5 使用AWS CodePipeline 部署 .176
6.2 真实案例分析:使用Google Cloud Build 把Python 应用部署到
Google App Engine 中 178
6.3 真实案例分析:NFSOPS 185
第7 章 监控和日志 187
7.1 构建可靠系统的关键概念 187
7.2 不可变的DevOps 原则 188
7.2.1 集中处理日志 .188
7.2.2 案例分析:生产数据库塞满硬盘 .189
7.2.3 自建还是购买? 190
7.2.4 容错 .190
7.3 监控 192
7.3.1 Graphite .192
7.3.2 StatsD .192
7.3.3 Prometheus 193
7.4 监测程序 .197
7.4.1 监测程序概述 .197
7.4.2 命名约定200
7.5 日志 201
7.5.1 为什么很难 202
7.5.2 basicconfig 202
7.5.3 深度配置203
7.5.4 常用模式208
7.6 ELK 栈 .209
7.6.1 Logstash .210
7.6.2 Elasticsearch 和Kibana .212
7.7 练习题 .215
7.8 实操题 .216
第8 章 pytest 在DevOps 中的应用 217
8.1 测试小钢炮pytest 217
8.2 pytest 入门 .218
8.2.1 使用pytest 测试 218
8.2.2 与unittest 的区别 .220
8.3 pytest 特性 .222
8.3.1 conftest.py 223
8.3.2 出色的assert223
8.3.3 参数化 225
8.4 固件 226
8.4.1 入门 .227
8.4.2 内置固件229
8.5 基础设施测试 231
8.5.1 什么是系统验证 232
8.5.2 Testinfra 简介 .233
8.5.3 连接远程节点 .233
8.5.4 特性和特殊固件 237
8.5.5 案例 .238
8.6 使用pytest 测试Jupyter Notebooks 241
8.7 练习题 .242
8.8 实操题 .242
第9 章 云计算 243
9.1 云计算基础知识 .244
9.2 云计算的类型 246
9.3 云服务的类型 246
9.3.1 IaaS 247
9.3.2 MaaS 251
9.3.3 PaaS .251
9.3.4 Serverless 252
9.3.5 SaaS .255
9.4 IaC .256
9.5 持续交付 .256
9.6 虚拟化和容器 256
9.6.1 硬件虚拟化 256
9.6.2 SDN .257
9.6.3 SDS .257
9.6.4 容器 .257
9.7 分布式计算面临的挑战和机遇 258
9.8 云时代Python 的并发、性能和进程管理 260
9.9 进程管理 .261
9.9.1 使用subprocess 管理进程 261
9.9.2 使用multiprocessing 库解决问题 .263
9.9.3 使用Pool() 派生进程 264
9.9.4 FaaS 和Serverless 267
9.9.5 使用Numba 提升Python 的性能 267
9.9.6 使用Numba JIT 编译器 .267
9.9.7 使用高性能服务器 268
9.10 小结 269
9.11 练习题 269
9.12 实操题 270
第10 章 IaC 271
10.1 基础设施自动化工具分类 272
10.2 手动配置 274
10.3 使用Terraform 自动配置基础设施 .275
10.3.1 配置S3 bucket .276
10.3.2 使用ACM 配置SSL 证书 .279
10.3.3 配置Amazon CloudFront 分配 280
10.3.4 配置Route 53 DNS 记录 283
10.3.5 把静态文件复制到S3 中 284
10.3.6 删除使用Terraform 配置的所有AWS 资源 .285
10.4 使用Pulumi 自动配置基础设施285
10.4.1 为AWS 新建一个Pulumi Python 项目 286
10.4.2 为过渡堆栈创建配置值 291
10.4.3 配置一个ACM SSL 证书 291
10.4.4 配置Route 53 区域和DNS 记录 292
10.4.5 配置一个CloudFront 分配 .295
10.4.6 为网站的URL 配置一个Route 53 DNS 记录 296
10.4.7 创建并部署一个新堆栈 297
10.5 练习题 300
第11 章 容器技术:Docker 和Docker Compose 301
11.1 Docker 容器是什么 .302
11.2 创建、构建、运行及删除Docker 映像和容器 .302
11.3 把Docker 映像发布到Docker 注册处中 .306
11.4 使用相同的映像在不同的宿主机中运行Docker 容器 308
11.5 使用Docker Compose 运行多个Docker 容器 310
11.6 把Docker Compose 运行的服务移植到新主机和操作系统中 323
11.7 练习题 327
第12 章 容器编排:Kubernetes . 329
12.1 Kubernetes 相关概念简述 330
12.2 使用Kompose 根据docker-compose.yaml 创建Kubernetes 清单 331
12.3 使用minikube 把Kubernetes 清单部署到本地Kubernetes 集群 .333
12.4 在GCP 中使用Pulumi 创建GKE Kubernetes 集群 349
12.5 把Flask 示例应用部署到GKE 中 352
12.6 安装Helm chart Prometheus 和Grafana 359
12.7 销毁GKE 集群 .364
12.8 练习题 365
第13 章 Serverless 技术 367
13.1 把同一个Python 函数部署到三大云服务商中 .370
13.1.1 安装Serverless 框架 .370
13.1.2 把Python 函数部署到AWS Lambda 中 .370
13.1.3 把Python 函数部署到Google Cloud Functions 中 373
13.1.4 把Python 函数部署到Azure 中 380
13.2 把Python 函数部署到自托管的FaaS 平台中 384
13.2.1 把Python 函数部署到自托管的PaaS 平台的优势 384
13.2.2 把Python 函数部署到OpenFaaS 中 .385
13.3 使用AWS CDK 配置DynamoDB 数据表、Lambda 函数和
API 网关方法 .393
13.4 练习题 415
第14 章 MLOps 和机器学习工程 417
14.1 机器学习是什么 417
14.1.1 监督型机器学习 .417
14.1.2 建模 420
14.2 Python 机器学习生态环境 423
14.2.1 Python 机器学习框架和生态系统 423
14.2.2 PyTorch 深度学习 424
14.3 机器学习云平台 428
14.4 机器学习成熟模型 429
14.4.1 机器学习重点术语 .429
14.4.2 第1 层:问题构建、范围界定和问题定义 430
14.4.3 第2 层:持续交付数据 431
14.4.4 第3 层:持续交付净化数据 .432
14.4.5 第4 层:持续交付探索性数据分析 434
14.4.6 第5 层:持续交付传统机器学习和AutoML 434
14.4.7 第6 层:机器学习运作反馈环 435
14.5 使用Docker 和Kubernetes 部署sklearn Flask 应用 435
14.5.1 EDA 440
14.5.2 建模 441
14.5.3 调整GBM 缩放 442
14.5.4 拟合模型 .443
14.5.5 评估 444
14.5.6 adhoc_predict 445
14.5.7 JSON 工作流 446
14.5.8 缩放输入 .446
14.5.9 adhoc_predict 447
14.5.10 缩放输入 448
14.6 练习题 448
14.7 实操题 449
14.8 学习评价 449
第15 章 数据工程 . 451
15.1 小数据 452
15.1.1 小数据与大数据 .452
15.1.2 处理小数据文件 .452
15.2 写文件 453
15.3 读文件 453
15.4 使用生成器流水线逐行读取和处理 453
15.5 使用YAML .454
15.6 大数据 455
15.7 大数据工具、组件和平台 457
15.7.1 数据源 .458
15.7.2 文件系统 .458
15.7.3 数据存储 .459
15.7.4 实时流式采集 460
15.8 案例分析:自制数据流水线 461
15.9 Serverless 数据工程 462
15.9.1 使用AWS Lambda 处理CloudWatch 事件 463
15.9.2 使用Amazon CloudWatch 日志分析AWS Lambda 463
15.9.3 使用AWS Lambda 填充Amazon Simple Queue Service .464
15.9.4 连接CloudWatch 事件触发器 468
15.9.5 创建事件驱动型lambda .469
15.9.6 从AWS Lambda 中读取Amazon SQS 事件 .470
15.10 小结 .474
15.11 练习题 .475
15.12 实操题 .475
第16 章 DevOps 惨痛经验和人物访谈 . 477
16.1 产不出电影的电影厂 .478
16.2 推不出游戏的游戏坊 .480
16.3 耗时60 秒才启动的Python 脚本 .482
16.4 用缓存和智能监测程序浇灭火情 483
16.5 自动化会让你失业 484
16.6 DevOps 反模式 .485
16.6.1 反模式:没有自动化构建服务器 485
16.6.2 盲目行事 .486
16.6.3 协调难题不可避免 .486
16.6.4 没有团队合作 487
16.7 人物访谈 492
16.7.1 Glenn Solomon 492
16.7.2 Andrew Nguyen 493
16.7.3 Gabriella Roman .495
16.7.4 Rigoberto Roche .496
16.7.5 Jonathan LaCour .498
16.7.6 Ville Tuulos 500
16.7.7 Joseph Reis 502
16.7.8 Teijo Holzer 503
16.7.9 Matt Harrison 505
16.7.10 Michael Foord 507
16.8 一些建议 510
16.9 练习题 511
16.10 挑战题 . 511
16.11 毕业项目 511
— 没有更多了 —
以下为对购买帮助不大的评价