這是什麼?

程式週記主要內容如下:

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

  • 由gophish網路釣魚的package公司發的DB migration 介紹文.裡面使用的是goose,但是比較多人推薦migrate

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

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更加的細緻,也多花一點時間去了解整個檔案的多工控管的細節.


Evan

Attitude is everything