【Docker】使用 Dapr 與 WebAPI
Dapr 是什麼Dapr 是一個開源的分散式應用程式運行時,它提供了一個簡單的方式來編寫微服務應用程式,並且可以在任何地方運行。Dapr 可以在任何地方運行,無論是在本地開發機器、Kubernetes 集群、虛擬機器、容器或者 IoT 裝置上。Dapr 通過提供一組獨立於語言的 API,來幫助開發人員編寫微服務應用程式。這些 API 包括狀態管理、消息發送、事件驅動、觀察、密碼管理等功能。
一、安裝方式
安裝dapr cli : powershell -Command "iwr -useb https://raw.githubusercontent.com/dapr/cli/master/install/install.ps1 | iex"
使用 winget 安裝: winget install Dapr.CLI
安裝完成後,從新開啟一個終端機,輸入dapr -h,如果有顯示以下畫面代表安裝成功。
二、dapr 初始化動作
使用dapr init初始化一個新的專案 (若要確認版本號,可以使用dapr --version 或 dapr -v)
初始化後,會在 % ...
【TypeScript】讓TypeScript加入IsNullOrEmpty C# 效果
前言這篇主要紀錄一下如何讓TypeScript加入IsNullOrEmpty C#效果。為了達到效果花了一點時間,以下是實作過程。
實作過程String.IsNullOrEmpty是C#的函式,他效果是用語法糖的方式判斷字串是否為null或是空字串。在TypeScript中沒有這個函式,我們就創建一個 declare global 解決語法糖問題。
1. 如何創建共用函式庫網路上很多方法像是要再檔名創建 d.ts 檔案,實際上實作可以不用加入這個檔案,只要在 ts 檔案中加入 declare global 即可。如以下範例 :
123456export {};declare global { }
如果要引用ToString 函式,可以在 declare global 中加入以下程式碼 :
123456789export {};declare global { interface Number { ToString(): string; IsOdd(): boolean; } ...
[筆記]C# - Box 與 Unbox
Box 與 UnboxBoxing 和 Unboxing 是在程式設計中處理實值型別(Value Type)和參考型別(Reference Type)之間轉換的過程。
Boxing : 將實值型別轉換為參考型別的過程,
Unboxing : 將參考型別轉換為實值型別的過程。
1-1 認識 C# 資料型態C# 中的資料型態分為兩種,分別是實質型別 Value Type 和 參考型別 Reference Type。這兩種型別在記憶體中的存放位置不同,Value Type 存放在 Stack 中,而 Reference Type 存放在 Heap 中。
下圖是 Value Type 和 Reference Type 變數/類別清單
1-2 BoxBoxing 過程會在堆積(Heap)中創建一個新的物件,並將實值型別的值複製到這個新物件中。例如:
12345int i = 123;object o = i; // 這裡發生了 Boxing// 明確轉換// object o = (object)i; // 這裡發生了 Boxing
在這個例子中,整數 i 被轉換為物件 o,這樣 ...
【Git】Git Worktree 應用
前言最近專案為了要調整node_modules問題,只要切換 master、develop 分支就要重新安裝 node_modules,這樣會花費很多時間,所以我們這邊使用 git worktree 來解決這個問題。
一、 Git worktreeGit worktree 功能是在 Git 2.5 版本中引入的,版本於 2015 年 7 月發布。這功能優點如下 :
可以在同一個 repository 中,把branch 拆到local 的不同目錄下。
可以在不同的目錄下,同時操作不同的 branch。
利用 unlock / lock 來控制 worktree 的狀態。
1-1 建立/移動 worktreeworktree 可以用branch name 來建立。如果想要更改位置可以使用 move 指令。
12git worktree add <path> <branch name> ## 建立 worktreegit worktree move <path> <new path> ## 移動 worktree
1 ...
Playwright 自動化腳本無寫程式碼使用方式 (四) - test function
前言最近開始使用 Playwright 進行自動化測試,順便把一些學習筆記記錄下來,這篇會介紹如何使用 test function。
一、 運用 test describe在 Playwright 中,test.describe 是一個用來分組測試的功能。它的主要作用是將相關的測試用例集合在一起,使得測試結構更清晰,並且可以更方便地管理和運行這些測試。以下是 test.describe 的一些具體功能和應用:
1-1 test.describe 作用
分組測試範例/情境 : 允許你將相關的測試用例分組在一起,這樣可以使測試代碼更具結構性和可讀性。例如,你可以將所有針對某個特定功能的測試用例放在同一個 describe 區塊中。
設置共享的前置條件和後置條件 : 在 test.describe 區塊中,你可以設置共享的 beforeAll、beforeEach、afterAll 和 afterEach hook,用於在測試運行前後執行一些初始化或清理操作。這樣可以避免在每個測試用例中重複相同的代碼
提高測試報告的可讀性 : test.describe 可以幫助我們將測試用例分組 ...
C# Class與Struct差異(使用LinqPad)
近期要學習 C# reocrd,因此想要先了解一下 Class 與 Struct 的差異,以下是筆記。
Class 與 Struct 差異在程式設計中,Class(類別)和 Struct(結構)是兩種用來定義資料型別的基本構造。了解兩者之間的差異有助於在不同的情境下選擇適當的資料型別。以下將從多個角度來探討它們的不同之處。
1. 基本概念與核心差異
類別 (Class):
參考型別 (Reference Type)
使用堆積記憶體 (Heap Memory)
可以繼承 (支持繼承)
可包含複雜物件與方法
結構 (Struct):
實值型別 (Value Type)
使用堆疊記憶體 (Stack Memory)
不可以繼承 (不支持繼承)
適合較簡單的資料結構
2. 記憶體分配
類別 (Class):
透過 new 關鍵字創建實例,分配在堆積上。
擁有較長的生命周期,直到沒有引用指向它們時才會被垃圾回收機制清理。
結構 (Struct):
可以直接創建實例,不需要 new 關鍵字,分配在堆疊上。
生命週期較短,當超出作用域時就會被清理。
2-1 創建實例變化 ...
【Azure】有一種功能叫做 Microsoft Entra (新增使用者或來賓)
前言最近在身旁的同事們說 Micorsoft 沒有製作創建來賓跟使用者的功能,可以讓 DevOps 其他來賓或使用者可以自己創建,這樣就不用一直找管理員來幫忙創建。因此,我要幫微軟澄清這個問題,其實是有的,只是在不起眼的地方而已。
Microsoft EntraMicrosoft Entra 是一個為企業提供的服務,可以讓企業的使用者自己創建來賓或使用者,而不用一直找管理員來幫忙創建。這樣可以節省管理員的時間,也可以讓使用者自己管理自己的帳號。
入口 : https://entra.microsoft.com/
一、免費版限制在 Microsoft Entra ID(以前稱為 Azure Active Directory)免費版中,您可以創建的使用者數量是有限的。以下是與使用者相關的主要限制和詳細資訊:
1-1 使用者數量限制
最大使用者數量:
免費版:單個租戶中最多可以創建 50,000 個使用者和資源
如果需要更多資源,您可以考慮升級到付費版本(如 Premium P1 或 P2),這些版本提供更高的資源上限及更多的功能。
1-2 免費版的其他限制除了使用者數量的限制外 ...
【Azure】Pipeline-使用nodejs遇到的問題
前言為了回顧之前保留的技術避免再次遺忘,這次要把npm build 動作也記錄在當中。
一、切換node版本近期需要加入DevOps 中Pipeline 來做自動化部屬,但是發現在Pipeline 中的node版本是8.10.0,而我們的專案需要使用node 14.15.1,所以需要在Pipeline 中切換node版本。
備註 : 這段很多網站上有一些做法會無法正常切換,依據下方作法可以正常切換node版本。
解決方式加入版本時候,需要加入【Node.Js tools install】才會把node版本加入到Pipeline 中,如下圖所示。
二、執行npm腳本解決方式pipeline 中的npm build 動作,如果使用 npm run build 會發生錯誤,所以需要使用npm run-script build 來執行。
因為本章是使用 Angular 14 之前版本可以支援 –prod 參數,所以可以使用下方指令來執行。
1run-script build --prod
Playwright 自動化腳本無寫程式碼使用方式 (三) - Inspector 功能
前言上篇已經教導 Playwright 基礎使用方式,包含 VS Code 內的功能,接下來會簡單介紹 Inspector 功能。
一、Inspector 功能Playwright Inspector 是一個 GUI 工具,專門用來幫助開發人員調試 Playwright 測試。它提供了以下功能
步過測試: 可以逐步執行測試,查看每一步的執行情況。
即時編輯locator: 允許開發人員在調試過程中即時編輯locator。
選擇target: 可以直接選擇頁面上的target,有不同語言產生內容。
查看行為日誌: 顯示每個操作的行為日誌,幫助分析和辨識問題。
1-1 Inspector 開啟方式開啟方式有兩種,一種是透過 CLI 開啟,另一種是透過 VS Code 開啟。
二、 Inspector 介面/使用方式這邊功能其實與上一章節的功能相同,不同處是他可以改 Target 更改語言,並且可以即時編輯 Locator。
2-1 Target 選擇以下為 Inspector Target 選擇語言功能,可以選擇這幾些語言產生內容。
2-2 Debug ToolsIns ...
Playwright 自動化腳本無寫程式碼使用方式 (二) - 測試總管功能
前言上次只有提到 Playwright 開啟專案、錄製部分,這邊來說一下須要用到幾個功能,這樣可以讓不會寫程式碼的人也可以使用 Playwright 進行自動化測試。
一、測試總管1-1 Show Browser/Show Trace Viewer 差異啟動方式在 Test Explorer 裡面執行隨便幾個功能就會自動跑出以下功能。若不要顯示瀏覽器以及Trace Viewer 可以直接把取消勾選即可。
Show Browser : 這個功能是可以看到瀏覽器的畫面,但是這個功能是不會顯示程式碼的。
Show Trace Viewer : 這個功能是可以看到程式碼的執行過程,可以看到程式碼的執行過程。Ex : 紀錄,錯誤訊息、Snapshots 等等。
1-2 Show Trace Viewer基本上 Show Trace Viewer 可以看到很多不錯的內容,從下圖可以看到幾個重要的部分。
Snapshots : 最上面可以看到 Playwright 每一個步驟的截圖,包含動作顏色可以透過這個功能來識別。
Actions Log : 左邊是將自動化的步驟紀錄下來,可以 ...