git 拉取所有 branch 和 tag 到本地并推送到远程

git 拉取所有 branch 和 tag 到本地并推送到远程

需要一个正常的可工作仓库,而不是裸镜像仓库。以下是在不使用 --mirror 选项的情况下,拉取所有分支和标签并推送到新仓库的步骤: 步骤 1: 克隆源仓库 首先,正常克隆源仓库: ...

April 7, 2025 | 2 分钟 | 820 字 | Tianlun Song
Rails 性能分析工具 rack-mini-profiler 和 bullet

Rails 性能分析工具 rack-mini-profiler 和 bullet

rack-mini-profiler 和 bullet 是ruby 开发中两个广受欢迎的性能分析工具。 Bullet 更加实用,提得建议更加直接有效,rack-mini-profiler 信息丰富,需要更细致的排查时使用。 ...

April 7, 2025 | 2 分钟 | 595 字 | Tianlun Song
全球国家、城市、地区开源数据库

全球国家、城市、地区开源数据库

以 JSON、MYSQL、PSQL、SQLITE、XML、YAML 和 CSV 格式提供城市、州、国家/地区的完整数据库。所有国家、州和城市都覆盖并填充了不同的组合和版本。 ...

April 7, 2025 | 1 分钟 | 82 字 | Tianlun Song
Rails Active Record 常用命令

Rails Active Record 常用命令

主要命令 rake db:migrate rake db:rollback rake db:migrate:up rake db:migrate:down rake db:migrate:redo 指定版本号的回滚 rake db:migrate:down VERSION=20141119130134 回滚最近几个迁移 rake db:rollback STEP=n n 代表个数。注意:是最近几个,它们会被一起移除。 其它类似命令: 只执行指定版本号的迁移 rake db:migrate VERSION=20141119130134 只执行最近几次迁移 ...

April 7, 2025 | 1 分钟 | 124 字 | Tianlun Song
Rails Rake 简介与编写

Rails Rake 简介与编写

来源:Rake 简介与编写 Rake 用法简介 rake 简介 Rake 的意思是 Ruby Make,一个用 ruby 开发的代码构建工具。 1.以任务的方式创建和运行脚本 当然,你可以用脚本来创建每一个你希望自动运行的任务。但是,对于大型的应用来说,你几乎总是需要为数据库迁移 (比如 Rails 中 db:migrate 任务)、清空缓存、或者代码维护等等编写脚本。对于每一项任务,你可能都需要写若干脚本,这会让你的管理变得复杂。那么,把它们用任务的方式整理到一起,会让管理变得轻松很多。 ...

April 7, 2025 | 2 分钟 | 973 字 | Tianlun Song
如何调试 Vim 脚本

如何调试 Vim 脚本

来源: 如何调试 Vim 脚本 使用 -D 参数可以开启 Debug 模式, 在 Debug 模式中可以使用 cont, next, interrupt, step, quit 等调试命令, 以及 breakadd, breakdel 来添加和移除断点。 使用 -u 来禁止加载任何配置文件,使用 :source 命令逐个加载。 使用 :set verbose 和 :set verbosefile 等 配置变量 可以设置日志级别和输出文件, -V 启动参数也可以起到同样的作用。 ...

April 7, 2025 | 3 分钟 | 1253 字 | Tianlun Song
tailscale zerotier wireguard  横向对比

tailscale zerotier wireguard 横向对比

References: Gemini 2.5 Pro 本文对比一下 Tailscale、ZeroTier 和 WireGuard 这三个流行的虚拟网络/VPN 解决方案。 需要明确一点: WireGuard 是一个现代、快速、简单的 VPN 协议。它本身只负责建立安全的点对点隧道,不包含用户管理、密钥分发、NAT 穿透等便捷功能。 Tailscale 和 ZeroTier 都是基于特定技术(Tailscale 基于 WireGuard,ZeroTier 有自己的协议)构建的完整解决方案或服务。它们旨在简化虚拟网络的创建和管理,内置了用户认证、设备管理、NAT 穿透等功能。 关键特性对比 以下是它们的详细对比: ...

April 7, 2025 | 8 分钟 | 3704 字 | Tianlun Song
Tailscale 自建 Derp

Tailscale 自建 Derp

TL;DR 必需:将 env DERP_DOMAIN 设置为您的域 docker run -e DERP_DOMAIN=derper.your-domain.com -p 80:80 -p 443:443 -p 3478:3478/udp fredliang/derper 也有其他不使用域名的方法,参考文献自行探索 References Custom DERP Servers fredliang44/derper-docker 🗒️逃离网络限制:使用Tailscale+自建DERP组建私有局域网的终极指南 Tailscale 基础教程:部署私有 DERP 中继服务器

April 7, 2025 | 1 分钟 | 105 字 | Tianlun Song
Ceph 检查 rbd io 排名

Ceph 检查 rbd io 排名

好的,在 Ceph 中查看哪个 RBD (RADOS Block Device) 镜像的 I/O 读写最高,最常用的方法是使用 rbd perf image iotop 或 rbd perf image iostat 命令。 这两个命令都需要指定 存储池 (pool) 的名称,因为 RBD 镜像是存在于特定的存储池中的。 ...

April 7, 2025 | 2 分钟 | 844 字 | Tianlun Song
k8s csi-driver-nfs的一个坑

k8s csi-driver-nfs的一个坑

TL;DR 发现 k8s csi 组的社区项目 csi-driver-nfs v4.10 到 v4.11 至少这两个版本存在删除 pv 时会连带将整个根删除的问题。 声明 StorageClass 时虽然支持 subDir ,类似这样: apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: nfs-aliyun-gz provisioner: nfs.csi.k8s.io parameters: share: "/csi" server: "28364f4a1fa-eok75.cn-guangzhou.nas.aliyuncs.com" #server: "172.26.12.20" #subDir: "${pvc.metadata.namespace}/${pvc.metadata.name}" reclaimPolicy: Delete #volumeBindingMode: WaitForFirstConsumer volumeBindingMode: Immediate allowVolumeExpansion: true mountOptions: # - nolock,tcp,noresvport - vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport 但如果类似这样使用 subDir 声明路径,同命名空间下的其他 pvc 删除,会导致整个 subDir 根目录都被删除。目前官方 pr 已经修复,但实测还是有问题,有空再研究一下代码,不知道是不是刻意为之。 ...

March 31, 2025 | 1 分钟 | 334 字 | Tianlun Song