#1317 和网信办打交道

2026-10-08

下午大约 17:45 接到自称网信办工作人员的电话,要求我删除博客上的一篇文章。
我不知道具体是哪一篇,加对方微信之后,发给我了一个链接,原来是 6 月份《华为手机 v2xxxNG 连接不上节点》的这篇文章。
我二话不说,立即就下线了这篇文章。

说实话,我真的挺感动。

这个博客本来就没什么访问量,从 8 月中旬更换主机到腾讯云之后,更加是长时间 0 访问,我也没空去研究到底什么原因。没想到网信办的同志还在看我的博客。

真心感动,我相信和我一样没有访问量的博客都能理解这种心情。哪怕只是收到网警或者网信办的关怀,至少说明还有人看了一眼。

#1316 Algolia 暂停了服务

2026-10-08

发现码厩的站内搜索请求全部 403 Forbidden 了,登录 Algolia 发现有个告警:

Your application "markjour.com" is currently paused
We automatically pause free-tier applications after 30 days of inactivity to optimize cloud resources. You can resume this application within 6 days (until October 15, 2026). After that, this application will be removed. To prevent future pauses, consider upgrading to Grow.

大意就是免费套餐如果连续 30 天没有活动,就会被 Paused,如果不在 10/15 之前点击恢复,数据就会被删除。

检查邮件,9/15 收到了一封提示邮件,看来他们是会给 1 个月(或者 30 天)数据恢复窗口。

网站浏览量本来就不多,主要就是我自己查看。8 月中旬从阿里云虚拟主机调整为腾讯虚拟机部署之后长时间都是 0 访客,更加没有机会触发这个搜索功能了。

我后面在有新文章上线之后及时提交新的索引数据进去,这样应该就不算 Inactivity 了吧。

#1315 DeepSeek Harness

2026-10-01

DeepSeek Harness 在 Windows 上我用官方提供的桌面版,在 Ubuntu 上我就用官方提供的网页版(dsh web)。

直接运行

$ npx @deepseek-ai/dsh web
dsh web: http://127.0.0.1:3080/?token=fQwKSjdz01lMUcOexWcDz-flAexSgcMT53OZzlqmT64
dsh web: opening the default browser; pass --no-open to disable

加入 Systemd 进程守护

因为 npx 本质上是一个动态下载/解析器,更稳妥的方式是全局安装 @deepseek-ai/dsh,然后让 systemd 直接执行 dsh web。
固定安装版本,可以确保 dsh 稳定运行,避免 systemd 重启时悄悄升级导致配置或插件兼容性变化。
想想,Windows 自动更新多烦人,你着急开机使用,结果它“正在升级,请勿重启”。

安装 dsh

-> % sudo npm install -g @deepseek-ai/dsh
npm WARN deprecated node-domexception@1.0.0: Use your platform's native DOMException instead

added 543 packages in 7m

65 packages are looking for funding
  run `npm fund` for details

-> % which dsh
/usr/local/bin/dsh

-> % dsh --version
0.2.0-rc.2

创建 Service

find ~/.config/systemd/user
mkdir -p ~/.config/systemd/user
vim ~/.config/systemd/user/dsh-web.service
[Unit]
Description=DeepSeek Harness Web
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
WorkingDirectory=%h
Environment=DSH_HOME=%h/.dsh

ExecStart=/usr/local/bin/dsh web --no-open

Restart=always
RestartSec=5

[Install]
WantedBy=default.target
systemctl --user daemon-reload
systemctl --user enable --now dsh-web

systemctl --user start dsh-web
systemctl --user stop dsh-web
systemctl --user restart dsh-web

# 查看状态
systemctl --user status dsh-web

# 查看日志
journalctl --user -u dsh-web -f

本地访问 http://127.0.0.1:3080/ 就可以开发了。

升级

# 查看版本
-> % npm view @deepseek-ai/dsh version
0.2.0-rc.2

# 查看当前安装版本
-> % npm list -g @deepseek-ai/dsh
/usr/local/lib
└── @deepseek-ai/dsh@0.2.0-rc.2

# 查看是否可以升级
-> % npm outdated -g @deepseek-ai/dsh

#1314 欧洲人口结构变化带来的风险

2026-09-28

欧洲近年来正在经历持续的人口与宗教结构变化。来自非洲、中东、南亚等地区的移民不断增加,非欧洲裔人口总体呈增长趋势。不过,由于欧洲各国通常不统一按照种族统计人口,因此很难准确计算整个欧洲的“黑人比例”。相比之下,穆斯林人口的变化有相对明确的统计数据。

