fivestone

箭术或禅心 – 2

箭术或禅心 – 12、3……


弓道这种务虚的玩法,姑且不论;大多数的射箭活动,还是以追求准确性为目标的。于是,弓,从古代到现代,一方面,使用现代材料,提高装备的强度、力度、一致性;另一方面,从设计层面上,针对上一篇所说的,影响精确性的各种因素,对弓做了很多改进。虽然每一个改进,用户都有选择用或不用的自由,但现实中,通常可以把玩家归为四类,不同类别之间,在弓的改进程度上,基本是递进关系。

  • 传统弓(traditional bow):无任何附件;无法中心出箭
  • 光弓(barebow):中心出箭;没有瞄准器,没有大多数辅助配件
  • 奥运射准(olympic target bow) :多种辅助配件
  • 复合弓(compound bow):可以省力的机械装置

比复合弓更机械化的,就是弩(crossbow)和枪了……上面这些弓,在多数国家(包括中国),都可以不需证件自由购买;然而,在绝大多数国家,甚至持枪合法的国家,弩都是非法的。

注:很多赛事,把比赛用弓乃至赛事本身,叫做「反曲弓」比赛(recurve bow);但这只是为了和 「复合弓」(compound bow) 区分。反曲只是一种让弓片更有弹力的工艺。弓片是否反曲,和精确性并没有关系。虽然现代赛场上几乎所有都是反曲弓,但兼容的非反曲的弓片(longbow)也是有卖的。用非反曲的弓去参加奥运会,只要你水平够好,完全没问题。


从传统弓(traditional bow)到现代弓

虽然很多商家对「传统弓」的定义并不相同:是否木制、是否一体化、是否安装箭台……但真正最本质的,在提高精确性方面的改进,是能不能让箭,从弓的中间,正对目标射出去?传统弓的弓身,就是一根棍子,箭被棍子挡住,并不能够完全沿着弓和弦构成的平面射出。而现代弓,在弓的中心做出一个缺口(center-shot shelf),让箭可以更直接地射向目标。

在弓身上挖个槽,还足够结实。这对材料要求很高的。低档的现代弓用木头或铸铁,不能承受超过 40 磅的拉力——比赛可以,古代打仗是不够的。高档弓都是数控切割合金,或者碳纤维。——不管怎样,这个弓身挖槽的设计,直到 1940-50s 才出现,是弓箭彻底退出人类实战舞台之后,才有的事情。

现代弓在挖出来的弓窗上,又设计了各种:

  • 箭台(arrow rest)
  • 箭侧垫(pressure button)

让箭更稳定、更精确地,指向中心目标,同时减少在射出时,箭身和箭羽蹭到弓身,造成的干扰。改进到了这一步,就可以叫做光弓(barebow)了。

从光弓(barebow)到奥运会用的弓

我们在奥运赛场上,常见的弓,在光弓(barebow)的基础上,主要多了这些附件:

  • 瞄准器(sight),为目标设置一个两点一线的参照物
  • 稳定杆(stabilizer),延长力臂,从而减缓手臂的抖动
  • 信号片(clicker),提示箭已被拉到某个位置,从而保证每次拉力相同

奥运会用的这种,加了一堆配件的弓,到底怎么称呼?其实并没有一个准确的名字,大家叫的很混乱。有的叫竞技弓(competitive)或者射准弓(target),但其实光弓(barebow)也是为了竞技和射准。有的就叫做奥运弓,但其实残奥会那边,是有复合弓比赛项目的。更多时候叫做奥运反曲(Olympic recurve),同时把光弓也叫做 barebow recurve,然而之前说了,不用反曲弓参赛其实也可以……

复合弓(compound bow)

