February 26th, 2016
這是什麼?
程式週記主要內容如下:
Gihub project 介紹:
- 主要會貼一些github,但是會盡量寫上一些有用的評語(或是我容易想到的關鍵詞)幫助以後查詢
網路文章心得:
- 會寫些心得,強迫自己閱讀.
“程式週記”並且定期週期性更新.
大部分內容在我的twitter都會有,這邊只是將一些簡單的心得與感想註解一下.
本週摘要
這個禮拜花了太多的時間再弄自己的jekyll blog.本來想migrate到hugo去,但是因為hugo import jekyll有太多的問題(即便已經改了一些)還是有不少部分需要改. 後來還是把jekyll 3.0產生的樣板相關問題修復,也另外換了一個主題來使用. 好像jekyll又可以再戰十年?
本週持續NSQ的學習,先透過上週的Disk queue來改寫之前寫過的PubSub.
Go
Introduction Go 1.6
- Go 1.6剛在02/17正式release,Brad Fitzpatrick馬上在GopherCon India發表了這篇.裡面不僅僅有介紹了Go 1.6的功能也有順便預告了Go 1.7 ~ 1.10的產品規劃.當然也有一些笑話很有趣.
PlanB: a distributed HTTP and websocket proxy inspired by Hipache
- 透過Redis來架設的HTTP websocket proxy,可以拿來好好學習其中的作法與應用方式.
Google Cloud Vision API on Golang
- 在上週Google 總算開放Cloud Vision API給一般人申請使用,這篇文章有講解該怎麼做,當然也有提供他寫好的Golang Package
GOPHERCON INDIA 2016 Summary
- 2016最早開始的Gopher Con 有不少關於Go 1.6的相關議題.
nsq的使用與一部份介紹
- 最近幾週都在學習NSQ,這篇文章有不少的探討從技術層面跟他的設計理念都有提到.
Open-Source Phishing Toolkit
- 網路釣魚的工具給企業做測試與訓練用的.
Handling Database Migrations in Go
goose: A database migration tool
- DB migration tool,可以在無痛的狀況下變更你得資料庫schema.並且查看有無任何問題也可以快速的rollback.
A Go library for carefully refactoring critical paths and code. lightweight port from github scientist
- 精簡版的scientist用在golang上面.
gago is a genetic algorithm written in Golang
- 基因演算法的golang套件,會隨機產生數個解法,評估後挑選最適解法.
Building binary executables for Android in Go
- 在Android系統上面跑go的excution,由於Go 1.6支援x86的Android系統,這篇文章的應用又更多了.
HOW WE BUILT UBER ENGINEERING’S HIGHEST QUERY PER SECOND SERVICE USING GO
- Uber 如何透過Go來打造高效率的查詢系統.不少架構與內容的討論.
Python
gRPC Practical Tutorial — Magic That Generates Code
- 這篇主要講解如何使用grpc.很詳細地講解從protobuf開始,到一些簡單的應用.
Ruby
scientist: A Ruby library for carefully refactoring critical paths.
- 由github出的可以將你的critical path做重構的工具,並且可以幫你的Ruby程式碼做更好的重構.
Android/JAVA/NODE.JS
Docker
iOS/Swift
Swift cygwin ported
- Swift Programming Language gained a Cygwin Port 在Windows上也可以用了
30 Days of Swift
- 每天寫一個Swift iOS App來學習Swift,真是厲害.
網站文章
产品经理,你真的有经理职权吗?
- 一般的產品經理(Product Manager)常常因為有掛著Manager的頭銜讓人誤為就是具有經理的職稱.其實這邊指的是對於產品本身的管理職權擁有.但是是不是真的PM都有這樣的職權? 這篇文章有詳細介紹,並且從不同的層級來讓你更了解PM的工作內容.
IBM区块链技术(Blockchain)简介
- 一份由IBM提更的對於blockchain的基本介紹.
The Twelve Days of Crisis – A Retrospective on Linode’s Holiday DDoS Attacks
- Linode在去年聖誕節跟新年受到大規模的DDoS攻擊,這是一篇事後檢討文章.有清楚的介紹出事情的原因,經過與之後該如何防範.最近蠻喜歡看這類的文章,對於這種大規模出問題(Github, Linode)的檢討文章都有相當的深度.
網站收集
Become a Programmer, Motherfucker
- 超多各種語言的免費電子書跟相關連結
TIL: Today I Learn
- TIL (Today I Learn)是一個非常好的概念,透過github repo 來記錄.或許,也可以弄成一個TIR (Today I Read) 或是 TIB (Today I Browse)
What’s inside a PDB File?
- 微軟總算把PDB的資料格式開源,並且提供數個可以查看的工具.
有聲書/影片心得
USENIX Enigma 2016 - Several Horror Stories about the Encrypted Web
- 講解關於你認知的HTTPS其實沒有想像中的穩固.
本週專案
這邊會寫一些我的Project 52的成果.
本週專案:
https://github.com/kkdai/pd (PUBSUB) Publish-Subscrbe message broker with Disk queue in Golang
心得:
原本想到說PUBSUB跟DiskQueue應該要很簡單的整合,結果發現問題還真不少.首先要先定義DiskQueue本身是需要放在哪個部分,找過不少的地方之後,後來決定獨立出來一個Topic
物件,並且讓他控制DiskQueue來存取所有Publish的資料.這樣的好處有:
- 當一個topic有太多的訂閱者(subscriptors)可以讓Publish不會有block
- 當Topic有太多資料要送,可以先放在DiskQueue之後再慢慢Queue出來.
這樣的設計有一點參照到原先NSQ的設計,不過相對的簡單.
接下來應該會多花一點時間來讓DiskQueue更加的細緻,也多花一點時間去了解整個檔案的多工控管的細節.