Duran 的技術冶煉廠

熱門文章 (Popular Post)

By :

 因為工作關係,遇到有個 App Services 需要從 Azure Key Vault 上取得連線字串與秘密 (Secrets) 需求。實作的方式相當多種,這次是以角色為基礎的存取控制 (Role-Based-Access-Control) 方式來存取 Azure Key Vault,達到可以不需要儲存任何 秘密資訊 web.config 、 appsetting.json 寫死程式裡,只有該授權的角色可以取得秘密資訊的效果。本篇文章若有錯誤或任何建議,請各位前輩不吝提出。




By :
在 Visual Studio 2017/2019 後的版本,增加 Performance Profiler (效能分析器) 功能,讓您可以在開發階段確認程式效能,避免程式上版至正式環境後才發現效能佳的情況發生。效能分析器可以收集的指標相當多,包含 
  1. .NET Async (.NET 非同步)
  2. NET Counters (.NET 計數器)
  3. NET Object Allocation Tracking (.NET 物件位置追蹤) 
  4. CPU Usage (CPU 使用量) 
  5. Database (資料庫) 
  6. Events Viewer (事件檢視器) 
  7. Memory Usage  (記憶體使用)
  8. Application Timeline (應用程式時間軸)
  9. 與 Instrumentation (檢測設備)






By :

 因為工作的關係常常需要搭乘高鐵,累積了不少的點數,這些點數可以用來兌換 車票 與 商品 (詳細兌換內容可以參考 高鐵會員TGO高鐵會員TGO點數 365)。在累積紅利點數前,記得先申請會員,在購買車票、回數票 與 月票時輸入會員編號即可累積。 整體算起來回饋雖然不多 (約等同票價 9 折),但常常出差的朋友,可以考慮累積點數來兌換車票、商品過過癮。


想要累積點數,記得先加入會員


Tag : , ,

By :

 終於到 如何為 ASP.NET Core 與相依服務建立執行狀態檢查 系列文章最後一篇:自訂 Health Checks 監控 Shared folder 狀態。 若讀者有閱讀原始碼: AspNetCore.Diagnostics.HealthChecks(GitHub) 或微軟文件:ASP.NET Core 中的健康狀態檢查,應該會發現 HealthChecks 提供非常多的套件讓你監控多種服務運作狀態。但偶有些想要監控的服務沒有套件支援,那該怎麼辦呢 ? 在這一篇文章我們會給簡單的範例,說明如何自訂方法來監控分享資料夾 (Shared folder) 是否可用。


本篇文章範例位置:HealthCheckDemo ,若覺得講解內容過於陌生,建議從第一篇開始閱讀




By :
ASP.NET Core Health Check 也能與 Azure DevOps Release 進行整合,於佈署前確認相關服務是否正常。若相依服務有運作失敗的情況,會不允許進行佈署,藉此可以先排除有問題的服務,再進行上版,降低問題複雜度。 


注意:因應佈署策略不同,可能會進行停機佈署,須注意不要將正常停機程序,因為Health Check變成阻礙佈署的絆腳石





By :
系統維運內對於網站狀態監控是不可或缺的,雖然建立了 heartbeat 與 status 提供監控系統做即時監控,但沒有及時的處置,仍會出現服務中斷的時期,進而可能損及企業利益 (如:影響交易)。本篇文章透過 Azure Load Balancer (負載平衡) 與 ASP.NET Core HealthChecks 建構相依服務監控與即時切換機制。本篇文章若有錯誤或任何建議,請各位先進不吝提出。


註: Azure Application Gateway 與 ASP.NET Core HealthChecks 也能進行相依服務監控





By :

透過 HealthChecks在監控各種服務時,您能為每個服務加上標籤 (Tags),後續自訂 Health Check Response 時即可透過這些標籤進行過濾動作,只取得/排除特定標籤服務運作資料。當您遇到下列者幾種情境,HealthChecks 的 Tags 可能會幫上不少忙:

  1. 管理人員/監控軟體 會將服務做分類,會比較方便進行監控與釐清問題,像是以網站/資料庫/儲存體分類
  2. 依據權限分類,DBA 只能看見目前 資料庫 運作情況,而維運人員可以看見所有服務運作情況



