碎碎念

陪她去流浪 新建

虽然早就知道可以在 GitHub 链接后面追加 .keys 取得公钥:

1
2
$ curl  https://github.com/movsb.keys
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHsZ2sKp3Brk3j8LvqT6B6HJqjCv3ZtpbMLq7T8mqQXJ

但是,早在 2013 年 OpenSSH 就把 GitHub 作为公钥服务器之一我是完全没想到的:

1
2
3
4
5
$ ssh-import-id -o- gh:movsb
2024-12-16 23:07:30,088 INFO Authorized key ['256', 'SHA256:nqso1AMa+5Ee4es7b6z6NQgnf7FJPcUtk1AMei1zJoc', 'movsb@github/91762316', '(ED25519)']
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHsZ2sKp3Brk3j8LvqT6B6HJqjCv3ZtpbMLq7T8mqQXJ movsb@github/91762316 # ssh-import-id gh:movsb

2024-12-16 23:07:30,089 INFO [1] SSH keys [Authorized]

参见:self-hosting.md - snips.sh。

没有评论 页首

OpenAI 最近遭遇的全球大面积故障1报告出来了:部署的新服务给控制面 API 带来了过大的压力导致基于 DNS 的服务发现失败。

然后,我马上就想到了我自己家里的 HomeLab:因为即便在内网中,我也使用的是正式的 Let’s Encrypt 的证书,而它们的证书有效期一直都很短(3️⃣个月)。其间也多次因证书过期导致我的内网出现 K8s 拉不下来镜像的“循环依赖”问题。

所以,为了减少事故发生的次数,我决定将正式的证书换成自签证书。增加证书的有效期限并没有从根本上解决这个问题,只是减少了事故发生率。 若想真正解决,还得定期更新证书。我是草台班子!

自签证书依然使用 mkcert 来管理:

  1. 运行 mkcert -install 可以向系统安装并信任自签根证书;
  2. 运行 mkcert -CAROOT 可以得到根证书在各系统的路径;
  3. 拷贝根证书到其它系统并再次安装(各系统共享同一份);
  4. 运行 mkcert *.home.twofei.com 就可以生成域名证书了。

生成的 根证书/CA 有效期固定为 十年;生成的 域名证书 有效期大概为 两年半2。


  1. API, ChatGPT & Sora Facing Issues ^

  2. Certificates last for 2 years and 3 months, which is always less than 825 days, the limit that macOS/iOS apply to all certificates. GitHub ^

没有评论 页首

没想到如今这个年头还能听到“黄页”1一词,也没想到“CardDav”2以这种方式出现在我的视野中……

突然感觉自己以前手动加的一些服务电话是不是太硬核了…… 不过,上述订阅的列表可能太大,对我来说可能有些多余。

安卓用户应该没有这样的烦恼?是不是 iOS 特有的?🤔


  1. 黄页(英语:Yellow pages),在很多国家和地区都用来表示一份商业用社会团体的电话名册、通讯目录。 —— Wikipedia ^

  2. CardDAV是一种地址簿客户端/服务器协议,旨在允许用户访问和共享服务器上的联系人数据。—— Wikipedia ^

没有评论 页首

git worktree

看起来 Worktree 是一个很不错的切换“临时”工作目录的方式,不用再临时暂存文件了。

简单说就是把仓库重新检出一份拷贝另外的目录,然后在那个目录工作。

这不就是上面☝️保存完所有临时文件后的状态?🤔

  1. How I Use Git Worktrees
  2. Git - git-worktree Documentation
1条评论 页首

iptables

一篇比较全面、比较好的关于 iptables 的文章:A Deep Dive into Iptables and Netfilter Architecture | DigitalOcean。

讲解了所有的表和链都是从5️⃣个钩子函数中衍生出来的;表的存在是为了人为地体现出不同的调用优先级。

以及,链的遍历顺序:

  • Incoming packets destined for the local system: PREROUTING -> INPUT
  • Incoming packets destined to another host: PREROUTING -> FORWARD -> POSTROUTING
  • Locally generated packets: OUTPUT -> POSTROUTING
没有评论 页首

XML 6502,这个组合有点儿意思

实况
没有评论 页首

南方人第一次经历北方车轮上这么厚的雪

转弯的时候磨得咔咔地响,吓死我了。

实况
没有评论 页首

请猜测本人的精神状态?

4条评论 页首

想要一个这个“掌机”,感觉可以用来作为调试设备。

  1. https://soulscircuit.com/pilet

如果能搞定 3D 打印以及有足够的时间,也许我可以:

  • 用树莓派 Zero 2 W 来做一个微型的掌上电脑💻。
没有评论 页首

假玩了一把重装机兵🥵

截屏2024-12-05 03.00.53.avif

没有评论 页首

