2026-02-10 12:43:05

长久以来,我一直在寻找一个称心的稍后阅读工具。从 Pocket 到 Raindrop,我都用过一段时间。Raindrop 存在一个矛盾的问题:它的数据永久保存功能需要付费,但如果只当收藏工具用,又有 MarkMark 等产品可替代;如果当稍后阅读工具用,付费倒也合理,可问题是——我不愿意打开它。
我甚至想过自己开发一个 AI 驱动的增强版 Raindrop,加上自动标签、智能推荐、小红书式浏览……需求是真实的,但自己造轮子不现实,一个人根本做不完。
直到我遇到了 Readwise Reader。
一个稍后阅读工具,如果你不愿意打开,那它保存再多内容也没有意义。Reader 是我第一个愿意主动打开的稍后阅读工具,原因有三个。
第一,阅读体验好。Raindrop 只有 List 视图,没有底部 Tab,打开它更像在翻一个收藏夹,而不是在用一个阅读工具。Reader 不一样,它的界面就是为阅读设计的,打开一篇文章,读起来舒服,让你愿意停留。
第二,操作逻辑顺。用 Raindrop 的时候,我自己建了一套标签体系来管理阅读状态:uninput(未读)、inputing(在读)、input(已读)。这套逻辑本身没问题,但每次都要手动打标签,操作起来有摩擦。而且 Raindrop 保存文章时,光标默认停在备注栏而不是标签,这些小细节堆起来,体验就差了。Reader 原生就有 Inbox(未读) → Later(在读)→ Archive(已读)的流转,和我在 Raindrop 里手动搭建的逻辑完全一致,但不需要自己建标签,拖一下或者点一下就完成状态切换。操作少了一步,使用意愿就多了一分。
第三,随机排序。打开稍后阅读工具,面对一长串收藏列表,常常不知道该读哪篇,然后就关掉了。Reader 有随机排序的功能,把收藏列表打乱,不用从头到尾按顺序挑。这个看似简单的功能,实际上解决了「打开后不知道读什么」的问题,大大降低了阅读的启动成本。
说完为什么愿意打开,再聊聊稍后阅读这件事本身。
我们喜欢探索新的、未知的内容,也喜欢有深度的文章。看到好内容,第一反应是「先存下来」,但存下来之后呢?大多数人的稍后阅读列表,最终变成了「再也不读」列表。稍后阅读的本质是一个输入流程:探索 → 阅读吸收 → 输出。它等于「未阅读 + 正在阅读」,终点是输出,越少越好。如果你的稍后阅读列表只增不减,说明流程出了问题。当列表被打乱,每次打开都能遇到不同的内容,稍后阅读就可以成为第一选择,不再无意识的是去找新的东西。
要让这个流程跑通,有一个前提:信息源要聚合在一处。我以前的状态是,文章放 Raindrop,视频留在各个平台,Twitter 的收藏内容放书签……信息分散在各处,想统一阅读根本不可能。Reader 把这些全部聚合到了一处,网页文章、RSS 订阅、Newsletter、Twitter、PDF、甚至视频,都可以在一个地方阅读和管理。只从这一处输入,阅读流程才能真正跑通。
稍后阅读解决的是「读」的问题,而永久保存解决的是「找」的问题。读过的内容,未来某天想引用、想回顾,能不能搜到?永久保存的终点是好查找,Reader 支持本地缓存和全文搜索,读过的东西不会消失。这也是稍后阅读的自然延伸——读完了,留下来,找得到。
最后聊聊 Reader 这个产品本身。
Reader 不只是一个稍后阅读工具,它的定位是聚合自定义信息输入流。你可以把它理解为稍后阅读 + RSS 阅读器 + Newsletter 收件箱,合在了一起。除了前面提到的阅读体验和状态流转,它还支持 Feed 订阅、Twitter 集成、YouTube 视频保存(带字幕文本)、阅读时高亮笔记,以及多设备同步。
顺带说一下,很多人会混淆 Readwise 和 Reader。简单来说,Readwise 是数据中枢,汇总你在各处的高亮笔记,统一管理、回顾和导出(比如同步到 Obsidian);Reader 是阅读端,是你实际阅读的地方。在 Reader 里产生的高亮会自动同步回 Readwise。
Reader 目前的订阅费用是 $9.99/月(按年付),对比同类工具不算便宜,但如果你能一直愿意使用它,自己得到了提升,就划算。新用户有 1 个月免费试用,学生可以申请半价,邀请其他用户还能获赠 30 天(你通过我的邀请链接注册也可以额外获赠 30 天,就有 60 天)。建议先试用体验一下,两个月足够你判断它是否适合自己。
稍后阅读的终点不是收藏,而是输出。好的工具不是让你存更多,而是让你真正愿意打开、真正读完、真正用上。Reader 对我来说,就是那个让「稍后阅读」不再等于「再也不读」的工具。
2025-12-08 11:40:01
在多台 Mac 间同步笔记或脚本可以使用 Git ,它能帮我们保留历史、解决冲突,但手动 git add/commit/push 容易忘。下面这套做法用 LaunchAgents 定时执行一个 Git 脚本,把指定仓库的修改自动提交并推送到 GitHub(或任意 Git 远端),既省事又留痕。
[email protected]:demo/notes-sync.git,本机已配置好 SSH Key 或 Token。/Users/demo/Workspace/notes-sync,请替换成自己的目录。新建脚本 /Users/demo/Workspace/git-auto-commit.sh:
|
赋权:
chmod +x /Users/demo/Workspace/git-auto-commit.sh |
在 ~/Library/LaunchAgents 新建 plist 文件 com.demo.git-auto-commit.plist:
|
加载与调试:
launchctl load ~/Library/LaunchAgents/com.demo.git-auto-commit.plist |
如需停止或卸载:
launchctl stop com.demo.git-auto-commit |
main(或 master),与远端分支保持一致;多人协作时保留 git pull --rebase 以减少冲突。StartInterval 300 秒适合笔记类场景;频率过高会增加推送次数,可按仓库活跃度调整。.gitignore 中排除缓存、日志、临时文件,避免不必要的提交。git-auto-commit-error.log,常见问题是网络不通、权限不足或本地/远端存在冲突。这样配置后,Mac 会在后台定时把仓库的变更自动提交并推送,跨设备同步靠 Git 即可完成,同时保留完整历史记录。
2025-12-08 11:40:01
代码直接在部署分支 dev 提交了,没在功能分支提交,在 dev 环境没有问题,功能分支合并到 test 分支部署时,丢失在 dev 分支提交的代码,出现问题
示例:test 环境出现单元测试问题,dev 环境没有这个问题,单元测试提交到了 dev 分支,导致 test 分支代码丢失
使用规则保证正确性,而不让人来保证正确性,2 种方式解决:
vim .git/hooks/pre-commit |
!/bin/bash |
chmod +x .git/hooks/pre-commit |
流程化:推送代码自动触发部署,就没有不推送代码就部署的问题
2025-11-17 23:34:03
一直骑摩托上下班,前几个月一次雨后上班被一位女司机给撞了,责任清晰,对方全责。前两天雨后下班,2 个行人过马路不走斑马线,雨后路滑,制动距离变长,差点撞到了。一旦遇到交通事故,有监控还好,没监控万一遇到特殊情况,难免扯皮。为了安全,决定还是整个行车记录仪。自己规范行车,但保不齐别人不遵守规则。
适合的场景
正常运动相机效果没有手机好,不适合场景
优势
要解决的问题
摩托车的机震可能导致手机摄像头光学防抖损坏,我也是最近才知道这个知识点。如果行驶过程中还录像,因为光学防抖会主动矫正摄像头,那会加速光学防抖损坏。
即使不在行驶过程中使用手机录像,也会经常使用手机导航,虽然不使用手机录像相比使用手机录像时机震影响要小很多,但是还是有一定风险。最好还是使用个减震的手机支架,我试用了下摩多狼的减震支架,但发现没有用,减震固定得太死了,找摩友要了他正在使用的「灯昕磁悬浮减震支架」,减震可以灵活移动,效果要好不少。
不过最好不使用手机导航时揣兜里,人体的减震性最好。
山狗与其它运动相机没有裸机防水功能而没有考虑。主要考虑大疆与速影 C200 系列。纠结的点主要在于大疆的价格,觉得 1000 多的售价,与基本只做行车记录仪的定位有点不匹配。看到了速影 C200 系列,就买来对比了下。
特点
注意点
价格
C200 优势:便宜 200
C200 PRO 优势:
实测 2 个防抖都不太行,直接安装在摩托车镜座支架上都不太可用
C200 PRO 优势
Action4 优势
两者都不能云端自动备份,不能丢失时也能看到之前录制视频。
C200 系列因为有车载模式 / 有防水充电线,更适合直接固定安装在车上,但其防抖性不太行, 可能配置个运动相机减震支架会好点。但如果不安装在车上使用,其车载模式与防水充电线优势也就没了。又多了劣势:如果不取掉充电口盖子,不太易用,每次充电要拆边框。取掉了又没有了防水的优势。
Action4 相比有了防抖优势,可以配合支架直接安装在车上使用,也可以使用挂脖与安装上头盔上使用,当不安装在车上使用时,也不需要车载模式与防水充电线。
我想平时还是挂脖使用,离车后也可以连续录制。最后天猫买了大疆,总价 1220,1170 + 50 挂脖支架,原来有 A2 内存卡。
天猫旗舰店
京东
拼多多
PS:拼多多「品牌好货」不是拼多多自营的,拼多多的「品牌好货」是聚合的三方商家店铺,只提供了一个「品牌好货」的入口,消费者看不了具体的三方店铺信息,客服也第三方店铺的。
只当行车记录仪可以上 C200,使用相对防盗的方式直接安装上车上。满足基本行车记录仪需求,可以区分事故责任,晚上可能看不清车牌号,防抖性一般。或者直接买更便宜不防水的汽车行车记录仪,自己 DIY 一下。
如果考虑还会拍点东西,建议直接上 Action4。其颜值更高,更愿意拿出去拍,易用性也很好。C200 PRO 有点不上不下,当运动相机拍可能功能不太够;安装上车上防抖跟 C200 差不多,有点划不来。贵的东西除了贵,确实优点更多。而大疆 Action4 做行车记录仪,完全够用了,完全不用什么 Action5 PRO 什么的了。
下大雨或者可视距离变少同时又下雨(如晚上下雨)的情况建议还是不要骑摩托车了,使用其它交通工具更安全。
顺便说一句,大疆还是有点格局的,可以激活试用。在中国,像京东/大疆这样的大厂,还是越多越好。
2025-11-01 16:15:40
我 Apple TV 现在是配合极米投影仪在使用,现在基本只偶尔使用 VLC + NAS 看电影。买过一段时间 Arcade 玩游戏,玩的频率不高加上订阅制不太划算,Apple TV 就只用来看电影了。
前两天突然想到能不能 Apple TV 玩下小时候的魂斗罗之类的游戏,折腾试了一下,还真可以。

