Edi Wang

Microsoft MVP for Azure

All Posts

How to Organize Azure Resource Group Efficiently

In Azure, Resource Groups are a key concept for managing resources. They provide a logical way to group related resources, making it easier to manage and control access. However, as your cloud environment git bigger, organizing Resource Groups becomes more difficult. This blog post explains common practices for using Azure Resource Groups. These tips will help you manage and organize your resources more effectively! Key features of Resource Group are: Group related resources together for easier management. Deleting a resource group also deletes all resources inside it. Assign roles and permissions at the resource group level (IAM).
Azure DevOps

凑发票算法:经典背包问题的变种

在日常工作中,特别是报销或财务处理时,经常会遇到这样的问题:如何从一堆发票中找到金额满足某个值的最优组合?假设我们有一组发票,每张发票以文件名的形式存储,文件名包含发票金额,例如 酒店-996.35.pdf 打车-251.00 医疗-404.00 。我们的目标是从这些发票中,找到金额总和 至少等于目标金额 的最优组合,并且总金额尽可能接近目标金额。要解决这个问题,我们可以将其看作一个 背包问题的变种,即在给定一组发票的情况下,找到满足条件的金额组合。本文的算法采用 回溯法 来实现,逐步尝试每种可能的组合,并记录满足条件的最佳结果。
C# Algorithm

Understanding the "Efficient Shipping" Interview Question in C#

When preparing for interviews, you'll often come across optimization problems that test both your problem-solving skills and your ability to write efficient code. I have such an interesting programming interview question years ago. The Efficient Shipping problem. Let's break it down and analyze the solution. And to understand the flaws in the first version of my code and how we can improve it.
C# Algorithm

How to Stop Automatically Switching to New Outlook

Microsoft introduced the new Outlook last year. Many users, including myself, are not fond of the new Outlook. In early 2025, I discovered that Microsoft plans to automatically install the new Outlook on new Windows 11 machines. Additionally, users will be forced to switch to the new Outlook after opening the classic Outlook app a few times. What’s even more frustrating is that even if you uninstall the new Outlook app, it will reappear after some time. In this blog post, I’ll share a method to disable this automatic upgrade behavior.
Microsoft Office

Automating Price Calculation from File Names Using PowerShell

Manually extracting and summing prices embedded in file names for a large number of files is time-consuming and is easy to make errors. This blog post introduces a PowerShell script designed to automate this process efficiently. The script scans a specified directory, identifies file names containing prices using a regex pattern, extracts these values, and calculates their total, making it an ideal solution for tasks like invoice management.
PowerShell

Secure Your Azure OpenAI API for Azure App Service with VNet Integration

When deploying Azure OpenAI resources, prioritizing security is essential. One critical step is to restrict access to your API endpoint, ensuring only your applications can connect. By implementing such measures, even if your API key is leaked, unauthorized users will be unable to exploit it—protecting you from unexpected charges. Follow the steps outlined in this blog post to implement network restrictions and safeguard your resources.
Azure Network AI App Service

Migrating Moonglade.Email to Azure Communication Service

Moonglade.Email, is an Azure Function that originally relied on SMTP for sending emails. Microsoft implemented a change that prevents connections to both personal and enterprise Office 365 Outlook mailboxes. To ensure the email service continues functioning, I decided to integrate Azure Communication Services. In this blog post, I will explain how I implemented support for Azure Communication Services in the Moonglade.Email Azure Function.
.NET Azure Email Azure Function

How to Get Azure App Service Windows Worker OS Full Name and Version

Sometimes, it's crucial to know the underlying operating system running your Azure App Service. This can help you address compatibility issues during development before deploying to Azure. Unfortunately, Microsoft's documentation does not specify the exact operating system name and version of the Web Worker that runs your application. So, it's up to us to determine this information.
Azure PowerShell App Service

Scripts for Recursively Download All Files from a Public Azure Storage Container

In my previous blog post, "How to List All Files in a Public Azure Storage Container", I demonstrated how to use the Azure REST API to retrieve a comprehensive list of all file information in a public Azure Storage container without requiring any keys or authentication. Leveraging this method, you can easily create scripts to download all files from a public Azure Storage container without the need to install any additional tools. In this post, I will share PowerShell and Python scripts to do that.
Azure PowerShell Python Azure Blob Storage

Upload Files to Azure Blob Storage without Azure SDK

Typically, we use the Azure SDK to upload files to Azure Blob Storage, as it is the easiest method supported by Microsoft. However, there are situations where the Azure SDK might not be available. So, how can we still upload files to Azure Blob Storage in such cases? In this post, I will guide you through the steps to upload files to your Azure Storage Account without using the Azure SDK.
Azure Azure Blob Storage