Use Zap Observer

If you are using zap as your logging tool, then when you write the tests, you might want to assert the function via the logs. You can use zap/observer package to make it possible.

Below is a code piece to demonstrate how it works:

Continue reading

Again

嗯,我又把 theme 換掉了。還有個原因是裝了最新版的 hugo 後,就 build 不出來了,只好順便換個新的 theme。

Continue reading

最近看了一些書,有空就寫點筆記上來… ISBN: 978-986-216-605-5 以下記一些片段 計畫是一種猜測 別當工作狂 (J: work smart) 坐而言不如起而行(真正的重點在於你執行得好不好) 實現夢想完全是自己的責任,當你夠可望,自然就能撥出時間。(J: 不僅只是夢想,別拿時間當藉口) 明確表明立場 使命宣言不是說說而已(J: 莫忘初衷) 你需要的其實比想像少(J: 現階段真的需要這麼多嗎?) 別在進場時就想著怎麼退場(你需要的是實踐承諾的策略而不是退場策略) 擁抱限制、不要貪多 從核心要點做起 忽略初期的細枝末節 不管你規劃的多詳盡,凡事總有出錯的時候 懂得捨去才是關鍵 減少投入反而解決了問題 聚焦於不會改變的事物(專注於永久性的特點 e.g. 沒有人希望程式跑很慢的,一定都是越快越好) 不斷地動手做 有時放棄是對的 不必逞英雄 人類不擅長估計,預估一件大事很難,但預估小事簡單多了,把大事切成許多小事吧 一次只做一個小決定 不要抄襲、避免大眾化 預設拒絕立場 自己先動手做 靈感是會過期的 這本書和 hiroshi 大人借的,應該可以入手一本,覺得前半部比較偏個人、後半部就偏專案產品面, 這本書值得不時拿出來細細品味,不同時間看應該都有不同的感覺。

Continue reading

幾天前在 Golang Taiwan 的 slack 裡看到了一些關於 goroutine 的討論 有人問了以下程式碼 (from http://blog.mergermarket.it/now-youre-thinking-with-channels/) package main import "fmt" func main() { channelForInts := make(chan int) go printIntFromChannel(channelForInts) channelForInts <- 5 } func printIntFromChannel(channel chan int) { number := <-channel fmt.Println("The number is:", number) } 提到上述程式碼在 goplayground 上測試好幾次都會印出 The number is:5 但他自己在本機跑是怎樣執行都不會出現 5 看到這個問題第一個想到的是 sync.Waitgroup 之前剛開始學 goroutine 的概念時,就在 stackoverflow 上看到有人討論相關的議題 加個 sync.Waitgroup 就可以保證看到 goroutine 執行完後的結果。 而事實上會這樣子的原因 Go Programming Language Specification 有寫 Program execution begins by initializing the main package and then invoking the function main.

Continue reading

工作上 rails 在每個 stage 的 domain 長度都不太一樣 例如 production 是 example.com,staging 是 kerkerj.staging.example.com MyApp::Application.config.session_store :redis_session_store, { key: 'example_session_token', domain: :all, tld_length: 4, serializer: :hybrid, redis: { host: "....", key_prefix: "...", expire_after: 7.day, } } 相關原始碼: action_dispatch/middleware/cookies.rb 在這裡的 tld_length 就是看你 domain 的 tld 想設定到哪就寫多少 以 kerkerj.staging.example.com 為例,想要 example.com 就是 2,想要 kerkerj.staging.example.com 就是 4 而在 Rails App 裡,在 config.action_dispatch.tld_length (或 ActionDispatch::Http::URL.tld_length ) 設定的 tld_length 在 rails api document 的 #domain 有用法

Continue reading

如果 rails app 裡的 initializer 有載入順序的需求的話 可以照著 Ruby On Rails Guide 這篇來設定 If you have any ordering dependency in your initializers, you can control the load order through naming. Initializer files are loaded in alphabetical order by their path. For example, 01_critical.rb will be loaded before 02_normal.rb. 檔名加個數字前綴,rails 就會以數字順序來依序載入~

Continue reading

Author's picture

kerkerj

Cat lover <3

Backend Engineer

Taiwan