CodeTengu Weekly 碼天狗週刊 – Issue 84 哇!是擅長 Over-engineering 的朋友呢! – Apr 17th 2017

Hello World

CodeTengu Weekly 碼天狗週刊

CodeTengu Weekly 會在 GMT+8 時區的每個禮拜一 AM 10:00 出刊,每期會由三位不同的 curator 負責當期的內容,每個 curator 有各自擅長的領域,如果你在這一期沒有看到自已感興趣的東西,可能下一期就會有了。你也可以瀏覽一下前幾期的內容。

目前的 curator 陣容:

  • @vinta – I failed the Turing Test – 科幻迷,最近在讀The Forever War
  • @saiday -Imnotyourson – 最近在看禪與摩托車維修的藝術
  • @tzangms -Oceanic / 人生海海 – 衝動型購物
  • @fukuball -ImFukuball – 徵會寫 HTML & CSS 的網頁設計師
  • @mingderwang – Ethereum enthusiast
  • @kako0507 – 熱愛嘗試新事物的前端工程師
  • @chiahsien
  • @hiroshiyui
  • @uranusjr -Smaller Things – 不愛談技術的技術人,最近對做菜很有興趣
  • @kkdai -態度萬歲 – 喜歡 Golang 的略懂工程師,最近在學機器學習 (疑?)
  • @yhsiang

你也可以關注我們的Facebook、 TwitterGitHub 或微博,有很多 Weekly 看不到的內容。有任何建議或疑問也可以來Gitter 聊聊,歡迎亂入。

致力於解決開發者之間的資訊不對稱

@tzangms

IT’S NOT A PROMOTION – IT’S A CAREER CHANGE

「管理職並不是升職, 而是轉換職業」 雖然這篇主題是這個,不過當中有兩個重點讓我覺得非常有趣,而且一語中地,真的是釐清我多年無法清楚說明的事。

  1. The Dunning-Kruger effect
  2. Systemic undervaluation of non-technical skills

而我最感興趣的就是 The Dunning-Kruger effect 了, 我便去找一下 Wikipedia 上的簡述:「達克效應是一種認知偏差,能力欠缺的人有一種虛幻的自我優越感,錯誤地認為自己比真實情況更加優秀。」

例如就軟體工程師來說, 常常會有以下狀況:

  • 覺得自己懂的比其他人多、其他人什麼都不懂、覺得自己超強
  • 覺得非技術性的工作都很廢
  • 覺得管理沒什麼技術性可言, 廢

就我的個人經驗來看, 大部分 junior 工程師都會落入這種狀況, 會了一些東西之後, 覺得自己很強, 但是根本就還很菜, 因為很多東西都知道的太少, 設計時考慮的太少, 所以常會想出不夠周全的作法, 然後還覺得「有這麼難嗎?」

不過除了 D-K Effect 之外, 本文我真的是畫了很多重點, 值得看個幾遍, 像我也是在透過這篇評量過去的自己, 畢竟大家都 junior 過 (笑)

fractio.nl

On-call at any size

On-call 這件事, 在不同團隊大小會有不同作法, 從StreetVoice 早期只有我一個人在 On-call, 大概這樣經歷了 5 ~ 6 年, 一直到最近才換成我們系統工程師Seanhsu0102 為第一線。

慢慢人比較多了, 前一陣子便開始思考用 PagerDuty 來做 rotate, 跟多層 On-call 的機制 (但是太忙還沒搞 XD)

On-call rotate 這件事我在第一份工作也碰過, 當時是第一線, 搞不定會有資深工程師可以求救, 而經理則是只會收到 mail, 除非在 30 分鐘或一小時後, 如果還沒解決時, 經理才會收到簡訊或手機通知, 看事情嚴重度。

這篇提到許多該做的機制、觀念跟對應的工具, 像是 log aggregator, error aggregator 等等, 值得一看, StreetVoice 大概只做到了 80% 左右(?)

當然, 有個足夠有經驗的人可以通靈當然是最棒的 (笑)

increment.com

Culture at Spotify

矽谷的公司常會強調所謂的 Culture, 但是 Culture 到底是什麼, 怎麼說清楚講明白? 其實好像真的有點難, 或是常常講跟沒講一樣。

Spotify 這篇我覺得至少有滿明確的方向, 挺好的。

spotify.com

DjangoQL – Advanced search language for Django

滿有趣的一個 project, 對於工程師來說好像可以幫上一點忙。

github.com

@hiroshiyui

