这里记录无常笔记的功能设计与改进:先把使用需求讲清楚,再比较工具、实现功能,最后检验日常使用是否方便。
第一篇从个人阅读体验开始:给静态博客加一层私人阅读空间:划线、笔记、进度与跨设备同步。
这里记录无常笔记的功能设计与改进:先把使用需求讲清楚,再比较工具、实现功能,最后检验日常使用是否方便。
第一篇从个人阅读体验开始:给静态博客加一层私人阅读空间:划线、笔记、进度与跨设备同步。
博客里既有自己写的文章,也有整理进来的长篇资料。我希望它同时成为一个可以反复阅读、留下痕迹的地方:在电脑上读到一半,换到手机能接着读;遇到值得留意的段落,可以划线、写几句笔记,之后再找回来;不知道读什么时,随机打开一篇从未读过的文章。 这些功能只供我个人使用。文章继续公开,笔记、收藏和阅读记录由自己的账户保存。本文记录需求、现有架构和第一轮选型;功能尚未实现,下面的技术设计是后续实现的候选方案。 我希望怎样阅读 一个完整的使用场景是:在电脑打开文章,读到某段后划线,写下自己的理解,再收藏这段文字。晚上用手机打开同一篇文章,可以回到对应段落,也能看到先前的高亮和笔记。读完后标为已读,下一次“随机未读”便不再抽到它。 功能 期望行为 划线与笔记 选中文字即可高亮,并能添加、修改、删除笔记 阅读位置 再次打开文章时,可以继续上次阅读的位置 阅读状态 区分从未开始、阅读中、已读,允许手动调整 跨设备同步 电脑和手机使用同一份位置、状态、笔记与收藏 随机未读 从未开始阅读的文章中随机抽取,最好能限定专栏 整篇收藏 保存值得回看的文章,集中检索 段落收藏 保存某段原文、出处和自己的备注,支持跳回原文 私人使用 普通访客正常阅读,不能读取我的私人记录 这里有两个容易混淆的地方。 第一,“知道读了百分之多少”和“回到上次读的那句话”是两种能力。电脑与手机的行宽、字号、图片高度不同,相同的滚动像素位置没有可比性。 第二,“尚未读完”包含阅读中的文章,而“从未读过”不包含它们。我倾向于让随机入口默认选择从未开始的文章,把读了一半的内容放在“继续阅读”中。 桌面端希望支持快捷键和可搜索的入口,例如呼出阅读面板、输入几个字筛选收藏、回车打开。手机则需要适配长按选字和触屏操作,不依赖只能在桌面使用的浏览器扩展。 博客现在怎样工作 无常笔记使用 Hugo 和 PaperMod。普通文章的权威来源是 Org,经 Emacs 的 ox-hugo 导出 Markdown,再由 Hugo 构建静态页面。 content-org/:Org 原稿与图片 ↓ Emacs / ox-hugo content/:生成的 Markdown ↓ Hugo / PaperMod 静态 HTML ↓ 服务器合成发布与阅读布局增强 Caddy 提供 HTTPS 页面 但线上内容并不完全等于一次本地 Hugo 构建。ABAP Cheat Sheets 由服务器定时生成,日报和部分专栏采用合并发布。因此新功能必须覆盖最终发布的文章,而不能只考虑本地生成的普通博文。 当前相关的维护入口如下,路径均相对于博客仓库: 路径 职责 hugo.yaml Hugo、PaperMod、导航与输出配置 content-org/posts/ 按年存放的 Org 原稿 scripts/blog.ps1 导出、检查、构建与发布入口 deploy/reader.py 在静态页面上统一增加阅读布局 deploy/reader.css 阅读布局样式 deploy/managed-publish.py 合并独立内容、取得发布锁并原子切换版本 现有阅读布局已经包含目录、同专栏侧栏和上下篇导航。搜索使用 index.json 与 Fuse.js;这个索引可以作为文章清单的基础,但还需要筛掉目录页,并核对服务器生成内容是否完整收录。 ...