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

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

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


therubyracer 和 libv8 的安裝問題

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


升級 Debian 的 sqlite 到最新版

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


Rails-進階小技巧(三)

pluck 純數字

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


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

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


解決 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 :postsend 而我們想要找到「最近 N 天有發文的帳號」,可以這樣寫: User.joins(:posts).where('posts.cr ...


Rails 進階小技巧(一)

在 one-to-one relation 上使用 update_all

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


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

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