Anduin Xue
Anduin Xue

Anduin's Tech Blog

精选文章


Run Windows on Linux for best experience

在Linux上运行Windows以获得最佳体验 这篇博客介绍了如何在Linux上运行Windows以获得最佳体验。首先,你需要解绑PCIe设备并将其离线以便通过。博客提供了一个脚本,让你可以轻松地完成这个过程。然后,你需要更新initramfs并重新启动系统。为了确保PCIe设备已经离线并准备好进行传递,你可以运行一个命令来验证隔离状态。此外,博客还提到了当你只有一个GPU时,离线GPU可能会导致显示变黑的问题,所以在离线GPU之前要确保你可以远程连接到机器。 博客还介绍了如何为虚拟机启用安全启动和模拟TPM。对于启用安全启动,你需要在虚拟机的XML配置中添加一些行。对于启用模拟TPM,你需要安装swtpm并在虚拟机的XML配置中添加一些行。 如果你在使用Windows虚拟机,博客还提供了如何安装VirtIO驱动程序以提高虚拟机的性能。你需要从官方网站下载VirtIO驱动程序,并将其添加到虚拟机的存储中进行安装。 最后,博客还提到了如何调整Windows虚拟机以获得更好的性能。通过在虚拟机的XML配置中添加一些行,你可以启用某些性能功能。 通过阅读这篇博客,你将了解如何在Linux上运行Windows以获得最佳体验,并学习到了一些有关虚拟化和性能优化的技巧。你可能会思考如何进一步优化虚拟机的性能,以及在使用虚拟机时可能遇到的一些挑战。 你是否想过如何在只有一个GPU的情况下离线GPU而不影响显示?你是否尝试过在虚拟机中启用安全启动或模拟TPM?如何进一步优化虚拟机的性能?这些问题将激发你对博客内容的思考,并引导你进一步探索和学习。--GPT 4

Linux Windows qemu virt manager

Using SwinIR for Image Super-Resolution Reconstruction

使用SwinIR进行图像超分辨率重建 本文介绍了如何使用SwinIR进行图像超分辨率重建。SwinIR是基于Swin Transformer的图像恢复模型,在经典/轻量/实用的图像超分辨率、灰度/彩色图像降噪和JPEG压缩伪影去除等任务中实现了最先进的性能。以下是使用SwinIR进行图像超分辨率重建的步骤: 1. 购买一块显卡:强烈建议在开始之前购买一块显卡,Nvidia GeForce RTX 4090是一个不错的选择。 2. 配置基本容器:编写一个基本的Dockerfile,包括Pytorch和相关依赖项。 3. 配置SwinIR容器:基于基本镜像配置一个SwinIR容器,并安装SwinIR的依赖项和模型。 4. 运行容器:将要处理的图像放入输入文件夹,并运行容器进行图像超分辨率重建。 使用SwinIR进行图像超分辨率重建可以恢复老照片、增强低分辨率图像甚至改善监控视频的质量。通过这项技术,您可以获得更清晰、更详细的图像。--GPT 4

NVIDIA Ai CUDA Docker Resolution Image SwinIR Restore

UWP 一个技术上成功但商业上失败的框架之死;一个现代的操作系统究竟应该提供什么?

本文探讨了UWP(通用Windows平台)框架的技术优势与商业失败。UWP框架解决了许多Windows操作系统面临的问题,如应用商店、版本管理、依赖管理、存储空间管理、自动更新等。然而,尽管技术上表现出色,UWP在商业上却未能取得成功,原因包括:市场份额丧失、应用质量不高、开发难度较大等。 在现实中,UWP已经失去了市场竞争力,许多开发者和用户放弃了这个框架。微软自家的UWP应用质量也不高,功能稀缺,导致用户对UWP的印象普遍不佳。此外,开发一个UWP应用的难度并不低,许多开发者更愿意选择其他框架。 总之,尽管UWP在技术上具有诸多优势,但由于商业上的失败,它已经失去了生存的希望。新的开发框架MAUI正在崛起,但它放弃了UWP的优点,回归了Win32的开发模式。这让人不禁思考,未来的应用是否还会面临类似UWP的命运。--GPT 4

C# Microsoft Windows Microsoft Store UWP

Install your own NFS ESXI storage server

