BNU-FZH

fengzhenhua@outlook.com

在安装完成gitlab-runner后,发现如要直接部署到gitlabgitlab-runner无法正常工作,使用diary.sh发布博客时还需要设置一段代码检测gitlab-runner是否以普通帐号运行,如果不运行则使用 gitlab-runner run 启动,这个操作不规范,虽然用了一段时间,但是今天还是决定修复这个问题。造成这个问题的原因是,在安装gitlab-runner时其默认建立了一个名为gitlab-runner的帐号,但是这个帐号又不在root组中,这个权限问题导致了部署博客时gitlab-runner无法正常运行。

解决方法

  • gitlab-runner加入开机启动:
    1
    2
    sudo systemctl enable gitlab-runner.service
    sudo systemctl start gitlab-runner.service
  • 查看gitlab-runner进程:ps aux|grep gitlab-runner 可以查看到gitlab-runner的工作目录和默认用户等一系列相关信息。
  • 卸载gitlab-runner默认用户:sudo gitlab-runner uninstall
  • 建立gitlab-runner的工作目录:mkdir /home/.gitlab-runner
  • 将用户设置为rootgitlab-runner install --working-directory /home/.gitlab-runner --user root
  • 重启服务:systemctl restart gitlab-runner.service
  • 再次查看gitlab-runner进程:ps aux|grep gitlab-runner

注意:--working-directory 也可以在设置在任何您喜欢的位置,为了避免造成家目录的混乱,此处我设置在了/home/.gitlab-runner.

参考文章

Next主题默认检测网站根目录安装的插件,将其视为内部的插件,对于某些未通过npm安装的插件视为第三方插件。Next主题有一些特定的插件,而这些插件在CDNJS的镜像网站上一般没有适配的对应,而Next默认调用https://cdnjs.cloudflare.com的速度又不是足够快。所以要完全适配Next主题的专有插件,必须安装@next-theme/plugins, 这样适配Next主题的特定插件就会在托管的网站内部加载,这可以保证Next的各项功能正常工作。操作如下:

1
2
diary --ThemeUpdate
npm install @next-theme/plugins

先更新Next主题的目的是匹配最新的@next-theme/plugins, 于是可以保证主题内部插件工作良好。然而Next主题的一些部分还采用了图标,这些图标并不在@next-theme/plugins范围内,其中最重要的local-search插件也会受到影响,所以需要加载CDN网站到第三方插件。目前国内有很多 NPMCDN镜像,其中速度比较快,库比较全的CDN为:

其中Zstatic用到了镜像回源,也就是说只要访问一次,文件就会被存储到国内的服务器上,再也不用担心缓存过期了,所以网络文章建议优先用这个。Next配置文件为:

hexo-site/_config.next.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
vendors:
internal: local
plugins: custom
# custom_cdn_url: https://cdnjs.cloudflare.com/ajax/libs/${cdnjs_name}/${version}/${cdnjs_file}
# custom_cdn_url: https://cdnjs.onmicrosoft.cn/ajax/libs/${cdnjs_name}/${version}/${cdnjs_file}
# custom_cdn_url: https://mirrors.sustech.edu.cn/cdnjs/ajax/libs/${cdnjs_name}/${version}/${cdnjs_file}
# custom_cdn_url: https://s4.zstatic.net/ajax/libs/${cdnjs_name}/${version}/${cdnjs_file}
custom_cdn_url: https://cdn.iocdn.cc/npm/${npm_name}@${version}/${minified}
# custom_cdn_url: https://cdn.jsdelivr.net/npm/${npm_name}@${version}/${minified}
# custom_cdn_url: https://github.elemecdn.com/${npm_name}@${version}/${minified}
# custom_cdn_url: https://npm.elemecdn.com/${npm_name}@${version}/${minified}
css: css
js: js
images: images

安装@next-theme/plugins后,可以保证PDFNext主题依赖的插件由站内加载,其他部分则由cdn镜像加载,于是多数的镜像均可以正常使用了,为确保访问的稳定重新切换为s4.zstatic.net.

