惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
F
Fortinet All Blogs
量子位
G
Google Developers Blog
J
Java Code Geeks
N
Netflix TechBlog - Medium
博客园 - 聂微东
宝玉的分享
宝玉的分享
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
月光博客
月光博客
The Cloudflare Blog
Apple Machine Learning Research
Apple Machine Learning Research
爱范儿
爱范儿
雷峰网
雷峰网
M
MIT News - Artificial intelligence
T
Tailwind CSS Blog
V
Visual Studio Blog
阮一峰的网络日志
阮一峰的网络日志
博客园 - 三生石上(FineUI控件)
Microsoft Azure Blog
Microsoft Azure Blog
aimingoo的专栏
aimingoo的专栏
Martin Fowler
Martin Fowler
有赞技术团队
有赞技术团队
T
The Blog of Author Tim Ferriss

SamHou's Blog

tailscale 进阶用法 一个服务绑一个域名并启用 SSL 傲娇、后宫和党争——零之使魔动画点评 人生的意义是什么?——脏翅膀点评 水星冲浪日志 4 总感觉有什么不对——Anemoi 全线点评 Hexo 博客接入 Fediverse —— Hatsu + Vercel 踩坑记 水星冲浪日志 3 —— Fediverse、Arch Linux 和写作风格 DroidSpaces 在安卓上跑 Linux 发行版踩坑实录 从零开始配置 VPS —— 主机名、用户组和远程权限安全实践 奶奶都能看懂的 C++ —— 类、初始化、预处理和分离式编译 让你验证请求来自 CF —— Authenticated Origin Pulls 攻略 水星冲浪日志 2 —— PT、换域名、约稿和建站机 奶奶都能看懂的 C++ —— 函数指针、decltype、类型别名和尾置返回 奶奶都能看懂的 C# —— LINQ、 Lambda 和 IEnumerable
水星冲浪日志 5
Sam Hou · 2026-08-28 · via SamHou's Blog

好热!好热啊!出门要融化了!!

不想开学。

各位读者好,这里是沉迷代码的 SamHou,这次是真的久等了。

上一篇《水星冲浪日志》发出去之后已经过去一个半月,开始写作本文的现在都快开学了。既然声称自己是月刊,我觉得还是更新一下比较好,避免各位以为我失联。当然,素材已经足够,写一篇新的日志也不是那么困难的事情。

提到素材,在这里插播一个广告自我推广——我会在 Fediverse 上实时更新每天的动态,而这个日志的素材很多都来自那里,许多新鲜(但不成熟)的想法会发布「仅关注者可见」的贴文,如果等不及月刊可以直接在那里阅览。非常欢迎各位来 Fedi 和我交流讨论。

回到正题,我记得上一期提到装机的事情,那时候还在等电脑组件到货,这次就从那里继续聊下去吧——

家里养鸡·续

前文已经提到过购买机器的配置,而装机过程嘛,想必来阅读这个博客的大家也没什么兴趣,所以这里就先放一张外观图片吧~

机箱图片

之所以外接了移动硬盘,是因为硬盘太贵了买不起,这个盘是作为备份用途的。

不得不说,这个性能真的很不错,我的一堆 docker 服务跑得非常欢乐,而且看 jellyfin 转码的时候也可以用集成的显卡轻松应对。

嗯对,除了硬盘。存储什么时候降价了我必须狠狠地买盘,现在根本存不下那么多学习资料动画和照片。

来看看探针吧

提到探针,就不得不提另外一件事了——我打算开发一个属于自己的探针。

LiciaMonitor

这节的小标题就是我正在开发的探针的名字了。

你可以在这里,视奸我的开发过程。注意这个项目现在完全不完整,可能需要很久才能开发完毕。

那么,好奇的读者肯定要问了,为什么我要开发这个探针呢?事情的起因,其实是我的这个 Nodeseek 帖子komari-monitor 的「数据存储」进行了一波重构,最显著的就是「自动数据聚合」功能,这个功能导致数据颗粒度变粗了很多(数据库不再存储原始数据),而在上面的帖子里,你也可以看到 komari 的作者解释是因为性能原因才做出这个决定。但是作为一个对数据准确性有很高要求的人,我希望一个探针可以:

  • 存储 agent 上报的所有数据
  • 在不影响数据准确性和全面性的前提下,尽量提升性能

