他花了一个小时锁日记
一条长毛象抱怨:日记导进 NeoDB 之后全公开了。能改,一直都能改——只是那个办法贵到没人会用。
有人在长毛象上说,用豆备把日记导进 NeoDB 之后全都公开了, 那一个小时都在手忙脚乱地锁日记、删日记,被迫重读了一堆很久以前写的东西。
tl用豆备的时候可以注意一下,抓到日记之类的导入NeoDB之后会全部公开....... 这一个小时我都在手忙脚乱地锁日记删日记,被迫看了一堆很久以前写的垃圾东西,好崩溃
这个坑是工具的。而且比他说的还糟一点:他装的那一版里, 连他自己在豆瓣上设成「仅自己可见」的日记也一起公开了—— 可见性的判断是 09-07 才做进解析器的。他没提这一条,因为他没法知道。
导出卡片上,对普通日记一个字都没说
事后去看那张卡片,问题不在于哪一句写错了,而在于该说的那句根本不在:
标记 2961 条
评分 1795 · 短评 2127 · 标签 717
书评影评 2 · 日记 4 · 豆列 6
状态历史 2539 条(从广播还原,豆瓣自己已经不显示了)
⚠ 1 篇日记是被豆瓣锁成「仅自己可见」的,这一份按公开导入——注意会联邦出去,撤不回来
「日记 4」只是一个数字。整份《怎么导入.md》里,「联邦」二字只出现一次, 而且挂在被豆瓣锁掉的那一篇上——也就是说,工具只对不公开的那几篇提了醒, 对本来就公开的那些什么都没说。
但豆瓣上一篇公开日记躺在角落里,跟它变成 NeoDB 时间线上的一篇文章、 再联邦同步到别的实例去,是两件事。同一个「公开」,暴露量差着一个量级。 这一层区别工具此前既没替他区分,也没在他按下导出之前说清楚。
能改,但代价大到没人会付
其实一直有 --visibility=2:所有记录一次收紧。问题是它一动全动
——为了护住 4 篇日记,得把 2961 条标记、1795 个评分、2127 条短评一起收成仅提及者可见。
一个贵到没人会付的安全动作,等于没有这个安全动作。
它在文档里、在 --help 里、在测试里,唯独不在任何人的实际选择里。
而扩展面板上连这个都没有:那条路上 visibility 是写死的 0。
碰上这件事的人大概率正是面板用户——命令行用户是自己敲了参数、读了打出来那段话才走到这一步的。
改的不是行为,是可见度
导出卡片上现在多了一组常驻的选择,就在导出按钮上面:
日记导出设置为
(•) 公开
( ) 私密(仅自己可见)
⚠ 日记导出到 NeoDB 会变成「文章」,公开的会被联邦同步到别的实例去,并且无法撤回。
在豆瓣上已经设成私密的日记将不受影响,将继续保持私密状态。
默认仍然是「公开」。 这一点值得说清楚,因为它看起来像是没有吸取教训。
这份存档存在的理由之一,是让被豆瓣拿下的东西还有一个能重新说话的地方。档案里那篇 《想看的被河蟹的电影》读作「仅自己可见」,而它不是作者藏的——豆瓣自己在页面上写着 「此日记锁定仅自己可见」。它之所以不公开,恰恰因为它曾经是公开的。 默认收起来,就是跟着豆瓣一起把它二次消音,而且是静默的。
所以改的是可见度而不是行为:这个选择从「藏在一个没人会用的命令行参数里」 搬到了「按下去之前必须看见的地方」。他至少看得见,也改得动。
实测各类日记的去向
| 日记导出设置为 | 你在豆瓣上公开的 | 被豆瓣锁掉的 | 读不出公私的 | 你设成私密的 | 影评书评 |
|---|---|---|---|---|---|
| 公开(默认) | 公开 | 公开 | 私密 | 私密 | 公开 |
| 公开 + 勾「读不出来的也公开」 | 公开 | 公开 | 公开 | 私密 | 公开 |
| 私密(仅自己可见) | 私密 | 私密 | 私密 | 私密 | 公开 |
| 私密 + 勾(此时那个勾是禁用的) | 私密 | 私密 | 私密 | 私密 | 公开 |
对着真实档案跑出来的,不是照着代码写的。三条不变量:
- 「你设成私密的」那一列,四种组合下都是私密。 三个开关都放松不了它——一个能放松它的开关,就是绕过整套非对称性的后门。
- 「读不出公私的」默认按私密走。「读不出来」不是「确认公开」。 它几乎只有一个成因:豆瓣改了日记页的结构,抽取器认不出隐私容器了。 碰上时面板会请人去 GitHub 报一声——那几页本来就在他自己的档案里, 改好抽取器重新导出就能救回来,不用重新抓豆瓣。
- 影评书评整列不受这一档影响。 豆瓣本来就没给它们私密这个设置, 它们挂在作品页上给所有人看。一起收起来,是拿一个用户没做过的决定去改他的东西。
命令行那边是三级
--visibility 所有记录的总基线(默认 0 公开)
└ --notes-visibility 日记这一档(默认 0;影评书评不在内)
└ --unknown-visibility 其中读不出公私的那几篇(默认 2 仅提及者)
每一级的 0 都是「跟上一级走」,所以每一级只收紧、不放松。
写成「强制公开」的话,--visibility=1 --notes-visibility=0
会把日记发得比别的记录还开;同理最里面那一级继承的是日记那一档而不是总基线,
否则 --notes-visibility=2 --unknown-visibility=0
会让读不出来的比读得出来的还公开——正好是反的。两个方向都用突变测试验过。
这件事本身的形状
这个项目记过一句话:一句正确的话,出现在做决定的人读不到的地方,等于没说。 这一次是它的另一面——一个正确的能力,放在做决定的人够不到的地方,等于没有。
--visibility=2 一直都在,文档里写着,--help 里印着,测试盯着。
它唯一缺的,是让人在那一刻愿意用它的代价。
另外值得记一笔的是,这件事不是任何一次代码审查、任何一条测试发现的。 它是一个陌生人在长毛象上骂了一句,而那句话里带着「一个小时」这个数字。