Anduin Xue
Anduin Xue

Anduin's Tech Blog

All Posts


应用商店、包管理……每天都会使用的东西有什么开发难度?

现代软件开发中,应用商店和包管理是我们每天都会使用的东西。然而,这背后隐藏着许多开发难题。安装一个包可能涉及到多个依赖关系,而这些依赖关系构成了一个有向无环图。基本需求包括避免重复安装相同的依赖、包与包之间的隔离、升级和降级的允许性、查询包的来源和版本等。全局包管理器如APT、yum和pacman可以解决这些问题,但是无法解决依赖冲突和破坏性的升级降级问题。分治思想将大问题拆分成小问题,例如将应用拆分成微服务,但是会带来包的重复安装和磁盘空间占用的问题。Nix是一个函数式的包管理器,通过不可变性和平坦的包存储解决了依赖冲突和包的隔离问题。Nuget则采用动态链接的方式解决依赖冲突。其他包管理工具如winget、snap和flatpak也有各自的解决方案。然而,包管理实际上没有万能解决方案,目前主流的做法是结合Monolithic的包管理、Docker和虚拟机来解决依赖冲突问题。虽然应用商店给我们带来了便利,但是背后的复杂性是巨大的。当我们开始自己分发软件时,才会意识到这个世界并不是那么简单。--GPT 4

Store nuget apt package manager Application Nix

在 2024 年学习汇编还有必要吗

摘要:本文讨论了操作系统和应用程序的诞生顺序,并介绍了依赖倒置原则和构建可插件应用程序的重要性。文章指出,操作系统和应用程序的诞生并不分先后,而是依赖于应用二进制接口(ABI)。ABI定义了应用程序如何与操作系统交互,是二者的桥梁。文章还探讨了操作系统的核心功能和抽象层的作用,以及汇编语言和操作系统课程对计算机科学理解的重要性。最后,文章回应了一个杠精的观点,指出应用程序并不一定必须依赖操作系统。--GPT 4


开放性问题 Windows 和 Linux 哪个更加安全?

Windows和Linux哪个更加安全?这是一个非常有趣的问题,但答案并不简单。本文探讨了Windows和Linux的安全策略和保障措施,并比较了它们在不同方面的安全性。Windows在默认情况下提供了多项保护措施,如BitLocker全盘加密、TPM硬件安全模块和Secure Boot等。它还集成了Windows Hello生物识别技术和UAC用户账户控制等功能。另一方面,Linux提供了LUKS2全盘加密和TPM保护密钥的功能,但Secure Boot在Linux中并不流行。Linux也有类似UAC的权限控制机制和开源的防病毒工具。然而,Linux的更新和软件分发依赖于各个发行版的包管理系统,而且用户需要自己配置防火墙规则。此外,Linux的开源特性使得代码透明,但也可能导致恶意代码的存在。总的来说,Windows在默认设置下对普通用户的安全性更高,而Linux对于懂得如何防御的用户来说提供了更高的定制性和开发上限。因此,哪个更安全取决于用户的需求、使用场景和技术水平。--GPT 4


在2024年发布一个Linux发行版还难吗

在这篇博客中,作者记录了最近与群友讨论自主研发操作系统的想法。他们发现,制作一个操作系统并不像想象中的那么困难。作者提到了ArchLinux和Gentoo这两个发行版,以及一个名为"linux-factory"的项目,它可以帮助用户定制自己的Linux发行版。然而,作者也提到了自己对滚动更新的疑惑,特别是对于Arch Linux用户来说,滚动更新可能会导致系统崩溃。作者还讨论了操作系统的稳定性和安全性问题,指出自己更倾向于使用稳定版本并定期进行升级。最后,作者提到了发行版的管理问题,包括如何处理软件包的版本和breaking change的问题。他认为,制作一个自主研发的操作系统需要大量的工程师和公司的支持。文章以提出问题的方式结束,让读者思考自己对操作系统的期望和挑战。--GPT 4


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

Setting up your own Docker image mirror

