Docker (一)- 基本使用方式
Docker是一個快速建立、測試、部署程式的軟體平台。Docker 作為容器的作業系統與虛擬機器虛擬化伺服器硬體的方法相似,容器可虛擬化伺服器的作業系統。Docker 安裝在每部伺服器上,並提供簡單的命令讓您使用以建立、啟動或停止容器。
系統架構Docker 系統架構主要是主從式(client-server)架構。如下方
Docker Daemon (伺服器) : 用來執行管理 Docker image、啟動 container、停止 container 的 service,它是一個 long time service。
Docker Client (客戶端) : 使用 Restful API 連到 Docker daemon,並且提供 command line 的方式讓使用者可以操作 docker。
主要元件
映像檔(image): 執行特定環境所需要的資源,特色只允許唯獨。
容器(container): 基於 image 可以建立出 Container,特色可讀寫。
倉庫(repository): 存放 image 的空間,處理方式類似於git 。預設存取的 registry ...
Discord (二) - 利用webhook製作排程公告
前言近期放下手邊 side project 回歸初心繼續研究其他功能、套件,使用 discord 一段時間目標也要讓 discord 走向不同的風格,因此,利用discord webhook 製作簡易版本排程公告。
規劃排程有很多做法可以處理,近期沒有整理一樣技術的文章,建議 C# 新手要玩排程可以考慮使用 Web Application 中 WebJob。這邊定義以下幾個排程需要用到的東西
內容 : 這裡使用 John Conte Blog 部落格的文章作為範例。(PS 可以使用自己的Blog)
時間 : 這裡思考方向要雙方要有時間,就可以不用暫存最新一筆的名稱 (待補充)。 Cron 產生器
API/爬蟲 : 作法是否可以用API取得資料,或是使用爬蟲取得資料。
基於這幾個想法,我們就可以執行下一步驟。
製作排程公告0. 套件
AngleSharp : 用來爬取網頁資料
Newtonsoft.Json : 用來處理 json 格式資料
1. 製作爬蟲1.1 設定參數1234567// 建立 Browser 的配置var config = AngleSharp.Co ...
【Git】- 使用 Git Stash 暫存檔案或取用先前檔案
Git Stashgit 內有個功能叫做 stash,可以將目前的程式碼暫存起來,這個功能可以用在以下幾種情境。
切 branch 之前功能尚未完成,但是又不想 commit
用解衝突方案
使用方式查看 Stash 清單1git stash list
存檔目前程式碼1git stash save <message>
取出/套用 Stash以下兩個是不同概念,pop 會將 stash id 移除,apply 會保留 stash id。若是想要把local參數加入,一般都是使用apply來套用。
12git stash pop <stash id>git stash apply <stash id>
刪除 Stash1git stash drop <stash id>
清除所有 Stash1git stash clear
結論stash 功能可以將目前的程式碼暫存起來,可以用在切換分支、解衝突等等,但是要注意的是 stash id 會隨著 stash 動作而改變,所以要注意 stash id 是否正確,執行前建議先用li ...
Github Pages (三) - 包含檔案發行
問題github page 使用上會遇到txt檔案要上傳時候,會有幾個檔案沒辦法正常上傳,建置時候build /publish都不會出現想要上傳的檔案。
解決方式在 _config.yml 檔案中加入以下設定,就會正常引入在public裡面了 (public 是 build 輸出檔案)。
12include: - '_xxx.txt'
【Git】- 使用 git reset 回到先前的commit
前言這篇紀錄一下上篇文章的補充,因為有時候會需要回到先前的commit,所以這邊紀錄一下。
問題近期專案會想要把 commit 重新整理,發覺現在的commit 與先前commit結果不一樣,所以想要回到先前的commit。
解決方式首先請將 現有的分支在copy一份出來,並且要切換到該分支。
1git checkout -b <new branch name>
再將commit回到正常版本
1git reset --hard <commit id>
之後會遇到現行分支需要把它pull下來,這時候要把它 force 掉,因為現行分支的commit已經不是最新的了。以下兩種方式可以使用,但是要注意,請不要再重要分支這樣搞,不然會有很大的風險。
12git push -fgit push -force
【Git】- 使用 git remote 將不同git環境同步程式碼
前言不少人會有經驗,當一個專案時候會有兩者開發人員進行開發,那開發有可能是 github、gitlab、azure devops等之類軟體。這邊提供一個git處理方式,可以快速同步對方的程式碼不用一個一個的copy。
處理方式1. 取得對方的clone link不論是什麼環境,第一步就是要對方的git 權限,沒有權限就只能一個一個copy了。接下來,我們拿到clone link後,輸入遠端url。
remote name : 隨意輸入,要識別對方的git
clone link : 對方的clone link1git remote add <remote name> <clone link>
2. 選擇要更新的分支這邊有兩種方式一種是更新指定分支、一種是拉取分支。遇到衝突記得解衝突,那如果是比較肥大、歷史悠久的程式碼務必尋求同事協助,不然會有很大的風險。
2-1. 更新指定分支1git fetch <remote name> <branch name>
2-2. 指定拉取單一分支1git pull <remote name&g ...
【Azure】Board 加入一個QA環境
前言近期因為有案子需要使用 test case 環境,所以就想到了 Azure DevOps 的 Azure Board,可以使用 Azure Board 來管理 test case,因為是免費版本不能使用 test plan 所以簡單使用一個環境給QA使用,這邊就來介紹一下如何使用 Azure Board 來管理 test case。
1. Test CaseTest case(測試案例)是軟體測試中的一個關鍵概念,它是一個特定的情境或情況,用來確定軟體在特定條件下是否按預期運作。Test case是軟體測試的基本單元,通常包括一個或多個測試步驟,以確保軟體的功能、效能、穩定性等方面都能滿足需求。
1-1 優點測試案例的發展和定義是軟體品質保證的一部分,旨在確保軟體產品的可靠性和穩定性。
1-2 作用
測試試案例的主要作用是確保軟體在各種情況下都能正確運作,減少錯誤和缺陷的風險。
通過執行測試案例,軟體開發團隊可以驗證軟體的功能是否符合設計規格,並確保它能夠滿足用戶需求。
測試案例還可以幫助識別和修復軟體中的缺陷,提高軟體品質。
1-3 要素測試案例包括一組指令或步驟,用來驗證軟 ...
C# BenchmarkDotnet-效能測試
近期為了整理先前技術,部分有很多功能沒有完全優化或是method不確定對效能有什麼問題。有一個不錯的套件能夠提供效能、執行時間檢視耗損,對於想要測試效能的工程師來說,這是一個不錯的選擇。
BenchmarkDotnet
雖然說這工具是一個檢視效能、執行結果的工具。同時,也能將method 進行比較哪個做法比較好(破壞友情工具)。實際上不需要比較就可以使用,k6與這功能有點類似,但是這個工具是針對 C# 進行效能測試。
使用方式這邊展示就使用 filter 作法,來比較哪個做法效果比較好。備註 : 如果要使用 net8 時候,切記 native Aot 不能使用,會出現錯誤。
1. 創建 Filter 比較類別以下範例可以參考。這裡用 array、List、IEnumerable 來做比較,看哪個取得資料以及記憶體耗損會比較低。MemoryDiagnoser => 這個是用來檢視記憶體耗損。
123456789101112131415161718192021222324[MemoryDiagnoser]public class TestFilter(){ ...
【Angular】07 使用IndexedDb
前言IndexedDb 是一個瀏覽器內建的資料庫,可以透過 Javascript 進行操作,並且可以在瀏覽器關閉後,資料依然存在,因此可以用來做離線儲存的功能。實際應用上通常是紀錄暫存資料,按下存檔後一次檢查、存檔讓資料可以不用平凡使用在API 傳送的一項工具。
前陣子,需要用到暫存資料的功能,因此就研究了一下 IndexedDb 的使用方式,而初期使用的確不好學習。此範例會用簡單的CRUD製作。
實作 CRUD 範例在開始之前,不論是問 chatGPT 或是 其他教學文章,都會逃不了裝套件的問題。所以這邊就不用套件示範,直接使用原生的方式來實作。
1. 製作 Service 環境下方程式碼中,IDBDatabase為內建Interface可以不用特別引入。稍微補充下面程式碼,因為使用v16版本是強制要帶入預設值,所以 private db: IDBDatabase | null = null; 才會這樣寫。
初始化資料庫作法如下 :
建立資料庫 : indexedDB.open( 資料庫名稱 , 資料庫版本 );。
版本更新 : request.onupgradeneeded ...
【前端】何謂 IndexedDb
IndexedDB 是一個強大的瀏覽器內本地資料庫技術,它允許網頁應用程式在客戶端存儲和檢索大量資料,而無需依賴傳統的伺服器資料庫。在本文中,我們將深入瞭解 IndexedDB,包括它的特點、用途以及如何使用它來增強網頁應用程式的功能。
什麼是 IndexedDB?IndexedDB 是一個 Web API,用於在瀏覽器中存儲大量結構化資料。它提供了一個類似於資料庫的環境,允許網頁應用程式創建、讀取、更新和刪除資料。這種資料庫是基於 JavaScript 的,不依賴於任何伺服器端資料庫,因此可以在離線狀態下工作。
IndexedDB 的特點
非同步操作:IndexedDB 是一個非同步資料庫,這意味著它可以在後台執行長時間運行的操作而不會阻止網頁應用程式的其他部分。這有助於保持應用程式的反應性。
支援索引:IndexedDB 允許您為資料建立索引,這有助於快速查詢資料,而無需掃描整個資料庫。
大容量資料儲存:您可以存儲大量資料(通常以兆字節為單位),這對於需要離線存儲或高性能本地資料庫的應用程式非常有用。
跨瀏覽器支援:IndexedDB 是一個標準的 Web API,支援大多數 ...