前面说的,无论传统弓(traditional)、反曲弓(recurve)、还是非反曲弓(longbow),拉弓的幅度越大,用的力量也越大。而复合弓 (compound bow) ,通过偏心滑轮的杠杆作用,把弓拉满后,只需要很少的力量,就能维持拉弓的状态。——这个特性和射箭的精确度,其实关系不大,只是因为用力少了,手抖也小了。然而,因为复合弓不再是纯「人力」,而是借助了机械结构来蓄力,于是索性在机械方面做到极致。大多数复合弓,和奥运反曲弓一样,安装了所有有助于提高精确性的配件;而且在很多方面,比反曲弓更加机械化,尽可能减少人体造成的影响。

  • 拉弓幅度:不再使用响片(clicker)提示,而是干脆预设某个距离,拉到后就不能再继续拉动,于是每次放箭的力量精确一致。
  • 瞄准:在弦上增加了窥孔(peep),从两点一线瞄准,变成三点一线。甚至使用有放大倍率的瞄准镜(scope)。
  • 撒放:手指不再碰弓弦,而是用撒放器(release)勾住弓弦,扣动扳机放箭。
  • 出现了跌落式箭台(drop-away arrow rest)的设计,放箭一瞬间箭完全悬空,和弓身零接触。

需要注意的是:

首先,这四种不同类别的弓之间,在射击的精确性方面,完全没有比较的余地。水平差不多的人,用不同类别的弓,面对同一块靶子,肯定是后者完爆前者。四种弓各有各的比赛,比赛时靶子的距离、大小,都不相同。

然后,这四种弓的分类,很大程度上,是由各自赛事的规则决定的。——理论上,对个人而言,每一种提升精确性的设计,你都可以选择用或不用,用到什么程度。你完全可以在不用瞄准器的同时,给光弓甚至传统弓,加上减少晃动的稳定杆,再使用复合弓的撒放器勾住弓弦。但现实中,你找不到能让你这样子去参加的比赛,也找不到和你类似的玩家互相交流。

在奥运会反曲弓比赛上,必须用手指勾弦,不能用复合弓的撒放器;也不能在弓弦上添加窥孔,从而三点一线地瞄准。光弓的比赛里,不能有瞄准器、稳定杆、信号片、以及任何帮助瞄准的标记;可以装减震球和调整平衡的配重,但不能太长,从而起到类似稳定杆的作用,于是要求比赛用的弓身能够穿过直径 12.2cm 的圆环……


那么,作为一名射箭爱好者,如何做出选择,自己要玩哪一种弓呢?

五石之瓠

对了,庄子说过:五石这么大的葫芦,别看不结实,你可以抱着他划水呀~~


惠子謂莊子曰:「魏王貽我大瓠之種,我樹之成而實五石,以盛水漿,其堅不能自舉也。剖之以為瓢,則瓠落無所容。非不呺然大也,吾為其無用而掊之。」

莊子曰:「夫子固拙於用大矣。宋人有善為不龜手之藥者,世世以洴澼絖為事。客聞之,請買其方百金。聚族而謀曰:『我世世為洴澼絖,不過數金;今一朝而鬻技百金,請與之。』客得之,以說吳王。越有難,吳王使之將。冬,與越人水戰,大敗越人,裂地而封之。能不龜手一也,或以封,或不免於洴澼絖,則所用之異也。今子有五石之瓠,何不慮以為大樽而浮乎江湖,而憂其瓠落無所容?則夫子猶有蓬之心也夫!」

— 《莊子 · 內篇 · 逍遙遊》

【譯】惠子告訴莊子說:「魏王送我一顆大葫蘆的種子,我種下去長成果實有五石這麼大。用來盛水,它的堅固程度卻不能舉起來;剖開來做瓢,那麼瓢大無處可容。不是不大,是我認為它沒有用處就打碎它。」

莊子說:「你實在不善使用大的用處啊。宋國有個人善於製造不龜裂手的藥,世世代代都以漂洗絲絮為業。有一個客人聽說,願意用百金買他的藥方。這個人聚集全族商量說:『我們家世世代代漂洗絲絮,所得不過幾金;現在一旦賣出藥方可得百金,就賣給他吧。』這個客人得到藥方後,便去遊說吳王。越國犯難,吳王派他為將領。冬天,和越國人水戰,大敗越人,吳王割地封賞他。能不龜裂手的藥方,是同一個;有人因此得到封賞,有人還是漂洗絲絮,這就是使用的方法不同。現在你有五石容量的葫蘆,為什麼不繫著當腰舟而浮游於江湖,反而憂慮它太大無處可容?可見你的心還是茅塞不通啊!」

