微軟有一個 System.Net.Mail.SmtpClient 類別,被建議說不要在新開發的應用程式中使用,並且給了非常明確的指示「請改用 MailKit
」,MailKit 是建構在 MimeKit 上面的一個跨平台郵件發送套件,既然微軟爸爸都這麼說了,我們直接上手。
[廚餘回收] 解決 Gmail 不支援應用程式或裝置透過簡易郵件傳輸通訊協定(SMTP)傳送電子郵件
有一天 Jenkins 不再寄發建置結果通知信,追查原因是因為 Google 更新了一項安全性政策:
為保護您的帳戶安全,自 2022 年 5 月 30 日起,如果第三方應用程式或裝置只要求您以使用者名稱和密碼登入 Google 帳戶,Google 將不再支援這些應用程式或裝置。
不過這也不是沒有退路,我們可以改使用應用程式密碼登入帳戶。
[料理佳餚] 用 Azure Files 在 Windows 建立雲端的共享資料夾
上一篇文章透過一個 CRUD 的範例,跟大家介紹 Azure Blob Storage 的基本使用方式,這篇文章要來跟大家分享 Azure Storage 的另一個服務 - Azure Files,它支援 SMB 協定,可以讓我們透過「網路磁碟機」的方式,直接連線到 Azure Files 的儲存空間,存取檔案就像在本機一樣,相當方便。
[小菜一碟] 利用 SQL Server 的 CTE(Common Table Expression)遞迴取得族譜中某人的所有子孫
- 3133
- 0
- SQL Server
樹狀的資料結構在日常的程式設計當中挺常見的,舉凡像是留言板
、人事組織
、族譜
、…等,都用得上,但當我們把樹狀結構的資料存進 SQL Server 之後想要撈出來,除了用跑迴圈之外大概就是用遞迴了,迴圈的寫法就不多介紹,本篇文章要來跟大家分享遞迴的寫法。
[桌邊服務] 把手機版的網頁跟桌機版的網頁拆成兩個網域,對於整體網站的流量會不會有影響?
這篇文章跟大家分享一個難得的數字比較,就是說我們把手機版的網頁跟桌機版的網頁,拆成兩個網域,這樣子做,對於整體網站的流量會不會有影響? 以下透過我一個客戶的數據,說一說我個人的推論跟猜想。
[創意料理] 用 IL Code 來做一個簡易版本的 FastMember
最近 IL Code 寫得比較多,主要是在練習,目的是希望自己將來遇到效能議題的時候,還有招數可以施展,剛開始練習寫 IL Code 的時候,是先從存取一個 instance 的公開或私有的屬性及欄位開始,這讓我想到一個套件 - FastMember,作者已經至少有 2 年沒有更新了,既然會一點 IL Code,那我能不能弄一套屬於自己的 Chef.FastMember
呢?
[料理佳餚] 在執行時期(Runtime)憑空捏造一個型別(Type)
在先前的文章有提到過「在執行時期憑空捏造一個組件」這件事,我是用在自己打造的 Library 之中,而做這件事的最主要目的是在執行時期產生一個類別,用來產生使用端類別的替身,或是用來做一些特殊的識別,我們就來看一下,要在執行時期產生一個類別,需要做哪些事情?
[小菜一碟] 如何查看 C# 編譯出來的 IL Code?
上一篇文章有提到學著讀或寫 IL Code,對我們在程式執行狀況的掌握,有正向的提昇,那麼其中一種學習方式,就是透過我們平常撰寫的程式碼,看看它編譯出來的 IL Code 長什麼樣子,藉此來理解 IL Code,本篇文章就來介紹兩種查看 C# 編譯出來的 IL Code 的方式。
[料理佳餚] 用 C# 的 System.Reflection.Emit 撰寫 IL Code 將值指派給私有欄位(Private Field)
程式寫多了,我們多多少少會開發一些 Library 來輔助我們讓程式寫起來更方便一些,這些 Library 通常都獨立於專案之外,除了使用上的彈性之外,還有一個我們會關注的大概就是效能了,既然提到了效能,我們腦海中閃過的解決方案應該會有「撰寫 IL Code
」這個選項,IL Code 雖然可讀性極差,但是如果我們有能力可以讀得懂,甚至使用 IL Code 撰寫程式的話,對我們在程式執行狀況的掌握,絕對有正向的提昇。
我就用 IL Code 撰寫一段將值指派給私有欄位的程式來當個起頭,之後如果還有遇到 IL Code 可以發揮的地方,我也會儘量整理成文章分享給大家。
[小菜一碟] 為我們在 ASP.NET Core 的靜態檔案加上 Cache-Control
- 849
- 0
- ASP.NET Core
當我們建立一個 ASP.NET Core Web 應用程式專案的時候,預設在 Startup.cs
中就會呼叫 UseStaticFiles()
使用 StaticFileMiddleware,讓專案中的靜態檔案可以透過 HTTP 被存取到,現在我想要將這些靜態檔案 Cache 在 CDN 上,我需要在 Response Headers 裡面加上 Cache-Control: public, max-age=n
,我們來看要怎麼做?