【Git】Cherry Pick 指令篇
前言最近在工作環境中沒有任何UI可以使用 git 的功能,其中最需要用到多筆 commit 進行 cherry pick 我們可以用以個指令來進行操作。
Cherry Pick在 Git 中,cherry-pick 是一個強大的命令,允許開發者從一個分支中選擇特定的提交(commit),並將其應用到當前分支。這與傳統的合併(merge)或重疊(rebase)不同,因為這些方法通常會將整個分支的所有提交整合到目標分支中,而 cherry-pick 只選擇單個或多個特定的提交。
一、使用方式一般使用方式 git cherry-pick <commit> 是將指定的 commit 合併到目前的 branch 中。
切換到目標分支:首先,確保你在想要應用提交的分支上。例如,如果你想將提交應用到 master 分支,可以使用以下命令:
1git checkout master
執行 cherry-pick:然後,使用 cherry-pick 命令來選擇特定的提交:
1git cherry-pick <commit1>
如果再執行前覺得 commit 名稱想要修改可 ...
【Docker】dotnet 與 node 一次用上起來
前言最近已經荒廢學習技術相關東西,主要經營都是在 discord 上面。剛好這次想要透過 docker 代替常駐程式作法,因此,這次來試試看 dotnet 與 node 一次用上起來。
一、dotnet 環境上次我有一篇是提到 api 上架部分,這邊我考慮不使用任何程式碼快速產生一個 dotnet、dockerfile。
相關連結 : Docker】使用VSC部屬minimal api
處理方式很簡單,但我們實際要用的是 Console App,因此我們可以透過 dotnet new console 來建立一個 Console App。
123dotnet new console -n dotnet_nodecd .\dotnet_node\code . # 開啟 VS Code
1-1 VS Code 加入 Dockerfile這邊我們可以看到 Program.cs 內容,這邊我們不會特別修改,只是要部屬到 docker 中。接著我們用 ctrl + shift + p 來搜尋 docker: add docker files to workspace,這邊我們選擇 .NET C ...
【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