关于哈佛的人类学性骚扰案

关于哈佛三女生 Margaret Czerwienski, Lilia Kilburn, Amulya Mandava 起诉人类学大佬 John Comaroff 性骚扰的事件,刚刚读了三女生的诉状,——给我的感觉,和之前看媒体报道时,是不一样的。奇怪的是,诉状中提到的一些 Comaroff 的行为,远比媒体偏重报道的那些,更能给我当事人是在性骚扰的印象。

媒体报道中,关于性骚扰具体行为的描述,主要集中在下面两点。对我来说,单纯这两点,并不能给我确切的性骚扰的印象。

  • 未经同意亲吻、抚摸对方。——我确实对西方亲吻礼节的程度和边界不够了解。我见过白人老头用我觉得很夸张的动作去亲小姑娘,但我也见过白人老太太用差不多的样子去亲男的……可能当事人确实会觉得不舒服,也可以说这种「礼节」本身,就是某种骚扰文化的产物。但现实层面上关于礼节或骚扰的判断,以及如何界定「未经同意」,都很模糊。

  • 在得知 Lilia Kilburn 是女同性恋后,在聊天时「以一种享受的语气」,说女同性恋去非洲田野考察,可能会被「矫正性强奸」、被谋杀。——这样的描述,对于媒体的读者们,可能确实很夸张;但在圈内人眼里,其实更像是人类学家、或者旅行爱好者,日常的吹牛打屁。虽然这种吹牛会经常不分场合,过火的让人想打,但以此来界定性骚扰,还是不够说服力的。之前有 90 多个教授(包括若干人类学大佬…)联署为 Comaroff 辩护,说这是在「合理警告对方,要去田野考察的地区的现况」,其实是有道理的。(虽然我觉得那个联署,学术界包庇的味道很严重。)

但在诉状中,还提到了 Comaroff 的其它行为。对我来说,这些比上面两条,可以更清晰地做出性骚扰的判定:

  • 2009年,Comaroff 教授在南非的留学旅行中,对 Mandava 产生兴趣,多次邀请她长途驾车时坐在他旁边,评论她的领口。Mandava 希望其他教授(David Bunn)干预。但对方回应说,这很正常,Comaroff 经常在出国留学旅行中越界。每一次旅行中,他都会对一名女学生产生迷恋……(p.30)
  • 深夜发消息问对方的性伴侣。(p.39)
  • 向女生详述他自己的性史和性取向,经常讲性笑话。(p.38)

其它更多的(譬如在办公室里和妹子说自己多年阳痿…)就不列举了。但这些相对很少在媒体报道中出现。所以,我开始困惑,是不是我自己和媒体公众之间,关注点和思路都相差过大,以至于连界定性骚扰的标准都不一样了?

朋友说,是因为 Comaroff 的律师能力很强,诱使媒体和公众,把关注点放在那些更模糊更没有说服力的事件上。这听起来有道理,但我还是有些不确定。

箭术或禅心 – 1

箭术或禅心 – 12、3……


1920s,德国哲学博士赫立格尔(Eugen Herrigel)在日本讲课期间,学习弓道,后来把他的感悟写了一本小册子《箭术与禅心》1。多年之后,这本书,作为「一位西方哲学家的禅悟」,渐渐火了起来。

Henri Cartier-Bresson 在其中亦有贡献……

在书里,作者重点描述了「禅」在撒手放箭这一瞬间的体现:并不是拉弓的人主动地把手松开,而是在进入禅意之后,让箭自己射出。

我问师父:「如果我不去放箭,箭怎么会射出去呢?」
:「是它射的。」「那一箭完全与你无关。」


