星外之神 Blog

天下难事,必作于易;天下大事,必作于细

Qt Web Extractor 新增 MCP 支持:为 AI 编程助手提供高级网页提取

完整渲染复杂页面并输出干净 Markdown,为 Claude Code、OpenCode 等终端 AI 工具提供开箱即用的网页内容提取能力

背景 之前笔者写过一篇介绍 Qt Web Extractor 的文章,讲了这个项目是怎么用系统 Qt WebEngine 来做轻量级网页内容提取的。项目一直提供了 HTTP REST API 和 Open WebUI 的集成方式,给 AI 平台调用本来就不是问题——在 Open WebUI 里配置一下外部网页加载器,或者直接用 tool.py 作为自定义工具,都能很方便地让 LLM 获取网...

Arch Linux for Loong64 构建与调试的 AI 辅助 SKILL 编写记

为大模型建立准确的打包系统心智模型

前言 近年我们在为 Arch Linux 适配 LoongArch 架构(loong64)的过程中,遇到了大量软件包构建、移植和调试的挑战。Arch Linux 的官方打包体系底层依赖 devtools 和 archbuild 系列工具箱。虽然这套构建工具非常强大,利用 systemd-nspawn 容器和 Btrfs 快照实现了极高的环境隔离性,让宿主机保持干净整洁,但它的复杂性也带来了...

PvZ-Portable 输入系统与主循环优化:原生字符合成与 Web 端延迟修复

解决跨平台开发中的输入响应与事件派发问题

引言 在之前完成基于 Emscripten 的浏览器端适配后,PvZ-Portable 终于填补了跨平台版图的最后一块。引擎此时已经能在 PC、移动端乃至纯 Web 环境中跑通基础流程。但对于游戏移植而言,完成编译只是第一步,真正的考验在于如何抹平不同宿主环境对底层设施的入侵感。 在不同平台的细微体验打磨中,应用的输入处理和事件调度常常是重灾区。近期,笔者主要对 PvZ-Portable...

Qt Web Extractor:轻量级的跨平台网页内容提取工具

专为LLM和自动化工具打造,基于系统Qt WebEngine,告别臃肿的独立浏览器依赖,支持PDF文本解析

网页内容提取的痛点 目前给 LLM 平台提供网页提取或者搜索功能的 API 一般依赖于 Playwright 或 Puppeteer 等技术。这些技术十分强大,能够完美处理动态网页,但也带来了一个显著的问题:过于笨重。 它们通常要求在使用时下载体积庞大的独立完整浏览器二进制文件,在运行时也需要启动完整的浏览器进程。对于一套仅仅用来抓取文本的后端服务来说,这不仅占用了较多的磁盘存储和执行内...

PvZ-Portable:禅境花园性能优化——实现应用层系统调用缓存并修复 Wine 上游回归

time(0) 与 localtime() 热路径分析、逐帧缓存策略与为 Wine 11.4 修复上游化

引言 在 PvZ-Portable 的开发过程中,笔者遇到了一个诡异的性能问题:将 Wine 从 11.3 升级到 11.4 后,禅境花园的主画面帧率从正常的 100+ FPS 骤降至约 5 FPS。而其他所有场景——冒险模式、迷你游戏、商店界面——均流畅如常。 起初,笔者并没有立刻去 bisect Wine 的代码来盲查回归的 commit,而是首先通过对程序自身的性能分析与优化,直接...

PvZ-Portable:100% 复原的植物大战僵尸登陆浏览器——零安装即点即玩

将经典游戏全功能完美适配浏览器免安装运行(WebAssembly + Emscripten 技术详解)

现在,打开浏览器就能玩 经过 Linux/Windows/macOS、Android、iOS/iPadOS 的一轮轮适配,PvZ-Portable 已经可以在几乎所有主流平台上运行。但此前仍留下了一个终极平台——浏览器。 现在,PvZ-Portable 终于完成了 WebAssembly 适配,这一跨平台开源游戏引擎可以直接在 Chrome、Firefox、Edge、Safari 等现代...

PvZ-Portable:100% 复原的植物大战僵尸正式支持 iOS/iPadOS

在 iPhone 和 iPad 上运行完整的 PvZ 引擎——纯 C++ 的跨平台移植实践

