Hello World
CodeTengu Weekly 碼天狗週刊
CodeTengu Weekly 會在 GMT+8 時區的每個禮拜一早上 10:00 出刊,每一期會從目前的 curator 名單中選出三位來負責當期的內容,每一位 curator 各自負責不同的領域,如果你在這一期沒有看到自已感興趣的東西,說不定下一期就會有了。你也可以瀏覽一下前幾期的內容,有價值的東西是不會過時的。
以下是目前的 curator 陣容:
- @vinta - I failed the Turing Test - 科幻迷,最近在玩「Mass Effect 3」
- @saiday - Imnotyourson - 太熱了
- @tzangms - Oceanic / 人生海海 - 衝動型購物
- @fukuball - ImFukuball - 最近好窮,有案子可以接嗎?
- @wancw - 命剋公司的工程師
- @mingderwang - Ethereum enthusiast
- @kako0507 - 熱愛嘗試新事物的前端工程師
- @chiahsien - Nelson
- @hiroshiyui - 非典型司書
- @uranusjr - Smaller Things - 不愛談技術的技術人,最近對做菜很有興趣
- @kkdai - 態度萬歲 - 喜歡 Golang 的略懂工程師
- @yhsiang
大家也可以關注 CodeTengu 的 Facebook、Twitter、GitHub 或微博,有很多 Weekly 看不到的內容。有任何建議或疑問也可以來 Gitter 聊聊,歡迎亂入 👺
@tzangms
Monitorbook - From side project to profitable company, a journey into sales
Monitorbook 是一個滿有趣的服務, 像是他們首頁上的影片範例, 幫你追蹤 Amazon 上面 iPad 的價格, 可以設定你想要的價格然後提醒你。
這篇主要是在講 Monitorbook 從一個 side project 到變成一間獲利的公司其中的心路歷程, 特別是在行銷這件事。 一開始文章就提到, 作者本來認為, 如果一個產品如果真正解決了某個問題, 那麼它就不需要行銷人員, 因為用戶會被你的產品吸引... 但是事情不是那麼簡單的。
Monitorbook 從一開始上了 Product Hunt, Hacker News, 可是後來真正付費的卻不到幾隻小貓, 所以作者開始研究、實驗各種行銷的方式跟技巧, 包含了各種心路歷程, 而我覺得這篇吸引我的是他們所使用的銷售工具, 特別是 Amplemarket。
你只要跟他們說:「I’m looking to contact VPs of Marketing at Bay Area SaaS companies that have raised between 2M and 10M.」他們就幫你處理好了... Amazing XD
關於行銷這件事呢, 我也是在現在這家公司待久了才越來越覺得重要, 產品要怎麼推呢? 真的懂得, 有管道的, 力道可是差很多的, 當然有時候技術人員跟行銷人員看的東西也是差滿多的就是了 :p
A Manager’s FAQ
很棒的一篇文章, 把 Manager 會想問的問題都提出來並回答了, 這篇值得看上好幾遍, 我就不多說了, 而裡面我覺得最棒的一句:
Promotion increases responsibility but never privilege. Responsibility means sprinting toward fires, doing more shit work, and preventing bigger problems.
A Simple Content-Based Recommendation Engine in Python
用簡單的方式解釋 Collaborative Filtering 跟 Content Based recommendation, 可以分別用在哪些情境, 也直接丟上 GitHub, 甚至可以直接 deploy 到 Heroku 了呢~
@mingderwang
Trying out rkt
Rkt 原名叫 Rocket, 是 CoreOS 公司用來對抗 Docker 的東西。Rkt 也是一種 Container, 但它設計的出發點就以安全為考量。比如說, 它利用簡單的 gpg 數位簽章加上 https 伺服器, 就可以提供安全的下載機制, 就不會因為執行網路上被竄改的 container images 而造成駭客入侵。
另一個優點是, rkt 採用一個 open source container format 叫 "appc"。未來如果你想要將 docker images 移植到別的 (新的)container 系統, 只要都是使用 "appc" 格式就能相容。
"appc" 是 App Container 的縮寫, 而 ACI 就是 appc image 的格式, 就像另一種 docker image 一樣, 可以直接被 container 執行, 更好的是它格式是公開的。當然為了大家方便使用, 它也提供了 docker2aci 的轉換工具, 能將現有的 docker image 改成 aci 格式。更簡單的方式, 就是在放棄安全保證的選項下, rkt 也能直接執行原先 docker hub 上的所有 docker images。例如: rkt --insecure-options=image run docker://redis 就能啟動一個 redis server。
利用 CertBot 幫你設定 HTTPS
CertBot, 其實就是以前官方 Let's Encrypt 的最新版的 client, 它能幫你去 CA 拿到網站的證書, 並且很快的幫你在 Window 以外 Linux 作業系統用 http 的 Web server 改成用更安全的 https。
它的原理很簡單, 是利用 ACME protocol, 收集資訊並去 Let's Encrypt 這個 CA 免費拿到證書, 並且幫你設定好。在 Apache, 還會自動幫你將 http 導向 https, 實在太貼心了。
如果你已經有了 80 port 的 http web server 正在運行, 還可以選擇用 --webroot 選項在完全不停頓的情況下裝好 443 port 的 https, 太神奇了。平常需要一年花約 50 美元買的證書, 這裡完全免費。目的就是要推廣使用 https, 因為他們認為 http 不再是安全的, 所以才大力推動 HTTPS Everywhere。
How Does the Blockchain Work?
Blockchain 這個專有名詞就機器學習, 需要在學校上一個學期的課才能完全了解。但這篇文章用了一個最簡單的例子, 介紹我們為何在 Internet 上還需要另一個叫做 blockchain 的東西, 還有它是如何運作的?
這裡是以 Bitcoin 為例做說明, 因為 Bitcoin 是一個到目前為止運作最久且最大的 blockchain 實作。這裡最值得介紹的是 Fig 9, 它告訴你雖然平均每 10 分鐘產生一個新的 block, 被登記在該 block 裡的交易雖然是紀錄在該 block 裡了, 但在理論上還是有可能被竄改。但如過過了一個小時以後, 也就是 6 個 blocks chain 在一起, 以地球上的電腦運算能力, 已經不太可能一次重新算出 6 個 blocks; 因此你可以很肯定的, 它不會再變了。所以你在 Bitcoin 的世界裡, 當你電子錢包剛收到貨款通知, 要等 1 個小時以後才能出貨喔!
@kkdai
[Podcast][Software Engineering Daily]Death and Distributed Systems with Pieter Hintjens
又要來推薦 Software Engineering Daily 的 Podcast 這次請到的來賓就是之前以 A Protocol for Dying (中文:臨終協定 ) 獲得大家注意的程式設計師與佈道者並且是 ZeroMQ 公司的 CEO - Pieter Hintjens 來談談兩個主題:分散式系統與死亡.
關於分散式系統已經是 Pieter Hintjens 十幾年來不斷努力的部分,裡面有不少見解是相當有趣的.講到了死亡,只能說癌症末期的他看得真的很看.除了臨終協定裡面有提到的部分之外,他希望自己能夠像個完美被結束的 Proccess 般,沒有任何沒有釋放的記憶體(我想他指的是遺憾,或是壞名聲).
最後,他也建議每個程式設計師應該要試著去開源(Open Source)透過開源你的程式碼.你才會開源你的眼界,並且擁抱這個世界.身為癌症末期的他,雖然身體有些虛弱聲音有點微弱,不過卻無法淹蓋她勇敢並且偉大的靈魂.很推薦大家聽聽.
關於除錯,大神給工程師最重要的建議 - "The Best Programming Advice I Ever Got" with Rob Pike
Rob Pike(早期參與 unix lab 並且是 Golang 主要開發者之一),在前幾年接受網路媒體的時候分享了這段小故事.Rob Pike 早期曾經與 Ken Thompson(也就是 C 語言共同發明者跟參與開發 unix 系統與 Golang 的大神)一同 Pair Programming.
每次遇到問題需要除錯的時候,Rob Pike 就開始準備各種工具.不論是準備 Log 或是準備查看各種 stack 資訊.而 Ken Thompson 卻什麼也沒有做,只是在不斷的思考.每次到最後,Rob Pike 就會發現他辛苦追下去的結果往往比不上 Ken Thompson 透過他心裡思考整體運作架構.
Thompson 告誡著 Rob Pike:“思考相當的重要,尤其你在思考問題的時候.他可以避免你只是找到區域解(也就是僅僅找到發生問題的地方,並沒有找到問題的根本)" .這句話是說由於一般人很急著會開始找問題.這樣一來,當你找到問題發生的點就以為是問題的根本.如果不是仔細思考整體的運作流程,那麼很難找到真正的問題所在.
這句話很重要,不論是在除錯或是在開發新的產品.跟大家一起分享.
使用 Golang 與 Heroku 幫助你快速架設 FB Bot 的樣板: kkdai/FBBotTemplate: A simple Golang Facebook Bot Template and tutorial
繼之前分享給大家的 Line Bot 樣板之後,最近把 Facebook 的 Messenger Bot 搞懂之後也弄了一個可以快速一件部署的 Messenger Bot 樣板系統.
透過這個樣板,你可以一行程式碼都不寫就可以在五分鐘之內架設好一個最基本的 Messenger Bot .並且附上最簡單的圖文教學,希望可以讓大家更容易地學習如何透過 Heroku 與 Golang 來架設一個 Facebook Messenger Bot .
有任何問題,歡迎大家來 gitter 詢問
Go Tooling in Action
Francesc Campoy 介紹了一些 Golang 的小工具,包括了:
- 很基本的樣式控制: goimport
- IDE: VS Code for vs-for-Go
- Go-wrk : http benchmark tool
- Go-torch: 透過 profile 結果來顯示隨機的火炬圖.
很建議大家看看,順便瞭解一下這些工具該如何使用.
[影片] etcd over gossip: strongly-consistent semantics in a weakly-consistent world -
這是一篇 CoreOS(他們最受歡迎的產品就是 etcd)在他們的研討會 FEST 2016 裡面的一個主題: "etcd over gossip: strongly-consistent semantics in a weakly-consistent world"
也就是架設在 Gossip Protocol 上面的 etcd.並且底層是透過 Docker 的 weave net .
這一篇裡面有將 etcd 裡面的 raft-example 做一些基本的講解,如果你對 Raft-Consensus 有一點瞭解,卻不知道該如何寫一個具有 Raft 能力的服務.可以參考一下這篇文章.
Random Cool Stuff
Lossless compression with Brotli with Rust for a bit of Pied Piper ( Dropbox: 我們寫出了類似 Pied Piper 的壓縮演算法)
最近最熱門的 Silicon Valley 第三季完美的結束了,也恭喜他們如願的 XXXX (消音,我當然不會透露劇情。)
去年就跟大家宣布,其實他們就像是現實社會中的 Pied Piper 的 Dropbox.在去年他們寫出了類似的演算法,透過了類似的思路,他們反覆地將資料拿出後重新壓縮,得到的效果相當不錯,除了比起 gzip 更少了 4.4 % 之外,並且得到了第一季裡面得分 (Weissman score) 6.5%.
這篇文章其實有點硬,並且透過 Huffman Tree 的範例來解釋要如何讓壓縮能夠更上一層樓,不過整個文章相當的有趣啊....
由 kkdai 分享。