Hello World
CodeTengu Weekly 碼天狗週刊
CodeTengu Weekly 會在 GMT+8 時區的每個禮拜一 AM 10:00 出刊,每週會由三位 curator 負責當期的內容,每個 curator 有各自擅長的領域,如果你在這一期沒有看到感興趣的東西,可能下一期就有了。你也可以瀏覽一下前幾期的內容。
目前的 curator 陣容:
- @vinta - I failed the Turing Test - 科幻迷,最近在讀 Wool
- @saiday - Imnotyourson - 徵 Android Developer!救我!
- @tzangms - Oceanic / 人生海海 - 靠, 買比特幣了啊!!!
- @fukuball - ImFukuball - 有新工作了,但歡迎直接挖角
- @mingderwang - Ethereum enthusiast
- @kako0507 - 熱愛嘗試新事物的前端工程師
- @chiahsien - 徵有經驗的 Objective-C 工程師,快來 Twitter 私訊我
- @hiroshiyui - 歧路亡羊與中年危機的典範
- @uranusjr - Smaller Things - 我要成為錯字王
- @kkdai - 態度萬歲 Learning Deeply....
- @yhsiang
- @johnlinvc - 挑戰自動化家中電器
- @drumrick - 歡迎加入台灣 Kaggle 交流區
- @wancw
你也可以關注我們的 Facebook、Twitter、GitHub 或 Open Source 專案,有很多 weekly 看不到的內容。有任何建議也歡迎來 Gitter 聊聊。
@uranusjr
Careful With That PyPI
教你怎麼讓 Python 社群大暴死:想辦法得到某個有名 package 作者的電腦,然後看他家目錄裡面的 .pypirc
。這個檔案的內容會像這樣:
[pypi]
username:uranusjr
password:s3cr3t
更新他的有名 library,在 setup.py
裡執行 rm -rf /
之類,再用這組帳密上傳 PyPI 就好了。很多人都用 sudo 在更新 Python 套件,而 setup.py
允許 arbitrary code execution;PyPI 更新套件時沒有主動確認機制,所以等作者輾轉發現時,應該已經有無數人中招了。
我之前好像有分享過 setup.py
的 remote code execution 問題,不過這只是弱點的一部分——最大的漏洞是 PyPI 竟然要求你把密碼用明碼存在檔案系統裡。這問題也很久了,但 Glyph 又當了一次勇者跳出來發聲,並且教大家有什麼方法可以 workaround 這個可怕的弱點——大致的概念就是把密碼存在 password manager,然後用一個 custom function 動態讀出密碼、寫入檔案、上傳 PyPI、使用完清理。他提供了 1Password 和 LastPass 的解法,不過如果你像我一樣用 macOS 內建的 KeyChain Access,也可以用內建的 security
command 達到同樣效果。我是用下面的方法拿到密碼:
security find-internet-password -ws 'pypi.python.org'
延伸閱讀:如果你完全不懂怎麼發表 Python 套件,也趁這個機會學一下吧。現在也越來越多人會把專案發佈在 GitHub 上,但很多時候如果能發到 PyPI,一來能見度更高可以幫助更多人,二來也會讓你學到更多模組化技巧,寫出更好的 Python 程式。可以參考 Hynek 的惡補式教學,裡面也包含了這篇的密碼管理技巧,比官方的教學文更適合快速學習——學會之後,再看官方教學補足背景知識就好。
Flat UI Elements Attract Less Attention and Cause Uncertainty
文章摘要:扁平 UI 設計常使用效果較弱的符號。在眼球追蹤實驗中,符號效果較弱的 UI 擁有較少各類點擊線索,迫使使用者在面對 UI 時需要付出更多努力。
(後面不是引文內容,是我自己的想法。)
舊的網站設計 (2010 左右) 沿用從單機 PC 時代模仿現實世界事物的 UI 設計,按鈕看起來就像按鈕,所以使用者在面對新介面實,更容易推論各元件的作用。扁平 UI 的互動元件並沒有很明顯的特徵,使得使用者需要學習;每個網站都有自己的 UI,使用者難以沿用既有的使用經驗,使得扁平 UI 的問題更加明顯。
如果你設計的 UI 只能在少數地方使用(而不是像 iOS 那樣大家都有大把機會學習),又想更接近扁平設計(畢竟這確實是現代設計的潮流),那麼 Google 的 Material Design 是個很好的折衝。它採用了很多流行的扁平設計,但是加入了少量的陰影來表達遠近感,加強可互動性的提示:另一方面,這些陰影仍然只停在功能性的提示,而非用來模擬現實事物,因此不會太囉唆,仍然維持一定的極簡風格。設計本身好不好看還是看人,但是後面的設計邏輯很值得學習。
Why I cancelled my ReactiveConf talk
最近越來越多活動有 Code of Conduct 了,主辦單位慢慢有經驗之後也懂得怎麼處理一些問題行為,真讓人開心,希望這樣也能讓更多人在社群裡覺得舒服。但是如果主辦單位自己違反 CoC 又能怎麼辦?也不能怎麼辦,所以這個講者就決定不參加直接回家了,talk 就放生⋯⋯。
這件事情最可憐的反而是沒邊站的會眾,付錢進場然後就這樣少了一個優秀的 talk。而這個結果其實完全是主辦單位可以預先避免的,畢竟事先徵求講者同意也是常識等級的事情。當然 hindsight is always 20/20 所以我也不覺得該怪誰,但是這件事情對辦活動的人都是個警惕:不要假設,盡可能取得各方面的同意再做事,寧可囉唆也沒關係。
@drumrick
機器學習領域問題的最新學術成果列表
這個類似 awesome list 的 github 頁面,將機器學習問題分為 Speech、Computer Vision、NLP 三大類,以算法實作作為區分,條列了各個問題目前最好的學術成果,同時整理論文使用的 Metric 方法以及成績,相關實作程式碼連結,以及發表年份。看不懂?覺得自己該努力學習了嗎?這裡附贈 awesome-courses 想學什麼應有盡有!
2017 台灣人工智慧暨資料科學年會資料整理
上週剛結束的 2017 台灣人工智慧暨資料科學年會,在我的同溫層中觀察,似乎是一片好評,也讓無法參加的我有點遺憾,只好透過講者的投影片以及參加人員的共筆來望梅止渴,在此文中分享一些收集到的連結。
Deep Learning with Keras
這是一個剛開始教學系列,屬於正在進行式,是我在台灣資料科學同好交流區找資料的時候看到的,根據作者表示,只是自己學習過程中的紀錄。
以目前的走向來看,是一個比較偏向動手做的學路路徑,Keras 是滿適合新手使用的,而讓我一看到這個系列就眼睛為之一亮的點在於,(我感覺)作者非常用心挑選使用的資料集,讓資料比較有實用性或是趣味性,比較能引起大家動手玩玩看。
Google 發布 TensorFlow Lite
過去一週還有一件大事就是,Google 發佈預告了好久的 TensorFlow Lite。以輕量、跨平台、快速為主要重心,使開發人員能夠更容易部署 TensorFlow Model 到手機以及嵌入式系統。
訓練模型的部分還是一樣用 TensorFlow 在伺服器上訓練,透過 TensorFlow Lite 的模型轉換器,將訓練好的模型轉換成特別的格式,在手機上透過 API 以及直譯器來執行。
已經對 MobileNet、Inception v3、smart reply 三種模型做過優化,MobileNet 及 Inception v3 使用 ImageNet 訓練過了,開發者只要針對需求再做 transfer learning 就可以了。最後說 TensorFlow Mobile 將來會被 TensorFlow Lite 取代。
回想 XLA 剛出來的時候大家辛辛苦苦地編譯到手機上執行,現在真的是省事很多啊!
Hinton 大神的 Capsule Network
拖了很久這週才看 Hinton 大神的新作《Dynamic Routing Between Capsules》坦白說,大神潛水這麼久又鋪陳這麼久,我內心是有著極高的期待,結果打開先看結果比較,居然是 MNIST 有點小失望,會用 MNIST 來比幾乎是變相承認在 CIFAR-10 以及 ImageNet 上還沒有突破性的進展。當然文中也解釋了 CIFAR-10 遇到的問題,以及使用 MNIST 另一個主要的原因,表現「重構」的能力。
推薦導讀
- 木刻思
- 知乎討論
木刻思的文章對於數學公式的解釋比較多,知乎討論有比較多概念比喻以及評論。
實作的部分在論文出來後就有滿多不同框架的版本,因為我也還沒有實際使用過,就不敢隨便推薦,大家可以前往 github 搜尋 CapsNet 或是 capsule network,找自己熟悉框架的版本,基本上 Python 主流的框架都有人實作了。
Random Cool Stuff
在富士山頂端呼喊完美的半熟蛋
要研究出怎麼煮完美的半熟蛋煮法真是讓人傷透腦筋,網路上的教學都說不會失敗保證完美,可是仔細一看這變因根本太多,照著煮還是很難成功,一直試誤好麻煩。這個模擬器直接把所有變因都放進去,回歸出來最佳的時間變數,照著煮就沒問題啦,我試了好幾次勝率 100% 根本無敵。
- 輸入環境變因(冰箱冷藏通常蛋溫 5ºC,尺寸量短邊,海拔用手機羅盤 app 查)
- 水煮滾後把蛋放進去跟著滾
- 時間到之後撈起來用自來水沖 45 秒涼,放到 0ºC 冰水裡冷卻
完成!上週用這個做了糖心蛋(煮好之後放到醃料裡冰一天)豪豪ㄘ啊~