引言 在完成 Android 适配后,PvZ-Portable 已经在 Linux、Windows、macOS、Android、Nintendo Switch 等平台上运行。现在,iOS/iPadOS 也加入了这个大家庭——你可以在 iPhone 和 iPad 上运行 100% 复原的开源版植物大战僵尸了。 与 Android 适配不同,iOS 适配不需要任何 Objective-C 或...

PvZ-Portable:进军 Android——将 100% 还原的植物大战僵尸年度版带到手机上

社区开源引擎实现的 Android 适配全纪录

引言 在之前的项目总览和 GLES2 渲染后端迁移中,笔者介绍了 PvZ-Portable 如何将《植物大战僵尸:年度版》的引擎带向 Linux, macOS, Windows 等各大平台。其中,GLES2 迁移尤其关键——将渲染后端统一到 OpenGL ES 2.0 这一最小公共子集,使得 Android 适配在图形层面成为可能。 然而,GPU 能渲染只是万里长征的起点。尽管 Andr...

植物大战僵尸社区开源实现(PvZ-Portable):通过通道级音量控制实现单流音乐系统

MOD 音乐的通道级音量控制、动态打击乐切换与音符残留修复

引言 在之前的文章中,笔者介绍了 PvZ-Portable 渲染后端统一迁移到 OpenGL ES 2.0 的过程。而除了图形渲染之外,音乐系统同样是游戏体验的核心。《植物大战僵尸》的关卡音乐是一套较复杂的动态音乐系统,会根据战场上僵尸的数量实时淡入打击乐轨道(鼓组和镲片),在战斗激烈时制造紧张感。 这套动态音乐机制的正确实现经历了一段曲折的过程:从社区贡献者的首次修复,到因笔者发现回归...

PvZ-Portable:多语言资源包支持

BOM 处理、字体 Unicode 化到 CJK 自动换行与禁则处理……一个完整的国际化踩坑记录

引言 在之前的文章中,笔者介绍了 PvZ-Portable 项目——一个跨平台的《植物大战僵尸:年度版》开源重实现。项目一直以来以英语版 1.2.0.1073 为标准资源包进行开发和测试。然而,宝开官方实际上发布过多种语言的 GOTY 版本——德语、西班牙语、法语、意大利语,以及至今仍有争议的中文版。这些版本的资源文件在编码方式、文本格式和 UI 布局上都与英语版存在不同程度的差异。 社...

在 OpenWebUI 中配置强大的代理式高级检索取代传统 RAG

实现大语言模型外部搜索引擎与网页加载工具调用集成

前言 随着大语言模型能力的不断提升,如何让模型有效获取并利用实时网络信息成为了各大 LLM 平台的核心关注点。传统的检索增强生成(RAG)方案虽然在一定程度上解决了模型知识范围和时效性的问题(笔者曾在之前的博客中介绍),但其固有的信息损失依然显著:搜索结果经过分块、嵌入、向量检索等流水线处理后,模型最终只能看到零散的片段,而非页面的完整上下文,模型也无法在信息不足时主动发起更多搜索。 A...

PvZ-Portable:修复 MOD 音乐暂停恢复倒退与鼓点泄露

从 Stop+Replay 到 PauseMusic/ResumeMusic,以及 Order/Row 精度与通道数边界的修复

引言 PvZ-Portable 使用通过 SDL Mixer X 集成 libopenmpt 来播放原版《植物大战僵尸》中的 MOD 格式背景音乐(.mo3 文件)。MOD 音乐不同于常规的 OGG、MP3 等流式音频,它采用的是音序器格式(Tracker format):将乐曲划分为若干个 Order 乐曲段号,每个 Order 对应一个 Pattern 乐谱,Pattern 内部由逐行...

PvZ-Portable:修复僵尸植物存档恢复后的贴图错误

修复资源 ID 反查映射中一个指针与值的混淆以及 64 位平台的未定义行为

引言 在 PvZ-Portable 中,有一个只在特定条件下才会出现的 Bug:当场上存在植物僵尸时进行存档,读档恢复后,这些僵尸会多出一个重叠的普通僵尸头部——本该被隐藏的默认头部贴图重新显示了出来,与植物头部叠在一起,看上去非常怪异。 植物僵尸在存档后读档恢复时的贴图错误在植物头后还错误地渲染了一个普通僵尸的...

从 urllib 到 Qt WebEngine:在无头环境中获取正确 Bing 搜索结果

