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

LeetCode 后端架构师李齐雨,介绍了 LeetCode 在最近两年,已经将十几万行 Django 代码构成的所有接口,更换为了 GraphQL。

更换后的好处则如上面所介绍,让接口迭代更加灵活。他主要分享的是期间遇到的一些问题,以及如何攻克,比如数据转换、查询性能优化等。

不过他也直言,如果对接口性能要求很高,建议暂时不要使用 GraphQL。

构建自动化测试集群

这一场是网易 Airtest 团队负责人杨柳,前半部分是介绍 Airtest 这一开源的自动化测试框架,在跨平台特别是 App、手游这方面的优势,框架集成的图像识别、控件识别大幅增加了自动化能力。

后半部分是分享网易游戏如何将自动化测试逐步扩展为大规模测试集群,并且介绍了如何使用 3x4 小型机柜,实现一个企业级、私有化的测试解决方案。

通过 Python 构建 RPC

来自饿了么的资深工程师张汝家,先是介绍了 thrift 这一款 RPC 协议,在目前微服务架构中的应用,以及目前 Python 实现的 thriftpy 和 thriftpy2 的区别和各自的应用场景。

然后他分享了使用 thriftpy 构建一套 RPC 协议架构的过程,中间不同分层该如何设计,并且其中一些通信与传输问题是如何解决的。

闪电演讲

最后的场次,是本届 PyCon 设置的新环节,每位嘉宾只有 5 分钟时间演讲,可惜部分嘉宾超时未完成演讲,实际效果欠佳。

不过有一个印象深刻的主题是将 C/C++ 代码转换为 .pyd 文件,Python 可直接调用。

演讲者是上海韦纳科技的韦泽华,他实现了此功能并开源名为 c2py,该项目与之前类似功能的 Swig 相比,c2py 更加易用,不需要像 Swig 写接口文件,just run c2py & build。

本次大会的观后感

相较于往期有非常大的进步,主要是:

  • 本届大咖云集,通过多位著名项目核心开发者的分享,学习他们在各自领域中独到的见解;
  • 分会场的设立,充分扩大了演讲的主题范围,也满足了不同方向的开发者不同的关注点。

但依然有部分遗憾之处,比如:

  • 第一场半程,某赞助商的 AI 翻译就莫名罢工,并且一上午都没有再启动,导致我等英语苦手,对三位国外大佬的演讲吸收量大减;
  • WorkShop 设置在下午分会场,如果选择了就相当于无缘同时间段的三场演讲,纠结之下我只能放弃参与。

总体本届还是收获满满,票价超值了,也看出主办方想办好 PyCon China 的决心,希望明年再加油,PyCon 明年见!


所有图片来自 PyCon China 官方拍摄

本文属于原创内容,首发于微信公众号「面向人生编程」,如需转载请在公众号后台留言。

关注后回复以下信息获取更多资源
回复【资料】获取 Python / Java 等学习资源
回复【插件】获取爬虫常用的 Chrome 插件
回复【知乎】获取最新知乎模拟登录

