「設計」標籤的文章
帶有「設計」標籤的文章共 26 篇,依發布日期由新到舊排列。
-
多執行緒實務最佳實踐 Java 篇 ── 虛擬執行緒時代的定石
Java 的多執行緒,定石是不直接建立執行緒,而是交給 ExecutorService 與虛擬執行緒。本文整理 synchronized 與 ReentrantLock 的使用區分、以中斷實現的協調式停止、ConcurrentHashMap 的原子操作,一直到 Swing 的 EDT 等實務原則。
-
多執行緒實務最佳實踐 C 語言篇 ── 以 Win32 API 的方式安全撰寫
C 語言 × Win32 的多執行緒有其定石:以 _beginthreadex 建立執行緒、SRW 鎖與條件變數、Interlocked、以停止事件 + WaitForMultipleObjects 設計停止流程。本文一併整理 TerminateThread 的危險性與 DllMain 的限制。
-
多執行緒實務最佳實踐 C++ 篇 ── 以 RAII 與 jthread 從結構上消除事故
C++ 的多執行緒是資料競爭會變成未定義行為的世界。本文整理 std::thread 解構函式的陷阱、以 jthread 與 stop_token 設計停止機制、scoped_lock 的死結迴避、atomic 的正確定位,以及與 Win32 同步 API 的使用區分。
-
多執行緒的實務最佳實踐 .NET篇 ── 在增加執行緒之前先決定的事
針對 .NET/C# 整理能防止「建立執行緒後偶爾當機、卡死」的設計定石。內容涵蓋不自行建立執行緒而改用 Task、減少共享可變狀態、鎖的紀律、以 CancellationToken 設計停止機制,以及 UI 執行緒的處理方式。
-
不能直接使用QR Code的讀取值 ── 錯誤更正通過不代表值就正確
QR Code的錯誤更正,並不是一套「只要更正通過就保證值正確」的機制。本文以樣本圖片與兩種解碼器的實測為依據,說明髒污落點不同就會被讀成另一個值的原因,以及業務系統端必須做的驗證。
-
告別 Write-Host ── PowerShell 的輸出資料流與日誌設計
本文整理 PowerShell 六個輸出資料流的使用區分、Write-Host 所存在的問題與正確用途、函式傳回值被污染的原因、透過 -Verbose 與 -InformationVariable 由呼叫端進行控制的方法,以及結構化日誌的留存方式。
-
業務系統的代碼設計 ── 商品代碼・客戶代碼的訂定方式與檢查碼
商品代碼・客戶代碼等業務系統代碼體系的實務指南。有意義代碼與無意義流水號的判斷表、JAN・Luhn等檢查碼算式與C#實作、Excel的0消失對策,乃至位數溢位與遷移一次整理清楚。
-
ADR(Architecture Decision Record)入門 ── 在小規模開發中留下「為何採用此設計」的最小做法
程式碼不會說明「為什麼這樣做」。本文說明如何用ADR(Architecture Decision Record)以「1個決定=1個檔案」的Markdown留下設計判斷的理由,並附上範本、該寫/不該寫的判斷表與實例。
-
別忘了先決定「要幾秒才滿意」── 用 IPA「非功能要求分級」整理非功能需求
「速度太慢」「故障應對超出預期」等糾紛,大多源自忘記事先決定非功能需求。本文以發包方也能理解的方式,解說 IPA「非功能要求分級」的六大項目、分級表與模型系統的使用方法,以及現實可行的活用方式。
-
Windows 應用程式該不該 Web 化 ── 判斷表與「拆分」這個現實解方
「想把公司內部的 Windows 應用程式 Web 化」這樣的需求正在增加,但對於牽涉設備連動、本機檔案處理、離線運作、高速輸入介面的應用程式來說,Web 化反而可能導致成本增加、功能劣化。本文從 Windows 委外開發的實務角度,整理適合與不適合 Web 化的判斷表,以及不將整體 Web 化、而只將部分功能搬...
-
如何理解 Windows 的工作階段隔離 ── Session 0・RDP・多使用者同時執行
整理 Windows 應用程式開發者容易混淆的「工作階段」概念。說明服務無法顯示 UI 的 Session 0 隔離原因、RDP 連線時工作階段的行為、具名物件的工作階段隔離,以及共用 PC・RDS 環境常見的設計失誤,從實務角度解說。
-
Windows 的行程間通訊該怎麼選 ── 具名管道 / TCP / gRPC / 共享記憶體 / COM 判斷表
整理 Windows 應用程式之間該如何選擇溝通方式。以判斷表整理具名管道、本機 TCP、gRPC、共享記憶體、檔案協作、COM 各自的強項與陷阱,並從實務角度說明 UI+服務分離・32bit/64bit 橋接・權限邊界等典型架構,以及具名管道的實作範例。
-
Windows應用程式資料儲存位置怎麼選 ── SQLite / JSON / 登錄檔 / Access 判斷表
Windows桌面應用程式的資料該存在哪裡、用什麼格式儲存?本文整理AppData/ProgramData的使用區分,以及SQLite、JSON檔案、登錄檔、Access(.accdb)各自的優勢與陷阱,並附判斷表,從實務角度說明防止資料損毀與位元數問題等注意事項。
-
應該在哪裡 `catch` 例外並輸出日誌、進行錯誤處理 - 以實務向整理呼叫階層的邊界與職責
本文整理在呼叫階層中應該於哪一層 catch 例外、輸出主日誌與進行錯誤處理的實務判斷標準。深層 helper 不寬泛接捕,外部 I/O 邊界負責翻譯例外,UseCase 把預期內失敗結果化,UI 與請求邊界輸出 1 次主日誌並決定回應,未處理例外處理器只承擔最終記錄與終止導線。讀者可帶走 1 個失敗 1 條主日...
-
Windows 上應優先採用事件等待而非 Sleep(1) 的理由
在 Windows 上,短時間 timed wait 的精度會受 system clock 粒度與排程的影響。本文梳理在等待工作抵達、I/O 完成或停止請求時,為什麼應該改用事件驅動,而不是每隔一段時間輪詢。
-
非預期例外發生時該結束還是繼續執行的判斷表
發生非預期的例外時,應該讓應用程式結束還是繼續執行?本文從狀態毀損、外部副作用、執行緒與原生邊界的角度梳理判斷方式。
-
Windows 應用程式開發的最低限度資安檢核表
以檢核表形式整理 WPF / WinForms / WinUI / C++ / C# 業務應用程式在權限、簽署、更新、機密資訊、HTTPS、輸入驗證、DLL 載入與日誌方面的基本要點。
-
.NET Generic Host 是什麼 - DI、設定、日誌的基礎
本文從 DI、設定、日誌、IHostedService、BackgroundService 之間的關係梳理 Generic Host 的角色,並以實務角度歸納它在哪裡管用、在哪裡又會顯得過剩。
-
.NET Native AOT 是什麼 - 與 JIT、trimming 的差異
從與 JIT、ReadyToRun、self-contained、single-file、trimming、source generator 的差異梳理 Native AOT 到底是什麼,並以實務角度歸納它適合的情境與吃力的情境。
-
.NET 三種計時器的區分使用 - PeriodicTimer/Timer/DispatcherTimer
梳理 PeriodicTimer / System.Threading.Timer / DispatcherTimer 的差異,以及在 async 處理、ThreadPool callback、WPF 的 UI 更新中該如何區分使用。
-
在桌面應用程式使用 .NET Generic Host 與 BackgroundService 的理由
為了在 Windows 工具與常駐型應用程式中梳理啟動、定期處理、終止處理、日誌、設定與 DI,本文整理 Generic Host 與 BackgroundService 該怎麼用。
-
FileSystemWatcher 實務指南 - 漏掉通知與重複通知的對策
從漏掉通知、重複通知、完成判定的陷阱、重新掃描、原子性 claim、idempotency 等角度,梳理 FileSystemWatcher 的用法與注意事項。
-
C# async/await 實務判斷表 - Task.Run 與 ConfigureAwait
本文以判斷表梳理 C# async/await 的最佳實踐,涵蓋 I/O 等待、CPU 計算、Task.Run、ConfigureAwait(false) 與 fire-and-forget。
-
在一般 Windows 上盡可能實現軟即時的實戰指南
從計時器精度、優先權、電源設定與監控方式,梳理在一般 Windows 上讓週期處理與低延遲處理穩定下來的思路。
-
檔案介接互斥控制的基礎知識 - 檔案鎖定與原子性 claim 的最佳實踐
本文從檔案鎖定、原子性 claim、temp -> rename 與 idempotency 的角度梳理檔案介接的互斥控制,並歸納出讓共用資料夾介接不出事的設計。
-
HCP 圖表與 MakingHCPChartSkill 入門
說明 HCP 圖表是什麼,並整理 MakingHCPChartSkill 把 HCP-DSL 轉成決定性 SVG 的流程、圖的讀法與使用方式。