本文介绍了如何设置自己的Docker镜像镜像。首先,需要运行一个脚本来拉取和推送镜像到镜像镜像。然后,可以通过自己的镜像镜像来拉取镜像,而不是从源拉取。此外,还介绍了如何保护Docker镜像仓库,以防止未经授权的推送。最后,总结了通过设置自己的Docker镜像镜像所带来的好处,包括加快镜像拉取速度、降低存储需求和增加效率。通过使用私有镜像仓库,在中国境内可以快速、可靠地拉取镜像。--GPT 4

Caddy Docker Container Mirror Docker Hub

Run Linux Desktop experience in Docker container

在本教程中,您学习了如何在Docker容器中运行Linux桌面环境。这是一种简单的方法,可以在不在本地机器上安装Linux桌面环境的情况下尝试它。 首先,您需要安装Docker。无论您使用的是哪个操作系统(支持Windows、Linux、MacOS),您都需要在本地机器上安装Docker。您可以按照[官方Docker网站](https://docs.docker.com/get-docker/)上的说明进行安装。 然后,您可以选择从Docker Hub上拉取我构建的带有Linux桌面环境的Docker镜像,或者自己构建镜像。 如果您选择从Docker Hub上拉取镜像,可以使用以下命令: ```bash docker pull hub.aiursoft.cn/aiursoft/internalimages/remote-desktop:latest ``` 然后,您可以使用以下命令运行容器: ```bash docker run -d -p 33900:3389 --name remote-desktop hub.aiursoft.cn/aiursoft/internalimages/remote-desktop:latest ``` 现在,您可以使用远程桌面客户端连接到`localhost:33900`以访问Linux桌面环境。 如果您选择自己构建镜像,可以编写一个新的`Dockerfile`,内容如下: ```Dockerfile FROM ubuntu:22 EXPOSE 3389/tcp ARG USER=test ARG PASS=1234 ARG X11Forwarding=false ... ``` 然后,使用以下命令构建镜像: ```bash docker build -t remote-desktop . ``` 并使用以下命令运行容器: ```bash docker run -d -p 33900:3389 --name remote-desktop remote-desktop ``` 最后,您可以使用远程桌面客户端连接到`localhost:33900`以访问Linux桌面环境。 在Linux桌面环境中,您可以安装浏览器。使用以下命令: ```bash wget https://dl-ssl.google....--GPT 4

Ubuntu Remote Management Gnome Docker desktop

How to use C# to manage InfluxDB data

如何使用C#管理InfluxDB数据 本博客介绍了如何使用C#来管理InfluxDB数据。InfluxDB是一个专为处理高写入和查询负载而设计的时间序列数据库,是TICK堆栈的重要组成部分。InfluxDB适用于任何涉及大量时间戳数据的用例,包括DevOps监控、应用程序指标、物联网传感器数据和实时分析。 首先,您需要安装InfluxDB。可以按照官方网站上的说明进行安装,或者使用Docker运行InfluxDB。安装完成后,您可以通过`http://localhost:8086`访问InfluxDB UI,并使用启动InfluxDB时设置的用户名和密码登录。 接下来,您可以使用C#来管理InfluxDB数据。首先创建一个新的控制台应用程序,并添加InfluxDB客户端库。然后,您可以使用提供的代码来管理InfluxDB数据,包括配置InfluxDB连接、创建存储桶、写入日志和查询数据。 最后,您还可以在网页上查询数据。提供了一个Flux查询示例,您可以使用该查询在网页上查询数据。 通过阅读本博客,您将学会如何使用C#来管理InfluxDB数据。快来尝试吧! 问题:您如何使用C#来管理InfluxDB数据?您还可以在网页上查询数据吗? 注意:本摘要根据原始博客内容编写,不含作者信息。--GPT 4

C# Database Docker InfluxDB

How to setup CUDA environment for Docker on Ubuntu?

如何在Ubuntu上为Docker设置Nvidia环境? 本文介绍了如何在Ubuntu上设置Nvidia环境以便在Docker中使用GPU。首先,您需要确认系统是否检测到Nvidia GPU。然后,安装适合您的设备的Nvidia驱动程序。接下来,安装Docker并添加Nvidia Container Toolkit以实现在Docker中使用GPU。最后,您可以使用一个示例来测试GPU设置是否成功。 通过执行命令`sudo lspci | grep NVIDIA`,您可以确认系统是否检测到Nvidia GPU。然后,您可以使用`sudo ubuntu-drivers list`或`sudo ubuntu-drivers list --gpgpu`命令列出可用的驱动程序。根据您的需求,您可以选择自动安装或手动安装驱动程序。安装完成后,您需要重新启动系统并使用`nvidia-smi`命令验证驱动程序的安装情况。 安装完驱动程序后,您可以使用以下命令安装Docker: ```bash curl -fsSL get.docker.com -o get-docker.sh CHANNEL=stable sh get-docker.sh rm get-docker.sh ``` 接下来,您需要安装Nvidia Container Toolkit。您可以按照Nvidia官方文档提供的步骤添加Nvidia Container Toolkit的存储库并进行安装。 最后,您可以通过运行一个带有GPU burn测试的Docker映像来测试GPU设置是否成功。您可以克隆`gpu-burn`存储库,构建Docker映像,并运行GPU burn测试。 除了测试GPU设置,您还可以使用Docker-Compose共享GPU。您可以创建一个`docker-compose.yml`文件来配置共享GPU的Docker服务。 本文提供了一个示例CUDA应用程序的Dockerfile和源代码。您可以根据需要自定义这些文件。 通过本文,您将了解如何在Ubuntu上为Docker设置Nvidia环境,并且可以使用GPU进行加速计算。阅读全文以获取更多详细信息,并开始在Docker中使用Nvidia GPU吧! 问题:您如何在Ubuntu上为Docker设置Nvidia环境?如何测试GPU设置...--GPT 4

NVIDIA CUDA GPU Docker

第三届Anduin编程大赛

本文介绍了第三届Anduin编程大赛的竞赛题目:初级文件系统与Raid。参赛者需要使用C\C++\Rust\Go\Erlang\C#\Java语言编写,使用FUSE实现文件系统,并支持SATA、NVME、USB、SD卡等设备。实现的文件系统需要支持文件的创建、删除、读取、写入、扩增、截断、权限控制,以及软件Raid0、Raid1、Raid5。评分标准包括性能、事故的恢复能力、Raid0的速度增益、能否作为系统盘等。文章还推荐了几个库供参赛者参考。--GPT 4


Web 应用开发检查单

这篇博客提供了一个 Web 应用开发检查单,旨在确保你的业务系统是安全、稳定、快速、可扩展、自动化的。检查单包括了网络配置、权限配置、运维策略、DevOps、容器化、应用开发、应用体验和合规性等方面。它可以帮助你确保服务器的网络安全和性能,减小权限,快速恢复业务,自动化部署和容器化,代码是否存在各种攻击的风险,以及是否符合各种合规性。该检查单详细介绍了每个方面的最佳实践,并提供了一些有趣的问题来启发读者思考,如:你的应用是否支持黑色主题和大字体?你的代码是否可能产生违反 GDPR 或 CCPA 的行为?该检查单可以帮助你确保你的业务系统是符合最佳实践的,从而提高你的业务系统的质量和可靠性。--GPT 4

Web Linux Cloud Server Container Service Development

Ubuntu 22.04 Network Diagnostic Handbook

This article provides a comprehensive guide on how to diagnose network interfaces in Ubuntu 22.04. It covers various methods, such as using the `ip` command, checking the routing table, and testing HTTP connections. The article also introduces the `networkctl` command, which supports various operations like renewing DHCP leases and bringing interfaces up or down. The author provides step-by-step instructions and examples to help readers follow along. Overall, this article is a useful resource for Ubuntu users who need to troubleshoot network issues.--GPT 4

Linux Ubuntu Network NetworkManager Networkd Netplan