今天使用Pacman升级系统后发现Gnome-Shell版本从46升级到了47, 每次这个大版本的升级都会导致大量的Gnome插件版本失效,这个问题之前我使用了锁定Gnome版本的方法,但是由于软件的相互依赖,好像这个并不是最佳方法。于是有了这篇文章,我们决定把ArchLinux整体回滚到某个正常使用日期前的最佳版本,锁定日期后系统相当于停止滚动,待时机成熟(相应的插件都处理可用或某一必备软件得到升级)可以再进行整体的升级。

Arch Linux Archive 简介

Arch Linux 存档库(Arch Linux Archive,简称 ala),以前称为 Arch Linux 回滚机(Arch Linux Rollback Machine,简称 ARM),保存了官方仓库快照、iso 镜像和引导程序包的历史版本。

用途

  • 将某个包降级到某个早期版本(最新版本不能用,我需要之前的版本)
  • 将所有包恢复到某个指定的历史时刻(所有包都不能用,我要恢复到两个月之前的状态)
  • 查找某个历史版本的 ISO 镜像

Arch Linux 存档库

前四个源是官方源及全球的存档镜像,它保存了每一天的镜像,而后面两个分别是清华大学和北京外国语大学的存档镜像,它们每周存档一次。如果您指定的日期在两个国内存档源中时则使用这两个,因为速度快。如果您的指定日期不在它们之中,则使用前四个源中的某一个都可以,2024年09月21日使用第一个官方存档库回滚系统到2024年09月18日, 这是我的电脑正常工作的最新日期,测试的速度比较快。

ArchLinux 所有软件包降级到特定日期

假设您的 Arch Linux 系统在两天前运行良好且稳定。您今天运行了系统更新,它破坏了系统。因此,您可以将所有软件包降级到之前的特定日期,例如2024 年 9 月 18 日

1. 备份/etc/pacman.d/mirrorlist

/etc/pacman.d/mirrorlist
1
sudo cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak

2. 备份/etc/pacman.d/mirrorlist

/etc/pacman.d/mirrorlist
1
2
3
4
5
6
Server = http://archive.archlinux.org/repos/2024/09/18/$repo/os/$arch
Server = https://america.archive.pkgbuild.com/repos/2024/09/19/$repo/os/$arch
Server = https://asia.archive.pkgbuild.com/repos/2024/09/19/$repo/os/$arch
Server = https://europe.archive.pkgbuild.com/repos/2024/09/19/$repo/os/$arch
Server = https://arch-archive.tuna.tsinghua.edu.cn/2024/09-16/$repo/os/$arch
Server = https://mirrors.bfsu.edu.cn/archlinux-archive/2024/09-16/$repo/os/$arch

1. 备份配置文件

1
sudo cp /etc/pacman.conf /etc/pacman.conf.bak

2. 修改/etc/pacman.conf

/etc/pacman.conf
1
2
3
4
5
6
7
8
9
10
11
[core]
SigLevel = PackageRequired
Server=https://archive.archlinux.org/repos/2024/09/18/$repo/os/$arch

[extra]
SigLevel = PackageRequired
Server=https://archive.archlinux.org/repos/2024/09/18/$repo/os/$arch

[community]
SigLevel = PackageRequired
Server=https://archive.archlinux.org/repos/2024/09/18/$repo/os/$arch

强制更新系统

仔细检查恢复日期, 保存并关闭文件。最后,更新数据库并使用命令强制 Arch Linux 更新:

1
sudo pacman -Syyuu

更新完成后,重新启动系统, 您现在已将所有包恢复到之前的特定日期(在我们的示例中为 2024年 9 月 18 日)。但是请注意,我们不建议使用过时的软件包,待您需要Gnome插件或其他特定版本的软件及时跟进更新后请及时将系统升级到最新,若出现问题则再锁定到最新的稳定系统日期,等待下一次全部软件稳定后再次更新。如果操作后可以保证一直稳定使用ArchLinux.

Gnome插件适配查询

