Anduin Xue
Anduin Xue

Anduin's Tech Blog

Azure Azure tips and skills


Query Kusto database with C# and get result as List<T>.

该实现通过双缓冲机制和任务调度优化Kusto数据写入性能采用双缓冲策略交替使用_activeBuffer和_secondaryBuffer减少内存占用和数据碎片冷却引擎动态计算写入延迟时间平衡写入频率与数据量大小通过ReaderWriterLockSlim和锁机制实现线程安全的数据入队与缓冲区交换操作引擎任务负责批量写入数据并在缓冲区数据量不足时自动休眠冷却引擎负责在休眠后重新唤醒写入任务形成热状态下的持续写入能力支持高并发场景下的非阻塞数据添加通过CalculateSleepTime方法根据缓冲区数据量动态调整休眠时间避免频繁写入和资源浪费SyncAsync方法确保所有待处理数据最终持久化实现可靠的数据同步机制。--Qwen3

C# .NET Core Azure .NET Kusto Azure Data Explorer KQL

Restore a deleted branch from Azure DevOps using it's SDK

本文介绍了如何通过Azure DevOps SDK恢复被误删的代码分支的技术方案。文章指出当开发分支被删除后,可以通过Azure DevOps提供的Git API获取分支最后的提交记录,并利用Git引用更新机制重建分支。开发者需要先通过VssConnection建立认证连接,使用GitHttpClient获取分支的推送历史,找到被删除前的提交ID,再通过UpdateRefsAsync方法将分支引用重新指向该提交。这个过程涉及对Git底层引用机制的深入理解,包括如何处理旧对象ID与新对象ID的映射关系。代码示例展示了如何构建GitPushSearchCriteria查询参数,解析返回的RefUpdates数据,并构造GitRefUpdate请求体。特别值得注意的是,文章揭示了在更新引用时将OldObjectId设为全零占位符的技巧,这是实现分支恢复的关键技术点。技术实现过程中涉及的权限控制、项目名称与仓库ID的匹配等问题,为开发者提供了思考空间。当本地执行git fetch后,删除的分支会重新出现在版本历史中。这引发我们思考:如何在团队协作中设计分支保护策略?当多用户同时操作时,这种恢复机制是否具有原子性?如果在不同版本的Azure DevOps中执行该操作,可能会遇到哪些兼容性问题?--Qwen3

C# git Azure Azure DevOps SDK Git Branch Restore

Use Azure Key Vault to store connection strings for App Service.

本文探讨了如何通过Azure Key Vault解决Azure App Service协作管理中的敏感信息泄露风险。传统环境变量配置方式存在隐患,当多人协作时可能导致数据库连接字符串暴露进而引发意外操作。文章提出使用Azure Key Vault作为安全中间层,通过权限分级管理实现服务托管与密钥保护的分离。具体方案包括创建独立密钥库、启用基于角色的访问控制、配置托管身份验证以及构建密钥引用链路。这种架构不仅保障了连接字符串的机密性,更允许团队成员在无需知晓具体凭证的前提下完成应用服务的日常维护。文章最后引发思考:当安全需求与协作效率产生冲突时,如何设计既能满足权限最小化原则又不阻碍团队协作的技术方案?你是否考虑过如何在不暴露密钥的前提下实现团队协作?或者,是否有更高效的安全策略等待探索?--Qwen3

Azure App Service Azure Security Key vault Environment Variables Azure Key Vault

Setup auto-renew wildcard HTTPS certificate on Azure virtual machine

本文系统阐述了在Azure虚拟机上实现通配符HTTPS证书自动续订的完整技术方案。通过迁移DNS到Azure管理平台、部署Windows Server虚拟机、配置win-acme证书工具链,构建了一个无需人工干预的HTTPS安全体系。方案核心在于利用Let's Encrypt免费证书服务与Azure DNS验证插件的协同机制,通过应用注册实现自动化域名验证,最终达成通配符证书的自动申请与续订。该方案突破了Azure原生服务在通配符证书支持上的局限性,同时通过IIS与证书管理的深度集成,确保了网站服务的持续可用性。值得关注的是,方案特别强调了DNS迁移的潜在风险与规避策略,揭示了证书自动化背后的身份认证逻辑。当域名解析权完全托管于Azure时,如何平衡系统安全与操作风险?在证书生命周期管理中,自动续订机制是否可能产生新的运维盲区?或许我们应当思考:当云计算平台提供越来越完善的自动化工具时,开发者是否正在失去对关键基础设施的掌控能力?--Qwen3

Azure Azure DNS Windows Server HTTPS Win-ACME Certificate letsencrypt ACME

Fix Azure Media Player can't play video in iOS mobile devices

