發表文章

自救必看三大準則

容器化概念

  容器化 和 映像(Image) 是現代應用部署和運行中的兩個核心概念,尤其在使用 Docker 和 Kubernetes 這類工具時非常重要。以下是詳細解釋: 1. 容器化 (Containerization) 容器化 是一種技術,它將應用及其所有依賴(如庫、配置文件、環境變量等)打包成為一個輕量級、可執行的單位,即 容器 。容器是一種虛擬化技術,但與傳統的虛擬機(VM)相比,它更為輕量、啟動速度快,並且能夠在不同的環境中保持一致性。 容器化的特點: 隔離性 :每個容器運行在自己的環境中,彼此之間不會干擾。容器可以共享同一操作系統的內核,但每個容器都有自己獨立的應用環境和文件系統。 便捷性 :容器中包含應用程序及其所有依賴項,使得應用能夠在任何支持容器技術的主機上運行,無論是開發環境、測試環境還是生產環境。 快速啟動 :容器啟動速度比傳統虛擬機快,因為它不需要啟動整個操作系統。 可移植性 :容器可以在不同平台間(如開發機、測試機、雲端等)輕鬆移動並運行,保證應用在不同環境中的一致性。 容器的工作原理 : 容器共享宿主機的操作系統內核,但運行的是隔離的用戶空間。每個容器都有自己的文件系統、環境變量、應用程序依賴等,這使得它在任何環境中都能保持一致的運行方式。 2. 映像 (Image) 映像(Image) 是一個只讀的模板,包含運行應用所需的所有依賴、庫、配置文件等。簡單來說,映像就是一個容器的藍圖,你可以使用映像來創建容器。當容器運行時,它是從映像中創建的。 映像的特點: 只讀模板 :映像是靜態的,只讀的,並包含運行應用所需的一切。當容器啟動時,它會從映像創建一個可執行的實例。 可重用性 :映像是可重用的,你可以從相同的映像創建多個容器,這樣每個容器的運行環境都一樣,從而確保一致性。 分層結構 :映像是由多層文件系統構成的,每一層都表示一個變更。當映像更新時,只會更新需要變更的層,這樣可以提高效率並節省存儲空間。 映像與容器的區別: 映像 :是靜態的、只讀的模板,包含應用和所有依賴。 容器 :是從映像創建的運行實例,它包含運行應用所需的所有資源,但還可以進行讀寫操作。 3. 容器化與映像的關係 容器化 就是將應用和它的所有依賴封裝進一個容器中,這樣應用可以在任何地方運行,並保證一致性。 ...

從「管理」到「領導」

圖片
  領導者, 是一位幫助團隊成長、移除障礙、推動持續改善的敏捷推動者 要真正賦能團隊,Scrum Master 需要具備以下 8 大姿態(Skills & Stances),透過不同的角色轉換,讓團隊發揮最大潛力 1. Teacher(教師)——讓團隊理解 Scrum 思維 敏捷轉型的第一步,是讓團隊真正理解 Scrum 框架與敏捷思維。Scrum Master 的角色之一就是教育團隊,確保所有成員都明白 Scrum 的基本原則、價值觀與運作方式。透過不斷的學習與分享,團隊才能建立正確的敏捷文化,避免將 Scrum 變成另一種「傳統管理工具」。 2. Mentor(導師)——培養團隊成長 除了傳授知識,Scrum Master 也需要以**導師(Mentor)**的角色陪伴團隊成員成長。這不只是回答問題,而是透過經驗分享、個別指導,讓團隊能夠逐步培養自己的決策能力與問題解決能力。真正優秀的團隊,不是依賴 Scrum Master,而是能夠獨立運作! 3. Facilitator(引導者)——提升團隊溝通與決策效率 團隊的運作,需要清晰的討論與決策過程。Scrum Master 作為Facilitator(引導者),幫助團隊在每日站會(Daily Scrum)、回顧會(Sprint Retrospective)、規劃會(Sprint Planning)等會議中確保有效對話,讓所有成員的意見都能被聽見,達成共識。他不是主導決策的人,而是創造適合決策發生的環境。 4. Coach(教練)——幫助團隊內化敏捷思維 教練(Coach)與導師(Mentor)的不同之處在於,教練的重點在於引導團隊自我發現答案,而不是直接給出解決方案。Scrum Master 需要透過提問、回饋、反思,幫助團隊自主學習與成長,最終建立起「自組織團隊」,讓成員能夠獨立解決問題,而非依賴上級指令。 5. Role Model of Scrum(Scrum 文化的榜樣)——以身作則,影響團隊 Scrum Master 不只是理論上的推動者,更應該是 Scrum 文化的實踐者,以身作則示範敏捷的價值觀與行為。例如,他應該展現 開放透明、誠實溝通、擁抱變化、持續學習 等特質,影響團隊建立相同的文化。當 Scrum Master 自己成為敏捷的榜樣,團隊自然會受到感染,並在日常工作中實踐敏捷精...

入門Docker,從 HelloWorld 開始