终于用上了 Tailscale,用于打通家庭网络。虽然早就有耳闻(基于 Wireguard —— 开箱即用的 VPN;来自 Golang 大佬 Brad Fitzpatrick)。

和 Cloudflare ArgoTunnel 一样的开箱即用 —— 只需要运行一条命令即完成全部的工作。

和我之前的家庭网络方案区别之处在于:Tailscale 支持 IPv4,而我的网络必须依赖 IPv6. 在不支持 IPv6 的环境下不方便使用。

虽然 Tailscale 打洞技术很厉害,但是实际体验还是远不如我的 IPv6 方案流畅(可能是因为打洞失败的缘故,没追究)。好在:稳定性更好。

还有一个缺点:Tailscale 使用了自己的私有 IP 网段(100.*.*.*)。而我原来原来的内网域名全部是解析到 192.168 上面的,导致需要临时修改。暂时没想到好的解决办法。

没有评论 页首

在 VSCode 里面编辑跨平台的 Go 项目时的语言服务器配置(.vscode/settings.json):

1
2
3
4
5
6
7
8
9
{
	"gopls": {
		"build.env": {
			"GOOS": "linux",
			"GOARCH": "arm64",
		}
	}
}

应该配置在项目目录下的配置文件中,而不是全局配置文件。

没有评论 页首

用了多年的 ssh -D 作为 OpenWRT 的后端,今日才发现 OpenSSH 实现的 -D 参数的 SOCKS 协议只支持 TCP CONNECT 命令,不支持 UDP;所以我的软路由一直不支持代理 UDP。

另外,由于目前的构架偏复杂:

  1. 需要运行 http2tcp
    1. 提供 TCP over HTTPS
  2. 需要运行 SSH
    1. 提供本地的 SOCKS5 端口绑定;
    2. 提供 TCP Multiplexing。

导致部署偏复杂,运维成本较高。所以拟重写部分组件:

  • 重写当前的 http2tcp 实现,以支持作为 package 供外部使用
  • 实现一个同时支持 TCP & UDP 转发的 SOCKS 协议端
    • 找到的开源版本不太好用,重写
    • 发现我根本不需要处理 SOCKS 请求细节,直接转发给服务器即可
  • 支持 Multiplexing 以将 SOCKS5 协议通过 http2tcp 转发
没有评论 页首

蓝牙入门

一篇文章: https://cdn-learn.adafruit.com/downloads/pdf/introduction-to-bluetooth-low-energy.pdf

