大佬齐聚PyCon 2019上海站,现场到底啥状况?

导语

在 NightTeam 读者群里的朋友应该都知道,上周末的时候(9月21-22日),PyCon China 2019 的第一站在上海开始了,而我很荣幸地被组委会邀请到上海蹭吃蹭喝,白嫖了一个晚宴+两天的大会门票...在这里先感谢一下组委会。python

既然今年的主力站是上海,那么天然而然地,更多的大佬、干货都会汇集于此。git

那么今年的 PyCon 上海站,都有哪些有意思的东西呢?跟我来看看吧~github


晚宴

首先,就是这个晚宴了,也就是票务信息里写的所谓的“Python 之夜”。编程

这个晚宴的话,无论你是单买一张晚宴票,仍是直接买的 VIP 票,其实都是很值得的,但彷佛不少人并无意识到。毕竟这个票价实际上是很是便宜的,单买一张晚宴票的价格也不过就是与在商场里吃一顿稍微好点的饭的价格至关而已(200 至 300 人民币)。服务器

在晚宴的几个小时里,你能与在台上分享知识的讲师面对面地聊天、交流技术,而聊嗨了的话,加个微信回去继续聊也不是什么稀奇的事情。微信

因为今年是 Python 诞生 30 周年的关系,因此今年的晚宴还有个额外的环节 —— 吃蛋糕。网络

PS:蛋糕挺好吃的,奶油不腻。多线程


第一天

接着就是充满了干货和广告的大会第一天了,上海站一共有 6 个分会场,内容涵盖了几个 Python 圈子里比较常见、热门的方向。架构

主会场

Python 的永恒之美 —— Luciano Ramalho

中规中矩吧,内容大概就是开场白+说了说 Python 里一些比较优雅的写法。app

PS:期间翻译炸了好几回...事故现场图在本文的最后。

构建 Python 物联网(IoT)图像分类解决方案并与 Azure 无服务器功能集成 —— Dave Glove

这个分享是 Azure(微软旗下的云计算平台)的广告,但项目自己仍是挺有意思的。

项目使用了 Azure 的一些服务,通过了简单地组合、操做后就变成了一个能够识别摄像头下的水果是什么水果的小工具,全程基本不用写代码,大部分的操做只须要点点点就能完成,很轻松地就能完成整个项目。(固然,有实际意义的项目没这么简单)

项目地址:

https://github.com/gloveboxes/Creating-an-image-recognition-solution-with-Azure-IoT-Edge-and-Azure-Cognitive-Services

PPT 后面推荐的一个网站(https://www.hackster.io)也挺有意思的,网站内全是创意硬件项目,其中有不少颇有趣的项目,能够了解一下。

PS:这一场演讲中就已经能够看到那个 VS Code 的新功能了。

PS:中间又出事故了,事故现场视频在本文的最后。

从模块化到全球分发,Python 在 Serverless 领域你不能错过的最新功能 —— 谢洪恩

这个分享是 AWS(亚马逊旗下的云计算平台)的广告,主要是宣传 Serverless(无服务器运算/功能即服务)相关的产品和服务。

他们在这方面的核心就是 Lambda 了,同类产品国内的阿里云也是有的,名为函数计算。

我前面写的《当你写爬虫遇到 APP 的请求有加密参数时该怎么办?》的初级篇以及《当你写爬虫抓不到 APP 请求包的时候该怎么办?》的高级篇中,用到的那两个 DEMO APP 的服务端就是使用的阿里云的函数计算+API 网关+日志服务组合搭建的。

得益于 Serverless 这种架构的特性,我只须要实现一个核心的“检测加密参数”的函数就可使用了,全程都不须要理会Web服务器、日志聚合统计、部署、调试防火墙、限流等乱七八糟的事情,只须要点几下,就能实现其他那些业务无关的功能,那些功能全都被云计算平台给包办了。

但 Serverless 也不是没有缺点的,它在使用量少、服务功能简单的状况下很是省钱(甚至不要钱),但若是你的服务使用量很是大,各类云计算服务烧的钱就是你直接买台服务器本身部署的几倍、甚至更高了。

另外,若是你的服务功能较为复杂,在这一套部署方式下若是碰到什么“并不是是你代码产生的问题”,你将很难本身解决,毕竟大部分功能都是云计算厂商帮你实现的,你只能联系云计算厂商帮忙。

调试是一种新的发布:慢语言的意外优点 —— Armin Ronacher

没翻译,听不太懂,打扰了。

PS:Armin 的高桥流风格 PPT 是真的骚。

Python 调试新思路 —— laike9m

这一个分享很是有意思,laike9m 老哥写了一个帮助 DEBUG 的工具 —— Cyberbrain,使用起来的效果差很少是这样:

在你注入一行代码到你须要 DEBUG 的位置后,执行一下整段代码,这个工具就能自动输出一个像上面这样子的参数变化图。

经过这个参数变化图,你能够很轻松地了解到这个参数的整个生命周期,例如:它是如何初始化的、它是如何被某一个函数调用赋值的。

更厉害的是,它能够帮你忽略掉一些无关的代码,好比用于生成上面这张样例图的代码其实是这样的:

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)  # foo is our target
    cyberbrain.register(foo)

