架構師 (Architect) 的角色

之前其實就有想寫這一篇,但是因為很忙而擱著,今天看到了某些網路文章,才讓我起意把這篇補起來。早期我寫了一系列關於架構師先決條件的文章 "邁向架構師的暖身運動",簡單說明了怎麼由架構的角度去思考系統設計的方略,今天就用這篇文章將它做個總結吧 (謎之音:其實是你自己懶吧)。

...繼續閱讀 »

SQL Server 的 ORDER BY 兩三事

  • 3606
  • 0

SQL 的 ORDER BY 會執行資料的重新排序,然後輸出給上層查詢或輸出給用戶端,開發實務上 ORDER BY 的情況非常常見,就跟呼吸一樣自然,但是 ORDER BY 對一個設計不良的資料庫可以說是一個大災難,因為它排序的對象是結果集,若結果集愈大,ORDER BY 會拖慢效能,但適當的設計可以減少 ORDER BY 對效能的損耗。

...繼續閱讀 »

再論 Delegate 與 Lambda

Delegate 和 Lambda 的概念在 2008 年就出來了,Delegate 更是最早最早 (.NET 1.0) 時就已經有的概念,隨著技術的演進,Lambda 讓 Delegate 變得更好使用也更容易發揮,但似乎有些人不這麼認為,所以我還是再講一些吧。

...繼續閱讀 »

[License] 淺談軟體開源的授權條款

開放原始碼 (Open Source) 早已成為推進資訊科技進步的主要動力來源,且也是出自許多在世界各個角落高手為持續帶動資訊科技進步的貢獻,然而有些時候在取用或在使用這些開源專案的成果時,會不會有可能不小心誤觸了某些陷阱? 這或許是所有軟體開發者都要關注的點。

...繼續閱讀 »

[.NET][Design Patterns] 無辜的 Repository Pattern

因為最近分層架構的流行 (拜三隻豬之賜?),愈來愈多人談論起 Repository 的設計,也開始有人認為 Repository 無用,說實在的,Repository 有用於否,存乎一心,當你認為它有用時,隨手寫了它也不會覺得奇怪,但如果一開始就認為它是多餘的,就算人家給你程式產生器,你還是會認為它是多餘的。

...繼續閱讀 »

[.NET][Database] 資料庫中的 NULL 值

在資料表結構 (table schema) 中,每個欄位除了基本的欄位名稱、型態、大小等資料外,有一個有趣的欄位很特別,就是是否允許 NULL,NULL 這個東西對程式設計師來說是又愛又恨,有時會被它搞得嫑嫑的,但是它有時卻又是一個有必要的存在。

...繼續閱讀 »

[C#] 在 Visual Studio 2015 使用 C# 7

昨天在 "C# 7 不能編譯?" 一文的最後,我有提到不是一定要 Visual Studio 2017 才能使用 C# 7,只要 Microsoft.Net.Compilers 可以運作 (.NET 4.5.1 以上),就能使用 C# 7 快樂的寫程式,有朋友回應說 Visual Studio 2015 上使用 C# 7 ,Microsoft.Net.Compilers 已經升級到 2.0,但卻無法編譯... (這個問題要解決有個但書)

...繼續閱讀 »

[Azure] 以 Azure PowerShell 結合虛擬機器擴展集 (Virtual Machine Scale Set) 快速佈建相同環境的虛擬機器

Azure 在以前服務管理模式 (Service Management Mode) 下最大的問題之一就是無法快速佈建大量的虛擬機器,這個問題雖然在管理機制升級到資源管理模式 (Resource Management Mode) 後似乎有改善的狀況,但在 ARM 初期,只是改變了 VM 各資源的組成方式,沒有真正解決快速部署的問題,這個問題一直到 Azure 發表了虛擬機器擴展集 (VMSS) 後才真的得到解決,不過網路上用的幾乎都是使用 Resource Template 的作法,這篇文章要教授如何使用 Azure PowerShell 來做到這件事,而且還是用自訂的作業系統映像,而不是平台本身的。

...繼續閱讀 »

[Visual Studio] 編製 Visual Studio 2017 的離線安裝媒體

Visual Studio 2017 將於 3/8 零時 (台灣時間) 正式發表,在發表的前數個小時,MSDN 訂閱者下載區已經有 Visual Studio 2017 的安裝程式放上去了,不過並沒有發布 ISO 檔案,Visual Studio Community 2017 也是,因此特別說明如何建立一份可離線安裝 (Offline Installation) 的媒體,以利在沒有網路時進行安裝。

...繼續閱讀 »

[Visual Studio] 我的 Visual Studio 20 年

今年是 Visual Studio 的二十歲生日,要說資深的 Visual Studio 愛用者,我應該也可以算一個吧,在我最早開始學習程式開發時,Visual Studio 都還沒出來喔。既然 VS 20 歲了,那我也稍微的寫點文字來慶祝一下 VS 20 週年吧。不過因為我比較擅長實事描寫,要看逢迎拍馬內容的就甭進來了。

...繼續閱讀 »

[.NET] 關於晚期繫結 (Late Binding)

晚期繫結是一種程式語言與作業系統的手法,用意在於避免因為編譯時期的型別檢查機制,導致程式員在編寫程式時,需要處理過多的型別資訊 (Type Information),晚期繫結可以有效的處理在平台之間型別資訊的隔離,讓編譯出來的程式可以在特定的平台之間執行,而不需要被型別資訊綁住,不過也不能過度濫用,除非原生平台就是要用晚期繫結 (例如 JavaScript)。

...繼續閱讀 »

[ASP.NET MVC][Entity Framework] Entity Framework 的 TPH 會額外產生表格?

這是一個很有趣的問題,當初我在編寫 ASP.NET MVC 5 網站開發美學 CH4 (4.6.5) 的實作繼承時,使用的是已有 Database 和 Table Schema 的狀況,沒有注意到 Database Creation 時的狀況,這個問題是由讀者反應,我做了個實驗才發現這個問題,但解決方法也很簡單,在此留下記錄以供其他讀者查閱。

...繼續閱讀 »

[碎碎念] 軟體架構能否實現,真正的問題在成本。

現在網路和分享這麼發達,你可以很容易的搜尋到很多公司或人分享出來的系統架構,舉凡 Stackoverflow、淘寶、百度或是其他公司實作一個解決方案的整體架構,用來當參考架構 (Referential Architecture) 是很棒的藍圖,不過它就只是個 "藍圖",你所不知道的是他們花了多少錢去做,或許一個人用雲端也可以做到,但是並沒有減少它應有的成本,就像你不可能妄想用一台 VM (裡面即使跑得動十萬台 Docker Container) 來服務一億個使用者一樣。

...繼續閱讀 »