Docker (三)- 創建 docker 環境 (無 docker run)
上一章節有敘述使用 docker run 與 docker start 差異,一般使用Docker 除非是需要兩種同時生成,不然這東西相當不方便。以下作法會是用 pull、create 、start(stop) 。
清除 Images 映像檔刪除Images如下方指令。如果執行後跟下方圖片一樣有錯誤訊息,可以看到 container 還有在使用中是不可以任意刪除,所以記得需要先刪除 container 才能刪除 Images。
12docker rmi [ContainerID]docker rmi [names]
初次使用 Docker 動作這次需要記一下使用順序,之後就會比較順手一些。
docker pull
docker create
docker start
docker stop
創建 Images (docker pull)使用方式可以透過search 查詢名稱。這邊我們一樣使用hello-world來展示。輸入方式如下:
1docker pull hello-world
創建 Container(docker create)輸入方式如下:
1docker ...
Docker (二)- docker run 與 docker start
這邊簡單操作一次 docker run 與 docker start 有什麼特別差異。
準備工具開始前,兩套工具可以準備,若不使用Desktop也能操作。
Docker Desktop : https://www.docker.com/products/docker-desktop/
Cmd / terminal
Images 映像檔Images 作為映像檔,基底需要Containers 來執行。使用image 可以透過 docker search 查詢image name。
Search 搜尋搜尋 : hello-world 。內容內會有很多相關的hello-world,可以依據需求選擇需要的名稱執行、輸入。
建立 Image - Hello World簡單敘述 Docker 創建方式。如果Docker內容已經有存在Hello World 是不會再產生的二個Image (Hello World) ,從下圖可以得到結果。執行方式
1docker run hello-world
Docker Desktop - Image / Containers從Docke ...
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(){ ...