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

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

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


解決 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) . ...


Rails 進階小技巧(二)

joins 時使用其它 Model 的 scope 函式

假如我們有 user model 如下: class User < ActiveRecord::Base has_many :posts end 而我們想要找到「最近 N 天有發文的帳號」,可以這樣寫: User.joins(:posts).where('posts.c ...


Rails 進階小技巧(一)

在 one-to-one relation 上使用 update_all

一對一關聯會直接載入 model假如我們有 user model 如下: class User < ActiveRecord::Base has_one :profile has_many :posts end 在 Rails 中 has_one, belongs_to 所 ...


Vue 中使用 debounce 防止前端瘋狂發送請求

其實很簡單,但因為一直以來誤會了某個 es6 的語法,導致鬼打牆卡了一陣子,怒寫一篇文章以避免有人也陷入如此的冏境。 Debounce假設你有一個函式 doQuery,負責送出 API 請求。但因為前端可能每次按下按鈕時都會呼叫這個函式,假如使用者連按的話,會瘋狂送請求到後端,增加 ser ...


Rails 中常搞混的時區問題

Time.now vs. Time.current

在 Rails 的開發中,時區問題是一個很容易踩到雷的地方。尤其是 Server 時區跟本地開發時的時區不同,一旦部署後才會發現沒有處理好時區問題。 網路上的教學常建議大家一律使用 Time.current 取代 Time.now,以避免時區問題。但假如沒有搞懂其中的原理的話,以後若使用其 ...


如何使用 SteamPipe 上架遊戲到 Steam 平台

在開始教學之前,我們會需要一個已加入 Steamworks 的 Steam 帳號、創建好你的遊戲 Apps、並下載最新版的 Steamworks SDK。(本文使用的是 v1.41) SteamPipe 設定點入應用程式後,來到應用程式的主頁,會有很多設定頁。我們先從程式管理的主頁面開始, ...


如何在遊戲中自動安裝字型

有時候開發遊戲時,會選用一些特殊的字體,玩家的系統內不一定有。此時就得想辦法將字體安裝在玩家的電腦內。最簡單的方式就是夾帶字型檔在遊戲資料夾內,在遊戲內打開字型檔,叫使用者安裝。可能會出現類似這樣子的畫面: 這個方法雖然有效,但蠻蠢的XD。缺點也很明顯,在安裝字體時玩家會被彈出遊戲。 自動 ...


修復 npm 的漫漫長路

不知道為什麼,裝了幾個套件後 npm 就掛了。只好開始修復 npm 的漫漫長路…深深感受到 npm 滿滿的坑 XD $ npm module.js:471 throw err; ^ Error: Cannot find module '../lib/utils/u ...