Jason
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
      • Invitee
    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Versions and GitHub Sync Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
Invitee
Publish Note

Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

Your note will be visible on your profile and discoverable by anyone.
Your note is now live.
This note is visible on your profile and discoverable online.
Everyone on the web can find and read all notes of this public team.
See published notes
Unpublish note
Please check the box to agree to the Community Guidelines.
View profile
Engagement control
Commenting
Permission
Disabled Forbidden Owners Signed-in users Everyone
Enable
Permission
  • Forbidden
  • Owners
  • Signed-in users
  • Everyone
Suggest edit
Permission
Disabled Forbidden Owners Signed-in users Everyone
Enable
Permission
  • Forbidden
  • Owners
  • Signed-in users
Emoji Reply
Enable
Import from Dropbox Google Drive Gist Clipboard
   owned this note    owned this note      
Published Linked with GitHub
Subscribed
  • Any changes
    Be notified of any changes
  • Mention me
    Be notified of mention me
  • Unsubscribe
Subscribe
# 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懲罰投兩邊的人

Import from clipboard

Paste your markdown or webpage here...

Advanced permission required

Your current role can only read. Ask the system administrator to acquire write and comment permission.

This team is disabled

Sorry, this team is disabled. You can't edit this note.

This note is locked

Sorry, only owner can edit this note.

Reach the limit

Sorry, you've reached the max length this note can be.
Please reduce the content or divide it to more notes, thank you!

Import from Gist

Import from Snippet

or

Export to Snippet

Are you sure?

Do you really want to delete this note?
All users will lose their connection.

Create a note from template

Create a note from template

Oops...
This template has been removed or transferred.
Upgrade
All
  • All
  • Team
No template.

Create a template

Upgrade

Delete template

Do you really want to delete this template?
Turn this template into a regular note and keep its content, versions, and comments.

This page need refresh

You have an incompatible client version.
Refresh to update.
New version available!
See releases notes here
Refresh to enjoy new features.
Your user state has changed.
Refresh to load new user state.

Sign in

Forgot password

or

By clicking below, you agree to our terms of service.

Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
Wallet ( )
Connect another wallet

New to HackMD? Sign up

Help

  • English
  • 中文
  • Français
  • Deutsch
  • 日本語
  • Español
  • Català
  • Ελληνικά
  • Português
  • italiano
  • Türkçe
  • Русский
  • Nederlands
  • hrvatski jezik
  • język polski
  • Українська
  • हिन्दी
  • svenska
  • Esperanto
  • dansk

Documents

Help & Tutorial

How to use Book mode

Slide Example

API Docs

Edit in VSCode

Install browser extension

Contacts

Feedback

Discord

Send us email

Resources

Releases

Pricing

Blog

Policy

Terms

Privacy

Cheatsheet

Syntax Example Reference
# Header Header 基本排版
- Unordered List
  • Unordered List
1. Ordered List
  1. Ordered List
- [ ] Todo List
  • Todo List
> Blockquote
Blockquote
**Bold font** Bold font
*Italics font* Italics font
~~Strikethrough~~ Strikethrough
19^th^ 19th
H~2~O H2O
++Inserted text++ Inserted text
==Marked text== Marked text
[link text](https:// "title") Link
![image alt](https:// "title") Image
`Code` Code 在筆記中貼入程式碼
```javascript
var i = 0;
```
var i = 0;
:smile: :smile: Emoji list
{%youtube youtube_id %} Externals
$L^aT_eX$ LaTeX
:::info
This is a alert area.
:::

This is a alert area.

Versions and GitHub Sync
Get Full History Access

  • Edit version name
  • Delete

revision author avatar     named on  

More Less

Note content is identical to the latest version.
Compare
    Choose a version
    No search result
    Version not found
Sign in to link this note to GitHub
Learn more
This note is not linked with GitHub
 

Feedback

Submission failed, please try again

Thanks for your support.

On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

Please give us some advice and help us improve HackMD.

 

Thanks for your feedback

Remove version name

Do you want to remove this version name and description?

Transfer ownership

Transfer to
    Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

      Link with GitHub

      Please authorize HackMD on GitHub
      • Please sign in to GitHub and install the HackMD app on your GitHub repo.
      • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
      Learn more  Sign in to GitHub

      Push the note to GitHub Push to GitHub Pull a file from GitHub

        Authorize again
       

      Choose which file to push to

      Select repo
      Refresh Authorize more repos
      Select branch
      Select file
      Select branch
      Choose version(s) to push
      • Save a new version and push
      • Choose from existing versions
      Include title and tags
      Available push count

      Pull from GitHub

       
      File from GitHub
      File from HackMD

      GitHub Link Settings

      File linked

      Linked by
      File path
      Last synced branch
      Available push count

      Danger Zone

      Unlink
      You will no longer receive notification when GitHub file changes after unlink.

      Syncing

      Push failed

      Push successfully