在一个 现代射箭爱好者&器材党 的眼里,射箭的准确度,大概受这些因素影响:

  • 器材质量:不要松动。
  • 箭的质量(不要弯)和一致性:重量、均匀度、弹性(挠度 spine)……
  • 弓对箭的干扰:箭是否从弓的中心射出?箭羽会不会蹭到弓?
    解决方法:
    • 中心箭窗
    • 箭台(arrow rest)、箭侧垫(button)
  • 瞄准的方法:
    • 没有瞄准器时的替代参照物,或某些「直觉」瞄准法
    • 使用各种瞄准器(sight)
    • 复合弓使用窥孔(peep)更精确瞄准
  • 每次拉弓的幅度,也就是弓的拉力,是否一致?
    解决方法:
    • 更稳定的姿势
    • 弓弦和拉弦的手靠在脸的固定部位,
    • 信号片(clicker,更精确地提示箭头和弓身的相对位置)
    • 复合弓(拉到固定位置就无法再拉)
  • 手指对弦的干扰:撒放的瞬间弓弦蹭到手指
    解决方法:
    • 撒放姿势的改进
    • 使用指板(finger tab) – 似乎这只是让手指不痛,而不是降低手指触弦干扰
    • 复合弓使用撒放器(release),彻底避免手指和弦接触。
  • 人在拉弓和瞄准时的手臂晃动
    解决方法:
    • 更稳定的发力方式
    • 稳定杆(stabilizer):力臂越长,晃动越小
    • 复合弓(拉满弓时用力更少)
  • 手感 – 主要是弓的设计和调校方面
    • 弓的重心和质量分布
    • 搭箭点上下两部分的力是否均衡,几根手指之间的受力分布

在追求准确性的现代射箭运动中,同样考虑到了,放箭一瞬间手指触弦造成的干扰。很多经典射箭教材中都提到了这一点,如何避免松手时肌肉僵硬,体会在若有若无之间撒放的感觉。——在上述的诸多因素中,手指对弓弦的干扰,只占很小的一部分;而且远不是最重要的那部分。而弓道,则在基本不触及其它因素的同时,把手指撒放的因素,放大到了超级重要的位置。

btw,弓道中也有很大一部分,是关于开弓的姿势,但似乎更集中于如何更平稳、有力地把弓拉开,而并没有在动作一致(以提高准确性)上,涉及太多。

另一方面,弓道强调手指撒放,并不是为了提高准确性。——事实上,相对于其它射箭运动,弓道已经把对准确性的要求,降到了最低点。在弓道低段位的审核中,只看射箭者的姿势和气质,完全不管箭有没有射中;高段位的审核中包括了对准确度的要求,然而,并不是要求射中多少环,而是……能射到靶子。

于是,手指撒放、乃至整个弓道本身,成为了一种媒介,让人通过它来感受「禅」。在这个过程中,感受「禅」,和技术提升,甚至是互斥的。《箭术与禅心》中,作者曾通过改进技术动作,来使自己达到和禅意类似的平滑撒放。师父发现后,立刻就翻脸了……

但在对「禅」的描述中,仍然能看出结果导向的痕迹。在师父的描述中,尽管会经常说能否中靶不重要,要「无所求」;但对禅的境界的描述中,箭自己射出后,箭也会自己命中。——所以「禅」仍然是一种导致准确率的神秘技术?


D 问我:那么,体育运动中的「技近乎道」,到底是说的什么呢?

我:呃……我觉得是,肌肉动作的协调性,超过了意识的控制能力和描述能力。就像乒乓球,初学者如果一直想着「入射角等于反射角」,再考虑重力、摩擦力,如何在空间中用二维平面去冲击一维矢量……肯定打的乱七八糟。而熟悉了之后,用什么角度击球是不需要思考的,击球者也无法把他的动作解释清楚。

而如果击球者,在达到肌肉自发动作之后,在回头来品味这个动作形成的过程,在自省中,重新构建无意识动作和意识本身的连接,这也就是一种「禅」了吧?


赫立格尔的这段经历,轴心国的味道十分浓郁。查了一下,果然作者在二战开始后不久,就成为纳粹党员,并且一直试图在学术领域,用禅来阐释纳粹思想2。在书里能看出这种苗头:弓道师父让徒弟进行的,很多不明就里的强硬单调指令,我们今天看来,是很典型的规训,当时却被描述为让徒弟自行开悟禅意的必要行为……