GUI-Less Bing Search 开发中解决搜索结果异常问题的技术历程

前言 在上一篇文章中,笔者介绍了 GUI-Less Bing Search 项目——一个在无头环境中通过 HTTP API 搜索 Bing 的工具。 在开发这个项目的初期,为了保持轻量,笔者最初尝试使用 Python 的 urllib 直接请求 Bing 搜索页面。然而,在实际测试中,笔者遇到了一个奇怪的现象:Bing 返回的搜索结果与搜索词完全无关。经过一系列排查,最终笔者切换到了 Q...

GUI-Less Bing Search:在无头环境中搜索 Bing

提供 OpenWebUI 可用的标准 search_web API 的无 GUI 搜索工具

前言 在服务器、容器、嵌入式设备等无图形界面的环境中,用户经常需要查找网上的信息,但没有浏览器可用。虽然可以通过 SSH 转发 Wayland 等方式远程使用浏览器,但对于频繁的简单查询场景来说过于笨重。 为了解决这个问题,笔者开发了 GUI-Less Bing Search——一个在无头环境中通过 HTTP API 搜索 Bing 的个人工具。它使用 PySide6 调用 Qt6 We...

PvZ-Portable 渲染后端迁移:统一的 OpenGL ES 2.0

用最小公共子集实现最大兼容性和良好性能

引言 在之前的文章中,笔者介绍了 PvZ-Portable 项目——一个将《植物大战僵尸:年度版》带向所有平台的开源重实现。项目使用 SDL2 和 OpenGL 替代了原版的 DirectX 7 渲染,实现了跨平台支持。 然而,原有的 OpenGL 渲染后端存在一个架构问题:PC 平台和 Switch 平台各自维护一套独立的渲染代码,逻辑高度重复却又各有差异,维护成本较高且容易引入不一致...

PvZ-Portable:修复《Zombies On Your Lawn》MV 的随机背景贴图错误

从资源加载策略到 OpenGL 纹理重建:一个跨越三层逻辑的蝴蝶效应 Debug 实录

引言 在 PvZ-Portable 项目中,曾经存在一个令人摸不着头脑的 Bug: 当玩家播放《Zombies On Your Lawn》MV(即主题曲/通关字幕/制作人员表)时,画面的背景图即开始出现混乱与错位——屋顶的背景变成了草地,白天的变成了黑夜,甚至出现花屏。更诡异的是,一旦播放过这个 MV,即使退回到主菜单重新开始正常游戏,游戏里的关卡背景也会全部错乱。如果不播放 MV,一切...

PvZ-Portable 优化实录:从 6 秒到 1.5 秒的启动速度提升

记一次针对类 Unix 平台下的文件大小写不敏感 I/O 性能优化

背景:大小写敏感的历史包袱 在之前的文章中,我介绍了 PvZ-Portable 项目。作为一个以 100% 还原原版体验为目标的项目,我们必须面对大量历史遗留问题。其中最让人头疼的一个,就是资源文件名的大小写混乱。 原版游戏是为 Windows 开发的。众所周知,Windows 默认是大小写不敏感的。这意味着代码里写 LoadImage("Reanim/Zombie.png"),而在硬盘...

PvZ-Portable:跨字节序存档互通与解决 2038 年问题

实现大端序与小端序存档兼容与妥善处理时间戳溢出

