The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

利用 SynchronizationContext 讓 ASP.NET 背景執行緒取用 HttpContext 資訊

我們在寫 ASP.NET (.NET Framework) 的時候,可能會需要利用非同步作業在背景執行一些工作,同時可能也需要偶爾取用 HttpContext 相關資訊。事實上當我們在 ASP.NET (.NET Framework) 使用 await 等待一個 Task 時,會自動紀錄當下的 SynchronizationContext,並在 Task 完成工作後,取得原始 執行緒 (Thread) 中的資訊。但是如果我們也想在 Task 中取用原本執行緒的內容 (例如 HttpContext 資訊),我們就需要學會如何自行利用 SynchronizationContext 來取用原始執行緒中的內容。今天這篇文章,我將透過一段簡易的程式碼與一個實際應用情境,說明 SynchronizationContext 的運作方式,讓你知道如何正確的使用它。

... 繼續閱讀 ...

ASP.NET 與 ASP․NET Core 偵測用戶端已斷線並自動取消非同步方法執行

我今天在「C# 開發實戰:非同步程式開發技巧」課程中有學員提問,如何偵測用戶端已斷線並自動取消非同步方法執行。事實上 ASP.NET (.NET Framework) 與 ASP.NET Core 的實作方式相當類似,今天這篇文章我就來分享 ASP.NET Core 的實作方式,幫助你有效偵測用戶端已斷線,並自動取消非同步方法執行。

... 繼續閱讀 ...

如何讓 Spring Boot 與 Maven 專案成功產製 site 文件站台

Apache Maven 有個 site 生命週期,定義出你要建立專案文件站台所需的各種階段,並讓你透過瀏覽器查看 Java 專案的完整資訊,相當方便。不過我透過 Spring Initializr 建立的專案,預設卻無法產生網站(site),錯誤訊息也有點奇怪,逼的我還要去研究 Maven 才終於理解錯誤的原因。這篇文章我就來交代整個過程,以及解決方案。

... 繼續閱讀 ...

如何設定 Visual Studio Code 開發 Spring Boot 的時候可以讀取 .env 檔案

使用 Visual Studio Code 開發 Spring Boot 的時候,我們在 application.yml 檔案中會放入一些環境變數,每次啟動應用程式的時候都要手動設定環境變數才能正常啟動,使用上比較不方便。本篇文章我將說明如何設定 Visual Studio Code 在啟動 Spring Boot 應用程式時,可以自動載入 .env 檔案,讓應用程式啟動時可以自動載入環境變數,增加開發的方便性。

... 繼續閱讀 ...

使用 luit 完美解決 Windows Subsystem for Linux 顯示 Big5 字集的問題

對於 WSL (Windows Subsystem for Linux) 一直無法處理 Big5 字元這件事,對我來說就像在一片白牆上的一個污點,明知這面白牆很漂亮,但就是無法不注意牆上的那個污點,一直覺得不完美,直到昨天都還是解決不了。睡一覺之後,想到了一個新的關鍵字,找到了一個 luit 工具,這就是我昨天一直想要找到的工具!

... 繼續閱讀 ...

分享幾個在 Windows 與 Linux 常見的編碼問題與解決方案

我每隔幾年我就會遇到一次 non-Unicode 的編碼問題,真的不常見,但這些年來也處理過無數次了,每次都被搞的很煩。最近在 Linux 環境又遇到棘手的編碼問題,檔案內容是從 ISO-8859-1 (Latin-1) 字集的 Sybase ASE 資料庫轉出,所以編碼是 ISO-8859-1 字集,但內容其實是 BIG5 字集,而我用 Windows Terminal + WSL 2 又只支援顯示 Unicode 字集的文字,所以文字無法正常在螢幕上顯示或複製。幾經嘗試後,我決定把這幾年累積的心得都寫下來,以免日後又要再花時間研究一次。

... 繼續閱讀 ...

使用 Visual Studio Code 開發 Java 應用程式的環境設定指南

最近公司越來越多 Java 專案,這陣子使用 Visual Studio Code 來開發 Java 應用程式小有心得。這篇文章我打算來介紹如何快速建立 Java 的開發環境,並介紹如何在 Visual Studio Code 開發工具下進行設定,讓你順利的開發出第一個 Spring Boot 應用程式,從開新專案到封裝部署,真的就簡單幾個步驟而已,開發體驗還算不錯。

... 繼續閱讀 ...