Anduin Xue
Anduin Xue

Anduin's Tech Blog

All Posts


Install WinGet on Windows Server

在本篇博客中,我们将学习如何在Windows Server上安装WinGet。首先,确保您没有使用管理员帐户运行。然后,在具有管理员权限的新PowerShell会话中运行一系列命令。这些命令将帮助您查询最新的WinGet版本及其依赖项,并下载与安装适用于您系统的软件包。 尽管在安装过程中可能会遇到一些临时性错误,但完成后WinGet应该已经成功安装。如果安装失败,请按照博客中的步骤从GitHub下载并安装WinGet及其许可证。完成后,您应该可以看到WinGet已在您的系统中生效。 安装WinGet后,您可以使用它来安装Windows Terminal。尝试使用命令`winget install Microsoft.WindowsTerminal`。如果安装失败,您可以尝试在PowerShell中运行另一个命令来进行安装。此外,您还可以使用WinGet来安装其他应用,如剪贴工具、便笺、时钟以及邮件和日历。 最后,如果需要重置Windows商店,可以尝试在PowerShell(管理员权限)中运行`wsreset -i`和`wsreset`命令。请注意,这仅支持Windows 10 LTSC,可能无法在Windows Server上工作。 在阅读完整篇博客后,您是否已经掌握了如何在Windows Server上安装WinGet的方法?您还有哪些关于WinGet的其他应用和技巧可以分享呢?--GPT 4

PowerShell Windows Server Install Winget Automation

精准防控面临的问题来自于健康码的设计需要革新

随着疫情的严重,苏州的防疫标准不断提高,多重健康码的出现使得人们出行变得繁琐。这篇博客讨论了多重健康码是否真的提高了防疫安全,以及如何精准防控疫情。文章指出,病毒不按行政区划传播,因此行程码的设计可能并不合理。同时,传统健康码容易出现绿色,使得防疫效果受到影响。 为了解决这些问题,文章提出了一种基于被感染概率的健康码设计。通过计算每个人与病例的时空交错,可以得到一个被感染概率。核酸检测可以根据被感染概率选择性执行,并改变人的被感染概率。文章还讨论了基于AI的精准防疫方法,以及理论安全与实际安全的差异。 总之,这篇博客呼吁在疫情防控中提高执行效率,通过AI技术辅助流行病调查,精准监测高概率感染人群,为健康码增加安全评估功能,实现健康码2.0,既保证防疫安全又降低代价。那么,在这个问题上,我们是否可以借鉴其他国家或地区的经验,找到更加合理的防疫方法呢?--GPT 4

China Health Code Shanghai COVID-19

Install Windows 11 on Vultr cloud machine

本篇博客详细介绍了如何在Vultr云服务器上安装Windows 11。首先,我们需要下载Windows 11的ISO文件,并将其转换为WIM文件。接着,准备一个新的磁盘驱动器以供安装Windows 11。在完成这些准备工作后,我们需要解压Windows 11的WIM文件,然后设置相应的启动配置。重启服务器后,通过VNC连接并完成Windows 11的初始设置。最后,启用远程桌面服务并删除旧的Windows Server。 在阅读这篇博客后,你会了解到在云服务器上安装Windows 11的整个过程。这将有助于你在云端搭建自己的个人电脑,并随时随地通过远程桌面连接使用。此外,你还可以为家人和朋友创建更多的云电脑,让他们也能随时随地体验Windows 11的便捷。 那么,云电脑的未来会是怎样的呢?随着技术的发展,云电脑是否会成为我们日常生活中不可或缺的一部分?请继续关注我们的博客,探讨云电脑的未来趋势!--GPT 4

PowerShell Windows Server Cloud Windows Windows 11 DISM Bcdedit Vultr Cloud PC

Lint markdown with customized rule by JavaScript

本篇博客介绍了如何使用JavaScript对Markdown文件进行自定义规则的检查。作者首先介绍了一个包含许多Markdown文件的代码库,并通过安装一些Markdown lint插件来满足基本的检查需求。然而,为了满足更多自定义需求,作者决定使用Node.js来进行Markdown文件的检查,因为它易于在GitHub pipeline中配置,并具有一些高级的面向对象特性。 博客中详细介绍了如何创建一个包含自定义规则的JavaScript文件,并在GitHub Actions中配置CI流程来对Markdown文件进行检查。这个过程包括在根目录下创建一个package.json文件,编写一个包含自定义规则的JavaScript文件,以及在GitHub Actions中配置CI流程。 通过这种方法,我们可以轻松地实现对Markdown文件的自定义检查,从而确保文件的质量和一致性。这对于维护一个包含大量Markdown文件的项目来说非常有用。 那么,如何将这种方法应用到你的项目中呢?你是否有其他方法来实现类似的功能?在阅读本篇博客后,你可能会对这些问题有更多的想法和启示。--GPT 4

GitHub node JavaScript GitHub Actions Continuous Integration