#1312 女儿被两次爽约之后,我们该如何教她正确处理

2026-09-26

最近女儿连续两次遇到同学爽约。真正让我和妻子感到不满的,并不是同学没有遵守约定,而是女儿面对这样的情况所表现出来的态度:她似乎并没有因为自己的时间和付出被忽视而感到愤怒,也没有要求对方解释,更没有明确表达自己的不满。我们担心她在人际关系中习惯性地委曲求全,不懂得爱惜自己。

第一次,女儿和同学约好一起玩,到了约定时间,同学却忘记了,跑到另一个同学家玩去了。今天又发生了类似的事情:女儿依旧是和这名同学约好一起玩,到时间后电话却一直打不通。我们计划下午一起出去玩,但女儿坚持一个人留在家里等同学。结果一直等到下午五点多,电话才终于打通。

更让我们生气的是,同学并没有主动解释为什么没有赴约。女儿打电话过去,只问了一句“你怎么没有来”,对方没有给出合理解释,电话就挂了。我们认为这种事情已经不是一次偶然失约,而是连续发生,因此对女儿进行了教育:别人这样对待你,你应该表达自己的不满,不能一再忍让,更不能让自己的付出和等待被轻易忽视。我们甚至告诉她,如果对方连一个合理解释都不给,就应该考虑结束这段友谊。

后来我让女儿再次打电话,明确告诉对方自己等了一下午,希望对方解释清楚。女儿只说到一半,对方说自己在写作业,随后又说马上过来。我们觉得“写作业”这个解释很可能并不能解释为什么几个小时都联系不上,但最终同学还是来了。只是女儿已经因为我们的批评情绪低落,后来虽然和同学一起玩,却明显闷闷不乐。

这件事让我开始重新思考:我们真正希望女儿学会的,到底是“生气”,还是“保护自己”?

之前我认为女儿没有表达愤怒,是因为她太软弱、不爱惜自己。但仔细想想,这个判断可能过于简单。孩子没有发火,并不意味着她没有感到委屈,也可能意味着她不知道如何表达自己的不满,或者她更加看重这段友谊,不愿意因为一次冲突而失去朋友。

因此,比起直接告诉她“你应该生气”“这种朋友应该绝交”,更重要的是帮助她建立三种能力。

第一是识别自己的感受。可以问她:“同学没有按照约定过来,你心里是什么感觉?失望、难过、生气,还是觉得没什么?”让她知道,任何一种感受都是可以被表达的。

第二是表达边界。她不一定要和同学吵架,也不需要马上绝交,但可以直接说:“我们明明约好了,你没有来,而且这么长时间联系不上,我很不高兴。”或者:“如果你临时有事情,可以提前告诉我,而不是让我一直等。”

第三是接受关系中的后果。表达不满并不等于必须结束友谊。真正成熟的人际关系应该允许彼此说“不高兴”。如果对方能够解释、道歉,并且以后有所改变,这段友谊仍然可以继续;如果对方长期反复失约、无视约定,那么女儿也应该逐渐学会减少投入,而不是不断等待。

反过来看,我们作为父母也需要控制自己的情绪。我们当然可以告诉女儿:“你的时间和感受同样重要。”但如果因为她没有按照我们的要求发火,就批评她“软弱”,她可能最终学到的不是如何保护自己,而是“我连生气的方式都不对,又让爸爸妈妈失望了”。

我现在更倾向于把这件事看成一次人际关系训练,我们希望女儿了解到:

  1. 朋友之间应该相互尊重,友谊很重要,但自己的尊严和边界同样重要;
  2. 当你感到不满时,要敢于把话说清楚,不能一味委屈求全;
  3. 面对矛盾,不必害怕冲突,也要能够接受关系可能因此发生变化。

#1311 腾讯新闻 Skills

2026-09-20

tencent news skills

下载地址:https://mat1.gtimg.com/qqcdn/qqnews/cli/hub/tencent-news.zip
API Key 获取地址:https://news.qq.com/exchange?scene=appkey

-> % unzip -q ~/Downloads/tencent-news.zip -d ~/.agents/skills/
-> % ll ~/.agents/skills/tencent-news
total 36K
drwxr-xr-x   4 catroll catroll 4.0K 2026-09-16 19:41:48 .
drwxrwxr-x 133 catroll catroll 4.0K 2026-09-20 01:47:18 ..
-rw-r--r--   1 catroll catroll  13K 2026-09-16 19:37:18 SKILL.md
-rw-r--r--   1 catroll catroll  898 2026-09-16 19:41:48 _skillhub_meta.json
drwxr-xr-x   2 catroll catroll 4.0K 2026-09-16 19:41:48 references
drwxr-xr-x   2 catroll catroll 4.0K 2026-09-16 19:41:48 scripts

