推薦文章

透過 macOS 上的 Xcode 建立開發與發佈憑證

開發 Apple 的 iOS 應用程式,若在 Mac 裝置安裝好 Xcode 時,就可以透過 Xcode 直接建立該 Mac 裝置的機器憑證,送至 Apple 的 Developers 網站當中以利後續使用 "iOS 裝置" 開發或測試應用程式。

甚至,後續要將 iOS 應用程式發佈至 AppStore Connect 當中,無論是要先進行 TestFlight 測試;或是對自己的 iOS 應用很有信心要直接送審,也都是需要先有 Mac 裝置製作的機器憑證,作為 iOS 應用程式發佈憑證才行。 

...繼續閱讀 »
on jamestsai

透過 Azure AI Foundry 來部署 LLM 模型和實做程式串接

  • 34

微軟將 Azure AI Studio 以及 Azure Open AI 和其他 Azure AI 的服務整合之後推出了 Azure AI Foundry 這一個服務平台,讓我們在使用 Azure AI 服務的時候有同一個入口來管理和使用 Azure AI 的服務,而我們也可以在上面部署各式各樣的 LLM 模型,包含 Azure OpanAI 都可以在這邊部署並提供一個遊樂場讓我們可以免寫程式來測試部署好的 LLM 模型,後面就來介紹如何部署以及測試,最後也實做程式要來串接部署好的模型。

...繼續閱讀 »
on anyun

AwesomeAssertions / FluentAssertions 快速排除更新欄位

在開發系統時,如果測試情境的輸出會有許多資料類別並且要驗證很多欄位時,會利用 object graph 比對整個結果是否和預期一致。

現在我的專案裡有個 CustomerRootData 類別,裡頭屬性為十幾個不同型別的子集合,每個類別都有 UpdateTime、UpdateUser 這兩個欄位,但這兩個欄位是在程式執行當下才寫進去的,不屬於測試驗證的重點,在寫測試的時候常常陷入重複設定的地獄。

於是在 AwesomeAssertions / AwesomeAssertions Object Graphs 的架構下,想辦法在做比對時去做到比較方便省事的設定方法,讓我輕鬆地去排除指定的欄位。

在找尋資料、解決方法的同時,也讓我得知不一樣的處理方式,將這些處理方式用文章記錄下來,也提供給大家做個參考。

...繼續閱讀 »
on mrkt

Fluent Assertions 要付費了,該怎麼辦呢?

其實這也不是新聞了,早在今年 1/15 時大家就已經知道並且被商業授權的費用給嚇了一大跳(每個人 $129.95 USD)。

現在特地寫一篇是因為上週因為 AutoMapper 將要變成商業化授權而寫了兩篇文章介紹替代套件,就想到好像並沒有對於 Fluent Assertions 轉變為商業授權去寫一篇文章與替代方案,於是就以 Fluent Assertions 從 v8.0.0 起轉為商業授權,簡單寫了這篇去說明授權限制、專案應對策略,以及替代的 Assertion Library,提供給大家做個參考。

...繼續閱讀 »
on mrkt

另一種映射工具 - Mapperly

Mapperly 在以前找尋替代 AutoMapper 的時候就有看過,但當時著重在與 AutoMapper 設定與操作習慣相近的替代套件,所以對於 Mapperly 就沒有太多的關注。

直到寫了「替換映射工具 - 使用 Mapster」這篇文章後才稍微去看看 Mapperly,發現到它和 AutoMapper, Mapster 雖然都是屬於 Mapping 工具,都是做物件對映轉換的處理,但設定與使用上就有蠻大的差別,所以寫篇文章做個簡單的紀錄。

...繼續閱讀 »
on mrkt

替換映射工具 - 使用 Mapster

其實四年前就已經將手邊專案由原本所使用的 AutoMapper 以 Mapster 取代了。

起初的原因是效能考量,因為 AutoMapper 的效能一直被人詬病,但也因為 AutoMapper 的優點在於功能豐富、配置設定靈活,能夠處理複雜的 Mapping 需求,以致於我在帶新人的時候還是以 AutoMapper 為主,但是前些日子得知 AutoMapper 在之後也將走上商業化(跟 Fluent Assertions 一樣),所以就藉此來寫篇文章簡單介紹 Mapster。