此次研究锁定系统滚动日期的主要原因是:2024年09月21日升级后由于Gnome大版本升级导致插件hide-top-bar失效,所以请及时关注失效插件是否适配了当前版本,网址为:https://extensions.gnome.org/ 几个常用插件:

手动解决Gnome插件适配

在2024年09月21日升级系统后采用的锁定ArchLinux到指定日期的稳键策略,而2024年09月27日放开了更新后发现只有插件Hide Top Bar仍然没有适配,于是在百度后发现可以追加版本后修复,因为Gnome 47更新并没有大量改变java script接口,所以这个方法是可行的。具体修改为

/usr/share/gnome-shell/extensions/hidetopbar@mathieu.bidon.ca/metadata.json
1
2
3
4
5
6
7
8
9
{
"shell-version": ["45", "46", "47" ],
"uuid": "hidetopbar@mathieu.bidon.ca",
"name": "Hide Top Bar",
"settings-schema": "org.gnome.shell.extensions.hidetopbar",
"description": "Hides the top bar, except in overview. However, there is an option to show the panel whenever the mouse pointer approaches the edge of the screen. And if \"intellihide\" is enabled, the panel only hides when a window takes the space.\n\n- Press backspace to remove keyboard shortcut.\n- Log off and on again when there is an error after upgrading.",
"url": "https://gitlab.gnome.org/tuxor1337/hidetopbar",
"gettext-domain": "hidetopbar@mathieu.bidon.ca"
}

RSS订阅简介

RSS(Really Simple Syndication)订阅是一种允许用户跟踪网站更新的技术,无需频繁访问这些网站来检查是否有新内容。RSS是一种XML格式的标准,它允许发布者将摘要、链接和其他元数据打包成“feed”,供订阅者使用RSS阅读器(也称为聚合器或RSS阅读器)来接收。

以下是RSS订阅的一些关键特点

  • 内容聚合:通过RSS订阅,用户可以从多个来源获取信息,而不必逐个访问每个网站。
  • 自动更新:一旦有新的内容发布,RSS阅读器会自动下载更新,这样用户就可以立即看到最新信息。
  • 个性化阅读体验:用户可以选择他们感兴趣的站点进行订阅,并根据自己的喜好调整阅读列表。
  • 无广告干扰:RSS通常只包含文章标题、摘要和链接,不会包含网页上的广告或其他干扰元素。
  • 跨平台支持:有许多不同类型的RSS阅读器,包括桌面应用程序、移动应用和基于网页的服务,这使得RSS订阅可以在多种设备上使用。

使用RSS订阅的基本步骤

  • 寻找RSS源:大多数网站都会提供一个RSS图标(通常是橙色的),点击该图标可以获得网站的RSS feed链接。
  • 添加到RSS阅读器:用户需要将找到的RSS feed链接添加到他们的RSS阅读器中。
  • 阅读更新:RSS阅读器会定期检查已订阅的feed,并显示最新的条目。

RSS订阅对于那些希望高效管理来自多个来源的信息流的人来说非常有用。虽然随着社交媒体和电子邮件简报的流行,RSS的使用有所下降,但它仍然是许多用户获取新闻和博客更新的有效工具。

订阅ArchLinux新闻

由于ArchLinux是滚动升级模式,为了在工作中稳定使用,在升级前看一下有什么重大更新再决定是否升级是必要的。但是每次都到官网https://archlinux.org/查看消息有所不便,因此我想起了RSS, 到官网发现订阅地址为:

订阅百度新闻

百度新闻也是支持订阅的,其聚合订阅地址为:

Thunderbird订阅方法

帐户设置帐户操作新建新闻组帐户→主页面右键博客和新闻收取点订阅...收取点网址添加完成.