“It’s Just Emulation!” – The Challenge of Selling Old Games

講者 Frank Cifaldi (@frankcifaldi) 是 Digital Eclipse 這間公司的一員,也是 Video Game History Foundation 的創始成員之一。Digital Eclipse 承製了 CAPCOM 的「洛克人傳奇合輯」 (Mega Man Legacy Collection / Rockman Classics Collection),運用了模擬器技術讓這系列


老掉牙

以講者對經典遊戲的熱愛,以及製作這款遊戲的經驗,他認為模擬器這東西長期被污名化,是時候該還它一個公道了。演講中除了列舉一些遊戲廠商與模擬器社群之間既敵視、又默默在吃後者豆腐的事蹟稍加挖苦,再以老電影不斷在各種記錄媒體上重現與傳承的例子,來譬喻模擬器其實可以視為「老遊戲的放映機」,對陪伴我們走過許多時光的經典遊戲來說,是一種數位典藏與近用的絕佳手段。

這段演講影片非常精彩,我很推薦對電玩遊戲有愛的大家花點時間收看。

gdcvault.com

I made an NES emulator. Here’s what I learned about the original Nintendo.

緊接著這篇還是在介紹模擬器,主因是我最近在嘗試讓家中的初代Raspberry Pi Model B 能夠跑一些老主機上頭的經典遊戲,跌跌撞撞之間學到一堆冷知識。這篇就是在講,作者透過親身實作了一個紅白機(當然,歐美版的外殼並不是紅白色)模擬器,從中瞭解到紅白機的諸元運作方式,對於有志於開發紅白機模擬器的人來說,是一篇很不錯的觀念引導文。

此外,我自己所謂跌跌撞撞的經驗,主要是一開始認為「初代 Raspberry Pi 規格再怎麼不濟,模擬紅白機應該還是綽綽有餘,用它做個『自我流 Nintendo Classic Mini Family Computer 』是可行的」結果紅白機並不是如憨人所想這麼簡單的東西,多支援一塊特殊處理晶片,多支援一種特殊mapper,處理起來的程式複雜度就又不知增加多少倍,而模擬器本身又是一種 CPU intensive 的程式,要在玩家的感官可接受的限度內,「翻譯」這些經典遊戲的程式到現代的硬體上,追求翻譯的精準度 (accuracy),就需要耗費極大的 CPU 運算成本。

同場加映:

medium.com

Phoenix 1.3 is pure love for API development

這篇介紹了 Phoenix 這個 Elixir 的 Web 開發框架,在 1.3 版(到截稿為止還在 rc1)一些設計上的改變。其中對於專案目錄結構的變動,是最顯著的,我覺得這是 Phoenix 擺脫「Ruby on Rails 仿品」的包袱、更朝向 Elixir way 來設計,是很重要的一步。

此外,新增的 action_fallback 讓程式寫起來更具表述力,也更加精簡,透過這個 callback 可以把很多程式的後續處理集中在一起,對於像是 API 返回呼叫結果之類的場合很有幫助。

雖然 Phoenix 1.3 可能不是一個會讓人覺得酷炫潮夯、大刀闊斧的新改版,但的確是一個往好的設計方向去做的新版,各位手邊如果還有一些 1.3 之前的專案,現在就可以開始試著轉移到 1.3 了。

swanros.com

Building a CQRS/ES web application in Elixir using Phoenix

自從我來到目前這個需要「在有限時間內,處理瞬間巨量請求」的工作後,就開始去找這方面的資料來看。其中CQRS 與Event Sourcing 是我自己曾悶著頭想,但過了好一陣子,才發現早已有人提出來的兩種架構設計方法。

這篇文章作者詳細介紹了以 Phoenix 實作出 CQRS/ES 架構的應用程式實戰經驗,且是以傘形組織方式 (Umbrella) 把每個元件分而治之,整個開發環節都帶過了一次,對想要拿 Phoenix 做大事業的人是一份很好的參考學習範例,推薦給大家。

10consulting.com

Man, ‘splained: 40-Plus Years of Man Page History — Truss

在泛 UNIX/UNIX-clone 系統上混,絕對少不了去


找男人


(而且說實在的,groff 看了一眼就覺得阿雜,怎麼還能要求我去寫)

本期最後一篇,給大家介紹這個有點 geek 趣味的文章。

truss.works

@kkdai

kkdai/LineBotBabyLuis: A baby NLU chatbot using LUIS

