随机推荐

本站新增「拾记」:给网络碎片和偶尔的想法一个归处

最近给本站增加了一个新的小功能:拾记

平时上网,经常会遇到一些值得留下来的东西。

可能是一段文字、一个网页、一条命令,也可能只是突然冒出来的一个想法。

这些内容通常都很短,不值得专门写成一篇文章,但如果当时不记下来,过几天往往就忘了。

以前我会把它们放在浏览器收藏夹、备忘录、微信文件传输助手,或者干脆先丢进某篇文章的草稿里。时间长了以后,这些零散的信息散落在不同地方,真正需要的时候反而不好找。

所以,我想在自己的 WordPress 网站里专门留一个更轻、更随意的位置。

于是有了本站的:

「拾记」

我给它定下的一句话是:

拾取网络碎片,记录偶尔的想法。

它不是传统博客,也不是一个完整的笔记系统,更像是介于微博、备忘录和个人知识碎片之间的一块地方。


为什么做「拾记」

WordPress 很适合写完整文章。

标题、正文、分类、标签、特色图片,一篇文章从头到尾有比较完整的结构。

但生活中更多时候,我想记录的东西可能只有几句话。

比如:

  • 今天看到一个不错的 WordPress 优化方法
  • 一条以后可能会用到的 Docker 命令
  • 一篇值得以后重新看的文章
  • 对某件事情突然产生的一点想法
  • 一个临时需要记住的网址
  • 某个系统配置过程中遇到的小问题
  • 一段以后写文章时可能会用到的材料

如果这些东西都单独写成博客文章,显得太重。

如果什么都不记,又很容易消失。

所以我想给它们找一个比“正式文章”更轻的地方。

本站的「拾记」,基本就是从这个想法开始的。


不需要标题,想到什么就记什么

做拾记时,我首先去掉了传统 WordPress 文章最明显的一个东西:

标题。

拾记本身就是碎片记录,不需要每写一句话都先想一个标题。

后台新增拾记时,直接写正文就可以。

前台快速录入也是一样。

例如想到一句:

今天重新整理了一下 WordPress 的缓存设置,发现有些以前习惯性的配置已经没有必要了。

直接输入,点发布。

完成。

整个过程尽量保持轻量。

这也是我比较喜欢 Memos 这类工具的地方:

不要让“记录”本身变成一件很重的事情。


不想每次都进 WordPress 后台

如果每次记一句话都需要:

登录 WordPress 后台
→ 拾记
→ 新增拾记
→ 编辑
→ 发布

那实际上还是有点麻烦。

所以后来我给本站拾记单独做了一套独立口令

访问拾记页面后,可以直接在页面中输入拾记口令。

验证成功以后,就可以在前台直接进行:

  • 新增拾记
  • 编辑拾记
  • 删除拾记
  • 置顶
  • 添加标签
  • 设置公开或私密
  • 复制永久链接

还可以选择:

记住 30 天。

这样自己的手机、电脑通常只需要第一次输入口令,以后打开拾记页面,就可以直接记录。

更重要的是:

这个口令不会把自己登录成 WordPress 管理员

它不能进入 WordPress 后台,也没有插件、用户、主题等管理权限。

它只负责本站「拾记」这一套功能。

对于日常随手记录来说,这种方式比长期保持 WordPress 管理后台登录状态方便得多。


公开和私密

并不是所有拾记都适合公开。

有些可能只是自己的工作记录、临时想法、待办事项或者私人备忘。

所以每一条拾记都可以选择:

🌐 公开

或者:

🔒 私密

快速录入时,当前状态会直接显示出来。

点击一下:

🌐 公开 → 🔒 私密

再点一下:

🔒 私密 → 🌐 公开

比传统复选框更直观。

对于公开拾记,访客可以正常阅读。

对于私密拾记,未解锁时只能看到:

🔒 此条为私密拾记,仅自己可见

正文不会显示。


私密内容不是简单“隐藏”

做私密功能的时候,我比较在意一个问题:

不能只是用 CSS 把内容隐藏起来。

如果正文已经存在网页源代码里,只不过前端设置成:

display:none

那实际上还是可以被找到的。

所以本站拾记现在采用的方式是:

私密正文在未解锁时根本不会输出到公开页面 HTML 中。

访客看到的只有一条私密提示。

