9 月 21 号周六,我参加了 PyCon China 2019 上海站,这是每年一届的 Python 中国开发者大会。

今年的上海站比往年的阵容扩大很多,「流畅的 Python」作者、Flask 作者及核心维护者、PyCharm 开发者等等大佬都登台演讲。

本文将总结一下我观看的演讲,但并不会深入和完整,如有感兴趣的主题,可以等待官方后续放出的视频,我的公众号到时候也会转载。

Python 的永恒之美

「流畅的 Python」作者 Luciano Ramalho,作为首场演讲的嘉宾,他的讲题围绕着 Python 之禅(PEP 20: The Zen of Python),结合了国际象棋、围棋、甚至易经,再次诠释 Python 语法的优美之处。

他还表示 Python 非常适合女性开发,介绍了 Python 开发团队拥有很多女性加入,顺带调侃了 Python 作者 Guido 在演讲中只回答女性的提问。

通过 Azure 实现图片分类

第二场是由微软开发者 Dave Glover,介绍如何使用 Python 与微软 Azure 的免费云服务,构建一套 IoT 图片分类系统,并演示了开发一个水果分类功能,将不同水果的图片进行简单训练后,就可以用于超市收银台快速计算不同水果的价格(不过现场似乎因为音画不同步,导致有些小意外...)。

另外下午场微软 VS Code 还现场发布了在 Python 领域的新功能,具体可见公众号次条推送。

AWS Serverless 一站式开发

结束了前两场英语听力后(翻译在文末吐槽),第三场是来自宝岛台湾的谢洪恩,他是 AWS 无服务器与容器专家解决方案架构师。他介绍了 AWS 近几年在 Serverless 领域发布的新技术,主要包括:

  • AWS Lambda
  • AWS SAR(Serverless Application Repository)
  • AWS CDK(Cloud Development Kit)

利用这些技术让 Python 开发者在无服务器的情况下,完成一站式开发部署(也支持其它多种语言),并且还介绍了在微服务框架中的应用。

另外在下午场中,谢老师还进行了三个小时的 AWS WorkShop 专场,现场指导开发者们,在 AWS CDK 中从零开始完成一个完整项目。但可惜由于时间冲突,我没有选择参加。

Flask 作者谈调试

Flask、Werkzeug、Jinja2、Click 等开源项目的作者 Armin Ronacher,讲述他在 Python 调试方面的新看法,并通过最近使用 Rust 语言的开发经历,发现了 Python 在性能上较慢反而对调试有帮助。

遗憾的是他英语语速很快,PPT 文字内容也比较少,我并没有听懂太多细节,需要等待视频再复习一波。

在调试上的新实现

上午最后一场,是由 Google 软件工程师、《捕蛇者说》播客创始人 laike9m 演讲,同样是调试的话题,但他带来的是一个新思路,以及已经实现的开源库 —— Cyberbrain

主要思路是对目标变量进行追踪,通过可视化界面查看变量从初始化一直到目标行的过程,从而帮助快速定位 BUG。

以下是一段示例代码:

def func_f(bar):     x = len(bar)     return x  def func_c(baa):     baa.append(None)     baa.append('?')  def func_a(foo):     for i in range(2): pass     ba = [foo]     func_c(ba)     foo = func_f(ba)     cyberbrain.register(foo)  import cyberbrain cyberbrain.init() fo = 1 func_a(fo) 

通过对 foo 变量的注册,可以产生以下输出:

并且支持持久化存储,即使在服务器上也可以 DEBUG。

AIOps 数据中台与 Python

下午场都是同时开始的分会场,所以我只能选择听自己感兴趣的场次。

最近两年“中台”概念比较火,我公司也已经有中台,所以我首场选择了这个中台话题的场次,嘉宾是来自阿里云日志服务的丁来强。

他演讲的内容主要是介绍目前市面上众多 AIOps 平台,并介绍如何通过开源的 AIOps 搭建数据中台,来解决数据收集、算法处理海量日志等以往需要大量人工的问题。

至于 Ops 的未来趋势,他表示:

根据 Gartner 的报告,AIOps 将在未来 5-10 年落地开花,并集中统一各种 Ops 平台(Dev、IT、Net、Sec)。

Django 中运用 GraphQL

先介绍一下 GraphQL,它是 Facebook 发布 API 查询语言,旨在提供 RestFul 架构体系的替代方案,但一直鲜有人用,甚至鲜有人知。

目前 RestFul API 存在的问题是,返回的数据结构和类型都是后端定义,前端需求变化,后端也要随之改变,如果是中大型项目,改动接口是会产生大量连带工作量。

而 GraphQL 就是解决这一痛点,它实现了前端可以自定义请求字段与结构,而后端则专心处理请求逻辑与数据库映射。具体不再多介绍,可查阅相关资料。