# PyCon TW 2017 Collaborative Talk Notes <br> Day 1 - R2 > ### Quick Links > - [Portal for Collobration Notes 共筆統整入口](http://beta.hackfoldr.org/pycontw2017/) (hosted by [betw.hackfoldr](http://beta.hackfoldr.org/) and [HackMD](https://hackmd.io/)) > - [Program Schedule 演講列表](https://tw.pycon.org/2017/events/talks/) > - [PyCon TW 2017 Official Site 官網](https://tw.pycon.org/2017/) > > ### How to update this note? > - Everyone can *freely* update this note. 任何人都能自由地更新內容。 > - Please respect all the participants and follow our [code of conduct](https://tw.pycon.org/2017/about/code-of-conduct/) during discussion. 討論、記錄時,請遵守大會的[行為準則](https://tw.pycon.org/2017/about/code-of-conduct/) > ----------------- ### 10:50-11:20 <br> Talk: [Python 開源軟體考古 - 以 Viper 為例](https://tw.pycon.org/2017/events/talk/319090797213384781/) - Slide: [Python 開源軟體考古 - 以 Viper 為例](https://docs.google.com/presentation/d/1HwBrETgmEz6-igEVaPAtQPWyuBljyFyvXtKzHLSVaMk/edit?usp=sharing) - Speaker: 陳坤裕 KunYu Chen viper source code: https://github.com/viper-framework/viper 18z/viper-research: https://github.com/18z/viper-research 實用!! -> Exuberant-ctags + tagbar + vim 為什麼選擇viper? 主因是自己的背景平常就在使用這個工具。 #### 讀code技巧 ##### 降低專案複雜度 - 從早期版本追 - 如何挑版本? (搭配tig服用) - 重大版本號 - 簡單、可運作之版本 (e.g. viper的commit hash: [46a2a](https://github.com/viper-framework/viper/tree/46a2a)) - 感覺太複雜? - 砍! - 鎖定特定功能,移除其他雜質 - 測試,能動就可以 追code技巧 1. 過濾程式碼雜質,掌握專案核心,真正需要關注的code 2. 專案邏輯建構(起始點在哪,終點在哪) 3. 數據分析 ##### 專案程式邏輯架構 模組相依性,一直trace到沒有import author自己的code * 專案邏輯建構(Build module dependency graph) * modulegraph: * 不需要的library也顯示,不實用https://modulegraph.readthedocs.io/en/latest/ * pydegraph * 線都連再一起,不好看 * snakefood * http://furius.ca/snakefood/ * snakefood改 (speaker 自己修改的?) * 相比snakefood,加上講者認為有效的顏色識別 * 數據分析 * 用到最多的不一定是核心程式碼,可能是一些小 script,他們可能相對易用 * e.g. color.py, out.py * 追 code 順序(總共追三輪) * 建立專案程式邏輯(2341) * 由下到上深度走訪(1432) * 由上到下廣度走訪(2341) * 筆記的方式可以跟程式碼縮排習慣對齊 ##### Conclusion - 系統化讀code - 從Commit學習 - 架構變化 - Commit Message 規則 - Branching Model - Issue Handling Q:花多久時間做這次的追CODE? A:半年左右(最後講者也成為了viper的contributor之一) Q:如果再追一個新的專案預計會花多少時間? A:不敢保證,但肯定比這次還更順暢 ----------------- ### 11:45-12:30 <br> Talk: [整合 Slack 與 Docker 搭建 Jupyter 線上程式面試系統](https://tw.pycon.org/2017/events/talk/334063859654459486/) - Slide: https://www.slideshare.net/KevinShyu/slack-docker-jupyter - Speaker: 徐愷 [Github]( https://github.com/kkshyu) #### 動機: 來應徵的人變多,隻身一人分身乏術 #### 開始: 釐清需求wants/needs #### wants: - lazy - fancy - crazy solution => flask (單純簡單功能純粹) + slack #### needs: - easy_setup(設定簡單) - independent (環境獨立) - limitation (效能需求規格限制) solution => jupyter + docker *intern就直接用系統,沒有人力介入* *KK: 輸出明確,用 pytest 機制自動化* #### 架構圖: - [slack] -> slash command -> [slack API] [slack] <- push notification <- [slack API] - [slack API] <-> webhooks <-> [flask] - [flask] -> [docker + jupyter] #### docker feedback: - 先拉好images,每次拉太慢 - try, exception - 注意檔案權限 Q. out-coming api一定要用flask嗎? 不一定,但講者採用flask.slack。 Q. 是不是只需要一個backend,不需要搞一堆其他的? 心酸血淚史blablabla... 只是因為先用slack,不然其實應該是不用。(比較fancy?) KK: fancy 無誤 Q. 為什麼要用Docker,用db不就好了嗎? 跟考試形式有關,需要環境切割。 Q. 面試者都在jupyter進行嗎?還是需要docker shell? 不用 Q. 為什麼會有資源不夠用的狀況? 剛開始認為是夠,但後來遇到memory配置不足的狀況。 KK: 系統剛上線內部測試發現不足,後來切割架構後解決問題 Q. 這套系統硬體投入的成本多嗎?(AWS) t型最高規格,只有考試有開,一次考試下來頂多台票五六百。 portal跟考試用機器切開(每天不一樣的正妹倒數照),讓成本降低。 Q. Jupyter輸入結果怎麼處理?所有考生的資料分析? (PS怎麼處理我好像漏聽了) 無考生資料分析,大概知道IP來源。 KK: 希望有興趣的大大來幫忙分析~ Q. 會去看考生的解決方案?還是只看結果? 考完後會再跑一次程式,看CPU/MEM做為評分標準之一。 但題目很難,不容易做完,甚至讀檔都讀不完。 LeetCode: https://leetcode.com/ => slash command live demo *不一定要docker,可以用serverless架構* KK: 是不一定要租主機~ 可以用 AWS lambda, Azure Functions 等 serverless,docker 也是可以跑在 serverless 上面的 (謎之聲: 什麼 fancy 和 crazy, 明明都是 best choice) lol KK: best 不好說XD 但 fancy 是一定的XD KK: crazy 只是因為是我兩天 hack 出來,不太好說QQ (謎之聲: 都貼照片了, 男 RD 該應徵了 https://mobagel.com/) (PS-正妹有男友了) (男 RD 表示: 沒關係, 我也有女朋友 (?)) (KK: 我們還有男工程師?!) :DD ----------------- ### 14:55-15:40 <br> Talk: [天文黑客們的Python大冒險](https://tw.pycon.org/2017/events/talk/335905164227510367/) - Slide: https://hackmd.io/p/rJhGJeNzZ - Speaker: 蘇羿豪 #### 第一關 成為Python hacker契機:ASTRO HACK WEEK 2015 Hibert-Huang Transform (HHT)分析介紹。 看到使用pyhht進行HHT分析研究->興起學習Python的念頭。 簡介自己研究:研究黑洞和其周遭星體的交互作用。恆星上的流體被黑洞吸引進去,重力位能轉換成X射線。天文學家會研究其關係。 #### 第二關 回台灣,在所上發起Python社群。 一開始採用HackPad,效果不彰,改用Facebook社團。 遇到問題,有無方法可以讓大家練習天文研究所需技巧,且不受非公開限制。 新專案:IANCUPyData,教學的專案。 困難:大家參與度不高。 嘗試用遊戲化的方式提高參與度。 持續嚐試。 #### 第三關 回高中母校:興大附中舉辦天文黑客松。 仿照ASTRO HACK WEEK 2015方式,舉辦為期一天的黑客松。 成果,提供高中生一個機會學習到專業天文相關知識,也了解怎麼做一個研究。 參加NASA黑客松,實力太差,爆死。 #### 第四關 總結 Q1. Q2. Q3. 重力波分析的Code一般人可以取得嗎? A3. 可以,全部都公開在Github上。 LIGO: https://losc.ligo.org/about/ 每日一天文圖: http://www.phys.ncku.edu.tw/~astrolab/mirrors/apod/apod.html Skyfield: http://rhodesmill.org/skyfield/ ----------------- ### 16:10-16:55 <br> Talk: [Don't reinvent Sandwich. (Decorator and with statement)](https://tw.pycon.org/2017/events/talk/348202550282944644/) - Slide: https://drive.google.com/file/d/0Bz8Kfu_94VuJcVo1a1drQjhReU0/view - Speaker: 蕭聖穎 (Stanley Hsiao) **本議程沒供餐** context manager -> 上下文 -> 三明治 (附圖) ----------------- ### 17:20-17:50 <br> Talk: [PoS: 環保又安全的區塊鏈共識機制](https://tw.pycon.org/2017/events/talk/347798441977446527/) - Slide: https://docs.google.com/presentation/d/1KJg0VWIpoaiEag16JiedJ6acHCORydmrEShMR-swyVg/edit - Speaker: 梁智程 #### 名詞定義 * PoW 工作量證明(Proof of Work) * PoS 權益性證明(Proof of Stake) * protocol 電腦通訊或網路裝置協定 #### 以太坊與智慧型手機類比 App vs [DApp](https://dapps.ethercasts.com) OS vs 共識機制 #### 為何要了解共識機制 因為是Serenity的Roadmap > The knowledge of the technical considerations behind protocol upgrades must be democratized, so that more people can feel comfortable participating in research discussions and criticizing protocol changes that are clearly bad. [Vitalik Buterin - The Meaning of Decentralization](https://medium.com/@VitalikButerin/the-meaning-of-decentralization-a0c92b76a274) #### 從POW角度看 投入比特幣->得到報酬 #### Nothing at stake問題 讓POW思路無法直接變成POS POS下錢能直接賭兩個區塊 以太坊的POS懲罰投兩邊的人