PyCon China 深圳站精彩回顾(附PPT及视频)


PyCon China 深圳站精彩回顾(附PPT及视频)_java

程派微信号:codingpy

本文为 PyChina 和「编程派」联合首发,作者为 EarlGrey。「编程派」是一个专注 Python 学习交流的微信公众号。

另祝大家国庆快乐!国庆期间我打算歇息了,假期结束后再见。

9 月 25 日,第六届 PyCon China 大会在深圳召开。这是这次大会的第二站活动,第一站已在上海成功举办。据官方介绍,PyCon China 过去 5 年已经在北京、上海、广州、珠海、杭州等地举办过十几次大会,影响达数万 Python 开发者。

这也是笔者接触 Python 近两年以来,第一次参加该大会。虽然此前在社区里听说了许多关于去年大会的负面言论,大多谈到广告太多,今年组织者在这方面做了不错的改进。至少从深圳场的情况来看,干货挺多。

深圳站视频及PPT,请在公众号后台回复”pysz“,获取分享链接。

上海站:http://www.huodongxing.com/go/pycon2016sh

10月25日北京站:http://www.huodongxing.com/go/pycon2016bj

1. 潘俊勇:脚本化及可视化编程

潘俊勇是一位 Python 老兵,方向是企业应用开发。在当天的分享中,他结合自身的工作经验,指出了当前应用开发存在的问题。

他认为,目前是互联网的“大航海”时代,技术创新的速度很快,后端框架每 5 年一变,前端 web 框架更是半年一变。与此同时,技术发展变得越来越复杂,开发周期更长,沟通管理的成功更高,应用的维护更加复杂。而且现在行业很热,开发人员薪资高,导致大量菜鸟都想转入开发(笔者也曾经这样想过)。

由于近两年云计算的快速发展,逐渐开始出现一种云端一体的开发方式,让应用开发回归简单,甚至可以做到无栈开发。其中一个趋势,就是可视化编程。

基于 PaaS 平台及其提供的各种 API 服务,可视化、脚本化开发成为可能。API 的全面开放,完全可以处理用户管理、消息服务、日志等后端功能,免去后端开发的需要。这样的优势是开发速度快,专注于产品,而不是仅仅写代码。

PyCon China 深圳站精彩回顾(附PPT及视频)_java_02

他以 Blockly 为例说明了可视化编程的好处。Blockly 是谷歌推出的一款可视化编程编辑器库,可以将图形化的程序翻译成 js、dart、Python 等多种语言。目前主要应用于编程学习领域,尤其是 5-7 岁低龄儿童学习编程。

PyCon China 深圳站精彩回顾(附PPT及视频)_java_03


最后,他之处,未来技术的门槛会越来越低,需要更懂产品的 Creator,而不是只知道编程的 Geek。

2. 丁来强:Python Hooking Technology

丁来强是美国顶尖大数据公司Splunk的资深 Python 工程师,拥有 10 多年的工作经验。在上海站,他分享了如何使用 Python 进行高效大数据工作流与任务调度。而在深圳场,他带来了同样精彩的 Hooking 技术分享,演示了许多平常使用较少但却非常奇妙的功能。

在他看来,Hooking 技术在 Python 中可以从以下四个层面进行应用:

  1. 对象和可变性
  2. 系统层面的 hook
  3. 语言层面的 hook
  4. 解释器层面的 hook

PyCon China 深圳站精彩回顾(附PPT及视频)_java_04

Hooking 技术的使用场景也非常多,可以用于 monkey pathcing,做单元测试,错误处理,甚至是一些简单的自动代码修复。此外,还可以使用 hooking 技术对代码进行动态分析,如性能分析、冲突检查等。

在演讲过程中,丁来强对上述使用场景给出了大量的代码实例,看的非常过瘾。详细的情况请回复关键词“pysz”下载相关的 PPT

上述这些 hooking 技术,都是 Python 设计时就提供的灵活性支持,而非大家所理解的 hack 技术。这点在问答环节丁来强也进行了特别强调。

3. 李力:腾讯云的 Python 实践

这是当天上午的最后一个演讲。嘉宾是来自腾讯云的布道师、CVM技术负责人李力。据说这是他第一次参加这样的公开活动,也是第一次在外部介绍 Python 在腾讯云的实践。

腾讯是一家大量使用 C++ 的公司,讲者当初也是作为 C++ 程序员进入该公司的。2007 年,开始接触了 Python,很快就将其认定为一门可以”带你装逼带你飞“的语言。出于对 Python 在云计算方面的信心,李力从 2012 年开始在腾讯云推广使用 Python。

PyCon China 深圳站精彩回顾(附PPT及视频)_java_05


