程式設計週記[2016/06/24]: COSCUP 要開賣, Docker Swarm v2 帶來集群管理

這是什麼?

程式週記主要內容如下:

Gihub project 介紹:

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

網路文章心得:

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

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

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

本週摘要

正式上班第一週,大部分時間都在開會 @_@ .本週最大的事情大概就是COSCUP 要開賣還有就是 Docker 出了自己的集群管理系統 Docker Swarm v2 . 本週還是寫了一個專案,不過不會記錄到 Project52,大家也要繼續寫喔.



Go

Short Introduction to Bleve

一個文字搜尋的套件,支援相當多的語系.這裡有 Github

GO: MARSHAL AND UNMARSHAL JSON WITH TIME AND URL DATA

講解如何透過 Custom Marshaller 透過 JSON 來處理 time 或是其他類型資料.這裡有更仔細的影片教學可以看 from Francesc Campoy -

http://elliot.land/go-subtests-and-sub-benchmarks

主要是講解 Go 1.7 新增的 subtest 跟 subbenchmark 的部分.

HOW TO WRITE ROUTER TESTS IN GO



Python



Android/JAVA/NODE.JS/Scala

Spark Streaming Programming Guide - Spark 1.1.0 Documentation

Send data to spark streaming directly via pipe



Docker

Youtube: Docker 1.12 Release Candidate 2

About Docker Swarm V2, 內建 SwarmKit 之後.類似 Mesos 一樣可以很方便的建置出資源控管.

More Microservices Bliss with Docker 1.12 and Swarm only

專門幫 Docker port 到 PI (ARMed) 的 HyPriot 也把 1.12 開始導入了,這篇也有一些介紹.

DockerCon 2016 D1 主题演讲

紀錄 DockerCon 2016 第一天的重點,主要還是集群管理的部分.

Swarm Reboot in Docker 1.12

SwarmKit 在 Docker 1.12 之後會整合進 Docker Swarm 中,這篇文章做一個簡單的介紹.

Building serverless apps with Docker

若有參加 Docker Birthday #3 聚會,應該都了解這 voting 的 Micro-services web 架構,原 fig 作者(後來變成 Docker compose) - Ben Firshman ,把這應用程式變成 Serverless 架構。測試過無需裝 Docker 1.12 rc2,Docker 1.11亦可執行,但 Docker Compose 要 1.7 以上~



iOS/Swift



其他程式語言



論文收集



網站文章



網站收集



有聲書/影片心得



本週專案

Project 52 雖然結束了,好像還是天天在寫東西.紀錄一下

Facebook Bot in Golang 範本與簡單教學如何馬上配置好 Facebook Bot Server 透過 Heroku.

明明 Project 52 都結束了.. 還是習慣寫點東西…

程式設計週記[2016/06/17]: 女兒剛滿週歲,Project52 也順利完成

這是什麼?

程式週記主要內容如下:

Gihub project 介紹:

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

網路文章心得:

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

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

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

本週摘要

本週真是一波多折:先是老婆感冒生病,再來換我眼睛長針眼.也剛好本週要把 Project 52 跟一個電子報導(尚未發,先保密)寫完.整個就是忙碌到不行.最後專案是 Raft Server ,所有的變數名稱跟功能都是依照論文來寫.不過 Log Replication 還需要更多的測試才能確認功能是否正常.



Go

google/cayley: An open-source graph database

Google 開發的開源圖形資料庫,裡面提供許多關於連接資料 (Linked Data) 的工具箱.

GB 0.4.2 release

GB 有新功能就是 nope mode ,可以只編譯 test 的部分而不去跑他,來確保程式碼有沒有基本的問題.

How to do Google sign-in with Go

透過 Golang 來撰寫可以登入 Google 服務的功能.

roylee0704/gron: gron, Cron Jobs



Python

Reactive Programming in Python

PyCon Taiwan 2016 的講稿



Android/JAVA/NODE.JS/Scala

jQuery 3.0 Final Released!



Docker

Shrink your App with Alpine Linux

教導你如何將 App 修改後可以放入 Alpine Linux 之中,這樣也可以在 Docker 放入 Alpine (又小又安全)

gaia-adm/pumba: Chaos testing tool for Docker



iOS/Swift

iOS 裡面的 SourceKit 已經是用 Swift 編譯而成



其他程式語言

Spark手把手:e2-spk-s02 教你如何透過 docker 來架設 spar



論文收集

Who to Follow for DevOps Resources on Twitter | Automic Software

DevOps Twitter 名人帳號清單.



網站文章

Clairvoyance 是怎麼開發的 - 104 Chrome 套件天眼通的開發經過與心得

最近很知名的 104 Chrome Plugin 可以讓你在職位下面留言.

Secure and fast GitHub Pages with CloudFlare

找時間要把這個部落格 HTTPS 的問題透過 CloudFlare 解決一下

API 已死,Bot-to-Bot 时代即将到来

