大佬齊聚PyCon 2019上海站,現場到底啥情況?

導語

在 NightTeam 讀者羣裏的朋友應該都知道,上週末的時候(9月21-22日),PyCon China 2019 的第一站在上海開始了,而我很榮幸地被組委會邀請到上海蹭吃蹭喝,白嫖了一個晚宴+兩天的大會門票...在這裏先感謝一下組委會。

既然今年的主力站是上海,那麼自然而然地,更多的大佬、乾貨都會聚集於此。

那麼今年的 PyCon 上海站,都有哪些有意思的東西呢?跟我來看看吧~


晚宴

首先,就是這個晚宴了,也就是票務信息裏寫的所謂的“Python 之夜”。

這個晚宴的話,不管你是單買一張晚宴票,還是直接買的 VIP 票,其實都是很值得的,但似乎很多人並沒有意識到。畢竟這個票價其實是非常便宜的,單買一張晚宴票的價格也不過就是與在商場裏吃一頓稍微好點的飯的價格相當而已(200 至 300 人民幣)。

在晚宴的幾個小時裏,你能與在臺上分享知識的講師面對面地聊天、交流技術,而聊嗨了的話,加個微信回去繼續聊也不是什麼稀奇的事情。

由於今年是 Python 誕生 30 週年的關係,所以今年的晚宴還有個額外的環節 —— 吃蛋糕。

PS:蛋糕挺好吃的,奶油不膩。


第一天

接着就是充滿了乾貨和廣告的大會第一天了,上海站一共有 6 個分會場,內容涵蓋了幾個 Python 圈子裏比較常見、熱門的方向。

主會場

Python 的永恆之美 —— Luciano Ramalho

中規中矩吧,內容大概就是開場白+說了說 Python 裏一些比較優雅的寫法。

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/2、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

其實 T1、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自動發佈

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章