推薦文章

練習題 - 設計模式 - 責任鍊模式 (職責鍊模式) Chain of Responsibility Pattern

工作專案裡並不會去刻意地去使用設計模式,不過在很多時候為了想要有更好的實作,又或者是覺得當下的程式一定會有更好的解法,就會去找目前情境所適合使用的設計模式來改寫。

有的時後會看到誤用了不適合的設計模式所實作的程式,明明應該是用行為類的設計模式來做,卻用了結構類的設計模式來做,雖然最後的執行結果是有符合預期,但怎麼看就怎麼怪,所以設計模式還是要好好地認識認識,於是這次就來練習練習責任鍊模式。

...繼續閱讀 »
on mrkt

保護你的機敏性資料,通過 C# VaultSharp 訪問 Hashicorp Vault - 快速入門

開發者不應該把機敏性資料,用明碼的方式存放在電腦,HashiCorp Vault 是一套基於身份的私鑰和加密管理系統,Hashicorp Vault 是一個安全管理工具,專門用於管理機敏性資料,例如:密碼、API 密鑰和其他機密訊息,下圖出自 Introduction | Vault | HashiCorp Developer

原本我本來想要自幹一套 Secret Manager / Config Manage,因為有 Vault 我省去了自幹的時間,這裡,我將嘗試學習使用 C# VaultSharp 訪問 Hashicorp Vault

...繼續閱讀 »
on yc421206

通過 ODBC 訪問 PostgreSQL

甚麼是 ODBC,維基百科這樣說

"ODBC(Open Database Connectivity,開放資料庫互連)提供了一種標準的 API( 應用程式編程介面)方法來訪問資料庫管理系統(DBMS)。ODBC 的運用形態通常是由應用程式經過一個稱之為 ODBC 管理器的工具,建立一個 DSN,指明需要呼叫的 ODBC 驅動程式,從而訪問對應的資料庫。"

簡單來說,可以透過 ODBC 來簡化連線字串的管理,最近工作上,需要用到它,趕緊趁無風無雨的颱風天,重新學習一下。

...繼續閱讀 »
on yc421206

使用範本檔管理組態並轉成 env 環境變數

.NET Core 原生的組態設定是使用 appsettings.json 來讀取組態設定,要先產生出各個環境的組態設定 appsettings.Development.json、appsettings.Staging.json、appsettings.Production.json,再透過環境變數+Build,取代掉原本的值,要佈署的環境越多檔案就越多,每次的改動設定都要很小心,生怕一個不注意就弄壞了,我想要讓組態管理的行為變簡單一些…

...繼續閱讀 »
on yc421206

當 AutoFixtue 的 AutoData 與 Microsoft.Bcl.TimeProvider 碰在一起時會如何?

前面分享的兩篇文章,分別介紹了 Microsoft.Bcl.TimeProvider 和 AutoFixture 的 AutoData

另外在寫測試時,可以使用 FakeTimeProvider 去做抽換,就可以設定時區、時間來完成測試情境的執行。

那麼是不是也可以用 AutoData 的特性,讓我們在寫測試的時候可以省下建立 FakeTimeProvider 的步驟呢?當然可以,不過需要先瞭解該怎麼做、可以怎麼做以及應該如何做。

...繼續閱讀 »
on mrkt

使用 AutoFixture.AutoData 來改寫以前的的測試程式碼

這是一篇借花獻佛、拾人牙慧的文章,之前有寫過這麼一篇文章「單元測試使用 AutoFixture.AutoNSubstitute

當時是使用了 AutoFixture.AutoNSubsititute 來減少測試類別裡相依類別的 Stub  建立步驟,用了很奇怪的方式來解決我當時的煩惱。

直到我進入到另一個團隊後,才知道可以藉由 AutoFixture.AutoData 做到更為簡單與彈性的解決方式,這篇就來簡單介紹怎麼做。

...繼續閱讀 »
on mrkt

[日本百大名城攻略] 2024-06-07 16.箕輪城

箕輪城位在東京西北邊,高崎市箕郷町中的一座平山城
目前僅有2016年修復的木造角馬出西虎口門外,並沒有留下其他任何的建築物
而城下町也保留了過去的氛圍,只可惜店家數量略少,整體環境幽靜。避開雨季前往即可

