這是什麼?

程式週記主要內容如下:

Gihub project 介紹:

  • 主要會貼一些github,但是會盡量寫上一些有用的評語(或是我容易想到的關鍵詞)幫助以後查詢

網路文章心得:

  • 會寫些心得,強迫自己閱讀.

“程式週記”並且定期週期性更新.

大部分內容在我的twitter都會有,這邊只是將一些簡單的心得與感想註解一下.

本週摘要

本週花了不少時間在看 Google 論文 Maglev ,算是相當的有收穫.所以這一篇週記整理就花了相當多的時間來整理.



Go

uber-go/zap: Fast, structured, leveled logging in Go

Uber 出的 Log system ,具有結構化資訊並且相當的快速,

otoolep/go-httpd: How to organise a Go HTTP service

常常有人想學 Golang 的 Web programming 不知道該如何下手?

  • 想要架設一個網站,卻不知道資料夾該怎麼放?
  • 如何寫一個簡單的單元測試?
  • 如何搭配 CircleCI 做自動化測試?

不仿將這個 Repo Clone 開始做你的第一個 Web Go App.

See Python, See Python Go, Go Python Go

Andrey Petrov 是 Python Lib urllib3 的作者,他在 PyCon 2016 的講題.其中提到在 Python 中去使用 Go 與 C binding 的 WebServer.

原理是透過 Go 可以輸出成 Shared Library 的方式讓 Python 透過 FFI 來載入.然後再透過 Go 來載入 C binding library.雖然不會比原生的 Go 或是原生的 C 還要快,這卻是一種有趣的方式.

免費MOOC: Learn How To Code: Google’s Go (golang) Programming Language

[免費課程][原價 NT:1200 現在免費] 想要學習 Golang 的 Mooc? 這裡有課程教學,透過 Golang 從基礎來學習程式語言,有興趣的可以看看.

這個 promo code 不知道能存在多久,有興趣的建議先註冊下去.

此外,有任何 Golang 問題,歡迎來社團 Go程式語言 發問..

https://viraldeal.net/deal/learn-how-to-code-googles-go-golang-programming-language

Go Tooling in Action

Francesc Campoy 介紹了一些 Golang 的小工具,包括了:

  • 很基本的樣式控制: goimport
  • IDE: VS Code for vs-for-Go
  • Go-wrk : http benchmark tool
  • Go-torch: 透過 profile 結果來顯示隨機的火炬圖.

很建議大家看看,順便瞭解一下這些工具該如何使用.

WTF is Dependency Injection?

想瞭解什麼是 Dependency Injection? 看看這篇介紹如何透過 Golang 來達成 DI.

同場加映 facebook 的 injection package

Presenting Torus: A modern distributed storage system by CoreOS

CoreOS 最讓人知名的套件就是 etcd 還有就是 Raft 一致性演算法.但是 etcd 本身只有專注在 Key/Value 的資料處理,那麼如何要處理 Storage System 呢?

於是 CoreOS 建立了一套新的系統 Torus 一個建置於 Golang 的分散式儲存系統.

Janus is a fake rest api server

透過 JSON 的 REST API Server ,類似 Java 的 Moco


Simple error handling primitives

如何讓你更有效的管理 error ? Dave Cheney 這個套件很推薦使用. 以下有 Dave Cheney 專文的介紹

如何在 Go 語言與 C 語言間操作共享記憶體

了解 C 透過 cgo 與 Go 之間記憶體的共享狀況.

Golang: Pipes and redirection in command line applications

了解如何在 Golang 中去撰寫一個 App 來處理 Pipe 資料.

Experimenting with Go pipelines

想了解 Golang 要如何完成 Pipeline 的做法? 可以好好參考這篇文章. 其實在 Golang Blog 也有提過處理 Pipeline 的做法



Python

I trained a machine to distinguish between Trump and Clinton — heres what it learned.

有人做了簡單的 Machine Learning 去訓練判別哪些是美國總統候選人 Clinton ,哪些是 Trump 寫的.結果也相當的有趣.

Solving Unicode Problems in Python 2.7

如何在 Python 2.7 裡面來解決 Unicode 的問題? 雖然 Python3 主要就是針對 Unicode 的問題,但是還是有許多人仍然使用 Python2 ,這裡就講解要如何在 Python2 裡面解決 Unicode 的問題.

Bubbles: Python ETL Framework (prototype)

Python 中拿來做 ETL (Extract Transform Load ) 使用的套件.



Android/JAVA/NODE.JS/Scala

Serverless Scala

如何在 AWS Lambda 上面使用 Scala.



Docker

iOS/Swift



其他程式語言



論文收集



網站文章

Comparing Golang, Scala, Elixir, Ruby, and now Python3 for ETL: Part 2

討論許多語言拿來做 ETL 的優缺點. 裡面 Golang 值得注意的是 Regex 的效能不彰,可能會拖垮正個速度.

這篇 Reddit 裡面也有提到各個語言要做 ETL 要注意的事情. 尤其是 golang 相關的如下:

Go’s low hanging optimization fruits:

  • compile regexps only once (regexp.MustCompile) and use the compiled regexp for matching,
  • use buffered output (bufio.NewWriter, and don’t forget to Flush) when writing to output file,
  • don’t use fmt.Sprintf for simple string concatenation, if you want speed,
  • don’t use ioutil.ReadDir if you don’t need sorted filenames,

But the whole concept is strange for me: a one-process map-reduce should’nt use files for intermediate output, but channels.

最後,這邊有個 Golang 的 ETL 套件 (crunch)

行外人論 ePub 爲何很難普及

看一看各種電子書籍的格式之爭與為何 epub 很難普及的各種原因.

DeepText 介紹: Facebook 的文本理解引擎

Facebook 的語意理解引擎 DeepText 的介紹.

gØv summit 2016番外心得

透過參加 g0v summit 2016 來了解各國對於開放政府的概念.分別採訪了法國,印尼與尼泊爾來參訪的人,深入的了解各地開放政府的進度.



網站收集

喜歡看論文的不可以錯過 Golang 相關的論文.裡面有大量的有使用到 Golang 或是講解 Golang 相關的論文集錦.



有聲書/影片心得



本週專案 —–

這邊會寫一些我的Project 52的成果.

https://github.com/kkdai/maglev

主要就是將 Google 的論文做出實作. 最重要的還是花了一個禮拜的時間好好的了解論文的精髓.

這裡有完整的導讀


Evan

Attitude is everything