...繼續閱讀 »
on mrkt

[練習題] C# 中檢查 Collection 是否有項目的幾種方式

今天 (2025-04-06) 早上在 Facebook -  台灣 .NET  技術愛好找論壇裡看到 Will 保哥轉貼了一則 X 貼文,
要檢查一個集合物件是否有元素在內,會使用哪一種語法來檢查 … 

在 C# 開發中,經常需要判斷一個集合是否有包含任何元素。雖然這是一個簡單的判斷,但其實背後有不少值得探討的細節。就來瞭解這四種常見的做法,並分析它們的優缺點與適合的使用情境。

...繼續閱讀 »
on mrkt

[料理佳餚] 使用 dotnet-svcutil 手動從 WSDL 檔案產生代理類別並整合進 .NET Core 專案

以往我們要呼叫 ASMX Web Service 的服務,大多透過 Visual Studio 的「加入 -> 服務參考」的程序,自動產生 Reference.cs 程式碼檔案,裡面就有我們要用的服務代理。但現在因為開發環境無法連線 Web Service,所以無法使用這個方式,我們手上有的是一個 *.wsdl 檔案,要改用手動的方式建立服務代理。

...繼續閱讀 »
on supershowwei

[廚餘回收] Entity Framework Core 錯誤:「...cannot be tracked because another instance...」的原因與解法

從應用程式日誌看到下面這個 Entity Framework Core(以下簡稱 EF Core)發出的例外錯誤:

The instance of entity type 'MyTable' cannot be tracked because another instance with the same key value for {'Key'} is already being tracked. When attaching existing entities, ensure that only one entity instance with a given key value is attached.

它的意思是,相同主索引鍵的實體無法被追蹤,因為已經有另一個實體正在被追蹤,我們來看看怎麼回事。

...繼續閱讀 »
on supershowwei

在 Visual Studio 連接 macOS 透由 .NET MAUI 開發 iOS 應用 (下載 xip 在 Mac 上安裝 Xcode)

這篇有提到:

在 macOS 上最主要就是要安裝 Xcode,而如果要安裝 Xcode 的管道,基本上有兩種:

  1. 透過 macOS 上的 App Store 安裝。(登入 Apple 帳號後即能免費下載使用)
  2. 透過 Apple Developers 網站來下載 .xip 安裝。(需要先有訂閱 Apple 開發者帳號才能下載使用)

本篇就來談談如何透過 .xip 來安裝 Xcode。

...繼續閱讀 »
on jamestsai

觀察 .NET Core Container 的 Exec Mode 和 Shell Mode 差異

上篇 得知 .NET Core 應用程式可以接收 SIGINT/SIGTERM訊號,來完成 graceful shutdown;在處理批次流程中,當應用程式接收到 SIGINT/SIGTERM 訊號後,就要進入狀態的保存,避免服務被強制中斷,導致狀態混亂。預設 Container 預設等待 10 sec,也就是這個時間範圍內就要完成狀態保存,如果超過時間就可以考慮送出 Timeout 參數,延長工作關閉流程。Linux 執行應用程式的時候有區分 shell model 以及 exec mode,若使用不當,會導致接收不到 SIGINT/SIGTERM 訊號,無法 graceful shutdown。

...繼續閱讀 »
on yc421206

在 Visual Studio 連接 macOS 透由 .NET MAUI 開發 iOS 應用 (用 App Store 安裝 Xcode)

如果要順利在 Visual Studio 來連接 macOS 透由 .NET MAUI 開發 iOS 的話,對於要連接的 macOS 上是需要事先安裝好 Xcode 等 Apple 所設計的 iOS 開發工具的。

不然,就算有開啟遠端登入等功能讓 Visual Studio 能夠連線並自動安裝 mono 等軟體元件,那也沒有 iOS 的相關 SDK 供使用。

在 macOS 上最主要就是要安裝 Xcode,而如果要安裝 Xcode 的管道,基本上有兩種:

  1. 透過 macOS 上的 App Store 安裝。(登入 Apple 帳號後即能免費下載使用)
  2. 透過 Apple Developer 網站來下載 .xip 安裝。(需要先有訂閱 Apple 開發者帳號才能下載使用)

本篇介紹是使用第一種方式來完成唷~~~

...繼續閱讀 »
on jamestsai

進修課程