import cyberbrain
cyberbrain.init()
fo = 1
func_a(fo)

能够看到上面那个 func_a 的位置,是有一个无用的 for 循环的,它在 ba = [foo] 的前面,但咱们在前面的图片中并无看到这个 for 循环,缘由很简单,由于它是一个无关的代码。(这个忽略无关代码的功能据 laike9m 说是使用分治的思路实现的)

固然,若是只是这样的话,好像也只能用于 Python 程序的 DEBUG,有没有更骚的操做呢?

有,我看到这个东西的第一眼,就想到了一个很骚的操做:能够把它改造一下用在逆向上。实际上相似的工具在 PC、Android 逆向领域中是有的,只不过他们都是经过静态分析实现的(并且貌似没有忽略无关代码的这种功能)。

那么,若是把它用在一样是动态语言的 JavaScript 上呢?

一样的效果、一样的操做,配合上简单的混淆还原,就能让简单的逆向更加简单、难的逆向掉头发更少。

你能够经过这个工具,轻松地知道某个加密参数的生成全过程,并且它还会帮你忽略掉其余的无关代码,能够直接无视那些加了花指令的恶心人的代码。

好了,点到为止,你们有兴趣的话能够尝试实现一下同类工具。

项目地址:

https://github.com/laike9m/Cyberbrain

PPT:

https://yanshuo.io/assets/player/?deck=5d6c9136d37616007449891e

PS:分享时的“会议时间”部分放的两张水豚图也是很...现场节目效果爆炸。

PS:这个项目还处于初期阶段,虽然能用但还须要优化,据 laike9m 说,目前反推作的还不许,在 x, _ = a, b 的状况下,这个工具会认为 xab 都有关。不过他在大会次日与 thautwarm(红姐)交流后,彷佛已经有了一些新的思路,期待 Cyberbrain 项目的后续发展。

语言特性

GIL 的过去和将来 —— 张佳圆

这个分享讲了一下为何会有 GIL、为何会用 GIL、怎么避开 GIL 等,其实网上讲 GIL 的文章不少,但那些文章都没有他讲得这么细,等后面官方放出回放后,想了解这方面的朋友能够看一看、了解一下。

不过,对于爬虫这种网络请求部分占耗时大头的应用场景来讲,直接上协程便可(由于协程切换的消耗比多线程更低)。

若是你发现,你的爬虫程序出现了性能问题,能够加上多进程,或是只把网络请求的部分使用协程实现,解析部分独立出来使用多进程或其余更高性能的语言实现(如Go、C),只须要用一些简单的中继操做就能够了。

PS:对不起,翻到眼睛都快瞎了都没找到照片。

Speed up file transfers and file copies in Python —— Giampaolo Rodola

嗯,没翻译听不太懂。大概内容就是讲了一下文件传输的时候会影响性能的部分,以及规避的方式:Zero-copy(零拷贝),而且后续貌似会有语言级的支持(听别人说的)。

