微軟有一個 System.Net.Mail.SmtpClient 類別,被建議說不要在新開發的應用程式中使用,並且給了非常明確的指示「請改用 MailKit
」,MailKit 是建構在 MimeKit 上面的一個跨平台郵件發送套件,既然微軟爸爸都這麼說了,我們直接上手。
[小菜一碟] 使用 C# 將民國日期的字串轉換成西元日期
四年一次會出現的不是只有總統大選,還有 2 月 29 日的問題,程式如果寫得不夠久大概也不會遇到,像今年就有可能會收到像是「113/02/29
」、「113年2月29日
」這樣的日期字串,在 C# 中如果直接先轉成西元日期的 113/02/29,再加上 1911 年,像這樣:
DateTime.ParseExact("113/02/29", "yyy/MM/dd", null).AddYears(1911);
那我們的程式應該已經爆了,因為西元 113 年沒有 2 月 29 日,關於閏年的問題,在 C# 我們有更優雅的做法。
[料理佳餚] 用 Azure Cognitive Services(認知服務)的 Custom Text Classification(自訂文字分類)來辨識色情廣告
客戶的網站有提供部落格的功能,讓會員可以在上面寫一些文章,經營得算是頗有流量,有流量就容易吸引一些蹭流量的人,色情廣告就是其中之一,目前客戶在色情廣告上的處理仍然是採用人工封鎖的方式,成本高又反應慢,所以打算引入 Azure Cognitive Services(認知服務)的 Custom Text Classification(自訂文字分類),來讓阻擋色情廣告這件事情可以更有效率一些。
[小菜一碟] 善用 SQL Server 唯一條件約束(UNIQUE Constraints)來避免因併發產生重複的唯一值
- 2156
- 0
- SQL Server
- 2022-09-22
講到資料庫的唯一值,第一個我們會想到就是主索引鍵(Primary Key)
,那同一個資料表內除了主索引鍵之外會不會有其他的唯一值?我之前遇過的一個需求就有,它是一個部落格的功能,讀者可以收藏文章,同一篇文章不能重複收藏,而讀者可以對已收藏的文章進行任意的排序,所以「讀者 ID + 文章 ID
」就成了資料表的主索引鍵,而「讀者 ID + 序號
」就是資料表中的另一組唯一值。
[廚餘回收] 解決 Gmail 不支援應用程式或裝置透過簡易郵件傳輸通訊協定(SMTP)傳送電子郵件
有一天 Jenkins 不再寄發建置結果通知信,追查原因是因為 Google 更新了一項安全性政策:
為保護您的帳戶安全,自 2022 年 5 月 30 日起,如果第三方應用程式或裝置只要求您以使用者名稱和密碼登入 Google 帳戶,Google 將不再支援這些應用程式或裝置。
不過這也不是沒有退路,我們可以改使用應用程式密碼登入帳戶。
[廚餘回收] 在 ASP.NET Core 中誤用 async void 竟引發了 502(Bad Gateway)
- 1114
- 0
- ASP.NET Core
這個是我最近處理的一個問題,使用者回報網站某個功能壞了,而且發現最近時不時網站會顯示 502(Bad Gateway)的畫面,雖然多重新整理幾次它就好了,但是這並不正常,我隨即捲起袖子開始一系列的追查動作,誓言一定要將兇手緝捕歸案。
[廚餘回收] Cloudflare 不時吐 502(Bad Gateway),追查發現是 Nginx 發生了「99: Cannot assign requested address」的錯誤。
前幾天,公司的網站在尖鋒時刻,不時會從 Cloudflare 吐出 502(Bad Gateway),查看 Web 伺服器、DB 伺服器的 CPU、記憶體全都沒有過載的情況,把調查對象轉往 Nginx
,從錯誤日誌當中看到了下面這個錯誤訊息:
99: Cannot assign requested address
[料理佳餚] Castle.DynamicProxy 非同步方法的攔截器
有使用 Castle DynamicProxy(Autofac.Extras.DynamicProxy 也是相依於它)實作 AOP 的朋友應該對 IInterceptor
這個介面不陌生,實作這個介面就能得到一個攔截方法的攔截器,但是目前 IInterceptor 只提供同步的版本,如果攔截的對象是非同步方法,事情就會變得麻煩一些,我們來看看該怎麼做?
[料理佳餚] 用 SemaphoreSlim 來做 async/await 的鎖定
在 C# 應用程式內部要做鎖定,第一時間我們一定是先想到 lock 陳述式,但是 lock 陳述式無法在 async/await 的場景下使用,程式編譯不會通過,我們會得到一個錯誤訊息 - 無法在 lock 陳述式的主體中等候
。
[小菜一碟] ASP.NET Core 解決 SEO 要求網址全小寫及無斜線結尾的問題
- 1932
- 0
- ASP.NET Core
- 2020-05-22
之前有寫過一篇在 IIS 用 URL Rewrite 解決 SEO 要求網址全小寫及有無斜線結尾的問題,到了 ASP.NET Core 雖然沒有 URL Rewrite 擴充套件可以安裝,但是有一個 URL Rewriting Middleware 可以來幫助我們做到一樣的事情。
- 1
- 2