Posts for: #Tools

ntfy.sh 是什么

ntfy.sh 是一个很轻的通知服务。手机或电脑先订阅一个 topic,你的服务器、脚本、监控工具或任何程序,只要向 https://ntfy.sh/你的-topic 发一个 HTTP 请求,这条消息就会变成推送通知弹出来。

它适合做小而确定的提醒:备份失败、网站挂了、长任务跑完、家里传感器触发。最简单的用法只有一行:

curl -d "Backup failed" https://ntfy.sh/my-secret-topic

ntfy 是开源项目,可以直接用官方服务,也可以自己部署。默认不需要注册,所以 topic 名字本身就像密码,要取一个不容易被猜到的名字。敏感信息不要随手发到公共服务上。

官网:https://ntfy.sh/

GitHub:https://github.com/binwiederhier/ntfy

Mac 远程桌面:看的是同一个画面

今天我在外面,远程连回我的电脑操作。同事经过,看到那台电脑居然没锁屏——屏幕亮着,鼠标自己在动,窗口一个个开。我才去了解了 Mac 远程桌面是怎么回事。

打开 Mac 的「屏幕共享」连上另一台 Mac,你看到的就是那台机器此刻的屏幕,和坐在它面前的人看到的完全一样。它当下显示什么,你这边就显示什么。我在外面操作,那台电脑的屏幕就同步显示我的每一步——同事看到的"没锁屏",就是我远程操作的实时画面。

你动鼠标,那台 Mac 屏幕上的鼠标也跟着动;你打字,字就落在它的屏幕上。坐在电脑前的人能实时看到你点了哪里、开了哪个窗口、敲了什么,像看直播。

控制权是两人共享的。你能动,坐在跟前的人也能动。要是同事这时顺手去推那台电脑的鼠标,就会和我远程的操作抢起来——光标在屏幕上跳来跳去,谁都使不顺。想配合,得有人先松手。

远程桌面连过去,是两个人共用同一块屏幕、同一套鼠标键盘。人没在跟前,用的还是那台真机。

OSCAR:看 CPAP 真实在做什么

之前那篇 Apple Watch 数据分析说过,Apple Watch 推断的"夜间呼吸异常事件"不准。要看 CPAP 真实效果只能看机器本身的 SD 卡——那里有每一晚每两秒采样的数据。

把 SD 卡从呼吸机里拔出来插到电脑上,里面有个 DATALOG 文件夹,按日期一晚一个子目录。导出来扔给 Claude 跑脚本,14 晚的数据 30 秒就出来了。

下面分开说:CPAP 是什么、OSCAR 是什么、SD 卡里有什么文件、这些数据能算出什么、我自己最近两周的情况。


CPAP 是什么

Continuous Positive Airway Pressure,持续气道正压通气。一台小机器,靠管子和面罩把空气持续吹进鼻腔,用正压撑开睡觉时容易塌掉的上气道。专门治阻塞性睡眠呼吸暂停(OSA,Obstructive Sleep Apnea)。

OSA 的机制:睡着后喉咙后面的软组织松弛塌下来,把气道堵住,呼吸短暂停。停几秒大脑缺氧自动惊醒一下,气道打开,又睡着,几分钟后再来一次。一晚循环几十上百次,自己感觉不到。

CPAP 不吃药、不开刀,靠空气压力机械上不让气道塌。

我用的是 ResMed AirSense 10,自动调压(AutoSet)模式——机器实时检测气道塌陷的程度,自动在 5-15 cmH₂O 范围内调整压力。


OSCAR 是什么

Open Source CPAP Analysis Reporter。开源软件,Mac/Windows/Linux 都能装。专门解析 ResMed、Philips DreamStation、Fisher & Paykel 这几家主流厂商 CPAP 机器 SD 卡的数据。

呼吸机厂商通常有自家 App(ResMed 的 myAir、Philips 的 DreamMapper),但只给摘要:昨晚 AHI 多少、漏气是否合格、星星几颗。

OSCAR 直接读底层 EDF 文件,能看到每一晚每两秒的漏气、压力、流量限制、潮气量、呼吸频率,以及每一个被检测出来的呼吸暂停或低通气事件。还能画图,把 5 个小时的数据铺成一张大图。

[阅读全文]

Apple Watch 九年数据让我盯上三件事

断断续续带了几块不同的表,数据都在苹果手机里。

五月初我把数据导出来扔给 Claude,让它跑 Python 脚本逐项分析。三件事最值得管:

  1. 阻塞性睡眠呼吸暂停(OSA),要重新用 CPAP 呼吸机
  2. HRV 偏低
  3. VO2max 这一年在跌

下面分开说。


数据怎么来

苹果手机的「健康」app 里有「导出健康数据」按钮,生成一个 zip。解压后是一个 export.xml 文件,所有指标按时间顺序记在里面:心率、HRV、血氧、睡眠分段、呼吸频率、跑步路径、ECG 波形。戴表的每一秒它都在记。

最早一条是 2017 年。文件大,直接打开看不了,但 Python 脚本一两分钟就能跑完。

让 AI 写脚本,可以按自己想看的方式切。HRV 不看整天均值(白天工作时本来就低),只看凌晨 3-5 点睡眠最深的时段。跑步心率不看总均值,看各心率区间的占比。血压不看一两次读数,看 300 次测量里有多少次踩进高血压区。


三件事

OSA 和 CPAP

睡觉的时候,喉咙后面的软组织松弛塌下来,把气道堵住,呼吸短暂停。停几秒大脑缺氧自动惊醒一下,气道打开,又睡着,几分钟后再来一次。一晚循环几十上百次,自己感觉不到。

数据里能看出来。90 天里血氧有 12 次低于 92%;夜间呼吸异常事件均值 3.5 次/小时,最高 9.6 次/小时。

这事不是「打呼噜的小毛病」。每次呼吸暂停身体都进入一次窒息-惊醒应激,长年累月推高血压,加速心血管病变。我的血压 306 次测量里 62% 已经踩进 130/80 以上,多半跟 OSA 有关。

CPAP 是一台小机器,吹气进鼻子。持续正压把气道撑开,机械上不让它塌。不吃药,不开刀,靠空气压力解决问题。

我家这台 ResMed AirSense 10 几年前买的,因为面罩漏气吵到我太太,闲置半年多。五月初换了鼻枕式面罩,5/11 到货,5/13 重新开始用。

HRV 偏低

心率变异性。两次心跳之间的间隔不是固定的,有微小变化。变化越大(HRV 高),说明自主神经系统弹性越好——副交感(休息)和交感(应激)切换自如。HRV 低意味着身体长期处在应激态。

[阅读全文]

eink 手机重装后的工具清单

昨天重装了 eink 手机。安装后希望装少而精的几个工具即可:

Telegram、Pocket Casts、Claude、Google Tasks、Brave、YouTube、微信读书、微信输入法、Slax Reader、Slax Note、Dropbox、Gemini、Spotify。