通过 tencent-news-cli 配置好 APIKey 就好了。

然后在 cursor 中测试一下:

使用 tencent-news skill 查询今天的 5 条新闻,并返回标题、发布时间、来源。

使用 tencent-news skill 查询武汉未来 7 天的天气,有没有雨。

tencent-news-cli

-> % curl -fsSL https://mat1.gtimg.com/qqcdn/qqnews/cli/hub/tencent-news/setup.sh | sh
Downloading CLI from https://mat1.gtimg.com/qqcdn/qqnews/cli/hub/linux-amd64/tencent-news-cli
Checksum verification passed.
Tencent News CLI setup completed
CLI path: ~/.tencent-news-cli/bin/tencent-news-cli
Installed tencent-news-cli (v1.0.16)
Added TENCENT_NEWS_INSTALL and PATH setup to ~/.zshrc
warn: API Key is not configured.

后续步骤 / Next Steps:
1. 重启终端或打开新的 Shell。
   Restart your terminal or open a new shell.
2. 从以下地址获取 API Key:https://news.qq.com/exchange?scene=appkey
   Get an API Key from https://news.qq.com/exchange?scene=appkey
3. 设置 API Key:tencent-news-cli apikey-set KEY
   Set it with: tencent-news-cli apikey-set KEY
4. 验证 API Key:tencent-news-cli apikey-get
   Verify it with: tencent-news-cli apikey-get
5. 开始使用 CLI:tencent-news-cli help
   Start using the CLI: tencent-news-cli help

-> % tencent-news-cli apikey-set ******
✅ API Key 已写入 /home/catroll/.zshrc
   执行以下命令使当前终端立即生效:
   source /home/catroll/.zshrc

-> % tencent-news-cli help
tencent-news-cli 是腾讯新闻的命令行查询工具,支持热点新闻、新闻搜索、早晚报等内容查询。

Usage:
  tencent-news-cli [command]

Available Commands:
  apikey-clear 清除已配置的 API Key
  apikey-get   查看当前配置的 API Key
  apikey-set   设置 API Key 并持久化到系统配置文件
  evening      查询今日晚报,如果是18点之前,则提示用户查询热点新闻
  feedback     提交使用问题反馈,可以把跟问题相关的上下文一并提交
  gaokao       高考志愿填报相关查询
  help         Help about any command
  hot          查询热点新闻榜
  jiaozhen     较真查证,对网络流传的说法进行事实核查
  morning      查询今日早报
  search       搜索新闻,支持通过 --limit 指定返回条数
  sport        体育赛事相关查询
  update       更新 tencent-news-cli 到最新版本,支持 --force 强制更新
  version      查看版本信息及更新状态
  weather      查询天气,默认查询当前地区,可通过 --adcode 指定地区

Flags:
      --caller string   skill 的名称,用于上报
  -h, --help            help for tencent-news-cli

Use "tencent-news-cli [command] --help" for more information about a command.

#1310 Email Verification API

2026-09-18

传统邮箱验证通常采用 Double Opt-In:用户提交邮箱后,服务端发送验证邮件,用户切换到邮箱客户端打开邮件,再点击链接返回网站完成验证。这个流程虽然可靠,但存在明显的行为断点。新的 Email Verification API 试图让浏览器在用户不离开当前页面的情况下完成邮箱所有权验证。

#1308 俄罗斯黑海舰队还剩多少战力

2026-09-16

俄乌冲突中,受到主要打击的俄罗斯海军力量是黑海舰队。虽然还没有网上所说的“团灭”,但其水面舰队实力已经明显下降。乌方2026年7月公布的评估称,黑海舰队33艘主力作战舰艇中有4艘被毁、8艘受损;34艘登陆舰中15艘被毁、10艘受损;23艘辅助舰船中3艘被毁、9艘受损,合计为19艘被毁、18艘受损。这组数字属于乌方口径,不能直接当作独立统计,但可以作为观察黑海舰队损失规模的一个参考。

真正值得关注的,其实不是简单统计“沉了多少艘”,而是黑海舰队的作战能力正在发生变化。旗舰“莫斯科”号于2022年4月沉没,此后俄军又持续有护卫舰、导弹舰、潜艇和辅助舰艇遭到攻击或受损。军事方面我并不专业,但从公开信息来看,尤其是今年以来,每当俄罗斯船舰遭到袭击,随后往往都能看到卫星图像或其他公开影像,显示部分舰艇和港口设施受到明显破坏。