只有独立拾记口令验证通过以后,浏览器才会通过 AJAX 单独向服务器请求私密内容。

整个流程大致是:

拾记口令

验证通过

获得签名认证 Cookie

AJAX 请求私密拾记

服务器再次验证

返回正文

这样比单纯在前端隐藏内容要可靠得多。


私密标签也不会提前暴露

除了正文以外,标签本身有时候也可能透露信息。

比如一条私密拾记的标签是:

#工作调整

#家庭

#财务

即使正文看不到,标签本身也可能泄露一些不想公开的信息。

所以现在的处理方式是:

如果某个标签只被私密拾记使用,那么在未解锁状态下,右侧标签栏也不会显示它。

只有输入拾记口令解锁以后:

  • 私密正文才加载
  • 私密拾记对应的标签才显示
  • 私密标签才加入右侧筛选区域

如果某个标签同时被公开拾记使用,例如:

#WordPress

那么它在公开状态下仍然可以正常显示,因为公开内容本身已经使用了这个标签。


关闭 WordPress 的其他公开入口

因为拾记本质上还是建立在 WordPress 之上,所以除了页面本身,还要注意 WordPress 自带的一些数据访问入口。

目前我已经把拾记相关的公开入口进一步收紧。

拾记不会进入:

  • WordPress 默认站内搜索
  • 普通文章归档
  • 默认单篇文章查询
  • WordPress REST API
  • REST 标签接口
  • WordPress Core Sitemap
  • 普通 Rewrite 地址

本站拾记真正需要的内容读取、发布、修改等操作,都通过自己控制的前台逻辑和 AJAX 完成。

这样可以尽量避免私密内容通过其他 WordPress 接口意外暴露。

当然,这里的“私密”属于访问控制

正文仍然保存在自己的 WordPress 数据库里,并不是数据库字段层面的 AES 二次加密。

也就是说:

普通访客无法读取;

未解锁页面无法获得正文;

搜索引擎无法正常抓取;

REST API 也无法读取;

但如果本身已经拥有服务器、数据库或者 WordPress 管理权限,当然仍然可以接触这些数据。

对于个人网站来说,我觉得目前这种安全性和使用方便程度之间比较合适。


标签:给碎片增加一点秩序

碎片信息积累多了以后,最大的问题就是:

越来越乱。

所以本站拾记支持多个标签。

比如一条记录可以同时属于:

#WordPress

#Docker

#建站

快速录入时可以使用中文或英文逗号分隔:

WordPress, Docker, 建站

一条拾记可以使用多个标签。

实际使用中,我更倾向于每条控制在 1~3 个左右。

太多标签反而容易失去分类意义。


标签支持自动提示

如果标签越来越多,很容易出现:

WordPress

wordpress

WordPress

这种实际上意思一样,却被创建成不同标签的情况。

所以快速录入增加了标签自动提示

例如输入:

Wor

系统会自动显示已有标签:

#WordPress

#WordPress建站

可以直接点击选择。

也支持键盘:

↑ / ↓ + Enter

这样可以尽量复用已有标签,而不是不断创建近似的新标签。


三列标签布局

右侧标签区域采用固定三列。

类似:

全部

#WordPress #Docker #网络

#建站 #生活 #收藏

“全部”单独放在左边,占一个标签宽度。

其他标签严格三列等宽。

如果标签名字太长,会自动显示省略号,但实际标签内容并没有被截断。

鼠标悬停时仍然可以看到完整标签名。

这样即使以后标签越来越多,页面也还能保持比较整齐。


时间流

拾记主要还是按照时间阅读。

页面主体就是一个简单的时间流:

9月3日

12:20
……

11:45
……

9月2日

18:35
……

没有复杂的层级。

没有文章目录。

也不需要给每一条内容单独起标题。

对这种碎片记录来说,我觉得时间本身就是最自然的组织方式。


日历

右侧还有一个简单的日历。

普通日期没有背景。

有拾记的日期,会使用淡蓝色的小圆形标记。

今天则使用实心蓝色。

如果点击一个有记录的日期,页面会自动跳到那一天的拾记。

对于这种长期积累的小记录,我觉得日历比传统 WordPress 的“月份归档”更加直观。


搜索

拾记越来越多以后,搜索是必不可少的。

右侧提供实时搜索。

