图床

趁着服务器搬家,打算把死掉很多年的摄影网站,重新恢复起来。把如今流行的自建图库程序看了一圈:piwigo、lychee……仍然没有哪个很靠谱。

其实我在浏览这些程序之前,并没有太多具体的需求,只是期待,快 10 年没看这类东西了,会不会有什么让我惊艳的产品。——并没有。而且,在体验每个程序时,都迅速地发现一些,让我觉得很不爽的点。于是,所谓自己的需求,就是在这个不断吐槽的过程中形成的。

除了最基本的

  • 便捷的上传
  • 并不是难看到很离谱的展示界面

之外,

如果,我要的是一个图床,那么我需要——

照片的 url 和我本地储存的目录结构和文件名是一致的,类似于

https://..../blog/20230909_1.jpg
https://..../blog/20230910_cat.jpg

而不是

https://..../21/27/4c1b46114f8.jpg

这样的东西。前者的文件名,在编辑文章时便于管理。而且,以后迁移图床时,可以统一替换图片 url 的前缀,实现无缝迁移。

如果,我要的是一个摄影作品的展示网站,那么我需要——

!!!不要在网页的任何地方,显示多余的 exif 信息!!!

感觉这十年来,所有的图库程序,都把心思花在,如何去识别各种图片格式的内嵌 exif,然后把它们各种花式归档、搜索、展示……展示在网页边角、在动态的弹出菜单、甚至悬浮在照片上面。——我不需要啊!谁要在摄影作品上,标明照片的 exif 是哪天拍的,甚至是哪天上传的啊!!我连标题都不想展示啊!