[原文] 這一篇裡面是提到,透過自然語言的發展.以後機器對機器可以越來越簡單,而不用再透過 API 了.

揭秘苹果的 AI 技术: 即将用于Siri 2 的自我学习技术

灣區日報: 面對困難項目怎麼辦

面对困难的项目(尤其是side project),如何坚持做下去?将每天醒来的第一个小时贡献给这个项目,一小时到了可以停下来明天再做。这种方式开始新的一天就会时不时思考该项目。每天一小时,养成了习惯,就坚持下去了,就有可能做成你原以为做不成的事。 [摘錄]

Slide: QCon NewYork 2016: The Verification of a Distributed System

The Segment AWS Stack



網站收集

Distributed systems for fun and profit

“GDB for fun and profit”

A curated list of awesome Amazon Web Services (AWS) libraries, open source repos, guides, blogs, and other resources. Featuring the Fiery Meter of AWSome.

收集所有的 AWS Web Service



有聲書/影片心得

Youtube: Distributed Consensus Making Impossible Possible

很值得一看.

Google’s Site Reliability Engineering with Todd Underwood

想知道 Google SRE 做什麼,聽聽看



本週專案

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

本週專案: https://github.com/kkdai/raftserver

最後一個禮拜,當然要專心把 Raft Consensus 寫完.不過這週有太多的事情.所以雖然做完了,但是只有 Leader Election 有比較多的測試; Log Replication 需要更多的測試與問題修正.

邁向下一步

打完卡後,就要離開群光電子. 在這兩年多,不務正業的完成以下目標:

  1. 有一個可愛的女兒(滿足…)
  2. 完成 8 堂 MOOCs (本想一年 10 堂,但是硬生生拖了兩年還是上不完)
  3. 程式語言 Scala, Swift, Golang, Ruby, R 學習. Python 算複習. ObjC / Android 工作上的就不算了.
  4. 完成了 Project 52 (眼淚…)
  5. 將要站上 COSCUP 講者台 (順便也將要站上 Morden Web)
  6. 讀了 4 篇非工作上的相關論文 (Paxos, Raft, Gorrila, Maglev)
  7. 很開心地加入了碼天狗,認識很多厲害的大大.

勇敢邁向下一步吧… 我是這麼想著..

[TIL] 將資料從 Macbook Air 轉換到新的 Macbook Pro Retina

起源:

買了一台 15 吋的 MBPR 來當作工作機,就必須要把我的資料從 MBA 轉換到 MBPR .這邊寫一下經過紀錄一下:

流程:

透過 “系統移轉輔助程式” 來轉移資料:

根據 Apple: 將內容移到新的 Mac 應該直接使用 “系統移轉輔助程式” 應該要可以把兩台電腦透過 WiFi 來轉移資料,但是不知道為什麼找不到對方電腦,有試過以下的方式:

  • 雙方電腦確定都更新到 10.11.5
  • 確定在同網域
  • 確定同使用者

還是不行.決定換方式.

透過 “Time Machine” 來轉移資料

這邊要先講一下,原本我的 Time Machine 都放在 NAS 上面.結果要在另外一台電腦還原的時候就苦惱了.

後來還是決定另外弄一個隨身硬碟來弄 “Time Machine” ,然後透過 “系統移轉輔助程式” 來轉移.

轉移成功後還是有一些東西要處理:

  • Homebrew 的資料夾 /usr/local 權限要處理,可以參考這篇
sudo chown -R $USER:admin /usr/local

其他使用到現在都還沒出現其他問題,有問題再來更新.

參考:

程式設計週記[2016/06/10]: 端午節 -> 白蛇 -> Python -> Python 節

這是什麼?

程式週記主要內容如下:

Gihub project 介紹:

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

網路文章心得:

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

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

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

本週摘要

本週適逢連假,本來想寫作者外出取材中.但是還是很拼命地完成相關的文章索引跟當週作業.下週就是我完成 Project 52 的最後一週,本週投稿 COSCUP 結果被接受.很期待跟大家分享做 Project52 的快樂與心酸啊 :)



Go

heroku/force: A command-line interface to force.com

Heroku 出的 force.com 的 CLI 工具,可以到這裡去看看詳細簡介.force.com 是由 salesforce.com 的 BaaS 服務.

Introducing Gimme: Dependency-less dependencies for Go

“Gimme” 提供了另外一種 Dependency Management 的一種思維.就是幫你需要的檔案直接複製到你的資料夾裡面.

Running Go on a Chromebook in Developer Mode (without installing Linux)

如何在 Chromebook 上面跑 Go 卻不需要安裝 Linux

SwimRing - A Minimal Distributed Fault-Tolerant Key-Value Store built with SWIM Gossip Protocol and Consistent Hash Ring

有時間可以看看裡面的部分,SWIM + Gossip 並且透過 Consistent Hashing .

鯰: Programmable fuzzy scheduler for testing distributed systems http://osrg.github.io/namazu

