程式設計週記[2016/09/23]: GTG16忙完,大家也要保重身體

GTG 16 聚會的照片 這是什麼? 程式週記主要內容如下: Gihub project 介紹: 主要會貼一些github,但是會盡量寫上一些有用的評語(或是我容易想到的關鍵詞)幫助以後查詢 網路文章心得: 會寫些心得,強迫自己閱讀. “程式週記”並且定期週期性更新. 大部分內容在我的twitter都會有,這邊只是將一些簡單的心得與感想註解一下. 本週摘要 本週的幾件事情就是總算重新啟動了 Golang Taiwan 社群.結果忙完之後,我女兒就不斷地生病並且在醫院住了三天. 大家也要好好注意自己的健康. 最近工作上會使用到許多 Machine Learning 的技巧,現在每天都在 K 相關書籍希望能夠在短時間把所有的演算法與應用場景都搞熟. Go Take a REST with HTTP/2, Protobufs, and Swagger GRPC 大家用了沒? 是不是因為還不想把手邊的 RESTful API 換掉而沒有改到 GRPC ? CoreOS 展示如何透導入 GRPC 後,依舊有 RESTful API 並且有 Swagger 的服務。 相關議題,其實有上 Google Cloud Platform Podcast,想聽聽訪問的可以聽聽看 CoreOS CTO 如何解釋: [gRPC at CoreOS with Brandon Philips Google Cloud Platform Podcast](https://www.gcppodcast.com/post/episode-43-grpc-with-brandon-philips/) Go Development with Vim-go Vim-Go 的作者在 Digital Ocean 工作的 Fatih Arslan 來分享如何使用 vim-go .跟我一樣主要是在 Vim 上面開發 Go 的人不可以錯過,順便可以看看新版的 vim-go 又多了什麼功能. NEUGO: Neural Networks in Go 使用 Golang 的類神經網路計算工具. Google I/O talk: Building Sourcegraph, a large-scale code search & cross-reference engine in Go Google I/O 今年的 Talk 講解 Sourcegraph 如何透過 Golang 來製造他們 Code Search Chrome Plugin . Sourcegraph 是一個 Chrome Plugin 可以讓你直接去 parse github 上面得程式碼,直接尋找相關的宣告與函數的實體. 而他們如何透過 Golang 來建置相關的設施如下,以下摘錄幾個標題: No web framework 不使用任何 Golang Web Framework 而使用 net/http (個人後來也偏好這個) Unified API client and...
繼續閱讀

[Coursera] Illinois: Cloud Computing Concept Part 1 : Week 1-2

課程鏈結: 這裡 學習鏈結: Week 1-2 Week 3 Week4 Week5 Mini Project (Gossip Protocol) 前提: 到了新公司,其實也是躲不開繼續學習的宿命.不過可能是因為圍繞的人還是一樣 XD 這個課程是同事推薦,當然要來好好看看. 目前已經到了 Week1 與 Week2. 也順便大概跟大家介紹一下整個課程與內容,希望能讓更多人喜歡這堂課. 課程內容: 這裡先簡單的介紹整系列的課程內容,希望能讓大家了解這個課程想做什麼. 這整堂課主要是圍繞著 Cloud Computing 經常會使用到的技術與相關的概念. 整堂課其實只有一個程式語言作業: 使用 C++ 寫 Gossip Protocol 雖然課程裡面程式語言的作業不多,但是整體上的內容還算不少. 除了有談到一些雲端技術的基本概念: Map Reduce Multicasting and Gossip Protocol P2P Protocol and System K/V DB, NOSQL, and Cassandra (畢竟都談了 Gossip) Consensus Algorithm - Paxos, FLP Proof 其實課程內容很有料,也可以學到很多的東西. Week1 Orientation, Introduction to Clouds, MapReduce 講解不少的 Data Center 與分散式系統的基本概念,簡單地列一下幾個重點: Data Center PUE (Power usage effectiveness ) 通常這個數字一定會大於 1 (業界大概是 1.4~1.5) 分散系統中有談到 Map Reduce 要如何運作: YARN 是透過 RM (Resource Manager ) 來控制全部的系統工作分配. MapReduce Map 分配工作 Reduce 根據 key 將重複的結果合併起來. Week2: Gossip, Membership, and Grids 這一個章節主要開始介紹 Gossip 的一些原理,稍微節錄如下: Multiple-Cast: 單節點向所有節點廣播 透過 ACK (Acknowlegement) 與 NACK (negative acknowledgements) 來表示有收到或是沒有收到. 時間複雜度: \(O(n)\) Gossip Gossip broacast (UDP) There are two mode about broadcast: Push 時間複雜度 \(O(log_n)\) Pull 時間複雜度 \(O( log(log_n) )\) Fault Torrent: Packet Lost: 50% 封包遺失,依舊可以正常運作. Node Failure: 可以有一半左右的節點失效,還是可以正常運作. Gossip-Style Failure Detection (Heartbit)...
繼續閱讀

我的社群之路: 參加,參與,受到啟發與啟發別人的道路

(照片拍得真好,感謝專業大師 gtg16) 終於順利把 Golang 社群活動成功地重新啟動,也順利完成主辦了 GTG#16 的聚會 .心裡其實有不少感受想分享給大家. 起源 你啟發的人會有幾個,是一個兩個? 還是很多很多? 離開 Corel 後的兩年間,其實參加過不少的研討會,當然也有參加不少的社群聚會. 舉凡: Docker Taipei, Python Tapei, Golang TW 等等. 但是,其實讓我印象很深刻的就是第一次在 Golang 社群 發表的 Lightning Talk. 也就是剛開始準備 Project 52 (當時寫到 Week 13 ) 的一個 Lightning Talk. 還記得那一次的報名,只是想要試試看分享自己 Project 52 的決心. (當然絕大部分的原因是因為沒有搶到票) 膽戰心驚的花了十分鐘講完了(那霎那… )馬上忘記整個十分鐘講了什麼 XDDD . 於是要準備收包包回家得時候,就有個人跑來跟我用英文交談. (太神奇了,原來 Golang 可以將中文投影片轉譯成英文 XD ) 反正我們交談的內容大約是: 他剛從香港來台灣找前端的工作.結果看到我在 Golang 分享 Project 52 的想法大受啟發,他說他希望也能夠感染我的熱情好好的來學習一下 Golang (雖然他是前端工程師) .並且也好奇的詢問我,到底需要多久的時間才能熟悉 Golang . 很多時候,當你啟發別人的時候.其實,最受到啟發的將會是你自己. 原來,開源的專案不僅僅開啟了我自己的眼界與心態.由於我的分享,更有可能啟發別人進而讓別人也能有相同的感受. 大研討會時代 就是上個月,我不小心一次報名同一個禮拜的兩個研討會. 分別是 COSCUP 跟 Modern Web 2016  , 雖然要準備兩份投影片讓我七月底到八月每天半夜都熬夜趕投影片.但是想到如果有機會能夠讓其他人感受到我自己心中的熱情,進而改變他們的想法或是面對事情的態度,我就又打起精神來努力做投影片. 第一次大型研討會: COSCUP 2016 H0 會議室 還好,一切都還算順利. 雖然 COSCUP 講得太快而 Modern Web 卻又講得太慢. (是哪招?) 但是在 COSCUP 發生了印象很深刻的一些小事如下: 認識了不少原來在臉書上面看到的人 有個部落格讀者在我前往廁所的路上堵到我,然後跟我說有長期訂閱我部落格. 也有鼓勵我說,希望我繼續寫下去.(還好,我尿急應該沒有顯現出來 XD ) 不少攤位的人,看到我的臉就問我說.你是不是那個要講 Golang ( 原來我長得像 Gopher (驚!) ) 有人問我 COSCUP 上台到底會不會緊張? 如果你是來分享你喜歡的事物.你會緊張嗎? 第二次研討會: 認識人跟聊天比聽講多的 Modern Web 身為講者最大的好處,大概就是不斷地認識其他的講者. 可能也由於講者們本身的個性就是屬於樂於分享的人.(不然也不會來研討會講) 於是乎,大家很容易就能夠打成一片. 整個研討會也變成很像是來認識人一樣. Golang 社群重裝上陣 開完了幾個研討會,也想把 Golang 社群好好的經營起來.希望能讓更多人使用這個語言. 當然也不希望我講完 Lightning Talk 之後的 GTG#15 就讓社群倒了. 於是乎,我花了很多時間開始找講者.希望能有一些講者一起來籌辦第十六次的聚會.不過事與願違,實在找不到兩個講者. 這時候公司同事的社群經營王 - Simon 就講了一句話: 找不到講者,一開始都是自己來講的!! 就在轉眼一年前夕,我自己決定來籌辦第十六次的 Golang 聚會. 就先把之前在 Modern Web 沒有講很清楚的部分來一次講個清楚.(給自己一個交代) 另外一方面也來開始找講者. 還好,高雄有講者很彭場得願意講,只要有辦法連線. 講者就像是專案進度一樣是靠問出來的!! 有了兩個講者後,我就印了貼紙.趕快來開售票亭開始訂票(騙人進來).一如往常, Golang 社群只要限定在 20 人左右就能夠秒殺.然後就可以來找閃電秀跟下一個講者. 最後,好不容易湊齊了差不多的閃電秀講者. Here...
繼續閱讀

[研討會心得] Golang Taiwan Gathering #16 順利結束,相關資訊.

活動網址: 這裡 GTG16 - Slides: 可以 follow 這個 Repo Talks - Slides Evan Lin: Using Golang to build a smart IM Bot Hawk: Go+ Lambda + Dynamodb = Telegram Bot Lightning Talk - Slides Umbo CV: Kakashi - Golang X CI X CD duolC: Cyril - 使用Go實作跨平台匿名配對聊天app的後台機制 iotwav: Bean - Recruit for DevOps Evan: Use go channel to write a disk queue GTG16 - 影片: Golang Taiwan Gathering 16 影片出爐: Part 1 主要是我講建置 IM Bot 與 luis.ai demo Part 2 hawk 講解 Telegram Bot 與 lightning Talk Lightning Talks Umbo CV: Kakashi - Golang X CI X CD duolC: Cyril - 使用Go實作跨平台匿名配對聊天app的後台機制 iotwav: Bean - Recruit for DevOps Evan: Use go channel to write a disk queue
繼續閱讀

程式設計週記[2016/09/16]: 下週要舉辦 Golang Gopher 台灣聚會,記得參加

這是什麼? 程式週記主要內容如下: Gihub project 介紹: 主要會貼一些github,但是會盡量寫上一些有用的評語(或是我容易想到的關鍵詞)幫助以後查詢 網路文章心得: 會寫些心得,強迫自己閱讀. “程式週記”並且定期週期性更新. 大部分內容在我的twitter都會有,這邊只是將一些簡單的心得與感想註解一下. 本週摘要 公司的公事開始要忙碌了,不過還是要開始把一些記錄一下.此外, Coursera 的 Cloud Computing 第二輪希望能夠修完.筆記有點多都還沒寫完. 最重要的是下週有 Gopher Taiwan 聚會在 09/20 ,大家記得要參加. Go 初試 Go lang 經驗 同事透過 Pokemon naming package 來學習如何透過 VSCode 來寫 Golang. SOLID Go Design dfc (Dave Cheaney) 在 GopherCon 2016 上面的 Talk 如果想看中文版本,可以看這個. Creating a Bot using the Telegram Bot API 使用 Golag 的 Telegram Bot API 來建立一個聊天機器人 jpetazzo/Go + Docker = ♥ Docker 界的大大 jpetazzo 寫了篇講解如何透過 Docker 而不安裝 Golang 的方式來編譯,執行甚至是跨平台編譯的相關指令. 但是有些地方需要注意: cgo 與 net : 使用 Docker-Golang 來編譯與執行 Golang 程式碼,需要注意到是否有使用到 net 與 cgo 的部分,如果有你的 base image 可能要換成 from debian 雖然會比較大,但是就比較不會有平台上的問題. 關於使用 ssl : 處理 SSL certificate 一直都是很麻煩的事情,這裡建議透過 alpine 來安裝 root certificate FROM alpine:3.4 RUN apk add --no-cache ca-certificates apache2-utils rpcx is a distributed RPC service framework based on net/rpc like alibaba Dubbo and weibo Motan. One of best performance RPC frameworks. 這個 RPC Service 透過分散式的方式來提供更好的 RPC 效能,甚至遠遠超過 GRPC 與 Alibaba Dubbo 與 Weibe Motan...
繼續閱讀

[Golang] 安裝流程 CoreOS/DEX : OAuth Server

挑選 DEX 挑選 CoreOS 的 Dex ,因為它具有以下特點: 支援 OpenID 支援 Kubernetes Authenication (via OpenID) 支援 OAuth CoreOS 開發 (XD) 以下就是基本建置方式 建立 Google API Console 憑證 進入 Google API Console 選擇已經有的專案(或是建立一個新的) 進入”憑證中心“,建立一個新的憑證. 選取 “OAuth 用戶端 ID “ 選取 “網路應用程式” 在 “已授權的重新導向 URI” 輸入 “http://127.0.0.1:5556/dex/auth/google/callback” 這邊會取得 “ID” 跟 “Secret” 記得存下來. 建立資料庫 (PostgresQL) 1. 設定 postgres docker docker run --name postgres -e POSTGRES_PASSWORD=YOURPASSWORD -d postgres 2. 登入建立相關 schema docker run -it --rm --link postgres:postgres postgres psql -h postgres -U postgres >Password for user postgres: >psql (9.5.4) >Type "help" for help. postgres=# CREATE DATABASE dex_db; > CREATE DATABASE postgres=# CREATE USER dex WITH PASSWORD 'dex_pass'; > CREATE ROLE postgres=# GRANT ALL PRIVILEGES ON DATABASE dex_db TO dex; > GRANT postgres=# \q //離開 postgre console 3. 編譯 DEX 先設定 postgres 環境變數,將剛剛資料庫密碼帶入 export DEX_DB_URL=postgres://dex: YOURPASSWORD@localhost/dex_db?sslmode=disable P.S.: 如果你跟我一樣 postgres 使用 docker ,記得將 localhost 改成該 container 的 IP. 下載並且編譯 DEX git clone https://github.com/coreos/dex.git cd dex ./build 4. 設定環境變數與啟動...
繼續閱讀