以及,弓道在日本,直到今天,仍然是右翼的重灾区。整个弓道机构,基本是上层阶级垄断的沙龙,内部等级制度十分严厉。甚至,有学术认为,在赫立格尔的小册子之前,日本箭术和禅道之间,根本就没什么关系,一切都是轴心国商业互吹的结果……3

1. Herrigel, E., 1953. Zen in the Art of Archery. With an introduction by DT Suzuki. New York: Pantheon.
2. Scholem, G., 1961. ZEN-NAZISM. Encounter, 16(2), pp.96-96.
3. Yamada, S., 2009. Shots in the Dark: Japan, Zen, and the West (Buddhism and Modernity)..

Draw Force Curve of Some Recurve Limbs

做了一套简陋的系统,可以测量手头几副弓片的拉力曲线,再由此算出弓片的拉力升值曲线。

  • 拉力曲线(DFC,Draw Force Curve),根据每个人的实际拉距,找到对应拉距时,需要的拉力。以及拉弓过程中积蓄的能量(曲线下方的面积)。
  • 拉力升值曲线(Smoothness Graph / Weight Change / First Derivative of DFC),每个拉距时,拉到下一个英寸,所需要增加的力量。拉弓的过程中,肌肉的配合发力方式,在不断地变化。不同拉距处,力量的突然增加、减少、或者平稳,都会对发力产生影响。打猎和竞技射准,需要的弓片曲线不一样;直线发力的韩式拉弓,和曲线发力的 KSL 拉弓,需要的弓片曲线不一样。高手是要根据自己的拉距和发力方式,挑选不同弓片的。我们非土豪玩家的杂牌弓片,不能挑的那么精细,但知道自己手上弓片的发力曲线,也有助于思考和调整自己的动作。

我是用超市购物车做的测量架子……弓把拴在购物车上,利用车库两侧的墙,一侧墙上系根绳子拴住购物车,另一侧墙上系一个滑轮,手里的绳子通过滑轮,连在钩住弓弦的行李秤上。这样我就可以站在弓把旁边,一边拉动绳子,一边观察弓被拉开的距离(在箭上做了标记)。

看起来很粗糙,但由此带来的数据偏差,应该不会超过换弓把、调整 ILF 卡口、甚至换一副同款弓片,带来的数据差异。而且这类数据,重要的是看拉力的变化,对拉力本身的精度要求不高。

实际操作中,这套系统表现得很稳定。每个拉距都会测 2~3 次,取平均值,且数值波动通常不超过 0.1 磅。

这货并不是弩车……

另外,

  1. 关于同一副弓片,在不同长度的弓把上的拉力变化。网上常见的说法是:弓把每缩短一英寸,拉力增加一磅。按这个算法,弓片在 19“ 猎弓弓把上的拉力,应该比在 25” 标准竞技弓把上,多出 6 磅。但从下面的数据可以看出,同样的弓片在这两个弓把上的拉力差异,和 6 磅相差很多。这个差异的数值,似乎是和弓片本身的磅数成正比,同时和各人的拉距成正比。那个一寸一磅的说法,应该只是比赛常用的 30~40 磅弓片区间的近似值。具体情况,等测试更多弓片后,再来确认。
  2. 测量时,不小心把 68″ 弓用的弦,装在了 66” 的弓上,导致原本 8.75″ 的弦距(brace height)只有 7.25″。于是把装错弦的数据也拿来对比一下。发现弦过长的弓,虽然在初期每个拉距上的拉力更高(因为要拉开更多距离),但最终会被弦长更短的弓反超。

Risers: Hoyt Satori 19″, Gillo G1 25″

Unit: pounds (lb) / inches

All data are measured with TRUE draw length.

Cartel Fantom EDGE, 41″ short, marked as 66″ 20lbs

匠博火星片,Jumbo Mars, 43″ medium, marked as 68″ 26lbs

三利达圣迹X7,Sanlida Miracle X7, 41″ short, marked as 66″ 14lbs

