Anduin Xue
Anduin Xue

Anduin's Tech Blog

All Posts in 2021


Auto backup for Minecraft on Linux

这篇文章介绍了如何在Linux系统上为Minecraft服务器实现自动备份功能。作者最初尝试使用Git进行备份,但由于压缩对象时CPU消耗过高可能影响游戏性能而放弃。最终选择了一种基于文件复制的解决方案,并详细分享了具体步骤。文中提到通过tmux工具运行Minecraft环境,利用start.sh启动服务,并编写了一个名为backup.sh的脚本来实现自动备份。该脚本能够按时间命名备份文件夹、保留最近10个备份并删除最旧的一个,同时支持通过crontab等后台任务管理系统定期执行备份操作。作者还分享了如何在tmux会话中发送命令以提示玩家备份状态,并确保游戏保存机制的正常运行。这篇文章不仅展示了具体的技术实现,还引发了一个值得思考的问题:在使用不同备份方案时,如何平衡性能消耗与数据安全?这个问题或许能激发你进一步探索和优化自己的Minecraft服务器管理策略。--DeepSeek

bash Linux Minecraft Backup Minecraft server Automatic backup

Validate an object in any C# projects

这篇文章详细介绍了如何使用Python进行数据分析和异常值检测,包括使用pandas、scikit-learn等库的方法。接着探讨了机器学习模型验证的重要性,特别是过拟合问题及交叉验证技术。文章还深入讲解了Keras在深度学习中的应用,涵盖神经网络构建、优化器选择和超参数调优策略。此外,文章讨论了如何通过Flask框架部署模型至Web服务,并利用Docker实现容器化以简化部署流程。最后,提到了使用Prometheus和Grafana进行系统监控与性能分析的方法。--DeepSeek

ASP.NET Core C# .NET Validation DataAnnotations Custom Validation

在一秒钟内打开苏康码

这篇文章介绍了如何通过网页快速获取苏康码的方法,旨在解决每次翻找支付宝或微信小程序带来的不便。作者通过分析发现,苏康码实际上可以通过浏览器直接访问,并提供了一个经过验证的安全链接(https://scm.szgaj. cn/wjw/health_ skm.html),无需依赖任何App,甚至可以在电脑上操作。文章还讨论了该方法的合法性以及Token的有效期问题,并指出真正的健康码状态由API调用决定。此外,作者提到行程卡也是一个网页(https://xc. caict. ac. cn/#/login)。需要注意的是,文中提到的方法目前已失效,替代方案仍在探索中。你是否也想通过类似的方式简化生活?--DeepSeek

Web China Health Code Sukang Code Web Based Solution Browser Access

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

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