Hello World
CodeTengu Weekly 碼天狗週刊
CodeTengu Weekly 會在 GMT+8 時區的每個禮拜一 AM 10:00 出刊,每週會由三位 curator 負責當期的內容,每個 curator 有各自擅長的領域,如果你在這一期沒有看到感興趣的東西,可能下一期就有了。你也可以瀏覽一下前幾期的內容。
目前的 curator 陣容:
- @vinta - I failed the Turing Test - 科幻迷,最近在讀 Wool
- @saiday - Imnotyourson - 電量給我這種人用就是一種浪費
- @tzangms - Oceanic / 人生海海 - 靠, 買比特幣了啊!!!
- @fukuball - ImFukuball - 有新工作了,但歡迎直接挖角
- @mingderwang - Ethereum enthusiast
- @kako0507 - 熱愛嘗試新事物的前端工程師
- @chiahsien - 徵有經驗的 iOS 工程師,快來 Twitter 私訊我
- @uranusjr - Smaller Things - 我要成為錯字王
- @kkdai - 態度萬歲 - Learning Deeply....
- @yhsiang
- @johnlinvc - 挑戰自動化家中電器
- @drumrick - 歡迎加入台灣 Kaggle 交流區
- @wancw
你也可以關注我們的 Facebook、Twitter、GitHub 或 Open Source 專案,有很多 weekly 看不到的內容。有任何建議也歡迎來 Gitter 聊聊。
@saiday
Git - git-rebase Documentation
最近新發現的 git pull --autostash,--autostash 是個相見恨晚的 option。
如果 local branch 有髒的 commit 要 pull 時就會被擋,加了這個 option 就會自動幫你 stash ,pull 完再 pop 回來。
這個 option 在 Git 2.6 (2015/09) 就加入,但最好檢查你的 Git 版本是在 2.10+ (2016/07),因為之前的版本 rebase 沒有完成的話會丟失 autostash 的東西。
實際上這個 option 是針對 rebase 的,所以你的 pull 指令必須是用 rebase 模式才行,說到 rebase 模式我也喜歡 rebase=preserve,rebase 的時候可以保留 merge commit。
詳細情境可參考:Make git pull --rebase preserve merge commits
與大家分享我的喜悅,不用謝我了!
git config --global pull.rebase preserve
git config --global rebase.autoStash true
The Flat Cache
做 Client 有一個很典型的課題就是 memory model 的狀態同步,簡單說就是當特定物件的狀態改變時,在記憶體中表示同一個物件的物件們也要跟著改。
其實最佳解就是建一個 client 的關聯式資料庫,記憶體中不要再存分散的 models,所有 fetch 都先寫進 DB 再派出來,後續再監聽 DB 的 changed event 改 model 狀態。
但,弄個 DB 的成本不算低,如果沒有本地儲存的需求,又是典型的殺雞用牛刀了。
Khanlou 提出了一個 Flat Cache 的架構來解決上面的問題,用 Swift 實作,就直接想像是一個在記憶體的關聯式資料庫。
值得一看的是這個架構的設計跟實作的思路。
Jake Wharton on the Android Kotlin Guides
Jake Wharton 在 Google Android framework team 推動 Kotlin,並在這期 Fragmented 談他們釋出的 Kotlin Android 開發者 style guide。
這不是一份嚴格的 guide,只涵蓋了基礎重要的部分,之後應該會釋出 format 工具。
這份文件的 Interop guide 對正在混用 Java 及 Kotlin 的開發者會很有幫助。
@uranusjr
Use a .dev domain? Not anymore.
TL;DR Google 把 .dev TLD 買下來作為企業內部使用,而且把它下面的所有網域設定成強迫要求安全連線。如果你把這種網址用來當作開發用內部網址,就會出現問題,請儘速移轉。
我設了滿多這樣的假網域,不過主要是本地開發用,因為我很懶得記各種 we framework 的 dev server 用哪個 port,就用 reverse proxy 加上 /etc/hosts 設定了像 django.dev flask.dev 等等。我也不知道為什麼當初會用 .dev,不過看起來是滿字然的選擇⋯⋯唯一問題是,這不是 best practice。
RFC 2606 特別為了這種需求,保留了幾個永不使用的 TLDs:
.locahost.test.example.invalid
所以就我的使用意境 django.locahost 大概是最好的選擇。雖然長了點,但保證永遠可用。Technically correct is the best kind of correct.
至於為什麼 TLD 可以整組被公司想買就買,這就是另一個故事了。原文順帶講了許多關於 TLD 的歷史故事和知識,我覺得寫得滿不錯,建議一讀。至於未來會不會繼續看到各種神奇的 TLD 雖然稍微不安,但好像也沒什麼辦法了。
Mosh: the mobile shell
Mosh 是個連線到遠端 shell 的工具,基本上就類似 SSH,不過對 SSH 常見的煩惱做了幾個改進:換 IP 不會斷線、client/server 差分更新所以不會網路一卡就整個停住連 ctrl-c 都不行、讓你明確知道連線狀態不會斷線就 freeze 直到 broken pipe。如果你常用 SSH 應該很容易 appreciate 這些特點,不用特別推銷。
實作上,當你用 Mosh 連到一個 server,是用 SSH 進行 handshake 與認證,完成之後在 server 啟動 mosh-server 接手,與 client 端的 mosh-client 繼續接下來的溝通。這代表你不需要額外跑 daemon,只要有 mosh-server binary,就可以輕易地把 SSH server 變成 Mosh server。方便。
我用了一陣子還是遇到不少麻煩。Mosh 沒有 daemon 是優點也是缺點,因為無法產生 priviledged process,所以它必須使用隨機的高 port 號,如果你的 server 在 NAT 後面就會遇到問題。它的 SSH handshake 也寫死了不少行為期望,所以如果你不是用標準的 22 port,甚至用了 reverse SSH tunnel 就會很爆炸,雖然有 workaround 但就少了一大半意義,不如直接用 SSH。喔對了還有,Windows 支援不存在(只有第三方的 Google Chrome app client)。不過如果情境對,還是非常好用。
In Search of the Perfect Writing Font
iA 釋出了他們為旗艦產品 iA Writer 製作的新字型,iA Writer Duospace。這字型的根本概念很有趣,嘗試在比例字的美觀與等寬字在編輯器的實用之間取得平衡,讓每個 glyph「大致等寬」。如同名稱暗示,這個字型有兩種字寬——大部分字元都一樣,但是少部分如 m 與 w 稍微寬一點,增加文稿的美觀程度,但是仍然維持類打字機編輯器讓人覺得文稿尚未完成的風格。這篇文章稍微透露了他們對字型設計的一些想法,我覺得十分有趣。難怪他們做出的編輯器完成度能夠這麼高。
Which word begins with “y” and looks like an axe in this picture?
有什麼字是 “y” 開頭,看起來像個斧頭?
有個網友看到他兒子的球上寫著 26 英文字母加上圖案,例如 Q 配 queen、E 配 elepant。可是為什麼 Y 配一個像斧頭的東西?他跑去 english.stackexchange.com 問,下面就熱烈討論了一番,出現了各式各樣的回應(許多層面上)。請不要浪費才能好嗎。
@drumrick
Kaggle 競賽網站冠軍排名易主!
Kaggle 這個廣為人知的機器學習競賽網站,這幾天產生了新的排名冠軍。新的冠軍用戶名為 bestfitting,僅僅 15 個月 10 場比賽,直奔冠軍寶座。本文整理了兩個來源的五個連結,分別是 bestfitting 分享四個競賽的解法,讓大家窺探這位新任 Kaggle 冠軍解決問題的思路。
TensorFlow 有安全疑慮?
在多處中國方面的科技媒體看到騰訊表示發現了 TensorFlow 一個嚴重的安全漏洞,回報給 Google 並且得到確認。目前英文方面沒有收集到任何消息,但是也不失為一個警惕的徵兆?先前另外一篇論文 Security Risks in Deep Learning Implementations 表示,主流深度學習框架(包含 TensorFlow, Caffe, Torch)的依賴套件們,也是存在安全漏洞的,雖然讀了以後大致上是 OpenCV 導致的。
