Anduin Xue
Anduin Xue

Anduin's Tech Blog

All Posts


C# Play with GZip.

在这篇文章中,作者介绍了一个为字符串类型扩展GZip压缩功能的C#类库。该类库通过两个核心方法实现了字符串的压缩和解压操作,并提供了将压缩结果编码为Base64字符串的功能。这种实现方式能够有效减少数据传输量和存储空间需求。文中还提供了一段完整的代码示例,展示了如何在项目中使用这些扩展方法。为了验证功能的正确性,作者编写了一个单元测试用例,证明了压缩后的数据长度确实小于原数据,并且能够正确还原。这种方法不仅提升了应用性能,还能节省带宽和存储成本。你是否正在寻找一种简单有效的方式来优化字符串处理?或者考虑在哪些场景下使用这种压缩方式会更加高效?不妨继续阅读本文,深入了解这些实现细节并探索更多可能性!--DeepSeek

C# .NET Compress GZip Base64 string extension

Directly talk to any enterprise Microsoft Teams user

这篇文章介绍了如何直接与任何企业版 Microsoft Teams 用户进行聊天的实用技巧。通过获取目标用户的邮箱地址并构造特定链接,你可以在未经对方添加为联系人的情况下直接发起对话。文章详细说明了操作步骤:首先需要安装并登录 Microsoft Teams 工作或学校账号,随后利用邮箱地址生成类似 `https://teams..microsoft.com/l/chat/0/0?users=anduin@aiursoft.com` 的链接即可实现即时沟通。此外,文章还指出与机器人聊天的方式略有不同,需使用包含 GUID 的特殊格式链接。 这种直接沟通的功能为企业协作带来了新的可能性,但也引发了关于隐私和沟通效率的思考。例如,这项功能是否会改变传统的沟通方式?如何在提升工作效率的同时保护个人隐私?通过这些有趣的问题,文章引导读者进一步探索和反思这一技术对企业运营和个人生活可能带来的深远影响。--DeepSeek

Microsoft Teams Microsoft 365 Microsoft Teams Teams Link Direct Messaging

Use Windows as a stateless OS on your devices

这个PowerShell脚本旨在自动化一系列Windows系统的配置和优化任务,包括主题设置、文件管理、安全策略调整、远程桌面启用、软件更新等。脚本通过注册表操作、COM对象调用、网络配置修改以及系统进程控制来实现这些功能,需要注意的是其中某些操作可能涉及潜在风险,例如删除桌面文件或更改网络类别为私有可能导致的安全问题。建议在运行此类自动化脚本前仔细审查每一步,并确保具备数据备份和恢复能力以应对可能出现的意外情况。--DeepSeek

PowerShell Windows Windows 11 Automation Configuration Device Reimage

Why you should never use `Console.WriteLine`

这篇文章详细探讨了为什么在现代软件开发中不建议在库代码中使用`Console.WriteLine`,并提出了替代方案。文章指出,`Console.WriteLine`存在以下问题:1)在图形界面应用中无法正常工作;2)违反依赖反转原则;3)缺乏灵活性和扩展性。为了应对这些问题,作者推荐使用`ILogger`接口,并通过依赖注入框架(如Microsoft.Extensions.DependencyInjection)来实现日志记录的灵活配置和管理。 文章详细介绍了如何通过添加必要的NuGet包(如`Microsoft.Extensions.Logging.Console`、`Microsoft.Extensions.Logging.ApplicationInsights`等),并结合服务注册与配置,快速搭建一个可扩展的日志系统。此外,作者还展示了如何通过最少代码实现基本的日志功能,并讨论了在某些特殊场景下可以继续使用`Console`类的情况。 文章最后提出一个问题:“是否真的不能在任何情况下使用`Console`类?”引发读者进一步思考。--DeepSeek

C# .NET Core Console App .NET Logging ILogger

Install Windows store app with WinGet

这篇文章介绍了如何通过 Winget 安装 Microsoft Store 应用的新功能。首先需要获取目标应用的唯一标识符(Product ID),可以通过微软官网搜索应用并提取其 URL 中的 ID。接着可以使用 `winget install` 命令结合 `--source msstore` 参数直接安装应用,而无需手动打开商店页面或进行额外操作。文章还提供了一个 PowerShell 脚本函数 `Install-StoreApp`,用于自动化检测和安装 Store 应用,并支持多个示例展示如何使用该函数来快速部署常见应用如 Microsoft To Do、Xbox 等。这些方法不仅适用于单机环境,也适合开发者在构建自动化脚本时集成。你是否已经尝试过通过 Winget 直接安装商店应用?这种方式能为你的系统管理带来哪些便利或挑战?--DeepSeek

PowerShell Windows Winget Microsoft Store UWP Store

Install Windows 11 side-by-side without a USB drive

根据文章内容,以下是其摘要: 本文介绍了如何在现有Windows操作系统上安装新的操作系统。首先,需要扩展系统分区或创建新分区以腾出足够的空间,并确保磁盘未加密(不使用BitLocker)。接下来,用户可以选择直接从ISO镜像挂载或解压到目标分区,或者使用第三方工具如Rufus将ISO写入USB启动盘。然后,在BIOS/UEFI中设置启动顺序,将新系统所在的磁盘设为第一启动项,或者使用Rufus创建的USB启动盘引导安装过程。完成安装后,需更新驱动、安装必要软件并根据个人需求进行系统设置。最后,用户可以通过检查系统信息和功能来验证安装结果,并在出现问题时参考故障排除方法或重新生成引导记录以解决问题。--DeepSeek

