这里是我的小窝🐾

希望来这里的人能看得开心或是有所收获喵~

博文

这里有我所有的博文。

实现 Hexo 一键部署至个人服务器


本文写于 2022-05-27 18:06:46


TL; DR:

> npm install hexo-deployer-shell --save

追加以下内容到 _config.yml:
deploy:
  type: shell
  command: 'scp -i /path/to/your/id_rsa -r /path/to/your/hexo/public username@servername:/path/to/your/webroot'

> hexo d

完成!

正文

有了个人服务器之后,我就不太想把博客托管在 Github 上了。自己控制的东西更酷,不是么?

我之前一直使用 hexo g 一键部署到 Github ,但是如何一键部署到个人服务器上呢?谷歌了一圈,发现了以下几种方案:

  • 在服务器上安装 git 服务端,利用git上传

  • 做一个脚本,自动生成并上传

  • 手动上传

但是这三种都不尽人意。怎么才能继续用 hexo g 部署呢?

谷歌了一番,我找到了 Hexo 的插件页面。往下翻一翻,虽然没有找到 scp 的,但是找到了 hexo-deployer-shell 。既然是 shell ,那执行 scp 应该也不在话下。

根据文档安装好之后(其实就一行 npm install hexo-deployer-shell --save ),在 _config.yml 中追加写入以下内容:(如果之前配置过的需要删除)(由于无法指定密码,假设已经配置好了密钥登陆)

deploy:
  type: shell
  command: 'scp -i /path/to/your/id_rsa -r /path/to/your/hexo/public username@servername:/path/to/your/webroot'

注:如果服务器不想用 public 做目录名,那么在 scp 前加上 xcopy ,在 scp 后加上 rmdir ,临时改一下名即可。

然后敲进去 hexo d ,搞定!从此就用自己的服务器放博客了!

只是其中有几个小坑:

  • 第一次登陆服务器时需要手动在命令行里登陆,以便输入 yes 来确认远程服务器指纹;
  • 私钥文件需要设置好权限,不然 scp 会抱怨文件权限太开放:对于 Windows ,取消其他人的权限(包括 SYSTEM 和 Administrators 的),仅保留自己的完全控制即可;
  • 由于 scp 是一个一个地拷贝文件,不会增量更新,所以上传会很慢,尤其是对于比较大的博客。 Hexo 插件中有一个通过 rsync 来上传的,应该会快很多,到时如果需要换成它的话会再发一篇博文。

制作一个二固箱


本文写于 2022-05-27 09:30:21


最近购入了一台 LCD 光固化打印机,但由于光敏树脂在打印成型之后需要二次固化, Anycubic 的后处理机又太贵(原价 1k+ ,前几天打折后仍然需要 600+ ),我萌生了自己做一个二固箱的想法。毕竟,折腾的生活更好玩。

结构设计

二固箱二固箱,它就是个箱子。考虑到我打印机的打印尺寸为 47.5 x 29 x 27 cm³ (HWD) ,在淘宝搜索了一番之后选定了 28 x 20 x 17 cm³ 的塑料箱。太大的箱子家里放不下,正好我一般不打印比较大的物体(如果真的有的话就开着盖,一次固化半个吧 (笑) ),这个尺寸刚刚好。

为了保证模型被充分照射,以及为了保护塑料(不知道这种塑料被紫外线照射之后会不会分解),决定在塑料箱内壁贴满铝箔,然后在铝箔上贴好紫外线灯带。

物件购买

象牙白塑料箱:

象牙白塑料箱图片

一卷铝箔胶带(100μm):

铝箔胶带图片

一个 12V 5A 的电源:

电源图片

一盘 5 米,每米 60 灯,电压 12V 的紫外线灯带:

灯带图片

灯带特写图片

还有一个 DC5525 公头,由于太小,就不单独拍照了。

组装

首先是用铝箔胶带贴满箱子内部(请忽略后面杂乱的东西):

贴满铝箔胶带图片

稍稍检查一下,还有些漏光,不过毕竟是10块钱的箱子,贴合不太好:

内部图片

看看用了多少胶带,差点以为买的不够用了:

胶带纸图片

经计算,紫外线灯带可以在箱子内壁上缠 8 圈,结合 15cm 的高度,每 2cm 贴上一圈灯带比较好:

贴好灯带图片

看,又是一大坨背胶纸:

背胶纸图片

然后是焊好电源公头。完成!

完妆照

完妆图片

效果

效果图片

可能是由于手机摄像头内部镜片/结构之类的原因,照片非常蓝,实际上是蓝偏紫色的效果。

此次 DIY 共花费 100.60 元,效果还不错!

Hexo 本地与远程不一致问题


本文写于 2022-06-01 22:49:39


刚刚给博客更换了一下主题,加了几个页面, hexo g;hexo s 查看后一切正常,结果在 hexo g;hexo d 后出了问题:远程服务器的主题比我本地的落后一个版本。

在 Google 上翻翻找找,看到了同样问题的一个 GitHub Issue ,里面提到了使用 hexo clean 后解决了问题。

将部署命令更换为 hexo clean;hexo g;hexo d 果然解决了问题,感谢 GitHub 热情解答的大佬们。

