January 16th, 2015
前言:
這個禮拜,總算有點時間可以去參加GTG.也順便多花了點時間研究Go….
筆記:
- [Golang] 一些網址與資料
- golang port of Google’s libphonenumber
- Go (Golang) code and table generator for CRUD functionality
- StreetCRUD is a code and table generation command-line utility for people who aren’t fans of ORMs, but appreciate a kick start creating struct methods, tables, and queries for basic CRUD functionality.
- Type-driven code generation for Go
- Code Generation using go-codec - for 2-20X performance improvement
- Using Go to improve your Ruby application’s performance
- Tango: Microkernel & pluggable web framework for Go
- Server Public Key Pinning in Go
- Decoding JSON streams with some garbage and slice/array garbage collection question
- 持續追蹤看看有沒有比較好的方式可以處理JSON的source如果有garbage
- Build dashboards using ascii/ansi art and javascript
- 用ascii跟ansi來顯示一些條狀圖跟線圖,而且是動畫.
- [Golang] 關於Golang的基礎執行環境
- 由於Go是compile只要用go win 版本compile成執行擋 (xxx.exe),最小大小為 2mb.可以在乾淨的Win7環境下直接執行. 就算有一些基本的fmt的函數也約為2mb左右. 可見執行環境相當的小.
- [Golang] 關於Golang與 C++的比較 (由dl.google.com為範例來比較)
- 主要是從這張slide擷取過來.內容是Google的人把dl.google.com從C++轉移到Go.優點如下:
- less than half the code
- more testable, tests
- same CPU usage for same bandwidth
- … but can do much more bandwidth
- … and more than one CPU
- less memory (!)
- no disk
- starts up instantly (not 24 hours)
- doesn’t crash
- handles hot download spikes
- 主要是從這張slide擷取過來.內容是Google的人把dl.google.com從C++轉移到Go.優點如下:
- [Golang] 跟硬體溝通的方式
- GoSerial: A simple go package to allow you to read and write from the serial port as a stream of bytes
- KKTIX透過這個來做驗票機,USB接著device透過serial 的輸出.但是有些大大建議如下:
- [racklin] goserial 只有 ReadWriteCloser , 但 RS232 在 Write 較多資料時,尤其是低速裝置,最好補上 TCDRAIN 。建議 patch 它。不過 kktix 用來做驗票的 Reader 溝通,需要 write device 的 Command 資料量不大,應不會有問題
- KKTIX透過這個來做驗票機,USB接著device透過serial 的輸出.但是有些大大建議如下:
- GoSerial: A simple go package to allow you to read and write from the serial port as a stream of bytes
- [Golang] 關於sort.SearchStrings 的小技巧
- 主要是論壇中有人提出,去尋找一下google forum的結果如下
- “In effect, the function returns the point where the new string would be inserted, if you plan to insert it. “
- 主要的要注意的是 sort.SearchStrings 回傳的index是如果要插入字串,可能可以插入的index.而不是去尋找字串.(亦可以解釋說如果當找不到該字串的時候,回傳的就是該字串的可以放的位址.而不是類似IndexOf的 -1)
- 參考程式碼 Go Play
- 主要是論壇中有人提出,去尋找一下google forum的結果如下
package main import "fmt" import "sort" func main() { test := []string{"hello", "world", "z"} fmt.Println(sort.SearchStrings(test, "hello")) //return 0 which hello could be insert in index 0, before "hello". The same string insert in front of it. fmt.Println(sort.SearchStrings(test, ".DS")) //return 0, ".DS" will be insert in index 0. Not cannot find (-1) fmt.Println(sort.SearchStrings(test, "world")) //return 1, reason the same with hello fmt.Println(sort.SearchStrings(test, "yDS")) //return 2, "yDS" before "z" so insert in index 2. /* Output 0 0 1 2 */ }
- [Go gen] A type-driven code generation in Go
- Git位置
- 在Go Miami meetup的 demo
- 簡單介紹:
- gen 提供了許多好用的type structure,也就是有點類似提供了generic 的功能.你可以透過他的資料型態做更多的資料處理. 在code撰寫上也很簡單.只需要在你的資料前面打上annotation.
// +gen slice:"Where,GroupBy[string],Select[Dollars]" type Person struct { Name, Office string } func main() { ny:= func(p Person) bool { return p.Office == "New York" } fmt.Println(persons.Where(ny)) }
- [Golang] 關於server-side敏感資料的儲存方式
- 主要是因為這篇討論的關係,要把這樣的資訊開始轉移.
- 比較建議有兩種方式:
- 透過config
- 如果是server side,舉例而言 Heroku的話可以讀取系統變數. Heroku 提供 Config::set. 然後再透過Go Environment Variable來存取.
- [iOS] 有趣的工具與文章
- Real-World Testing with XCTest
- 簡單的XCTest的教學,整體架構上很像是GoTest但是支援許多特有的功能(Mocking, CoreData…)
- iHasApp- The iHasApp iOS Framework allows you to detect installed apps on a user’s device.
- 可以幫助你檢查手機上有安裝哪些特定的App透過用URL呼叫的方式尋找
- XCode 的plugin 可以顯示每一個物件的dependency關係的plugin
- github位置拿來瞭解人家的code應該蠻方便的.
- 如何抓到iOS device的IP Address
- 有空可以比對看看跟寄到外網的差異在哪?
- Real-World Testing with XCTest
- [Other] 關於Github會使用到的一些其他服務
- CI服務:,讓你每次submit都可以自動跑看有沒有build break. travis-ci guide for Go
- 跑自動測試: 自動跑unit test並且獲得testing coverage. Coveralls
- 整合介紹文章,得找時間來試試看:
- [Android] GDG 自己的桌椅自己安