Windows 10 PowerShell Windows Windows 11 Install DISM Bcdedit Boot BCD

Retry with exponetial back-off on C#

本文介绍了一个基于C#实现的简单重试引擎(RetryEngine),用于在遇到临时性错误时自动进行任务重试并结合指数回退策略优化重试间隔。通过分析代码可以发现,该引擎支持自定义重试次数、错误过滤条件和超时控制,其核心逻辑包括:1)按顺序执行任务并在超时时强制终止;2)捕获异常并通过用户提供的过滤条件决定是否继续重试;3)在每次失败后使用指数回退算法计算等待时间。这种设计不仅提高了系统的容错能力,还能有效减少因频繁重试带来的资源消耗。例如,在实际应用中可以轻松集成该引擎来处理类似网络请求等可能受外部因素影响的任务。 文章通过具体示例展示了如何将RetryEngine与业务逻辑结合使用,并提出了几个值得深入探讨的问题:为什么选择指数回退而不是固定时间间隔?在什么场景下需要调整重试次数和超时设置?如果遇到不可恢复的错误该如何优雅退出?这些问题不仅帮助读者理解当前实现,还能引导他们思考如何根据实际需求对现有方案进行改进和优化。--DeepSeek

C# .NET Retry Retry Engine Exponential Backoff Exception Handling

找到玄学问题的根源的方法 - 夹逼调试法

这篇文章介绍了“夹逼调试法”,一种用于快速定位复杂系统中可能故障原因的方法。通过构建理想环境和实际故障环境的对比,逐步排查差异以找出可能导致问题的关键因素。文章通过两个具体案例(Spotify无法运行和飞机启动失败)详细展示了这种方法的实际应用过程,并指出该方法适用于快速定位“可能的原因”,而非严格的必要或充分条件。你是否也遇到过类似的问题?不妨尝试使用夹逼调试法,或许能更快找到解决之道!--DeepSeek

Software Development Debugging Problem Solving Computer Science Environment Analysis System Issues

The simplest way to retry in PowerShell

本文介绍了一种在PowerShell中实现任务重试机制的简单方法。通过示例代码展示了如何检测错误并自动重试,同时记录了失败和成功时的不同运行结果。脚本使用了一个循环结构,在每次尝试失败后延迟递增的方式重新执行任务,最多尝试5次。当所有尝试均告失败时会抛出最终错误信息。文章不仅展示了代码逻辑,还通过实际输出演示了在不同情况下(如网络请求失败或成功)的运行效果。这种方式能够有效提高脚本的健壮性,确保在面对暂时性错误时依然有机会完成任务。你是否也在编写需要处理不确定错误的任务?这种重试机制能否帮助你在类似场景中更优雅地解决问题?--DeepSeek

PowerShell Retry Exponential Backoff retry mechanism error handling exception catching

时评:国家对于子女教育方面的政策还需要多方面配套

本文探讨了当前国家在子女教育领域的政策配套问题,指出近期印发的《关于进一步减轻义务教育阶段学生作业负担和校外培训负担的意见》以及网络游戏防沉迷措施虽旨在缓解家长育儿压力并引导学生健康上网,但单纯依靠“堵”的方式可能难以从根本上解决问题。文章认为,现有政策缺乏有效的引导性配套措施,可能导致教育资源地下交易、境外培训或游戏监管规避等问题,并呼吁通过增加体育活动和社会实践等多样化选择来合理利用学生的空闲时间。作者进一步提出了一种设想:将人文课程与多种兴趣培养相结合,由学生自由选择并计入分数,但同时也指出这可能面临教育资源不均、资金投入不足等实际挑战。此外,文章还分析了政策调整对教育培训行业的影响,并建议通过“灰度发布”方式在试验区域先行试点,给予相关企业和投资人更多转型时间。最终,文章呼吁社会各界共同思考如何在优化学生业余生活的同时平衡各方利益,并提出了值得深入探讨的问题:我们是否准备好为教育改革提供足够的资源支持?如何确保政策的公平性和可持续性?这些问题不仅关乎当前教育体系的完善,更指向未来社会发展的方向。--DeepSeek

China Politics Education Education Reform Policy Analysis Game Regulation

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

本文介绍了如何通过C#连接并查询Azure Kusto数据库的方法。首先,文章演示了如何创建Kusto连接、定义查询语句并执行查询操作,并展示了如何处理查询结果以及建议使用异步方法以提高性能。接着,文章详细说明了如何将数据从集合格式转换为DataTable格式,并利用Kusto的Ingest API将其导入到目标表中。文中通过具体的C#代码示例,分别介绍了KustoIngestService类(用于数据导入)、DataTableExtensions类(用于将对象集合转换为DataTable)以及Program类(用于演示完整的数据导入流程)。最终,文章通过一个完整的工作流展示了如何从数据准备到成功将数据导入Kusto表的全过程。--DeepSeek

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

Build a common cache service for your C# app.

该代码展示了如何为缓存功能编写单元测试,涵盖了基本缓存、带条件的缓存、空值处理、缓存清除以及选择器的应用。每个测试方法使用不同的数据点和场景来验证缓存的行为,包括首次加载时的慢响应时间、命中缓存后的快响应时间,以及对特定条件和边缘情况(如空值)的正确处理。这些测试确保了缓存机制在各种情况下都能正常工作,并覆盖了常见的缓存应用场景。--DeepSeek

ASP.NET Core C# .NET Core Performance Caching .NET Cache MemoryCache