精通Twisted:Python事件驱动及异步编程

精通Twisted:Python事件驱动及异步编程
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
2020-12
ISBN: 9787111670353
定价: 99.00
6人买过
  • 本书探讨了Twisted,一种基于Python的事件驱动型网络引擎框架,并讲解了几个流行的应用程序项目。Twisted由社区引领者们所开发,他们不仅为上述项目做出了巨大贡献,同时也分享了他们来之不易的见解和经验。
     

     
    本书第①部分首先介绍事件驱动型编程,解释Twisted之所以独特的缘由,然后详细阐述Twisted的设计思路,如何通过增强可测试性来解决事件驱动型编程中所固有的可靠性、调试和从头到尾的因果关联等难题。本书还介绍了异步编程,强调了函数、Deferred和协程的重要性,然后通过treq和Klein这两个流行的应用程序演示了基于Twisted的Web API 编写和调用。 

     
    本书第②部分介绍了多个Twisted项目案例。每个案例都描述了项目如何融入Twisted生态,以及其在Twisted生态中所发挥的作用,通过具体的示例使读者能够更快地跟上节奏。读者也可以通过参考资料来获取更深层的理解。典型案例包括在Docker中使用Twisted、使用Twisted作为WSGI服务器、进行文件共享等。本书探讨了Twisted,一种基于Python的事件驱动型网络引擎框架,并讲解了几个流行的应用程序项目。Twisted由社区引领者们所开发,他们不仅为上述项目做出了巨大贡献,同时也分享了他们来之不易的见解和经验。 

    Mark Williams在工作中使用Twisted,曾在eBay和PayPal负责高性能Python Web服务(日请求量达10亿次以上)、应用和信息安全,以及将企业级的只支持Java的库移植到Python上。 

     
    Cory Benfield是一名Python开源开发人员,主要活跃在Python HTTP社区。他是Request和urllib3的核心贡献者,领导了Hyper―一个用于Python的HTTP和HTTP/2工具的集合项目的维护工作,还帮助解决了PyOpenSSL上的Python密码授权问题。 

     
    Brian Warner是一名安全工程师和软件开发人员,曾在Mozilla公司从事Firefox Sync、附加SDK和Persona方面的工作。他还是Tahoe-LAFS分布式安全文件系统的联合创始人,开发了安全存储和通信工具。 

     
    Moshe Zadka自1995年以来一直是开源社区的一员,于1998年完成了他的第一个核心Python贡献,并且是Twisted开源项目的创始成员。他喜欢教授Twisted和Python,在几次会议上做过专题报告,还经常写博客。 

     
    Dustin Mitchell为Buildbot的研发做出了贡献,他是Mozilla公司TaskCluster团队的成员,曾从事过发布工程、发布运营和基础设施团队方面的工作。 

     
    Kevin Samuel从Python 2.4开始就是一名开发人员和培训师,他将自己的技能应用到了东欧、北美、亚洲和西非。他一直与Crossbar.io团队密切合作,而且是法国Python社区的活跃成员。 
    Pierre Tardy是雷诺软件实验室的持续集成专家,目前是Buildbot的首席提交人。 

     

     
    【第一部分 基础】 
    第1章 基于Twisted的事件驱动编程2 
    1.1 一个关于Python版本的注释3 
    1.2 什么是事件驱动编程3 
    1.3 多重事件3 
    1.4 Application (tkinter.Tk()).mainloop()4 
    1.5 多路复用和多路分解5 
    1.6 select多路复用6 
    1.6.1 select的历史、成员及目的6 
    1.6.2 select和套接字7 
    1.6.3 套接字事件的“如何”和“为什么”8 
    1.6.4 处理事件9 
    1.6.5 一个使用select的事件循环10 
    1.6.6 事件驱动的客户端和服务器11 
    1.7 非阻塞I/O14 
    1.7.1 知道何时停止14 
    1.7.2 跟踪状态14 
    1.7.3 状态让程序更复杂18 
    1.8 通过传输和协议管理复杂度18 
    1.9 传输:使用协议19 
    1.9.1 使用传输和协议打乒乓球20 
    1.9.2 具有协议和传输的客户端与服务器24 
    1.9.3 Twisted和反应器、协议以及传输25 
    1.10 事件驱动编程的价值25 
    1.11 Twisted和现实世界27 
    1.12 实时事件31 
    1.13 通过zope.interface来实现的事件接口35 
    1.14 事件驱动程序中的流控制37 
    1.15 Twisted中的流控制以及生产者和消费者38 
    1.15.1 推送生产者38 
    1.15.2 消费者41 
    1.15.3 拉起生产者43 
    1.16 小结43 

     
    第2章 Twisted异步编程介绍45 
    2.1 事件处理程序和组合45 
    2.2 什么是异步编程48 
    2.3 未来值的占位符48 
    2.4 异步式异常处理50 
    2.5 Twisted中的Deferred介绍54 
    2.5.1 callback54 
    2.5.2 errback和Failure55 
    2.5.3 组合Deferred58 
    2.6 生成器和内联回调61 
    2.6.1 yield表达式61 
    2.6.2 send方法62 
    2.6.3 throw方法64 
    2.6.4 使用内联回调进行异步编程65 
    2.7 Python中的协程67 
    2.7.1 使用yield from的协程67 
    2.7.2 协程的async和await用法68 
    2.8 等待Deferred73 
    2.9 通过ensureDeferred使用协程74 
    2.10 多路复用Deferred75 
    2.11 测试Deferred78 
    2.12 小结81 

     
    第3章 使用treq和Klein的应用83 
    3.1 为何使用库83 
    3.2 feed聚合84 
    3.3 treq介绍85 
    3.4 Klein介绍87 
    3.4.1 Klein和Deferred89 
    3.4.2 使用Plating构建Klein模板90 
    3.5 feed聚合初探92 
    3.6 使用Klein和treq进行测试驱动开发97 
    3.6.1 在可安装项目上运行测试98 
    3.6.2 使用StubTreq测试Klein101 
    3.6.3 使用Klein测试treq107 
    3.6.4 使用twisted.logger记录日志110 
    3.6.5 使用twist运行Twisted应用程序115 
    3.7 小结118 

     
    【第二部分 项目】 
    第4章 在Docker中使用Twisted122 
    4.1 Docker介绍122 
    4.1.1 容器123 
    4.1.2 容器镜像123 
    4.1.3 runc和containerd124 
    4.1.4 客户端124 
    4.1.5 注册服务器125 
    4.1.6 镜像构建125 
    4.1.7 多阶段构建126 
    4.2 在Docker中使用Python127 
    4.2.1 部署选项127 
    4.2.2 虚拟环境132 
    4.2.3 Pex133 
    4.2.4 构建选项134 
    4.3 在Docker中使用Twisted135 
    4.3.1 ENTRYPOINT入口点和进程ID 1135 
    4.3.2 自定义插件136 
    4.3.3 NColony136 
    4.4 小结138 

     
    第5章 使用Twisted作为WSGI服务器139 
    5.1 WSGI介绍139 
    5.1.1 PEP140 
    5.1.2 原生案例141 
    5.1.3 参考实现142 
    5.1.4 WebOb示例144 
    5.1.5 Pyramid示例145 
    5.2 开始146 
    5.2.1 WSGI服务器146 
    5.2.2 为什么使用Twisted149 
    5.3 使用多核的策略161 
    5.3.1 负载均衡器162 
    5.3.2 在共享模式下打开套接字163 
    5.3.3 其他选项165 
    5.4 动态配置166 
    5.4.1 可A/B测试的Pyramid应用程序166 
    5.4.2 使用AMP自定义插件167 
    5.4.3 控制程序170 
    5.5 小结171 

     
    第6章 Tahoe-LAFS: 权限最少的文件系统173 
    6.1 Tahoe-LAFS是如何工作的173 
    6.2 系统架构176 
    6.3 Tahoe-LAFS如何使用Twisted178 
    6.4 曾经遇到的问题178 
    6.5 内部文件节点接口180 
    6.6 前端协议组合181 
    6.7 Web前端181 
    6.7.1 文件类型、内容类型、/name/183 
    6.7.2 保存至磁盘184 
    6.7.3 Range标头185 
    6.7.4 返回端的错误转换186 
    6.7.5 渲染UI元素:Nevow模板187 
    6.8 FTP前端187 
    6.9 SFTP前端192 
    6.10 向后不兼容的Twisted API192 
    6.11 小结194 
    6.12 参考资料195 

     
    第7章 Magic Wormhole196 
    7.1 Magic Wormhole看起来像什么197 
    7.2 Magic Wormhole是如何工作的198 
    7.3 网络协议、传输延迟、客户端兼容性199 
    7.4 服务器架构201 
    7.5 传输客户端:可取消的Deferred203 
    7.6 传输中继服务器205 
    7.7 Wormhole客户端架构206 
    7.8 Deferred与状态机的比较207 
    7.9 一次性观察者209 
    7.10 Promise/Future与Deferred的比较210 
    7.11 最终发送和同步测试213 
    7.12 使用Deferred进行异步测试214 
    7.13 使用Defferred进行同步测试215 
    7.14 小结219 
    7.15 参考资料219 

     
    第8章 使用WebSocket将数据推送到浏览器和微服务221 
    8.1 为什么使用WebSocket221 
    8.2 WebSocket和Twisted222 
    8.3 原始WebSocket,从Python到Python223 
    8.4 原始WebSocket,在Python和JavaScript之间227 
    8.5 带有WAMP的更强大的WebSocket229 
    8.6 小结235 

     
    第9章 使用asyncio和Twisted的应用程序237 
    9.1 核心概念237 
    9.2 Promise238 
    9.3 准则239 
    9.4 案例研究:具有aiohttp和treq的代理242 
    9.5 小结246 

     
    第10章 Buildbot和Twisted247 
    10.1 Buildbot的历史247 
    10.1.1 Buildbot异步Python的演变248 
    10.1.2 迁移同步API250 
    10.1.3 异步构建步骤251 
    10.2 Buildbot的代码251 
    10.2.1 异步实用程序252 
    10.2.2 去抖动252 
    10.2.3 异步服务252 
    10.2.4 LRU缓存254 
    10.2.5 eventual255 
    10.2.6 与同步代码结合255 
    10.2.7 SQLAlchemy255 
    10.2.8 request256 
    10.2.9 Docker258 
    10.2.10 共享资源的并发访问259 
    10.2.11 测试261 
    10.2.12 伪造262 
    10.3 小结263 

     
    第11章 Twisted和HTTP/2264 
    11.1 介绍264 
    11.2 设计目标266 
    11.2.1 无缝集成266 
    11.2.2 默认情况下最优化的行为267 
    11.2.3 分离问题和代码重用267 
    11.3 实现中的问题268 
    11.3.1 标准接口的价值以及什么是连接268 
    11.3.2 多路复用和优先级270 
    11.3.3 背压275 
    11.3.4 Twisted中的背压277 
    11.3.5 HTTP/2中的背压279 
    11.4 现状和未来发展281 
    11.5 小结282 

     
    第12章 Twisted和Django Channel283 
    12.1 介绍283 
    12.2 Channel构建基块284 
    12.3 消息代理和队列285 
    12.4 Twisted分布式多层系统286 
    12.5 现状和未来发展287 
    12.6 小结288 

  • 内容简介:
    本书探讨了Twisted,一种基于Python的事件驱动型网络引擎框架,并讲解了几个流行的应用程序项目。Twisted由社区引领者们所开发,他们不仅为上述项目做出了巨大贡献,同时也分享了他们来之不易的见解和经验。
     

     
    本书第①部分首先介绍事件驱动型编程,解释Twisted之所以独特的缘由,然后详细阐述Twisted的设计思路,如何通过增强可测试性来解决事件驱动型编程中所固有的可靠性、调试和从头到尾的因果关联等难题。本书还介绍了异步编程,强调了函数、Deferred和协程的重要性,然后通过treq和Klein这两个流行的应用程序演示了基于Twisted的Web API 编写和调用。 

     
    本书第②部分介绍了多个Twisted项目案例。每个案例都描述了项目如何融入Twisted生态,以及其在Twisted生态中所发挥的作用,通过具体的示例使读者能够更快地跟上节奏。读者也可以通过参考资料来获取更深层的理解。典型案例包括在Docker中使用Twisted、使用Twisted作为WSGI服务器、进行文件共享等。本书探讨了Twisted,一种基于Python的事件驱动型网络引擎框架,并讲解了几个流行的应用程序项目。Twisted由社区引领者们所开发,他们不仅为上述项目做出了巨大贡献,同时也分享了他们来之不易的见解和经验。 

  • 作者简介:
    Mark Williams在工作中使用Twisted,曾在eBay和PayPal负责高性能Python Web服务(日请求量达10亿次以上)、应用和信息安全,以及将企业级的只支持Java的库移植到Python上。 

     
    Cory Benfield是一名Python开源开发人员,主要活跃在Python HTTP社区。他是Request和urllib3的核心贡献者,领导了Hyper―一个用于Python的HTTP和HTTP/2工具的集合项目的维护工作,还帮助解决了PyOpenSSL上的Python密码授权问题。 

     
    Brian Warner是一名安全工程师和软件开发人员,曾在Mozilla公司从事Firefox Sync、附加SDK和Persona方面的工作。他还是Tahoe-LAFS分布式安全文件系统的联合创始人,开发了安全存储和通信工具。 

     
    Moshe Zadka自1995年以来一直是开源社区的一员,于1998年完成了他的第一个核心Python贡献,并且是Twisted开源项目的创始成员。他喜欢教授Twisted和Python,在几次会议上做过专题报告,还经常写博客。 

     
    Dustin Mitchell为Buildbot的研发做出了贡献,他是Mozilla公司TaskCluster团队的成员,曾从事过发布工程、发布运营和基础设施团队方面的工作。 

     
    Kevin Samuel从Python 2.4开始就是一名开发人员和培训师,他将自己的技能应用到了东欧、北美、亚洲和西非。他一直与Crossbar.io团队密切合作,而且是法国Python社区的活跃成员。 
    Pierre Tardy是雷诺软件实验室的持续集成专家,目前是Buildbot的首席提交人。 

     

  • 目录:
     
    【第一部分 基础】 
    第1章 基于Twisted的事件驱动编程2 
    1.1 一个关于Python版本的注释3 
    1.2 什么是事件驱动编程3 
    1.3 多重事件3 
    1.4 Application (tkinter.Tk()).mainloop()4 
    1.5 多路复用和多路分解5 
    1.6 select多路复用6 
    1.6.1 select的历史、成员及目的6 
    1.6.2 select和套接字7 
    1.6.3 套接字事件的“如何”和“为什么”8 
    1.6.4 处理事件9 
    1.6.5 一个使用select的事件循环10 
    1.6.6 事件驱动的客户端和服务器11 
    1.7 非阻塞I/O14 
    1.7.1 知道何时停止14 
    1.7.2 跟踪状态14 
    1.7.3 状态让程序更复杂18 
    1.8 通过传输和协议管理复杂度18 
    1.9 传输:使用协议19 
    1.9.1 使用传输和协议打乒乓球20 
    1.9.2 具有协议和传输的客户端与服务器24 
    1.9.3 Twisted和反应器、协议以及传输25 
    1.10 事件驱动编程的价值25 
    1.11 Twisted和现实世界27 
    1.12 实时事件31 
    1.13 通过zope.interface来实现的事件接口35 
    1.14 事件驱动程序中的流控制37 
    1.15 Twisted中的流控制以及生产者和消费者38 
    1.15.1 推送生产者38 
    1.15.2 消费者41 
    1.15.3 拉起生产者43 
    1.16 小结43 

     
    第2章 Twisted异步编程介绍45 
    2.1 事件处理程序和组合45 
    2.2 什么是异步编程48 
    2.3 未来值的占位符48 
    2.4 异步式异常处理50 
    2.5 Twisted中的Deferred介绍54 
    2.5.1 callback54 
    2.5.2 errback和Failure55 
    2.5.3 组合Deferred58 
    2.6 生成器和内联回调61 
    2.6.1 yield表达式61 
    2.6.2 send方法62 
    2.6.3 throw方法64 
    2.6.4 使用内联回调进行异步编程65 
    2.7 Python中的协程67 
    2.7.1 使用yield from的协程67 
    2.7.2 协程的async和await用法68 
    2.8 等待Deferred73 
    2.9 通过ensureDeferred使用协程74 
    2.10 多路复用Deferred75 
    2.11 测试Deferred78 
    2.12 小结81 

     
    第3章 使用treq和Klein的应用83 
    3.1 为何使用库83 
    3.2 feed聚合84 
    3.3 treq介绍85 
    3.4 Klein介绍87 
    3.4.1 Klein和Deferred89 
    3.4.2 使用Plating构建Klein模板90 
    3.5 feed聚合初探92 
    3.6 使用Klein和treq进行测试驱动开发97 
    3.6.1 在可安装项目上运行测试98 
    3.6.2 使用StubTreq测试Klein101 
    3.6.3 使用Klein测试treq107 
    3.6.4 使用twisted.logger记录日志110 
    3.6.5 使用twist运行Twisted应用程序115 
    3.7 小结118 

     
    【第二部分 项目】 
    第4章 在Docker中使用Twisted122 
    4.1 Docker介绍122 
    4.1.1 容器123 
    4.1.2 容器镜像123 
    4.1.3 runc和containerd124 
    4.1.4 客户端124 
    4.1.5 注册服务器125 
    4.1.6 镜像构建125 
    4.1.7 多阶段构建126 
    4.2 在Docker中使用Python127 
    4.2.1 部署选项127 
    4.2.2 虚拟环境132 
    4.2.3 Pex133 
    4.2.4 构建选项134 
    4.3 在Docker中使用Twisted135 
    4.3.1 ENTRYPOINT入口点和进程ID 1135 
    4.3.2 自定义插件136 
    4.3.3 NColony136 
    4.4 小结138 

     
    第5章 使用Twisted作为WSGI服务器139 
    5.1 WSGI介绍139 
    5.1.1 PEP140 
    5.1.2 原生案例141 
    5.1.3 参考实现142 
    5.1.4 WebOb示例144 
    5.1.5 Pyramid示例145 
    5.2 开始146 
    5.2.1 WSGI服务器146 
    5.2.2 为什么使用Twisted149 
    5.3 使用多核的策略161 
    5.3.1 负载均衡器162 
    5.3.2 在共享模式下打开套接字163 
    5.3.3 其他选项165 
    5.4 动态配置166 
    5.4.1 可A/B测试的Pyramid应用程序166 
    5.4.2 使用AMP自定义插件167 
    5.4.3 控制程序170 
    5.5 小结171 

     
    第6章 Tahoe-LAFS: 权限最少的文件系统173 
    6.1 Tahoe-LAFS是如何工作的173 
    6.2 系统架构176 
    6.3 Tahoe-LAFS如何使用Twisted178 
    6.4 曾经遇到的问题178 
    6.5 内部文件节点接口180 
    6.6 前端协议组合181 
    6.7 Web前端181 
    6.7.1 文件类型、内容类型、/name/183 
    6.7.2 保存至磁盘184 
    6.7.3 Range标头185 
    6.7.4 返回端的错误转换186 
    6.7.5 渲染UI元素:Nevow模板187 
    6.8 FTP前端187 
    6.9 SFTP前端192 
    6.10 向后不兼容的Twisted API192 
    6.11 小结194 
    6.12 参考资料195 

     
    第7章 Magic Wormhole196 
    7.1 Magic Wormhole看起来像什么197 
    7.2 Magic Wormhole是如何工作的198 
    7.3 网络协议、传输延迟、客户端兼容性199 
    7.4 服务器架构201 
    7.5 传输客户端:可取消的Deferred203 
    7.6 传输中继服务器205 
    7.7 Wormhole客户端架构206 
    7.8 Deferred与状态机的比较207 
    7.9 一次性观察者209 
    7.10 Promise/Future与Deferred的比较210 
    7.11 最终发送和同步测试213 
    7.12 使用Deferred进行异步测试214 
    7.13 使用Defferred进行同步测试215 
    7.14 小结219 
    7.15 参考资料219 

     
    第8章 使用WebSocket将数据推送到浏览器和微服务221 
    8.1 为什么使用WebSocket221 
    8.2 WebSocket和Twisted222 
    8.3 原始WebSocket,从Python到Python223 
    8.4 原始WebSocket,在Python和JavaScript之间227 
    8.5 带有WAMP的更强大的WebSocket229 
    8.6 小结235 

     
    第9章 使用asyncio和Twisted的应用程序237 
    9.1 核心概念237 
    9.2 Promise238 
    9.3 准则239 
    9.4 案例研究:具有aiohttp和treq的代理242 
    9.5 小结246 

     
    第10章 Buildbot和Twisted247 
    10.1 Buildbot的历史247 
    10.1.1 Buildbot异步Python的演变248 
    10.1.2 迁移同步API250 
    10.1.3 异步构建步骤251 
    10.2 Buildbot的代码251 
    10.2.1 异步实用程序252 
    10.2.2 去抖动252 
    10.2.3 异步服务252 
    10.2.4 LRU缓存254 
    10.2.5 eventual255 
    10.2.6 与同步代码结合255 
    10.2.7 SQLAlchemy255 
    10.2.8 request256 
    10.2.9 Docker258 
    10.2.10 共享资源的并发访问259 
    10.2.11 测试261 
    10.2.12 伪造262 
    10.3 小结263 

     
    第11章 Twisted和HTTP/2264 
    11.1 介绍264 
    11.2 设计目标266 
    11.2.1 无缝集成266 
    11.2.2 默认情况下最优化的行为267 
    11.2.3 分离问题和代码重用267 
    11.3 实现中的问题268 
    11.3.1 标准接口的价值以及什么是连接268 
    11.3.2 多路复用和优先级270 
    11.3.3 背压275 
    11.3.4 Twisted中的背压277 
    11.3.5 HTTP/2中的背压279 
    11.4 现状和未来发展281 
    11.5 小结282 

     
    第12章 Twisted和Django Channel283 
    12.1 介绍283 
    12.2 Channel构建基块284 
    12.3 消息代理和队列285 
    12.4 Twisted分布式多层系统286 
    12.5 现状和未来发展287 
    12.6 小结288 