一、從 HelloWorld 開始:安裝 Docker 和啟動基礎設置 下載並安裝 Docker Desktop : 訪問 Docker 官網 ,下載並安裝 Docker Desktop for Windows ,選擇 Windows-AMD64 版本。 啟動 Docker 和配置 WSL 2 : 安裝完成後,打開 PowerShell (以管理員身份運行)。 執行以下命令來啟用 WSL 2 (Windows Subsystem for Linux): wsl --install wsl --version 驗證 Docker 是否安裝成功 : 驗證 Docker 是否正常運行,並執行以下命令檢查 Docker 版本: docker --version 運行 HelloWorld 測試 : 進一步檢查 Docker 是否啟動成功,運行 HelloWorld 容器: docker run hello-world 確保啟用必要的項目 : 此時,你應該確認以下項目已成功啟用: WSL 2 Hyper-V Docker 二、設定 ASP.NET Core Docker 環境 創建 Dockerfile : 右鍵單擊你的方案根目錄,選擇 加入 -> 新項目 ,並命名為 Dockerfile 。 配置 Dockerfile : 在 Dockerfile 中,將以下內容粘貼到其中: # 使用 .NET 8 基礎映像來運行應用 FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base WORKDIR /app EXPOSE 80 # 使用 .NET SDK 基礎映像來構建應用 FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build WORKDIR /src # 複製 .csproj 文件並還原 NuGet 包 COPY ["方案資料夾/主要方案.csproj", "方案資料夾/"] RUN dotnet restore "方案資料夾/主要方案.csproj" # 複製整個專案並構建 COPY . . WORKDIR ...

EFCore語法,對應sqlserve兼容性

圖片
         protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)         {              if (!optionsBuilder.IsConfigured) optionsBuilder.UseSqlServer(@setDBConnString, o => o. UseCompatibilityLevel(110) );         } UseCompatibilityLevel 不同層級 參考來源: https://learn.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql-compatibility-level?view=sql-server-ver16#compatibility_level--160--150--140--130--120--110--100--90--80-

將表單欄位轉為 Json,自建 serializeJson 方法

 jquery 轉 QueryString 或 Json 的方式太不貼心 就自建寫了一個 ( function($){           $.fn.serializeJson= function(){                var serializeObj={};                var array= this.serializeArray();                var str= this.serialize();               $(array).each( function(){                    if(serializeObj[ this.name]){                        if($.isArray(serializeObj[ this.name])){            ...

【設定衝突】用戶端和伺服器無法溝通 因為它們沒有公用的演算法

圖片
  本機安全性過高, 有可能造成SSMS工具,無法與SQL Server連線 最快恢復方式, 是把SSL/TLS直接刪掉 不必重開機, 把SSMS關掉重新連線 完成 ~

CQRS 是什麼 ?

圖片
  Brobridge   過去在指導客戶進行微服務架構設計時,總不免講到「命令與查詢責任分離(CQRS, Command Query Responsibility Segregation)」,這個詞因為對許多人來說很陌生,通常又被人簡化理解為「讀寫分離」。在微服務架構的領域中,CQRS 主要被用於解決資料庫效能問題、讓實現資料分散化的目標。當然,一涉及分散式架構,其中就帶來更多議題,如:如資料一致性、交易處理等。 由於 CQRS 的概念在分散式系統,以及現今的微服務架構下被廣泛應用,小從資料儲存,大到整個服務應用系統層面都可以看到其存在,而且使用方法和層面非常多元且複雜,往往我們很難單從一些表面上的名詞和概念就能完全理解 CQRS 所帶來的好處,和對於微服務架構的重要性。‌ 有鑑於此, 本文將分成「資料庫系統」以及「應用程式」兩個角度,來討論 CQRS 模式在實務上的應用方法 ,也試著利用簡單的方式說明實務面我們如何採用這樣的設計模式。 什麼是 CQRS? ‌ 這個概念來自於物件導向的「命令與查詢分離(CQS, Command Query Separation)」,出自於 1987 年 Betrand Meyer 的 Object-Oriented Software Construction(物件導向軟體建構)一書,其原始概念是我們可以把物件操作分為命令(Command)和查詢(Query)兩種形式。 而這兩種操作的行為分別為: 命令(Command):執行後 會改變物件狀態 。 查詢(Query):查看物件結果,而且 不會改變物件的狀態、對物件本身沒有副作用 。 類似的概念,我們可以應用在分散式架構或微服務架構之下,只是我們不討論物件的行為,取而代之的是服務的行為,在實務上,此概念主要是用來解決資料操作的效率、服務責任的劃分,以及分散式系統下利用「重複性」來提升系統整體效能的問題。 如果你閱讀過我們的另一篇文章:「 淺談微服務拆分原理 」,裡面對於服務進行業務拆分的部分,圖上 Action 所表示的「 Commands/Query 」指的就是 CQRS 當中的命令和查詢。 資料庫系統的 CQRS 實現 ‌ 以往在討論服務系統設計時,因為資料庫總是會遭遇到效能瓶頸,就會嘗試使用「讀寫分離」來解決問題,所以這樣的做法早就被大量使用。資料儲存層面的 ...