Anduin Xue
Anduin Xue

Anduin's Tech Blog

All Posts


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

这篇文章介绍了如何通过 Azure DevOps SDK 恢复删除的分支。文章从配置 Git 客户端开始,展示了如何安装必要的 NuGet 包以及编写代码来实现分支恢复功能。关键步骤包括使用 `GitHttpClient` 搜索推送记录、获取删除前的分支引用信息,并通过更新引用将分支重新还原。最后,文章提醒读者可以通过本地 `git fetch` 命令验证恢复结果。这种方法避免了手动操作,能够更高效地管理代码仓库的历史版本。 如果你正在寻找一种自动化的方式来恢复误删的分支,这篇文章提供了一个清晰的技术实现方案。此外,它还启发我们思考如何利用 Azure DevOps 提供的丰富 API 接口来优化日常开发流程中的其他问题。你是否也在面临类似的代码管理挑战?不妨尝试通过这种方式来解决问题,看看它能否提升你的工作效率。--DeepSeek

C# git Azure Azure DevOps SDK Git Branch Restore

Tips about rules setup for Outlook enterprise users

这篇文章探讨了在大型企业环境中如何为Outlook用户设置高效的邮件规则,以应对复杂的邮件流管理挑战。作者分享了作为微软员工每天处理的各类邮件类型,包括广告新闻、项目更新、团队讨论、机器人通知、警报信息等,并提出了三条核心目标:确保不遗漏重要邮件、专注于当班时的团队邮箱以及自动分类邮件至不同文件夹。文章详细介绍了设置规则的基本步骤,包括预处理无用内容、优先处理重要项目和请求、提醒个人联系等内容,并强调了规则顺序的重要性。作者还鼓励读者根据自己的需求调整配置,最终实现高效的邮件管理。你是否也在寻找一种更智能的方式来应对每天的邮件洪流?这篇文章或许能为你提供一些启发和实用建议!--DeepSeek

Outlook Rules Setup Email Organization Tips Mail Automation Efficient Workflow Inbox Management Guide Important Emails Alert

软件工程领域中的逆全球化趋势

这篇文章探讨了软件工程领域正在出现的“逆全球化”趋势。过去二十年间,得益于互联网的发展和中美技术交流,我们能够将地球视为一个整体进行数据最终一致性的分布式系统构建。然而,2020年后,客户对跨国网络服务的信任逐渐消失,转而寻求完全本地化的部署方案。文章指出,在这种趋势下,传统的CAP定理应用面临挑战,软件工程必须适应“空气墙”造成的数据隔离现实。未来可能需要将完整的组织结构和维护能力打包交付给客户,这将彻底改变软件销售模式。文章最后提出,在可预见的未来内,数据跨越国界的自由流动可能会受到更多限制,甚至可能需要类似“数据护照”的机制来证明使用权。这种趋势不仅改变了技术实现方式,更深刻地影响着全球化的协作模式和技术从业者的职业发展路径。--DeepSeek

Multi-tenant China Software Development AirGap Globalization CAP Theorem

Build a package that can be used in browser and node with TypeScript

根据提供的博客文章,以下是其内容的简要摘要: 该指南详细介绍了如何使用Webpack配置来创建并发布一个npm包。首先,需要设置文件夹结构、编写TypeScript代码,并通过webpack.config.js进行配置以生成UMD模块。接着,在package.json中指定主要入口点和许可证信息,确保构建后的文件能够被正确引用。使用npm命令登录到npm注册表后,可以将包发布到npm仓库。最终,用户可以通过npm安装并引入该包,支持script标签引用或ES6导入方式。--DeepSeek

Web npm TypeScript node webpack JavaScript Front-end

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

本文介绍了如何利用 Azure Key Vault 来安全存储 Azure App Service 的连接字符串。通过将敏感信息(如数据库连接字符串)存储在 Azure Key Vault 中,可以有效避免他人直接访问这些敏感数据,从而防止意外或未经授权的操作,例如手动删除数据库等。文章详细描述了创建 Azure Key Vault、配置访问策略、存储和引用密钥的过程,并演示了如何将 Key Vault 与 App Service 集成以实现安全的环境变量管理。通过这种方法,不仅能够确保敏感信息的安全性,还能方便地与其他人员协作管理服务,而无需暴露任何 confidential 值。你是否担心敏感数据的安全?如何确保只有授权人员能够访问关键信息?--DeepSeek

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

Programmatically connect to the remote server via SSH and execute remote command.

本博客介绍了一种通过编程方式使用SSH协议连接远程服务器并执行命令的方法。作者分享了使用.NET Core和SSH.NET库实现这一目标的具体步骤,包括创建新的控制台项目、安装必要的依赖库以及编写连接和执行命令的代码示例。文章还展示了运行结果,并提供了进一步探索的方向和资源链接。通过本文,读者可以学习如何自动化管理服务器任务,同时思考是否可以将此方法扩展到更多系统或更复杂的操作中。你是否也想尝试用代码远程控制服务器?或者你认为这种方法还能应用在哪些场景中呢?--DeepSeek

C# .NET Core bash Linux SSH Renci.SshNet

Use JetBrains code quality analyzer to prevent checking-in bad C# code

