星外之神 Blog

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

分子对接

分子对接的基本介绍

本文初稿由New Bing根据Wikipedia (en)中的相关内容生成,采用CC-BY-SA-4.0协议发布 分子对接(macromolecular docking)是分子模拟的重要方法之一,其本质是两个或多个分子之间的识别过程,其过程涉及分子之间的空间匹配和能量匹配。分子对接方法在药物设计、材料设计等领域有广泛的应用。 背景 大多数蛋白质的生物学作用,例如它们与哪些其他大...

用EROFS进行存储与备份

试用EROFS文件系统

本文封面背景图采用CC-BY-SA-4.0协议,来源于Wikipedia 前言 本文主要讨论EROFS文件系统的使用 EROFS是一个只读文件系统,主要由Gao Xiang开发,在Linux 5.4中合并到主线内核。EROFS的设计目标是提供高性能、低资源开销的只读文件系统,设计上主要针对的场景是ROM、系统分区、应用分区等较轻量级的手机或者嵌入式环境。笔者在这里对ER...

在systemd-nspawn容器中root登录Arch Linux

容器使用

前言 在systemd-nspawn容器中使用root登录Arch Linux时,会发现即使输入正确的密码,也会提示密码错误。这是因为Arch Linux的安全策略仅允许root用户在console、tty1、tty2、tty3、tty4、tty5、tty6、ttyS0、hvc0这些终端登录,而容器中的终端并不在这些终端列表中。 解决方法 解决方法很简单,只需要在容器中的/etc/se...

使用FFmpeg进行声道调整

FFmpeg常用功能使用回顾

前言 平时,我们可能会遇到部分视频文件的音频使用的是5.1、6.1甚至7.1声道,一般封装在dts或ac3格式中,而我们正常压缩的视频往往不需要这样高保真的音频,可以采用AAC、MPEG或是OPUS等方式有损压缩,大幅节省音频空间。同时,我们一般的设备也不能够支持这么多声道,因此,我们可以将这些高保真的音频转换,压缩到2个声道,即左声道和右声道,这样可以大幅减小音频文件的体积,同时也避免了...

Markdown Math 及 mhchem 测试

在 Markdown 中使用数学公式及化学式

前言 本文主要讨论在 Markdown 中使用数学公式及化学式的方法 MathJax 在 Markdown 中使用 MathJax 的方法是在 Markdown 文件的头部添加以下内容: <script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"...

在QEMU User模式下测试龙芯新世界软件

轻量级龙芯新世界测试环境

前言 本文主要讨论使用 QEMU User 模式下测试龙芯新世界软件的方法 笔者之前写过一篇使用QEMU配置龙芯新世界环境,那篇文章主要介绍了如何在完整的 QEMU 虚拟机中运行龙芯新世界的环境,但是这种方法的缺点是只能利用宿主机的 4 个核心,因此性能较低;而且,完整模拟的方法环境较重,不够简洁。 本文在此提供一种更加轻量、更能利用宿主机性能的方法。 环境配置 本方法的轻...

Linux双音频设备输出

在Linux下实现双音频设备输出

前言 本文主要讨论在Linux下实现双音频设备输出的方法 方法 pactl命令可以用来控制音频输出设备,通过pactl list sinks可以查看当前的音频输出设备列表,通过pactl set-default-sink可以设置默认的音频输出设备。 我们还可以用pactl来实现双音频设备输出,执行: pactl load-module module-combine-sink...

分子印记聚合物

Wikipedia条目推荐

分子印记聚合物 分子印迹聚合物(MIP) 是一种是一种使用分子印迹技术加工而成的聚合物,该技术在聚合物基质中留下空腔,对选定的“模板”分子具有亲和力。制作 MIP 的过程通常涉及在模板分子存在下引发单体聚合,然后将模板分子提取出来,留下与之互补的空腔。这些聚合物对原始分子有亲和力,并且已经用于化学分离、催化或分子传感器等应用领域。相关研究可以追溯到20世纪30年代。 分子印迹技术的最新技...