论程序的更新逻辑


本文写于 2022-06-02 12:47:15


直到 Typora 的 1.2.5 版本推出好几天后的今日,我才终于更新了它。究其原因, Typora 唯一的自动检查更新时间是启动时,而我每次打开 Typora 的意图很明显:写下文字, ASAP (此处若是用“越快越好”的话有些歧义,既可以指 soon ,又可以指 quickly )。哪里还有什么闲心等它更新完了再开始写作?而每次写完后早就把更新的事忘掉了,直接就关掉了 Typora 。有没有一种方法,既不会耽误我的时间,又能让软件保持最新呢?

看看其他软件的常见更新逻辑:

  1. 定期检查,静默更新;

  2. a. 打开程序时检查,并自动更新;

    b. 打开程序时检查,询问用户是否要更新;

  3. a. 打开程序时检查并自动下载更新包,等待用户手动关闭或重启应用完成更新;

    b. 打开程序时检查,在退出应用时弹出提示框,点击同意后自动退出应用并静默更新。

总结一下, 1, 2.a, 3.a 均为自动更新,对于不喜欢新版本、想要有权利控制更新的人来说,显然不适合;故将其排除。

剩下来的 2.b ,无疑会打断用户使用程序:尤其对于一些程序,检查更新是异步执行;往往用户已经开始工作,输入焦点置于文本区,而更新提示框突然让用户失焦,不得不花费几秒的时间去关闭提示框。

接下来的 3.b ,是我认为最完美的方案:给予了用户足够的控制权,又不会打扰用户正常的程序使用,完成使用后顺手同意更新,去往其他程序做下一件事,不会被本程序打扰,让用户拥有了极佳的体验。

类似程序的更新,其他地方也有这样影响用户体验的细节。愿我的想法能帮助他人,若是能抛砖引玉就更好了!

安装 Fcitx5


本文写于 2022-10-15 23:22:32


安装

sudo pacman -S fcitx5 fcitx5-gtk fcitx5-qt fcitx5-configtool fcitx5-chinese-addons

/etc/environment中输入(注意~/.pam_environment已弃用):

GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
SDL_IM_MODULE=fcitx
GLFW_IM_MODULE=ibus

如果有的话,结束fcitx5进程,以防止接下来的配置被覆盖。

~/.config/fcitx5/profile中输入:

[Groups/0]
# Group Name
Name=Default
# Layout
Default Layout=us
# Default Input Method
DefaultIM=pinyin

[Groups/0/Items/0]
# Name
Name=keyboard-us
# Layout
Layout=

[Groups/0/Items/1]
# Name
Name=pinyin
# Layout
Layout=

[GroupOrder]
0=Default

然后登出,再重新登入,即可完成安装。

美化

sudo pacman -S fcitx5-material-color

(不要和我一样笨笨地把这里的color改成blue之类的)

然后退出fcitx5,修改~/.config/fcitx5/conf/classicui.conf

# 垂直候选列表
Vertical Candidate List=False

# 按屏幕 DPI 使用
PerScreenDPI=True

# Font (设置成你喜欢的字体)
Font="思源黑体 CN Medium 13"

# 主题
Theme=Material-Color-Blue

重启fcitx5即可完成更改。

问题与解决

Chrome 不支持中文输入

安装gtk4,在 Chrome 启动参数里加一个 --gtk-version=4即可。

注:对于我的 Arch Linux ,需要手动安装 gtk4 才能正常使用。

Konsole 输入中文变成一堆十六进制字符

.zshrc(或者是其他的rc)里添加一行export LC_ALL=en_US.utf-8即可,记得source它。

(注:Wiki 不推荐设置 LC_ALL ,我仍然在寻找更好的解决方法)

碎碎念

这里有我所有的碎碎念。

2023/02/18 01:11:44

刚刚得知了 RushB 中文网站长去世的消息,一时十分感伤

“可惜你没坚持住看到v社新的大行动啊兄弟 rip” (来自 Mint_LullabY)

希望天堂一样有 CSGO

2023/02/09 23:01:45

今天心悸了不下 20 次了... 感觉有点危险

2023/01/25 02:19:12

由于博客是用 mdbook 构建的,相比一般的静态博客构建器,并未针对访问速度做太多优化,再加上服务器位于香港,nginx 外还有一层随机增加延迟的服务,所以访问速度不怎么理想;腾讯云的 CDN 或许是个好选择?

2023/01/25 02:11:42

博客页面的 URL 似乎有点太长了,还夹着中文,或许我该为每个页面都设置一个固定的 UUID 链接?

玩tun时记得关firewalld

RT.

DM 与 XDG_SESSION_ID 与 KDE

Lemurs设置了虚假的常量XDG_SESSION_ID,导致Wayland KDE Plasma等无法启动(很多症状),排查方法为在终端里运行dbus-send --system --print-reply --type=method_call --dest=org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager.GetSession string:"c1",有结果返回说明没问题,出错提示找不到说明这个id是假的,需要保留pam_logind.so提供的那个

更新:已经提了临时的解决方案 pr ,等待回复

更新2:作者回复了一个解决方案