透過 Namazu (鯰) 可以幫助你測試分散式系統 (Zookeeper, YARN) 的一些問題,進而分析問題的主要原因.

這裡有更詳細的影片,可以看看: https://www.youtube.com/watch?v=mmSV4AhJUno

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 能力的服務.可以參考一下這篇文章.

Service autodiscovery in Go with sleuth

這一篇講解透過 sleuth 來做 伺服器的 auto discovery



Python

Youtube: The Clean Architecture in Python

心得: BerkeleyX CS100.1x “Introduction to Big Data with Apache Spark”

主要都是使用 PySpark 很好的課程心得,雖然去年我也修過了

fukuball/FukuML-Tutorial

fukuball 有公布他的 Machine Learning 的套件,這個就是一個 python notebook 來講解如何使用該套件.



Android/JAVA/NODE.JS/Scala



Docker

docker/swarmkit: A toolkit for orchestrating distributed systems at any scale. It includes primitives for node discovery, raft-based consensus, task scheduling and more.

Docker 在 06/17 開源了這個專案, 主要用来提供容器集群以及编排能力.並且提供具有 raft-consensus 的集群系統. 這裡有更多的介紹文

iOS/Swift



其他程式語言

如何來 Debug Regex

Hound comments on style violations in pull requests

幫助你把 PR 先做一次 style check (lint) .



論文收集

[Static Deadlock Detection for Concurrent Go

by Global Session Graph Synthesis](http://www.doc.ic.ac.uk/~cn06/pub/2016/dingo/main.pdf)

論文作者有在 gophers.slack.com 裡面說明:

deadlock detector above it works only up to go1.5 (because go/ssa changed interfaces in go1.6)

Code: dingo-hunter

2016 年機器學習頂級論文下載 (Conference on Learning Theory)



網站文章

Design KKBOX app for UWP

在 Win10 的 UWP 架構下設計 KKBOX App 心得文章.主要都是講解 UI 一些物件的處理.

Should Engineers Really be Judged by Their Resume Writing Skills?

常常我們都會把履歷表弄的很炫很棒,但是卻讓很多非本科系的人看得霧煞煞;或是有的人能力很強,履歷表上面卻無法正常表現出它應有的能力與水準. 這篇文章採訪了 Martin Harriman 一個硬體工程師想轉職到軟體工程師,但是卻無法寫出一份良好的履歷表.

使用 Stripe Atlas 設立美國公司的心得與歷程分享

想要開美國公司可以看看這篇文章,作者花了兩個月透過 Stripe Atlas 在美國開設公司的經驗.

樓門五三桐:成長歷程小分享

作者本來想從事數學系的相關教學工作,卻轉行變成財務工程.並且講解一個很有趣的遊戲”價值卡”,建議大家可以看看.

How I learned extensively by a Hack-a-thon…!!

作者敘述他在 Hackathon 裡面學到的東西遠遠比一般工作還要多.對於 Hackathon 有興趣的人可以看看.

聊天机器人如何盈利?这里有七种可能的商业模式

講解最近很紅的 IM Bot 要如何獲利. T客邦有另外一篇類似的文章: 為什麼Facebook、LINE、Skype都在做聊天機器人?你該知道什麼是對話式電子商務時代了

立志成為物聯網中樞,亞馬遜 Echo 的開發秘辛

Echo 主要團隊都是從 Fire Phone 過來的,並且透過之前的經驗來打造全新的智慧家電體驗.

When Your Strength Becomes Weakness: Microsoft & Web 2.0, Google & Social, and now Apple & AI

講解著微軟與 Google 與 Apple 原本都從事自己專長的.但是因為時代的變遷,沒有跟上時代的腳步而將原本的優勢變成了自己的劣勢. Inside 已經有翻譯成中文

這邊另外有一篇探討 Yahoo 輝煌不再的文章

Serverless Reference Architectures with AWS Lambda

講解 AWS serverless (也就是俗稱的 Lambda ) 架構.這篇部落格很棒值得推薦.



網站收集



有聲書/影片心得

Netflix’s Data Pipeline with Steven Wu

講解為何 Netflix 的使用者資料處理流程 (data pipeline ) 要從本來自建的 control manager “Chukwa” 換到 Kafka .

裡面有不少有趣的討論,更多詳細都是來自於 Netflix 的這篇 blog



本週專案 —–

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

https://github.com/kkdai/petl

主要就是開始學習 Pipe 與 Pipeline 在 Golang 中要如何一起實現,並且透過這個簡單的程式來做一些簡單的資料存取與處理(這裡用最簡單的文字大小寫變換).

程式設計週記[2016/06/03]: 我竟然出現在唐鳳大大演講的投影片裡面!

這是什麼?

程式週記主要內容如下:

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 的論文做出實作. 最重要的還是花了一個禮拜的時間好好的了解論文的精髓.

這裡有完整的導讀