Hello World
CodeTengu Weekly 碼天狗週刊
如果命運的齒輪沒有出差錯,CodeTengu Weekly 都會在 UTC+8 時區的每個禮拜一 AM 10:00 出刊。每週會由三位 curator 負責當期的內容,每個 curator 有各自擅長的領域,如果你在這一期沒有看到感興趣的東西,可能下一期就有了。當然你也可以瀏覽一下前幾期的內容。
目前的 curator 陣容:
- @vinta - I failed the Turing Test - 科幻迷,最近在讀 Dirk Gently's Holistic Detective Agency
- @saiday - Imnotyourson - 有什麼意見進來 Run time 講啊
- @tzangms - Oceanic / 人生海海 - 最近真的都在玩薩爾達
- @fukuball - ImFukuball - 有新工作了,但歡迎直接挖角
- @mingderwang - Ethereum enthusiast
- @kako0507 - 熱愛嘗試新事物的前端工程師
- @chiahsien - 》〉》我們要找 iOS 工程師《〈《
- @uranusjr - Smaller Things - 聽說 Pinkoi 少了個棒球記者所以現在去應徵前端應該有機會!?Shadowverse:
uranusjr - @kkdai - 態度萬歲 - Learning Deeply....
- @yhsiang - AMIS / MAICOIN 徵才中,歡迎聯繫!
- @johnlinvc - 挑戰自動化家中電器
- @drumrick - 歡迎加入台灣 Kaggle 交流區
- @wancw
- @allanlei
- @theJian
你也可以關注我們的 Facebook、Twitter、GitHub 或 Open Source 專案,有很多 weekly 看不到的內容。有任何建議也歡迎來 Gitter 聊聊。
@vinta
The incomplete guide to Google Kubernetes Engine
根據前陣子搗鼓 Kubernetes 的心得寫了一篇文章,跟大家分享一下,希望有幫助。內容包含概念介紹、建立 cluster、新增 node pools、部署 ConfigMap、Deployment with LivenessProbe/ReadinessProbe、Horizontal Pod Autoscaler、Pod Disruption Budget、StatefulSet、DaemonSet,到說明 Service 和 Ingress 的關係,以及 Node Affinity 與 Pod Affinity 的應用等。
順帶一提,就算只是架來玩玩,建議大家可以直接在 Google Kubernetes Engine 開一個 preemptible(類似 AWS 的 Spot Instances)的 k8s cluster,價格超便宜,所以就不要再用 minikube 啦。不過現在連 Amazon 也有自己的 managed Kubernetes 了,雖然目前公司是用 GCP,但是還是比較懷念 AWS 啊~
Fluent Python
雖然 Python 也是寫了一陣子了,但是每次讀這本書還是能夠學到不少。真心推薦。
當初學 Python 讀的是另一本 Learning Python,查了一下,哇都出到第五版了。
延伸閱讀:
A deep dive into the Pymongo MongoDB driver
Replica Set 通常是 MongoDB 的標準配置(再來就是 Sharding 了),這個 talk 詳細地說明了 Replica Set 是如何應對 service discovery 以及 PyMongo 和 Replica Set 之間是怎麼溝通的。
延伸閱讀:
Let's talk about usernames
就像我們之前提到過很多次的 Falsehoods 系列,這篇文章也是一直不厭其煩地告訴大家,幾乎每個系統、每個網站都會有的東西:username,其實沒有你以為的那麼簡單。大家感受一下。
作者也提到一個很重要的 The Tripartite Identity Pattern,把所謂的 ID 分成以下三種:
- System-level identifier, suitable for use as a target of foreign keys in our database
- Login identifier, suitable for use in performing a credential check
- Public identity, suitable for displaying to other users
而不要想用同一個 identifier 搞定所有用途。
Web Architecture 101
這篇文章淺顯易懂地解釋了一個現代的 web service 通常會具備的各項元件。不過說真的,如果你今天是一個初入門的後端工程師,你究竟得花多少時間和心力才能摸清楚這篇文章提到的東西?更別提那些更加底層的知識了,喔,這篇文章甚至也還沒提到 DevOps 的事情呢。就像之前讀到的 Will Kubernetes Collapse Under the Weight of Its Complexity?,總覺得整個態勢發展到現在,對新手(甚至是我們這種普通的 1x 工程師)似乎不是很友善啊。
延伸閱讀:
@kako0507
ESLint package 被植入惡意程式碼
ESLint 其中一名維護者的 npm 帳號被盜用,並且利用該帳號發佈了夾帶惡意代碼的版本,一但安裝該版本的 ESLint ,會自動從 pastebin.com 下載並且執行程式,竊取 .npmrc 內的資訊。
受影響的兩個 package 以及版本分別是 [email protected] 和 [email protected]。
JavaScript engine fundamentals: Shapes and Inline Caches
本篇文章是 JSconf EU 2018 上其中一個議程- JavaScript Engines: The Good Parts™ ,會探討以下幾個部分:
- The JavaScript engine pipeline - 簡單的帶入各個不同的 engine 運作流程
- JavaScript’s object model - 介紹 object 的 Property Attributes
- Optimizing property access - 介紹 engines 是如何透過 shapes 有效的存取 object
- Storing arrays efficiently - 介紹 array element 存儲的方式,避免更動 element 的 property attributes
Does it mutate 😱
JavaScript 有些 function 會直接對原物件做修改,但 function 執行完也會 return 同樣的物件,在不熟悉的情況下很可能會造成 side effect 。
這個網站列出一些 array 相關的 function ,透過簡單的例子說明執行後是否會直接修改原來的物件。
CSS Grid Layout Interface Builder
如果你不熟悉 CSS grid ,透過這個網站也可以簡單的拉出你想要的 grid layout ,並且輸出成 CSS 和 HTML 。
ECMAScript 2018 (ES9) 正式發布
ES2018 正式定案,主要新增的 features 有:
- Asynchronous iteration
- Rest/Spread properties
- Promise.prototype.finally
- 修訂 Template literals : 取消 escape sequences 的限制
- 以及Regular expression 相關:
@kkdai
FiloSottile/mkcert: A simple zero-config tool to make locally-trusted development certificates with any names you'd like.
自己要建置 HTTPS Web Server 的時候,最麻煩的就是就算是寫個測試網站也得弄個 CA signed (or self-signed) 就算透過 Let's Encrypt 的來弄也要設定一下. 這個套件強調是完全不需要設定也可以快速讓你建置一個 HTTPS 內部測試用的網站.
小八卦:
Filippo Valsorda 原本是 CloudFlare 專門在弄 cryptography 的大大,但是因為寫了太多相關 Golang 內部 cryptography 的部份而被 Google 找進去在今年加入了 Golang 團隊.
Learning Go’s Concurrency Through Illustrations
清楚地介紹 Go Concurrency 的部分.從 GoRoutine 到 Channel 的介紹,並且清楚解釋了 Buffered/UnBuffered channel 的差異.推薦大家好好研讀.
Golang — vgo vs dep — Dependency Management Tools Explained
Russ Cox 在前幾個月提出的新的套件管理方式,就是將 Golang 引入版本控管的概念.並且開發出實驗性質的 CLI 編譯工具 vgo (等同 go 但是加入版本的概念).
不知道各位開始玩 vgo 了沒? 這篇文章的作者將自己使用的專案從 Dep 轉移到 vgo ,並且提到有遇到的一些問題.如果你還在觀望 vgo 可以看看這篇文章分享的經驗,一定能給你一些對於 vgo 與 dep 的差異點.
Go in 2018 - The State of Developer Ecosystem by JetBrains
JetBrains 2018 Developer Ecosystem Survey 與 Go 有關的幾個有趣數據:
- 最多人用的套件管理: dep
- 最多人用的 Web 框架: gin
- 最多人使用的測試套件: 內建 testing
Let’s celebrate Hugo’s 5th birthday
Hugo: 使用 golang 建置的部落格文件管理系統。 他強調的就是編譯文件(將 markdown 轉成網頁)的速度超快。(跟另一套知名的系統 Jekyll 相比)
現在隨著系統開發來到第五年,版號也來到了 0.42 之後。作者團隊發布這篇文章,並且宣布 1.0 也在完成最後兩個主要功能(更快 render engine 與插件管理)後將要發行。真令人期待。