By :

 經過前面三篇文章的介紹,我們已經知道如何安裝設定 HealthChecks、監控多個相依服務 與 自訂 HealthChecks 呈現結果(呈現每個相依服務)。在這一篇,我們將簡單介紹如何透過相關套件,讓相依服務運作狀態以圖形化介面呈現。


本系列實作的範例程式:HealthCheckDemo




By :

透前一篇: Health Checks 監控 SQL Server, WebAPI 與 Redis 健康狀態, 你大概已經知道如何監控不同的服務,但總會懷疑為什麼只能取的整體的狀態態,我們能不能看到每一個服務的狀態呢? 答案是肯定的,本篇文章將簡單介紹如何自訂 Health Checks Response,讓所有的服務運作情況一目了然!


那有美美的圖形介面給老闆看? 答案是有的,在下一篇:ASP.NET Core Health Checks UI 圖形化介面呈現服務健康狀態 會詳細說明。





By :

 上一篇文章 ASP.NET Core Health Checks 安裝與設定 中我們簡單說明如何設定並回覆目前網站運作狀態。但 HealthChecks 套件不僅僅如此而已,還能監視 SQL Server(資料庫), Redis(快取服務) 與其他 WebAPI 營運狀態。本篇文章將分別介紹如何設定這三項服務監控,若有錯誤或任何建議,請各位先進不吝提出,謝謝。


本系列實作的範例程式:HealthCheckDemo



By :
相對於使用本機快取與資料庫快取,個人偏愛使用額外的 Redis 服務作為分散式快取機制。一來不會與本機網站與服務共用資源,在要求效能的情況下相互影響,二來未來若有需要,直接作為為分散式架構使用。另外,若不想要自己維護 Redis Server,您可以考慮使用 Azure Cache for Redis,快速建立又容易維護。 本篇文章將簡單說明如何在 ASP.NET Core / ASP.NET 5 上使用 Redis Cache,若有錯誤或任何建議,請各位先進不吝提出。





By :

監控在重要系統維運是非常重要的一環,隨時注意 網站服務伺服器資料庫 運作是否正常。 在ASP.NET Core 2.2 - 3.1 有個相當好用套件 - HealthChecks,讓開發人員可以透過撰寫簡單設定語法建立健康檢查機制,確認目前服務營運是否正常。他支援的服務相當的廣,除了簡單的 WebAPI、SQL Server,還支援 RabbitMQ、Redis、Azure Service Hub、Kafka、MongoDB、Kubernetes、SignalR...等多項服務 (可以參考 AspNetCore.Diagnostics.HealthChecks - GitHub)






By :

前陣子協助客戶啟用 SQL Server 保存工作階段 (SessionState) 狀態資料過程中,客戶提到 正式環境(Production) 有啟用 AlwaysOn 可用性群組。 而在 啟用 SQL Server 保存工作階段 所建立的資料庫,會建立 SQL Agent Job,定期刪除過期資料 (DeleteExpiredSessions)。 因為 Secondary replica database 為 ReadOnly,故會得到錯誤訊息:


Failed to update database "ASPState" because the database is read-only


透過 SSMS 展開該資料庫 (預設名稱為 ASPState,若建立過程中,有自訂名稱則請選擇正確的資料)。在 SQL Server Agent > 作業 (Job) >看見 ASPState_Job_DeleteExpiredSessions 作業。




By :
網站應用程式經常使用工作階段 (Session) 來記錄一些相關資訊,方便在某些情境上使用。在 IIS,保存 Session 有多種方式,包含 處理中 (InProc)自訂 (Custom)狀態伺服器 (StateServer)SQL Server ...等幾中方式 。在單一 IIS 伺服器情況,我們會設定為 處理中 (InProc),因為沒有負載平行 (Load balancer) 需求,所以不需要將 Session 取出與其他 IIS 進行分享。

但在有負載平行架構下,倘若沒有將 Session 取出並進行管理,會發生無法取得 Session 的情況下,網站運作即可能發生問題。常見的 SessionState  (工作階段狀態) 有:
1. 狀態伺服器:透過 ASP.NET State Service 來儲存 Session ,啟動時需要確認此服務有啟動
2. SQL Server:透過 SQL Server 來儲存 Session,理所當然,你需要一台 SQL Server
3. 自訂:常見是透過 Redis 來作為 Session 儲存狀態,你需要透過套件與一台 Redis Server