当Azure Media Player在iOS设备上遭遇视频播放障碍时开发者往往陷入两难境地——同样的页面在Android设备流畅运行却在iOS设备遭遇无声的崩溃。这种跨平台的兼容性困境揭示了现代视频播放技术中隐藏的复杂生态。开发者需要直面iOS系统对HTML5视频的特殊处理机制其对autoplay和playsinline属性的严苛要求构成了第一道门槛而nativeControlsForTouch的禁用则暗示着系统级控件与自定义皮肤之间的权力博弈。更深层的技术迷局在于MIME类型的精确匹配当application/vnd.ms-sstr+xml与application/dash+xml的细微差异成为播放成败的关键时开发者不得不重新审视流媒体协议的底层逻辑。令人意外的是事件监听器这一常见调试手段在iOS设备上竟可能引发播放器的性能灾难这种反直觉的现象背后或许暗藏着iOS对JavaScript异步操作的优化策略。当开发者删除这些监听器后播放速度的质变性提升不仅提供了技术启示更抛出了一个值得深思的问题:在追求功能完善与性能优化的天平上我们是否过于依赖表面可控的技术方案?而当广告插件和字幕功能在iOS设备上成为播放障碍时开发者是否意识到跨平台开发中"功能迁移"的本质挑战?这些未解之谜仍在等待更多实践者的探索与验证。--Qwen3

Azure Media Player Azure Azure Media Service Video Playback iOS Devices Configuration Adjustments

Download any Azure Media Service video or live stream with FFmpeg.

本文提供了一种通过FFmpeg下载Azure Media Service视频或直播流的实用方法。核心在于将Azure提供的smooth streaming URL转换为m3u8格式并利用FFmpeg的协议白名单功能实现下载。操作流程包含三个关键步骤:首先安装FFmpeg并配置协议白名单参数,其次从目标视频获取以manifest结尾的URL,最后通过追加format=m3u8-aapl-v3参数构建完整下载命令。技术细节揭示了媒体服务协议转换的可行性——当视频流被转码为HLS格式时,其分片特性恰好匹配FFmpeg的copy编码策略。值得注意的是这种技术路径不仅适用于点播内容,对直播流同样有效。技术实现背后引发值得深思的问题:媒体服务协议设计的开放性边界在哪里?当标准协议与自定义扩展产生交互时,系统安全性是否面临新的挑战?而当视频分发机制与下载技术形成对抗关系时,我们该如何看待内容保护与技术自由之间的平衡?--Qwen3

Azure Media Player bash Azure Azure Media Service Download FFmpeg

Tips for Azure CLI script programming on bash

这篇博客通过一系列Azure CLI脚本编程技巧展示了如何在bash环境中高效管理云资源。从基础的Azure云环境登录到复杂资源的自动化创建,作者通过代码示例构建了一个完整的云操作工具箱。读者可以学习到如何通过脚本实现订阅选择、租户信息获取、资源组动态创建、应用监控配置等核心功能,同时掌握数据库连接字符串生成、环境变量设置等关键参数的提取方法。文章巧妙地将云资源管理与自动化逻辑结合,例如通过条件判断避免重复创建资源的代码设计,以及通过管道操作简化数据提取的实现方式。这些技巧不仅提升了云操作的效率,更启发我们思考如何将脚本思维应用到更复杂的云原生场景中。当面对跨区域资源调度、多订阅环境管理或自动化监控体系构建时,这些脚本范式如何进行扩展?在安全性与可维护性之间,如何设计更优雅的脚本架构?这些问题的答案或许就藏在代码的每一行逻辑中,等待读者通过实践去发现。--Qwen3

bash Azure DevOps Azure CLI Environment Variables Resource Management

Microsoft account integrated sign in via C#

这篇博客详细解析了如何通过C#实现Microsoft账户集成登录的完整开发流程。文章从Azure门户创建应用开始,展示了如何配置租户权限与重定向URI的关键设置步骤,特别强调了应用ID与密钥的生成与管理机制。通过代码示例演示了OAuth2.0授权码流程的核心实现,包括构建授权请求链接、处理回调代码、获取访问令牌及调用Graph API获取用户信息的完整链路。文章创新性地结合Aiursoft.XelNaga库的AiurUrl工具类,展示了如何优雅构建API请求并处理响应数据,最终通过MicrosoftUserDetail类解析用户核心信息字段。整个过程不仅提供了标准实现方案,更通过代码注释与异常处理机制的展示,揭示了实际开发中可能遇到的认证失败场景处理策略。文章最后抛出值得思考的问题:当企业需要同时支持多租户场景时,如何通过微软认证体系实现灵活的账户隔离?当用户信息需要扩展时,如何通过Graph API的其他接口获取更多数据维度?这些开放性问题为读者提供了延伸思考的空间,而附带的GitHub源码链接则为实践提供了直接的技术落地方向。--Qwen3

