雖然,已經用C#開發多年,但是每次看到這類型的學習資源,總是會再看一遍,每次看都可以額外學習到一些新的知識和重溫被遺忘的段落。畢竟,很多時候,在開發上已經知道是要怎樣做,但要去講出來為什麼要這樣做,也無法說出為什麼,除非是長期在做這方面培訓的講師。因此,每次透過這樣的基礎學習,總是學到不少。下面針對在這次學習的一些重點做一下整理,讓自己下次還可以保有印象

為什麼要強調資料類型?

資料類型在 C# 中扮演了重要角色。 事實上,與 Python 和 JavaScript 等其他語言相比,強調資料類型是 C# 其中一個重要的功能區別。 C# 的設計人認為,可以藉由「強制執行」資料類型來協助開發人員避免常見的軟體錯誤。

C#有這麼多可以選擇的資料類型,使用何種準則來為特定情況選擇正確的資料類型?在評估選項時,必須考慮數個重 …


I have previously shared how to use Azure in Industry 4.0. However, I think it is still necessary to define how to use cloud technology to meet the factory’s production process. Below is the article I once shared.

We can also come to understand the progress of the industry. There are many places where factories can be automated, but the most crucial thing in Industry 3.0…


在Azure上不管你是要查詢Azure Monitor內的資料,還是要查詢Log Analysis資料,甚至使用Azure Data Explorer查詢資料,都會用到一種共用的語言,叫做Kusto。

甚麼是Kusto,Kusto的概念類似於SQL,但其語法跟SQL是完全不同。但對於資料處理的概念很類似。Kusto是一種負責處理資料並傳回結果的唯讀要求。Kusto的應用大多數在做大數據的資料查詢,也通常稱為Kusto查詢,而且通常一般來說不會用Kusto去寫資料到數據源。

對於Kusto語法是採用易於理解、撰寫及自動執行所設計的資料流程模型,並採用純文字加以陳述,例如:下面這一段語法中,會有兩個Where條件,就不會像SQL一樣有規範Where是該要怎樣寫或是一定要放在那個位置

StormEvents  
| where StartTime >= datetime(2007-11-01) and StartTime < datetime(2007-12-01)
| project state,startime
| where State == "FLORIDA"

話說如此,但是,Kusto查詢使用的結構描述實體組織架構類似於 SQL 的階層:資料庫、資料表與資料欄位。在Kusto的資料流設計上,是透過資料集作為資訊流的方式進行。像是從資料來源開始 (例如:StormEvents),然後,使用分隔符號 (|)綁定資料後在做篩選資料,然後得到兩個欄位的資料集,再使用分隔符號 (|)綁定後,往下再進行資料篩選。類似這樣概念一層又一層返回的資料集結果後在做下一步的運算

Kusto 工具

說到要撰寫Kusto語言的工具,目前使用Visual Studio其實並不太好用,雖然,Visual Studio Code有相關的外掛可以用,但還是沒有這樣方便。因此,我們可以下載kusto.explorer工具協助我們撰寫Kusto語法,下載網址

安裝完畢的畫面


前一篇寫到[使用Azure Data Explorer探索資料]可以用Azure Data Explorer抓取Blob資料或是DataBase資料,算是可以異質資料庫整合的好服務。因此,想說如果這真的可以作為一個資料平台,那樣是否就可以透過Azure Data Explorer當作資料中台,對於儲存在雲端的各項資料都可以進行獲取呢?前一篇已經實作Azure Data Explorer抓取Blob,而除了在Web UI我們可以撰寫Kusto語法抓取與分析資料外,更重要我們也希望可以透過Application可以呼叫Azure Data Explorer後取的資料作為其他分析用途。

因此,就需要來使用C#透過Azure Data Explorer抓取Blob資料後並回傳分析結果

必須進行應用程式註冊動作

本身Azure Data Explorer並沒有提供類似Token或是金鑰模式直接可以進行呼叫它的服務本身,一般它提供的SDK的範例都還是在連線後還要輸入AD帳號密碼登入。但是,實際上應用程式端並不能有這樣行為模式,所以,必須透過AAD方式進行。因此,我們必須先註冊一個應用程式ID並讓它授權可以存取Azure Data Explorer。先到Azure Active Directory的應用程式註冊,註冊一個新的應用程式ID


