
从我的 ~/.ssh 目录说起:SSH 认证、多账号 Git 与端口转发
~/.ssh 是那种配好就再也不看的目录——直到某天换机器、加账号,或者 git push 突然开始报 Permission denied (publickey),才会发现里面躺着一堆自己都认不出来的文件。这几天整理密钥,顺手把自己的配置逐行过了一遍,发现里面其实塞了不少 SSH 的典型用法:443 端口连 GitHub、一台机器三个 GitHub 账号、云效、走 Tailscale 的内网...

~/.ssh 是那种配好就再也不看的目录——直到某天换机器、加账号,或者 git push 突然开始报 Permission denied (publickey),才会发现里面躺着一堆自己都认不出来的文件。这几天整理密钥,顺手把自己的配置逐行过了一遍,发现里面其实塞了不少 SSH 的典型用法:443 端口连 GitHub、一台机器三个 GitHub 账号、云效、走 Tailscale 的内网...

密码和各种 token 都放在 Bitwarden 里,但总有些时刻你需要在终端里拿到它们:脚本里要导出一个 GitHub token、命令行登录某个服务要临时取个 2FA 验证码、本地起服务要注入数据库密码。浏览器插件管不了这些场景——Bitwarden 官方提供了命令行工具 bw,登录解锁之后,整个密码库都能在命令行里读写。我在 Mac 上用了一段时间,这篇把安装、登录、取密钥、备份的完...

这个博客从 2010 年开站,主题还是当年手改的 Jekyll 默认模板,十几年下来积累了不少历史包袱:标签越打越散、代码块还在用 Google Code Prettify 的 <pre class="prettyprint">、统计用的 Universal Analytics 早被 Google 停服、评论区干脆没有。这次花了点时间一次性翻新,做了五件事:整理标签和分类、迁移 ...

一台机器上同时有几个 git 身份是很常见的:个人 GitHub、公司仓库、也许还有几个上古马甲号。全局配置只能写一个身份,靠”每个仓库手动设 local”又吃记忆力——忘了设,就会把公司邮箱写进个人仓库的历史里,或者用一个拼错的邮箱提交(GitHub 根本不把这些 commit 算你头上)。踩完坑之后我换成了按远程地址条件包含配置,从此身份自动正确。 思路 git 的身份解析是 rep...

浏览器可以靠 PAC 分流,但终端、各种 GUI 应用也想走代理,还希望一个热键全局开关——这是我折腾这套东西的出发点。方案:iStoreOS 虚拟机里跑 OpenClash,向局域网提供代理服务;Mac 本机不装任何代理客户端,只用几个 bash 脚本(挂到 Raycast)管理系统代理和环境变量。干净、可随时拆。 架构 Mac(宿主机) ├─ 系统代理 / 终端 env ──▶ &...

最近开始折腾 Nix,目的很简单:不想再靠「手动装软件 + 手动改配置」来维护我的 Mac。这篇记录一下 Nix 是什么、能干什么,以及我打算怎么一步步把整台机器都交给它管。 Nix 是什么 Nix 是一个声明式、可复现的包管理器,也有配套的发行版 NixOS。它的核心思想是把「环境配置」变成代码,让你在任何一台机器上重建出完全相同的软件环境。 关键特性: 可复现 —— 用代码...

GitHub Copilot 订阅到期了。续费之前先想清楚一个问题:编辑器里的 AI 能力,到底需要几层、每层用什么最划算? 折腾完的结论是三层分工——云端免费档管自动补全、本地模型管手动补全、国产大模型管聊天和改代码。这篇记录架构和一路踩的坑(最后一个键位冲突藏得极深)。 最终架构 场景 方案 模型 成本 ...

本站每个浏览器标签页里都藏着一个小图标:一顶宽檐帽、一张人脸、一条盘成一笔的蛇。见过它的朋友不止一次问过我画的到底是什么,我也零散解释过好多回——索性一篇写清楚。它不是随手涂鸦:每一笔都有来历,凑在一起,正好是一份压缩过的自我介绍——我最喜欢什么、我属什么、我叫什么、我从哪里入的行。 帽子:海贼王里艾斯的那顶 logo 最先定下来的是帽子。原型是《海贼王》里的艾斯:那顶橙色宽檐牛仔帽...

mysql升级之后数据文件夹共用, 但是无法使用db:migrate 错误信息大致如下: E, [2019-02-14T11:06:23.650106 #68912] ERROR -- : Mysql2::Error: Table 'performance_schema.session_variables' doesn't exist: SHOW VARIABLES LIKE 'char...

如下是初级工程师Bob和老程序员Bill的又一个故事。 Bob:我这golang装个包太困难了。动不动就time out Bill:开代理啊 Bob:开了,我有shadowsocks, 而且我开了全局代理. Bill: 那你一定是没有给你的终端设置http代理。ss设置的系统代理是socks5代理, 给你一个教程吧! 教程 首先找到ss里面的HTTP Proxy Pref...