程式設計週記[2017/04/21]: Golang 可以做的事情越來越底層了

這是什麼?

程式週記主要內容如下:

Gihub project 介紹:

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

網路文章心得:

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

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

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

本週摘要

到了四月了,當初不小心把兩個分享都排在四月,於是又要準備兩個投影片.重要的是, Chatbot Day 的部分還有不少的 code 要準備.



Go

schollz/linkcrawler: Cross-platform persistent and distributed web crawler

是一個跨平台具有分散式與一致性的網頁爬蟲工具.具有可以一次將多個目標全部分散給各個 client 來抓取的功能.充分使用到 Golang 許多的特性,可以好好來看看

justForFunc

justForFunc 是由 Google 傳教士 - Francesc Campoy 所主持的 Youtube 頻道,裡面的內容都是講解 Golang 相關的部分,歡迎大家來訂閱.

此外: Google Cloud Platform Podcast 也是 Francesc 的另外一個的項目,主要就是 Google Cloud Platform 的 Podcast .這也是我經常收聽的. Francesc 跟 Mark 的對談很有趣

Introducing NATS to Go Developers – Shiju Varghese – Medium

NATS 是一個使用 #golang 建置的分散式 Message Queue 系統 (另外還有一個大家熟知的是 NSQ) NATS 原本是由 Ruby 開發而成,經由 Apcera 改寫成 Golang 之後持續維護的, 這篇文章有著基本的介紹,並且講解如何使用..

Mobile Apps by Pure Go with Reverse Binding

這篇討論一個很有趣的方向,在討論如何從 gomobile 裡面的 golang 語言中如何在呼叫 platform 的 code (ex: Android Java)

做法也很傳統,就是多包一層 cgo -> jni -> java . 真是老方法就是好用…. 不過不知道有沒有雷….

DigitalOcean Hsinchu

這活動不錯… 跟 #Golang 有關,不過地點在新竹… 有 HackMD + appleboy + kubernetes

How We Built Testable HTTP API Server

GoConJP 的投影片,講解如何建置一個可以測試的 HTTP API Server. 很多觀念基礎都有點到,搭配 Golang 語言特性 (built-in testing) 實在很方便.

Introducing NATS to Go Developers – Shiju Varghese – Medium

NATS 是一個使用 #golang 建置的分散式 Message Queue 系統 (另外還有一個大家熟知的是 NSQ) NATS 原本是由 Ruby 開發而成,經由 Apcera 改寫成 Golang 之後持續維護的, 這篇文章有著基本的介紹,並且講解如何使用..

ponzu-cms/ponzu

ponzu-cms/ponzu ( 版主? ) 一個透過 CLI 可以很快速建置起來的 CMS 系統. 透過類似 RoR 類似的指令方式,就可以建立出一個 CMS 並且支援 HTTPS/Server Push #golang .

這個專案這幾天獲得大家的注意,迅速的破了 2K stars . 並且被許多人稱為是最適合 Hackathon 使用的小工具.

mattn/go-mastodon

mastodon 是一個 Ruby 開發出分散式的類似 twitter 的 microblogger 這是 mattn 出的 #Golang client

參考:

periph - Peripherals I/O in Go

對於底層的控制 GPIO 方便如果要使用 Golang ,以往大家都是使用 Gobot 這個專案. 現在 Google 自己把許多底層的控制都寫好了.

介面包括了. GPIO, I2C, SPI, 1-Wire ,並且不需要 C Dependency .



Python

Android/JAVA/NODE.JS



Docker

“如何寫出一個好的 Dockerfile”

這一份深入淺出的教學,算是把大家對於撰寫 Dockerfile 一些比較容易犯的錯誤跟疏忽的地方做了很詳細的教學. 比如說:

  • 記得寫 .dockerignore 來避免把一些不必要的檔案(或是密碼 XD) 放入 docker container
  • 一個 container 盡量維持只做一件事情
  • 推薦使用 COPY 而非 ADD

還有更多教學,建議深入地看看..

[由於在我 twitter 上受到不少人推.. ,希望轉到這裡能幫到一些人]

Moby issue: A new upstream project to break up Docker into independent components

Docker CTO 親上火線解釋 Moby 到底定位是什麼? Docker CE, Docker EE 到底跟 Moby 的關係是什麼?

這裡有個示意敘述:

  • Moby = open source development
  • Docker CE = free product release based on Moby
  • Docker EE = commercial product release based on Docker EE.

簡單的說… Moby 就是過往 Docker 底層的開放 (Docker CE) 你可以做自己的 Container 格式或是相關處理. Moby 完全是開源,並且 Docker 自己透過 Moby 來開發成 Docker CE (也就是免費版本的 Docker 給一般人使用)

那麼商業用戶呢? Docker 會提供 Docker EE (也就是完全不給你看的的版本)

其實這一步是險棋,但是對於社群與開源而言是大利多.