Python语法扩展框架 moshmosh 和其上的 CPython compatible JIT 实现 —— thautwarm

这个项目很骚,弄出了一个能够根据状况选择性编译(翻译)部份内容运行的 Python JIT 实现,并且还能兼容本来的 C 扩展。不过这个项目还处于 DEMO 阶段,虽然能演示,但也就仅此而已了,并不能用于生产环境,期待后续发展。

项目地址:

https://github.com/thautwarm/moshmosh

https://github.com/thautwarm/restrain-jit

Web专场

从 thriftpy 中学习 rpc 协议 —— 张汝家

这个分享的话就比较中规中矩了,只是介绍了一下 Thrift 的用法,算是科普、入门型的分享。

若是你想要知道 Thrift 和 gRPC 哪一个更好、更适合你的业务场景的话,能够看看这篇文章:https://blog.csdn.net/dazheng/article/details/48830511,讲得已经很细了。

引用一下这篇文章中最后的选择部分:

何时应该选择gRPC而不是Thrift

  • 须要良好的文档、示例
  • 喜欢、习惯HTTP/二、ProtoBuf
  • 对网络传输带宽敏感

何时应该选择Thrift而不是gRPC

  • 须要在很是多的语言间进行数据交换
  • 对CPU敏感
  • 协议层、传输层有多种控制要求
  • 须要稳定的版本
  • 不须要良好的文档和示例

基础架构

开源 AIOps 数据中台搭建与 Python 的做用 —— 丁来强

虽然讲师自称不打广告,但这个分享其实全程都有阿里云日志服务的广告,不过内容仍是挺详尽的,广告部分只是简单一提就过了。

内容主要是各类数据收集、存储方式的优劣势,以及各个工具之间的组合、配套方式,对这方面想了解的朋友一样能够等官方回放出来以后看一看、了解一下。

分层次构建应用系统的可观测性 —— 刘征

Elastic 的广告,仍是那一套内容,看一半就溜了...他们家工具是挺好用,惋惜资源占用仍是挺大的,无论是 ES 仍是Filebeat(对,就是 Filebeat),资源占用都比较大,在预算少、机器配置低的状况下很可贵到一个很好的体验。

