Anduin Xue
Anduin Xue

Anduin's Tech Blog

All Posts in 2021.9


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