文章列表

2020-07-10

重溫《深入淺出設計模式》外觀模式 (Book Review of Head First Design Pattern, Facade Pattern)

外觀模式就是將眾多的類別 (整體系統中的一部分,例如整體是播放電影系統與系統部分類別則包括電視機、擴大機、音響、電腦的關係) 利用合成產生一個外觀類別,並令 Client 與外觀類別互動,取代 Client 直接與眾多的類別互動,有使用類別 (表象模式) 封裝類別 (系統的部分) 的概念。

2020-07-09

ScreenToGif 錄製螢幕畫面成為 gif 檔案的實用開源工具

能夠將螢幕上的操作結果錄製成輕便的 gif 圖檔,使用 gif 的好處不僅是以連續畫面的方式便於說明,同時也不像影片檔受瀏覽工具的限制並且檔案大小也很輕量。ScreenToGif 不僅是開源軟體,對於繁體中文的支援堪稱完美,同時相關的編輯、選項設定等功能豐富到令人覺得不可思議的便利,從此要寫部落格示範程式效果就不在受限於圖片了,呈現方式Level Up 👍

2020-07-08

Python Rich Library - 豐富 Terminal 視覺化效果的函式庫

在 GitHub Trending 意外發現的神好用函式庫,提供解決目前 Python Terminal 顯示上的兩個痛點,分別是 Syntax Highlighting 以及 Progress Bar,原本要實現這兩項功能都是仰賴自己手動刻寫,完全是重造輪子的疲憊感。而 Rich 除實現了目前的痛點,並且帶來更多 Terminal 上視覺效果的呈現,實在是相見恨晚 😎

2020-07-08

重溫《深入淺出設計模式》狀態模式 (Book Review of Head First Design Pattern, State Pattern)

狀態模式和策略模式師出同門,兩者在 UML 的表示上有相同的結構,同樣是利用執行期實作相同介面的不同類別的方法,以多型的方式精簡原本需要用 if else 邏輯來控制的程式流程。兩者的關鍵差別在於使用上的意圖,狀態模式是將物件的狀態封裝為類別,並藉由類別的轉換從而多型地調用方法;策略模式則是在執行期使用依據實作相同介面的不同類別,使用其專有的演算邏輯並避免掉繼承關係所衍生的維護困難。

2020-07-07

重溫《深入淺出設計模式》反覆器模式 (Book Review of Head First Design Pattern, Iterator Pattern)

反覆器已經被實踐在許多當代的語言之中,作為集合類型的低階類別所使用。以往並沒有特別感受到 Iterator 的美好,只覺得高階的語法 (python) 方便好用,而有時候得到物件回傳 Iterator 反而不知所措 (例如 Beautiful Soup)。但重溫反覆器模式後,才曉得作為底層的反覆器有多重要,同時理解它也有助於自行實踐整合不同型別的集合類別進行迭代。

2020-07-04

如何開發 Windows Service 使用 .Net 及 Topshelf

從來沒有想過自行開發 Windows Service,一直以來都是在伺服器上直接執行 batch 或者經由工作排程器的方式執行想要達成的服務,但偶然契機下學習到 Windows Service 可以得到更多的便利性,同時藉由安裝 Topshelf 僅需要以 Console 開發上做延伸即可,非常實用。

2020-07-03

重溫《深入淺出設計模式》轉接器模式 (Book Review of Head First Design Pattern, Adapter Pattern)

轉接器模式常與表象模式進行比較,從使用上的觀點來看,前者是為了將類別能夠配合多型的方法使用,將目標類別以介面的方式,實作一個轉接器來轉換被既有的類別來達成;表象模式則是將龐雜的類別包裝成簡易的介面,讓使用者與龐雜的類別保持低耦合、最小知識,同時易於使用。

2020-07-02

重溫《深入淺出設計模式》命令模式 (Book Review of Head First Design Pattern, Command Pattern)

命令模式、外觀模式,乍看之下有些相似,但從模式的意義上的分別兩者就可以感受到不同。命令模式是將命令(要求、需求)封裝成物件,並且讓接受命令者與命令的執行職責拆分,類似餐廳點餐從老闆邊接受客人點餐、邊準備料理分為餐廳前台與餐廳後台,同時命令模式可以將命令與執行時間分隔,延後或者指定執行命令的時間;外觀模式則是將繁雜的類別方法,透過一個簡化的控制類別封裝複雜的演算邏輯,對使用者而言僅需要一個方法就能完成所有關聯的步驟。