而 komari 的丢包算法显然无法做到这一点——数据聚合后,你甚至无法知道到底是哪个精确时间点发生了丢包,这是我无法容忍的。

并且,经过 fedi 上的朋友的提醒,才发现 komari 这些探针在用关系型数据库存时序数据,这在大量数据场景下会产生一定的性能损耗。

于是,既然不满意现成的解决方案,直接手搓不就好了吗?

——当我得出这个结论时,我立刻意识到这绝对是一个需要大量学习才能完成的项目。这是因为在此之前我只有 C# 和 .NET 桌面应用程序开发的经验。这点 C# 和 XAML 完全不足以支撑我完成这个应用程序。

经过与 ChatGPT 等多种 AI 工具的激烈讨论后,我得出结论,我需要:

  • 学习 GO 语言,来取得一种编写能够在小容量设备和 NAT 机器的极限资源情况下运行的数据收集 Agent
  • 学习前端,制作一个 web 管理面板,和 ASP.NET 进行交互
  • 学习 ASP .NET Core 和 EF Core,以用 C# 接受这些上传的数据,并对后端数据库进行操作

截止到本文写作的时候,第一个目标已经达成了。现在,我正在阅读《Head First HTML/CSS》来学习前端网页编写技术,尝试写出一些基础的界面。

总之,这个项目还需要更多的学习,还能顺便学习前端技术栈,或许过一段时间各位读者就会发现这个网站突然大变样了也说不定。

声明:本文拖更就是因为沉迷学习和编写代码。绝对不是因为看番和玩 Gal 入迷了。

请通知我吧!

上一节提到了我会用 C# 和 XAML 开发桌面应用程序。对于摆脱了 Windows 的一个 .NET 开发者来说,Avalonia 是我们不得不品味的一环,可以把 WPF 技术几乎按照原样搬过来,让应用程序可以跨平台运行。不得不说,Rider + Avalonia 的开发套件已经相当成熟了,写起来非常爽。

使用 Avalonia 的机会很快就来了。我发现 ntfy 的自托管服务器,在套 Cloudflare 的情况下,无法支持官方 ntfy 命令行 client 的 long pulling 方式的数据流,而必须使用 websocket。一个想法在我的脑中形成——既然如此,那就直接做一个「ntfy desktop」吧!做成桌面应用,用 websocket 连接远程服务器,再用 notify-send 向 Linux 桌面环境发送通知。

就这样,NtfyDesktop.NET 诞生了。它是一个 Ntfy 桌面程序,允许你连接到远程服务器,收取远程 topic 的消息。

现在,终于可以愉快又方便地在桌面端收取 Ntfy 的消息了!

Avalonia 开发确实是一个令人愉悦的过程。

除了 Rider 的插件。具体来说,在开发过程中,我发现我的消息经常会发送两次,而且在彻底退出关闭程序后,消息发送依然会继续。我百思不得其解地诊断了好几遍多线程和 Dispose 逻辑,甚至让 AI 做了会诊,却仍旧无法得出其根源。

我刚才也提到了是 Rider Avalonia 的插件导致的问题,结合「发两次消息」,在继续往下翻之前,各位读者可以猜猜,到底插件干了什么呢?

直到我发现 Avalonia 插件的设计器中列表和按钮竟然是可以点击的,谜题的答案才浮出水面:设计器并不是按照代码生成页面的预览,而是后台运行了一整个窗口实例!而由于我们使用了 MVVM,View Model 的实例在设计器中被后台生成,而 VM 中的初始化代码会从磁盘自动加载保存的 Ntfy 服务器配置——这就导致,在启动应用程序调试时,实际上启动了两个实例,一个是设计器的,一个是正在调试的实际运行的程序。

这也揭示了上文谜题的真正原因。发送两次消息是因为设计器 + 调试中程序总共有两份;彻底停止调试后,设计器中的程序并不会停止而是永久存在(直到代码修改,但是修改后设计器会立即重载,这样的话如果代码没有语法错误依旧会继续运行)。

找到根源的时候有点气笑了,我真的连夜卸载这个插件……

喂喂喂设计器是后台运行一个实例这件事你得告诉我一下吧,整成这样 Debug 几天才发现啊!!!

大战网络基础设施