Raise up Visual Studio Code correctly in your C# client-side program

本篇博客讨论了如何在C#客户端程序中正确地使用Visual Studio Code。文章主要关注的是如何在一个编辑器中允许用户打开VS Code来编辑一个文件夹,而不是如何在VS Code中编写C#程序。博客提供了一个用户界面示例,展示了如何在C#程序中使用VS Code编辑文件夹。同时,文章还提供了一段代码示例,解释了如何利用`Process.Start`方法和`ProcessStartInfo`类来实现这一功能。 通过这篇博客,您将了解到在C#客户端程序中使用VS Code的正确方法,以及如何通过代码实现这一目标。这将有助于您在开发类似功能的应用程序时,能够更好地理解和应用这些知识。在阅读这篇博客后,您可能会思考如何将这些知识应用到您自己的项目中,以及如何进一步优化和改进这个功能。 那么,在实际应用中,如何确保用户能够顺利地使用VS Code进行编辑呢?您是否还可以尝试其他方法来实现这个功能?在开发过程中,您可能会遇到哪些挑战和问题?阅读全文,寻找答案吧!--GPT 4

C# VSCode WPF

Auto backup for Minecraft on Linux

This blog post discusses the process of creating an automatic backup solution for a Minecraft server hosted on Linux. The author first explores the Git solution, which consumes a lot of CPU resources when compressing objects, potentially impacting the game's performance. Due to these issues, the Git solution was abandoned. The author then moves on to the copy solution, which involves copying the world folder to another location. To implement this, the author uses tmux to run the Minecraft environment. The blog post provides step-by-step instructions on how to start tmux and run the Minecraft server within it, as well as how to exit and resume the terminal. Next, the author shares a script named backup.sh that automates the backup process. The script saves the game, copies the world folder to a backup location, removes older backups if necessary, and then resumes the game. The author suggests using a background job system like crontab to run the script and enable automatic backups. H...--GPT 4

bash Linux Minecraft Backup

Validate an object in any C# projects

本篇博客详细介绍了如何在C#项目中使用对象验证,以确保输入模型的有效性。文章首先讲解了如何在纯C#环境中使用验证,通过复制一个简单的函数来实现。接着,文章展示了如何在类定义中为属性设置验证规则,如:Required、MinLength和Range等。然后,文章讨论了如何在代码中使用这些验证规则,以及如何根据验证结果输出相应的错误信息。 在某些情况下,系统提供的验证规则可能无法满足特定需求。因此,文章还介绍了如何创建自定义验证属性。例如,验证属性不包含空格或换行符。通过创建一个自定义的验证属性类,我们可以实现这一需求。最后,文章提供了一个完整的示例代码,演示了如何在项目中使用对象验证功能。 在阅读本篇博客后,你是否对C#项目中的对象验证有了更深入的了解?文章中的示例代码是否能帮助你更好地理解如何使用和自定义验证规则?在你的项目中,是否有其他需求需要自定义验证属性来实现?如何利用本文介绍的方法来优化你的项目代码?--GPT 4

ASP.NET Core C# .NET Validation

在一秒钟内打开苏康码

在这篇博客中,我们探讨了如何在一秒钟内打开苏康码,摆脱支付宝和微信小程序的繁琐。首先,我们通过访问苏州公安局的官方网站获取苏康码,然后将获取到的URL复制到手机并固定到桌面。这样,当需要出示健康码时,可以快速打开。此外,我们还讨论了这种方法是否合法,以及是否可以在电脑上完成。结果发现,这种方法是合法的,因为我们仍然通过正常渠道获取健康码。同时,这个方法也可以在电脑上完成,为那些手机没电的情况提供了便利。 但是,这篇文章中介绍的方法已经失效,作者正在寻找替代方案。那么,有没有其他方法可以更快速地打开苏康码呢?在未来,我们是否能够找到更便捷的方式来展示我们的健康码,以减轻生活中的不便?期待你的探索和发现!--GPT 4

Web China Health Code

C# Play with GZip.

本篇博客详细介绍了如何使用C#编写一个扩展类,为字符串添加GZip压缩功能。首先,我们需要将给出的代码复制到项目中。代码包括使用System、System.IO、System.IO.Compression和System.Text命名空间,并定义了一个名为GZipExtensions的静态类。该类包含两个私有静态方法:Zip和Unzip,分别用于压缩和解压字符串。此外,还有两个扩展方法:UnZipBase64和ZipToBase64,它们分别将GZip压缩后的字符串转换为Base64编码,以及将Base64编码的压缩字符串解压缩。 当需要使用这些功能时,只需调用扩展方法即可。博客中提供了一个示例,展示了如何使用ZipToBase64和UnZipBase64方法压缩和解压缩一个字符串,并通过断言验证了压缩和解压缩后的字符串相同,以及压缩后的字符串长度确实减小。 这篇博客为我们提供了一个实用的C#扩展类,用于处理字符串的GZip压缩和解压缩。这种功能在处理大量文本数据时尤为有用,可以帮助我们节省存储空间和网络传输时间。但是,这篇博客还留下了一个有趣的问题:如何进一步优化这个扩展类,以提高压缩和解压缩的性能?这个问题值得我们深入思考和探讨。--GPT 4