ASP.NET Core Azure Microsoft OAuth Login Authentication

Install Azure CLI on Windows 10 and use it in bash

本文探讨了Azure CLI在Windows 10系统中安装后如何突破命令行环境限制实现跨平台调用的创新实践通过分析Azure CLI的安装过程揭示了其在PowerShell中的天然适配性并深入剖析了git-bash环境中无法识别az命令的底层原因——源于Windows命令行文件扩展名与Unix-like系统调用机制的兼容性差异文章创新性地提出通过创建系统级可执行文件实现命令调用的跨环境适配方案展示了如何利用Bash脚本技术将Windows命令行接口转化为符合Unix规范的执行入口进而实现az命令在Linux风格环境中的无缝调用这一解决方案不仅解决了具体的技术痛点更启发我们思考现代开发工具在多平台协作中的本质需求:如何打破技术栈的物理边界构建更流畅的跨系统开发体验?当开发者面对不同环境的工具链时是否应该更多地考虑接口的抽象化设计?而这种跨平台兼容性的实现是否预示着未来开发工具的统一化趋势?--Qwen3

bash Azure Azure CLI PowerShell Installation Bash Integration

Publish app from Azure DevOps to non-global Azure like Azure CN

如何将Azure DevOps构建的应用发布到非全球Azure环境例如Azure CN?这篇文章系统解析了跨环境部署的技术路径。当开发者习惯于Azure Global的便捷部署时,面对Azure China Cloud等隔离环境时常常陷入权限配置的困境——如何让自动化流水线突破订阅可见性的限制?文章通过构建服务主体的完整链路给出答案:从Azure AD注册应用开始,通过生成密钥和分配贡献者权限建立身份信任,最终在Azure DevOps中配置自定义云环境的服务连接。这个过程揭示了多云架构下身份认证的核心逻辑:当订阅ID和租户ID成为连接不同云环境的密码时,如何通过服务主体实现自动化部署的权限穿透?尤其值得关注的是手动配置服务连接时的环境选择机制,它打破了自动配置仅显示全球订阅的限制,为混合云场景下的持续交付提供了技术范式。当开发者面对复杂的多云环境时,是否应该重新思考统一身份管理的架构设计?在服务主体密钥的安全存储与权限最小化原则之间,又该如何平衡自动化部署的效率与风险?这些开放性问题为读者打开了持续集成的深度思考空间。--Qwen3

Azure App Service Azure Azure DevOps DevOps Azure CN China

Use IIS or Azure App Service as a reverse proxy

这篇文章探讨了如何利用IIS或Azure App Service构建反向代理的实践路径,通过Aiursoft.IO案例展示了从零到实现反向代理的完整流程。文章揭示了IIS作为反向代理的核心依赖——RequestRouter和Rewrite模块的安装逻辑,并通过web.config文件的规则配置,演示了从强制HTTPS到动态域名路由的实现机制。特别值得关注的是在Azure App Service中通过applicationHost.xdt文件启用ARR服务的技巧,这种在共享环境中突破技术限制的实践方式值得深入思考。当构建web.config文件时通过正则表达式捕获子域名并重写请求路径的策略,不仅解决了缩短下载URL的需求,更启发我们思考如何利用规则引擎实现更复杂的路由逻辑。文章最后抛出一个值得探索的问题:当反向代理需要处理高并发流量时,如何通过规则优化和缓存策略平衡性能与安全性?这或许能引导读者重新审视现代应用架构中代理服务的定位与价值。--Qwen3

IIS web.config Reverse Proxy Web Azure App Service Azure

How to connect Azure Media Player statistic info to Power BI embed

文章详细介绍了将Power BI内容嵌入网页的完整流程包括数据准备创建报告配置嵌入设置生成访问令牌以及JavaScript加载和过滤操作首先通过Power BI Desktop设计报告并发布到服务然后利用Power BI REST API和.NET SDK获取报告的GroupID和ReportID并使用Azure AD获取访问令牌生成嵌入所需的EmbedToken接着通过JavaScript的powerbi.js库在网页中创建EmbedConfig配置对象包含访问令牌嵌入URL和报告ID最后通过添加过滤器配置实现动态数据筛选整个过程涉及关键代码如TokenCredentials的创建Reports.GetReportsInGroupAsync获取报告列表GenerateTokenInGroup生成嵌入令牌以及JavaScript中powerbi.embed方法的调用同时展示了如何通过filters数组传递表名列名和筛选值实现动态过滤全文核心在于通过API和前端库结合完成Power BI内容的嵌入与交互控制--Qwen3

Power BI Azure Media Player Application Insights Azure Power BI Embedded JavaScript API

  • 1