我是使用的 RetroArch 实现的,可以按这 2 个视频教程操作,讲得挺详细。
RetroArch 的核心 Core 是模拟原来经典游戏主机的模拟主机系统,它提供一系列 Core,可以模拟原来各种经典游戏的主机,是一个 Core 集合,但它不提供具体的游戏,需要你自己去找。
这几个网站的资源实测可用:

因为 tvOS 本身没有 Files APP,RetroArch 是利用 tvOS 的 80 端口,即 Apple TV 对应 IP 地址 ( http://192.168.31.111/ ) 上传资源 。当打开 RetroArch 时,就会弹出这个提示。同一个局域网的其它设备或者说连同一个 WIFI 的设置,可以直接通过这个地址上传游戏资源。
但需要注意:要使用 Safari 浏览器打开这个地址,我使用 Chrome 就打不开,折腾半天。
在玩「超级马里奥」时发现「跳跃键」跳不高,换了个游戏资源也不行,最后发现是输入映射时不小心将跳跃键键映射到了 Turbo 这个键上,按 Y 键取消映射了就好了。


FC游戏机,是任天堂(Nintendo)生产、发行和销售的8位第三世代家用游戏机。日本版官方名称为家庭电脑(日版名:ファミリーコンピュータ,Family Computer,Famicom),俗称“红白机”,1983年7月15日在日本推出;欧美版名称为任天堂娱乐系统(英文版名:Nintendo Entertainment System,NES),俗称“灰机”,1985年10月18日在美国推出。
所以:
| FC | NES |
|---|---|
![]() |
![]() |


2025-10-24 21:45:11
现在经常在打羽毛球,羽毛球等级森严,级别差太多根本没法打,只要差上半级,差的这边肯定打不过,差上两级,双方就没有体验感。有一位名叫「波澜不惊」的网友写了个很好的「业余羽毛球等级说明」,对级别的描述很精确,对每个等级具体需要掌握什么技术与这个等级的特点写得很清楚。
我作为软件后端工程师,虽然我们也有初级/中级/高级工程师的划分,但每个级别具体需要掌握什么,界限往往很模糊。我就在想能不能像羽毛球等级一样,也做一个「后端工程师等级说明」?这样既能认清自己的水平,也能更有针对性地进步。

对于业余羽毛球初学者来说,正常的学习顺序是技术 -> 脚步 -> 球路 -> 体能,对应后端工程师,我将其它映射为技术 -> 业务 -> 架构 -> 兴趣。
羽毛球技术:握拍 / 发球 / 正手高远球 / 反手高远球 / 杀球 / 吊球,映射为后端工程师技术:编程语言 / 框架 / 数据库 / 缓存 / 中间件 / 容器化。其它一些技术如「勾搓扑挑」等映射为对工具的掌握,如「IDE、Linux Command、Git、Maven」等
对应羽毛球室外打球阶段,核心特征是会刚接触编程。对 IDE、Git、Shell 等工具几乎陌生,只能照着教材输出“Hello World”,还分不清接口、数据库、部署之间的关系,只求代码能跑起来。
对应羽毛球会握拍阶段,核心特征是会点编程语言。开始使用 IDE,能写变量、条件、循环、集合等基础特性,偶尔能写出小算法,可以照需求描述实现简单脚本或 demo,对数据库、缓存等还不太了解。
对应羽毛球会发球阶段,核心特征是会使用一种基础框架(如 Spring Boot)。开始理解接口开发的 POST GET 的区别,了解 Maven 命令,还不太会写数据库 SQL,还不能进行简单的业务开发。
对应羽毛球会打高远球阶段,核心特征是会能在指导下完成简单需求开发。会使用 MySQL 数据库,会写一些简单的 SQL,会使用 Git 。了解 MVC 开发,理解 ORM 等概念。能在指导下完成简单需求开发与 bug 修改,对表结构、用户登录原理与 Session 机制有初步认识。这个阶段更多是编码实现,也开始建立自己「实验室」通过 demo 代码实现各个技术点。
对应羽毛球小对抗、会挑球 / 偶尔会吊球阶段,核心特征是能在指导下完成小模块开发。技术上熟练使用主力语言、框架、MySQL 关系数据库,会使用基础的 Linux 命令,理解 Git 原理。可以写简单 CURD 增删改查代码,但 Bug 较多。
对应羽毛球小对抗、会杀球 / 吊球阶段,核心特征是能在指导下完成中等模块开发,能独立完成小模块开发与设计。技术上会使用常用中间件,会用缓存 Redis,理解 Maven 原理,理解 Spring 框架的核心原理,熟悉 Docker 基本用法。业务上熟悉基本的 API 设计,可独立设计 API;熟悉数据库设计,可以独立设计数据库表;有一定业务抽象能力,可以将简单业务抽象为数据库表结构与 API,会写单元测试;理解用户登录原理。开始形成以完成一个让别人 / 用户来用的比较完整的软件功能为主的「工作室」。
对应羽毛球中对抗、会反手高远球阶段,核心特征是能在指导下完成中大模块开发,能独立完成中小模块开发与设计。技术上熟练使用 Redis,熟练使用常用中间件,如 Kafka。具备初步的业务设计模式意识,不只是按需求实现,开始理解业务需求背后真实的意图,可以指出需求中问题,帮助需求闭环。知道需求的优先级与重要性,合理分配精力与时间。开始对安全编程有一定想法与实现,代码不只是考虑功能实现。 开发的功能维护性在中等水平。可以快速定位独立解决中等难度的技术问题。开始建立起来对自己技术的自信。
对应羽毛球中对抗、普通大学校队水平、掌握各种杀球/吊球的阶段,核心特征是能独立完成中等模块功能的设计与开发。技术上掌握部分中间件原理,掌握 Docker 容器化原理,阅读过其源码。掌握数据库、Redis 关键机制。业务上可以快速的熟悉与理解新业务,并完成从需求分析、方案设计、编码上线工作。写的代码质量好,bug 少。开始在团队内形成个人影响力。开始建立自己的「工厂」,相比「工作室」,「工厂」有一整套的规范和标准。
对应羽毛球大对抗、普通大学校队主力水平、会跳杀的阶段,核心特征是能独立完成大模块功能的设计与开发,独立解决复杂技术问题。技术上掌握中间件核心原理,从源码上理解。写的代码 Bug 非常少。各种业务系统的实现方式都已掌握,编码熟练使用各种设计模式,业务实现简洁但稳定,实现不仅考虑功能还兼顾安全,能承担核心技术攻关。开始发现现有架构的不足。这个等级需要掌握计算机基础知识,不然到不了这个级别。在团队内形成稳定的个人影响力。
PS:羽毛球技术的核心是通透的发力,后端工程师技术的核心我认为是计算机基础。发力可以分为:手指发力、手腕发力、内旋发力、鞭打发力、腰腹发力、全身发力。计算机基础可以分为: 计算机组成原理、Linux 操作系统,编译原理、网络原理、数据结构与算法等。业务球友不掌握发力,可以到 4.0 级,但绝对到不到 4.5 级。同样,我认为后端工程师不掌握计算机基础可以到高级工程师,但绝对到不了「高级工程师 +」这个等级。
对应羽毛球大对抗、普通教练水平阶段,核心特征是可以根据需要修改、扩展、优化架构。高级工程师主要是在已有的架构框架下完成设计,而技术专家会根据需要修改、扩展、优化架构。各种技术运用自如,熟练运用各种技术完成业务开发。并且有一两项突出的技术,比如对 Redis 的研究非常深,给它贡献过核心代码。可以快速定位独立解决很复杂的问题。独立开发与团队配合都很好,几乎是没有 bug 的。系统安全做得好。在团队内形成极强的个人影响力
对应羽毛球比赛级、地区普通组冠军水平阶段,核心特征是独立完成一个系统的架构设计。可以是从 0 到 1 设计一个新系统,也可以是将架构从 1.0 重构到 2.0。初级架构师负责的系统复杂度相对来说不高,例如后台管理系统、某个业务下的子系统、100 万 PV 量级的网站等。6.0 级别要么初级架构师,要么就是技术 leader,可以带一个小团队,开始有团队影响力。
做这么一个等级表不容易,涉及不少东西,写了很久,但水平有限,可能不太准确。本来让 AI 写,不太满意,全部手敲。后面可能不定时更新这个等级表。
后端工程师依次提升的 4 维度是技术、业务、架构、兴趣,而针对全栈工程师(独立开发),4 个维度又不太一样,我认为是技术、产品、需求、推广。每个职业都有自己的 4 维度划分。
还有一点小感受,学习计算机技术与学习羽毛球技术一样,关键是要有成就感,要有瘾,也就是正反馈,所以这就是需要有正确的方式与路线来学习,每个人情况不一样,需要找到最适合自己的方式与路线。