输入关键词以后,页面会立即筛选对应内容。

不需要重新提交搜索页面。

公开状态下:

只能搜索公开拾记。

独立口令解锁后,私密正文被安全加载进当前页面,这时候自己的搜索也可以搜索私密内容。

也就是说:

普通访客的搜索不会搜索到私密正文。


置顶

有些内容虽然只是拾记,但可能经常要用。

例如:

  • 常用服务器命令
  • 某个后台入口
  • 最近重点研究的内容
  • 当前阶段的重要事项
  • 经常需要查看的网址

所以本站拾记增加了:

置顶 / 取消置顶

置顶以后,这些内容会优先显示在页面前面。

不需要为了几句话再专门写一篇文章。


每条拾记都可以编辑

碎片记录有一个特点:

经常是在当时快速写下来。

所以很容易出现:

刚发完发现有错字;

过一会儿想补充一句;

标签选错;

原来公开的内容想改为私密。

现在独立口令解锁以后,每一条拾记右上角都有一个:

点击以后可以:

  • 置顶 / 取消置顶
  • 编辑
  • 复制永久链接
  • 删除

编辑窗口可以同时修改:

  • 正文
  • 标签
  • 公开 / 私密状态

使用起来已经比较接近一个独立的小型 Memos。


删除先进入回收站

删除功能我没有设计成直接永久删除数据库内容。

点击删除以后,拾记会先进入:

WordPress → 拾记 → 回收站

这样如果误删,仍然可以恢复。

对于个人长期记录的数据,我觉得这种方式更稳妥。


每条拾记都有永久链接

虽然拾记大部分只是碎片内容,但有时候某一条本身也值得单独分享。

现在每条拾记都有自己的永久链接,例如:

点击一条拾记的时间,也可以进入对应永久链接。

右上角菜单中还可以:

复制永久链接

以后要把某一条公开拾记发给别人,不需要让对方打开整个拾记页面再找。

如果这个永久链接对应的是私密拾记,那么即使别人知道链接,也只能看到:

此条为私密拾记,仅自己可见

仍然需要拾记口令才能看到真正内容。


内容多以后使用「加载更多」

最初拾记只有十几条的时候,一次全部加载并没有什么问题。

但如果以后积累到:

几百条、

上千条,

每次打开页面都把所有内容加载出来就没有必要了。

所以现在改成:

首屏加载 30 条。

页面底部提供:

加载更多

每点击一次,再加载下一批。

这样随着拾记越来越多,页面也不会越来越重。

搜索、标签筛选或者日历定位到比较旧的内容时,也会继续按需要补载数据,避免出现:

“明明以前写过,但因为还没加载出来所以搜索不到”

这种情况。


草稿自动保存

快速记录还有一个比较实际的问题:

写到一半不小心刷新怎么办?

所以录入框增加了临时草稿。

正文、标签以及公开 / 私密状态都会自动保存。

如果误刷新页面,重新打开后还能继续写。

正式发布成功以后,再自动清除草稿。

目前草稿使用浏览器当前会话保存。

这样既可以避免误刷新造成内容丢失,又不会让尚未发布的内容长期残留在浏览器里。


手机端是重点

实际上,本站「拾记」一个很重要的使用场景就是手机。

电脑前如果有足够时间,完全可以直接写博客文章。

但很多零碎内容,往往是在手机上看到的。

所以移动端做了不少单独调整。


手机右下角快速录入

拾记解锁以后,手机页面右下角会出现一个:

不需要回到页面顶部。

点一下就可以打开快速录入窗口。

可以直接:

  • 写正文
  • 选标签
  • 切换公开 / 私密
  • 发布

对于随手记录来说,比传统 WordPress 后台方便很多。


自动避开本站手机底部菜单

本站手机页面本身还有固定底部导航。

如果简单把快速发布按钮固定在屏幕底部,很容易和底部菜单重叠。

所以现在的处理不是写死:

bottom: 60px

而是让拾记页面自动检测本站手机底部菜单的实际位置和高度。

然后:

  • 右下角 自动移动到底部菜单上方
  • 快速录入窗口自动避开底栏
  • 编辑窗口自动避开底栏
  • “发布”按钮不会被菜单盖住
  • “保存”按钮不会被菜单盖住

同时也处理了 iPhone 的底部安全区域。