"Vortex" 和 "Spiral" 是两个不同的概念,尽管它们在某些情况下可能看起来相似或相互关联。

  1. Vortex(涡流): 涡流通常指的是流体(如水或空气)或粒子围绕一个中心点旋转的现象。涡流可以存在于自然界中,例如龙卷风或水下沉船周围形成的漩涡,也可以是在工程应用中如飞机翼尖产生的涡旋。涡流的关键特征是围绕中心的旋转运动以及由此产生的向内的吸力或向外的推力。

  2. Spiral(螺旋): 螺旋则是一种几何形状或运动路径,它是由一条曲线构成的,这条曲线从一个点开始,并围绕这个点逐渐远离或接近。螺旋可以是开放式的,也可以是封闭式的。开放式的螺旋会不断向外扩展,而封闭式的螺旋则可能会回到起点附近。螺旋并不一定涉及到旋转流体或者粒子,它可以描述任何按照螺旋轨迹运动的事物,例如螺旋楼梯或者弹簧。

总结来说,vortex 是一种物理现象,涉及到流体或粒子围绕中心旋转,通常伴随着向心或离心的力量;而 spiral 则是一个几何概念,描述的是沿着螺旋形路径的运动或形状。两者之间的联系在于,当流体形成涡流时,其流动路径可能呈现出螺旋形。

摘要和引言的定义

  • 摘要:是一篇论文或报告的简短概括,通常包括研究的目的、方法、结果和结论等,具有独立性和代表性。
  • 引言:是一篇论文或报告的开头部分,介绍研究的背景、意义、目的和范围等,同时也是引导读者进入正文的桥梁。

摘要和引言的区别

1. 定位和功能不同

摘要和引言在整篇文章中的位置和作用不同。摘要位于正文之前,是文章的开头,在整篇文章中起到概括和提醒的作用,是读者获取文章信息的重要途径。引言则贴近正文,是文章的起点,在整篇文章中起到引入和铺垫的作用,是文章主体和结论的前奏。

2. 内容和方式不同

摘要和引言在内容和表达方式上也有所差别。摘要的内容是全文的提炼和概括,通常会包括研究的背景、目的、方法、结果和结论等,其表达方式一般为客观陈述、无主观色彩。引言虽然也要介绍文章的研究背景和目的等信息,但更强调个人思考和观点,往往包含作者的主观判断和看法。

3. 长度和字数不同

摘要和引言的长度和字数有一定区别。摘要以简洁为宜,一般不超过300字,甚至可以缩减到一两句话,目的是使读者能够快速地了解全文;而引言则可以更加详细,一般在1000字左右,或者根据论文篇幅的不同而不同。引言的目的不仅仅是引导读者进入正文,更要对整个研究做总体的概括和阐述。

如何正确写作摘要和引言

正确写作摘要和引言是学术写作中必要的技能之一,下面简单介绍一些写作方法和技巧。

1. 摘要的写作方法

  • 精简必要信息:在摘要中只提取最核心的研究内容,不必涉及太多细节。
  • 确保逻辑连贯:不要出现排比句和逗号长句,保持摘要逻辑清晰。
  • 突出方法和结果:摘要应该突出论文的研究方法和结果,读者可以通过摘要快速获得研究重点。

2. 引言的写作方法

  • 明确研究背景和问题:引言应该明确研究所面临的背景和问题,概述当前研究的现状和不足。
  • 突出创新性:引言应该突出本次研究的创新性和价值,在阅读引言后,读者能够明白本次研究的意义和重要性。
  • 确定研究目的和范围:引言应该清晰地说明研究的目的和范围,便于读者理解整个研究的脉络。

摘要和引言FAQs

1. 能否将摘要和引言放在一起?

在一些专业性较弱的文章和报告中,可以将摘要和引言放在一起,但是在学术论文和专业技术类文章中,摘要和引言应该严格分开,各自起到应有的作用和功能,以便更好地表现全文的质量和价值。

2. 引言应该写多长?

引言的长度没有严格的规定,一般根据文章的篇幅和复杂程度而不同。但是,引言不应该过于冗长,应该以简洁明了、内容充实为标准。

3. 摘要应该写在前面还是后面?

摘要应该写在正文之前,让读者在开始阅读前就能够获得全文的概括和核心信息。一些期刊和学术出版物中,还会在正文之前附上关键词,以便读者更好地了解全文主题和范围。

结论

