background
批量生成博客icon的脚本
因为要给博客换 icon ,写了这个一键生成所有大小 icon 的脚本,可以把正常大小的图源转换成32 / 128 / 180 / 192 大小的 icon ,支持单张图源同时生成 dark/light 两套 icon 。 PS:仅在 macOS 端测试正常,不代表其他平台。 把下面内容保存成 make-favicons.sh: #!/usr/bin/env bash set -euo pipefail OUT_DIR="./favicons" DARK_SRC="" LIGHT_SRC="" ONE_SRC="" SIZES=(32 128 180 192) die() { echo "Error: $*" >&2; exit 1; } # 参数解析 while [[ $# -gt 0 ]]; do case "$1" in -o|--out) OUT_DIR="${2:-}"; shift 2;; --dark) DARK_SRC="${2:-}"; shift 2;; --light) LIGHT_SRC="${2:-}"; shift 2;; -h|--help) sed -n '1,60p' "$0"; exit 0;; *) if [[ -z "$ONE_SRC" ]]; then ONE_SRC="$1"; shift else die "多余参数:$1" fi;; esac done # 校验输入 if [[ -n "$ONE_SRC" ]]; then [[ -f "$ONE_SRC" ]] || die "找不到文件:$ONE_SRC" DARK_SRC="$ONE_SRC" LIGHT_SRC="$ONE_SRC" else [[ -n "$DARK_SRC" && -n "$LIGHT_SRC" ]] || die "请提供一张源图,或同时提供 --dark 和 --light" [[ -f "$DARK_SRC" ]] || die "找不到文件:$DARK_SRC" [[ -f "$LIGHT_SRC" ]] || die "找不到文件:$LIGHT_SRC" fi mkdir -p "$OUT_DIR" # 用 sips 生成 PNG,并强制缩放到指定尺寸(正方形) gen_set() { local src="$1" local theme="$2" for size in "${SIZES[@]}"; do local out="$OUT_DIR/favicon-${theme}-${size}.png" # 先转成 png 到临时文件,再缩放,避免源文件不是 png 时的坑 local tmp tmp="$(mktemp "/tmp/favicon_${theme}_XXXXXX.png")" sips -s format png "$src" --out "$tmp" >/dev/null # 缩放到正方形 size x size sips -z "$size" "$size" "$tmp" --out "$out" >/dev/null rm -f "$tmp" echo "✅ $out" done } gen_set "$DARK_SRC" "dark" gen_set "$LIGHT_SRC" "light" echo "Done. Output => $OUT_DIR"
409 字
|
2 分钟
Proxmox VE 定制 Debian Cloud 系统镜像与创建虚拟机模板
因为经常折腾pve虚拟机,经常需要新的环境,之前一直使用 Debian 的标准镜像安装,安装完部署环境时真的让人头大,直到我关注到了 Debian 的云镜像。云镜像可以大大简化安装过程,节省时间,并且可高度自定义。本文档将详细介绍如何为 Proxmox VE 定制 DebianCloud 系统镜像,并创建虚拟机模板。 “云镜像”有这几种:azure、ec2、generic、genericcloud、nocloud。 首先排除 azure 与 ec2(它们针对云平台)。nocloud 不支持 cloud‑init,也可排除。剩下 generic 和 genericcloud:genericcloud 更精简,常被推荐用于虚拟机;但它可能不包含 USB 等内核模块,如果需要 USB 直通(打印机、移动硬盘等),建议用 generic,家庭用户更合适。
1143 字
|
6 分钟
Cover Image of the Post
如何本地激活 Synology Active Backup for Business 等套件
2025-11-22
Synology(群晖)DSM 的 Synology Active Backup for Business 套件是一个很不错的备份方案,但是首次安装或是重装该套件后,需要使用 Synology 账户激活才能使用。 我并不喜欢这种需要联网激活才能使用的本地软件 —— 如果某天服务器故障或下线,亦或是本地网络发生了故障,我又正好重装了该软件,就会被这个激活界面阻挡,成为正版受害者。 网上流传了不少本地激活这类套件的方法,但都比较复杂,因此花时间研究了下,写了一个简单且通用的激活方案,以备不时之需。 请注意,使用本方法本地激活可能会影响您的产品支持和服务。尤其是在企业环境下,建议使用正常方式联网激活,以确保正常享受支持和服务。
396 字
|
2 分钟
Cover Image of the Post
WireGuard 对端动态 IP 时主动更新地址
如果 WireGuard 对端的 Endpoint 是一个域名,这个域名只会在启动的时候解析一次,后续不会更新;当这个域名发生变化时,WireGuard 连接就会断开 wireguard-tools 的仓库中提供了检测 IP 变化并更新 Endpoint 的脚本 https://git.zx2c4.com/wireguard-tools/tree/contrib/reresolve-dns/reresolve-dns.sh,因此可以使用该脚本,通过定时任务的方式可以实现域名 IP 变化后更新 WireGuard 下载仓库 git clone https://git.zx2c4.com/wireguard-tools /usr/share/wireguard-tools
197 字
|
1 分钟
Cover Image of the Post
配置steam下载直连
配置路由让steam客户端下载游戏时走直连,提升下载速度。
127 字
|
1 分钟
Cover Image of the Post
OpenWrt系统打包
今天终于把自己折腾炸了的旁路由修好了,但是为了防止自己手贱,完决定把部署好的 OpenWrt 打包成 img 镜像备份,下次炸了就可以一键还原。 废话少说我们开始吧! 查看磁盘分区,使用 lsblk 命令,可以看到 sda 就是我们 OpenWrt 系统使用的磁盘了,而 sdb 是我们新挂载的磁盘,挂载在 /newssd 目录下。 [root@OpenWrt:02:11 AM ~] # lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 956.6M 0 loop /overlay sda 8:0 0 1G 0 disk ├─sda1 8:1 0 16M 0 part /mnt/sda1 │ /boot │ /boot └─sda2 8:2 0 1004M 0 part /rom sdb 8:16 0 10G 0 disk └─sdb1 8:17 0 10G 0 part /newssd sr0 11:0 1 1024M 0 rom zram0 253:0 0 661M 0 disk [SWAP]
453 字
|
2 分钟
Cover Image of the Post
Markdown语法
2025-03-29
markdown是一种轻量级标记语言,广泛用于编写格式化文本。本文介绍了Markdown的基本语法和常用扩展。
894 字
|
4 分钟
Cover Image of the Post
Homebrew常用命令
使用x86时需要设置arch,请注意arm版本的Homebrew不需要额外设置,终端打开后就是了。 想进入x86模式,请执行: # 切换 x86_64 arch -x86_64 zsh #查看 Homebrew 运行路径 “ opt 里的是 arm | usr 里是 x86_64 ” which brew # 查看 Homebrew 版本 ➜ ~ brew -v # 列出已安装的软件 ➜ ~ brew list # 使用浏览器打开 Homebrew 官网 ➜ ~ brew home # 查看包的详细信息 ➜ ~ brew info 包名 # 检测系统中与Homebrew有关的潜在问题 ➜ ~ brew doctor # 查看包的所有版本 ➜ ~ brew list --versions | grep 包名 # 以树形展示所有已安装包的依赖 ➜ ~ brew deps --installed --tree
455 字
|
2 分钟
Cover Image of the Post
1
2