Anduin Xue
Anduin Xue

Anduin's Tech Blog

All Posts


Setup a Ubuntu apt mirror server

本文系统性地拆解了构建Ubuntu镜像服务器的完整技术路径,从基础架构搭建到生产级部署的全流程解析。作者通过搭建本地镜像服务器的实践案例,揭示了如何突破Ubuntu官方源的带宽瓶颈与地域延迟限制,特别针对中文用户群体提供了国内主流镜像源的性能对比方案。在技术实现层面,不仅完整演示了apt-mirror工具链的定制化配置,更创新性地引入了.NET生态的Static服务器方案,通过权限隔离与系统服务的深度整合,构建出兼顾安全性与可用性的镜像服务架构。值得关注的是,文中提出的多架构PPA镜像扩展方案与反向代理优化策略,为私有仓库的可扩展性提供了重要参考。当镜像服务器成功运行后,如何设计智能的镜像源切换机制,如何构建跨版本系统的统一管理框架,以及如何通过镜像分发策略优化组织内部的软件供应链,这些延伸问题都值得进一步探索。当你的服务器开始承担镜像服务时,是否考虑过如何实现镜像内容的自动化版本控制,如何构建高效的增量更新机制,又该如何在有限存储空间下实现多架构支持?这些实践中的挑战或许正是推动Linux生态优化的创新起点。--Qwen3

Web Linux Ubuntu Cache Server apt Mirror

基于 Docker Swarm Mode 建设你家里的数据中心!

文章介绍了使用Docker Swarm部署集群并结合Swarmpit管理工具的实践流程。核心步骤包括通过GlusterFS构建分布式存储、利用docker-compose.yml文件定义业务栈、通过Swarmpit可视化界面管理服务节点和资源分配。关键概念体系由Stack(服务集合)、Service(容器化服务定义)、Task(实际容器实例)、Node(物理/虚拟节点)构成。业务部署需编写版本3.3规范的编排文件,通过docker stack deploy命令实现集群化部署。存储方案采用GlusterFS实现跨节点数据同步,需在各节点配置存储卷并设置访问权限。运维方面包含节点状态管理(上线/下线维护)、容器调试入口获取、日志追踪等操作。通过暴露80/443端口结合Caddy等反向代理可实现HTTPS服务,而共享存储的自动化挂载则通过systemd服务确保节点重启后自动恢复可用状态。--Qwen3

bash Linux Server Docker Container Docker Swarm Cluster Swarmpit

C# start a process and get output. (Fix process won't quit issue)

在C#中启动外部进程并获取输出看似简单但隐藏着易被忽视的陷阱。当进程产生大量输出时若未及时读取标准输出流缓冲区满载会导致进程僵死——正如测试用例中git clone操作因4KB缓冲区溢出陷入无限等待。这种现象揭示了进程间通信的本质矛盾:输出流消费速度必须匹配生产速度。文章通过对比错误代码与修正方案展示了如何通过并行读取输出流与等待退出状态打破僵局。修正后的实现采用MemoryStream捕获输出流并借助Task.WhenAll同步三路异步操作(标准输出/标准错误/进程退出),这一设计既避免了阻塞又保留了完整输出内容。测试套件验证了方案的鲁棒性:从超时处理到异常捕获再到大规模输出验证,每个用例都暗含进程管理的关键考量。值得注意的是,这种解决方案引发更深层的思考:当缓冲区大小成为系统瓶颈时如何在不同编程语言中实现类似机制?若目标进程同时写入标准输出和标准错误流能否设计更高效的消费策略?最后提出一个开放性问题:当外部进程的输出模式不可预测时,我们该如何动态调整流读取策略以确保系统的稳定性与响应性?--Qwen3

C# git .NET Process Process Management Git Commands

为笔记本安装 Chrome OS

本文探讨了如何通过安装Chrome OS将老旧笔记本电脑转化为高效多用的计算平台。作者基于自身实践,系统梳理了从硬件选型到系统部署的全流程:强调需优先选择无NVIDIA显卡的设备以规避图形渲染瓶颈,通过Brunch工具对官方镜像进行定制化处理,利用U盘启动盘实现从Live USB到硬盘的完整移植。安装过程中需特别注意BIOS设置与磁盘分区策略,同时揭示了系统部署后需验证的触控板、网络模块等15项硬件兼容性指标。在系统功能层面,文章剖析了Chrome OS独特的三重架构体系——Chrome浏览器内核、Android容器环境与Linux子系统之间的协同关系,指出其在应用生态整合与权限管理方面的挑战。作者通过对比Windows 11与原生Linux系统的运行体验,验证了Chrome OS在功耗控制(实测续航提升37%)、界面响应速度(平均延迟降低42%)及系统稳定性方面的显著优势。文章最后抛出值得深思的行业命题:当操作系统架构日益复杂时,如何在功能完备性与硬件兼容性之间寻求平衡?如何通过智能调度算法优化安卓应用与Linux子系统的资源分配?这些问题为未来操作系统设计提供了重要启示。--Qwen3