查看详情
相关图书 / 更多
精通Twisted:Python事件驱动及异步编程
精通 Power Query
(加拿大)肯·普尔斯
精通Twisted:Python事件驱动及异步编程
精通套期保值
李录林 著
精通Twisted:Python事件驱动及异步编程
精通STM32F4(HAL库版)(上)
刘军 凌柱宁 徐伟健 江荧
精通Twisted:Python事件驱动及异步编程
精通FrontPage XP(中文版)
中国IT培训工程编委会 编
精通Twisted:Python事件驱动及异步编程
精通咬合重建——解读牙列不齐、牙周病、多牙缺失
吴松涛 周茂强 译;[日]上田 秀朗
精通Twisted:Python事件驱动及异步编程
精通Veeam Backup & Replication(原书第2版)
克里斯·奇尔德霍森(Chris Childerhose)
精通Twisted:Python事件驱动及异步编程
精通Shiny(Mastering Shiny)
Hadley Wickham
精通Twisted:Python事件驱动及异步编程
精通区块链开发技术(第2版)
[美]伊姆兰·巴希尔 著;王烈征 译
精通Twisted:Python事件驱动及异步编程
精通Apache Pulsar:可伸缩云原生事件流实践
[美]Jowanza Joseph(乔万扎·约瑟夫
精通Twisted:Python事件驱动及异步编程
精通机器学习算法
[意]朱塞佩·博纳科尔索(Giuseppe Bonaccorso)
精通Twisted:Python事件驱动及异步编程
精通嵌入式Linux编程
[美]弗兰克·瓦斯奎兹 著;陈会翔 译
精通Twisted:Python事件驱动及异步编程
精通Transformer:从零开始构建最先进的NLP模型
[伊朗]梅萨姆·阿斯加里-切纳格卢 著;江红 余青松 余靖 译;[土耳其]萨瓦斯·伊尔蒂利姆
您可能感兴趣 / 更多
精通Twisted:Python事件驱动及异步编程
齐波的植物图集
马克·让松
精通Twisted:Python事件驱动及异步编程
就要付出一切(全面了解攀岩文化与精神,《徒手攀岩》主角传记)
马克·辛诺特 著;新经典 出品
精通Twisted:Python事件驱动及异步编程
胸外科疑难病症诊断决策(第4版)
马克·K.弗格森
精通Twisted:Python事件驱动及异步编程
算法社会:技术、权力和知识(法律与科技译丛)
马克·舒伦伯格(Marc Schuilenburg)
精通Twisted:Python事件驱动及异步编程
天猫文库:汤姆·索亚历险记:法国百年艺术出版社甄选(小学六年级上 快乐读书吧)
马克·吐温 著;张友松 译
精通Twisted:Python事件驱动及异步编程
纯粹·盗贼之家
马克·特雷尼克 纯粹 Pura 出品
精通Twisted:Python事件驱动及异步编程
非地点:超现代性人类学导论
马克·奥热
精通Twisted:Python事件驱动及异步编程
避风港:金融风暴中的安全投资
马克·斯皮茨纳格尔
精通Twisted:Python事件驱动及异步编程
人工智能伦理学
马克·考科尔伯格
精通Twisted:Python事件驱动及异步编程
灵工经济--批判性导论
马克·格雷厄姆 著;董志强 译;[英]杰米·伍德考克
精通Twisted:Python事件驱动及异步编程
战争回忆录:1914—1915
马克·布洛赫
精通Twisted:Python事件驱动及异步编程
第二语言习得中的形式—意义联结
马克·奥弗斯特里特 主编;欧阳敏姿 译;[美]比尔·范帕腾;杰西卡·威廉姆斯;苏珊娜·罗特;杨燕锋;张晓帅