摘要和引言是学术写作中非常重要的概念和组成部分,能够帮助文章更好地表达思想和观点,增强文章的逻辑性和可读性。正确地理解它们的区别和使用方法,是学术写作者不可或缺的写作技能。我们希望本文的解读,能够对广大读者和学者在写作过程中有所启示和帮助。

Dotfiles 是我们在使用软件的时候,软件为了存储我们个人偏好设置而建立的一个以 . 开头的文件。例如,vim 的配置文件就是 .vimrczsh 的配置文件就是 .zshrc。这些文件通常存储在用户的 home 目录中。但是,在不同的电脑上工作时,如果需要使用相同的配置,我们可以考虑使用版本控制工具来管理这些文件。或者在一台新电脑上想快速配置好环境,也可以使用版本控制工具来管理这些文件。Yadm 就可以帮助我们完成这些需求。

安装

安装 yadm 非常简单,只需在终端输入以下命令:

1
sudo pacman -S yadm

首次使用

初始化 yadm 仓库

创建一个新的 yadm 仓库很容易,只需在 home 目录中运行以下命令:

1
yadm init

现在,yadm 已经创建了一个空白的 git 仓库。存储库位置/home/nic/.local/share/yadm/

添加 dotfile 文件

要将现有的 dotfile 添加到 yadm 仓库中,请使用以下命令:

1
yadm add ~/.zshrc

一旦您完成了对要添加的文件的更改并将它们添加到 yadm 仓库中,您需要提交它们。可以使用以下命令:

1
yadm commit -m "Add .zshrc file to yadm repository"

建立远程仓库

使用 yadm 还可以将 dotfile 文件同步到 GitLabGit 托管服务中。登录 GitLab,创建一个新的仓库。例如,您可以创建一个名为 dotfile 的仓库。现在,您需要将本地仓库与远程仓库连接起来。要将本地仓库连接到远程仓库,请使用以下命令:

1
yadm remote add origin git@gitlab.com:[用户名]/dotfile.git

现在 yadm 已经连接到您在 GitLab 上创建的仓库。要将本地代码上传到远程仓库,请使用以下命令:

1
yadm push -u orgin main

已经建立远程仓库的前提

1
yadm clone git@gitlab.com:[用户名]/dotfile.git

注意:由于远程仓库和本地仓库有可能分支名称不同,所以在建立的时候按照前述方式建立有可能会报错。为了防止错误,可以在远程先建立仓库dotfile, 然后再使用yadm clone命令克隆下来,这样可以避免很多麻烦。

参考文章

LaTeX自带了可以为文字外围加圆圈的命令\textcircled{}, 但是其显示效果并不好,所以本文解决这一问题。

重定义\textcircled

借用tikz宏包重新定义一下这个命令:

重定义\textcircled
1
2
3
\usepackage{tikz}
\newcommand*{\circled}[1]{\lower.7ex\hbox{\tikz\draw (0pt, 0pt)%
circle (.5em) node {\makebox[1em][c]{\small #1}};}}

调用pifont宏包

带圈的序号从110依次为

1
\ding{172}\ding{173}\ding{174}\ding{175}\ding{176}\ding{177}\ding{178}\ding{179}\ding{180}\ding{181}

参考文章

今天升级了Pacman后发现Paru不能正常运行了,报错

1
libalpm.so.14 cannot be found with pacman in [testing]

此问题已经在paruIssue中,即#1239. 采用Issuekug3lblitz的方案解决问题,即

1
sudo ln -s /usr/lib/libalpm.so.15.0.0 /usr/lib/libalpm.so.14

在编写LaTeX文件时,有时在章节中会使用一些特殊符号,比如: \(\mu\) 等。但是由于超链接宏包hyperref建立超链接的时候会导致错误。其警告信息为:

1
Package hyperref warning: Token not allowed in a PDF string (Unicode):(hyperref) removing 'math shift' on input line 2

解决方法:使用命令\texorpdfstring{#1}{#2}

参数#1为正文标题栏中显示信息,为\(\mu\), 参数#2为目录页中显示的信息,由hyperref引用,所以需要使用非特殊符号替换。例如:\texorpdfstring{\mu}{mu}