Hoyt Dorado / Game Master II, 41″ short, marked as 60″ 45 lbs

曾经,以及现在,都拖了很多篇 blog 没有写。很多时候,起初只是一个想法,在脑子里萦绕,渐渐地有了大纲,连文章结构甚至一些辞句都有了。最后还是没有写出来。日子久了,也就渐渐忘了要写那篇东西时的思路和目的。

可以为拖延症找到很多理由:blog 式微了,在这里写了也没人来看;又或者有些东西写了反而怕被人看到;以及沮丧的时候,也不知道写出来,面对这个世界,能有什么作用。——但这些可能都不是多么重要的理由。本来我的 twitter 和 blog,就是在有些刻意地无视那些和其它网友交互的社交功能,而只是旁若无人地顾自说话。

但文章写出来,并不只是自己在某个时候,某种状态的展现;写作的过程,也是形成那些状态的过程。一些在脑子里萦绕的、模糊的、犹疑的,通过文字被固定下来。好像彷徨中为自己确立一个方向。

而我有些害怕这些方向。又或许在某些时刻,觉得自己最好还是不要,让某些状态清晰起来。

WordPress 使用 SQLite 数据库

之前写了一半的,如何在轻量级个人 VPS 上搭建各种服务的帖子。一时懒得去把坑填完了。但前几天突然发现自己落入了思维误区:为了配合 Mastodon 或 Pleroma,总想着如何把 WordPress 从 MySQL 迁移到 PostgreSQL。——但是,其实完全可以用 SQLite 啊!对于偶尔才更新一篇的个人 blog 用户,把数据库放在一个 SQLite 文件里,不需要另外安装数据库服务,完全是可行的。

用 Docker 观察内存开销。对于新建的 wordpress 站点,wordpress 本身(包括 php-fpm、nginx)占用内存大约是 40-100M(使用缓存插件后会减少);MySQL 数据库占用内存 200M,随着渐渐使用,有着近千篇文章和评论的 blog 站点,MySQL 占用内存会达到 500M 甚至更多。 ——数据库的这部分内存,使用 SQLite 后,完全是可以省下的。

可以通过 SQLite Integration 插件,安装基于 SQLite 的 WordPress。Wordpress 官网的插件页面,因为作者失联而停更。但隐藏的插件下载链接,一直都还有效:

https://downloads.wordpress.org/plugin/sqlite-integration.1.8.1.zip

最新版本的 WordPress 也仍然可用。Github 上也有这个插件的分支

使用非常简单,就是把 db.php 复制到 wp-content 目录里,同时确保你的系统安装了 php-sqlite3 模块。这里有篇攻略。现有的站点,可以通过 Duplicator 之类的 wordpress 备份插件,或者 wordpress 自身的导入导出功能,进行迁移,不需要进行数据库级别的转换操作。

注意事项:

1. 最重要的,数据库的文件的存放位置,这个一定要改!默认的数据库位置是在 wp-content/database/.ht.sqlite,是会被人通过浏览器从 http://website/wp-content/database/.ht.sqlite 直接下载的!虽然插件在 database 文件里添加了 .htaccess 权限控制,但对于如今大家用的 Nginx,是默认无效的。

在 wp-config.php 里添加设置:

define('DB_DIR', '/absolute/custom/path/to/directory/for/sqlite/database/file/');
define('DB_FILE', 'custom_filename_for_sqlite_database');

可以更改数据库文件的存放位置。强烈建议把数据库文件,放到无法直接用网址从外部访问的目录(记得给那个文件夹授权可写)。

2. SQLite 不适合多线程的高并发使用。如果网站会有多个用户同时在后台编辑,那么网站不适合使用 SQLlite;如果只有一个写作者自己编辑 blog,就很合适。但要避免使用那些,在一般访客浏览网站时,也会导致对数据库进行写入的插件,如:

  • WP Statistics 这样的访客统计插件,会把来访者的每一次点击,都记录到本机数据库里。建议使用 Google Analysis 之类的外置统计软件(Google 给 wordpress 做了个官方插件 Site Kit by Google),通过在页面嵌入 js ,发送访客数据到 Google 服务器,不会写入本地数据库。
  • 官方的防垃圾评论插件 Akismet Anti-Spam,其实也是先把每条评论写入本地数据库,再判断是否垃圾的。如果被机器人大量发送垃圾评论,也会造成数据库写入的压力。建议使用 WP Captcha 之类的验证码插件(可以单独使用或配合 Akismet 一起用),把大多数垃圾评论在写入数据库之前就过滤掉。

