工具探索¶
Terminal¶
Tmux¶
参考Tmux。
终端录制:asciinema vs vhs¶
最开始搜到的是terminalizer,但这个库已经7年以上的历史了,有些太旧了,开发也不是很积极。我使用时最开始用的root用户,报错:Running as root without --no-sandbox is not supported,是由 terminalizer 用于渲染的 Electron 进程引起的。当以 root 用户身份运行 Electron 应用时,出于安全原因,需要 --no-sandbox 标志。我尝试加参数,发现terminalizer不太能正确识别参数,就算了。
最近比较活跃的是asciinema和vhs。对比之下我更喜欢asciinema,比较轻量级、也没那么多依赖问题,对Headless服务器非常友好。
安装¶
# asciinema: need cargo
cargo install --locked --git https://github.com/asciinema/asciinema
# vhs:
# Install vsh on Debian/Ubuntu
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://repo.charm.sh/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg
echo "deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * *" | sudo tee /etc/apt/sources.list.d/charm.list
# Install ttyd from https://github.com/tsl0922/ttyd/releases
echo "Installing ttyd..."
sudo apt-get update
sudo apt-get install -y build-essential cmake git libjson-c-dev libwebsockets-dev
git clone https://github.com/tsl0922/ttyd.git
cd ttyd && mkdir build && cd build
cmake ..
make && sudo make install
echo "ttyd installed successfully."
echo "Installing vhs and ffmpeg..."
sudo apt update && sudo apt install vhs ffmpeg
使用¶
Asciinema: https://docs.asciinema.org/getting-started/
对比¶
| 特性 | asciinema | vhs (by Charm) |
|---|---|---|
| 主要目的 | 录制和分享终端会话 | 将终端操作渲染成 GIF、WebM、MP4 等格式 |
| 录制方式 | 实时捕获终端的输入输出流 | 通过声明式配置文件 (.tape 文件) 定义要执行的命令和交互 |
| 输出格式 | .cast (JSON 格式的文本文件) |
GIF, WebM, MP4 等视频/动画格式 |
| 播放/分享 | 通过 asciinema.org 网站嵌入式播放器、本地 asciinema play 命令 |
直接分享生成的 GIF/视频文件,或嵌入到网页/文档中 |
| 编辑性 | 有限(可以修剪、调整速度,但不能修改内容) | 高度可编辑,因为录制基于配置文件,可以随时修改命令和时序 |
| 自动化 | 主要用于手动录制 | 非常适合自动化生成演示和教程 |
| 文件大小 | .cast 文件通常很小 |
GIF/视频文件相对较大 |
| 交互性 | 播放时文本可选、可复制 | 非交互式,是视频/动画 |
| 依赖 | asciinema CLI |
vhs CLI, ffmpeg, ttyd (用于渲染) |
| 优点 | 轻量级、文本可选、易于分享和嵌入、平台托管 | 生成美观的 GIF/视频、高度可控、适合自动化、输出格式多样 |
| 缺点 | 依赖其平台或 CLI 播放、非标准视频格式 | 生成文件较大、非交互式、配置学习曲线 |
| 适用场景 | 快速录制和分享真实终端操作、教程、Bug 复现 | 创建高质量的终端演示 GIF/视频、文档配图、自动化测试输出 |
asciinema可以直接在终端/本地浏览器/远程进行回放,但是想要嵌入到网页中,需要上传到asciinema.org网站上(可以选择加auth认证),或者自己搭建player环境,稍微有些麻烦。
vhs导出的文件体积较大,也挺慢的。注意,vhs需要通过rod库下载Chromium浏览器,Chromium也不允许root用户直接运行,并且WSL也不需要图形化界面。
Docker, Docker Compose and Kubernetes(K8s)¶
Docker:集装箱
Docker Compose/K8s:管理整个“港口”和“船队”(大规模容器集群)的调度系统,都是用于定义和运行多容器 Docker 应用程序的工具(一个应用程序需要多个服务时),手动管理这些容器的启动顺序、网络连接、数据卷等会非常繁琐。这类管理工具可以简化管理操作,确保开发、测试和生产环境的配置尽可能一致。
Docker Compose¶
通过docker-compose.yml文件定义应用的服务、网络和数据卷等配置。docker-compose up/down命令可以启动和停止整个应用。
- 服务 (Services):构成应用的不同组件,每个服务通常基于一个 Docker 镜像。
- 网络 (Networks):定义容器如何相互通信。Compose 会为你的应用创建一个默认网络,所有服务都在这个网络中,可以通过服务名称相互访问。
- 数据卷 (Volumes):用于持久化数据,确保数据在容器重启或删除后依然存在。
Kubernetes¶
个人通常用不到K8s,除非是大规模的集群管理。学习的话可以参考k3s。
k3s安装:curl -sfL https://get.k3s.io | sh -
K8s的高级特性:复杂的服务发现、自动扩缩容(虽然在单机上意义不大)、滚动更新策略等。
文档编写¶
Latex¶
在Unix-like-systems,比如Linux上编译Latex似乎更快一些,所以我从Windows texlive转到了WSL2上。
官方安装指南:https://www.tug.org/texlive/quickinstall.html
AI翻译:参考https://github.com/Chesszyh/tongji-undergrad-thesis-template/blob/master/doc/Install-latex.md。
太长不看版命令:
在除 Windows 外的任何系统上进行非交互式默认安装:
cd /tmp
wget https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
# 或者: curl -L -o install-tl-unx.tar.gz https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
zcat < install-tl-unx.tar.gz | tar xf -
cd install-tl-2*
perl ./install-tl --no-interaction
# 可能需要几个小时才能运行结束
# 最后,将 /usr/local/texlive/YYYY/bin/PLATFORM 添加到您的 PATH 环境变量中,例如:
echo 'export PATH=$PATH:/usr/local/texlive/YYYY/bin/x86_64-linux' >> ~/.zshrc
source ~/.zshrc
PPT¶
Latex Slides¶
主要用到beamer,overleaf上有很多模板可以选择。
检查系统字体:
# 查看系统中文字体
fc-list :lang=zh
# 或者更通用的关键词搜索
fc-list | grep -i -E "SimSun|SimHei|KaiTi|FangSong|Song|Hei|Kai|Ming|Noto Sans CJK|WenQuanYi|Source Han Sans"
# 查看特定字体的详细信息
fc-match -v [字体路径]
# 或者只看字体名
fc-scan --format "%{family[0]}\n" [字体路径]
如需下载字体,可先在Windows上安装好字体,然后移动到字体目录/usr/share/fonts/下。因为我一直用root运行WSL,所以字体是为全部用户安装的。