Ryan

不務正業 全端 開發記事

S.O.L.I.D 物件導向設計原則 - 相依反轉原則 Dependency Inversion Principle

High-level modules should not depend on low-level modules. Both should depend on abstractions. 高層模組不應該依賴低層模組,兩者皆應依賴於抽象。 Abstractions should not depend on details. Details should depend on abst......

使用 PowerShell 控制 IIS

以往在能夠碰到機器的情況底下(實體機器、虛擬機器…),我們通常都會選擇使用 IIS 的管理介面來幫助我們設定 IIS 的組態 由於最近在接觸 CI/CD,很多原本可以使用 UI 設定的組態都改用指令的方式來操作,讓我們在不透過任何人工的情況下,操作 IIS。 今天就用簡單的例子來介紹,我們怎樣使用 PowerShell 來幫助我們做到以下的工作。 取得目前所有的站台 取得所有應用程式集區 ......

產生假資料的利器 ObjectFiller.NET

緣起 在開發網站的時候,是不是常常會遇到後端有些功能還沒做完,但是要產生假資料顯示在畫面上。大部分的人會選擇自己簡單的建立幾筆資料,再不然就是寫個迴圈將資料後面串上索引,不過這些方法還是讓你的資料看起來沒有什麼真實的感覺,今天這篇文章要介紹這個套件 ObjectFiller.NET 讓你可以透過套件來產生更貼近真實資料的假資料來源,讓你不管是在畫面上還是做測試上,都能夠省去更多手動建立假資料......

S.O.L.I.D 物件導向設計原則 - ISP (Interface Segregation Principle)

解釋 The interface-segregation principle (ISP) states that no client should be forced to depend on methods it does not use. 意思就是說一個類別不應該被強迫實作一個它不需要的方法。 其實換句話說是限制你不要過度膨脹介面中定義的方法,盡量是能夠滿足使用的情境即可,別想要把全......

如何在 FluentValidation 的 Validator 中注入自訂的 Service

緣起 最近在工作上使用了 FluentValidation 套件幫助我做比較彈性化的模型驗證,不過在自訂模型驗證的時,需要借助其他已經定義好的 Service 來取得一些額外的資訊,剛好專案裡面使用到了 Autofac 作為 DI 的容器。 這篇文章會展示如何在 Validator 中注入其他 Service。 環境 Visual Studio 2017 ASP.NET MVC 5 專案 ......

S.O.L.I.D 物件導向設計原則 - LSP (Liskov Substitution Principle)

Subtypes must be substitutable for their base types. (出自 Robert C. Martin aka Uncle Bob) 翻譯:基底類別應該要能夠被他的衍生類別給替代而不影響原本的功能 在今天的這個主題裡面我將要用實際例子來說明何謂 LSP 原則,也就是 里氏替換原則 經典範例 矩形 v.s. 正方形 在數學中我們可以知道 正方形 ......

S.O.L.I.D 物件導向設計原則 - OCP (Open-Closed Principle)

對修改封閉,對擴充開放 接下來講到第二個物件導向的設計原則 OCP 或稱為 開閉原則,以往我們在幫系統加上 Log 的時候,會有檔案類型的Log、資料庫類型Log、甚至只是單純在Debug時呈現在Console的Log。 這些都是儲存 Log 的方式,可是我們要怎麼樣在程式裡面完成這件事情,以下請看第一個例子 第一個例子 123456789101112public class Logge......

S.O.L.I.D 物件導向設計原則 - SRP (Single Responsibility Principle)

我很不會說話,但是我很實在 前言 第一次寫到這個物件導向設計原則的主題,我想到的是上面那一句廣告的台詞,因為 S.O.L.I.D 原則本身光看字面你可能還無法了解他代表的意義,最好的方式應該是將這幾個原則實務的應用到專案上面,你就能夠感覺到 SOLID 原則 實在 的地方。 首先我們討論到單一職責原則,以下會使用比較貼近生活的例子來讓大家有一點感覺。 SRP (Single Respon......

如何在 Visual Studio Team Service 設定自動建置及佈署

前言 還記得以前在進行專案的時候,開發到一個段落客戶會要求看目前開發的狀況,我們通常都會手動的去做建置以及佈署的動作,這樣的動作對各位來說一天做個三次五次還可以,不過只要你一天需要做個二十幾次,你可能就會覺得很浪費時間。 今天這篇的主題就是帶著大家怎麼樣透過 Visual Studio Team Service (aka VSTS) 來幫助我們做到自動建置以及自動部署,讓各位的生命浪費在美好......

控制反轉(IoC) & 相依性注入(DI)

前言 記得幾年以前還在當小小碼農的時候,曾經無數次為了公司趕上線寫過類似這樣的程式 Television.cs 1234567891011public class Television{ public void Open() { Console.WriteLine("電視機打開了"); } public void Close() { C......