小新笔记本的Linux控制调优

特异性调优方法

前言 本文主要讨论为小新笔记本的Linux系统添加一些控制调优的方法 电池养护模式 联想提供了一个管理工具,可以设置笔记本电池的养护模式,即让电池充电到55%-60%时停止充电,但这个工具只提供Windows版(笔者甚至在Windows下也没有安装这个软件)。 在Linux下,可以通过内核方法或者ACPI方法实现这个功能。 内核方法 小新的电池养护模式配置文件在/sys/...

Btrfs文件系统修复日记

记录作死之后的力挽狂澜的失败

前言 笔者最近在自己备用盘的Btrfs分区上疯狂作死,先是往同一个里面塞了5个Linux发行版,然后又把整个硬盘设备直接作为虚拟机磁盘使用,启动其中的Linux系统,又尝试在虚拟机的Windows中使用winbtrfs读取其中的内容,又在NTFS分区中安装Linux并将boot分区放在Btrfs中,还尝试同时在宿主机和虚拟机中挂载同一个Btrfs分区,最后在对外置的Btrfs分区有读写时尝...

将本地安装的操作系统作为虚拟机启动

使用QEMU及virt-manager启动本地安装的操作系统

前言 本文主要讨论使用QEMU及virt-manager启动本地安装的操作系统的方法 为了测试开源软件在龙芯架构上的适配情况,笔者在最近将自己所使用的虚拟机由VirtualBox切换到了QEMU,这才发现基于QEMU的虚拟机工具竟然如此强大,具有高度的可定制性。 笔者用QEMU及virt-manager实现了将本地安装的操作系统作为虚拟机启动的功能,在某些情况下可以有效避免多系...

在NTFS分区上安装Linux

使用Ventoy和ntfs3实现的对Windows系统全透明的Linux文件系统布局

前言 本文主要讨论在NTFS分区上安装Linux的方法 笔者实现了完全在Windows可以直接访问的分区上安装完整的Arch Linux操作系统 仅使用FAT与NTFS文件系统实现Linux的文件系统布局 笔者在Linux下使用NTFS时无意中发现现在的ntfs3似乎已经支持了较为完整的Linux权限,也支持软/硬链接等特性,还有ACL、透明压缩支持: 因此意识到:现在在N...

使用QEMU配置龙芯新世界环境

Loongarch新世界踩坑记录

前言 本文主要讨论使用QEMU配置龙芯新世界环境的方法 作为北京大学Linux俱乐部探索项目的重要组成部分,新架构处理器的软件适配工作是我们的重点工作之一。 QEMU配置 安装QEMU 首先,需要安装QEMU。 Linux 这里以Arch Linux为例: sudo pacman -S qemu-full 由于Arch Linux的软件都是最新版,这里不会存在因Q...

USB连接的SSD设备使用trim命令

为USB桥接的NVMe设备添加trim支持

前言 本文主要讨论USB连接的SSD设备使用trim命令的方法 trim命令是用于清除闪存设备上的无效数据的命令。trim可以将文件系统中的删除操作通知给闪存设备,以便闪存设备可以在后台擦除删除的数据。这样可以提高闪存设备的写入性能,也可以减小写放大,延长闪存设备的寿命。 对于USB桥接的NVMe设备,trim命令并不可用,然而,很多硬盘盒都支持类似的命令(unmap),可以通...

数据备份的方法讨论

Linux下的备份方式小结

本文封面背景图采用CC-BY-SA-4.0协议,来源于Wikipedia 前言 本文主要讨论Linux下的数据备份方式 rsync rsync是一个远程数据同步工具,可通过ssh或rsh传输数据,支持匿名传输,速度快,安全性高。 可按文件大小、时间等进行过滤 可使用include和exclude文件进行过滤 可使用--delete参数删除目标端没有的文...

Arch Linux安全启动的终极方案