众咖云集的 PyCon 2019 上海站,大佬们都讲了啥的更多相关文章

  1. 速石科技携HPC混合云平台亮相AWS技术峰会2019上海站

    2019年6月20日,全球云技术盛会——AWS技术峰会2019(上海站)在上海世博中心举行.作为AWS的技术合作伙伴,速石科技携旗下基于混合云的一站式高性能计算(HPC)平台首次公开亮相. 速石科技向 ...

  2. 大咖云集!IMWebConf 2017 前端大会即将在深圳盛大开幕

    2017年火热的夏季,一年一度的IMWebConf强势来袭!9月16日,深圳科兴国际会议中心,我们将全心全意打造一场前端盛宴,恭候各位的光临. 作为一名前端老鸟,笔者有幸也参与了本次的大会的主题分享& ...

  3. 大咖云集!Kubernetes and Cloud Native Meetup 深圳站开始报名!

    由阿里技术生态联合 CNCF 官方共同出品的 Kubernetes & Cloud Native Meetup 将在 8 月 31 日来到深圳.届时,阿里云.蚂蚁金服高级技术专家将携手来自国内 ...

  4. 2019年JVM面试都问了什么?快看看这22道面试题!(附答案解析)

    一. Java 类加载过程? Java 类加载需要经历一下 7 个过程: 1. 加载 加载是类加载的第一个过程,在这个阶段,将完成一下三件事情: • 通过一个类的全限定名获取该类的二进制流. • 将该 ...

  5. 2019年的代码都写完了吗?不如做个Python进度条看看还剩多少

    我们都知道,进度条是用来直观展示流程所需时间的优秀工具,以免我们担心流程会突然挂掉,而且我们可以用它来预测代码运行是否正常,借助进度条,每个人都能直观地看到脚本最新的进展情况. 如果你之前没用过进度条 ...

  6. hihoCoder挑战赛29

    多打打不同的比赛,找经验啊 题目4 : 不上升序列 时间限制:40000ms 单点时限:2000ms 内存限制:256MB 描述 给定一个长度为 n 的非负整数序列 a[1..n]. 你每次可以花费 ...

  7. 邀您共赴数据库学术顶会ICDE 2019——阿里云专场 零距离接触达摩院数据库“最强大脑”

    摘要: 当学术大家遇到技术大拿,会碰撞出怎样的火花?为进一步加深产学研学术交流,阿里云将于ICDE 2019大会期间(4月9日)举办以“云时代的数据库”为主题的技术专场(Workshop) 作为全球数 ...

  8. 2019年终总结:10场演讲、内推20人、公众号2万粉丝、Code Runner 1000万下载

    2019年是值得记录的一年,成长许多,也收获许多. 做了 10 场大会的技术演讲,成功内推 20 人拿到微软 Offer,知乎 Live 2000 听众,公众号 2 万粉丝,GitHub 2万 sta ...

  9. $2019$各种$WC$没去记

    \(2019\)各种\(WC\)没去记 太弱了去不了啊. 至少我联赛没退役是吧...(退役感++ 不过这个分数线还是有点让人自闭啊,划线人绝对有毒,有人关照一下空巢老人\(mona\)喵? 这里大概是 ...

随机推荐

  1. 交叉编译QT 5.6.2 Shell脚本

    测试环境:  CPU: AT91SAM9X35      Linux: Atmel提供的linux-at91-linux4sam_5.3 (Linux-4.1.0) 转载请注明: 凌云物网智科嵌入式实 ...

  2. 16.XML语法、CDATA、约束(DTD、Schema)讲解

    xml主要用来描述数据,比如配置文件,网络之间传输数据等,并且在android中也经常用xml来布局,,接下来便来学习xml常用的东西 1.XML语法 xml语法分为: 1.1 文档声明 必须位于文档 ...

  3. 玩转SpringBoot 2 快速搭建 | Spring Initializr 篇

    SpringBoot 为我们提供了外网 Spring Initializr 网页版来帮助我们快速搭建 SpringBoot 项目,如果你不想用 IDEA 中的插件,这种方式也是不错的选择.闲话少说,直 ...

  4. 随笔编号-08 MYSQL 存储过程,5分钟执行调用过程;

    delimiter //DROP PROCEDUREIF EXISTS jdt.day_instan_data_task// CREATE PROCEDURE jdt.day_instan_data_ ...

  5. [原创] Nginx1.13版本reload过程对TCP包影响的测试

    Nginx1.13版本reload过程中各项连接情况和状态的测试.测试Nginx1.13 Reload过程中,对客户端和服务器的TCP层面的包影响.     1)对客户端开启长连接,服务端开启/不开启 ...

  6. 使用jQuery.extend创建一个简单的选项卡插件

    选项卡样式如图,请忽略丑陋的样式,样式可以随意更改 主要是基于jquery的extend扩展出的一个简单的选项卡插件,注意:这里封装的类使用的是es6中的class,所以不兼容ie8等低版本浏览器呦! ...

  7. HDU 6315

    题意略. 思路:本题的思路总的来说就是暴力 + 剪枝. 我们依然用线段树来维护: 定义结点node{ l , r , minn , contirbute} 分别为某个区间的左右端点,和该区间(b序列) ...

  8. Java IO体系之File类浅析

    Java IO体系之File类浅析 一.File类介绍 位于java.io下的Java File类以抽象的方式代表文件名和目录路径名.该类主要用于文件和目录的创建.文件的查找和文件的删除等.File对 ...

  9. .NET平台下,钉钉微应用开发之:工作消息通知

    首先看下官方文档,为我们提供了POST请求地址,和几个必传参数的列表以及参数示例,写的都挺详细的. 无奈提供的SDK请求示例是JAVA的,而我用的是.NET的,所以还是摸了一些坑出来,其实也就是不同平 ...

  10. BS/CS 区别

    转载自:https://www.cnblogs.com/chenmingjun 一.CS和BS含义: CS即Client/Server(客户机/服务器)结构.C/S结构在技术上很成熟,它的主要特点是交 ...