星外之神 Blog

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

分子印记聚合物

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权限,也支持软链接等特性: 因此意识到:现在在NTFS分区上是不是已经可以直接...

使用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。这样,Arch Linux就...

在本地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的视频转码功能,也体验了FFmpeg的其他用法。笔者用这篇博客来记录FFmpeg的基础使用方法,以便后续回顾。 简介 与笔者在上一篇博客中介绍的内容类似,FFmpeg也是一款开源的媒体处理工具。上一篇博客介绍的GhostScript主要用于处理PDF文件,而Imagemagick主要用于处理各种图片文件。而FFmpeg也可以对图片进行处理与转...

开源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库,又拥有较为现代...