系列

2018年3月29日 星期四

HTTP 錯誤 404.3 (MIME) 對應原則


因為網頁伺服器上設定的多用途網際網路郵件延伸標準 (MIME) 對應原則,而無法提供您要求的網頁。如果此網頁為指令碼,請新增處理常式,而且如果它是應該要下載的檔案,請新增 MIME 對應。

控制台->應用程式->新增移除程式->


IIS Cache-Control 暫存/緩存控制 設定


Cache-Control

有遇到客戶的網站會一直破圖,可是使用chrome無痕模式就沒有破圖現象產生,因此懷疑是Cache沒有期限造成client緩存資料都已經清除掉了,卻還是不更新資訊。

使用Fidder$查詢圖片資訊發現沒有Cache相關的設定在裡面


Windows10 安裝 Hyper-V



安裝 Hyper-V
Hyper-V 是 Windows 內建的選用功能,Hyper-V 並沒有可供單獨下載或安裝的元件。 有幾種方式可啟用內建的 Hyper-V 角色。

npm ERR! code ELIFECYCLE




npm ERR! code ELIFECYCLE
npm ERR! errno 2

.01 Azure 設定語言


點擊上方列的齒輪可以設定語言、效果及主題顏色的相關規定(像我個人喜歡設定成黑色,因為比較帥氣XD)。

.0 開始使用 Azure


註冊Azure 帳號

免費帳號

點選開始免費使用

.03 Azure 服務 共用&分享 權限 給其他帳號



原因:之前客戶有需求需要管理到自己的Azure服務,可是我手上的Azure帳戶包含其他客戶的服務,我總不能都給他那位需要管理自己Azure服務的客戶吧~所以只能Google(餵狗)加上自己嘗試後最後革命成功。

切到訂用帳戶上

如何設定預設 Azure 訂用帳戶


  1. 在 Azure PowerShell 主控台或 Windows PowerShell ISE 中,輸入下列命令,將您的 Azure 帳戶新增到本機的 PowerShell 環境:
    Add-AzureAccount

Azure Application Insights Analytics 簡單分析語法


//所有瀏覽器所佔%數 圓餅圖
pageViews | summarize count() by client_Browser
| extend DurationBucket = tostring(client_Browser)
| project  count_, DurationBucket
| render piechart

//pageViews 瀏覽器統計
pageViews
| summarize count() by bin(duration,20),client_Browser
| extend DurationBucket = tostring(duration)
| project client_Browser, count_
| render piechart

//pageViews 作業系統
pageViews
| summarize count() by bin(duration,20),client_OS
| extend DurationBucket = tostring(duration)
| project client_OS, count_
| render piechart

//pageViews國家
| summarize count() by bin(duration,20),client_CountryOrRegion
| extend DurationBucket = tostring(duration)
| project client_CountryOrRegion, count_
| render piechart



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 程式碼為依據,因此不是原始程式碼檔案中精確的行數。 如果數目非常大,表示型別或方法嘗試執行的工作可能過多,而應該分割工作。 這也表示該型別或方法可能難以維護。