这篇文章介绍了如何使用JetBrains的代码质量分析工具来防止在C#项目中提交低质代码。通过集成JetBrains的ReSharper和Rider工具到CI/CD流程中,可以在开发阶段自动检测潜在问题,从而提升代码质量和可维护性。文章详细讲解了如何在Azure DevOps管道中配置代码质量检查,并提供了GitHub Actions的实现方法,同时分享了在本地运行代码质量检查的解决方案,甚至无需购买JetBrains软件即可完成这项工作。最后,文章还介绍了如何通过创建.editorconfig文件来调整检查规则,以避免误报或不符合项目需求的情况。这些方法不仅能够帮助开发者快速发现和修复问题,还能显著提高开发效率。你是否还在为代码质量问题头疼?不妨试试这些工具,让开发过程更加顺畅!--DeepSeek

C# Azure DevOps JetBrains Resharper Code Quality Pipelines

FFmpeg 用法概览

文章介绍了使用FFmpeg进行视频处理的多种功能,包括反转视频(同时保留或反转音频)、剪辑视频片段、扣取视频区域等操作,并提供了具体命令示例。此外,文章还推荐了SRS项目和flv.js库,用于构建直播平台和在网页中播放FLV流,帮助用户实现类似Bilibili的直播体验。--DeepSeek

bash Live Streaming FFmpeg Video Editing SRS flv.js

C# run tasks in a threads pool with fixed size

这篇文章介绍了一种在C#中实现多任务处理队列的方法,允许用户以并行方式执行下载任务或其他异步操作。通过CannonQueue类,可以控制最大并发任务数,并支持依赖注入和日志记录功能。该方法提供了两种使用方式:一种是将任务添加到队列后立即启动任务池,另一种是在最后统一启动任务池以指定更大的并发数量。同时,CannonQueue还支持依赖服务的场景,例如Entity Framework上下文的获取与释放,并通过依赖注入框架进行管理。用户可以根据需要注册为单例服务,并在ASP.NET Core中使用该服务实现高效的异步任务处理和数据库操作。--DeepSeek

C# Async Task Multi-Threading async programming task queue

Display code coverage information for .NET Core project using Azure DevOps.

本文介绍了在 Azure DevOps 中为 .NET Core 项目显示代码覆盖率信息的详细步骤。首先需要创建一个构建管道,并根据使用的经典设计器或 YAML 文件添加相应的命令行任务。确保在 Windows 平台上运行以获得最佳支持效果。完成配置后,构建完成后即可查看代码覆盖率和测试结果。文章还展示了如何生成并嵌入-badge URL_到项目文档中,方便团队直观了解项目的代码覆盖率情况。如果你也在使用 Azure DevOps 和 .NET Core 进行开发,不妨尝试一下这些步骤,看看你的项目能达到怎样的代码覆盖率?又或者,你可以思考如何通过改进测试覆盖率来提升代码质量?--DeepSeek

.NET Core Azure DevOps .NET Test MSTest Integration Test Code coverage GitHub

ASP.NET Core Integration Test using MSTest

这篇文章探讨了如何在ASP.NET Core项目中使用MSTest进行集成测试,而不仅仅是依赖官方文档中提供的xunit示例。作者通过实际步骤展示了如何替换xunit并配置MSTest来完成相同的任务。文章首先介绍了从项目结构中移除xunit并安装MSTest的过程,接着详细说明了如何在测试项目中启动ASP.NET Core服务器,并使用HttpClient进行请求测试。最后,作者强调了测试清理的重要性,确保每次测试后正确停止和释放服务器资源。这篇文章不仅为读者提供了一种替代方案,还激发了读者思考为什么选择MSTest而非xunit,以及在实际应用中可能需要注意哪些问题。通过阅读本文,读者可以深入了解如何灵活配置不同的测试框架,并在自己的项目中实现高效的集成测试。--DeepSeek

ASP.NET Core C# .NET Core Test MSTest Functional Test Integration Test

Fire and forget in ASP.NET Core with dependency alive

这篇文章探讨了在ASP.NET Core中实现"Fire and Forget"模式时可能遇到的问题以及如何通过依赖注入和生命周期管理来解决这些问题。作者指出,在控制器中直接使用`Task.Run()`启动长时间运行的任务可能会导致依赖对象过早释放,从而引发不可预知的结果。为了解决这一问题,文章提出了一种新的解决方案:创建一个单例服务(CannonService),该服务能够确保任务执行过程中所需的依赖始终保持存活状态。通过这种方式,不仅可以避免依赖被意外释放的问题,还能实现异步任务的非阻塞执行。 文中详细介绍了如何构建和注册这个CannonService,并展示了如何在控制器中使用它来执行需要长时间运行的任务(例如发送确认邮件)。此外,作者还提供了相关的NuGet包资源,方便开发者快速集成这一解决方案到实际项目中。 文章最后提醒读者,在使用"Fire and Forget"模式时,除了关注依赖生命周期的管理外,还需要考虑任务失败后的错误处理机制以及日志记录的重要性。同时,作者提出了几个值得思考的问题:在实际应用场景中,哪些情况最适合使用"Fire and Forget"模式?如何平衡异步任务的执行效率与系统资源的占用?这些问题不仅帮助读者更好地理解文章内容,也激发了对相关技术更深层次的探索和实践。--DeepSeek

ASP.NET Core C# Async Fire and forget dependency injection singleton service