本篇博客详细介绍了如何安装和配置自己的NFS ESXI存储服务器。通过一系列步骤,我们将学习如何配置网络,安装DHCP服务器,安装Cockpit以监控服务器状态,以及如何在Vsphere中挂载服务器。文章详细阐述了每个步骤的操作方法和注意事项,以图文并茂的形式展示了操作过程。 在配置网络部分,我们将学习如何在NFS服务器和ESXI服务器之间建立连接,以及如何通过桥接多个光纤端口来简化管理。为了提高性能,我们可以使用光纤直接连接ESXI主机和存储服务器。同时,我们还将安装DHCP服务器,并进行相应的配置。 Cockpit是一个可以帮助我们监控服务器状态的网络门户,我们将学习如何安装和配置Cockpit,以便在浏览器中查看服务器的网络和磁盘使用情况。在Vsphere部分,我们将学习如何为ESXI主机准备挂载NFS存储,并在VCenter服务器中添加新的存储。 最后,我们将使用CrystalDiskBench对存储性能进行基准测试,以确保10Gbps网络能够达到最大速度约1200MB/s。在整个过程中,我们需要密切关注网络使用情况和磁盘使用情况。 通过阅读本篇博客,您将能够掌握搭建NFS ESXI存储服务器的方法和技巧。那么,为什么我们需要在网络中安装额外的DHCP服务器呢?如何在浏览器中访问Cockpit并监控服务器状态?阅读全文,您将找到答案。--GPT 4

Linux Storage NFS VMware ESXI Vsphere Dell IPMI Debian Server

Install Nextcloud on a Ubuntu 20.04\22.04 server

本篇博客详细介绍了如何在Ubuntu 20.04/22.04服务器上安装Nextcloud。文章分为17个步骤,包括安装所需的软件包、配置数据库、创建Nextcloud目录、设置权限、配置Apache、安装和配置SSL证书、设置大文件上传、配置Cron、调整数据存储位置、完成区域设置、完成电子邮件设置、完成Redis设置、设置备份、设置反向代理(可选)以及设置GPU。 文章还提供了一些有趣的问题,以吸引读者阅读并启发思考。例如,在调整数据存储位置时,如何确保在重启后云仍然可以正常工作?在设置备份时,如何自动运行备份脚本以确保数据安全?在设置反向代理时,如何避免出现问题? 通过阅读本篇博客,读者可以了解到如何成功安装和配置Nextcloud,以及如何根据自己的需求进行一些额外的设置。在文章的最后,作者还提到了如何为Nextcloud添加GPU支持,以便在安装了识别应用程序的情况下提高性能。 现在,你是否对在Ubuntu服务器上安装Nextcloud感兴趣?是否想知道如何通过这些设置来优化你的Nextcloud实例?快来阅读全文,自己找到答案吧!--GPT 4

Web Linux Ubuntu IT Apache2 PHP MySQL Certbot Nextcloud Storage

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

Validate an object in any C# projects

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

ASP.NET Core C# .NET Validation

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

本篇博客文章介绍了如何在不使用USB驱动器的情况下,与现有操作系统并行安装Windows 11。首先,需要获取Windows 11的ISO文件并找到其中的Install.wim(或Install.esd)文件。接下来,在计算机上创建一个新的、干净的分区,用于安装新的Windows系统。然后,提取install.wim(esd)文件到新分区,并为新Windows添加启动项。最后,重启计算机,在启动菜单中选择新安装的操作系统即可。 在完成这个过程的过程中,你可能会遇到一些问题。例如,如何选择正确的Windows版本进行安装?如何确保新分区足够大以容纳新的操作系统?如何正确地将install.wim(esd)文件提取到新分区?以及如何确保新分区能够正常启动新的操作系统?本文详细解答了这些问题,并提供了相应的解决方案,如使用7zip打开install.wim(esd)文件,查找适合的Windows版本;使用磁盘管理工具创建新分区;以及使用命令行工具(如dism和bcdedit)完成文件提取和添加启动项等操作。 在阅读本文后,你将能够顺利地完成Windows 11的并行安装,无需依赖USB驱动器。但在实际操作过程中,你可能还会遇到其他问题,如何解决这些问题?尝试阅读全文,从中找到答案。--GPT 4

Windows 10 PowerShell Windows Windows 11 Install DISM Bcdedit Boot BCD

FFmpeg 用法概览

本篇博客概括了FFmpeg的用法,包括视频转码、硬件加速、直播推流、整合视频和音频、修改视频分辨率、调整视频速度、剪取视频的一段时间、用ffmpeg扣取一个视频区域、反转视频等。文章详细介绍了每个操作的命令和参数,并给出了示例。此外,博客还推荐了SRS项目和flv.js,用于搭建直播平台和在网页里加载FLV直播流。通过阅读本文,您将了解如何使用FFmpeg进行各种视频操作和直播推流,实现类似Bilibili直播的播放体验。那么,您准备好尝试这些功能了吗?或许您可以思考如何将这些技能应用到您的项目中,为观众带来更好的观看体验。--GPT 4