這些方式各有優、缺點,有些效能就好;有些則可以儲存大量 Session;有些則需要額外服務才能使用。如何使用則依據您的需求而定。本篇文章將簡單介紹在 在 IIS 上如何使用 SQL Server 保存工作階段,若有任何錯誤或建議,請各為前輩不吝提出,謝謝。






By :

 最近常常遇到運行一段時間的 Windows 虛擬機器 無法遠端連線的情況發生,這裡提供一些常見的情境(忘記密碼內部發生錯誤) 與 解決方法給有興趣的朋友參考。 


注意:本篇所提供方法僅供參考,並不為管理上與使用之資訊安全性背書,對於任何使用或引用資料引致之損失或損害,概不負責。用遠端連線有風險,建議若非必要,請使用 Azure 堡壘 (Azure Bastion) 或其他更安全方式進行管理



By :

因為工作關係,需要驗證 Azure DevOps Server 與 GitLab 之間,能不能互相整合 repositories,開啟這一篇安裝 GitLab 之旅,並簡單紀錄一下如何快速在 Azure 環境安裝 GitLab 流程,提供習慣使用 GitLab,但又沒有伺服器 (或不想花時間安裝 linux) 的團隊參考。本篇文章若有錯誤或建議,請各位前輩不吝提出。






Tag : , ,

By :

 近年來, Markdown 語法越來越熱門,他的易讀、快速撰寫的特性深受許多人喜愛,是一種網路內容的寫作、上稿用語言。久而久之,支援 Markdown 的編輯器也越來越多。你知道嗎 ? Notepad++ 除了比對功能,也可以支援 Markdown 檢視 與 HTML 轉換唷 !







By :

前言

Azure DevOps Agent On Linux 與其他 CI/CD 一樣,安裝相當簡單,且可以安裝在 Windwos/macOS/Linux 作業系統上。有很多朋友問到 Linux Agent 與 Windows Agent 有什麼不同,這裡簡單條列一些特性,讓大家理解要哪一種比較適合自己

  1. Linux Agent 一般情況下,執行速度較快,且 Azure Linux VM 較便宜
  2. Windows Agent 一般來說較為安全 (對於資安完全沒經驗的朋友,使用 Windows 會輕鬆一點)
  3. 若您的程式是 .NET Solution (非.NET Core),只能在 Windows 作業系統進行 Build,請選擇 Windows
  4. Java ...等具跨平台特性 Solution,可以在 Linux 與 Windows Agent 執行
  5. 找一個您熟悉的平台,安裝套件時比較不會這麼辛苦


本篇文章將一步步說明如何安裝與設定,給有興趣的朋友參考。若有任何錯誤或建議,請各位前輩不吝提出,謝謝。

若您想要知道如何安裝 Agent  在 Windows 上,請參考這篇:
Azure DevOps Agent 安裝流程說明 (Install Windows Agent)





By :

過去在開發 ASP.NET 網站應用程式時,若想要使用者強制透過 HTTPS 瀏覽網站,我們會使用 IIS Rewrite Module 來進行轉址。通常會在首頁、註冊/登入、付款...等,網頁進行 Rewrite 進而確保安全性。 在 ASP.NET Core 專案中,開發人員透過現成的 Middleware ,可以更輕鬆的控制路由。本篇文章將簡單介紹如何設定自動將使用者從 HTTP 轉向 HTTPS,若有任何錯誤或建議,請各位前輩不吝指教,謝謝。 


註:本文章環境為 .NET Core 3.1





Tag : ,

By :

最近因為協助一些對外活動,需要帶一些 Azure Workshop,簡單整理一下如何啟用 Azure 免費試用帳號步驟給學員,順手記錄在部落格,提供給有興趣的朋友參考。

免費帳號可以提供什麼? (詳細說明可以參考Azure Free Trial 官方網站說明)

  1. 部分服務12 個月免費,部分 低層級服務少量儲存體、流量 免費
  2. 部分產品永久免費 (注意:某些產品搭配的服務仍需要計費)
  3. 30 天內 6100 元點數

 