甚至,各路图库程序比拼的重点,已经变成了如何调用外部地图软件,然后把照片根据 GPS 信息显示在地图上。(翻白眼

如果,我要的是一个管理图片的工具,能够便捷地挑出一些照片来展示。那么我需要——

在一个相册里,可以便捷地拖动更改,照片之间的顺序。而不是靠手动修改文件名这种粗糙的排序方式。


没有。能够满足这些需求的哪怕其中之一的,都没有。有一些静态网站生成程序,能够把已经彻底整理好的照片,生成看着还行的展示网站。但与其一个个试过来,再试着根据自己需求去魔改各种瑕疵;我觉得我还是在 wordpress 上慢慢拼吧……

于是又变成了

打算做点啥 → 考察相关的工具 → 做不成,开始吐槽各种工具……


以及,在这些干扰下,想趁此机会整理从前照片的希望,大概又落空了……不仅仅是在一些照片里的人,我不想去回顾。也包括,在翻看以前照片时,仍然能够识别出的,自己当年用摄影的视角,去凝视世界的方式,以及对这种方式本身的思考和改变。——我现在是否适合,把这种方式,重新调用起来?

苟日新

突然被人跑来问,是怎么做到写博客坚持这么久的,而且可以持续输出?

(荣幸地,拿起话筒:)啊,我不觉得我这个样子,叫做「持续输出」啦。早就连每月一更都不能保证了,而且那些技术相关的帖子,在我心里都不能算是「更新博客」的,用这些凑数也为我自己所不齿……

但我看到这个问题时,首先想到的,一个很重要的因素:大概是因为,这个站就一直在这儿吧~ 我的技术能力,不需要花什么额外的精力,就能让这个 blog 一直存活下去。于是,想写东西的时候,这里始终有个地方,可以让我写。

——也有很多时期,是完全写不下去的,长时期没法去面对、去反刍自己的生活;然而也没必要因此而关站,就让 blog 存活在那里,终归是个表述的出口。大概是因为,我也是希望,自己能够从那些「无法整理自己」的状态中,渐渐走出来,回复到可以写东西的状态吧。所以站点的持续存在,满重要的,因为确实能感觉到,想写点什么的时候,如果没有这么个站,又或者需要自己重新架一个,可能也就不写了……


这种「随时可以在站点写东西」的状态,也影响着对 blog 平台的选择(怎么又拐到技术贴去了?好吧,之前也一直想吐槽这方面,就顺带提一下)。这些年一直有 〖wordpress vs 各种静态博客〗哪个更好的争论。双方确实各有利弊。总体来说,静态博客最大的优点就是……省钱,可以薅 github、vercel 之类托管网站的羊毛。但另一方面,静态博客每次发布、或者修改一篇文章的过程,其实满折腾的。通常情况下,它需要

  • 一台固定的电脑,安装静态博客编译程序,并且从这台电脑发布到 github 的专门权限。而不是随便打开一台电脑或手机,从浏览器就能编辑发文;
  • 每次发文时的一系列专门操作。

我不乏看到有人,好久没有更新,突然想写一篇文章时,忘了怎么操作,翻出攻略来重温一遍;甚至忘了连接 github 的 ssh-key……可能别人觉得这样的折腾无所谓,或者自我管理优秀的话,不会出现这种情况。但我个人觉得,这是会在主观上,影响发文章的状态的。所以,随便在任何地方任何电脑上都能直观地发文,感觉还是蛮重要的。

好像也是可以通过一系列操作,实现用浏览器某个网站上编辑文章,然后自动编译发布到托管网站的。我没有仔细去关注。但是,如果把 blog 的生命周期,放到 5~10 年这个尺度上,那么这些网站之间的复杂依赖关系,很大程度上是不靠谱的。譬如我已经看到好几个静态 blog 的外挂评论系统,不知为什么不工作了……总之,相比之下,我可能更宁愿去使用那些免费带广告的 blog 平台。

我对写 blog 的新人的推荐,一直是——

  • 如果有技术能力、也有服务器的话,自建 wordpress;
  • 或者找人蹭一个。如果我们比较熟,你可以去买个域名,把 blog 挂在我的服务器上。这并不是很大的负担。(ps,个人 wordpress 小站,是可以不必安装开销很大的 mysql 数据库的);
  • 如果上面两条都不行,那么,我优先推荐去注册现成的 wordpress.com 或者 blogspot.com,目前看起来,长期靠谱的只有这两家了。虽然免费版界面不好看、还有广告,但长期写着应该没问题的;
  • 当然,我不会给乐于尝试静态博客的人泼冷水。但我会根据你的技术能力和气质,暗戳戳地担心:
    • 你能坚持写多久;
    • 你写出来的,会不会很多都是关于你怎么建站的经历和心得……

转一张,对于熟悉这十几年来 blog 平台变迁的人,应该会很搞笑:用不同工具写 blog 的人,(写 blog 文章)vs(写关于怎么配置 blog 的文章)的对比。右下角那些术语,都是在各个年代,需要各种不同程度的折腾的,静态 blog 方案:gatsby、org mode、jekyll、hugo、git workflow……


ps,两个月前,用这段代码方案,把我在 twitter 的所有 po 文,都导入到了自建的 mastodon 里。Twitter 那边,应该会随着 Elon Musk 的各种不靠谱折腾,渐渐放弃掉了吧。而每条推文的字数限制,从 twitter 的 140 字,变成 mastodon 的 500 字后,很多几百字的感受,要不要专门写到 blog 这边来,就比从前,更让人犹豫。具体怎么处理,我还没想好。

Mastodon: 将媒体文件存放在本地(docker 版)

本攻略适用于——

  • 自建 mastodon(非大站)
  • 使用 docker compose
  • 将媒体文件直接保存在服务器上,而不使用 s3 外部存储

这个搭配虽然不多见,但其实用起来满爽的。很多人用的 s3 服务都是在薅羊毛,而 mastodon 那个变态的,把别人家的媒体文件缓存到自家的架构,流量的吞吐其实很大的(开了 relay 就更夸张),薅羊毛时很容易就超出了。反而是 vps 本身的流量上限很高。对于个人建站而言,媒体文件总量通常 <50GB,某些 vps 自带 200GB 硬盘,足够用了。

缺点是,除了数据库定期备份外,也要考虑媒体文件的异地备份问题。但其实只需要备份存储本地附件的 media_attachments,而 cache 是不需要备份的,所以工作量也不大。

两年前我把媒体文件转移到本地时,参照了 antisocial science 的设置。但因为我用 docker,官方默认的设置,docker 内外权限不一致,无法将媒体文件写到本地。于是匆匆又在本地建了个 minio s3 来中转……这样其实很浪费资源了,minio 的开销也不小。所以最近趁着搬家,又试了一下,终于把 docker + 本地存储 跑通了。


1. 在 docker-compose.yml 里,

web 和 sidekiq 容器中,已经预设了媒体文件的卷映射

volumes:
- ./public/system:/mastodon/public/system

这个不用动。——也可以改成其它的路径,但要和后面的设置一致(本文用相同的颜色标明)。

2. 修改 .env.production

S3_ENABLED=false
PAPERCLIP_ROOT_PATH=/mastodon/public/system
PAPERCLIP_ROOT_URL=/fivestone-mastodon-media

PAPERCLIP_ROOT_URL 是服务器的所有媒体文件链接的子文件夹名称,形如:

https://mastodon.fivest.one/fivestone-mastodon-media/media_attachments/.../x.jpg

默认值是 /system;但是建议改成独特一些的名字,而且建议和 S3_BUCKET 一致。以后需要在本地存储和 s3 之间转换时,可以省一点心。(所以要独特一些,防止回头在 s3 上和别人撞名)

3. 修改 nginx 的域名配置文件

参照官方的配置,把域名文件夹里的 proxy_pass ,直接改成本地的 alias

server 
{
  server_name mastodon.fivest.one;
# ......

  location /fivestone-mastodon-media/
  {
    alias /path-to...docker-compose-folder/public/system/ ;

    proxy_cache CACHE;
    proxy_cache_valid 200 48h;
    proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
    proxy_cache_lock on;

    expires 1y;
    add_header Cache-Control public;
    add_header 'Access-Control-Allow-Origin' '*';
    add_header X-Cache-Status $upstream_cache_status;
    add_header X-Content-Type-Options nosniff;
    add_header Content-Security-Policy "default-src 'none'; form-action 'none'";
  }
}

然后重启 nginx

sudo systemctl reload nginx.service

4. 通过 docker 设置媒体文件夹的权限

在 docker 内部,是以 mastodon 用户的身份,来运行程序的,所以要把媒体文件夹的所有者改成(docker 内部的)mastodon:

sudo docker-compose run --user=root --rm web chown -R mastodon /mastodon/public/system

如果是从 s3 迁移到本地,把媒体文件移入这个本地文件夹(/path-to…docker-compose-folder/public/system/)后,也要再执行一遍上面这条命令。

或者在 mastodon docker 服务已经启动的情况下,执行:

sudo docker exec -u 0 mastodon_container_web chown -R mastodon /mastodon/public/system

但在这条命令执行结束之前,mastodon 在后台写入媒体文件时,仍然可能出现文件夹权限不足,无法写入的问题。

Fediverse: 是否要自建实例?

之前和人聊到,自建 fediverse 实例时,和在其它实例做注册用户相比,一些不同的体验。然后发现,谈到的许多东西,对于没有自建经历的网友,还是很新鲜的。所以索性在这里列出来,让大家了解一下。

  • 本文是在「技术能力并不是障碍」的前提下,比较(自建实例 vs 注册现有实例)的利弊。所以,「技术门槛很高」这件事本身,并不能成为建站的缺点……
  • 本文主要讨论「建实例自己用」的情况,最多和一两个亲密好友共享;而不是「当站长,开放给大家注册」。

自建实例的优点

1. (可能)更好的稳定性

是的,自建并不是「不稳定」的代名词;恰恰相反,如果技术能力达标,个人实例因为开销相对较少,稳定性反而比很多中小型实例要高。即使我完全有能力,担任几百名用户的实例管理员;和维护一个我自己用的实例相比,我也是对后者的稳定性更有信心的。

而另一方面,现有实例的站长们,也未必都是很靠谱的。他们会因为各种技术、非技术、甚至搞笑的原因,导致站点无法访问。常见例子包括:

  • 媒体文件占满存储空间
  • 域名或服务器忘记续费
  • 站长被喝茶
  • 站长不开心了,突然关站

目前 fediverse 更换一次账号,还是满麻烦的;也并没有旧帐号数据的导入功能。所以,如果想要让自己的账号,长久地存在下去,自建可能是更好的选择。

以及,自建实例有更好的安全性。——像 fediverse 这类的程序,暴露出的系统漏洞,其中相当大一部分,都是通过「站内用户的恶意攻击」来触发的(譬如上传会包含代码的媒体文件)。如果这个站点只有你自己在使用,那么,这类漏洞,对你来说是无关紧要的。

2. 更好的隐私控制

之前写过一篇《Fediverse 站长都能看到什么?》。普通用户的很多未公开信息,对于所在实例的站长,技术上都是可见的。如果你在这些隐私方面有所顾虑,或者打算把 fediverse 账号当成私密日记来用,那么,自己建站,信息被不相干的人看到的可能性,会更少一些。

3. 管理自己的全部数据

现有的 fediverse 服务程序,为普通用户提供了数据导出功能,但导出的数据内容很有限。譬如 mastodon 导出的数据中,包括:

  • 你发出的内容
  • 你的 following / mute / block 列表
  • 你保存(bookmark)的嘟文的链接(而不是内容)

但并不包括:

  • 别人回复给你的内容,——当然,「别人的作品」你是否有权保存,就见仁见智了
  • 别人对你的点赞(favourates)
  • 你转发的消息
  • 你点赞的消息

其它程序的数据导出,也都大同小异(twitter 也差不多);有的甚至会更少,譬如支持和 fedi 账号互 fo 的,图书管理程序 bookwyrm,用户能导出的,只能用惨烈来形容(只有书的链接;没有书的标题和简介!没有你的书评!)。如果你希望未来也能够看到这些自己交互过的信息,而不是随着网站的消失而听天由命,那么,可能一开始就选择自建比较好。

另外,mastodon 的搜索功能,做的很差劲的(尤其是中文)。elastic search 的开销极其巨大,效果也不好。虽然我也很少用搜索功能,但一旦真的有什么信息,需要精确查找,直接在自己建的站里用 SQL 搜索数据库,要舒适很多。

4. 更少的站内约束

很多 fediverse 实例,是有其内部的聊天「氛围」的。一些和氛围不合拍的发言,可能会遭到实例其它用户的抵制,甚至举报。很多时候,这样的分歧可能无关对错,但多少会对发言者产生困扰和拘束。又或者,站长决定,或者通过「民主表决」的方式,让全站屏蔽了某个实例,而你可能并不希望这样。如果是自建的话,做自己的站长,这样的约束可能会少一些。——虽然偶尔还是会看到一些来自外站的举报,但跨站举报本来就没有相应的处理和交互机制,无视就可以了。以及,我并不是指,自建站就可以肆无忌惮地发色情或者仇恨言论,那可能会让你的整个站点,被其它实例屏蔽的。

5. 使用自己的个性域名作为账号

这样看起来比较酷。但也仅仅是比较酷而已。

6. 免翻墙

随着 fediverse 逐渐进入某国审查机构的视野,那些几百甚至几十人的实例,未来被封杀的可能性也会急剧增加。相对来说,用个人域名在海外服务器搭建的,个人使用的实例,短期内被封的可能性,还不是很大。自建站的用户不必翻墙,就可以直接通过自己的实例,访问到其它被封实例的内容。——当然,翻墙属于必备技能,所以这也算不上是多大的优点。


自建实例的缺点

1. 没有了实例内部的聊天氛围

相当大比例的用户,被 fediverse 吸引的主要原因,是在实例内部的聊天氛围。他们精心挑选舒适的实例,在有着相同喜好的人群中交流,甚至把本地时间轴当作了聊天室。对他们而言,在一个人的实例里唱独角戏,大概是不能接受的吧。

2. 别人看不见你 / 你看不见别人

现有 fediverse 体系,最不方便的一点是:如果账号 a 和 b 是在不同的实例 A 和 B,那么,只有当 B 实例里有人 follow a 之后,a 发的内容,才会出现在实例 B,从而有更多的机会,被 B 里面的其它用户看到。

这样的状况,对于实例之间的互相探索,构成了很大障碍。也使得这种去中心化模式的用户关系网,展现出了与 twitter 不同的结构(我之前写过这方面的介绍)。——其实这样的障碍,对于非自建的用户,同样存在;只是对于个人实例,会更严重一些。

可以通过加入 relay 来改善这种状况;但这样需要占用更多服务器性能,以及很大一笔额外的媒体文件流量,需要谨慎使用。

另外,你使用 fediverse 一段时间后,渐渐地在不同的实例里都有 followers,你的文章也会渐渐被镜像到这些实例里,「别人看不见你」的情况会得以改善。但「你看不见别人」的情况会始终存在。尤其是对方账号不公开,同时它所在的实例,不允许从浏览器直接访问个人页面,那么,你几乎没有途径,可以发现对方的文字。

3. 成本:时间、金钱、服务器开销

即使不考虑技术门槛,和架设、维护站点所花费的时间成本,单纯只是花在域名和服务器上的费用,每年大概在人民币 ¥600 元左右。当然,在这样一台服务器上,除了自建 fediverse 实例外,同时还能做很多其它事情。

4. 额外的身份泄露

在其它实例注册时,虽然你的所有文章和信息,对站长都是技术可见的;但除此之外,站长(以及可能存在的审查人员)能够得知的,也只有你注册时的 email、和访问实例的 ip 地址。如果个人隐私保护的比较妥善,从这些信息,并不会泄露你的真实身份。

而自建服务器,是会泄露更多信息的。包括你注册域名、购买服务器时,所填写的信息(这个可以作假),和信用卡等支付方式。虽然域名可以隐藏在 cloudflare 后面,但你和其它实例交互时,你的实例的 ip 地址,其实是技术可见的。虽然普通网民可能无法继续追查下去;然而,对国家机器(不止是中国)而言,你的个人身份很难被隐藏。所以,如果你需要在 FBI 的层面上也保持匿名,自建并不是好的选择。

5. 你的高权限可能对别人造成困扰

隐私是把双刃剑。有时,做自己的站长,随之拥有的那些更高的权限,可能并不是其它用户希望你拥有的。譬如,你开设了一条投票,你所在实例的站长(也就是你自己),是有能力从数据库里看到,每个人都投了哪个选项的。这样,投票的匿名性,也就无从谈起。有时连开设投票的人也忘了这一点,如果投票的内容敏感一些,就会被怀疑,是不是在猥琐地窥私……这其实很无解。要在什么样的实例上投票,大家才会无视「站长能看到每一票」这种事呢?

6. 对 fediverse 世界造成更多负担

这不是个人选择是否自建时,需要考虑的因素。但我们至少要了解:现有 fediverse 世界的架构,随着实例数量的增加,实例之间通信的开销,会急剧上升。自建个人实例,会增大这种开销。如果 fediverse 的几百万用户,每个人都自建,是现有的结构无法承受的。这也是每个去中心化的网络体系,未来需要面对的问题。


P.S.

  1. 我不鼓励任何,对 Linux 系统管理没有足够了解的人,去自建 fediverse 实例。这件事的复杂度,已经超过了小白按照攻略 copy 命令的范围。即使按照攻略,成功把实例运行起来了,也有很大可能,在后期的系统维护、数据备份等方面,出现难以预料的状况;甚至影响自己的日常使用和表达。所以,虽然我也见过很多例外,一些技术新人把站点搭建的很好,甚至还写出了很棒的攻略;但总体来说,仍然不鼓励新人贸然尝试。
  2. 上面提到的每一项,对于不同人的权重是不同的。有的人可能很在意其中的某一点,而完全不介意另一点;甚至会认为我列出的「优点」其实是「缺点」。这些都很正常,所以每个人做的选择都会不同。当然,还是要自我分析一下,为什么每个因素在自己这里的权重是这样的?那些自己看重的,是否包含着「我技术上能做到」而导致的傲慢?而那些不看重的因素,又是否是因为长期「无法做到」,而对自己的妥协?
  3. 除了自建和注册现有实例外,还存在着其它方式。譬如 masto.host 提供代建实例服务,付费后可以使用自己域名作为账号。所以也会有一些类似于自建实例的特征吧。但具体怎么运作,譬如数据的备份格式和数据库访问权限,我就不清楚了。

Fediverse: 你的站长都能看到什么?

当你注册成为某个 fediverse 实例(mastodon pleroma misskey …)的用户时,你所在的实例,可能是几十万用户的大站,站长离你遥不可及;也可能是几十个甚至几个用户的小站,站长和你关系密切,每天一起聊天玩耍。但无论是哪种,你的站长,都能看到和你有关的哪些内容呢?我觉得这是你应该知道的。

首先,所有人都能看到的:

  • 你的个人介绍、和所有的公开文章
  • 你的文章被哪些人转发、点赞
  • 你收到的公开回复
  • 你的 following 和 followers,——在一些实例里可以设置,把你的 follow 列表对其它用户隐藏,但无论是否隐藏,你的站长终归能看到

然后,是你能看到,其它用户看不到,而且你可能也不希望别人看到的:

  • 你的所有非公开文章
  • 你的私信,——不光你的站长能看到,收信方的实例站长也能看到
  • 你的转发、点赞、书签,——和 twitter 不同,在 mastodon 里,你的点赞列表,其它人是看不到的
  • 你的注册邮箱,——再次建议,注册时不要使用公司学校邮箱、或 id 有明显个人信息的邮箱
  • 你每次访问实例的 ip 地址,——用户可以通过使用 vpn 来隐藏
  • 你 block / mute 了哪些人
  • 你给其它用户添加的个人备注
  • 你 follow 的人的文章,——即使对方设置了 follow request,文章默认对其它用户不可见,从你 follow 他的那一刻开始,所有你能够看到的他的文章,你的站长同样能看到

最后,是你作为普通用户也看不到,但你的站长能看到的:

  • 你开设的投票,参与的每一个人,都选了哪个选项
  • 哪些人 block 了你,——你只能一个个地猜测并确认,但站长能直接得到全部名单

还有哪些?欢迎大家补充~


P.S.

  1. 所有这些 fediverse 站长能看到的东西,当你用 twitter、facebook、或者新浪微博的时候,它们的管理员,当然也能看到。
  2. 当我说「站长能看到」的时候,我的意思是「站长有权限做到」。——大多数隐私内容,并没有一个管理界面,让站长简单地点击鼠标就能看见;而是需要在后台数据库里搜索,稍微有一点技术含量(不会比建站本身更难)。所以,有的站长可能根本不知道这些东西;更多的站长,我相信他们即使知道也不会去看这些东西。但他们终归有这样的权限。
  3. 我列出这些,并不是在论证,什么样的站长可以信任、什么样的站长需要警惕。——这是你自己要去判断、去抉择的事。我只是在告诉你,判断时需要知道哪些事。
  4. 一些其它的社交网络,是可以通过加密,让站长看不到这些信息的,譬如 nostr,但目前还没有广泛流行。——而且,「站长看不到」,并不意味着这个工具「更好」。整个 twitter 类型网站的结构,是建立在所有人所有文字都公开的基础上的。所有这些隐私设置,可以说,都是后来添加的功能补丁,不可能满足所有人不同的期待。所以,我只是在让你,更清楚「它能做到什么」,在此基础上,去思考怎样使用它。
  5. 列出来的这些隐私项目,其中相当一部分,是可以通过自建实例来避免的。但是一方面,自建的技术门槛比较高;另一方面,自己做自己的站长后,拥有的那些更高的权限,或许并不是其它用户愿意让你拥有的。更多这方面的讨论,可以看另一篇《Fediverse: 是否要自建实例

棉条

关于女性生理用品,我当然没有直观的体验;而只是从周围人群和网络的讨论中,获得各种印象。在我的印象里,棉条(tampon)是一种比卫生巾更加舒适、便捷、有效的方案。同时,因为相当一部分对棉条的排斥,是出于在阴道里塞入异物的顾虑,所以从鼓励女性解放的角度,棉条也隐约成为一种更 “正确” 的选择。总之,每个人都应该尝试一下。

然而,最近和某个卫生巾使用者聊天。她对棉条也有着和我同样的印象,也愿意去尝试。但是她最终不用棉条的理由是:

如果棉条没有吸够液体,本身已经被泡胀了一圈,却还没有泡软,抽出来的时候,就会摩擦的很痛。

我去问棉条使用者们,是否存在这样的问题,如何解决?大家表示,理论上这种情况是会发生的,解决方案和使用建议,包括——

  • 棉条有不同尺寸,对应不同吸水量,根据自己生理期每天的不同流量,使用不同尺寸;
  • 一直用小号棉条,多换几次,或者同时加配薄的卫生巾;
  • 只在量最多的那两天用棉条,后面少了就转薄款卫生巾或者护垫;
  • 用习惯了,就基本能根据周期,掌握什么时候停止用棉条的规律;
  • (个人)第几天多少血还是挺规律的,基本上不会这样;
  • (个人)量少的话,八小时也能泡透了;
  • 没泡透就一直塞着,久了总是会被浸湿的(有人表示一根用 24h 很正常…)

但仍然会有失误的时候,譬如经前出血时,误以为来了月经,放入棉条却什么都没有,确实很痛。这个时候建议用洁净的清水、或者水性润滑剂,泡软了再抽出来。也有人说洗完澡就能轻松拔出来了。

有的人确实会因为棉条的这种不便,改用月亮杯或者月经碟。也有人觉得忍着痛拔就是了,相对卫生巾的一屁股血,这点痛不算什么。——当然,卫生巾浸血后的触感,是否真的让人受不了,也是因人而异的。某卫生巾使用者,就把这描述为「一种温暖的感觉」。


我不想也无权去评判,上面的每一种建议或体验,是否靠谱;更没资格去推荐,应该用哪一种生理用品。但我想指出的是,大部分关于棉条的使用经验,都是建立在「需要花更多精力」的基础上的。使用者需要了解不同品牌和不同尺寸的吸收量,以及自己身体的规律,然后找到适合自己的,在不同日子搭配棉条和卫生巾的组合方案。——对于大多数人来说,在这方面投入些许精力,是无关紧要的,甚至是一件 “正确” 的、值得提倡的事。好的女性用品,会促使女性,更加深刻细致地了解自己,这难道不是很美妙的事吗?

然而,如果真的有人,并没有那么多精力。或者即使有精力,也不愿投入在这些上面,而宁愿去探索一些,她更感兴趣的东西。那么,卫生巾,在各种女性生理用品中,似乎是相对最「可以无脑使用」的选择

月经杯也有同样的问题。它需要额外的时间和精力去清洗。按照某人的说法:

我心情不好的时候,连碗都是在桌上放几天不洗的。我无法想象,自己用了月经杯也懒得洗,会是什么样子……

——这样的人,在主流社会环境中,相对于那些,有能力和意愿让自己生活更精细的人,大概是处于鄙视链下游的。虽然两者其实并无高下,大家无权也不应该在这种事情上指责对方。但终归不够精细的人,心态上更容易把自己视为弱势的一方……不多说了。我之所以指出棉条和「投入精力」之间的联系,也是担心这种「人应该精致了解自己」,会不会成为一种理所当然?从而渗入不同用品的鄙视链中,让心理弱势一方,因此感到更多压力。


ps,各种生理用品,在环境保护和资源浪费的层面上,确实存在明显的高下区分。虽然我也很身体力行地拥护环保;但我觉得,在当前大环境下,从这个角度来要求女性生理用品,暂时还没必要吧。

雾化与安瓿

先说结论:为了避免安瓿的玻璃碎屑,在雾化时被吸入肺部,个人找到的最靠谱方案,是两毛多一个,套在针筒上的过滤膜。


疫情期间,家里和一些亲友,买了制氧机,以及配送的雾化装置。于是开始关注一些雾化类药物。譬如布地奈德(Budesonide)、或者针对痰咳的乙酰半胱氨酸(Acetylcysteine),有条件的话,使用吸入的方式,效果会好一些。

下单买药……等等,为什么是玻璃安瓿??!

找了一圈,国外的同类产品,多为塑胶瓶塞;而国内四、五款吸入式的乙酰半胱氨酸,全都是玻璃安瓿的包装。大概是因为国内生产工艺的药品,在光照下容易分解,以及会和塑料发生反应,所以要用棕色玻璃瓶装?

这就有点可怕了……掰开玻璃安瓿时,玻璃碎屑会落入药液,从而有可能进入人体,造成伤害。这在如今已经是常识了。很多医疗事故也与此有关。现代的医疗设备,已经尽量避免这种玻璃安瓿包装,或者在注射和输液的设备里,添加过滤装置。

卖药的医师:

不会吸入的呢,亲。雾化吸入是水蒸汽,不小心倒进很小的玻璃渣,是不会被人体吸入肺内的。

——这就扯淡了。首先,雾化根本就不是「水蒸汽」,而是利用气体射流原理,将药液喷射成微小的雾滴。而且,有些雾化药物是不溶于水的,而是微小颗粒,和雾滴混在一起,被吸入肺部吸收。而玻璃碎屑的大小,和这些药粒接近,当然也会被一起吸到肺里……

于是只好自行寻找解决方案。国外有内嵌滤网或滤纸的针头(filter needle);国内没找到类似的产品,却发现了实验室移液时,用于过滤颗粒的滤膜。

滤膜孔径最小到 0.22µm,可以直接拧在通用的针筒上。打开玻璃安瓿后,把药液倒入针筒,再推送针筒,让药液经过滤膜注入雾化杯里。这样就能有效地过滤,药液中可能存在的各种微粒。淘宝 100 个 22 元,实测效果很好。


要注意的是,这样的过滤方式,只适用于药品已经完全溶解在水中的溶液型药剂。对于悬浮型药剂,则会把药液中悬浮的有效成分,一起过滤掉。——然而,市场上的悬浮型药剂,如布地奈德(Budesonide),也并不是用玻璃安瓿,所以,并不需要过滤的步骤。

所以,厂商在选择如何包装药品时,也是考虑了这些因素的?悬浮液会用(成本更高的?)塑料包装;而水溶液就无所谓用玻璃安瓿?感觉其中的逻辑很微妙呢。

藏文学习笔记:2 – 微软藏文输入法

如何在电脑上输入藏文呢?——其实这篇写的迟了。刚刚翻到几年前整理的笔记,顺手发上来。如今输入藏文最简便的方法,是在手机或平板电脑上,用可视化键盘。安卓和苹果系统中,多语言的输入支持,已经做的很好了。我用的 Google Gboard 中的藏文输入法,有两种键盘布局,还支持手写识别。

但终归要把键盘上的输入法布局介绍一下。网上只有键盘布局对应的藏文字母,却没有找到按照藏文字母表顺序对应的键位。我整理了一份,感觉这样更好用。


以前 Windows 没有内置的藏文输入法,需要专门安装。当时有很多个版本的输入法,键盘的布局都不相同:喜马拉雅、宗卡、莫兰、桑布扎、威利、班智达……其中喜马拉雅输入法,采用的是 2006 年制定的【中国国家标准藏文键盘布局】,渐渐地成为流传最广的藏文键盘布局之一。而如今 Windows 10 内置可以添加的藏文键盘,也只剩下喜马拉雅(Tibetan – PRC)和宗卡两种。这个过程中,多少有些文化霸权的痕迹。而我日常用的也是这一种。

在 yalasoo 网站上,对这个“标准”输入法的布局,有详细的介绍(中文英文藏文)。输入法包含 5 个虚拟键盘,日常使用只需要记住主键盘,以及用 m 键,在同一个字符内添加【上加字】和【下加字】。

这里是按照藏文字母表顺序,整理的每个字母对应的键盘按键:

在没有上加字的时候,输入顺序为:

主字 ( + m + 下加字 )( + m + 元音)

存在上加字时,输入顺序为:

上加字 + m + 主字 ( + m + 下加字 )( + m + 元音)

举例:

པོ = b o
གྱི = k my i
རྒྱུ = r mk my u
སྨོ = s mh o
གྲྭ = k mr mu

同时附上 yalasoo 网站上的标准键盘布局:

main keyboard
m keyboard
Shift keyboard
Alt+Ctrl+Shift keyboard
M keyboard

嘎代嘎代,一个民间版本的《心经》

在香港某个村口,看到墙上刻的《心经》,突然发现,最后那段咒,并不是常见的「揭谛揭谛」,而是另一段文字:

故说般若波罗蜜多咒 即说咒曰
达雅他 嗡 嘎代 嘎代 巴热嘎代 巴热桑嘎代 保地索哈

流传最广的《心经》中文版,肯定是大唐玄奘的译本

故说般若波罗蜜多咒 即说咒曰
揭谛 揭谛 波罗揭谛 波罗僧揭谛 菩提萨婆诃

历代又有十几个版本,鸠摩罗什、法月、法成、日本大藏经的重译版、清代藏文重译、以及近代敦煌遗书的梵本音译……印象中都不是村口刻的这个文本。而且村口石刻前面的部分,完全就是玄奘版一字不差。所以……我最初还以为,是广东话发音的心经咒,然而并不是这样。

Google 搜出来的结果,大多提到了「多识仁波切」,也就是村口落款的「多识」。我不能 100% 确定,但大概他就是村口新版本的始作俑者了。这个人大概现在还活着。

多识仁波切(1936 – ),本名多识 · 洛桑图丹琼排,安多华锐藏区天堂寺第六世转世活佛,西北民族大学藏语言文化学院教授,博士生导师,系享受国务院特殊津贴专家。兼任西藏大学客座教授等多种社会职务。代表作《爱心中爆发的智慧》……

村口的这个版本,明显是从藏文版音译过来的,——看那个「嗡」字就知道了。藏文版《心经》和梵文版的发音很接近,但经常加入「ཨོཾ」表示咒语的起始。

ཤེས་རབ་ཀྱི་ཕ་རོལ་ཏུ་ཕྱིན་པའི་སྔགས་སྨྲས་པ།
ཏདྱཐཱ། ཨོཾ། ག་ཏེ་ག་ཏེ་པཱ་ར་ག་ཏེ་པཱ་ར་སཾ་ག་ཏེ་བོ་སྡི་སྭཱ་ཧཱ།

这个「嘎代嘎代」,比「揭谛揭谛」,听起来确实更像藏文和梵文的原始发音。——「揭谛」的汉字发音,从唐代到现在,已经变化了很多。所以近代中文圈学佛的人,似乎有很多人,把藏文和梵文版的经文,音译成更接近的汉字,从而诵经时更加「原教旨」;也有更硬核的去学藏文,直接用藏语诵经。然而历代中文版《心经》,除了最后那段咒外,其它全是意译而非音译;所以直接读藏文版的话,前面的部分,和中文版就完全不一样了。而村口这个版本,用玄奘版旧瓶装新酒,接上藏文发音的咒文,我还是第一次见。

但这个版本的最大问题是:「达雅他」在藏文里的意思,本来就对应着中文版的「即说咒曰」。所以这个版本里「即说咒曰 达雅他 嗡 嘎代……」,是把「即说咒曰」重复了两遍(摇头~

嗯,就到这里。我不是佛学圈的人,不清楚这个版本的来龙去脉、以及多识仁波切有怎样的影响。只是我看到村口石刻后莫名其妙,也不能 google 出明确的答案。以防别人看到这个东西,也是一头雾水,所以在这里说明一下。谁有更详细的信息,欢迎留言补充。

是什么改变了婴儿性别比例?

很多人把二胎和三胎的男女比例失调,归因为「想要男孩才会继续生」。——不是这样的。从概率上,单纯选择要不要继续生,是不会影响自然性别比例的。真正导致性别比例改变的,是对女性胎儿的刻意的遗弃和伤害。


中国的新生儿性别比例失调,尤其是二胎、三胎的性别比例悬殊,已经是众所周知的了。

2010 年全国第六次人口普查的男女性别比例:
一胎 – 男 : 女 = 113 : 100
二胎 – 男 : 女 = 130 : 100
三胎 – 男 : 女 = 161 : 100
其中北京三胎性别比例居全国之首,高达 260:100。

很多人在批判重男轻女的现象时,把这种悬殊的比例数据解释为:

因为那些特别想要儿子的家庭,才会更主动地去生二胎三胎,所以自然三胎里男孩比例更高。

并不是这样的。

在概率理论中,每一次生育,都是独立的概率事件。如果只是单纯地,生不出男孩就继续生,而不对每次生育时,胎儿的性别进行干预和筛选,那么,男女比例,是不会因此而改变的。

设想这样的生育策略:每个家庭,如果生下男孩,就不再继续生了;如果生下女孩,就继续生,直到生出一个男孩。

设每次成功的生育,生下女孩的概率为 x,则生下男孩的概率为 1 – x。在最多三胎的情况下:

将所有可能的结果(蓝色框)中,对应的概率和男孩女孩的数量,加权求和,则男女的比例为:

和单次生育的男女比例,完全相同。

还可以继续计算下去。无论是限定二胎、三胎、四胎,还是不限次数地一直生;无论是整体的男女比例,还是单独计算二胎或三胎的男女比例,如果不干预生育过程本身,男女的自然比例永远不会因此而改变。

所以,统计数据中,悬殊的男女比例,绝不是仅仅因为「想要男孩就一直生」,而导致的。真正改变性别比例的,是在每次生育的过程中,通过技术,或者其它各种手段,对男女胎儿区别对待。可能是针对女性堕胎,可能是试管婴儿时只保留男胎,也可能是生下女婴后遗弃、不去照料、甚至故意杀害。统计数据背后,是比单纯地「继续生男孩」,更加深刻的罪恶。


学术上把这个现象,叫做 Missing Women,指从统计数据体现出的,因为性别比例失调而「被消失」了的新生女性。在全球超过一亿的「消失的女性」中,中国占了超过一半。