3. 使用 WP Super Cache 插件,为网站生成缓存文件,可以极大地减少对数据库的读取操作。个人用户完全可以在插件设置里,关闭默认的 Garbage Collection 功能。


网上搜到的 WordPress + SQLite 的 docker images(12),Wordpress 和 php 的版本都有些过时了,本身也有一些小问题(如数据库文件夹的权限设置),建议修改 Dockerfile 然后自行编译。回头有时间我去改个试试。

WordPress 的 ActivityPub 插件

试用一下 WordPress 的 ActivityPub 插件(官网 / Github)。

主要功能,就是在 wordpress 上,建一个 Fediverse 账号,Mastodon / Pleroma / Misskey / Honk……的用户可以 follow 这个账号。新的 blog 文章发布时,这个账号会发一条嘟文,大家可以转发这条嘟文。followers 对这条嘟文的回复,会自动同步到 blog 文章的评论区。

就像我为这个 blog 建的 fedi 账号:@[email protected]

需要指出的是,并不存在 blog.fivest.one 这样一个 fediverse 实例。陌生人搜索这个账号,看不到任何历史嘟文;这个账号不能去 follow 别人,不能对别人说话,不能回复别人对自己嘟文的回复,也不能看到多少人转发点赞了自己的嘟文。——这些功能也许以后会有,但目前,这个插件所做的,只是在新 blog 发布的那一刻,向所有 follow 这个 id 的账号,push 一条嘟文。这条嘟文,在 blog 服务器上,并没有保存;而只存在于 follow 它的那些实例上,再被人转发到更多实例。

当 blog 的文章被删除时,这个插件也会通知所有的 followers,从他们的实例上删除对应的嘟文。但是就像我说过的,这个机制并不能把那些,被转发到其它实例的嘟文,也一起删除。所以,当你在 blog 按下发布按钮的一刹那,带着你所写的全部内容(或者摘要,可设置)的嘟文,就可能会永远飘在 fediverse 世界里,无从反悔。所以,写完这篇文章后,我还不确定自己是否会继续用这个插件……

所以我只是觉得这个插件运行的机制很有趣,向大家介绍一下而已。它仅仅是通过 ActivityPub 协议,和其它实例通信,而本身并没有创建实例。这个插件在 wordpress 的数据库里,甚至没有新增一个 table,而只是把 followers 的公钥,存到了 wp-options 里(我觉得这么折腾 options 表,有点过犹不及了……)。总而言之,这是个超级轻量化,在 wordpress 基础上,完全不产生多余开销的东西。

