Type something to search...

Blog Posts

從 Arel 看 Visitor Pattern
從 Arel 看 Visitor Pattern

偶然發現,Arel 好像是用 visitor pattern,好奇心驅使之下,就來研究看看。 翻翻歷史 翻了一下 Arel 的 repo,發現它其實一開始並不是用 visitor pattern 的,是在 2.0.0 之後才重寫,如這個 [History](https://github

read more
[MySQL] 使用 update_all & subquery 可能會鎖住全表
[MySQL] 使用 update_all & subquery 可能會鎖住全表

團隊最近遇到一個 subquery + update_all 會鎖整張表的問題,花了一點時間研究 注意:以下為 MySQL 5.6 的實驗探討,在 MySQL 8.0.21 的這個機制已經被優化了 問題 假設有一份 schema 長這樣,有 users 和 posts 兩張表。 create_table "posts", options: "ENGINE=

read more
如何讓 whenever 排程執行的程式,噴錯時寫到 Rollbar
如何讓 whenever 排程執行的程式,噴錯時寫到 Rollbar

串接 Rollbar 的好處是可以方便監控伺服器噴錯。但是在使用 whenever 排程時執行程式時,有辦法在噴錯時也寫到 Rollbar 嗎? 如果是使用 sidekiq,無論是使用 include Sidekiq::Worker 產生的 [worker](https://github.com/mperham/sidekiq/wiki/G

read more
使用 Arel 寫出好看的 Left Join
使用 Arel 寫出好看的 Left Join

之前想要寫有條件的 left join 都會寫成 raw SQL query 的字串,但是其實也可以用 Arel 寫出比較好看的程式碼。 假設有個 DB 的 schema 長這樣: create_table "posts", force: :cascade do |t| t.string "title" t.boolean "active" t.integer "u

read more
設定可以跑 rails core repository 測試的開發環境
設定可以跑 rails core repository 測試的開發環境

記錄一下照著官方教學設定開發 rails core repository 的環境 以下步驟取自 https://github.com/rails/rails-dev-box:安裝 VirtualBox。Mac 如果安裝 VirtualBox 遇到權限問題,[要到 Security & Privacy 允許

read more
如何在 IRB/Pry/Rails Console 使用 Up/Down 鍵搜尋以前打過的命令
如何在 IRB/Pry/Rails Console 使用 Up/Down 鍵搜尋以前打過的命令

覺得 Ctrl + R 的 reverse-i-search 用的不是很習慣,google 了一下原來這樣設定就可以用 up/down 鍵搜尋了。 新增 ~/.inputrc 檔案,裡面設定: "\e[A": history-search-backward "\e[B": history-search-forward

read more
CVE-2020–15169
CVE-2020–15169

來看看這個 CVE-2020–15169 漏洞是怎麼回事 看 https://github.com/advisories/GHSA-cfjv-5498-mph5 的說明可以知道,發生的時機在於,如果你使用了 [https://guides.rubyonrails.org/i18n.html#

read more
《智能社會:進退兩難》觀後感
《智能社會:進退兩難》觀後感

這次讀書會看了這部紀錄片《The Social Dilemma》,中譯《智能社會:進退兩難》,記錄一下觀看心得。 這部電影在描述像是 Facebook 這種社群軟體,他的商業模式是廣告曝光,所以軟體為了讓用戶黏著度提升,會推薦用戶喜歡、認同的貼文。但是這樣的方式會讓用戶只看到某一個面向的貼文,例如你支持的政治議題會頻繁出現,但是你卻不容易看到另一邊的意見。久而久之,你可能會覺得,那些跟你立場不同

read more
method_missing 傳遞 splat argument 會噴 SystemStackError
method_missing 傳遞 splat argument 會噴 SystemStackError

最近遇到一個因為 splat argument 導致噴 SystemStackError 的案例,研究了半天發現是使用 method_missing 才會遇到 最近工作上遇到一個案例,是呼叫某個函式會噴 SystemStackError,google 發現了類似的事情 [https://github.com/redis/redis-rb/issues/264](https://github.co

read more