C# .NET Compress GZip Base64

Directly talk to any enterprise Microsoft Teams user

在这篇博客中,我们发现可以直接与任何 Microsoft Teams(工作或学校)用户进行交流。在开始之前,您需要安装 Microsoft Teams(工作或学校)并使用工作或学校帐户登录。要购买它,请参考 Microsoft 365:[比较 Microsoft 365 企业计划](https://www.microsoft.com/en-us/microsoft-365/compare-microsoft-365-enterprise-plans)。 要找到一个人,方法非常简单。首先,您需要获取他的电子邮件地址。例如:[anduin@aiursoft.com](mailto:anduin@aiursoft.com)。然后,您将拥有以下地址:[https://teams.microsoft.com/l/chat/0/0?users=](https://teams.microsoft.com/l/chat/0/0?users=)。现在,您有了类似这样的链接:[https://teams.microsoft.com/l/chat/0/0?users=anduin@aiursoft.com](https://teams.microsoft.com/l/chat/0/0?users=anduin@aiursoft.com)。直接打开它,现在您就可以与他交谈了。 要找到一个机器人,方法与找人类似。前缀是:https://teams.microsoft.com/l/chat/0/0?users=28:(guid)。本文向您展示了如何轻松找到并与 Microsoft Teams 用户(包括机器人)进行交流。这种交流方式能否提高您的工作效率和沟通质量呢?在实际应用中,这种方法是否具有广泛的适用性和便利性呢?欢迎您阅读全文,发现更多有趣的内容并自行探索答案。--GPT 4

Microsoft Teams Microsoft 365

Use Windows as a stateless OS on your devices

本篇博客详细讲解了如何在设备上将Windows作为无状态操作系统使用。文章提供了一系列PowerShell脚本,用于优化和自定义Windows设置,包括更改桌面图标、禁用睡眠模式、启用中文输入法、移除蓝牙图标、调整文件资源管理器设置、设置时区和时间、调整鼠标速度、固定文件夹到快速访问、启用深色主题、清理桌面、设置网络连接属性以及启用远程桌面连接等。此外,文章还介绍了如何使用winget命令升级所有应用程序以及检查并安装Windows更新。 在阅读本文后,您是否会考虑使用这些脚本来优化您的Windows设备?这些设置对您的日常使用有何影响?在实践中,您还需要哪些其他自定义设置?请阅读全文,了解如何借助这些脚本让您的Windows设备更符合您的需求,并尝试自己寻找答案。--GPT 4

PowerShell Windows Windows 11 Automation Configuration Device Reimage

Why you should never use `Console.WriteLine`

本文讨论了为什么在编写库代码时应避免使用`Console.WriteLine`,并提供了一些替代方案。使用`Console.WriteLine`会将库与标准输出紧密耦合,并假设调用代码关注标准输出。然而,如果库代码被单元测试套件或使用不同日志记录范例的Web服务器调用,情况将会如何? 根据依赖反转原则,高级模块不应该依赖于低级模块,而应该依赖于抽象(如接口)。此外,抽象不应该依赖于细节,细节(具体实现)应该依赖于抽象。控制台是应用程序依赖的低级模块,而日志记录是与业务相关的高级模块。因此,日志记录不应该依赖于控制台,而应该有一些抽象,如`ILogger`接口,它描述了可以提供日志记录服务的对象。 使用`Console.WriteLine`的原因有以下几点: - 无法确保控制台始终被消费和阅读。 - 需要重建项目以支持更多日志记录服务,如文件、ApplicationInsights、数据库日志记录。 - 应该遵循依赖反转原则,不依赖于低级模块,如`Console.WriteLine`。 - GUI应用程序无效,但可能提供其他日志记录窗口,如输出窗口。 - 控制台日志记录在扩展服务器端应用程序时难以跟踪和诊断。 - 难以为日志设置级别、时间戳和来源。 解决方案包括: - 使用`ILogger`代替`Console` - 使用`ILogger`的各种方法,如`ILogger.LogInformation`、`ILogger.LogCritical`等。 本文还讨论了如何获取实现`ILogger`接口的控制台日志记录器,并提供了相关的代码示例。此外,还介绍了如何在不使用依赖注入的情况下获取日志记录器的最小代码。 最后,本文指出,在某些特定情况下,可以使用`Console`类,例如构建一个终端用户界面应用程序,该应用程序永远不希望标准输出流被重定向到控制台之外的地方,或者在实现支持控制台日志记录的`ILogger`时。--GPT 4

C# .NET Core Console App .NET Logging ILogger