固然,今年的 Elastic 与去年相比也不是没有变化的,今年的 Kibana 终于有了中文界面!(7.0就有了

不再用看着全英文的页面脑袋疼了!虽说英文界面用多了也就那样,可是终归仍是没中文看着舒服的。

不过翻译效果的话,据刘征说,目前是请人帮他们翻译的,效果仅仅就是能看而已,还存在一些词不达意的问题,须要等后续优化,不过这已是一个很大的进步了,毕竟前面那么久都没好好搞多语言。

基于 Python 构建高稳定可扩展的自动化测试集群——网易游戏自动化测试实践分享 —— 杨柳

嗯,Airtest 的广告,上一次见到 Airtest 是在 OSCHINA 的源创会上,那时候是熊博老哥在讲这东西。通过了大半年的发展,Airtest 相较于以前而言已经完善了很是多,以前存在的一些 BUG 也都修复了,整个使用体验舒服了不少。

不过...分享内容仍是差很少的,依然是演示一下使用、吹一吹他们的手机机柜和机房、晒一下他们那一堆各类品牌、各类型号的手机...以及秀一下各类优化。

Airtest 的话,用在 APP 爬虫上的相关操做已经有不少文章说过了,甚至 Airtest 官方微信公众号都有转发过,因此这里就再也不深刻地说了,具体操做有兴趣的朋友能够本身搜索一下。

项目地址:

https://github.com/AirtestProject/Airtest

http://airtest.netease.com

云测试服务:

https://airlab.163.com

闪电演讲

连接世界的 Python Community? —— Noah Chen

Python 基金会广告,因为各类因素最终没能像彩排时那样在5分钟内讲完,挺惋惜的。

500 行 Python 写一个渲染器 —— 谭啸

嗯,娱乐项目,并且讲师节奏控制得很差,讲到一半就被拉下去了。可是讲师的学习思路挺不错的,建议还在入门阶段的朋友们学习一下。

项目地址:

https://github.com/tvytlx/render-py

基于 OwlReady2 的人机交互 —— 宋从威

全程懵逼,打扰了。

Byte Code 的革命 —— 赵俊德

在这个分享中,讲师用 5 分钟不到的时间科普了一遍 Python 的字节码相关知识,不过因为时间紧迫,讲得比较浅,现场不少人听的时候应该都是一脸懵逼的,因此仍是看看网上的文章吧...

不过有意思的地方在于,讲师创办了一个公司,他们作了个 Python 脚本加密产品 —— PyArmor,功能看起来挺强大的,有须要的朋友能够了解一下。

项目地址:

https://github.com/dashingsoft/pyarmor

http://pyarmor.dashingsoft.com

PS:果真,脱发会让人变强。

使用 Sphinx 制做 Web 文档 —— 陈照强

有点水啊兄dei。PS:竟然在陈祥安的水群里看到了他...

一键将 C/C++ 代码转换为 Python 能调用的代码 —— 韦泽华

emmm...这个分享的话简单地说就是鄙视了一下 ctypes、boost.python、pybind11 这些在 Python 中调用 C/C++ 代码的工具,而后放出来一个名为 c2py 的工具,效果吊打上面的这些工具,并且比它们使用起来更方便。

我原本一开始是想着能不能用这玩意调用 Android NDK 的 so 库的,不过看了一下项目说明,它是将 C/C++ 源码进行了转换,只能用于 C/C++ 的头文件(.h 后缀),因此就无法搞了,很惋惜。

项目地址:

https://github.com/nanoric/c2py

Python 虚拟环境和依赖管理工具大乱斗 —— 李辉

“PPT” 实际上是 Web,还很精美,作 Web 开发的就是不同。

PS:现场讲述如何同时找两个女友(误),辉哥不怕回家跪搓衣板吗?

次日

T1:Pythonic Objects: idiomatic OOP in Python —— Luciano Ramalho

说好的翻译没了,以我浅薄的英语水平只能听懂一部分。

嗯,大概就是从浅到深地讲解了面向对象的各类操做,并介绍了一些魔法方法(双下划线系列)的效果,补全了一些以前没有注意到的知识点。

T2:Plate Spinning: Modern Concurrency in Python ——Luciano Ramalho

嗯,依然没有翻译。

大概就是讲了一下线程、进程、协程的特性、问题、优劣势、实现原理、版本差别等,并介绍了一下 Asyncio 事件循环的替代品、协程环境下用的库等。

但上面其实不少内容我踩坑的时候已经了解到了...因此...就全程写这篇文章了。

PS

其实 T一、T2 的课程内容本体并非重点,重点在于人少,上午的 T1 和下午的 T2 都是只有十几我的买了票(或者像我这样白嫖),因此课程中有什么疑惑都能直接当场向 Luciano 提问。

T2 的内容结束后,在场的几位大佬还由于 “aiofiles这种库是否有意义” 的问题,产生了一次额外的讨论环节(全程不敢 BB,靠着腾讯翻译君勉强听懂),这在大会场上是不可能发生的事情,因此就像晚宴同样,都属于很是值得花钱买的(虽然这个有点贵,999 一张)。

课程中的照片以及最后的大合照因为版权、肖像权问题,这里就不放了。


幕后

至此,PyCon 上海站两天的内容就结束了,虽然表面的 PyCon 很是光鲜亮丽,但咱们也不能只看表面的东西,毕竟不光是讲师须要“台上一分钟台下十年功”,组委会的准备工做也须要花费很是多的精力、人力以及金钱!

用爱发电

据辛姐(辛庆)所说,前几年的 PyCon China 没有这么多像 Python 基金会、微软这样的赞助商,每次筹办都须要烧组委会本身的钱,而大会自己又收支不平衡,彻底就是在用爱发电。

去年(2018年)的 PyCon China,组委会在办完后一算,血亏十来万(人民币),门票钱根本就入不豁出。若是他们一开始不是抱着为社区作贡献的心态来搞的话,可能早就坚持不下去了。

因此若是你喜欢 Python 这门语言、愿意让这个社区变得更好的话,能够去 PyCon China 作作志愿者、帮帮忙,或者报个名当一回讲师,这样能够支持一下组委会的工做。

布置场地

9月20日晚上,晚宴结束后,组委会的工做人员们就开始了忙碌的准备工做。由于场地不少,每个场地的设备都须要调试的关系,他们一直弄到凌晨才结束。

桌子还没收拾好,先调试调试设备

彩排

闪电演讲因为演讲时间紧迫,须要讲师们提早屡次练习、彩排,才能确保正式开始的时候能把控好时间,在5分钟内将内容全都讲完。

因而,在布置场地的同时,闪电演讲的几位讲师也在排练着,还让咱们几个在边上只围观不干活的吃瓜群众扮演现场观众,因此咱们也是提早听了一遍完整版的闪电演讲😀(部分讲师的)。

惋惜的是,现场状况复杂,出现了一些意料以外的情况,致使内容较多的讲师们最终仍是没能在5分钟内将全部内容都讲出来,十分惋惜。

吐槽

吐槽方面的话,基本就你们都在说的那几个问题了,毕竟其余方面作得确实没什么毛病。

有道同传抽风、后续全程无翻译

有道同传在刚开始的时候仍是挺稳定的,虽然有些断断续续,但内容至少还正常,但过了一段时间后就开始逐渐崩坏,最终仍是被工做人员关闭了,后来再也没启用过。

不过这个问题的话,我问了一下工做人员,实际上是由于网络问题致使的。

他们用来放有道同传的那台机是连的 WIFI,而会场的人又实在是太多太多了,酒店的 AP 设备根本扛不住,因此没办法及时地将音频流传输至服务器,因而就炸了。

而他们在此以前想到的其余方案,又会须要高额的金钱支撑,因此最终仍是选用了合做方 —— 网易有道的商业级同传翻译产品(无偿使用)。因为问题是网络致使的,因此有道其实并不背锅。

不过这个问题其实很好解决,只须要从酒店的交换机那边拉一条网线直接连到场控区就行了,轻松解决网络问题,有道不再用背锅了。这个建议我已经告知他们了,但愿后续有外国人的场次在这方面会有改善。

PPT 内视频音频不一样步

这个问题出现于9月21日早上 Dave Glove 的「构建 Python 物联网(IoT)图像分类解决方案并与 Azure 无服务器功能集成」这个分享中,直接让原本好好的一我的工智能识别水果的演示变成了人工智障哈哈哈哈哈哈。

不过这个问题的缘由不太清楚,由于布置的时候测试播放是正常的,多是玄学吧,“测试时好好的,一到现场就炸了”什么的。

<video id="video">

<source id="mp4" src="https://oss.crawler-lab.com/PyCon上海站到底讲了啥?/asserts/23.mp4" type="video/mp4">

</video>

为何赞助商最低的是“白银赞助”,“青铜赞助”呢?

据晁倩小姐姐解释,这个是由于...今年的赞助商都很给力,没有青铜级别的赞助商,因此最低的就是白银了。


结语

断断续续地写完了,Typora 里显示本文字数已破万...内容仍是挺多的,没想到会写这么多出来,若是有些错别字或者都不通顺的地方还请见谅,实在太长了。

PS:如今的时间是2019年9月24日凌晨3点,我准备把图片传到 OSS,而后放到微信上定时发送了。


文章做者:「夜幕团队 NightTeam」 - Loco

夜幕团队成立于 2019 年,团队包括崔庆才、周子淇、陈祥安、唐轶飞、冯威、蔡晋、戴煌金、张冶青和韦世东。

涉猎的编程语言包括但不限于 Python、Rust、C++、Go,领域涵盖爬虫、深度学习、服务研发、对象存储等。团队非正亦非邪,只作认为对的事情,请你们当心。


本篇文章由一文多发平台ArtiPub自动发布

相关文章
相关标签/搜索