NAS 有了,跑 Agent 的后备家里云有了,还差什么?

Windows 主机!虽说我已彻底迁移到 GNU/Linux,并且不玩任何 PVP 需要反作弊的游戏,而且大部分游戏都可以在 GNU/Linux 上用 Wine 或者直接在 Steam 中玩,但是如果有一台可以 24h 开机的 Windows 开发机器,不是很酷吗?于是我选定了闲置游戏本,准备送到后备家里云那边(对,后备家里云和我的台式机并不是在同一个公寓)——

好处有这些:

  • 可以将 Office 文档传送过去编辑,最终确认格式(用于处理那些只能交 word 的课,以及各种 PPT 展示)。
  • 可以远程游戏,风扇不会吵。
  • 可以用嵌入式和移动设备进行串流,允许它们访问桌面应用程序和游戏
  • 可以将负载迁移到电费更便宜的住处,以降低能源开销(不知为何你自己清楚我家电费已经最高阶梯了,好心疼钱……)
  • 可以在任何地方继续开发 windows 应用程序,或继续执行操作
  • 可以在缺少独立显卡的设备上,委托远程运行 AI 训练/推理任务
  • 和后备家里云放在一起,可以利用 WOL 内网唤醒,避免单点故障关机需要人肉运维

然后,不出意外地出意外了。

家里有两台游戏本,家里人正在使用其中一台。其中一台网口由于之前某人(真的不是我)暴力打开后盖的原因,接口的线断了,插入 2.5G 网线交换机,只能协商到 100M;另一台网口看起来是好的,但是今天插拔几次之后就再也没有识别了,硬件上不识别,网口的灯甚至在拔出网线后还是亮的。

我觉得真可以拉黑 hp 这家公司了,他们家电脑是我见过故障最多的,鬼知道为什么家里人特别爱买,全家游戏本全是 HP 的暗影精灵,而且他家打印机也是一坨大的,网络打印就没靠谱过

行吧,先给后者挂上 USB 网卡,在家里用起来,先进行一波稳定性测试。

不测不知道,一测吓一跳:就在网口“死亡”后的十几天,我发现网口的灯突然灭了。再次插入网线之后,一切都恢复了正常,2.5 G 的协商速率回来了!

玄学问题

既然稳定性已经在内网得到了验证,于是装上 Tailscale 送到了后备家里云那边。测试发现一切正常,无论是 Sunshine + Moonlight 串流还是 RDP,都能够稳定地连接,而由于是同一个城市 P2P 直连,有一端是 NAT1,所以几乎完全没有延迟。

写作本文时是安装完毕后的第二天,目前状态良好……?

是的,我把某些垃圾应用(比如绿油油和工作绿油油)装载在那台 24h 开机的机器上,彻底避免了需要掏出手机才能登入的问题

Pixel Experience

~~字少事大:~~我买了台 Pixel 体验安卓。

不得不说,原生安卓在不安装垃圾拉史应用(嗯,垃圾应用有哪些,你都来看我博客了,应该懂得)的前提下,是非常流畅好用的。

至于为什么要买呢?这就不得不从购买之前说起了。在此之前,我的两个手机是这样组织的——Apple 手机用于养蛊,安装垃圾拉史应用,而我的一加手机则刷入酷安大佬的 LineageOS 用于使用开源 App 和非拉史应用。

但是,Apple 产品让我红温了好几次,几个月前我甚至还写了篇《为什么 Apple 产品应该滚出我的生活》的小文章分享在绿油油的圆形分享区中。

由于比较有攻击性,原文放在本文最后了,欢迎各位来品鉴。

而且考虑到 Apple 没法用 root 去掉广告,而酷安大佬的 LineageOS 非官方可能存在某些安全风险,于是彻底扔掉了 Apple 手机 + 一加 Lineage 的方案,改成了一加默认 ROM + Pixel 默认 ROM 的组合方案。

顺带一提,这标题不是 Pixel Experience 这个 ROM,而是 Pixel 的 Experience(笑)。

请原谅我这个莫名其妙的笑点

至于「查找手机」功能嘛,这个简单——有个开源的 fmd,你可以自己部署然后在你的设备上安装并允许后台运行,就可以随时看到设备轨迹、锁定设备、抹除数据,甚至可以用摄像头进行拍摄。

