不想變得普通,卻又害怕不同

天天當文書處理員?讓 API 文件自動生成吧!

利用 RSpec 測試自動生成 API 文件

在我們日常開發的過程中,難免有時候會需要去調整 API。在多次調整之後,往往當初寫的文件已經跟不上變化,而漸漸失去了參考價值。甚至有可能因此誤導前端串接人員,導致 Bug 的產生。或是當程式邏輯很複雜的時候,一個不小心改動到了 API 回傳值而沒有注意到。剛好這個功能當下並沒有人有用到的話 ...


三行 css 簡單地讓單行置中,多行置左

有一天 PM 突然表示,我們遊戲介面中平常文字都是置中的,畫面看起來很協調。但是如果文字太長換行了,這時候多行都一起置中,有些行長,有些行短,看起來就會參差不齊。因此想要做一個效果是:「超過一行的話,文字就要改成置左」。效果大概如下圖:那時候心裡一驚,不太妙,感覺會很複雜,可能得要用 ja ...


MySQL 編碼挑選與差異比較

utf8_bin vs. utf8_unicode_ci vs. utf8_general_ci

先說結論若只存英文、數字…等鍵盤上會出現的字的話,可以用 utf8_general_ci(但不推廌)若會存中文、德文…等非英文的字、或存 Emoji 的話,建議用 utf8mb4_unicode_ciutf8mb4 vs. utf8在 MySQL 5.5.3 以後,一般來說會建議用 utf ...


不使用 lock 又要避免 race condition,可能嗎?

在 Rails 的框架下,官方文件對於如何防止 race condition 著墨並不多。可能是因為 race condition 跟應用層邏輯比較有關,Rails 只是提供一些對 DB 或對 cache 方便操作的方式,這些方式是否會形成 race condition 是自己要去注意、並 ...


therubyracer 和 libv8 的安裝問題

本來以為是 library 檔問題,試了參照網路上的教學安裝 v8 但沒有用brew install v8 # or brew install v8-315後來錯誤嘗試發現是很蠢的問題在此記下來以免忘記移除乾淨所有版本首先要先把所有裝好的 therubyracer, libv8 都移除g ...


升級 Debian 的 sqlite 到最新版

在測試 activerecord-importon-duplicate-key-update 時,為了方便而選用了 sqlite。沒想到卻遇到版本太舊的問題。MySQL, PostgreSQL (9.5+), and SQLite (3.24.0+) support on dupli ...


Rails-進階小技巧(三)

pluck 純數字

有時候我們會需要大量創立關聯。例如我們想要支援一次發送大量的好友請求時,我們需要建立 user_id 對應到 friend_id 的資料,最後 import 到資料庫去。為了方便起見,我們先定義 import 的函式class User < ApplicationRecord d ...


【Rails Bug 分析】model 儲存時會額外下 query 重新載入關聯

BUG 觸發條件第一個觸發該 BUG 的情境是,載入過 association 後又改變其 foreign_key。post = Post.take post.user.do_something # 載入 association post.user_id = 123 # forei ...


解決 mac 與 windows 之間 CSV 亂碼問題

之前常常有這個問題,在 windows 上能正常顯示的 csv 檔,到 mac 上看就會變亂碼。在 mac 上能正常顯示的 csv 檔,到 windows 上看就會變亂碼。原本以為是作業系統預設編碼問題,無解,因而不管採用 Big 5 或 Utf-8 編碼,都會有一方無法正常顯示。後來發現 ...


在 irb 貼上多行腳本的方法

有時候程式碼太長,為了簡潔我們會將程式斷行。emails = User.where('last_login_at >= ?', 7.days.ago) .where.not(confirmed_at: nil) .w ...