bash FFmpeg

C# run tasks in a threads pool with fixed size

在本文中,我们将探讨如何在C#中使用固定大小的线程池运行任务。首先,我们提供了一个`CannonQueue`类,该类使用`SafeQueue`来存储待处理的任务,并使用`RunTasksInQueue`方法来并行执行这些任务。为了能够动态地向任务池中添加任务,我们修改了`QueueNew`方法,使其在添加任务时重新启动引擎。同时,我们还提供了一个`QueueWithDependency`方法,以便在需要访问诸如数据库或HTTP之类的依赖项时保持依赖项处于活动状态。 最后,我们展示了如何注册`CannonQueue`作为单例依赖项,并如何在实际应用中使用该服务。例如,我们可以使用`QueueNew`方法将下载任务添加到队列中,并利用`RunTasksInQueue`方法并行执行这些任务。此外,我们还可以使用`QueueWithDependency`方法来处理具有依赖关系的任务,例如使用Entity Framework的任务。 那么,如何在实际应用场景中高效地利用这个线程池呢?本文提供的方法是否足够满足您的需求,还是需要进一步优化?在实际开发过程中,可能会遇到哪些挑战和问题?希望这篇文章能够启发您的思考,帮助您找到解决方案。--GPT 4

C# Async Task Multi-Threading

Fire and forget in ASP.NET Core with dependency alive

在C#中,实现fire and forget非常简单,只需使用Task.Run(() => FireAway())。然而,在ASP.NET Core控制器中,这种方法可能并不合适。当我们在控制器中触发一个耗时的任务,任务将作为fire-and-forget成功启动。但在处理HTTP响应后,控制器可能会被释放,这意味着依赖项可能不再存在,因此任务可能无法完成。 为了在触发任务时始终保持依赖项处于活动状态,我们需要创建一个新的服务来包含它,这个新服务必须是单例的,因为单例服务永远不会被释放。我们需要在服务中获取依赖项,而不是在控制器中,因为控制器的生命周期依赖于HTTP上下文,而单例服务则不依赖。 创建一个新类CannonService,并在StartUp.cs的ConfigureServices方法中将其注册为单例。在控制器中使用时,只需将CannonService注入到控制器中,然后调用一个依赖于某些耗时操作的函数。这个方法不会阻塞当前线程,可以直接向客户端返回结果,而发送器在发送邮件时始终保持活动状态。 作者已将上述代码发布为一个Nuget包。你可以在这里查看源代码:[Aiursoft.Canon](https://gitlab.aiursoft.cn/aiursoft/canon/-/tree/master),也可以在这里下载包:[Nuget.org](https://www.nuget.org/packages/Aiursoft.Canon/)。 这篇博客分享了在ASP.NET Core中实现fire and forget的方法,以及如何确保依赖项在任务执行过程中保持活动状态。那么,你是否考虑过在自己的项目中使用这种方法来优化性能呢?--GPT 4

ASP.NET Core C# Async Fire and forget

Best-practice after creating a new Linux server

在这篇博客中,我们探讨了在创建新的Linux服务器后进行身份验证的最佳实践。文章详细讲述了如何确保服务器的安全性,包括使用SSH密钥、创建强密码以及限制不必要的服务等方面。同时,博客还提供了一些实用的命令和技巧,帮助读者轻松地完成身份验证过程。在阅读本文后,您将了解到如何在创建新的Linux服务器后实施有效的身份验证策略,以确保服务器的安全和稳定运行。 文章引发了一些有趣的问题,例如:如何在不同的Linux发行版中实现类似的安全策略?如何确保在云环境中部署的Linux服务器同样安全?以及在遇到攻击时,如何快速识别并采取相应的防范措施?这些问题将激发读者思考更多关于Linux服务器安全的话题,并可能引导他们深入研究相关领域。 在阅读这篇博客时,希望您能够思考如何将这些最佳实践应用到自己的服务器环境中,以及如何根据实际需求调整这些建议。最后,您是否认为这些最佳实践足以确保服务器的安全,还是需要进一步探索其他方法来增强服务器的防护能力?我们期待您在阅读全文后,找到这些问题的答案。--GPT 4

bash Linux Ubuntu SSH