我之前吐槽过,目前所有的 Fediverse 引擎,都是用软件工程模块,匆匆拼出来的臃肿怪兽:开销巨大,数据结构不美观,依赖的技术模块未必有长久的生命力,安全性抗冲击性都很差……其实我很期待,一个单用户版的,完全没有 local 功能,支持 ActivityPub 协议的引擎。结构的简洁程度,和资源的开销,要比现在这些要好很多。从这个插件可见一斑(虽然这个插件和完整的个人版 fedi 实例,是完全两回事……


测试了一下。好像只有 follower 的回复(公开 or 私密)才会同步到 blog 的评论区;陌生人的不可以。但目前还没有做 follow 的审核通过机制。所以理论上是可以用这个功能发垃圾评论……

以及目前还没有让用户修改个人简介的功能,图片上那些简介,都是我在插件 templates/author-json.php 里手动改代码的。

关于 fediverse 的删除机制

在当前的很多 fediverse 服务(mastodon、pleroma…)里,当 A 站的用户 a 被另一个实例(譬如:B 站)的用户关注时,他所发的嘟文,会在 B 站的服务器上储存一个副本,B 站的用户,通过访问这个副本,来阅读这条嘟文。当原本的嘟文被删除时,A 站会通知 B 站,删除相应的副本。但这个时候,这条嘟文未必像人们期待的那样,从 fediverse 上彻底消失。

假设存在如下情况:

  • A 站的 a 用户
  • B 站的 b 用户,b 在关注 a
  • C 站的 c 用户,c 在关注 b,但 C 站没有人关注 a
  • a 发了一条公开嘟文,此时 b 可以看到这条嘟文,而 c 是看不到的。
  • b 转发了 a 的这条嘟文,此时 c 可以看到这条嘟文了。C 站的所有人,在查询 a 的时候,也都可以看到 a 的这条嘟文。
  • 如果这个时候,a 再把这条嘟文删除,那么 A 站会通知 B 站这条嘟文已删,而 B 站也会把这条嘟文在 B 站的镜像删除。于是 b 就看不到这条嘟文了。

——然而,似乎并没有一个机制,去通知 C 站,这条嘟文已删?也就是说,这个时候,c 和 C 站的所有人,都仍然可以看到 a 已经删掉的这条嘟文?

如果这个时候 C 站有人再转发这条嘟文,而 B 站甚至 A 站有人关注这个人,那么,B 站和 A 站的人,就又能看到这条嘟文了?甚至连 a 自己,也能看到的?(这个有待验证 — UPDATE:不可以的,见评论区)


听起来似乎很不靠谱,但也不是不能接受。就像 twitter 还没有官方 retweet 的时代,所有的转发,都是由用户手动复制一个副本。而最初的推文被删除,完全不会影响这些副本继续存在。所以这里只是提醒大家,有这么一个机制。具体的隐私控制,还要由创作者自行把握。你曾发到网上的东西,可能永远不会真正消失。

A simple design of bowstring jig (endless loop)

We know, these jigs are expensive, huge, and not easy for ordering and shipping to many places. There are some DIY solutions online. The hard part of them is, how to make a strong slot or heavy metal fixture to adjust the length smoothly, but it’s not quite necessary. Most of bowstrings are just integer number of inches, so, why not just drill integer inch holes on timber, and fix the poles on these positions?

This is my idea that just needs timber, bolts, drill, and roughly saw cut. A row of holes with 2 inches distance on the base board, and the same 2 inches distance holes on the upper board that can fix the jig in horizonal and vertical direction.

There are two types of radiuses from the string pole to the axis on the upper board. One is 3.5 inches, for any odd number inches of string length (axis distance + 7 inches), the other is 4 inches, for any even number inches of string length (axis distance + 8 inches). If you need more precise length (e.g. 66.5 inches), just make another pair of upper board with the radius of 3.75 inches ( or just twist the string…)

The base board. The shortest hole distance is 46 inches, and the longest is 62 inches. With the upper boards, the system can make bowstring from 54 to 70 inches. Of course, you can make a longer or shorter board as you need.

The upper boards need to be 3 inches wide at least because there are 2 rows of holes. The base board has just 1 row so it could be narrower. I bought a 2.4m long 90mm * 35mm timber (I’m in a metric country…) for the whole system.

I use M8 size drill and hex bolts for all the holes. M6 should be ok as well, but maybe not easy to buy long M6 bolts.

  • Four pieces of 6 inches bolts as string poles, each one needs 2 sets of nuts and rings.
  • Two pieces of 4 inches bolts as the main axis. The length depends on the thickness of the timber. Don’t be too long, so as not to interfere the string serving. One set of nuts and rings for each bolt.
  • Two pieces of 3 inches bolts to fix the upper board on horizonal or vertical direction. The length depends on the thickness of the timber as well. No nuts or rings needed.

There should be around 1/4 inch space between the upper and the base board, thicker than a set of nut and ring, so the upper board can rotate with the nut of the string poles underneath. Use a thin board or several rings.

The Bottom of the base board is not flat as well, because of the head of the axis bolts. So put the rest of the timber under it.

Enjoy.