從本篇文章開始,百大名城攻略也加入了影片以及字幕解說,不想看文章想看影片的人,可以從這裡看看攻略箕輪城的影片
日本百大名城No.16,適合散步踏青的箕輪城,一個人的旅行

...繼續閱讀 »
on maduka

使用 Microsoft.Bcl.TimeProvider 取代 DateTime 吧

我想很多人看到標題後都會直接想
「程式裡直接用 DateTime  難道錯了嗎?」
「DateTime  用得好好的,為什麼要改用 Microsoft.Bcl.TimeProvider ?」
「我又不必寫測試,我就是要用 DateTime!」

我也管不著各位想怎麼用、想怎麼寫程式,只是看到很多有關於交易處理的程式都是跟時間判斷有關,而且有著種種原因而沒有寫測試,就讓人覺得那些產品妥當嗎?
而且一遇到 DateTime 的處理,就會卡在不知道如何寫測試。

所以就來寫這一篇簡單介紹 Microsoft.Bcl.TimeProvider

...繼續閱讀 »
on mrkt

Reqnroll for Rider 初體驗

某一天我的同事提醒我說新版的 Rider,SpecFlow for Rider 上不能使用了,於是我暫緩更新了一段時間,現在已經有 Reqnroll 方案。這裡有 Reqnroll 誕生原因,From SpecFlow to Reqnroll: Why and How • Reqnroll,總結內容就是 SpecFlow 已經很長一段時間沒有更新,所以作者決定 Fork SoecFlow 專案,名為 Reqnroll,現在我要來體驗 Reqnroll 跟過往的 SpecFlow 有沒有甚麼不一樣

 

...繼續閱讀 »
on yc421206

[日本百大名城攻略] 2024-04-05 86.大野城

大野城位在福岡縣太宰府市,雖然位在許多遊客前往的太宰府旁,但是由於大野城本身是日本古代山城(也有稱之為朝鮮式山城),所以前往的人並不多。雖然也有設置了森林遊樂園區,但是由於地處不便,所以也很難成為一般遊客前往的景點

一般前往的方式不一定會開車,所以最好先作足準備,因為古代山城走起來真的頗累。前往的時間避開雨季與下雪的冬季即可

...繼續閱讀 »
on maduka

[小菜一碟] 如果開發用的資料庫連線字串不能放 appsettings.Development.json,那要放哪?

資安 ISSUE」,此語一出,誰與爭鋒?約莫 15 年前,跟前輩在閒聊,說客戶那邊丟了一句「資安 ISSUE」,所以這個元件不准用、那個 SDK 不准裝,結果東西做好了,案子結不了案。時間回到今天,資安那邊丟了一個訊息:

appsettings.Development.json 裡面的 Server=(localdb)\MSSQLLocalDB;Database=dev;Integrated Security=true 這個連線字串有資安疑慮,請修正。

...繼續閱讀 »
on supershowwei

[小菜一碟] Entity Framework Core 如何在單一查詢中跨資料庫查詢資料?

如果資料庫都隸屬於同一台伺服器,資料庫之間要 JOIN 彼此的資料表是相對容易的,在有權限的前提下,只要在資料表的前面加上「[資料庫名稱].[結構描述]」,就能存取得到其他資料庫的資料表,就像這樣:[DB].[dbo].[Table]

但是在 Entity Framework Core 中,似乎沒有那麼容易,通常一個資料庫會建成一個 DbContext,當我們直接把隸屬於不同 DbContext 的 DbSet 拿來做 Join,我們得到以下的錯誤訊息:

Cannot use multiple context instances within a single query execution. Ensure the query uses a single context instance.

...繼續閱讀 »
on supershowwei

Azure OpenAI Service 18 - 深入探索新版 Azure OpenAI Studio:輕鬆部署多模態模型與高效運用 GPT-4o 和 GPT-4o Mini 以及實作程式串接

OpenAI 陸續推出了 GPT4oGPT4o-mimi 這兩個新的多模態模型,所謂多模態模型指的是這個模型可以同時處理文字和圖片的需求,過去在 Azure 上面會需要使用 GPT-4 Turbo with Vision 這個模型,透過結合 Azure AI Vision 來辨識圖片,現在新的多模態模型就不需要再透過額外的 Azure AI Vision 就可以支援了,後面就來介紹透過新介面的 Azure OpenAI Studio 來部署和實做程式串接。

...繼續閱讀 »
on anyun

進修課程