既然手机都折腾成这样了,电脑系统当然也少不了——

支持 Debian 谢谢喵

在之前的文章里,我曾经提到过我把系统重装成了 Arch Linux。但是深度使用几个月之后,我发现一件事:

Arch 不适合我用,我更适合 Debian

为什么?

自从用上了 Debian,我发现我折腾系统的时间变少了。

我不再像在 Arch 上一样,查 Wiki 到凌晨只是为了让某个模块工作;也不会翻阅 114514 个贴文并祈祷有人遇到过一样的问题;更不会每天 sudo pacman -Syu 滚动更新既折磨自己,又浪费流量。

Debian 给我的感受是,It just works. 几乎所有的应用程序都会提供 deb 的预编译包(或 appimage),而安装后立即就可以用(而不是像 AUR 经常从源码编译之后才能运行)。当然从源码编译可能稍微能避免安全和某些问题,但是因此浪费的算力和时间对我来说还是开销太大了。

我觉得 Debian 在可用性和可折腾性中取得了一种平衡——你的系统不会随随便便爆炸,让我能把该干的事情干完;系统虽说没有 Arch 那么轻量,但开箱即用的预装恰到好处;如果你想要自己折腾一些东西,系统也允许你这么做而不是像 Windows 一样保护过度

此外,你甚至可以直接在大陆买到 Debian GNU/Linux 的安装介质——

Debian 安装介质

其实之前还是尝试过一下 NixOS 的,但是发现学习成本有点高了,所以就放弃转投 Debian 的怀抱啦。毕竟,我的所有服务器几乎都是 Debian 系统!

后记

上海的夏天确实是太热了,完全不想出门啊。

暑假确实是一个适合大量学习的时间段,而我也很幸运地遇到了《Head First Go》这本书,学会了基础 Go 开发。

英语四级的成绩单也到手了,我个人其实并不是非常满意(英语免修一学期没学了);买了点六级的学习资料,准备年底碰瓷六级~

说实话,当我过了高考这一关之后,突然发现学习「喜欢的东西」真的是非常快乐的一件事情。

我的话,除了程序设计,还是非常喜欢英语和外语的——当你逐渐学会这些语言的时候,逐渐发现自己能够读懂更多的外语资料,是非常有意思的过程嘛。

哦对了,水课给我滚出大学啊!

别忘了,《水星冲浪日志》被设计为轻松的栏目,因此你可以在水课上偷偷阅读。

那么,下一期《水星冲浪日志》见~

附录 为什么 Apple 产品应该滚出我的生活

攻击性预警!

这个附录攻击性较强,包含对 Apple 这家公司的不友善的词句,请谨慎阅读!

为什么我觉得 Apple 设备应该滚出我的生活?

  • 你的手机信号是喂狗了吗?byd 扫个共享单车半天打不开,发现整张卡就无信号。我请问了,我又不是在荒野求生,我还能处于无服务的区域吗¿我的解决方案居然是拿我的安卓给你开热点,我要你有啥用😅
  • 反人类操作。你那狗屎的返回逻辑,就不是给人用的吧?byd 左手能返回右手不行,系统还没有同一的全局返回,真的是离谱他妈给离谱开门,离谱到家了
  • faceid,让我红温最多次的功能。我请问了,不加额外的指纹可以,但你这 faceid 纯纯一坨大的。戴口罩+头戴耳机根本就没几次能解锁,要把手机贴到眼球上才能勉强解开,口口声声说辅助功能做得好,你咋不考虑我们这些坐地铁要戴口罩保护自己,入耳耳机还不兼容耳朵的人类呢¿最关键你扫不开也就算了,你不让我输密码是何意味呢?非要等你 faceid 确认失败之后才能输入,我滑半天没法打开密码键盘
  • 你们设计师的脑子是单细胞的吗?同时插入两张卡,卡 2 作为流量,卡 1 通话,卡 1 收到电话卡 2 流量直接断开¿草履虫都比你们强,接个电话之后一段时间发不了微信,我真的会红温
  • 不识别我的手指。我是透明人还是咋滴,就你们家的设备不识别我的手指???好几次了,安卓从来没有这种问题,而且 Apple 的键盘一点也不流畅,相比安卓完全就是一坨巨大的屎山,开发者你们产品自己用吗?