天有不測風雲,人有旦夕禍福;服務在走,HA 要有,先前有介紹過使用 Redis-Sentinel 打造 Redis 的 HA,當時只完成了伺服器端的設定,這次要介紹如何在應用程式這一端也完成自動 failover,以維持服務的 HA。
[小菜一碟] 取得往上第 n 個階層的目錄路徑
有時候我們會有這樣的需求,我們需要取得相對於當前所在目錄的祖父兄弟目錄(暫且稱呼為叔公目錄)的絕對路徑,如果我們已經知道叔公目錄的絕對路徑永遠不變,當然就直接 Hard Code 取用就好,但是這種狀況是少之又少,大多數情況是整個家族目錄會因需要而搬家,在已知叔公目錄名稱的條件下,要得知叔公目錄的絕對路徑,我們可以這樣做,找到曾祖父目錄之後,把叔公目錄名稱合併在後面就可以了,而我們要怎麼用 C# 找到曾祖父目錄呢?
[食譜好菜] 用 SqlBulkCopy 批次 Insert 大量資料讓你想不到的快
SqlBulkCopy 它不是個新玩意兒,但是我最近才認識它,「你不知道你還有哪些不知道」是一件很恐怖的事情,原來 SqlBulkCopy 在 .NET 2.0 就有了,它的出現讓 Insert 大量資料變得更方便了,我只能感嘆相見恨晚。
[食譜好菜] DateTime 具有文化特性的格式化及時區的轉換
為什麼會想寫這篇呢?因為我看到了這樣的程式碼:
以及
我不曉得,原來有很多的 .NET 程式設計師不知道 .NET Framework 已經提供了很好的日期時間處理方式。
[廚餘回收] 扒網頁扒到「伺服器認可通訊協定違規. Section=...」追追追
之前扒網頁扒到「伺服器認可通訊協定違規. Section=...」的問題,決定追根究柢一下,這個訊息不是只有在用 RestSharp 接收 Response 時會這樣,用 Fiddler 做側錄的時候也會跳出警告訊息來。
[廚餘回收] 扒網頁扒到「伺服器認可通訊協定違規. Section=...」(伺服器認可的耶)
[料理佳餚] FluentValidation + Autofac.Extras.DynamicProxy2 實現參數條件檢查的 AOP 攔截器
之前在[料理佳餚] 使用 Decorator Pattern 分離參數檢查與資料處理這篇文章有提到我想要用 AOP 的方式來把參數的條件檢查分離出來,當時還沒有什麼好的做法,但是在遇到 FluentValidation 之後有了新的想法,只要搭配 Autofac 及 Autofac.Extras.DynamicProxy2 就可以實現參數條件檢查的 AOP 攔截器。
[料理佳餚] 讓 FluentValidation 把參數的檢查條件口語化
先前在[料理佳餚] 使用 Decorator Pattern 分離參數檢查與資料處理這篇文章裡分享過如何分離參數的條件檢查及資料處理的邏輯,讓程式碼的職責可以更聚焦,不過那篇文章裡面參數檢查條件的範例部分是單純用 if...else... 兜出來的,看起來有點「阿雜」。
有一個 Package 叫 FluentValidation,它可以將單純用 if...else... 兜出來的參數檢查條件,用口語化的方式來表達,讓程式碼可以更貼進人的閱讀習慣。
[食譜好菜] 能不能講一下什麼是泛型(Generics)?
被問到「你能不能講一下什麼是 C# 中的泛型?」,這個時候我突然覺得泛型離我好遠、好遠…,明明平常用很多,常常見面啊!為什麼現在講不出來!? Orz…
原來我平常只懂得用,其實對於它的定義、限制不是很了解,稱得上是不學無術,今天被問到這個問題算是有一個機會可以讓我了解「泛型」這個好朋友,特此記錄,以示提醒。
[食譜好菜] 常在面試出現的題目:SQL Injection
「你如何預防 SQL Injection?」這個問題已經成為了一個顯學,現在我們寫程式如果沒有把解決 SQL Injection 的方式變成習慣,我們就絕對是個不及格的程式設計師,一個領域如果夠成熟,那這個領域會累積一定厚度的必學項目,像 SQL Injection 的問題就是累積來的,面試也常常會問。