批量生成博客icon的脚本
2025-12-19
因为要给博客换 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 系统镜像与创建虚拟机模板
2025-12-13
因为经常折腾pve虚拟机,经常需要新的环境,之前一直使用 Debian 的标准镜像安装,安装完部署环境时真的让人头大,直到我关注到了 Debian 的云镜像。云镜像可以大大简化安装过程,节省时间,并且可高度自定义。本文档将详细介绍如何为 Proxmox VE 定制 DebianCloud 系统镜像,并创建虚拟机模板。 “云镜像”有这几种:azure、ec2、generic、genericcloud、nocloud。 首先排除 azure 与 ec2(它们针对云平台)。nocloud 不支持 cloud‑init,也可排除。剩下 generic 和 genericcloud:genericcloud 更精简,常被推荐用于虚拟机;但它可能不包含 USB 等内核模块,如果需要 USB 直通(打印机、移动硬盘等),建议用 generic,家庭用户更合适。
1143 字
|
6 分钟
如何本地激活 Synology Active Backup for Business 等套件
2025-11-22
Synology(群晖)DSM 的 Synology Active Backup for Business 套件是一个很不错的备份方案,但是首次安装或是重装该套件后,需要使用 Synology 账户激活才能使用。 我并不喜欢这种需要联网激活才能使用的本地软件 —— 如果某天服务器故障或下线,亦或是本地网络发生了故障,我又正好重装了该软件,就会被这个激活界面阻挡,成为正版受害者。 网上流传了不少本地激活这类套件的方法,但都比较复杂,因此花时间研究了下,写了一个简单且通用的激活方案,以备不时之需。 请注意,使用本方法本地激活可能会影响您的产品支持和服务。尤其是在企业环境下,建议使用正常方式联网激活,以确保正常享受支持和服务。
396 字
|
2 分钟
WireGuard 对端动态 IP 时主动更新地址
2025-08-30
如果 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 分钟
OpenWrt系统打包
2025-04-17
今天终于把自己折腾炸了的旁路由修好了,但是为了防止自己手贱,完决定把部署好的 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 分钟
Homebrew常用命令
2025-03-27
使用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 分钟