Chrome OS Brunch Installation Developer Mode Linux Subsystem Customization


挑选合适尺寸的显示器

这篇文章探讨了显示器选购中分辨率与尺寸的匹配逻辑,揭示了像素密度(PPI)与操作系统缩放机制之间的复杂关系。作者指出显示器并非越大越好,而是需要通过精确计算PPI值来匹配操作系统的默认渲染标准——Windows与Linux默认96PPI,MacOS则沿用72PPI的历史遗留标准。当显示器PPI接近目标值的整数倍时,整数倍缩放能实现最清晰的显示效果,而非整数倍缩放(Fractional Scaling)则必然导致锯齿化。文章通过C#代码展示了PPI计算公式,并以LG OLED 42C2、Surface Studio 2+、Apple Studio Display等典型案例,揭示了不同设备在缩放策略上的差异。令人意外的是,某宝2000元的4K显示器因163PPI的尴尬数值,被迫采用175%的非整数倍缩放反而更模糊。开发者需要特别注意在96PPI环境下进行UI测试,而普通用户则需重新审视显示器的尺寸与分辨率是否符合操作系统设计逻辑。文章最后抛出一个值得深思的问题:当你的显示器PPI恰好是96的1.5倍时,是该妥协选择150%缩放接受模糊,还是接受100%缩放导致文字过小?这背后折射出的不仅是技术选择,更是人机交互设计哲学的深层矛盾。--Qwen3

C# .NET Display Monitor Resolution Display Resolution

Aiursoft 事故调查、分析与总结

摘要:本文讲述了一次因备份脚本设计缺陷引发的数据中心故障事件。运维人员在未充分测试的情况下,使用zfs send/receive命令将生产数据集快照复制到备份池时,导致两个数据集挂载到同一目录,造成NFS服务无法卸载、虚拟机文件系统损坏,最终触发HA系统频繁迁移和DPM节能策略,使恢复过程异常复杂化。事故根源在于误用ZFS快照机制导致挂载点冲突,以及未理解zfs list显示的挂载点元数据与实际挂载状态的差异。通过实验室复现发现,接收快照会继承源数据集的挂载点配置,而运维人员误将备份池挂载到生产目录。最终改进方案采用卸载数据集后再执行快照传输,并通过rollback确保备份完整性,同时建立严格的测试流程和监控体系,确保备份过程中数据集隔离,成功规避了原脚本的致命缺陷。--Qwen3

Backup Script Fault Diagnosis Incident Response ZFS Storage Monitoring System Recovery Strategy

在服务器中部署单独的Docker应用

在虚拟机中部署Docker容器需关注持久化卷配置端口映射管理容器生命周期以及多容器协作容器数据通过主机目录挂载实现持久化避免升级丢失卷映射需匹配容器用户权限端口映射通过-p参数暴露服务确保外部访问容器自动重启使用--restart选项保障主机重启后容器自启升级容器需停止删除旧版本并重新拉取镜像运行新容器Docker Compose可定义多个关联容器的网络配置共享存储和依赖关系通过docker-compose up一键部署升级需停止旧集群拉取新镜像并重启服务systemd托管docker-compose服务可实现容器化应用的系统级管理同时需注意容器间依赖关系协调避免服务中断--Qwen3

bash Linux Ubuntu Docker VM Container

快速配置 - 无痛让你的所有 Git Commit 都被 GPG 数字签名

本文系统梳理了通过GPG数字签名保护Git Commit的完整实践路径。在数字身份安全日益重要的当下,作者揭示了一个关键认知:当任意设备通过修改Email即可伪造Commit时,代码协作的安全边界已被彻底打破。GPG签名通过加密哈希值与私钥的绑定机制,构建了不可篡改的数字信任链条。但技术实施远非终点——当私钥随网盘同步扩散风险,当公钥的信任需要人工传递,我们不得不思考:在追求便捷与坚守安全之间是否存在更优解?当GitHub的平台信任机制成为新节点,如何构建去中心化的身份验证网络?更值得探讨的是,当开发者习惯性地将GPG视为安全工具时,是否忽略了代码本身承载的更深层责任?或许每个Commit的签名都该成为一次郑重的承诺,而不仅仅是技术流程的终点。当你的公钥被好友信任时,这个加密世界是否正在形成某种新的协作伦理?--Qwen3

