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

The Will Will Web

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

如何避免 Pull request 的 Build Validation 同時觸發 Release 部署網站

我們過往設定 CI/CD 的時候,為了要避免 Pull request 的時候也不小心觸發 Release 部署網站,我們都會建立另外一組 Build pipeline 專門給 Pull request 時使用 ( 特定 Branch 的 Build Validation )。不過,這個額外的 Build pipeline 跟原本分支的 Build pipeline 完全一樣,額外維護這份 Pipelines 顯得非常多餘。我今天終於研究出正確的設定方式,所以這篇文章將來說明正確的設定方式。

... 繼續閱讀 ...

如何使用 Git Credential Manager 快速清除 Azure Repos 使用者認證快取

因為我過往建立了數十個不知道何時建立的 PAT (Personal Access Token) 金鑰,為了避免有 PAT 不小心外洩,索性就把我個人在 Azure DevOps Services 上的 PAT 全部清除,然後所有自動化作業都壞了,還好很容易修理。除此之外,我也修改了個人密碼,結果導致本機要透過 git clone 下載 Azure Repos 上面的原始碼也都失效。但重點是,雖然認證失敗,卻不會跳出讓我重新登入,原因是「使用者認證」被快取了,這篇文章我要來說說清除「快取」的方法!

... 繼續閱讀 ...

如何在 Monorepo 透過 Git 的 Sparse Checkout 取得部分 Repo 內容

我們現在有越來越多的專案都是前後端分離的架構,所以在一個 Git Repo 裡面同時放前後端程式碼是很常見的狀況。不過,問題來了,如果前後端分離的很乾淨,若是前端人員不想要看到「後端」的原始碼,那 Git 有辦法做到「部分取出」的功能嗎?是的,還真的有!這篇文章我就來說說這個好用的功能。

... 繼續閱讀 ...

如何做好一份優質的技術分享會簡報 (使用 PowerPoint 製作)

我們公司經常在內部舉辦技術分享會,讓同仁之間有個技術交流的空間,把日常工作學習到的知識進行一些整理,可以幫助其他人更快的學會一門技術,或是掌握一個不容易輕鬆掌握的觀念。每位同仁所製作的簡報,我幾乎都會從頭到尾看過,而且都會對簡報內容進行回饋或修改,我發現許多人在做簡報的時候經常會忽略掉一些細節,導致簡報品質低落。這篇文章我打算好好的來整理一下製作技術簡報該注意的兩三事。

... 繼續閱讀 ...

使用 GnuPG 確保傳輸重要檔案或文件的過程能確保機密性與完整性

當我們要進行機密文件傳輸時,可能會面臨許多不同的傳輸方式,但是過程中必須確保資訊安全,因此你就會需要考量到許多因素。這篇文章我打算分享如何利用 GPG 工具對檔案進行簽章加密,檔案無論透過任何方式傳送給對方,都只有明確指定的對象可以開啟檔案,藉此達到資訊安全的中的機密性(Confidentiality)與完整性(Integrity)要求。

... 繼續閱讀 ...

開發與部署網站時需注意不要使用到 ERR_UNSAFE_PORT 不安全的埠號

我昨天在授課的時候,突然遇到 Chrome 瀏覽器無法瀏覽網站的情況(ERR_UNSAFE_PORT),我踩到一個不知道算不算罕見的地雷,在深入瞭解之後,覺得有必要寫成文章提醒大家,因為你還真的很有可能會在不久的將來遇到這個問題,看完文章才不會讓你日後鬼打牆太久,讓我們繼續看下去。

... 繼續閱讀 ...

EF Core 已經不會在 SaveChanges() 的時候對實體模型進行額外驗證

以前在使用 EF6 的時候,我就一直覺得有個困擾,那就是我們在 ASP.NET MVC 執行 Model Binding 的時候,除了 MVC 會幫你做輸入驗證模型驗證之外,當你在執行 db.SaveChanges(); 的時候,預設 Entity Framework 還會再讀取一次實體類別(Entity Class)上面定義的 DataAnnotations 定義,例如 [Required][StringLength] 這種,但這真的有點多此一舉。想不到從 EF Core 1.0 開始,這個特性就被移除了,但我 EF Core 6.0 才發現這件事,可見實務上真的很少用到! 😅

... 繼續閱讀 ...

認識 Entity Framework Core 載入關聯資料的三種方法

Entity Framework Core 讓你可以透過「導覽屬性」快速的取得「關聯」資料,不過方便的背後可能會犧牲一些效能,早期在 Entity Framework 的年代,預設啟用「延遲載入」機制,這個預設值可能會導致許多意外的效能問題,以致於 "Entity Framework 很慢" 的臭名一直延續至今,即便 Entity Framework Core 已經沒有這個問題,許多初學者還是不太清楚如何正確的使用 Entity Framework Core 來存取關聯資料。這篇文章我就來說說 Entity Framework Core 提供的三種關聯資料載入策略,以及如何判斷何時該用哪種策略載入資料。

... 繼續閱讀 ...

如何在專案中透過 .NET CLI 管理專案的本地工具 (.NET Local Tool)

我們在使用 .NET CLI 開發專案的時候,經常會需要安裝一些 .NET 全域工具 (.NET Global Tool),但是安裝全域工具有個小缺點,那就是這些工具會需要被註冊到 PATH 環境變數中,而且經常會有與 .NET SDK 版本不一致的問題。我在授課的時候,學員就遇過好幾次 dotnet-ef 套件跟 .NET SDK 版本不一致,導致出現靈異事件的狀況。今天這篇文章,我就來跟大家說一下如何將這些 .NET 全域工具 改裝成 .NET 本地工具

... 繼續閱讀 ...

如何在現有 ASP.NET Core 網站加入 Azure AD 的 OpenId Connect 登入

我們公司採用 Microsoft 365 辦公協作環境,這也意味著背後一定使用了 Azure AD 目錄服務,因此我們可以直接拿 Azure AD 作為公司的 OAuth 2.0 + OpenId Connect (OIDC) 認證與授權平台,因此開發公司內部應用程式就變的非常容易。這篇文章我將說明要將一個 ASP.NET Core 網站加入 Azure AD 的身份驗證流程,以及使用時的注意事項。

... 繼續閱讀 ...

如何將一個 ASP.NET Core 網站快速加入 LINE Login 功能 (OpenID Connect)

前幾天原本想用 ASP.NET Core 寫一個最簡單的 LINE Login 範例程式出來,結果想不到這麼簡單的功能,卡關了兩天才找出解決之道。如果單純的透過 OAuth 2.0 授權流程來取得 Access Token 與 ID Token 其實還蠻簡單的。但是若希望可以做到 OpenID Connect 流程中自動透過 JWK (RFC 7517: JSON Web Key) 來驗證 Token 的有效性,這時可以直接使用 ASP.NET Core 內建的 Microsoft.AspNetCore.Authentication.OpenIdConnect 套件來完成。不過當方便的套件遇到特殊的實作時,那麼就是一場災難啦。這篇文章我打算來說說這次的踩雷之旅!

... 繼續閱讀 ...

如何在 ASP.NET Core 漂亮的建立 Query String 查詢字串

我們在建立含有 Query String 的網址時,若是用字串串接的方式來實作,程式碼會相對的比較醜一點。從 ASP.NET Core 1.0 開始,就有好幾個專門用來建立 Query String 的類別,這些類別不但可以提升程式碼的可讀性,所有的 Query String 也都會進行必要的 URL Encode 動作,讓你的網址更符合國際標準,建議可以多加利用。

... 繼續閱讀 ...