推广初期碰到了一定的阻力,这点对于任何想在公司推广新技术的人来说都是无法避免的。针对领导们的担忧,李力强调了在公有云中使用 Python 的诸多优势:

  • 与 Linux 系统天然贴合,系统编程 API 与 glibcc 保持一致,以前的工具箱仍然适用。
  • 是能够运行的伪代码,开发效率得到极大提升。
  • 容易与 C/C++交互,使用 ctypes 可以很方便地调用 C 代码。
  • 更容易保持项目的整洁。

基于这些考虑,腾讯云开始慢慢尝试引入 Python。首先就是改造接入层,使用 Flask + uWSGI + Nginx 改造了旧的 CGI 接口,使得开发工作更加简单,接口更加现代化。

PyCon China 深圳站精彩回顾(附PPT及视频)_java_06

另外,腾讯云还将 Python 用于系统编程,开发了公有云上的宿主机包管理工具。据说这个工具上线几年来运行都没有出什么问题。一般开发者很少有将 Python 用于系统编程的,腾讯云之所以选择 Python,是由于其标准库与 POSIX 规范天然贴合,具备优秀的文本处理和分析能力,而且还有完备的网络功能等原因。

PyCon China 深圳站精彩回顾(附PPT及视频)_java_07


接下来,他还介绍了云调度系统的框架,并分享了在大规模系统中的应用 Python 技术的一些坑。

另外,总的来看,这场演讲可能是现场笑声最多的一次。

4. River:QPython - Python for Android

听 River 的分享之前,我以为 QPython 只是一个让我在安卓手机上练习写 Python 代码的 APP 而已。但是听完之后,我觉得自己完全想错了。QPython 的野心是做一个生态。

PyCon China 深圳站精彩回顾(附PPT及视频)_java_08


一开始,River 通过一个利用 QPython 调用翻译 API 的示例,演示了一般程序员的具体使用场景。接着他介绍了自己开发 QPython 的由来。

QPython 的团队中目前只有两个人左右,而拥有的国内外用户已经达百万。这一切都起源于 River 等人对 Android Studio 编译速度的不满。在 River 看来,并不是所有的 APP 都需要原生的速度,很多时候开发速度更重要。

目前 QPython 正在逐步的开源当中,功能也比刚开始时丰富了许多。针对用户反馈的手机上编码不方便的问题,QPython 团队推出了 qpy.io 服务(国外服务器,国内访问受限)。通过该服务,用户可以在浏览器中在线编辑手机上的代码,然后在手机上进行调试,而且支持在线导出 APK。

PyCon China 深圳站精彩回顾(附PPT及视频)_java_09


据介绍,QPython 目前支持多种 APP 开发库,如 Bottle(内置)、Django、Flask 和 Kivy 等。同还可以通过 QSL4A,让开发者充分利用安卓手机的特性。

谈到 QPython 的未来,River 表示非常有信心,未来将在国内建立服务,开放第三方库提交,并开发 QScript 市场。

5. 何世友:ASGI 草案,Python 终于等到了

何世友是科技媒体爱范儿的 CTO。经常看爱范儿上的文章,只是没想到爱范儿使用的语言也是 Python。这场开始的大概是下午两点多的样子。说实话那个时候大家都挺困的。何世友一上来,据说就用了赖勇浩教的一招演讲技巧,让睡意浓浓的现场观众们起立为他“鼓掌”了 5 秒钟。

他的演讲主题是「ASGI 草案,Python 终于等到了」。ASGI 的全称是异步服务网关接口(Asynchronous Server Gateway Interface),是今年才由 Django 工作组提出的一个协议,目前还属于草案阶段。国内关注该协议的人非常少,几乎没有相关的中文介绍。

为了说明 ASGI 的由来,他从 Tim Bernes Lee 1989 年发明万维网开始,带现场观众走过了从 CGI 到 WSGI 的十年发展历程。一开始万维网只能传输静态文件,为了满足编写动态内容的需求,1993 年 CGI 由此诞生。但是使用 Python 编写 CGI 的方式特别的繁琐、低效,2003 年 Python 官方推出了 WSGI。该协议的推出,是为了统一标准,提高效率。甚至有开发者说,”有了 WSGI 之后,写 web 框架就像喝水一样简单。“

PyCon China 深圳站精彩回顾(附PPT及视频)_java_10

WSGI 提出之时,主流的网络协议还只有 HTTP。但是 2011 年,WebSocket 标准完成。次年,HTTP2 协议敲定。如今,HTTP 2 协议和 WebSocket 协议的使用越来越广泛。微信小程序的网络请求甚至规定了只能走 HTTP2 协议。因此,WSGI 协议确实到了需要更新的时候了。

在没有 ASGI 的情况下,目前使用 Python 来处理这三种协议,需要使用多个框架,项目复杂度增加。而 ASGI 的目标,就是在一个框架中直接处理三种协议请求。

PyCon China 深圳站精彩回顾(附PPT及视频)_java_11