下列是注意事項:

註冊雲端服務需要信用卡
在 30 天結束前 或 用完 6100 元,帳戶與產品會停用
別擔心,除非您點選升級付費專案 (隨付隨用),並解除消費限制,才會產生費用



以下是申請步驟 (2020 年 10 月更新)

Step 1.  連結到 https://azure.microsoft.com/zh-tw/free/ ,點選開始免費使用



Tag : ,

By :

因為工作的關係,客戶常常會遇到舊有網站安全性不佳,被要求改善的情況。最基本的包含 停用 SSL 2.0、SSL 3.0,只能使用 TLS 1.2;另一方面,站台所使用的演算法可能也面臨安全性較低的情況,如 停用 DES、RC4 ..等。

您想知道自己的網站是否安全嗎? 當您辛苦改善這些問題後,如何確認沒有問題?   其實您可以透過 SSLScan 工具掃描自己的網站。 您可以在 GitHub 找到 sslscan 開源專案,檢視其相關內容。 接下來,我們將簡單介紹如何在 Windows 環境與 Linux 環境下使用 sslscan 掃描您的網站。



By :

重要提醒 1:此工具並非萬能,而是透過工具協助您將 .NET Framework 轉換成 .NET Core,大多數的專案或套件都需要再調整

重要提醒 2:此工具有可能直接進行轉換,若遇到無法轉移的程式會中斷且發出錯誤,雖然工具對於修改過檔案會轉換成.old 檔案,但請務必一定要備份原程式!! 

嘗試進行轉移前,可以考慮使用 .NET 可攜性分析器檢視可能轉換失敗的部分,請參考:.NET Portability Analyzer 介紹



安裝


1. 請先下載並安裝 .NET Core SDK 3.1

2. 開啟 PowerShell 或 cmd,透過下列指令安裝 try-convert




By :

介紹

APPLY 主要用於將某一個子查詢和一個 資料表函式 (Table Function) 做 JOIN 運算,有別於 JOIN 運算,APPLY 不使用 ON 選擇關聯欄位,則是將欄位帶入方式使用。子查詢結果會被當作為 left ,而 資料表函式 當作 right 進行運算。


CROSS APPLY 和 OUTER APPLY 是從 SQL Server 2005 新增的語法,其使用時資料庫相容層級要90。這兩個語法效果等同於 INNER JOIN 與 LEFT OUTER JOIN。



這邊舉一個例子來看看 (範例有一點差,但我們直接看效果)

Employee 資料表內容如下

Id 
Name
Country
1
Duran
Kaohsiung
2
Owen
Taipei
3
Maze
Taichung
4
Bert
Taipei


Dept 資料表內容如下:

Id
Name
Country
1
PM
Taipei
2
DEV 
Taichung
3
DESIGN
Tapei
4
DEV
Taipei
5
SUPPORT
Taichung
6
SUPPORT
Tainan
7
IT
Kaohsiung



首先我們先建立資料表函式


我們使用 CROSS APPLY 語法並看其結果


Tag : , ,

By :

前言

先前對於 ISOLATION LEVEL 非常的陌生,直到這次公司專案遇到資料讀取/更新相關需求才開始認識ISOLATION LEVEL。當資料準確性(像金額資料)要求相當高的情況下,ISOLATION LEVEL 就必須更加嚴謹,但相對的效能就會有所影響,魚與熊掌,不可兼得。




介紹

TRANSACTION ISOLATION LEVEL 大致上可以分成四種:

1. READ UNCOMMITTED

寬鬆級別:A 交易更新但未確認資料,B交易不能更新只能讀取(直到A交易提交後),確保交易更新資料不會有問題。


2. READ COMMITTED

比較嚴格一些:A 交易更新並確認資料前,其他交易不能讀取該資料

官網說明:READ COMMITTED 隨著 READ_COMMITTED_SNAPSHOT 設定而異,請參考最下方餐可考資料


3. REPEATABLE READ

更嚴格一點的限制:讀取中資料會被鎖定,確保同一筆交易中的讀取資料必須相同