之前寫了兩篇關於如何運用Azure ExpressRoute的文章,不過,因為測試不同ISP都要重新再來一次設定,這次就把從頭來過如何設定ER到後續可以運作方式的過程紀錄一下。不然,說真的這種東西,除非是Infra每天都在關注,再加上這些東西基本上設定一次就結束,很難再去記住這些操作步驟。另外,ER又分為兩種Peering,一種是針對類似VPN方式,主要是針對IaaS層的連線,稱作Private Peering,另一種是針對PaaS層的連線,稱作為Microsoft Peering


今天突然被提到一個需求,要架設Linux VM 在Azure,架設一個Windows VM算是簡單,但要架設Linux還是第一次。畢竟很久沒有用過Linux,指令也忘記差不多。不過,在Azure 好處就是當我架設壞掉時候,就可以很快重來

建立Linux VM

要架設Linux VM,首先要先找到相關Image,需求上是需要CentOS,所以就去找了CentOS的Image來安裝。不過,這裡有一個陷阱,後面會描述。你可以在Marketplace搜尋CentOS ,就可以找到很多版本的Image檔案


我想這個問題要碰到人因該不算多,因為,必須是你的Email ID同時是存在兩個不同Organization的Azure DevOps Service和Microsoft Teams下,換句話說,Azure DevOps Service和Microsoft Teams所對應的AAD不同時候的時候。才會有這樣的問題產生。官方文件說明或是直接在Teams內使用Azure DevOps App,可以很順利完成兩者間溝通,這是取決於這兩個服務在同一個Tenant。

而我剛剛上面提到的案例,它的狀況會是下面這樣

  • Teams AAD : AAA@Teams.com
  • Azure DevOps Service AAD : BBB@Devops.com

當你的Teams的Email ID是屬於Teams AAD下,但是,此時該Email ID又是屬於Azure DevOps Organization中的一員,然後想要讓Teams & Azure DevOps通知能夠關聯起來。

這時候,我們必須要先在Teams中去加入Azure Repos的Bot ( 目的要收到Code push通知)


之前用想透過Azure Synapse Analytics來做資料平台,不過,又發現Azure Data Explorer似乎也可以做類似想要的東西,於是也來實驗看看如果用Azure Data Explorer的效果會怎樣。但這前提是Azure Data Explorer就無法用一般的SQL語法去找尋資料,這可能對於習慣SQL人來說就會必須再額外學習一套語言,在Azure Data Explorer是使用KOL的語法作為搜尋資料

Azure Data Explorer是可以針對各種資料型態的資料去進行查詢與分析,這一點跟Azure Synapse Analytics又有幾分相似


某一天要新建新的Repos,發現建立起來完成後,預設的Branch從原本的Master變成Main,一開始以為是系統那邊壞掉,為什麼名字會被改變。最後看到兩篇文章,原來是因為Master這個敏感文字關係。

Regarding Git and Branch Naming — Software Freedom Conservancy (sfconservancy.org)

而目前整個Git生態也似乎開始要逐步將Master字眼改掉,雖然,在文化上這是好事,但是,在Azure DevOps應用上卻點麻煩,因為當所有之前設定都是以Master為主時候,突然換成main也是頗麻煩。不過,好在這部分在Azure DevOps新功能上,可以修改新建的Repos的預設Branch名稱,來解決此問題

要修改預設Branch名稱,就要到整個Azure DevOps組織設定中找到Repos的Seeting,將Default branch name for new repositories 打開


Azure Synapse 是Azure針對大型資料分析的一個新的服務。那個其他服務有甚麼不同,主要在於這項服務可以一次性針對各種不同類型資料進行分析。而這次想讓我會去嘗試原因在於如果我每次蒐集的資料都放在Blob,但是Blob本身並無一個好的工具可以讓我查詢Blob File內的檔案資料,變成每次要查詢Blob File內的資料都必須要下載檔案,然後去查看資料內容,這是相當費時又耗人力。如果,Azure Synapse Analytics能解決這部分或許是一個不錯選項,當然,Azure Synapse Analytics功能不只這些。可以先來看看Azure Synapse Analytics本身架構如何

一般可能認為Azure Synapse是原本Azure Data Warehoue的改名或是加強版,不過,Azure Synapse也加強了分析Big Data能力

Edward Kuo

Enterprise IT Manager / Microsoft Regional Director / Microsoft MVP / DevOps Expert / Speaker, About me: https://profile.edwardkuo.dev/about/

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store