Profiles A Profile doesn't actually exist on the BLE peripheral itself, it's simply a pre-defined collection of Services that has been compiled by either the Bluetooth SIG or by the peripheral designers. The Heart Rate Profile, for example, combines the Heart Rate Service and the Device Information Service. The complete list of officially adopted GATT-based profiles can be seen here: Profiles Overview (https://adafru.it/E8u).

That’s absolutely correct! In BLE terminology, Profiles do not physically exist on the peripheral device. Instead, a Profile is a logical collection of Services defined by either the Bluetooth Special Interest Group (SIG) or custom-developed by the designers of the peripheral device.

才发现,蓝牙的 Profile、Service、Characteristics 概念与 Apple 的 HomeKit 几乎一致;只不过在 Apple 里面,Profile 被称作 Accessories(配件)。

You could implement a simple UART-type interface with a custom 'UART Service' and two characteristics, one for the TX channel and one for the RX channel, where one characteristic might be configured as read only and the other would have write privileges.

Connect to Bluetooth Low Energy devices using Golang

  • 写一个 SSH over Bluetooth 实现:
    • 在树莓派上用蓝牙的读、写转换成网络连接用于连接 SSHD;
    • 在 Mac 上用蓝牙连接,并作为 SSH 的 ProxyCommand 底层。
    • 完整代码:https://github.com/movsb/tcp-over-bt。
没有评论 页首

电子垃圾➕1(树莓派 Zero 2 W)

结合我现在的处境,猜猜看我要用它来干嘛?

产品手册:raspberry-pi-zero-2-w-product-brief.pdf。

2025-3-31 23:31:51

警告

发现大流量时不太稳定!会自动断网,且不会重连,重启才能解决;nmcli 中之前连接到的 Wi-Fi 名字丢失。

tao@zero:~ $ sudo nmcli device show wlan0
GENERAL.DEVICE:                         wlan0
GENERAL.TYPE:                           wifi
GENERAL.HWADDR:                         2C:CF:67:7D:49:13
GENERAL.MTU:                            1500
GENERAL.STATE:                          20 (unavailable)
GENERAL.CONNECTION:                     --
GENERAL.CON-PATH:                       --
IP4.GATEWAY:                            --
IP6.GATEWAY:                            --
tao@zero:~ $ sudo nmcli device wifi rescan
Error: Scanning not allowed while unavailable.
2025-11-25 22:59:55

真的很垃圾,流量一大网卡硬件直接崩掉。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
[ 1674.675541] ieee80211 phy0: brcmf_cfg80211_get_channel: chanspec failed (-110)
[ 1677.235426] ieee80211 phy0: _brcmf_set_multicast_list: Setting allmulti failed, -110
[ 1679.795348] ieee80211 phy0: brcmf_proto_bcdc_query_dcmd: brcmf_proto_bcdc_msg failed w/status -110
[ 1679.795402] ieee80211 phy0: brcmf_cfg80211_get_tx_power: error (-110)
[ 1682.355244] ieee80211 phy0: _brcmf_set_multicast_list: Setting BRCMF_C_SET_PROMISC failed, err=-110
[ 1684.915245] ieee80211 phy0: brcmf_proto_bcdc_query_dcmd: brcmf_proto_bcdc_msg failed w/status -110
[ 1684.915294] ieee80211 phy0: brcmf_cfg80211_get_tx_power: error (-110)
[ 1692.594940] ieee80211 phy0: brcmf_vif_set_mgmt_ie: vndr ie set error : -110
[ 1692.594981] ieee80211 phy0: brcmf_cfg80211_scan: scan error (-110)
[ 1695.154810] ieee80211 phy0: brcmf_proto_bcdc_query_dcmd: brcmf_proto_bcdc_msg failed w/status -110
[ 1697.714719] ieee80211 phy0: _brcmf_set_multicast_list: Setting mcast_list failed, -110
[ 1700.274703] ieee80211 phy0: brcmf_run_escan: error (-110)
2025-12-17 21:33:25

已在闲鱼出手。现在改用 Cudy TR3000 了。既便宜,性能还更好。

2条评论 页首

自从买到了沙姜,在家里也可以自己做出很正宗的椰子🥥鸡🐓了——一家被我吃了上百次的深圳椰子鸡🥵。

没有评论 页首

以前听人说,男人成熟的其中一个标志是“学会坐着尿尿”。原因是会更卫生,对大家来说。

终于,自从因为北方的家里冷、我给家里的马桶🚽装上了马桶垫后,为了不让水水洒得到处都是,女朋友告诉我应该学会坐着……所以我被迫学会了坐着尿尿,然后……尿完后还会擦一擦……🥵🥵🥵。

虚心地向各位女同志们学习。

2024-12-2 13:26:15

735254f23a291aa84733ba2a46fc48d9.avif

4条评论 页首

听说有人说我是女孩子👧?

IMG_7695.avif

2条评论 页首

访问了一下 VirtualBox 官网,发现其好像竟然又开始支持 Apple Silicon 系列了!

VirtualBox is a general-purpose full virtualization software for x86_64 hardware (

...with version 7.1 additionally for macOS/Arm...

), targeted at laptop, desktop, server and embedded use.

Downloads – Oracle VirtualBox.avif

2024-11-22 20:44:18

无法使用、丑拒,不建议尝试。

没有评论 页首

去了外省旅居,租住的公寓没有提供 WiFi,也不方便拉光纤(短租),整天靠分享热点给几个平板和几台笔记本使用属实不太方便;而且 iPhone 的热点还经常自动断开、需要重新启用才能被发现。

于是干脆买了个“随身WiFi”;尽管买之前就知道这玩意儿本质上还是使用的电话卡(流量卡),所以网速肯定不会稳定到哪里去,不过好在流量比较便宜,也确实“随身”、方便。

利益相关:利益无关。

设备单独购买,以下是短期基本套餐情况:

费用 流量 期限
9.9元 30G 30天
19.9元 100G 30天
29.9元 300G 30天
39.9元 1500G 30天

想起年前的时候自己也做过类似的产品(Access Point,AP),成本可以控制在 10 元内。当时是用的 ESP8266 芯片,如果再买一张物联网卡作为流量卡,那就是完全是个类似的产品。


等后续更新,如果好用的话,我也许会替换掉我在深圳家里的超贵的千兆光纤,人不在家实属浪费,月话费都可以买一个季节的流量了。

2024-12-7 11:59:29

差不多用了一个月后,给京东实质性评价了一下;然后……没过多久,就收到了通知要求删除评论:

“仅退款、无需退回设备。”

我……同意了,🤡🤡🤡。认真写评论还有这种“好处”是吧?

没有评论 页首

再度失联小半个月,终于“花重金”求不远 1.5 公里外的朋友去了趟家里,按了一下重启键,恢复了家里的网络和博客。具体原因未细查,但是大概率是网卡寄了。

怎么办?向狗屁通询问了一下“如何无条件定时自动重启机器”(重启大法好!)🥵🥵🥵,何尝不是极其简单粗暴?

每第 5 天凌晨 5 点🕔 给我自动重启!(暂时没空管你!)

0 5 */5 * * /sbin/reboot

我看你还敢给我失联!


当然,多年来我依然一直讨厌使用 cron,也一直讨厌 crontab 默认操作为替换;如果不小心没有 -e,哦豁,全清!当然,软件作者大概也收到了各种报怨,所以也甩了个锅🍳?

nuc:→ crontab -h
crontab: invalid option -- 'h'
crontab: usage error: unrecognized option
usage:	crontab [-u user] file
	crontab [ -u user ] [ -i ] { -e | -l | -r }
		(default operation is replace, per 1003.2)
	-e	(edit user's crontab)
	-l	(list user's crontab)
	-r	(delete user's crontab)
	-i	(prompt before deleting user's crontab)
没有评论 页首

第一次收到“RCS信息”提示

原来相比于短信和彩信,又有新的升级了。

没有评论 页首

底盘被穿进了一块木头……

有点神奇,车往前面开的,木块是怎么倒挺进去的?用了很大的劲也拔不出来,撇断了。

实况
没有评论 页首

亲自去了一趟 EZFix 送修手机📱

在埃及马特鲁看海的时候手机被海水泡坏了。前期是屏幕逐渐失灵,后期是无法开机,屏幕闪烁一下就重启。

虽然我人在深圳,但是还是莫名其妙更愿意相信 @EZFix 的技术、没有把手机拿给华强北维修🧑‍🔧,可能是在推特上好评太多导致。

花了高价(真的高价)初次维修换了全新屏后,手机除 FaceID 外一切正常,老板叫我自己刷机。我操作不来,于是趁着要去东北、差不多刚好路过的原因,自己驾车🚗再次前往亲自送修。老板一度非常震惊。

老板店面很小巧,但是里面设备很高级。另外不巧的是,送修完没过多久,老板的店就迁址了。

没有评论 页首

续:各位关心我的、没关心我的朋友们,又是好久不见,我还活着

刚才埃及回来什么也没干躺了两天就直奔东北去野了半个🈷️,仿佛是今天才结束假期……

是的,今天我又双叒叕回来深圳了……🥵

2条评论 页首

进希岸酒店的时候被正在翻修的马路牙子给磕了😭️

实况

换胎的时候有点吓人。

租的车,结果换了个比较好的轮胎(佳通),花了 ¥350.

没有评论 页首

人生第一次给磕马路牙子上了

实况

随便找了一家路边店,忍气吞声给了老板 ¥350.

车是租的,但是换了个还不错的好轮胎(佳通的)。

还车的时候跟神舟租车的工作人员说能不能报销,我明明记得神舟租车 ¥1500 内是免责的,工作人员说我记错了,是 ¥1500 外。

我肯定没有记错,上次在老家地坝掉头擦到前侧脸的时候就没有做任何处理,工作人员直接说“你们不用管”。

没有评论 页首

这应该是我见过的最豪华的飞机屏幕了吧?

  • 可以取下来;
  • 可以玩游戏;
  • 有键盘;
  • 可以刷信用卡💳!

但是,为什么你要把 Player 翻译成 播放机?一点儿都不专业。

拍摄于从埃及回中国的途中。

没有评论 页首

各位关心我的、没关心我的朋友们,好久不见,我还活着……[狗头]

在 #埃及 玩了一个月,不亦乐乎,博客也完全没有经营……

但是今天为什么想起发一条碎碎念?因为我手机坏了[狗头]……只得玩电脑(?)。

我在 #马特鲁 玩海的时候,又一次1把手机泡水了,在我明确知道手机被拆过、不能防水的情况下……现象是:面容ID坏掉了、屏幕完全失灵……😭。

好害怕,我的资料不会全部毁了吧?我的相册不会全没了吧?我不会在埃及孤立无援吧?不会吧不会吧?😭😭😭。求求了,一定要坚持到新手机发布!

2024-9-11 23:33:09

手机已经好几天不能开机,我快崩溃了……

2024-10-6 20:20:49

手机修好了,但是有点不开心。

15条评论 页首

去年刚拿驾照时租油车加了省加油费在加油站办了张广发的信用卡(第一次确实省了很多钱),结果最近一年的消费不足以抵扣收费,被扣两百块……

IMG_1360.avif

什么无妄之灾啊!一气之下决定注销……结果刚接通,对方竟然猜准了我的来意,直接问我是不是“因为年费原因才要注销”[捂脸],哈哈哈。如果继续注销的话,年费肯定省不了了。所以我选择了不注销,但是要在接下来一个月消费满 6 笔 / 或者金额数达标(几百块),然后就退回年费。

早知道就不办这玩意儿,为了省几十块钱,每年都要恶心我一下……我一直用的招行信用卡,我记得招行是不要年费的啊!

没有评论 页首