2018年3月29日 星期四

AZURE storage blob 無法直接在瀏覽器上觀看圖片


以前就很納悶為什麼放在Storage上的圖片有有時候是下載有時候是瀏覽在今天發現一個有趣的東西分享給大家

我使用 AZURE storage 管理軟體:


設定應該有很多人有說我就不寫了



可以看到型態有兩種,一種是image/jpeg一種是application/octet-stream簡單測試直接使用連結看結果如何

2018年3月27日 星期二

C# Cache 用法介紹及實作測試


C# Cache 介紹 及實作測試





初衷
最近因為在web api 效能上遇到了一些瓶頸,就去尋求簡單可提升效能,就想著可以把一些設定檔及不常異動的資訊放入cache內,可以來降低IO和資料庫的負擔,然後發現其實我對cache非常的陌生,就想說來練習和整理紀錄一下此次所學習的東西,順便練習看一下MSDN(因為我國文太差所以對我來說是文言文等級的)。

結論
Cache這個東西感覺就像是火焰(沒有形體有難以追蹤),有足夠的了解及安全事項有做好,應該是很好的幫手可以拿來取暖、煮飯、燒熱水洗澡,可是如果隨便使用就跟在程式中點了一把火一樣,一不注意就........燃燒吧~火鳥~把程式全部燒光光吧~


Cache練習 Source Code(GitHub): https://github.com/ZeroTiem/CacheExercise


Cache的選擇
我在 .NET Cache 資訊時非常的頭大,因為好像有很多種,對於要用哪一種讓我傷透腦筋,所以我就簡單的查詢一些資訊來做個簡單的差異表,看看差別在哪裡應該怎麼選擇。

.NET快取差異對照表

Cache
MemoryCache 
ObjectCache
MDSN
實作 Web 應用程式的快取。 這個類別無法被繼承。
命名空間:   System.Web.Caching
組件:  System.Web (於 System.Web.dll)

繼承階層
  System.Web.Caching.Cache
表示可實作記憶體內部快取的類型。
命名空間:   System.Runtime.Caching
組件:  System.Runtime.Caching (於 System.Runtime.Caching.dll)

繼承階層
    System.Runtime.Caching.MemoryCache
表示物件快取,並提供基底方法和屬性存取物件快取。
命名空間:   System.Runtime.Caching
組件:  System.Runtime.Caching (於 System.Runtime.Caching.dll)

繼承階層
  System.Runtime.Caching.ObjectCache
整理重點
  • .NET WEB應用程式
  • .NET Framework 3.5 或之前版本為目標
  • 只能存在記憶體中可/集中式
  • 任何.NET 應用程式
  • .NET Framework 4.0 或之後版本為目標
  • 能存在記憶體中以外的地方/分散式
  • 任何.NET 應用程式
  • .NET Framework 4.0 或之後版本為目標
  • 能存在記憶體中以外的地方/分散式
個人理解

版本比較舊只能支援在WEB 應用程式,因為只能存在本機的記憶體中,所以無法支援分散式架構。
新版的快取機制可以支援在所有.NET 程式中,需要自制一些快取機制可以用他來寫,因為可以儲存於本機外的記憶體所以也支援分散式架構。
提供標準的介面來統一快取機制的操做,所以他只是抽象的介面底層還是實作MemoryCache,也因為如此MemoryCache有的特性他也有,也提供了很多方法可以使用 。(也因為底層實作是MemoryCache所以應該也會支援分散架構)。

Visual Studio 2017 程式碼度量/程式碼複雜度


​使用Visual Studio 2017內建程式做程式碼度量

以前常常聽到很多大大們再說什麼程式碼複雜度、循環複雜度,之後有實際接觸算是在上91哥的TDD課程才更有比較有概念,這東東到底是要做什麼用的,對我來說比較像是幫自己的程式碼做個簡單的間康檢查,可以作為一個依據來改善程式碼品質的一種方法,可是其實都一直沒有實際去進行過程式碼度量,在今天風和日麗好天氣下,決定來跑一下程式碼度量,也因為在開發初期程式碼還不多看了心情好,會覺的自己好棒棒~


說明程式碼度量資訊結果

可維護性指標
算出介於 0 到 100 之間的指數值,代表維護程式碼的相對難易程度。 值愈高表示可維護性愈佳。 色彩編碼分級可用來快速識別程式碼中的問題點。 綠色等級介於 20 和 100 之間,表示程式碼的可維護性良好。 黃色等級介於 10 和 19 之間,表示程式碼的可維護性適中。 紅色等級是介於 0 和 9 之間的等級,表示可維護性低。
循環複雜度
測量程式碼在結構上的複雜程度。 建立此複雜度的方式是計算程式流程中不同程式碼路徑的數目。 控制流程較為複雜的程式需要執行較多的測試,才能達到正確的程式碼涵蓋範圍,而且比較不容易維護。
繼承深度
指出延伸到類別 (Class) 階層的根 (Root) 的類別定義數目。 階層愈深,可能愈難找出定義與/或重新定義特定方法和欄位的位置。
類別結合程度
透過參數、區域變數、傳回型別、方法呼叫、泛型或樣板具現化、基底型別、介面實作、外部型別上定義的欄位以及屬性修飾等,測量特殊類別的結合程度。 良好的軟體設計應指定聚結性 (Cohesion) 高但結合程度 (Coupling) 低的型別和方法。 結合程度高表示設計不易重複使用,因為這種設計包含對其他型別的許多相依性。
程式碼行數
指出程式碼中行數的約略值。 這個數目是以 IL 程式碼為依據,因此不是原始程式碼檔案中精確的行數。 如果數目非常大,表示型別或方法嘗試執行的工作可能過多,而應該分割工作。 這也表示該型別或方法可能難以維護。

2018年1月17日 星期三

在非Web 應用程式 手動加入 System.Web.Script.Serialization JavaScriptSerializer

起源:今天要在ConsoleApp 使用System.Web.Script.Serialization 發現找不到,後才在餵狗(Google)後才發現原來他在System.Web.Extensions裡面



2018年1月16日 星期二

Web Deploy 安裝失敗 在 IIS 不會出現 Deploy(佈署) 選項/IIS Web Deploy's “Import/Export Application” Action Missing?

原因:今天在Windows Server 2012 R2 上 使用 Web Platform Installer 安裝完 Web Deploy 時發生了一個詭異的現象就是發現在IIS站台上並沒有出現Deploy(佈署)的選項,最後我依照了參考資訊成功的呼喚出IIS上面的Deploy選項。

2017年12月21日 星期四

C# ASP.NET MVC 手動將 Identity 加入現有專案


原因:我發現其實手動加入Identity功能的機率實在是蠻高的,每次做一次就忘記一次所以就寫一篇來幫助自己快速回憶跟製作。


解決'Microsoft.ACE.OLEDB.12.0' 提供者並未登錄於本機電腦上的問題

  解決'Microsoft.ACE.OLEDB.12.0' 提供者並未登錄於本機電腦上的問題 環境 Server:Windows Server 2012 R2 Debug IDE: VS2019 Step1 確認是否有安裝Microsoft Access Dat...