因此,与其说黑海舰队已经失去全部作战能力,不如说它的水面舰艇体系正在持续被削弱,远程导弹和舰队机动作战能力受到明显影响,但潜艇以及部分小型导弹舰仍然具备重要的远程打击能力。截至9月的公开分析也显示,黑海舰队并没有完全失去“口径”巡航导弹的发射能力。

这场战争真正值得研究的,是攻击舰艇的方式发生了变化。无人艇、无人机、远程导弹以及侦察监视手段正在组合使用,攻击目标也不再只是海上航行中的军舰,而是逐渐延伸到港口、锚地和维修区域。

舰艇进入港口,确实可以降低在海上被发现和攻击的风险,但港口并不意味着绝对安全。一旦对手能够持续进行侦察,固定停泊的军舰反而更容易成为远程精确打击的目标。

从这场战争来看,海上作战有几个值得关注的变化:

  1. 军舰在封闭海域很难单独作战,需要和岸基反舰、防空、电子战以及侦察系统配合起来;
  2. 军港不能过度依赖少数固定泊位,高价值舰艇需要分散部署并加强防护;
  3. 面对无人艇、无人机等低成本目标,单靠传统防空武器并不经济,需要建立多层防御体系;
  4. 补给、维修和造船能力同样重要,港口和维修设施本身也可能成为攻击目标;
  5. 战时军舰在固定港口和维修区域停留的时间越长,暴露风险就越高,需要提高机动和分散能力;
  6. 更值得研究的是,无人系统如何以相对较低的成本持续消耗高价值军舰,以及防守方如何降低拦截这些低成本目标的成本。

黑海战争并没有证明“大舰巨炮已经过时”,但正在证明一个更加现实的问题:现代军舰越来越难以脱离侦察、防空、电子战、岸基火力和后勤体系独立生存。

时间 舰艇 类型 重大损失 可信度/说明
2022-04-14 “莫斯科”号 光荣级导弹巡洋舰 沉没 俄国防部确认。舰上起火、弹药爆炸并造成舰体严重受损,拖带途中失去稳定性后沉没。
2025-12-15 基洛级潜艇 柴电潜艇 据称重创 乌方称在新罗西斯克港使用无人潜航器攻击;俄方否认舰艇受损,暂不能列为确认损失
2026-08-12 “马卡罗夫海军上将”号 11356R型护卫舰 严重受损 新罗西斯克港遭袭,卫星图像显示舰艇及导弹发射区域出现明显损伤;相关报道确认其受损。
2026-08-12 “埃森海军上将”号 11356R型护卫舰 严重受损 卫星图像显示舰艇前部及导弹发射区域受损。
2026-08-12 大型登陆舰 大型登陆舰 受损 乌方称新罗西斯克海军基地遭袭时受损;公开报道确认有大型军舰受击,但具体舰名及损伤程度信息有限。
2026-08-12 “暴徒-M”级小型导弹舰 小型导弹舰 严重受损 新罗西斯克港遭袭后,公开卫星图像显示舰体后部及垂直发射系统附近存在严重火灾和结构损伤。
2026-09-09 “埃森海军上将”号 11356R型护卫舰 再次遭重创 乌方称遭“海王星”导弹攻击;后续卫星图像显示舰体前部及垂发区域明显受损。
2026-09-09 “马卡罗夫海军上将”号 11356R型护卫舰 再次遭重创 卫星图像显示前部垂直发射系统附近存在中重度损伤。
2026-09-09 “暴徒-M”级小型导弹舰 小型导弹舰 严重受损 卫星图像显示其上层建筑后方及垂直发射单元区域发生严重火灾和结构坍塌。

附:俄罗斯海军舰队分布

俄罗斯海军一共五支舰队,分布在五个主要方向:

  • 北方舰队驻守俄罗斯北部,面向北冰洋,靠近挪威和北极;
  • 波罗的海舰队位于俄罗斯西部,面向波罗的海,靠近芬兰、瑞典和波兰;
  • 黑海舰队位于俄罗斯西南部,面向黑海,靠近乌克兰、土耳其;
  • 太平洋舰队位于俄罗斯远东,面向太平洋,靠近日本、韩国;
  • 里海区舰队位于俄罗斯西南部,面向里海,靠近哈萨克斯坦、伊朗。

PS:里海区舰队严格来说不是“舰队”(Fleet),而是 Flotilla(区舰队/舰队支队)。