連一向對 Docker 比較”嚴格”的 Kelsey Hightower‏ 都跳出來誇獎.. “Docker transitioning open source efforts to project Moby is a great move for both the community and the company.”

iOS/Swift



其他程式語言



論文收集



Kubernetes

CloudNativeCon and KubeCon Europe 2017

Cloud Native Con 與 KubeCon Europe 2017 是我這幾天都在關注的一個研討會. 你可以從裡面的講者就知道各大廠商無不希望能在 Cloud Natvie 的世界裡面站上一角. 裡面充滿了許多 Kubernetes 與 Cloud Native 相關的議程(當然.. 因為第一個加入 CNCF 的就是 Kubernetes ) .

目前先推薦一個跟 Kubernetes 相關的 slide ,其他的就等官方公佈出來了…

Brandon Philips 是 CoreOS 的 CTO ,相當的年輕與有能力外.也由於 CoreOS 目前與 Kubernetes 有著深度的整合.可以看看他的講題: Cluster Operations

裡面提到各種 Kubernetes Cluster 架設的方式 1.5 在 AWS 與 Azure 上面一些部署的建議.並且有探討到如何做 Monitor, Backup, Upgrade 與 Scaling 的相關建議,相當實用.

:Slide

虛擬化2.0 ‘‘Kubernetes’’ 容器 Container 再進化

研討會投影片



Machine Learning



網站文章



網站收集



有聲書/影片心得

[TIL] 關於最近風靡日本的服務 Mastodon (長毛象)

網站鏈結

如何注意到這個軟體

Mattn 是一個日本很厲害的 Gopher ,我長期有在關注他的 github 跟 twitter . 一開始先看到這個專案.

https://github.com/mattn/go-mastodon

那時候還不知道叫什麼專案,也沒有任何的說明.只是覺得像是一個 Web API Client

在 Twitter 上大行其道

接下來一堆 tweet 再討論 mastodon ,我才專心的去看了一下. 於是又找到 Poga 的這一篇文章. 架設你自己的 mastodon instance

也才知道 G0v 其實有架設自己的 masdoton 伺服器 g0v.social

究竟 Mastodon 是什麼?

簡單的來說,他就是一個類似 Twitter 的 microblogging service .

它具有去中心化的概念,也就是他的主機並不是一個類似 twitter 那樣集中的伺服器,而是分散在幾個點的伺服器. 比如說台北可以建一台 mastodon.taipei ,高雄也可以建一台.

但是你可以跨伺服器來 follow, reply 跟 reblog .讓整個變得具有自由化與自主性.

而且它具有以下跟 twitter 差異很多的地方:

  • 時間軸按時序顯示文章,不作多餘處理
  • 公開時間軸
  • 每篇文章最多 500 字
  • 支援顯示 GIFV 短片
  • 可逐篇文章調整隱私設定
  • 完善的封鎖使用者、靜音功能
  • 良心設計︰沒有廣告,不追蹤您的使用行為

其中 500 字跟可以每一篇決定隱私權這件事情很對許多 twitter 的胃口. 讓本來風行 twitter 的日本,在短時間內就紅了起來.

在日本紅的主要原因:

要知道他為什麼會紅,這個還是要找到熟悉日本的一些人. 在臉書好友的文章討論串裡面整理出來的原因如下:

  • 因為東西方對兒童色情的認知差很多,Twitter 會封鎖發二次元 H 圖的帳號,很多日本繪師的帳號常常一夜消失.
  • Twitter 只能全公開或全鎖推, Mastodon 可以個別鎖文(類似私噗)、加上內容警示,而且一則可以發500字. 對於使用者自由度比較高.
  • Mastodon 就剛好對上了日本人胃口,然後 Pixiv 又跳下來自己開了Pawoo .
  • 先前有個 Twister ,是基於 P2P 跟 Blockchain 的技術做出來的 twitter clone。 目前還是有在持續開發,可是為什麼沒紅呢? 我覺得關鍵就是 mastodon 可以直接上網註冊使用,而 Twister 則需要下載 client 才能使用。 後者的加入阻力很大。

參考

[研討會心得][GDG] Google APAC Machine Learning Expert Day 分享

投影片:

內容:

今天總算找機會到 GDG 來分享,三月初去新加坡的經驗與分享.內容主要圍繞著以下三個部分:

  • Tensorflow Dev Summit RECAP
  • Some interesting projects during lightning talk
  • How Linker Networks use Tensorflow

由於 Tensorflow 主要有兩大部分的進展,可以透過 Data Engineer 的角度來看 XLA (Accelerated Linear Algebra) ,也可以去了解該如何有效率的設置 Distributed Tensorflow.

另外一個角度,也需要從 Data Scientist 的角度來看 Tensorflow 有多大的進步.於是我也請了公司的 Data Scientist - Ben Chen 一起參加.

由於 GDG (Google Developer Group) Taipei 並不是主要專注在 Machine Learning 相關的社群,這次的部分盡量以帶給大家粗淺的了解為主.

