Nic Lin's Blog

喜歡在地上打滾的 Rails Developer

如何讓自己成為失敗的軟體工程師

身為軟體工程師,在職業生涯的發展中,怎麼樣算是失敗呢?你以為資歷十年的工程師,其實是一年的經驗重複了十次。

Read more

如何在 Jenkins 上用 Docker 跑 Rails + Rspec 做 CI

基本上要跑 Rails CI 通常有很多第三方服務搭 integrate 可以做到,但如果你遇到和我的環境類似,也許你可以考慮自己把 Rails 專案用 Docker 包起來後丟到 Jenkins 上去跑。

Read more

如何用 Rack::Attack 阻擋 DDOS / 惡意流量

基本上開發 Rails 有在接 error monitoring(Airbrake、Rollbar)或是最基本有在看 Log 的應該都會知道網站一上線後,就會有些不尋常的流量,像是會有人來猜後台網址、夾帶和一般使用者不一樣的 params

Read more

用 OpenSSL 自簽開發用 HTTPS SSL 憑證

有時開發用或是自己防火牆內要用 HTTPS,就會需要用到自己簽 SSL 的部分

Read more

以 OOP 的角度提升 Ruby code 質量

基本上軟體工程常言道:「高內聚,低耦合」的理想目標,這其中的定義拿捏沒有可以直接量化的標準,通常也依團隊開發習慣為準。

Read more

不停機 migration 避免鎖表的幾種操作

基本上在商業應用中,我們會盡可能的避免停機操作,試想光 CloudFlare 因為 bad deploy 當機幾分鐘至一個小時就會引發一連串的災難,在商場上每分每秒都是錢,為了避免不必要的損失,軟體工程常常會面臨到所謂的 zero downtime 操作。

Read more

為機器加上登入訊息,在 ubuntu 設置登入歡迎詞

自製歡迎訊息,有時候機器多了,為了避免分不清楚 staging / production 會操作錯誤,所以有幾種作法

Read more

Ruby Memoization 性能優化之記憶化

基本上是對「函數」的一種快取(Cache),能夠在執行一次調用後將結果快取下來,避免在第二次調用時再次花費計算成本。

Read more

淺談 SSH agent forwarding 和 proxy command 的安全風險與應用

SSH agent forwarding 可以讓我們透過跳板機連上另一台伺服器時,省去把私鑰複製上 server 或是需要輸入密碼的功夫。

Read more

[Rails] Service / Library / Concern 的差異

專案到中後期長大時通常會開始整理 fat model,但 code 到底要怎麼重構才會比較好呢?

Read more

Ruby conf Taiwan 2019 參與筆記

然而這篇筆記是記錄我在 Ruby Conf TW 2019 聽的 session,內容主要會是蒐集各個講者可能在其他地方講過的相關 video、slider,以及自己的收穫和理解。

Read more

避免過度的 Defensive Programming 防禦性程式設計

避免 Overly Defensive Programming,請用 Fail-fast 來增加找到錯誤的效率。

Read more

Rails 要用 Time.zone.now 還是 Time.now

Time.now 抓的是機器時間,Time.zone.now 抓的是 Rails 下設定的 config.time_zone 時區,而時間的格式應該仰賴在 application layer, 這樣更容易保持一致性

Read more

Rails i18n 小技巧總匯

i18n 這個看起來完全不難的東西,實際上碰到很多需求時會發現,啊好麻煩啊,一下要插 html 一下字太多,但是在這些場景其實可以有更優雅的解法。

Read more

1:1 攪亂器,如何用 Ruby 做可逆推序號

只有最後一個可以靠前兩個推算,所以一開始的任務先找出最大值和任一質數就能反推。

Read more