ASGI 是基于 WSGI 的,是对后者的补充,由 protocol server、channel layer和 application 三层组成。如果 ASGI 协议最终普及,何世友认为能够显著提高开发效率,降低基础代码的迁移成本;但是同时也提示了需要注意的事项:

  • 需要更强力的 interface server
  • 需要特殊的 scaling 技巧
  • 需要和 WSGI 和谐共处等。

6. 张其川:自动化运维和工具

Python 在运维方面的应用,可能是最广泛的。这场的嘉宾张其川是自学 Python 的,自己还写了一个自动化运维的开源项目——CheungSSH。

PyCon China 深圳站精彩回顾(附PPT及视频)_java_12


在他看来,大数据和云计算时代,服务器的规模空前庞大,而人力成本则在不断攀升,自动化成为企业的必然需求。而选择 Python 做自动化,理由非常直接:

  • 简单易学
  • 使用简单,代码量少
  • 开源,学习方便,开发速度更快

对于以上三点,相信其他的 Python 爱好者都会认同。

他提出,自动化的目标就是省钱,无论使用的是什么工具,puppet 还是 ansible ,最终的标准都是能省多少钱。

如果你去看直播视频的话,你会发现这也是一位挺有趣的嘉宾。

7. 胡国涛:WEGO 的开源之旅

现在微信这么火,又出了小程序这个原子弹,作为 Python 程序员的我们如果想做微信公众号开发该怎么办?开源界其实有多个可选的框架,这次大会邀请到的是一个名叫 WEGO 的微信开发框架背后的团队成员。

和其他开源项目一样,WEGO 项目的起源都是因为开发者怕麻烦。微信公众号的开发,在胡国涛及其团队看来是比较麻烦的,主要体现在接口繁多、文档错乱和报错模糊。而且对于 Python 程序员来说,还得去学习 JS,麻烦的程度又高了很多。

WEGO 团队对自己的框架还是非常的自信,称有清晰的接口、完整的文档和详细的报错,并给出了具体的代码进行说明。

PyCon China 深圳站精彩回顾(附PPT及视频)_java_13


PyCon China 深圳站精彩回顾(附PPT及视频)_java_14

谈点笔者的个人观点。目前 WEGO 项目在中文网络上的介绍非常少,简单的百度搜索几乎找不到任何内容。只能从项目的 Github 项目地址了解。而其中列出的文档,也并不是那么完整。如果想让其他 Python 开发者使用该框架的话,希望 WEGO 团队再努力完善一下官方文档。

8. 馋师:Python 开发辅助软件提高工作效率

效率是开发者不变的追求。这场分享来自有五年 Python 编程经验的后端开发者馋师。他主要分享了以下三种利用 Python 提高工作效率的方式:

  1. 用Python开发比AutoHotkey更好用的热键软件,并同时支持Windows、Linux、Mac OS三种系统。
  2. 通过Monkey Patching实现运行时调用栈追踪,用于快速研究代码流程(10分钟弄懂一个框架),及实现非侵入式流程测试(不用埋点,不用加测试专用的函数参数)。
  3. 使用逐行注释法明示代码书写意图,成倍提升代码可读性和项目维护效率。

具体情况大家请看视频。

9. 石恩名:一种可视化爬虫技术分享

现在互联网行业对数据的重视程度越来越高,普通的业务工作人员获取数据的需求也越来越大。针对这类需求,逐渐出现了许多做可视化爬虫的公司,最突出的技术特点就是无需编码,可视化配置。这场分享中,广州一家大数据公司的技术经理分享了自己网络爬虫的框架,并介绍了如何解决构建可视化爬虫时碰到的问题。

在技术栈的选择上,我们这里只关注与爬虫爬取和存储直接相关的技术。该公司采用的是 Pyspider + PhantomJS 爬取页面,然后将结果存储在 mongoDB 和 redis 中。在数据库的选择上,讲者在某台机器上的结果显示如下,MongoDB 和 Redis 配合采集的速率优势明显。

PyCon China 深圳站精彩回顾(附PPT及视频)_java_15


分享者还探讨了使用机器学习技术的可能,可以用来计算两个页面的 HTML DOM 相似度,再通过多个相似页面计算 URL 正则表达式,来构建判别器。

在本文中不方便详细回顾具体的框架设计。如果你对设计爬虫系统有兴趣的话,推荐参考这里分享的框架。

10. 汤英康:大数据监控警告系统

最后这名分享者给出了一套完整的大数据监控告警平台产品方案,对于没有接触过数据监控系统设计的来说极其具有参考价值。

根据讲者的分享,监控系统主要涉及数据采集集、数据存储、数据可视化、数据警告等四大部分,同时要求系统做到高可用、高可伸缩和高并发。

最终的技术架构如下图所示:

PyCon China 深圳站精彩回顾(附PPT及视频)_java_16



欢迎转发至朋友圈。如无特殊注明,本公号所发文章均为原创或编译,如需转载,请联系「编程派」获得授权。