大家好,這一次我會自肥自己兩個小 Chatbot 分享給大家(附帶原始碼) .也希望讓大家了解一下如何使用 Golang 來架設 Chatbot .

LineBotBabyLuis: 就是當初寫好專案luis go sdk 之後說要寫一個會自我學習的 chatbot 的 POC 小專案.

這個 Chatbot 具有自我學習的功能(其實不過就是每次問他,他不認識的,就會請你告訴他是哪個 intent )

透過微軟 LUIS 的功能,這個 chatbot 就算沒有任何資料庫也能夠做到自我學習.並且不斷累積知識的功能.

想學學 LUIS 怎麼使用的人(透過 Golang API ) 也可以看看.

之後會再寫個中文部落格來介紹這個….

github.com

kkdai/LineBotAnimal: Line Bot Animal photo classification

為了 Chatbot Day 準備的聊天機器人第二彈

功能很簡單: 就是你上傳動物照片,他就會告訴你是什麼動物.

背後的機器學習模型就是鼎鼎大名的 Tensorflow Inception

細節就會在 04/27 的 IThome Chatbot Day 會講解….

註解: Tensorflow Inception 就是一個透過 CNN 建立出來的動物資料庫分類器

參考: https://github.com/tensorflow/models/tree/master/inception

github.com

Automatic Stackdriver Tracing for gRPC · Go, the unwritten parts

這篇講解了如何透過 Golang 來撰寫一個使用 stackdriver (也就是 Google 之前所併購的線上分散式追蹤 distributed tracing 的工具) 來查看在 gRPC 下問是否有任何問題.

想要試試看 Open Source 的 distributed tracing ? 那麼可以試試看最近進入CNCF 的 Open Tracing . 官方的部落格有一個 範例讓你學習如何用 Golang 透過 Open Tracing 來追蹤 http latency

名詞解釋: CNCF (Cloud Native Computing Foundation) 是由 Google, Intel, CoreOS 與華為 等等各家網路 大公司所組成的協會.主要選取一些優秀的服務來推廣適合作為 Cloud Native Computing 之用.. 目前裡面的軟體有: Kubernetes, Prometheus, Fluentd 與 GPRC .. 等等 Cloud Native 上重要的服務

rakyll.org

Linux, Netlink, and Go — Part 1: netlink – Medium

這篇文章看了好幾天,終於看完. 透過 #Golang 來介紹 Linux 中與 Kernel 溝通的另外一種方式 “Netlink”

本文的作者原來是在看 Prometheus 的一個工具 node_exporter 的時候發現一個跟 WiFi 的有關的 issue ,看了幾個禮拜後發現是 ioctl 太慢了… 於是就決定要換成 Netlink

[科普] Netlink Socket 是一種在透過 kernel 來傳遞訊息的方式,但是跟一般常用的 ioctl 不同的是 Netlink 透過 udp 來傳遞,不需要像 ioctl 一樣需要有透過 response ,所以他的速度比較快.

Netlink Socket 優點:

  1. 透過 UDP 沒有 ioctl 的 kernel round trip time
  2. 可以一次發給同一個 group 中的 user process

缺點:

  1. UDP 老問題.. 你不確定對方有沒有收到
  2. 由於透過 socket 其實感覺不如 ioctl 那麼的直覺

這篇文章也附上透過 Go 來實作 Netlink 的 github 可以看看

BTW: Prometheus 的 node_exporter 感覺很好用??

Netlink Go package :

關於 Netlink Socket 可以參考

medium.com

leandromoreira/digital_video_introduction: A hands-on introduction to video technology: image, video, codec (av1, h264, h265) and more (ffmpeg encoding).

[關於影像處理的完整介紹]

裡面包含圖片,各種影像格式 av1, h264, h265 的編碼格式與一些基礎原理外.也有 ffmpeg 的相關操作. 對於想要惡補或是回顧的人會有趣. 裡面的解釋都很清楚,有大量的圖片作為輔助.相當的棒!

github.com

稿源:CodeTengu Weekly (源链) | 关于 | 阅读提示

本站遵循[CC BY-NC-SA 4.0]。如您有版权、意见投诉等问题,请通过eMail联系我们处理。
酷辣虫 » 综合技术 » CodeTengu Weekly 碼天狗週刊 – Issue 84 哇!是擅長 Over-engineering 的朋友呢! – Apr 17th 2017

喜欢 (0)or分享给?

专业 x 专注 x 聚合 x 分享 CC BY-NC-SA 4.0

使用声明 | 英豪名录