前言 在上一篇文章中,笔者介绍了全新的 v4 存档格式,解决了不同架构间存档互通的难题。 然而,存档格式只是数据交换的协议,游戏引擎本身的运行时逻辑也需要适应不同的硬件特性。在 PvZ-Portable 中,笔者还完成了两个重要的底层改造:大端序与小端序存档互通以及2038 年问题(Y2038)的妥善处理。 这两个改动不仅让 PvZ-Portable 能在 PowerPC (如 PS3...

PvZ-Portable v4 存档格式:实现跨架构关卡内无损存档

实现跨架构/跨平台且完美保存关卡内状态的游戏存档系统

引言 在之前的文章中,笔者介绍了 PvZ-Portable 项目。这是一个致力于将《植物大战僵尸:年度版》带向所有平台的开源重实现研究项目。 实现跨平台不仅仅意味着让代码在 Linux、Windows、macOS 上编译通过,更意味着用户体验的一致性。而这其中最关键的一环,就是存档的互通性。 试想一下,你在 Linux 上玩了一半的无尽生存模式,出门时希望能把存档转到 Switch 上...

PvZ-Portable:跨平台植物大战僵尸重实现

近乎100%复现植物大战僵尸年度版体验的开源引擎,支持Linux、Windows、macOS、Android、iOS/iPadOS、浏览器(WebAssembly)等多平台

PvZ-Portable 笔者在大一时曾经尝试写过 Python 版植物大战僵尸。那时候笔者还在起步阶段,用 Python 和 Pygame 做了一个简单的练习,主要目的是学习 Python 和面向对象编程。那个项目虽然能玩,但在还原度上和功能完成度上存在不少局限。 时隔几年,随着技术栈的深入,在开源社区前人大量代码1 2的基础上,笔者带来了一个强大得多的新项目 —— PvZ-Porta...

在不替换/重映射字体的情况下配置Wine的UI字体

Wine的字体配置技巧

前言 在使用Wine运行Windows应用程序时,默认的UI字体有时可能不符合用户的审美或阅读习惯,尤其是当Linux系统安装了宋体时,Wine往往会优先使用宋体作为UI字体,这会显得界面十分不协调。 传统上,解决这个问题的方法是通过替换或重映射字体文件来强制Wine使用特定的字体,比如将宋体等字体指定为所需要的字体,例如Noto Sans CJK SC。然而,这也会导致所有Wine程序...

Vala 数值计算实践:月球位置算法

探索月球运动的复杂性——计算月球位置与相位的 Vala 实现

前言 欢迎回到 Vala 教程系列!1 在之前的文章中,我们探讨了如何使用 Vala 语言结合 Meeus 算法来计算太阳的位置。太阳的视运动相对规律,将其视为遵循开普勒定律的二体问题(地球绕太阳公转)并辅以少量长期摄动修正项,即可获得相当高的精度。 然而,当我们把目光转向夜空中的月亮时,情况就变得复杂得多。月球的运动是著名的“三体问题”的一个实例。月球不仅受到地球引力的主导,还受到太...

ocrmypdf:从扫描件到可检索文字的PDF/A的方法

对纯图片PDF嵌入文字的软件推荐

前言 ocrmypdf 是一个开源的命令行工具,用于将扫描或其他方式制作的纯图 PDF 文件转换为可搜索和可选中文本的 PDF 文件。它通过集成 Tesseract OCR 引擎,自动识别扫描件中的文字,并将其嵌入到 PDF 中,从而实现全文搜索和复制功能。ocrmypdf 支持多种语言和字符集,适用于各种类型的文档处理需求。 在某些 LLM 的 API 不支持直接处理图片 PDF 的情...

利用Android手机硬件进行高效灵活的编解码

在Termux中启用硬件加速视频编解码

前言 本文介绍了如何在Termux中启用MediaCodec硬件加速,以充分利用Android手机的硬件资源进行媒体编解码。 随着移动设备性能的提升,手机已经能够胜任越来越多的计算密集型任务。在短视频行业的驱动下,手机的视频解码能力得到了显著提升;同时,用户对高清摄影的要求也促使硬件厂商不断优化其视频编解码性能。如今,手机的硬件编解码越来越强大,能够越来越省电、高效地处理高清视频...

将远程Wayland应用窗口转发到本地

利用Waypipe实现远程无桌面环境的单个Wayland GUI应用的本地显示

前言 本文介绍了在远程的Linux机器上只有Wayland相关依赖但没有运行桌面环境的情况下,如何将远程的Wayland GUI应用程序窗口转发到本地Wayland显示出来。 笔者是Arch Linux for Loong64的维护者,但是事实上笔者手边并没有属于自己的龙芯物理机。笔者一直通过SSH远程连接龙芯武汉提供的编译机和同学手里的龙芯机器进行工作。对于非GUI的测试,笔者...

优化 Wikipedia 太阳位置简化公式

接着上一篇继续整活

前言 在上篇博客《Vala 数值计算实践:高精度太阳位置算法》中,我们深入探讨了 Jean Meeus 算法在 Vala 中的实现。这是一个基于天体力学解析模型的“黄金标准”,精度极高(RMSD 仅 0.0030°)且计算也很高效,但其输入依赖儒略日(Julian Date),还需要理解平近点角、真黄经等专业概念,这对不熟悉天文学历元的读者来说,可能门槛较高。 今天,我们转向另一个方向:...

Vala 数值计算实践:高精度太阳位置算法

以 Meeus 算法为例的 Vala 数值计算探讨

前言 Vala 语言以其将高级语言的便利性与C语言的原始性能相结合的特点,在桌面应用开发领域(尤其是 GNOME 生态)备受青睐。然而,它的能力远不止于构建用户界面。Vala 编译到C的本质,使其在需要高性能的数值与科学计算场景中,同样是一个值得考虑的强大选项。 本文旨在探讨 Vala 在科学计算领域的应用潜力。我们将以一个经典的天文学问题——精确计算太阳在天空中的位置——作为核心案例,...

程序检测自身是否在Wine中运行的方法

Wine环境下程序自我检测

前言 某些时候,我们可能希望程序能够检测自身是否在Wine环境下运行。部分开发者可能需要据此做一个环境的统计,分析通过Wine运行程序的用户比例。 然而,对于功能适配,Wine官方建议我们仅检测功能支持情况,而不应当检测是否在Wine中运行。本文介绍的方法仅为暂时可行的技术手段,但任何检测程序在Wine下运行的方法都不受Wine官方推荐,并且将来可能会在没有任何警告的情况下失效。 本文...

Arch Linux设置默认内核启动项

在GRUB中为Arch Linux设置默认启动项

前言 不少Arch Linux用户可能都会安装多个内核,比如同时安装linux、linux-lts和linux-zen等。然而,GRUB的默认配置中GRUB_DEFAULT=0,会选择按照一定规则排序的第一个,排序规则在Arch Linux下一般由/etc/grub.d/10_linux指定,默认如下: reverse_sorted_list=$(echo $list | tr ' ' ...

在使用Meson为构建系统的项目中处理多调用CLI

保证跨平台且与Meson集成的前提下妥善管理多调用CLI的复杂构建

前言 Meson是一个功能强大的构建系统,旨在简化软件项目的构建过程。然而,Meson本身并没有内置对多调用二进制的直接支持。 多调用二进制指的是一个可执行文件可以响应多个不同的命令。程序在运行时检查它被调用时使用的名称(即argv[0]),然后根据这个名称决定执行哪个功能。典型例子就是BusyBox,它将大量常用的Unix工具(如ls, cp, grep, ps等)集成在...

GTK4/Vala 教程:构建现代桌面应用

GTK/Vala 开发基础教程 3

前言 欢迎来到这篇 Vala 和 GTK4 的实战教程!1 许多入门教程止步于“Hello, World!”或简单控件演示,这样一方面各部分间缺乏组织逻辑,不便进行复杂演示,另一方面也难以指导读者开发一个真正实用、现代、体验良好的应用。本教程将通过一个完整的项目案例,带你从需求分析、界面设计、核心算法、异步网络、数据导出等多个维度,系统梳理依托 GLib/GObject 世界生态的 Va...

利用LLM辅助总结Arch Linux for Loong64开发进展报告

使用LLM轻松总结开发进度

前言 目前Arch Linux for Loong64一般会在龙架构双周会上向开发者交流开发进展,并且在龙芯社区合作部的“龙芯爱好者社区”官方的BiliBili账号及微信公众号上公开。但是笔者考虑到这样的形式下每一期的内容较为分散,不变集中对比查证,因此笔者也计划在LoongBBS中发布帖子,集中记录每一期的开发进展。 由于BBS不仅面向开发者,也面向普通用户,因此信息侧重有所区别。同时...

在Linux下使用Wine运行ChemDraw/Chem3D

在Linux下无缝使用ChemOffice化学组件的复杂功能

前言 ChemOffice是一个广泛使用的化学绘图和分子建模软件套件,包含ChemDraw和Chem3D等组件。然而,ChemOffice官方并不提供Linux版本,这使得Linux用户在使用这些工具时面临挑战。幸运的是,Wine可以帮助我们在Linux上运行ChemOffice组件,且效果优良,不仅可以使用ChemDraw进行化学结构绘制,还可以使用Chem3D进行分子建模、MM2力场优...

Wine WoW64下的渲染库配置

解决Arch Linux的Wine切换到WoW64后部分Windows应用的渲染问题

前言 Arch Linux近期(2025.06.16,extra/wine 10.9-1)将Wine切换到了WoW64(Windows 32-bit on Windows 64-bit)模式,以移除对Linux系统下32位库(lib32-*)的依赖。这一变更虽然简化了系统的维护,但也导致了一些Windows应用在渲染方面出现问题。部分应用无法显示渲染内容而黑屏,另外还有一些应用渲染十分缓慢...

解决宿主使用Tailscale出口节点后Libvirt虚拟机无法联网的问题

虚拟网卡冲突与MTU问题

前言 在使用Tailscale的出口节点功能时,可能会遇到Libvirt虚拟机无法联网的问题。这通常是由于Tailscale与Libvirt的虚拟网卡配置冲突所导致的。本文将介绍如何解决这一问题。 问题描述 Tailscale在使用出口节点时,会将所有流量通过Tailscale网络转发。Libvirt虚拟机通常使用virbr0网桥作为默认网络接口,当virbr0网桥(一般是192.16...

在virt-manager中配置VirGL GPU加速以启动Waydroid

在虚拟机中启用GPU虚拟化并套娃使用Waydroid

前言 Waydroid是一个在Linux上运行Android容器的项目,在Arch Linux下可以很方便得通过AUR或者archlinuxcn软件源安装。(Arch Linux的官方内核均已启用binder模块,因此Waydroid开箱即用)笔者并不经常使用Waydroid,而且也不喜欢Waydroid将大量启动文件放到KDE Plasma的起动器中,因此笔者选择将Waydroid运行在...

在Linux下使用Wine构建与测试Windows应用

在Wine环境中使用Meson/Vala构建GTK应用并进行测试

前言 许多开发者倾向于使用Linux作为主力开发环境,但在开发需要支持Windows平台的应用程序时,为了验证程序的跨平台兼容性,通常还需要切换到Windows下进行编译和测试,反复重启切换系统会非常不便。本文将介绍一种通用方法,通过配置Wine环境,在Linux下实现针对Windows平台的各类应用的构建与测试。本文方法实际上不仅仅局限于特定的工具链与语言,也可以用于其他需要在Windo...

为Arch Linux for Loong64设计的AI平台

利用Open WebUI与RAG技术构建基于开源大模型的AI助手

前言 随着Arch Linux for Loong64项目的不断发展,我们积累了越来越多的开发文档,并形成了一套相对完整的开发流程和社区习惯。为了更好地服务于Arch Linux for Loong64的开发者与用户,笔者搭建了一个AI平台,旨在为Arch Linux for Loong64的开发者与用户提供帮助。 该平台目前仅向可访问北京大学校园网的Arch Linux for Loo...

配置并使用AIChat

利用安装便捷且功能强大的命令行工具与LLM API高效交互

前言 AIChat是一款开源命令行大语言模型工具,主要用于高效集成和调用各类AI模型。它以Rust编写,支持跨平台安装,并通过多种包管理器或预编译二进制快速部署。它统一接入了20+主流AI服务(如OpenAI、Claude、Gemini等),提供多样化交互方式:直接生成Shell命令的CMD模式、支持自动补全的交互式REPL聊天、结合外部文件的RAG增强问答,以及通过函数调用扩展的自动化工...

在LobeChat中使用Gemini 2.5 Pro

快速简单配置使用Gemini 2.5 Pro API

前言 Gemini 2.5 Pro是Google最新(截至2025.03.29)推出的一款强大的推理模型,在多项测试中表现优异。 Google Gemini 2.5 Pro与其他模型测试结果对比 目前,Gemini 2.5 Pro的API已经免费开放使用,但是Gemini的网页端尚未集成这一新...

Arch Linux for Loong64 项目 Debuginfod 调试符号服务正式上线!

Loong Arch Linux 的 Debuginfod 服务上线公告与使用说明

我们很高兴地宣布,经过北京大学学生 Linux 俱乐部维护团队的持续努力,Arch Linux for Loong64 (新 Loong Arch Linux) 项目的 Debuginfod 调试符号服务已全面部署并稳定运行。即日起,所有用户均可通过简单的升级,在 gdb 等调试工具中无缝、自动地获取调试符号包,大幅提升开发与调试体验! 什么是 Debuginfod? Debuginfod...

解决ThinkBook 14+ 2025在Linux上的疑难杂症

修复触摸板、集显驱动等问题

前言 笔者在昨天(2025年3月7日)ThinkBook 14+ 2025首发日购入了一台ThinkBook 14+ 2025。这台电脑搭载了Intel Core Ultra 200H系列处理器,并复用了去年的模具设计。笔者选购的是高配的Ultra 7 255H版本。 然而,笔者在将自己使用的Arch Linux操作系统迁移到这台电脑上时,发现仍存在很多兼容问题。本文将记录这些问题以及解...

PDF/SVG格式转化工具

基于Cairo/Poppler/Rsvg开发强大高效的多线程PDF/SVG转换工具

项目 GitHub 地址:PDF/SVG Converter 本文涉及的代码采用 LGPL v2.1+ 协议公开发布 前言 笔者最近发现 Cairo 在 Vala 语言中的集成非常方便,于是用 Vala 写了一个 PDF/SVG 格式转化工具,基于 Cairo/Poppler/Rsvg 开发,并实现了高效率转化。 写这个项目的一大原因是现有的 ImageMagick ...

GTK/Vala开发基础教程 2

使用GTK/Vala构建简单应用

本文采用CC-BY-SA-4.0协议发布,但本文代码采用LGPL v2.1+协议公开 前言 在之前的GTK/Vala开发基础教程发布后🕊了2年终于写了一篇后续。🥲🥲🥲 本文假设读者已经阅读了笔者的上一篇GTK/Vala开发基础教程,已经对GTK/Vala的基本概念有所了解。本文将通过简单的例子,展示如何使用GTK4和Vala构建一个简单的应用程序。本文的例子均与太阳☀️☀️☀️...

为龙架构的Arch Linux构建Chromium与Electron

借助社区力量维护龙架构的Arch Linux软件生态

前言 Chromium是一款开源的网页浏览器,是Google Chrome的开源版本。Electron是一个基于Chromium和Node.js的开源框架,用于构建跨平台的桌面应用程序。这两个软件包在Linux用户中非常受欢迎,但是在龙芯架构上的构建并不容易。 目前,清华的Chen Jiajie维护了适用于龙架构的Chromium补丁集。字节跳动的darkyzhou则基于Chen Jia...

新 Loong Arch Linux 项目发布公告

北京大学学生 Linux 俱乐部接手并重建的 Loong Arch Linux 项目全面对外发布

自 2025 年 1 月 1 日起,北京大学学生 Linux 俱乐部(LCPU)接手并重建的 Loong Arch Linux 项目全面对外发布。 新的维护团队与结构 LCPU 接手项目后,重新设计了维护结构,并借鉴 archriscv 社区 的经验,从头构建了更易于维护的补丁集式维护仓库与更强大易用的 devtools-loong64 开发工具。经过两个季度的试运行,目前维护工作已步入...

在systemd-nspawn容器中使用硬件加速视频编解码

nspawn容器中使用VA-API硬件加速

前言 某些情况下,我们存在在容器中使用硬件加速编解码视频的需求。本文将介绍如何在systemd-nspawn容器中使用硬件加速视频编解码。 原理 systemd-nspawn容器是一个轻量级的容器,它可以在不使用虚拟机的情况下提供隔离的环境。在容器中使用硬件加速视频编解码,需要将硬件加速设备映射到容器中。 方法 一般来说,硬件加速设备的设备节点位于/dev/dri目录下,例如/de...

Arch Linux for Loong64维护中可能用到Bootstrap构建方法

Arch Linux for Loong64软件自举构建基础指引

前言 有时候某些软件的构建往往会依赖自身进行编译,这时候就需要使用Bootstrap构建方法。 本教程仅简单列举一些新人相对容易理解的、常见的Bootstrap构建方法,对于复杂的问题,可能需要额外的具体研究。 注意事项 首次通过“不干净”的方法生成的软件包请勿上传,请将这一文件添加到本地仓库,再使用官方的构建文件(或者基于官方构建文件应用了我们补丁集中的补丁的),进行正式的打包,然...

配置SSH Agent Forwarding

使用SSH Agent Forwarding在远程服务器上安全访问仓库

前言 在远程服务器上访问仓库时,我们通常会使用SSH密钥来进行认证。但是,如果我们直接将私钥拷贝到远程服务器上,就会存在私钥泄露的风险。SSH Agent Forwarding是一种解决这一问题的方法,它可以让我们在远程服务器上使用本地的SSH密钥,而不需要将私钥拷贝到远程服务器上。 配置SSH Agent Forwarding 在ssh访问时启用SSH Agent Forwardin...