即使以后底部导航高度发生变化,拾记页面也能跟着调整。


手机编辑弹窗自适应

编辑拾记时,手机页面不再简单使用:

width:100%

把弹窗顶满整个屏幕。

现在采用的是自适应宽度。

普通手机上约占屏幕宽度的 92%,左右保留一点空间,看起来更像一个独立的编辑卡片。

同时限制最大宽度,大屏手机也不会无限拉宽。

正文过长时内部滚动,底部“取消 / 保存”保持可见。


导出

虽然本站拾记的数据本身已经包含在 WordPress 数据库备份里,但我还是希望:

这些记录不要完全被某一个系统绑定。

所以拾记后台增加了单独导出。

目前支持:

JSON 导出

包含:

  • ID
  • 正文
  • 发布时间
  • 修改时间
  • 标签
  • 公开 / 私密
  • 置顶状态
  • WordPress 状态
  • 永久链接

JSON 更适合:

备份、

程序处理、

以后迁移到其他系统。

Markdown 导出

Markdown 更适合长期阅读和个人保存。

即使以后不再使用 WordPress,也可以直接打开这些文字。


数据仍然存在 WordPress 数据库

本站拾记没有重新建立另一套数据库。

依然使用 WordPress 原生的数据结构。

大致包括:

wp_posts

保存:

  • 正文
  • 发布时间
  • 修改时间
  • 作者
  • 状态

wp_postmeta

保存:

  • 私密状态
  • 置顶状态
  • 其他扩展数据

wp_terms

wp_term_taxonomy

保存标签。

wp_term_relationships

保存拾记和标签之间的对应关系。

独立拾记口令本身保存的是:

密码哈希

而不是明文密码。

因此本站现有的 WordPress 数据库备份,也会自然包含拾记数据。

不用再单独维护另一套数据库备份方案。


为什么没有直接安装一个 Memos

其实 Memos 本身已经是非常成熟的工具。

如果单纯只是想找一个碎片记录工具,直接部署 Memos 当然更加简单。

但我最终还是想把这个功能放进本站 WordPress。

原因也很简单:

我希望这些东西最终还是属于自己的网站。

文章在这里。

以前整理的教程在这里。

自己的资料、经验和记录也在这里。

那这些还没形成完整文章的碎片,似乎也可以留在这里。

它们和正式文章并不是完全独立的。

很多正式文章,最开始可能就只是一个:

想法、

链接、

命令、

配置记录、

一段阅读笔记。

以后某一天重新看到,可能才会慢慢整理成一篇完整文章。

所以我更愿意把拾记理解成:

本站正式文章之前的一块草地。

有些内容最后会长成文章。

有些不会。

都没关系。


不准备把它做得越来越复杂

到目前为止,本站拾记已经有:

  • 无标题快速记录
  • 前台快速发布
  • 独立拾记口令
  • 记住 30 天
  • 公开 / 私密
  • 私密内容 AJAX 加载
  • 私密标签保护
  • 标签
  • 标签自动提示
  • 标签筛选
  • 搜索
  • 日历
  • 时间流
  • 编辑
  • 删除
  • 回收站
  • 置顶
  • 草稿自动保存
  • 永久链接
  • 加载更多
  • 手机快速录入
  • 手机底栏自动避让
  • JSON 导出
  • Markdown 导出

对于一个个人网站里的碎片记录功能来说,已经基本够用了。

后面可能还会继续做一些小优化。

但我暂时不准备加入:

点赞、

评论、

关注、

社交时间线、

复杂互动。

因为本站「拾记」的定位一直不是做另一个微博,也不是准备重新开发一个完整的 Memos。

它只是本站的一部分。


写完整的,放博客;没长成文章的,放拾记

对本站来说,我希望以后慢慢形成一种比较简单的内容分工。

完整的教程、经验总结、长期值得整理的内容:

写成博客文章。

只是几句话、一个链接、一点临时想法、一条以后可能有用的信息:

放进拾记。

有些拾记以后可能会整理成正式文章。

有些可能永远只是几句话。

但至少,它们不会因为当时觉得:

“这个不值得专门写一篇文章”

最后彻底消失。

这也是我给本站增加「拾记」最初的想法:

拾取网络碎片,记录偶尔的想法。

给那些还没长成文章的内容,

留一个属于本站、也属于自己的归处。