希望大家都能喜歡….

[Go][TIL] Animal Photo Classification Line Chatbot

Line Bot Animal photo classification

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

功能:

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

背後原理:

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

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

架構:

其實這個 Chatbot 還會連接我後端一個 API Server (tf-go-inception) .上面已經將 Inception 訓練好的 model 讀進來.

當你在 Line Chatbot 上面上傳圖片的時候, LineBotAnimal 就會將 圖片透過 multipart 的方式傳到 tf-go-inception 的 API Server

API Server 會將圖片透過 Tensorflow 來預測你的結果,並且傳回給 LineBotAnimal

參考:

[TIL] Paper: Consistent Hashing with Bounded Loads

原文: Consistent Hashing with Bounded Loads

在實作網路服務的過程中, Load Balancer 是最常被運用在分散流量到適當的伺服器之中. 而其中就是使用 Consistent Hashing 的演算法實現. 在使用 Consistent Hashing 的過程中,最被人在乎的就是兩個主要的問題

  1. 分布的均勻度 (uniformity)
  2. 當發生了新增與刪除伺服器的時候,需要有多少的移動次數.

Google 當然已經把這個問題解決,並且已經放在他們的 Google Cloud Pub/Sub 服務之中. 也在去年的八月將論文發表出來.

( Google 很擅長將神之技術寫成論文後,然後放在 GCP 裡面 XDD)

沒想到論文發表三個月後, Vimeo 的工程師將論文看懂後把相關演算法實現在 haproxy (這.. 應該不用解釋.. 就是最基本的開源 load balancer ) 之中,並且在 Vimeo 上線了. 並且將相關過程寫成這篇部落格….

有興趣的可以一起來鑽研這篇論文…. 不知道 Consistent Hashing 是什麼… 可以看看小弟當初練手用的 Golang Consistent Hashing

或是可以看看這堆 Viemo 工程師將它實現在 HAProxy 的 summit

程式設計週記[2017/03/31]: 又寫了一個聊天機器人.. XDD

這是什麼?

程式週記主要內容如下:

Gihub project 介紹:

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

網路文章心得:

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

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

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

本週摘要

為了之後的 Chatbot Day ,最近用掉自己半夜的時間,把自我學習的聊天機器人完成了.

也很久沒有在寫一些小專案或是 side project ,感覺相當的好.



Go

mattn/mattn-icons

mattn 是一個 #Golang 很厲害的日本人,常為人熟知的作品就是 go-sqlite3 跟 gom .他有個招牌就是 github icon 是一個閒晃的小男孩(應該是吧) 這裡搜集一堆他的圖片

以下跟 Golang 有點關係,他在這個 repo 有放個 update-readme.go .當有新的圖片上傳,可以自動更新 README.md .算是很有趣的.

參考:



Python

Android/JAVA/NODE.JS



Docker

iOS/Swift



其他程式語言



論文收集



Kubernetes

Kubernetes Authentication plugins and kubeconfig

這個網站列出如何在 Kubernetes 上面的 authentication .

Five Days of Kubernetes 1.6

連續五天介紹 Kubernetes 1.6 的新功能,第一篇就是剛剛有人分享的 Dynamic Provisioning ,有興趣可以持續關注.

Kubernetes issue: kubeadm 1.6 is broken due to unconfigured CNI making kubelet NotReady

Kubeadm 可以讓你安裝 Kubernetes 就像是使用 docker swarm (v2) 一般容易.

所以除了 GKE, Kops 之外,這大概就是一般人很喜歡拿來架設 Kubernetes 的方法之一.但是它也是有一些限制就是 OS 的限制比較嚴格 (Ubuntu 16, centOS 7 …)

但是日前的 Kubernetes 更新到 1.6 的時候,不少人發現 Kubeadm 無法正常的使用了. 到了現在都還沒有被解決… 有興趣想了解的人可以一起看看…

想了解 kubeadm 的中文說明,可以參考我之前寫的部落格: http://www.evanlin.com/til-kubeadm/

Machine Learning

自駕車學習之路(ㄧ)

有人分享學習 Udacity 自動駕駛車的心得.

如果你還在考慮要不要學,可以看看他貼出的作業部份.很多作業都看起來很有趣…

參考: Udacity Self-Driving Car Engineer Nanodegree



網站文章

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

裡面包含圖片,各種影像格式 av1, h264, h265 的編碼格式與一些基礎原理外.也有 ffmpeg 的相關操作. 對於想要惡補或是回顧的人會有趣.

裡面的解釋都很清楚,有大量的圖片作為輔助.相當的棒!



網站收集



有聲書/影片心得



小專案: 使用 LUIS 的自動學習聊天機器人

為了 Chatbot Day 準備的小專案(好像好久沒寫專案 XD)

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

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

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

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

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

[預告: Chatbot Day 還會有 Tensorflow 相關的 Chatbot,請期待…]