共享分区下Ubuntu引导的Arch Linux系统

前言 Arch Linux是一个非常优秀的Linux发行版,但是它并不支持安全启动。虽然笔者的笔记本的安全启动长期处于关闭状态,但是笔者还是想把自己的移动硬盘打造成随处可用的移动系统,这就需要支持不依赖于特定设备注册是安全启动。因此,笔者就想到了一个办法,就是在Arch Linux上安装Ubuntu,然后使用Ubuntu的grub引导来引导Arch Linux,并直接使用Ubuntu的内核...

在本地Linux环境使用Gaussian

计算化学软件使用

在计算化学中,Gaussian是一款十分常用的软件,然而,笔者之前在本地Linux下使用它时,却一直出现段错误的报错提示,无法使用。 由于段错误一般是程序设计缺陷导致的,笔者之前一直以为Gaussian的Linux版程序有问题。 Gaussian的文件架构设计很容易让人联想到这点:Gaussian在Linux下的二进制文件具有.exe的后缀名,但是却真的是elf格式;都2023年了G...

使用Ventoy直接引导本地安装的Linux

高级Linux安装及引导方式

前言 Ventoy是一个多系统启动U盘解决方案。笔者首次接触Ventoy是软件开发初期Ventoy的作者在deepin论坛宣传,当时即感受到了这款软件的诸多强大之处: 不用像Rufus、Unetbootin等工具一样需要在更换U盘中的镜像时格式化,只需要重新拷贝镜像文件 支持在U盘中存放多个镜像,在启动时可自行选择 支持更多用于存放镜像的文件系统,如exfat、ntfs、x...

Vala中的类型系统简介

Vala语言知识介绍

Vala语言的类型系统较为多样,可能会让初学者感到困惑,但其实部分内容只是为了减小性能开销,表现上并没有太多区别(对于初学者只用struct和继承自GLib.Object的class其实就行了)。笔者在此对Vala中的类型系统进行简单介绍,可以用来了解那些不常用的类在什么时候有用QwQ。 Vala中的类型 继承自GLib.Object的类 非对象类 紧凑类 不透明紧凑类...

Vala中的所有权简介

Vala语言知识介绍

与Rust等语言类似,Vala中也有所有权的概念。Vala主要采用自动的引用计数进行内存管理,对于支持引用计数的类,需要关注其中有没有循环引用,如果存在循环引用,则需要手动使用week关键字标记,打破循环。Vala中还存在着一些没有在GObject类型系统中注册的紧凑类,这些类型往往不支持引用计数,Vala同样利用所有权与生命周期来管理它们。 本文主要介绍Vala中的所有权操作方式及其意义...

GUI版GtkPacker开发日记(一)

开发概要简记

说明 本项目是笔者的第一个GTK项目,这篇开发日志亦为笔者的学习日志。 大致设计 由于笔者预期到该项目的界面较为简单,而xml格式的UI描述文件的布局工具Glade已经停止更新,不再会支持GTK4,手动编写xml格式的UI描述文件的语法又不太友好,再加上Vala语言实际上相对简洁,笔者决定直接用Vala构建程序的图形用户界面。 然而,笔者在开发没多久便开始后悔没有采用UI描述文件了…...

GTK/Vala开发基础教程

基础教程

本文采用CC-BY-SA-3.0协议发布,但本文代码采用LGPL v2.1+协议公开 前言 本文假设读者已经掌握Vala语言的基本语法。如果对Vala的基本语法仍然不熟悉,推荐首先阅读Vala语言官方教程;如果在学习Vala语言前有C#、Java、C、C++等其他语言的开发经验,也可以阅读面向C#程序员的Vala教程或者面向Java程序员的Vala教程,阅读笔者的相关介绍性博客对快速了解...

使用Meson自动获取并写入软件版本信息

Meson构建工具使用技巧

