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

這是前陣子在工作上用到的 有個 golang 的專案,使用了 gb 來管理第三方套件 當時想套 goconvey 進來 但是一直搞不定執行的方式 後來在 github goconvey issue 裡找到了方式 $ cd /to/your/gb_projects $ PROJECT_DIR=`pwd` $ GOPATH="$PROJECT_DIR/vendor:$PROJECT_DIR" goconvey -packages=1 -port 8899 這樣就會跑 web ui 出來摟 不想跑 web ui 就執行 gb test -v 就可以了…上面這樣只是單純想跑 web ui 而已 XD

Continue reading

不知道標題該下啥… 前陣子因為工作需要,需要測試一個 web app 分布在多台機器下的狀況 想說使用 docker 來做這件事,但又懶得弄 nginx 的設定 稍微查了一下發現有 dockercloud/haproxy 我使用的情境是 web app * 3 + ha * 1 + redis * 1 web 使用了兩個 port 7788, 7789 但是不想讓 ha 把流量導去 7788,所以可以設定 EXCLUDE_PORTS 如此一來,在 docker-compse up 後,就可以透過 http://192.168.99.100:5566/ 來連上了 並且可以透過 docker stats $(docker ps -q) 這個指令來觀察正在執行中的 containers 的基本 metrics~ 快速簡單!

Continue reading

[tool] diff-so-fancy

現在想到什麼都來 PO 一下 XD https://github.com/so-fancy/diff-so-fancy 拿來幫你把 git diff 變漂亮的東東 // install $ brew install diff-so-fancy // Setup $ git config --global core.pager "diff-so-fancy | less --tabs=4 -RFX" // make it more fancier $ git config --global color.diff-highlight.oldNormal "red bold" $ git config --global color.diff-highlight.oldHighlight "red bold 52" $ git config --global color.diff-highlight.newNormal "green bold" $ git config --global color.diff-highlight.newHighlight "green bold 22"

Continue reading

Author's picture

kerkerj

Cat lover <3

Backend Engineer

Taiwan