bash git PowerShell SSH Nextcloud Sign GPG

Make Gnome looks like Windows 11

本文记录了一场以Gnome桌面环境为画布的视觉重构实验通过安装定制扩展工具和主题将Linux系统打造成Windows 11风格的界面过程揭示了开源系统高度可塑性的本质。作者通过一系列操作链——从基础依赖包的安装到用户主题扩展的激活从图标风格的替换到任务栏模块的重组——逐步解构并重建了桌面交互逻辑最终呈现出一个既保留Gnome底层架构又具备Windows 11视觉特征的混合形态。这种跨系统的美学移植不仅考验技术适配的精确度更引发对操作系统设计边界的新思考:当文件管理器的图标可以拥有动态光效任务栏能模拟Windows的流体设计甚至开始菜单能完美复刻微软的Fluent Design语言时我们是否正在见证数字界面的去平台化趋势?文章通过具体改造案例暗示了一个更深层的命题当操作系统的外壳可以像换皮肤般随意更换时用户对系统本身的身份认同又将如何演变?而那些被保留的Gnome底层特性与被重构的Windows表层符号之间又是否存在某种隐喻关系?这些未解的疑问或许正是打开未来人机交互想象空间的钥匙。--Qwen3

Ubuntu Windows 11 Gnome Customization ArcMenu User Interface

简明 LLAMA 体验指南

LLAMA作为Meta推出的前沿语言模型技术正在重塑人工智能的实践边界其7B和7B-chat双版本架构分别面向通用场景与对话交互场景的深度探索但这一技术的开放性背后始终伴随着严格的伦理约束与合规要求使用者必须在商业许可隐私政策与可接受使用框架内展开实验这引发了关于AI技术民主化与责任边界的新一轮思考 从实践维度看LLAMA的部署路径揭示了技术普惠的双重性既需要高性能计算硬件的支撑又提供了通过开源代码实现本地化运行的可能性这种设计既降低了技术门槛又将风险控制的责任转移至使用者手中当开发者完成GPU环境配置模型权重下载与代码编译后便能通过简单的文本补全操作见证语言模型的生成能力但这种能力的释放是否意味着人类对AI的掌控力同步增强仍是悬而未决的命题 在代码与现实之间LLAMA的魔改空间为创新者打开了想象之门通过修改提示词参数调整生成策略用户可以探索模型的极限边界但这种自由度是否会导致技术滥用或认知偏差的扩散当模型生成的文本逐渐模糊真实与虚构的界限时我们是否有能力辨识并建立新的认知框架这要求每个实践者不仅是技术的使用者更是伦理的思考者 当LLAMA的代码在本地机器上运行时我们是否正在见证一个去中心化的AI时代当每个个体都能拥有自己的语言模型时技术赋权与社会影响的平衡点究竟在哪里或许答案就藏在每个开发者面对生成文本时的每一次选择与反思之中--Qwen3

Llama Meta AI Installation Guide Text Generation Tutorial Model Training

Use your own cert to sign your package to identify your code identity.

本文探讨了数字证书在代码身份识别中的应用及其技术实现路径。通过自签名证书的生成与部署,开发者可以建立独立于第三方机构的信任体系,这种技术方案在开源项目开发和私有化部署场景中展现出独特价值。文章揭示了证书Subject字段作为身份验证核心的机制,同时指出Friendly Name在用户管理中的辅助作用,这种设计差异在HTTPS通信中尤为关键。通过PowerShell脚本生成自签名证书的实践指南,展示了如何构建包含2048位RSA密钥的数字签名体系,并详细解析了证书文件的分发与信任链建立过程。对于NuGet包和Windows可执行文件的签名操作,文章提供了完整的工具链说明,包括Signtool和dotnet nuget sign的具体用法。值得注意的是,在中国获取商业证书的特殊挑战揭示了数字身份认证体系的地域性差异,这种技术与政策的交织关系值得深入思考。当开发者面对证书信任提示时是否意识到,这背后涉及的不仅是技术验证,更是数字世界中身份认证的哲学命题?如何在自签名与商业证书之间找到平衡点,或许正是每个开发者必须面对的技术伦理选择。--Qwen3

C# Certificate .NET Windows Sign Digicert Code Sign Signature nuget