Blog Posts
在 MySQL 5.6 使用 GROUP BY 的筆記
- Database
- 14 Jun, 2020
在 MySQL 5.6,如果使用了 GROUP BY A 欄位,但是 SELECT 的 **B 欄位,沒有加上 aggregate function,且群組裡 row 彼此間 B 欄位 **的值並不相同,則會以 nondeterministic 的方式決定要取出 **B 欄位 **的值。 可參考文件:[https://dev.mysql.com/doc/refman/5.6/en
read more
如何使用 batch-loader gem 避免 N+1 Query
- Backend
- 07 Jun, 2020
我一開始看 batch-loader 在 github 上的說明,一直看不懂到底該怎麼用,所以這邊紀錄一下它的用法。 這是一個基本的使用方式,可以從 accounts 從 DB 拿出對應的 users: def user_lazy(account) BatchLoader.for
read more
如何在 debug test case 時印出 DB 的 log
- Backend
- 15 May, 2020
有時候會想利用 test case 去追蹤一些操作 DB 的行為。 像是會放 binding.pry 在要觀察的程式附近,接著只要用 ActiveRecord::Base.logger = ActiveSupport::Logger.new(STDOUT)就可以把操作 DB 的 log 印到 terminal 的畫面了。
read more
如何無痛跑 rake task
- Backend
- 14 May, 2020
用 Rails console 開 sandbox 模式 $ rails c -s先載入環境就可以跑了 > Rails.application.load_tasks > Rake::Task['some_namespace:some_task_name'].invoke由於對 DB 的操作之後都會 rollback,所以可以拿來測試 rake
read more
Vim 的 tab 設定
- Productivity
- 10 May, 2020
expandtab :在 insert mode 時,輸入 tab 時,改為輸入 space softtabstop :在 insert mode 時,按下 tab 鍵會跑出幾個 space tabstop :tab 的寬度為幾個 space shiftwidth :縮排的寬度為幾個 space實驗 softtabstop 跟 tabstop 先關閉 `e
read more
MySQL 你到底是在鎖屁喔
- Database
- 03 May, 2020
剛剛在研究這個簡單的範例: CREATE TABLE `posts` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `content` varchar(255) DEFAULT NULL, `user_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `index_posts_on
read more
在 Rails 5.1 之後,使用 pluck 不保證會 DB query
- Backend
- 01 May, 2020
在 Rails 5.1 之後,因為這個 commit,為 pluck 的行為帶來的一點變動。 因為習慣在 Rails 4.2 開發,養成了一個直覺是使用 pluck 就是會 DB query。但是就在換
read more
其實你可以不用 cherry-pick
- Productivity
- 27 Apr, 2020
如果今天有三支 branch:master、staging、feature/b。本來你在開發中的 feature/b 是從 staging 長出來的分支,但是現在你必須將 feature/b 的內容轉移到 master 上,如圖,你會怎麼做呢? 從
read more
ArgumentError: invalid byte sequence in UTF-8
- Backend
- 09 Dec, 2018
有次遇到這個錯誤:ArgumentError: invalid byte sequence in UTF-8,一追之下發現是遇到類似這段程式碼, "english 中文\xED\xB6\xB0".gsub(/english/, '')會錯的原因是因為 \xED\xB6\xB0 不是合法的 UTF-8 編碼。 要檢查是不是合法的編碼可以用 `valid_encod
read more