4. SERIALIZABLE

最嚴謹的限制:A 交易讀取時,B交易更新要排隊;A交易更新時,B交易讀取與更新都需要排隊


語法:

SET TRANSACTION ISOLATION LEVEL
{ READ UNCOMMITTED  | READ COMMITTED | REPEATABLE READ | SERIALIZABLE }


使用方法:

SET TRANSACTION ISOLATION LEVEL READ COMMITTED
SELECT * FROM TableA




測試

我們使用 Study4 Activity 資料表進行測試,我們挑選 Id = 13的資料進行測試


By :

前言

個人接觸到動態組合與執行 SQL 方法,主要的情境在執行 SP 階段,需要動態取得的不同資料庫名稱 (同主機),執行跨資料庫存取資料的時候需要動態語法。實際上若並非必要,個人不太喜歡動態組合語法,主因是非常的難以測試,尤其是執行非常長的語法,讓除錯的困難度增加不少。


我們先來介紹簡單使用 sp_executesql,我們的情境案例為替換掉資料庫名稱即可。首先要執行的語法設定為字串




Tag : ,

By :

趁著連續假期,稍微整理一下常被詢問的問題,發現 "在 IIS,如何對於單一網頁設定動態 IP 限制" 或 "如何對於單一網頁自訂動態或靜態壓縮"。在這篇文章,我們簡單說明如何對於單一網頁、檔案進行唯一的設定。


在 IIS 管理員內,我們能夠過 內容檢視 (Content View) 與 功能檢視 (Features View) 兩個功能來對於單一網頁進行設定,步驟如下:


Step 1. 開啟 IIS 管理員 (IIS Manager),從左邊選單點選要設定的站台或應用程式,點選下方內容檢視。


Tag : ,

By :
若有靜態網站需要部署至線上並進行測試,Firebase Hosting 是一個不錯的選擇。簡單整理一下整個執行流程,提供給有需要的朋友參考,若有錯誤或任何建議,請各位先進不吝提出。整體操作流程如下:

1. 已有 Firebase 專案,或建立一個新專案 (請參考 Firebase 介紹與建立專案)



確認並安裝 Firebase CLI

在開始之前,你需要先確認是否有下載並安裝 Firebase CLI,安裝方式如下:

1. 直接下載安裝檔案進行安裝 (下載二進制)


By :

最近遇到許多想要從 .NET Framework 遷移至 .NET Core 的案子。雖然許多客戶想要按有一個按鈕,按下後即可直接升級,但現實往往不是這麼理想。轉移工作需要進行事先評估與妥善規劃,多數情況需要適時的重構,才得以順利的轉移。本篇文章簡單介紹轉移前的評估工作:透過 .NET Portability Analyzer (.NET 可攜性分析器)  進行轉移工作評估。若有錯誤或任何建議,請各位先進不吝提出。


若您已經分析完成,想要嘗試使用工具進行轉換,請參考:透過 try-convert 工具將 .NET Framework 轉移至 .NET Core


Step 1. 首先,我們需要在 Visual Studio 2019 上安裝 .NET Portability Analyzer,擴充功能 (Extension) > 管理擴充功能 (Mange Extension)


By :

 最近因為工作關係,需要幫客戶處理大量 csv 檔案。因為 csv 檔案不容易閱讀,客戶希望透過 Excel 開啟並檢視,沒想到卻產生一堆亂碼。 主要原因是我們的 csv 檔案為 UTF-8 格式,直接使用 Excel 開啟,內容會變成亂碼。本篇簡單紀錄如何匯入 UTF-8 格式文字檔案至 Excel,並且解決亂與編排問題。



Tag : , ,

By :
最近在撰寫網站時,需要以列表方式呈現,趁這個機會簡單筆記一下 ul, ol, li 與 dl 使用方法與呈現效果,未來有需要的時候可以使用,也提供給有需要的朋友參考。

若想要呈現的效果為符號 ● ,則你可以透過 <ul>  與 <li> 語法達到效果,語法如下:


其呈現的效果如下:
Tag : ,

- Copyright © Duran Hsieh @ Duran 的技術冶煉廠 - Date A Live - Powered by Blogger - Designed by Johanes Djogan -