Meson是GNOME社区目前主要使用的构建工具,也是Vala语言的推荐构建工具。Meson采用了类似于Python的语法,很多配置相比其他构建工具更简洁。 本文简要介绍在Meson作为构建系统的Vala程序中如何获取程序的版本号。 原理 对于C/C++这样预处理功能完善的语言,可以直接在Meson中传递-D编译参数定义含有版本信息的宏,进而方便地在程序中获取版本信息。 然而,Val...

FFmpeg的基础使用

FFmpeg常用功能使用回顾

简介 与笔者在上一篇博客中介绍的内容类似,FFmpeg也是一款开源的媒体处理工具。上一篇博客介绍的GhostScript主要用于处理PDF文件,而Imagemagick主要用于处理各种图片文件。而FFmpeg也可以对图片进行处理与转化,但它同时还具有视频与音频处理的强大功能。有不少视频播放器都以FFmpeg作为后端(例如VLC,以及一大堆国产的乱七糟八的播放器),也有大量的录屏软件使用FF...

开源PDF基础处理工具的使用

PDF处理工具推荐

PDF是一种常见的媒体格式,我们常常会有PDF处理的相关需求。Adobe的工具对PDF处理提供了大量的支持,但是因为其缺乏跨平台性,不能很好地在Linux下使用。事实上,有大量跨平台的开源软件具有强大PDF处理功能,本质上国产的一大堆付费的PDF处理工具也基本上都基于这些开源软件。笔者在此介绍部分使用开源命令行工具方便地处理PDF的方法。 相关软件及环境 本博客主要使用GhostScri...

探索Vala语言

Vala语言学习心得

未经特殊说明,本文中的所有代码均采用LGPL v2.1+协议公开 简介 Vala语言是一门专门为GObject对象设计的编程语言,语法类似于C#。Vala并没有自己的运行时,而是在编译时由Vala编译器将Vala源代码转化为C源代码,仅仅依赖C语言的基本特性,实现了现代语言的类型推断、lambda、class等各种高级功能。通常来说,基础的Vala程序的依赖仅有GLib和系统的C语言库,...

在Windows下打包GTK程序

一个简单的程序打包脚本

未经特殊说明,本文中包括的所有代码均采用LGPL v2.1+协议公开 背景 GTK是一个强大的部件工具库,可以用于开发图形用户界面程序。相比Qt、wxWidget等与C++语言深度绑定的部件工具库,GTK采用了纯C语言进行开发。而且,为了减轻开发的工作量,GNOME社区还为GObject对象特别开发了一种语法类似C#的语言——Vala,Vala背靠强大的GLib与GTK库,又拥有较为现代...

工艺化学

Wikipedia条目推荐

工艺化学 工艺化学是开发与优化合成方案和工业生产流程的药物化学分支,用于制造药物开发阶段所需要的化合物。其研究重点与主要负责在药物研究早期阶段中设计并较小规模地合成分子的药物化学有所区别。 一般来说,药物化学家主要专注于利用便于调节的化学构件中快速合成大量化合物(通常用于SAR研究)。而药物发现化学中使用的反应库一般较小(例如,Buchwald-Hartwig 胺化、Suzuki 偶联和...

在不借助oh-my-zsh的前提下进行Zsh配置

Windows(MSYS2)或Arch Linux平台下Zsh的配置

前言 Linux下最常用的Bash发布于1989年,在此后的发展中并没有引入太多么革命性的功能,已经是一款十分古老的Unix Shell了。虽然它仍然是众Linux发行版预装最多的Shell,但是它的扩展性也早已不如其他的Shell。 Zsh、Fish甚至从Windows下发展而来的PowerShell相较Bash而言都极具扩展性。其中,只有Zsh能够很好地兼容Bash的语法,所以,...

记录从Manjaro直接切换到Arch Linux的过程

折腾日志

说明 本文写于该切换完整完成后,并非实时更新,内容可能不能精确反映当时操作情况 更改镜像源 首先需要把/ect/pacman.d/mirrorlist改成Arch Linux的源,在中国可以直接改成: Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch Server = https://mi...