M posts/2026-01.gmi => posts/2026-01.gmi +450 -699
@@ 1,1047 1,798 @@
# 想法在丙午岁始迭代
-这个月里我做了很多在笔记本上的工作,所以在阅读文章上花费的时间跟精力都变少了很多。
+这个月里我做了很多在笔记本上的工作,所以在阅读文章上花费的时间跟精力都变少了很多。
+## 商业与社会
-# 商业与社会
+### 后美国互联网
-## 后美国互联网
+这是一篇非常有深度的演讲稿,内容很长,作者是著名的数字权利活动家 Cory Doctorow。它也很难懂,因结合了技术法律、地缘政治、经济学和数字主权,不过可以大致拆解为四个核心逻辑:
-这是一篇非常有深度的演讲稿,内容很长,作者是著名的数字权利活动家 Cory Doctorow。它也很难懂,因结合了技术法律、地缘政治、经济学和数字主权,不过可以大致拆解为四个核心逻辑:
+一、什么是 通用计算之战 ?
-一、什么是 _通用计算之战_ ?
+美国在 1998 年通过了 《数字千年版权法》 也就是 DMCA ,其中第 1201 条规定:绕过这一技术措施——越狱或者破解——是犯罪行为,即使你的目的是合法的。
-美国在 1998 年通过了 _《数字千年版权法》_ 也就是 _DMCA_ ,其中第 1201 条规定:绕过这一技术措施——越狱或者破解——是犯罪行为,即使你的目的是合法的。
+也就是说,如果我购买了一台设备,无论是手机还是拖拉机还是呼吸机,厂商用软件锁住了它,我即使拥有这台设备,也不能修改它的代码。
-也就是说,如果我购买了一台设备,无论是手机还是拖拉机还是呼吸机,厂商用软件锁住了它,我即使拥有这台设备,也不能修改它的代码。
+而美国利用其强大的科技地位,通过贸易协定强迫全世界其他国家也通过类似的法律。目的也很简单,保护美国科技巨头的利润:让全世界使用美国的技术,却无法掌控这些技术,必须源源不断地向美国公司付费。
-而美国利用其强大的科技地位,通过贸易协定强迫全世界其他国家也通过类似的法律。目的也很简单,保护美国科技巨头的利润:让全世界使用美国的技术,却无法掌控这些技术,必须源源不断地向美国公司付费。
+二、特朗普带来的意外契机。
-二、特朗普带来的意外契机。
+Doctorow 很反感特朗普,但他认为特朗普的胡作非为反而打破了上述的枷锁。
-Doctorow 很反感特朗普,但他认为特朗普的胡作非为反而打破了上述的枷锁。
+过去世界各国容忍美国的霸权是因为相信美国是一个相对中立的平台。假设世界上 200 个国家,每两个国家之间都要直接建立光缆或者货币兑换机制,那需要几万条线路,成本太高。最效率的方法是建立一个枢纽。二战后,美国就是这个枢纽——光缆汇聚在美国,资金通过美元结算。
-过去世界各国容忍美国的霸权是因为相信美国是一个相对中立的平台。假设世界上 200 个国家,每两个国家之间都要直接建立光缆或者货币兑换机制,那需要几万条线路,成本太高。最效率的方法是建立一个枢纽。二战后,美国就是这个枢纽——光缆汇聚在美国,资金通过美元结算。
+但是特朗普政府的单边主义、高额关税和不可预测性(这个老家伙最近一次演讲讲了近一小时的胡话,比如声称自己是独裁者),彻底摧毁了这种信任:
-但是特朗普政府的单边主义、高额关税和不可预测性(这个老家伙最近一次演讲讲了近一小时的胡话,比如声称自己是独裁者),彻底摧毁了这种信任:
+* 2006 年 Mark Klein 和 2013 年 Snowden 爆料表示美国国家安全局在利用这个中心地位监听全世界(见 棱镜计划 );
+* 2005 年美国的 秃鹫资本家 利用美国法院,扣押了阿根廷政府在美国的资产来偿还债务;
+* 微软曾因海牙国际刑事法院通缉内塔尼亚胡而切断其 Outlook 服务;
+* 约翰迪尔远程锁死俄罗斯境内的乌克兰拖拉机;
+* 拜登政府将俄罗斯踢出 SWIFT 系统 ,意味着美元不再是中立的贸易工具,而是美国外交政策的武器。
-* 2006 年 Mark Klein 和 2013 年 Snowden 爆料表示美国国家安全局在利用这个中心地位监听全世界(见 _棱镜计划_ );
-* 2005 年美国的 _秃鹫资本家_ 利用美国法院,扣押了阿根廷政府在美国的资产来偿还债务;
-* 微软曾因海牙国际刑事法院通缉内塔尼亚胡而切断其 Outlook 服务;
-* 约翰迪尔远程锁死俄罗斯境内的乌克兰拖拉机;
-* 拜登政府将俄罗斯踢出 _SWIFT 系统_ ,意味着美元不再是中立的贸易工具,而是美国外交政策的武器。
+这些案例都让各国政府突然意识到,如果继续依赖美国的云服务和黑盒硬件,特朗普政府随时可以远程变砖他们的基础设施、医疗设备甚至政府大楼。
-这些案例都让各国政府突然意识到,如果继续依赖美国的云服务和黑盒硬件,特朗普政府随时可以远程变砖他们的基础设施、医疗设备甚至政府大楼。
+讽刺的是,美国政府过去几年里一直在警告盟友们不要使用华为的电信设备,如 5G 基站,理由是如果国家的关键基础设施使用了中国的设备,中国政府可能会出于政治目的,命令华为远程切断这些设备,或者窃取数据。现在美国反而正在做当年他们指控华为 可能会做 的事情。
-讽刺的是,美国政府过去几年里一直在警告盟友们不要使用华为的电信设备,如 5G 基站,理由是如果国家的关键基础设施使用了中国的设备,中国政府可能会出于政治目的,命令华为远程切断这些设备,或者窃取数据。现在美国反而正在做当年他们指控华为 [em:可能会做] 的事情。
+既然美国已经对全世界加征关税,其他国家再遵守美国的 反规避法 就没有意义了。作者认为,与其对自己人加税反击,不如废除反规避法。
-既然美国已经对全世界加征关税,其他国家再遵守美国的 _反规避法_ 就没有意义了。作者认为,与其对自己人加税反击,不如废除反规避法。
+三、如何反击?
-三、如何反击?
+Doctorow 提出,因为特朗普的政策,一个前所未有的反美国科技霸权联盟正在形成。这个联盟由三类人组成:
-Doctorow 提出,因为特朗普的政策,一个前所未有的反美国科技霸权联盟正在形成。这个联盟由三类人组成:
+1. 数字权利活动家:他们为了自由和隐私,呼吁了 25 年,想要开源和可互操作的设备;
+2. 逐利的资本家和企业家:如果欧洲废除反规避法,芬兰的黑客就可以合法破解 iPhone,建议一个不收 30%苹果税的第三方应用商店。这能从美国巨头嘴里抢走数千亿美元的利润;
+3. 国家安全鹰派:各国政府为了数字主权,必须摆脱对美国技术的依赖。他们不能允许国家的命脉掌握在一个随时可能发疯的美国总统手里。
-* 数字权利活动家:他们为了自由和隐私,呼吁了 25 年,想要开源和可互操作的设备;
-* 逐利的资本家和企业家:如果欧洲废除反规避法,芬兰的黑客就可以合法破解 iPhone,建议一个不收 30%苹果税的第三方应用商店。这能从美国巨头嘴里抢走数千亿美元的利润;
-* 国家安全鹰派:各国政府为了数字主权,必须摆脱对美国技术的依赖。他们不能允许国家的命脉掌握在一个随时可能发疯的美国总统手里。
+四、未来的 后美国互联网 。
-四、未来的 [em:后美国互联网] 。
+基于上述逻辑,作者描述了一个即将到来的新互联网愿景:各国修改法律,允许通过逆向工程接管设备控制权;即使美国巨头不配合,其他国家也可以开发工具,将数据从美国平台无缝迁移到本地平台;软件应该是公开、透明、可审计的,而不是私有的黑盒子。
-基于上述逻辑,作者描述了一个即将到来的新互联网愿景:各国修改法律,允许通过逆向工程接管设备控制权;即使美国巨头不配合,其他国家也可以开发工具,将数据从美国平台无缝迁移到本地平台;软件应该是公开、透明、可审计的,而不是私有的黑盒子。
+该演讲稿的精彩之处还不止是这些。
-该演讲稿的精彩之处还不止是这些。
+Doctorow 解构了软件的本质以及权贵阶层为何狂热追捧 AI,他认为这背后并非技术进步,而是控制欲和傲慢。这里我就拆解成两个核心逻辑:
-Doctorow 解构了软件的本质以及权贵阶层为何狂热追捧 AI,他认为这背后并非技术进步,而是控制欲和傲慢。这里我就拆解成两个核心逻辑:
+一、软件是负债,不是资产。
-一、软件是负债,不是资产。
+在传统的商业思维中,软件被视为知识产权,是公司的核心资产。写得越多,资产越厚。但 Doctorow 认为, 软件本身是负债 。
-在传统的商业思维中,软件被视为知识产权,是公司的核心资产。写得越多,资产越厚。但 Doctorow 认为, *软件本身是负债* 。
+是的,软件跑起来后实现的自动化、数据分析、管理能力等,这些是资产,因为它们能赚钱。但是那些服务器里的代码,全都是负债。这是因为软件极其脆弱,需要不断的维护、修补漏洞。当上游、下游或者周边环境变化时,它随时都会崩溃。我们拥有的私有代码越多,我们需要背负的维护债务就越重。
-是的,软件跑起来后实现的自动化、数据分析、管理能力等,这些是资产,因为它们能赚钱。但是那些服务器里的代码,全都是负债。这是因为软件极其脆弱,需要不断的维护、修补漏洞。当上游、下游或者周边环境变化时,它随时都会崩溃。我们拥有的私有代码越多,我们需要背负的维护债务就越重。
+既然软件是负债,通过专利和反规避法把代码锁起来,实际上是独自承担所有负债。在他提倡的后美国互联网系统里,基础设施代码会变成像科学原理一样的公共品。如果全欧洲,乃至全世界都用同一套开源的、可审计的基础代码,那么全人类的开发者都在帮忙修补漏洞、分摊维护成本。这才是唯一的生存之道。
-既然软件是负债,通过专利和反规避法把代码锁起来,实际上是独自承担所有负债。在他提倡的后美国互联网系统里,基础设施代码会变成像科学原理一样的公共品。如果全欧洲,乃至全世界都用同一套开源的、可审计的基础代码,那么全人类的开发者都在帮忙修补漏洞、分摊维护成本。这才是唯一的生存之道。
+二、AI 热潮的本质是阶级斗争。
-二、AI 热潮的本质是阶级斗争。
+如果说软件是负债,那为什么现在的科技巨头还在疯狂推崇 AI 生成代码?这是因为老板们并不懂技术。他们误以为代码量等同于价值,结果是 AI 正在以超人的速度拉出那些不可读、难维护的屎山代码,也就是在以超人的速度积累负债。
-如果说软件是负债,那为什么现在的科技巨头还在疯狂推崇 AI 生成代码?这是因为老板们并不懂技术。他们误以为代码量等同于价值,结果是 AI 正在以超人的速度拉出那些不可读、难维护的屎山代码,也就是在以超人的速度积累负债。
+而 AI 对老板们的又一个诱惑,并不是它干得比人好,而是它够听话。老板们内心深处知道,如果自己不来上班,公司会照常运作下去;但如果工人不来上班,公司就会瘫痪。这让他们感到失控。AI 成了老板们心中所期望的听话但平庸的机器,他们根本不想要一个能干但会反驳的员工。
-而 AI 对老板们的又一个诱惑,并不是它干得比人好,而是它够听话。老板们内心深处知道,如果自己不来上班,公司会照常运作下去;但如果工人不来上班,公司就会瘫痪。这让他们感到失控。AI 成了老板们心中所期望的听话但平庸的机器,他们根本不想要一个能干但会反驳的员工。
+关于这一点,我认为在 AI 出现之前企业就有这样的征兆了。
-关于这一点,我认为在 AI 出现之前企业就有这样的征兆了。
+三、唯我主义。
-三、唯我主义。
+亿万富翁和独裁者们迷恋 AI,是因为他们梦想构建一个 没有人的世界 。这个世界里,只有唯一的「神」和无数唯命是从的「信徒」,即他们和 AI。没有任何人会因为专业知识、道德底线或人类情感而对他们说「不」。
-亿万富翁和独裁者们迷恋 AI,是因为他们梦想构建一个 [em:没有人的世界] 。这个世界里,只有唯一的「神」和无数唯命是从的「信徒」,即他们和 AI。没有任何人会因为专业知识、道德底线或人类情感而对他们说「不」。
+Doctorow 的另一论点是: 舒适导致依赖,危机催生主权 。
-Doctorow 的另一论点是: *舒适导致依赖,危机催生主权* 。
+历史唯物主义 认为,舒适区的惯性只能被生死的危机打破。为了证明这一点,Doctorow 回顾了俄乌战争引发的欧洲能源危机。普京切断天然气供应本意是扼住欧洲的咽喉,这在当时被视为一场灾难。然而结果出人意料,这种极端的匮乏感并没有让欧洲崩溃,反而通过休克疗法治好了欧洲在能源转型上的拖延症。短短三年,欧洲人爆发出了惊人的适应力,太阳能的普及率呈指数级增长,原本落后的能源转型计划不仅追平了进度,甚至提前了十年完成!
-_历史唯物主义_ 认为,舒适区的惯性只能被生死的危机打破。为了证明这一点,Doctorow 回顾了俄乌战争引发的欧洲能源危机。普京切断天然气供应本意是扼住欧洲的咽喉,这在当时被视为一场灾难。然而结果出人意料,这种极端的匮乏感并没有让欧洲崩溃,反而通过休克疗法治好了欧洲在能源转型上的拖延症。短短三年,欧洲人爆发出了惊人的适应力,太阳能的普及率呈指数级增长,原本落后的能源转型计划不仅追平了进度,甚至提前了十年完成!
+在舒适的旧秩序下,人们会因为各种琐碎的理由,例如「开源软件不好用」、「迁移数据太麻烦」、「美国服务更成熟」,而拒绝改变。然而,一旦出现了大问题,所有的审美洁癖和用户体验惯性瞬间变得一文不值。
-在舒适的旧秩序下,人们会因为各种琐碎的理由,例如「开源软件不好用」、「迁移数据太麻烦」、「美国服务更成熟」,而拒绝改变。然而,一旦出现了大问题,所有的审美洁癖和用户体验惯性瞬间变得一文不值。
+说来也巧,阳台光伏是一种典型、自下而上、分布式的解决方案,不需要等待国家建设巨大的核电站,每个家庭买回来挂上就能发电。这正符合 Doctorow 对后美国互联网的构想。
-说来也巧,阳台光伏是一种典型、自下而上、分布式的解决方案,不需要等待国家建设巨大的核电站,每个家庭买回来挂上就能发电。这正符合 Doctorow 对后美国互联网的构想。
+这些观点让我想起了现在的中国。在很长一段时间里, 全球化分工 是效率最高的模式:如果能买到英特尔的芯片、能用微软的系统,为什么要花十倍的钱、百倍的时间去自己造一个性能只有人家一半的产品?这就是经济学上的 比较优势 ,但也容易导致「造不如买」的路径依赖。
-这些观点让我想起了现在的中国。在很长一段时间里, _全球化分工_ 是效率最高的模式:如果能买到英特尔的芯片、能用微软的系统,为什么要花十倍的钱、百倍的时间去自己造一个性能只有人家一半的产品?这就是经济学上的 _比较优势_ ,但也容易导致「造不如买」的路径依赖。
+正如 Doctorow 所说,和平时期不会有人乐意去打不值得的仗。但当制裁降临,由于买不到现成的,「必须自己造」就成了唯一的选项。这种孤立反倒是人为地制造了一个封闭的进化环境,迫使中国企业必须在没有外部输血的情况下建立自己的循环系统。
-正如 Doctorow 所说,和平时期不会有人乐意去打不值得的仗。但当制裁降临,由于买不到现成的,「必须自己造」就成了唯一的选项。这种孤立反倒是人为地制造了一个封闭的进化环境,迫使中国企业必须在没有外部输血的情况下建立自己的循环系统。
+比尔·盖茨曾经说过,美国对华科技封锁起到了截然相反的效果,且迫使中国在芯片制造等所有领域全速发展。除了让国家学会自力更生,更为可怕的是它导致了市场的永久性丢失和技术标准的各种分裂。因为中国市场曾是美国科技巨头最大的利润来源之一。
-比尔·盖茨曾经说过,美国对华科技封锁起到了截然相反的效果,且迫使中国在芯片制造等所有领域全速发展。除了让国家学会自力更生,更为可怕的是它导致了市场的永久性丢失和技术标准的各种分裂。因为中国市场曾是美国科技巨头最大的利润来源之一。
+失去了这个市场,美国企业便失去了巨大的研发资金回流,从而削弱了它们继续领先的能力。一旦中国建立起一套完全独立且成熟的生态系统,世界就会分裂成两个宇宙:对于全球南方国家来说,如果中国的方案不仅便宜,而且没有被随时断供的政治风险,那么美国的地位确实会一低再低。
-失去了这个市场,美国企业便失去了巨大的研发资金回流,从而削弱了它们继续领先的能力。一旦中国建立起一套完全独立且成熟的生态系统,世界就会分裂成两个宇宙:对于全球南方国家来说,如果中国的方案不仅便宜,而且没有被随时断供的政治风险,那么美国的地位确实会一低再低。
+说完美国对其他国家的影响,也需要聊聊美国现在内部的问题。过去我借 麦当劳 一事提到过美国经济走向了 K 型分化 之路,即有钱人更有钱、没钱人更没钱。不得不承认的是,美国曾经作为全球最大消费市场的地位已经名存实亡。为了维持体面的消费假象,只能刷信用卡、借房贷、背住房教育医疗债务。
-说完美国对其他国家的影响,也需要聊聊美国现在内部的问题。过去我借 [麦当劳] 一事提到过美国经济走向了 _K 型分化_ 之路,即有钱人更有钱、没钱人更没钱。不得不承认的是,美国曾经作为全球最大消费市场的地位已经名存实亡。为了维持体面的消费假象,只能刷信用卡、借房贷、背住房教育医疗债务。
+较为唏嘘的是,我曾经也因为刷信用卡过多而背上债务,好在欠的钱不多,找到工作后很快便还干净了。我的建议是千万不要每个月只还最小数额,这是个陷阱,你只会越欠越多。每个月花多少还多少才是正道。
-较为唏嘘的是,我曾经也因为刷信用卡过多而背上债务,好在欠的钱不多,找到工作后很快便还干净了。我的建议是千万不要每个月只还最小数额,这是个陷阱,你只会越欠越多。每个月花多少还多少才是正道。
+毫无疑问,特朗普政府加速了这一榨取过程。特朗普本人就是那些不创造价值、仅靠垄断资源收取租金的人的一员。无论是削弱对房租操纵平台的监管、重启学生贷款偿还,还是扼杀降低药价的计划,这些政策的目的只有一个:把钱从普通人的口袋里掏出来,转移给债务催收者和垄断巨头。
-毫无疑问,特朗普政府加速了这一榨取过程。特朗普本人就是那些不创造价值、仅靠垄断资源收取租金的人的一员。无论是削弱对房租操纵平台的监管、重启学生贷款偿还,还是扼杀降低药价的计划,这些政策的目的只有一个:把钱从普通人的口袋里掏出来,转移给债务催收者和垄断巨头。
+每一美元被用来偿还利息,就意味着少一美元用于实体消费。这种政策也在制造一个没有人的世界;在这个梦想中,工薪阶层被剥夺殆尽,所有的财富都流向了股市、加密货币垃圾币和赌博网站,在金融空转中不断膨胀,却与实体经济毫无关系……
-每一美元被用来偿还利息,就意味着少一美元用于实体消费。这种政策也在制造一个没有人的世界;在这个梦想中,工薪阶层被剥夺殆尽,所有的财富都流向了股市、加密货币垃圾币和赌博网站,在金融空转中不断膨胀,却与实体经济毫无关系……
+既然废除反规避法可以打击美国科技巨头,那会不会跟着让欧洲的科技公司受损呢?Doctorow 认为会,但是只有肮脏、无耻的公司会受损。为了证明这一点,他举了四个例子:
-既然废除反规避法可以打击美国科技巨头,那会不会跟着让欧洲的科技公司受损呢?Doctorow 认为会,但是只有肮脏、无耻的公司会受损。为了证明这一点,他举了四个例子:
+1. 大众汽车在软件里写了作弊代码,检测到尾气检查时就降低排放,平时则超标排放。如果你是一个独立的工程师,想逆向分析大众汽车的软件,你就会因为反规避法而坐牢。法律不仅保护了代码,还保护了犯罪证据;
+
+2. 宝马和梅赛德斯用软件锁住硬件上已有的功能,要求每月付订阅费才能使用。反规避法禁止了第三方修车铺帮你越狱解锁这些功能;
+
+3. 美敦力提供呼吸机,但它要求用官方维修工输密码才能修好。新冠疫情期间,官方维修工过不来,医院自己的工程师虽然懂技术,但因为没有密码且破解密码违法,只能眼睁睁看着病人死去;
+
+4. Newag(波兰火车公司)更为离谱,在火车代码里写了地理围栏。如果火车 GPS 定位到在竞争对手的维修厂里,火车就自动锁住,Newag 便可以借此向客户勒索高额解锁费。
-* 大众汽车在软件里写了作弊代码,检测到尾气检查时就降低排放,平时则超标排放。如果你是一个独立的工程师,想逆向分析大众汽车的软件,你就会因为反规避法而坐牢。法律不仅保护了代码,还保护了犯罪证据;
+不过这一点过于激进,更像是为了贴合演讲风格而说的。实际上,中小微企业和独立创作者极有可能成为附带损伤。并且越狱工具也可以用于做坏事。
-* 宝马和梅赛德斯用软件锁住硬件上已有的功能,要求每月付订阅费才能使用。反规避法禁止了第三方修车铺帮你越狱解锁这些功能;
+这是一个经济学悖论:监管有时是保护弱者的,在这种情况下,去监管反而会利好强者。不过转念一想,目前巨头垄断带来的伤害远大于潜在的盗版伤害,且现在的小开发者也在被巨头们剥削,不如打破围墙,大家一起在外面跑。
+=> https://pluralistic.net/2026/01/01/39c3 原文
-* 美敦力提供呼吸机,但它要求用官方维修工输密码才能修好。新冠疫情期间,官方维修工过不来,医院自己的工程师虽然懂技术,但因为没有密码且破解密码违法,只能眼睁睁看着病人死去;
+### 现在孩子们已经很少读完整本书了,即使是在英语课上
-* Newag(波兰火车公司)更为离谱,在火车代码里写了地理围栏。如果火车 GPS 定位到在竞争对手的维修厂里,火车就自动锁住,Newag 便可以借此向客户勒索高额解锁费。
+这篇文章让我想起我在美国接受的 K-12 教育,即从幼儿园到高中毕业,只是我是在小学四年级的时候才来的美国。美国的小学到五年级就结束了,初中是从六年级上到八年级,然后高中从九年级上到十二年级。
-不过这一点过于激进,更像是为了贴合演讲风格而说的。实际上,中小微企业和独立创作者极有可能成为附带损伤。并且越狱工具也可以用于做坏事。
+初中对我来说是一个颇为重要的时期,因为我在那会儿明明可以好好学习英语,但是我选择了继续和华语使用者打交道,导致我现在的英语水平并不算好。来美国接受教育的第二年就需要通过 ESL 测试,也就是 English as Second Language 测试。我六年级那年并没有通过,因为考官认为我一直在照着原句读,到了七年级我才通过。
-这是一个经济学悖论:监管有时是保护弱者的,在这种情况下,去监管反而会利好强者。不过转念一想,目前巨头垄断带来的伤害远大于潜在的盗版伤害,且现在的小开发者也在被巨头们剥削,不如打破围墙,大家一起在外面跑。
+说回学校里的英语课,它大致可以分为两类:ELA 和 ESL。前者类似于「语文」,后者是非英语母语者学习英语的课程。两者使用的教材都是裁剪过的小说或者文章,例如我印象里比较深的《少年 Pi 的奇幻漂流》。
-source: [https://pluralistic.net/2026/01/01/39c3] [2026-01-25 Sun 01:13]
+当时我们是每过几天就跳着阅读一个章节,可能上次阅读还在说 Pi 在船上发现有老虎、斑马和鬣狗,下次阅读就变成了斑马和鬣狗全都死了,被遗漏掉的信息还是以括号的形式出现在章节的前面。
+到高中的时候这件事才开始有改善。高中的那几年我阅读了一些有趣的书籍,例如《一个印第安少年发现真我的日记》、《太阳也是一颗星星》以及同作者的开山之作《一切的一切》。或许我应该重新阅读它们,因为它们蛮有意思的。
-=> em:%E5%8F%AF%E8%83%BD%E4%BC%9A%E5%81%9A em:可能会做
-=> em:%E5%90%8E%E7%BE%8E%E5%9B%BD%E4%BA%92%E8%81%94%E7%BD%91 em:后美国互联网
-=> em:%E6%B2%A1%E6%9C%89%E4%BA%BA%E7%9A%84%E4%B8%96%E7%95%8C em:没有人的世界
-=> /posts/31df#%E9%BA%A6%E5%BD%93%E5%8A%B3%E6%AD%A3%E5%9C%A8%E5%A4%B1%E5%8E%BB%E5%85%B6%E4%BD%8E%E6%94%B6%E5%85%A5%E9%A1%BE%E5%AE%A2 麦当劳
-=> https://pluralistic.net/2026/01/01/39c3 https://pluralistic.net/2026/01/01/39c3
+我一直在思考,我现在如此讨厌阅读英语文章或者书籍,是因为什么?
+是我没有养成这个习惯吗?好像从小我就没有被要求过定期阅读书籍,我目前的阅读量低到令人发指。
+是我讨厌英语吗?我现在阅读英语文章会使用大量的翻译工具,虽然也可以,但是真的是一个好习惯吗?我又不是真的看不懂。
-## 现在孩子们已经很少读完整本书了,即使是在英语课上
+在写这些内容时我也发现一件事情:输出是一件很重要的事情,因为我都忘了这些年来我阅读过什么。努力细想后才想起来。如果从那个时候就开始写下自己「读了什么」,或许印象会更为深刻,然而我的「开智」也不过是近些年才开始的。
+=> https://www.nytimes.com/2025/12/12/us/high-school-english-teachers-assigning-books.html 原文
-这篇文章让我想起我在美国接受的 K-12 教育,即从幼儿园到高中毕业,只是我是在小学四年级的时候才来的美国。美国的小学到五年级就结束了,初中是从六年级上到八年级,然后高中从九年级上到十二年级。
+### AI 代理正在吞噬 SaaS
-初中对我来说是一个颇为重要的时期,因为我在那会儿明明可以好好学习英语,但是我选择了继续和华语使用者打交道,导致我现在的英语水平并不算好。来美国接受教育的第二年就需要通过 ESL 测试,也就是 English as Second Language 测试。我六年级那年并没有通过,因为考官认为我一直在照着原句读,到了七年级我才通过。
+过去我们很多时候谈论 AI 代理讨论的都是它如何影响供给侧,也就是它们如何降低创作成本。市场分为供给和需求两侧,如果将视线转向需求侧,问题就会变成「为什么我要花钱购买你的服务,而不是让 AI 代理帮我做这件事?」
-说回学校里的英语课,它大致可以分为两类:ELA 和 ESL。前者类似于「语文」,后者是非英语母语者学习英语的课程。两者使用的教材都是裁剪过的小说或者文章,例如我印象里比较深的《少年 Pi 的奇幻漂流》。
+我想到了近期 TailwindCSS 团队发生的事情。他们提供 UI Kit 定制服务,但是因为 AI 代理的存在,不得不裁员来维持公司的存活。当时 讨论串 内有人这么说:「这很大原因出于已经没有人想要 UI Kit 定制服务了。」
-当时我们是每过几天就跳着阅读一个章节,可能上次阅读还在说 Pi 在船上发现有老虎、斑马和鬣狗,下次阅读就变成了斑马和鬣狗全都死了,被遗漏掉的信息还是以括号的形式出现在章节的前面。
+是啊,有了 AI 代理后,只需要告诉它你想要什么样的 UI,它就可以照着你想要的做出来。这意味着有更多类似的服务会因为 AI 代理而消亡。
-到高中的时候这件事才开始有改善。高中的那几年我阅读了一些有趣的书籍,例如《一个印第安少年发现真我的日记》、《太阳也是一颗星星》以及同作者的开山之作《一切的一切》。或许我应该重新阅读它们,因为它们蛮有意思的。
+不过作者也表示,并不是所有的服务都会受其影响,例如 Slack 就很难被 AI 代理影响到,Stripe 也无法被轻易地取代。
-我一直在思考,我现在如此讨厌阅读英语文章或者书籍,是因为什么? 是我没有养成这个习惯吗?好像从小我就没有被要求过定期阅读书籍,我目前的阅读量低到令人发指。
+而最有可能被影响到的是那些实际功能简单的工具,例如只会进行 CRUD 操作的后端工具。
+=> https://martinalderson.com/posts/ai-agents-are-starting-to-eat-saas/ 原文
+=> https://github.com/tailwindlabs/tailwindcss.com/pull/2388 讨论串
-是我讨厌英语吗?我现在阅读英语文章会使用大量的翻译工具,虽然也可以,但是真的是一个好习惯吗?我又不是真的看不懂。
+### 如果 AI 取代了人类员工,那它需要付税吗?
-在写这些内容时我也发现一件事情:输出是一件很重要的事情,因为我都忘了这些年来我阅读过什么。努力细想后才想起来。如果从那个时候就开始写下自己「读了什么」,或许印象会更为深刻,然而我的「开智」也不过是近些年才开始的。
+这是一篇很「美国」的文章,因为涉及到「税」。
-source: [https://www.nytimes.com/2025/12/12/us/high-school-english-teachers-assigning-books.html] [2026-01-12 Mon 16:33]
+我和身为税务师的朋友讨论过这个问题。她的看法是 AI 没有收入,自然无法付税。它身为工具和服务,客户在使用前已经付了消费税。
+我认为如果岗位越来越少的话,国家的经济不是会一直走下坡路吗?政府终有一天会对 AI 下手吧。她则认为 AI 的出现会让岗位的平均水平提升,大家都要学会使用 AI 工具,并且收入也会因此增长,这对经济而言是一件好事。
-=> https://www.nytimes.com/2025/12/12/us/high-school-english-teachers-assigning-books.html https://www.nytimes.com/2025/12/12/us/high-school-english-teachers-assigning-books.html
+我很难以宏观的角度去赞同这一观点:现在的经济明显是在走下坡路,AI 热终究是一个泡沫,到了一个阈值这一切终会「炸开」,而剩下的人们多数都是被企业放弃培养、曾经被说是「不如 AI」的人。从来不去培养初级工程师的话,未来又怎么可能会有高级工程师给你用呢?
+=> https://english.elpais.com/technology/2025-11-30/if-ai-replaces-workers-should-it-also-pay-taxes.html 原文
+### 想法并非越来越难找
-## AI 代理正在吞噬 SaaS
+我过去想过这样的一个问题:想法是有限的,总有一天人们会想完所有的想法,那时候怎么办呢?
-过去我们很多时候谈论 AI 代理讨论的都是它如何影响供给侧,也就是它们如何降低创作成本。市场分为供给和需求两侧,如果将视线转向需求侧,问题就会变成「为什么我要花钱购买你的服务,而不是让 AI 代理帮我做这件事?」
+经济学界普遍认为点子正在变得越来越昂贵,因为维持技术进步所需的研发投入正在指数级增长。不过呢,从专利产出的数据来看,人类产生突破性想法的效率并没有下降,反而提升了许多。那到底是什么导致了它们没有「端上桌来」?
-我想到了近期 TailwindCSS 团队发生的事情。他们提供 UI Kit 定制服务,但是因为 AI 代理的存在,不得不裁员来维持公司的存活。当时 [讨论串] 内有人这么说:「这很大原因出于已经没有人想要 UI Kit 定制服务了。」
+答案是万恶的市场。
-是啊,有了 AI 代理后,只需要告诉它你想要什么样的 UI,它就可以照着你想要的做出来。这意味着有更多类似的服务会因为 AI 代理而消亡。
+许多超前或者高效的创新在进入市场后,并不能像过去那样通过竞争淘汰低效的旧技术。掌握旧技术的往往都是老公司,而新公司很难仅仅因为个新点子便占据大量的市场份额,反倒是很容易在实际的生产力被转化之前就被干倒。更别提一些概念被提出后就被老公司抄去……
+=> https://asteriskmag.com/issues/12-books/ideas-arent-getting-harder-to-find 原文
-不过作者也表示,并不是所有的服务都会受其影响,例如 Slack 就很难被 AI 代理影响到,Stripe 也无法被轻易地取代。
+### 那个售卖时间的女人,和那个试图阻止她的男人
-而最有可能被影响到的是那些实际功能简单的工具,例如只会进行 CRUD 操作的后端工具。
+19 世纪的人们并没有可以随地查阅最新的权威时间的能力。假设你是一个商家,店里挂着一个钟,你要如何每天都确保它的时间是正确的?
-source: [https://martinalderson.com/posts/ai-agents-are-starting-to-eat-saas/] [2026-01-12 Mon 17:05]
+Belville 家族的成员会定时去天文台(伦敦最权威的时间来源)一次、校准自己手表的时间,然后将这个信息卖给他们的客户。标题里的「女人」便是家族的最后一位时间销售员——Ruth Belville。在她的任职期间,发生过一次「竞争公司为了抢占市场份额,在公众面前攻击她」的事件。
+John Wynne,也就是标题里的「男人」,是标准时间公司的董事。该公司提供的是通过电报信号自动校时的新技术。为了抢占市场,他在《泰晤士报》上发表了一篇演讲,包含了大量针对女性的人身攻击,以及对她的做法的嘲弄。
-=> https://github.com/tailwindlabs/tailwindcss.com/pull/2388 讨论串
-=> https://martinalderson.com/posts/ai-agents-are-starting-to-eat-saas/ https://martinalderson.com/posts/ai-agents-are-starting-to-eat-saas/
+结果是,这番言论并没有让 Belville 失去客户,反而让公众对她产生好奇和敬佩、带来了更多的知名度和客户。一直到 1940 年她年近八旬时才退休,而当时英国广播公司也就是 BBC 已经开始通过无线电广播发送格林威治时间信号。
+=> https://www.bbc.com/news/articles/c4nn7gew9zxo 原文
+### 儿童癌症患者的数百万治疗款项被骗
-## 如果 AI 取代了人类员工,那它需要付税吗?
+这是一篇令人心碎的报道。
-这是一篇很「美国」的文章,因为涉及到「税」。
+儿童癌症患者的家庭被跨国网络诈骗团伙利用,进行虚假的筹款,榨取民众们的同情心。事后,诈骗团体会欺骗这些家庭其实没有赚到钱——事实上捐款多到难以想象——然后跑路。这些款项原本可以用于拯救那些因经济问题而无法得到有效治疗的儿童癌症患者,但是没有,它们都进了诈骗团伙的腰包。
-我和身为税务师的朋友讨论过这个问题。她的看法是 AI 没有收入,自然无法付税。它身为工具和服务,客户在使用前已经付了消费税。
+BBC 发现这些团伙会在哥伦比亚、菲律宾、乌克兰等地寻找目标家庭,而筹款组织则在以色列、美国或加拿大注册,以获取捐款人的信任。他们甚至会雇佣当地的中间人来招募病童,部分中间人对诈骗性质表示知情。可悲的是,就算发现了一个有问题的组织,他们也会立即更换全新的名称继续行骗。
-我认为如果岗位越来越少的话,国家的经济不是会一直走下坡路吗?政府终有一天会对 AI 下手吧。她则认为 AI 的出现会让岗位的平均水平提升,大家都要学会使用 AI 工具,并且收入也会因此增长,这对经济而言是一件好事。
+我很难不去怀疑我所看到的所有捐款,因为前不久我刚被维基百科基金会「坑」了一次。我们需要知道这些款项的背后都是谁,但我们作为普通人,真的能发现得了吗?可能对我们来说最稳妥的方法就是「变冷漠」——不给任何人自己的东西。这么做听上去不近人情,但是在这个到处都是谎言的社会,可能人人都会慢慢不再关心彼此。
+=> https://www.bbc.com/news/articles/ckgz318y8elo 原文
-我很难以宏观的角度去赞同这一观点:现在的经济明显是在走下坡路,AI 热终究是一个泡沫,到了一个阈值这一切终会「炸开」,而剩下的人们多数都是被企业放弃培养、曾经被说是「不如 AI」的人。从来不去培养初级工程师的话,未来又怎么可能会有高级工程师给你用呢?
+### 玩耍时间最长、清理时间最短的玩具
-source: [https://english.elpais.com/technology/2025-11-30/if-ai-replaces-workers-should-it-also-pay-taxes.html] [2026-01-12 Mon 17:23]
+作者以游玩的频率、时长和收拾的轻易度这三个维度评价了孩子的各个玩具。如果你不知道该如何给小孩子挑选玩具,可以参考这篇文章。
+吸引了我注意力的是「磁力砖」这个玩具,我从未听说过,但是感觉好好玩。
-=> https://english.elpais.com/technology/2025-11-30/if-ai-replaces-workers-should-it-also-pay-taxes.html https://english.elpais.com/technology/2025-11-30/if-ai-replaces-workers-should-it-also-pay-taxes.html
+我小时候玩得最多的是「魔尺」。按理来说它可以组成的搭配相当有限,不过得利于我小时候那强大的想象力,我可以将其拼成我认为的「人」或者「精灵」、放置在一个我编写的故事里。自然,到这个地步就已经不是「选什么玩具」这样的问题了……因为我可以把所有看到的东西都当作是长相奇怪的「精灵」。现在反而做不到了,实在是令人悲伤。
+=> https://joannabregan.substack.com/p/toys-with-the-highest-play-time-and 原文
+### 自由薯条
-## 想法并非越来越难找
+2001 年,美国发生了可怕的 911 恐怖袭击。事后美国政府指控伊拉克拥有大规模杀伤性武器,并且暗中支持恐怖主义组织,因此主张必须通过军事手段推翻萨达姆政权。
-我过去想过这样的一个问题:想法是有限的,总有一天人们会想完所有的想法,那时候怎么办呢?
+这一军事行动计划未能获得联合国的明确授权,美国只能试图通过外交压力促使联合国安理会通过决议,批准对伊拉克动武。在这一争取国际合法性的过程中,美国与以法国、德国为首的欧洲盟友发生了严重的战略分歧。
-经济学界普遍认为点子正在变得越来越昂贵,因为维持技术进步所需的研发投入正在指数级增长。不过呢,从专利产出的数据来看,人类产生突破性想法的效率并没有下降,反而提升了许多。那到底是什么导致了它们没有「端上桌来」?
+当时的法国是联合国安理会常任理事国,拥有极其关键的一票否定权。法国坚持认为战争应当是最后的手段,主张给予联合国武器核查人员更多时间在伊拉克进行核查,以确定是否真的存在美国口中的武器。
-答案是万恶的市场。
+美国对此很不满意,公开嘲讽法国和德国代表了过时的「老欧洲」,而支持美国的东欧国家才是「新欧洲」。美国舆论普遍认为法国不仅阻碍了美国的国家安全行动,还忘恩负义(美国二战期间和结束后多次帮助法国)。这种政治上的受挫感转化为了美国国内强烈的反法情绪。
-许多超前或者高效的创新在进入市场后,并不能像过去那样通过竞争淘汰低效的旧技术。掌握旧技术的往往都是老公司,而新公司很难仅仅因为个新点子便占据大量的市场份额,反倒是很容易在实际的生产力被转化之前就被干倒。更别提一些概念被提出后就被老公司抄去……
+在这种舆论氛围下,北卡罗来纳州的共和党众议员 Walter B.Jones 提议将「法式薯条」(French Fries)更名。
-source: [https://asteriskmag.com/issues/12-books/ideas-arent-getting-harder-to-find] [2026-01-12 Mon 18:52]
+没想到的是,2003 年 3 月 11 日,众议员行政委员会主席兼俄亥俄州共和党众议员 Bob Ney 还真的指示国会众议院的三家自助餐厅去正式修改菜单:「法式薯条」改名为「自由薯条」(Freedom Fries)、「法式吐司」(French Toast)改名为「自由吐司」(Freedom Toast)。
+Ney 声称,此举旨在表达对法国「拒绝支持美国盟友」的不满,并象征性地剥夺法国在国会大厦菜单上的「名分」。
-=> https://asteriskmag.com/issues/12-books/ideas-arent-getting-harder-to-find https://asteriskmag.com/issues/12-books/ideas-arent-getting-harder-to-find
+当时的民意调查显示,有不少美国民众支持这一象征性的抗议行为,视其为一种低成本的爱国主义表达。
+随着伊拉克战争局势的演变以及美国国内政治气候的变化,「自由薯条」的热度逐渐消退。到了 2005 年和 2006 年,随着美军在伊拉克陷入泥潭,公众对战争的支持率大幅下降,这种针对法国的象征性抗议显得愈发不合时宜。更为关键的是 Ney 因其他事件而陷入法律困境,最终辞职和入狱,他对国会餐厅的管辖权也随之旁落。
-## 那个售卖时间的女人,和那个试图阻止她的男人
+2006 年 8 月,接替 Ney 担任众议院行政委员会主席的密歇根州众议员 Vern Ehlers 在没有发布任何官方声明的情况下,悄然指示国会餐厅将菜单改回了「法式薯条」。
-19 世纪的人们并没有可以随地查阅最新的权威时间的能力。假设你是一个商家,店里挂着一个钟,你要如何每天都确保它的时间是正确的?
+更戏剧性的在于,最初的提议者 Jones 后来成为了伊拉克战争的公开反对者,并对自己当年的行为表示了悔意,希望这件事从未发生过。
-Belville 家族的成员会定时去天文台(伦敦最权威的时间来源)一次、校准自己手表的时间,然后将这个信息卖给他们的客户。标题里的「女人」便是家族的最后一位时间销售员——Ruth Belville。在她的任职期间,发生过一次「竞争公司为了抢占市场份额,在公众面前攻击她」的事件。
+一战其实也发生过一样的事情。1917 年美国对德国宣战后,国内爆发了极端的反德歇斯底里情绪。
-John Wynne,也就是标题里的「男人」,是标准时间公司的董事。该公司提供的是通过电报信号自动校时的新技术。为了抢占市场,他在《泰晤士报》上发表了一篇演讲,包含了大量针对女性的人身攻击,以及对她的做法的嘲弄。
+当时作为德国饮食文化代表的「酸菜」(Sauerkraut)被认为带有敌国色彩,为了切断与敌人的文化联系并激发爱国热情,美国国内的生产商和部分官方机构将其更名为「自由卷心菜」(Liberty Cabbage)。
-结果是,这番言论并没有让 Belville 失去客户,反而让公众对她产生好奇和敬佩、带来了更多的知名度和客户。一直到 1940 年她年近八旬时才退休,而当时英国广播公司也就是 BBC 已经开始通过无线电广播发送格林威治时间信号。
+这种改名风潮波及甚广:「德国麻疹」(German measles)要叫「自由麻疹」(Liberty measles),「汉堡」(Hamburger)要叫「自由三明治」或者「自由牛排」(叫「牛排」是因为这里的「汉堡」并非我们现在认为的「汉堡包」,其形式可以想象一下日本的「汉堡肉」),甚至「腊肠犬」(Dachshund)也要叫「自由犬」(Liberty pups)。
-source: [https://www.bbc.com/news/articles/c4nn7gew9zxo] [2026-01-12 Mon 19:09]
+用现在的眼光去看,就会觉得这帮人作为政客,做的事情可是一个比一个幼稚,将其视为美国反智主义抬头的表现也不为过。
+=> https://zh.wikipedia.org/zh-cn/%E8%87%AA%E7%94%B1%E8%96%AF%E6%A2%9D 原文
+### AI 导致学校进入封锁,因其将学生的单簧管误认为枪支
-=> https://www.bbc.com/news/articles/c4nn7gew9zxo https://www.bbc.com/news/articles/c4nn7gew9zxo
+去年年底佛罗里达州的一所中学发生了一起乌龙事情:AI 监控系统发出警报,发现一名学生携带了枪支,事后发现这名学生手里拿的其实是单簧管。
+这件事情发生没多久,马里兰州又发生了类似的事件。学校的 AI 监控系统这次误认为一名学生手里的 Doritos(多力多滋,是薯片)是手枪,导致学生被至少八名持枪警察暴力拘留。
-## 儿童癌症患者的数百万治疗款项被骗
+我很不能理解的是校方的事后态度。佛罗里达州的那个学校事后责怪了携带单簧管的学生,认为对方假装在学校内持有武器——这种话你都能说出口?
-这是一篇令人心碎的报道。
+明明这种事情可以通过让一个人类参与其中而避免,但是这些教育机构却好像只想依靠 AI 系统的样子。这倒是让我想起前些时候的另一个新闻:AI 学校,即学生主要从 AI 那儿获取知识,而「老师」仅是辅助学生使用 AI 学习的人。
+=> https://futurism.com/future-society/ai-surveillance-school-clarinet 原文
-儿童癌症患者的家庭被跨国网络诈骗团伙利用,进行虚假的筹款,榨取民众们的同情心。事后,诈骗团体会欺骗这些家庭其实没有赚到钱——事实上捐款多到难以想象——然后跑路。这些款项原本可以用于拯救那些因经济问题而无法得到有效治疗的儿童癌症患者,但是没有,它们都进了诈骗团伙的腰包。
+### 我被德国铁路绑架,只得到了 1.50 欧元
-BBC 发现这些团伙会在哥伦比亚、菲律宾、乌克兰等地寻找目标家庭,而筹款组织则在以色列、美国或加拿大注册,以获取捐款人的信任。他们甚至会雇佣当地的中间人来招募病童,部分中间人对诈骗性质表示知情。可悲的是,就算发现了一个有问题的组织,他们也会立即更换全新的名称继续行骗。
+作者被德国铁路「绑架」,被拉去了离目的地几十公里开外的另一个联邦州。这一事实在是荒诞,反映出德国铁路在临时变更计划时的系统性僵化。
-我很难不去怀疑我所看到的所有捐款,因为前不久我刚被维基百科基金会「坑」了一次。我们需要知道这些款项的背后都是谁,但我们作为普通人,真的能发现得了吗?可能对我们来说最稳妥的方法就是「变冷漠」——不给任何人自己的东西。这么做听上去不近人情,但是在这个到处都是谎言的社会,可能人人都会慢慢不再关心彼此。
+十年纽约客看到铁路相关的话题便会不由自主想起 MTA……
+=> https://www.theocharis.dev/blog/kidnapped-by-deutsche-bahn/ 原文
-source: [https://www.bbc.com/news/articles/ckgz318y8elo] [2026-01-13 Tue 20:56]
+### 我解除了我的出书合约
+作者被一位出版社编辑联系上,决定写一本让读者通过动手做有趣项目来学习计算机基础概念的书。
-=> https://www.bbc.com/news/articles/ckgz318y8elo https://www.bbc.com/news/articles/ckgz318y8elo
+可惜这期间发生了不少摩擦,例如作者被强制要求使用 AsciiDoc 或者 Word 而不是 LaTeX、去除个人风格、加入作者不想要添加的章节,甚至要求他的书里必须包含 AI 内容。
+最后作者因工作繁忙和生活琐事,不断错过截止日期,还因 LLM 时代的到来而失去了写书的热情,主动申请了冻结项目。
-## 玩耍时间最长、清理时间最短的玩具
+不过这篇文章出来后,许多读者表示有购买意愿,让作者开启了电子书预售,计划按章节发布,并在亚马逊上发行纸质版。感兴趣的可以看看。
+=> https://austinhenley.com/blog/canceledbookdeal.html 原文
-作者以游玩的频率、时长和收拾的轻易度这三个维度评价了孩子的各个玩具。如果你不知道该如何给小孩子挑选玩具,可以参考这篇文章。
+### 阅读是一种恶习
-吸引了我注意力的是「磁力砖」这个玩具,我从未听说过,但是感觉好好玩。
+过去十年来,美国学生的阅读能力直线下降,他们的阅读习惯也随之恶化。2023 年只有 14%的 13 岁青少年几乎每天都为了乐趣而阅读,而十年前这一比例为 27%。越来越多的高中生甚至大学生难以从头到尾读完一本书。
-我小时候玩得最多的是「魔尺」。按理来说它可以组成的搭配相当有限,不过得利于我小时候那强大的想象力,我可以将其拼成我认为的「人」或者「精灵」、放置在一个我编写的故事里。自然,到这个地步就已经不是「选什么玩具」这样的问题了……因为我可以把所有看到的东西都当作是长相奇怪的「精灵」。现在反而做不到了,实在是令人悲伤。
+为了改变这一事,国际出版商协会在过去一年里一直在推广「民主取决于阅读」的口号,劝说他们为了拯救民主而读书。不过这种策略能有用才奇怪,主动去读书的人几乎都不是因为对社会有益才去读的。
-source: [https://joannabregan.substack.com/p/toys-with-the-highest-play-time-and] [2026-01-13 Tue 21:58]
+作者认为可以提议将阅读视为一种恶习,这对年轻人来说才是有吸引力的。
+这个角度是我意想不到的,略微思考后觉得是个不错的提议,只是我担心有些人只会去阅读禁书,却对其他书不感冒。
+=> https://www.msn.com/en-us/news/us/reading-is-a-vice/ar-AA1Tsp7w 原文
-=> https://joannabregan.substack.com/p/toys-with-the-highest-play-time-and https://joannabregan.substack.com/p/toys-with-the-highest-play-time-and
+### 百年流言
+Bruderhof 社区是一个非常有名的基督教公社,其生活方式非常理想主义:他们试图完全按照《圣经》的教导过群居生活,财产公有,且互相关爱。
-## 自由薯条
+该社区最古老的一条规则叫作 First Law of Sannerz ,核心是「以此为爱:当面直言,绝不背后议论」。对于习惯了现代社会复杂人际关系的我们来说,这种规则实在是难以想象。那么这条规则有效吗?
-2001 年,美国发生了可怕的 911 恐怖袭击。事后美国政府指控伊拉克拥有大规模杀伤性武器,并且暗中支持恐怖主义组织,因此主张必须通过军事手段推翻萨达姆政权。
+这一规则在作者看来,违背人性,且可以被人利用、打着「当面直言」的旗号攻击别人。钻空子也是很容易的事情,只要靠肢体语言就可以表达对他人的轻蔑,根本不需要张口说话。更不用提八卦在心理学上算一种有用的社会均衡器了。不过《圣经》中多次提到过「舌头能燎原」,背后议论终究还是会带来不信任和仇恨。
-这一军事行动计划未能获得联合国的明确授权,美国只能试图通过外交压力促使联合国安理会通过决议,批准对伊拉克动武。在这一争取国际合法性的过程中,美国与以法国、德国为首的欧洲盟友发生了严重的战略分歧。
+即使「不八卦」在现代社会几乎是不可能完成的任务,但是这个百年社区依然选择将其作为最高理想,因为透明和直接是信任的唯一来源。
+=> https://www.plough.com/en/topics/community/one-hundred-years-of-gossip 原文
-当时的法国是联合国安理会常任理事国,拥有极其关键的一票否定权。法国坚持认为战争应当是最后的手段,主张给予联合国武器核查人员更多时间在伊拉克进行核查,以确定是否真的存在美国口中的武器。
+### 谷歌伤透了我的心
-美国对此很不满意,公开嘲讽法国和德国代表了过时的「老欧洲」,而支持美国的东欧国家才是「新欧洲」。美国舆论普遍认为法国不仅阻碍了美国的国家安全行动,还忘恩负义(美国二战期间和结束后多次帮助法国)。这种政治上的受挫感转化为了美国国内强烈的反法情绪。
+多年来作者一直视谷歌为值得信赖的盟友,因为谷歌过去总是迅速、无障碍地处理他关于盗版书籍的投诉,将侵权链接从搜索结果中移除。然而 2026 年的一次经历打破了这种信任。
-在这种舆论氛围下,北卡罗来纳州的共和党众议员 Walter B.Jones 提议将「法式薯条」(French Fries)更名。
+这次谷歌并未像往常一样直接处理,而是连续三次发邮件质疑他的身份和版权所有权。这让作者感到极度失望和无助。他认为谷歌已经变成了一个傲慢、冷漠、不再关心小人物死活的官僚机器。
-没想到的是,2003 年 3 月 11 日,众议员行政委员会主席兼俄亥俄州共和党众议员 Bob Ney 还真的指示国会众议院的三家自助餐厅去正式修改菜单:「法式薯条」改名为「自由薯条」(Freedom Fries)、「法式吐司」(French Toast)改名为「自由吐司」(Freedom Toast)。
+我认为很大一个可能是谷歌完全制裁了人工审核 DMCA 的团队,改为 AI 或者自动化脚本处理,因为作者收到的回复非常像模板话术。
+=> https://perishablepress.com/google-broke-my-heart/ 原文
-Ney 声称,此举旨在表达对法国「拒绝支持美国盟友」的不满,并象征性地剥夺法国在国会大厦菜单上的「名分」。
+## 心理与关系
-当时的民意调查显示,有不少美国民众支持这一象征性的抗议行为,视其为一种低成本的爱国主义表达。
+### 世界没有你的时候也会继续运转
-随着伊拉克战争局势的演变以及美国国内政治气候的变化,「自由薯条」的热度逐渐消退。到了 2005 年和 2006 年,随着美军在伊拉克陷入泥潭,公众对战争的支持率大幅下降,这种针对法国的象征性抗议显得愈发不合时宜。更为关键的是 Ney 因其他事件而陷入法律困境,最终辞职和入狱,他对国会餐厅的管辖权也随之旁落。
+艰难时期有着两个糟糕的部分:一是认为自己是唯一一个经历这一切的人;二是发现世界继续向前,而你停滞不前。
-2006 年 8 月,接替 Ney 担任众议院行政委员会主席的密歇根州众议员 Vern Ehlers 在没有发布任何官方声明的情况下,悄然指示国会餐厅将菜单改回了「法式薯条」。
+事实是,没有人会救我们。只有我们可以拯救自己——这听上去像是毒鸡汤,但确实如此。我们很小,是这个宇宙的无数尘埃之一,我们只能依靠自己。
+=> https://tala.bearblog.dev/what-do-you-do-when-life-keeps-going-on-without-you 原文
-更戏剧性的在于,最初的提议者 Jones 后来成为了伊拉克战争的公开反对者,并对自己当年的行为表示了悔意,希望这件事从未发生过。
+### 薄欲正在吞噬你的生活
-一战其实也发生过一样的事情。1917 年美国对德国宣战后,国内爆发了极端的反德歇斯底里情绪。
+什么是薄欲?——在你满足了之后、并不会实质性去改变你的一种欲望。
-当时作为德国饮食文化代表的「酸菜」(Sauerkraut)被认为带有敌国色彩,为了切断与敌人的文化联系并激发爱国热情,美国国内的生产商和部分官方机构将其更名为「自由卷心菜」(Liberty Cabbage)。
+查看社交媒体而不是去交朋友、观看色情影片而不是寻找伴侣、使用生产力应用而没有真正生产出什么……这些在特定的情况下都是薄欲的一种。人们在不支付任何代价的情况下获得了短暂的快乐,又或者说其实他们已经支付了代价——不再长期快乐的代价。
-这种改名风潮波及甚广:「德国麻疹」(German measles)要叫「自由麻疹」(Liberty measles),「汉堡」(Hamburger)要叫「自由三明治」或者「自由牛排」(叫「牛排」是因为这里的「汉堡」并非我们现在认为的「汉堡包」,其形式可以想象一下日本的「汉堡肉」),甚至「腊肠犬」(Dachshund)也要叫「自由犬」(Liberty pups)。
+市面上多的是那些可以让人们快速满足的东西,但是它们没有解决任何事情,反而让一些本应该下降的指数提升了,比如孤独感。互联网让全世界的人们不可思议地联系在了一起,但是我们好像没有变得太快乐,焦虑和抑郁值一直在增长,没有停下来过。
+=> https://www.joanwestenberg.com/thin-desires-are-eating-your-life/ 原文
-用现在的眼光去看,就会觉得这帮人作为政客,做的事情可是一个比一个幼稚,将其视为美国反智主义抬头的表现也不为过。
+### 你并非职业倦怠,而是灵魂在闹饥荒
-source: [https://zh.wikipedia.org/zh-cn/%E8%87%AA%E7%94%B1%E8%96%AF%E6%A2%9D] [2026-01-21 Wed 20:56]
+作者 Neil Thanedar 认为大家有个误解:我们觉得累、不想上班是因为工作太辛苦,所以我们试图通过休息、度假、优化睡眠来解决。但他认为这些方法都没用,因为我们并非倦怠,而是在 存在主义 方面上感到饥饿——我们的生活在物质上很富足,但在精神上很空虚。
+心理学家 Viktor Frankl 认为,人的主要驱动力不是快乐也不是权力,而是意义。当我们没有最高目标时,我们就会陷入存在主义真空,感觉生活停滞不前。
-=> https://zh.wikipedia.org/zh-cn/%E8%87%AA%E7%94%B1%E8%96%AF%E6%A2%9D https://zh.wikipedia.org/zh-cn/%E8%87%AA%E7%94%B1%E8%96%AF%E6%A2%9D
+借此,Thanedar 引用了 马蹄铁理论 来解释压力:想象一个马蹄铁,它的左右两端虽然方向不同,但是是彼此的镜像。代入「压力」,马蹄铁的最左端意味着「压力太小」和「无聊」,最右端意味着「压力太大」 和「倦怠」,中间则意味着「良性压力」。
+这一理论本身如何我就不评价了,因为它原本是一个政治理论,但是它让我想起了初中读的《心流:最优体验心理学》,给我的印象十分深刻(虽然很抱歉没有读完)。
-## AI 导致学校进入封锁,因其将学生的单簧管误认为枪支
+简单来说,这本书的作者 Mihaly Csikszentmihalyi 认为人类的幸福并非静止的状态,也不是单纯感官享乐的堆积,而是一种通过全身心投入某件事而获得的「最优体验」。
-去年年底佛罗里达州的一所中学发生了一起乌龙事情:AI 监控系统发出警报,发现一名学生携带了枪支,事后发现这名学生手里拿的其实是单簧管。
+他提出了一个动态平衡:当外界赋予的任务挑战过高而个人技能不足时,人会感到焦虑;反之,当技能很高而挑战过低时,人会感到厌倦。 心流 只存在于这两者之间。为了维持这种状态,个体必须不断提升技能以应对更高的挑战,或者寻找更难的任务来匹配已有的技能。
-这件事情发生没多久,马里兰州又发生了类似的事件。学校的 AI 监控系统这次误认为一名学生手里的 Doritos(多力多滋,是薯片)是手枪,导致学生被至少八名持枪警察暴力拘留。
+因此,心流本质上是一种促进个体复杂性成长和自我进化的驱动力,它要求活动具备明确的目标、即时的内部反馈,以及技能与挑战的匹配。只要符合这些要点,大众常以为苦的流水线工人也可以进入心流状态。
-我很不能理解的是校方的事后态度。佛罗里达州的那个学校事后责怪了携带单簧管的学生,认为对方假装在学校内持有武器——这种话你都能说出口?
+他也提到现代人感到空虚的原因往往在于过度追求被动的享乐,而缺乏主动创造乐趣的能力。书中有一句话让我印象最为深刻: 人要学会自娱自乐 。这倒是让我想起 Aristotle 的一句话:
-明明这种事情可以通过让一个人类参与其中而避免,但是这些教育机构却好像只想依靠 AI 系统的样子。这倒是让我想起前些时候的另一个新闻:AI 学校,即学生主要从 AI 那儿获取知识,而「老师」仅是辅助学生使用 AI 学习的人。
+> 离群索居者,不是野兽,便是神灵。
-source: [https://futurism.com/future-society/ai-surveillance-school-clarinet] [2026-01-21 Wed 21:29]
+Karl Marx 在他的《1844 年经济学哲学手稿》中提到了「异化劳动」这个概念。劳动本应是人类本质力量的自我确证,但在资本主义生产关系下,劳动发生了多重异化:
+1. 你造出来的东西不归你,它变成了商品被拿走换钱;
+2. 产品越完美,工人越贫穷;
+3. 劳动不再是目的,而成了生存的手段;
+4. 劳动变成了「外在的苦难」,人只有在不劳动时才觉得自在。
-=> https://futurism.com/future-society/ai-surveillance-school-clarinet https://futurism.com/future-society/ai-surveillance-school-clarinet
+当「钱」成为了唯一的衡量标准时,劳动的挑战性就不再是乐趣的来源,而是痛苦的来源,因为挑战意味着可能拿不到钱的风险。这会形成一个恶性循环:工作被剥夺了自反馈,人们为了防御痛苦选择「摆烂」,结果掉入了「无聊」的无底洞,不得不为了缓解无聊而转向高刺激的消费。
+室友有一套自己的理念,她认为人生的重点在于「热爱」。她看一个人的标准基本上就是看这个人是否有热爱,一个人为了自己的热爱而努力的姿态是最闪亮的。那些没有「热爱」的人,对她而言则不过是随波逐流的垃圾,是无聊的。
-## 我被德国铁路绑架,只得到了 1.50 欧元
+自然,她的表述很是极端。不过她的一个问题我认为是只看到了空心人们的「果」,而没有看到「因」。社会已经被异化了许久,人们空虚的同时,只能依靠市场提供的奶头乐来刺激自己享乐。他们是系统性饥饿的受害者。
+=> https://neilthanedar.com/youre-not-burnt-out-youre-existentially-starving/ 原文
-作者被德国铁路「绑架」,被拉去了离目的地几十公里开外的另一个联邦州。这一事实在是荒诞,反映出德国铁路在临时变更计划时的系统性僵化。
+### 不要变成机器
-十年纽约客看到铁路相关的话题便会不由自主想起 MTA……
+> 只有奴隶才通过生产力来衡量自己的存在。
-source: [https://www.theocharis.dev/blog/kidnapped-by-deutsche-bahn/] [2026-01-22 Thu 19:21]
+作者讲到了奋斗文化(Hustle Culture),简单来说可以认为是一群人在表演自己很奋斗:炫耀加班时长、用古怪的方式工作……一个很好的观察场地是 LinkedIn(领英)。
+大家迷恋于自己可量化的一面,却忽略了真正重要的产出,并用自己的「生产力」来证明自己的价值,已经和机器无异。
-=> https://www.theocharis.dev/blog/kidnapped-by-deutsche-bahn/ https://www.theocharis.dev/blog/kidnapped-by-deutsche-bahn/
+作者认为成功的策略应该是不追求线性和盲目的苦干,而是发挥人的优势——适应性和策略性。
+=> https://armeet.bearblog.dev/becoming-the-machine/ 原文
+### 在咖啡馆独处的不能承受之乐
-## 我解除了我的出书合约
+标题中的 Unbearable Joy 引用了 The Unbearable Lightness of Being ,即《生命中不能承受之轻》这本名著,我在翻译中保留了这一点。
-作者被一位出版社编辑联系上,决定写一本让读者通过动手做有趣项目来学习计算机基础概念的书。
+我是建议阅读原文,因此不对这篇文章编写总结,只说我的想法。
-可惜这期间发生了不少摩擦,例如作者被强制要求使用 AsciiDoc 或者 Word 而不是 LaTeX、去除个人风格、加入作者不想要添加的章节,甚至要求他的书里必须包含 AI 内容。
+不知何时,我再也 不独自出去 了。初中的时候我因为被同学孤立,会每周走半小时的路去图书馆借书。那时候或许是我人生中可以算是「厉害」的阶段:绘画上对自己无比满意、每周都会阅读五本书、成绩还算不错,就是人际关系上有些糟糕,无论是和家庭还是和同龄人。
-最后作者因工作繁忙和生活琐事,不断错过截止日期,还因 LLM 时代的到来而失去了写书的热情,主动申请了冻结项目。
+然后从一个时间点开始,我不再那么做了。我不读书了,我不出门了,我不画画了。到底是什么时候呢?我也说不上来。
-不过这篇文章出来后,许多读者表示有购买意愿,让作者开启了电子书预售,计划按章节发布,并在亚马逊上发行纸质版。感兴趣的可以看看。
+现在我几乎是除了和人有约外,就只会因为打工而出门。我在家里待了太久,却没有出门的欲望。我对外面有着一种恐惧:我可能会被流浪汉纠缠、可能会被跟踪、可能会被杀……这些自然都是我的被害妄想。不过出门确实对我来说变成了一种团体活动,但不会有人永远都带着我出门。
-source: [https://austinhenley.com/blog/canceledbookdeal.html] [2026-01-22 Thu 19:34]
+这个月我产生了许多幻想。说是幻想是因为我实际上没有精力去实现它们,意味着在我的脑海里它们的优先级并不高。我看到一位博客站主购买了相机,对他路上拍的照片感觉羡慕,因此评论表示自己也想要购买一个、出门拍着玩。对方的回应是这种事想了就要立即去做。我心想说得对,但也没有动身子——「相机好贵,我想要在二手市场淘一个。二手卖家的家好远,我不想去。我不是还有工作要做吗?这件事就放一放吧。」
+如果我没有记错的话,我的那个评论是在月初发的,而现在你看到的这个内容是月底写的。
-=> https://austinhenley.com/blog/canceledbookdeal.html https://austinhenley.com/blog/canceledbookdeal.html
+我从很久之前就幻想过我可以再去图书馆,但是我的脑海里也产生了许多阻力:「那家图书馆我没有实体卡,我要去办吗?好像我有虚拟卡,但是我懒得查……」
+懒,懒, 懒 !
-## 阅读是一种恶习
+我又不是不知道如果那么做了我会很开心,但我就是没有那么做。
-过去十年来,美国学生的阅读能力直线下降,他们的阅读习惯也随之恶化。2023 年只有 14%的 13 岁青少年几乎每天都为了乐趣而阅读,而十年前这一比例为 27%。越来越多的高中生甚至大学生难以从头到尾读完一本书。
+虽然我很讨厌打工,但是它对我来说有一些好处:不是特别忙的时候,我可以观察顾客们。例如每周六早上都会进来一个老头,戴着帽子系着围巾牵着条狗,他每次都会点一杯热的金橘柠檬茶,坐着慢慢喝。这期间他什么都不会坐,只是坐着。如果有其他顾客过来和他的狗互动,他会笑着说你要摸摸它吗。
-为了改变这一事,国际出版商协会在过去一年里一直在推广「民主取决于阅读」的口号,劝说他们为了拯救民主而读书。不过这种策略能有用才奇怪,主动去读书的人几乎都不是因为对社会有益才去读的。
+纽约市是一个快节奏的城市,对比美国的其他地方。我很意外我会在这样的地方看到人们慢节奏地生活,毕竟很多顾客取走饮品后就会立即离开,其中的一部分人干脆是在等车的五分钟内进来买东西,公交车快到的时候还会催我们。能悠哉坐在这里很久的群体,除了身为成人的「怪人」外,就只有学生了。
-作者认为可以提议将阅读视为一种恶习,这对年轻人来说才是有吸引力的。
+说到学生,我有时能遇到非常可爱的小学生或者初中生。这里的「可爱」并非指的是外观,而是他们的思维和行为。他们会带着一本厚重的书读,说话有礼貌也很安静,这种小孩子会让人打心里觉得「真不错」,对比一些烦得要死的熊孩子们。
+=> https://candost.blog/the-unbearable-joy-of-sitting-alone-in-a-cafe/ 原文
-这个角度是我意想不到的,略微思考后觉得是个不错的提议,只是我担心有些人只会去阅读禁书,却对其他书不感冒。
+## 技术与创造
-source: [https://www.msn.com/en-us/news/us/reading-is-a-vice/ar-AA1Tsp7w] [2026-01-22 Thu 22:13]
+### GitHub 的垄断是如何正在摧毁开源生态系统的
+GitHub 近期一直都有问题,倒不如说从微软接手了之后,GitHub 再也不是我们心里的开源社区代表之一了。
-=> https://www.msn.com/en-us/news/us/reading-is-a-vice/ar-AA1Tsp7w https://www.msn.com/en-us/news/us/reading-is-a-vice/ar-AA1Tsp7w
+作者想要知道他的学生的报告里,有多少是和被托管在 GitHub 上的项目有关,结果是只有 238 之 7 个是和 GitHub 无关的,而这里有 6 个人是忘了添加代码库的 URL,实际上使用的代码库依然被托管在 GitHub 上。
+作者认为,GitHub 的替代方案有很多:
-## 百年流言
+* GitLab
+* Codeberg
+* Forgejo
+* Sourcehut
+* Fossil
+* Mercurial
+* Radicle
-Bruderhof 社区是一个非常有名的基督教公社,其生活方式非常理想主义:他们试图完全按照《圣经》的教导过群居生活,财产公有,且互相关爱。
+他告诉学生们要去看看 GitHub 以外的内容,但是这 238 个人里,只有 1 个人那么做了。
-该社区最古老的一条规则叫作 /First Law of Sannerz/ ,核心是「以此为爱:当面直言,绝不背后议论」。对于习惯了现代社会复杂人际关系的我们来说,这种规则实在是难以想象。那么这条规则有效吗?
+为什么一定要去看看 GitHub 以外的内容呢?这就要说到 集权化 。当所有数据都放在一个服务上,最大的危险便是失去对它们的访问权限。
-这一规则在作者看来,违背人性,且可以被人利用、打着「当面直言」的旗号攻击别人。钻空子也是很容易的事情,只要靠肢体语言就可以表达对他人的轻蔑,根本不需要张口说话。更不用提八卦在心理学上算一种有用的社会均衡器了。不过《圣经》中多次提到过「舌头能燎原」,背后议论终究还是会带来不信任和仇恨。
+谷歌账户就是一个很好的例子:你有一部基于谷歌的手机,你可以登录你的谷歌账户、用谷歌邮箱注册其他网站的账户,并且简单地用手机作为 Passkey 源。一切都太方便了!
-即使「不八卦」在现代社会几乎是不可能完成的任务,但是这个百年社区依然选择将其作为最高理想,因为透明和直接是信任的唯一来源。
+但如果你的手机坏了,或者你的谷歌账户登不上手机了,你再去登录其他网站就会变得很麻烦,因为你除了这个手机外,没有其他「可以证明你是你」的证据。而谷歌决定抽风、让「你」消失。
-source: [https://www.plough.com/en/topics/community/one-hundred-years-of-gossip] [2026-01-22 Thu 23:16]
+同样的例子也可以用在其他服务上,苹果是如此,微软也是如此。
+对于 GitHub 来说,我认为问题更为复杂一些。GitHub 被社区的人们描述得太像一个 Only One 了——大家都在使用它:找项目使用它,贡献使用它,托管私密代码使用它……好像除了 GitHub 之外,其他选择都是「看不见摸不着」,或者说「不入流」。
-=> https://www.plough.com/en/topics/community/one-hundred-years-of-gossip https://www.plough.com/en/topics/community/one-hundred-years-of-gossip
+我也考虑了一下我的情况。我许多时候代码都会优先放在 GitHub 上,它变得像一个云盘,尽管它不是,并且有可能把我的代码都弄没。不过企业相关的代码,我会放在 BitBucket 上,毕竟它是为了企业而生的。这样说来,我对开源的看法,很有可能就是被局限在 GitHub 的一亩土地里。
+=> https://ploum.net/2026-01-05-unteaching_github.html 原文
+### Bear vs Pika vs Write.as
-## 谷歌伤透了我的心
+作者比较了三个写作平台:Write\.as、Pika.Page 以及 Bear Blog。
-多年来作者一直视谷歌为值得信赖的盟友,因为谷歌过去总是迅速、无障碍地处理他关于盗版书籍的投诉,将侵权链接从搜索结果中移除。然而 2026 年的一次经历打破了这种信任。
+我从未接触过这些写作平台。过去,我以为你要写博客只能是自己构建、部署一个。直到最近我才知道,其实互联网早就有了这样的平台,可以帮助你构建网页样式,你只需要写……还有选择域名?应该吧。
+=> https://commentingon.xyz/bear-vs-pika-vs-writeas 原文
-这次谷歌并未像往常一样直接处理,而是连续三次发邮件质疑他的身份和版权所有权。这让作者感到极度失望和无助。他认为谷歌已经变成了一个傲慢、冷漠、不再关心小人物死活的官僚机器。
+### br 标签的三十年
-我认为很大一个可能是谷歌完全制裁了人工审核 DMCA 的团队,改为 AI 或者自动化脚本处理,因为作者收到的回复非常像模板话术。
+作者聊了聊他眼里,从 90 年代到现在的这 30 年里,web 开发都发生了什么。这篇文章有点长,但是值得去了解这段历史。
-source: [https://perishablepress.com/google-broke-my-heart/] [2026-01-24 Sat 15:04]
+我个人很羡慕从小就接触了计算机并去学习原理的人。我是疫情的时候才学习计算机相关的东西。当时我想要自己弄一个视觉小说游戏,接触了 OnScripter,后来想着反正闲着也是闲着,不如学习编程。当时入门学的是 C++,但是没有系统地学习,导致我基础没有打好就开始做「C-c C-v战士」了。
+让我意外的是,WordPress 居然在 03 年就诞生了。后面想了想也合理,它的底层是 PHP,能用上这东西的怎么说也是老资历了。我只用过一次 WordPress,是因为甲方要求我用这个。感觉刚会 Web 开发不久,对这种低代码平台很是嗤之以鼻——又慢又难用,实在是不够优雅。现在看来技术栈什么的真的没有那么重要,业务才是最重要的。就像是个人博客网站,重点是展示自己,也就是内容。不过技术栈也可以或多或少代表一个人的某些特质,还是不能把话说死了。
-=> https://perishablepress.com/google-broke-my-heart/ https://perishablepress.com/google-broke-my-heart/
+我了解过前端的历史,很多事情都要从那个手机开始说起——iPhone。智能手机的大众化让开发者不得不去考虑「如何让网站变成在移动设备上看也很正常」这个问题。答案是响应式设计。前端和后端就此正式分成了两派:你写你的 API,我渲染我的样式,我们不走同个道儿了~
+文章里提到了 MongoDB,并讲了这样的一个笑话:「初创公司会选择 MongoDB 因为他们会考虑到未来的百万用户,然后在用户只有几千人的情况下花费数年时间。」哦不,这说的根本就是我!
-# 心理与关系
+Agile 和 Scrum,我认为它们是有趣的东西。Scrum 可以在现在的许多企业里看到,至于 Agile,就不太一定了。我在某个项目里曾经提起过 Agile,主要是因为那会儿功能都没有约定好,你个破登录做了这么久做不好,不如直接开始折腾后面的部署,先把 MVP 展示出来。结果那个同事以很鄙夷的语气问道:「你想要搞敏捷开发?」虽然后面登录做好了,但是没有保护路由,所以登录不登录根本不重要。而他也因为不太懂部署和前后端之间的关系,折腾了很久才部署成功。
-## 世界没有你的时候也会继续运转
+作者写到 AI 时代的时候,这种事实的冲击依然让人难以接受:原本感觉无限丰富的市场,居然收得这么快速。初创公司貌似变多了,但是岗位一直在减少,大家挤破了头都想进一个岗位——靠更好看的简历、更有噱头的项目、更硬的人脉……
+=> https://www.artmann.co/articles/30-years-of-br-tags 原文
-艰难时期有着两个糟糕的部分:一是认为自己是唯一一个经历这一切的人;二是发现世界继续向前,而你停滞不前。
+### 我是肯尼亚人。我不像 ChatGPT 那样写作。ChatGPT 像我一样写作
-事实是,没有人会救我们。只有我们可以拯救自己——这听上去像是毒鸡汤,但确实如此。我们很小,是这个宇宙的无数尘埃之一,我们只能依靠自己。
+前几个月我因为「写出了学生不应该写出来的代码」而被质疑使用 AI,这种感受无疑是令人愤怒的,更不用提愚蠢的部门最终选择逃避了我的反质疑、继续将他们那害人的教学方式留给未来的学生们——哦对,我那个分数他们也没有给我,谁叫那个作业只占整体成绩的 2% 呢?实在是虚伪至极,还懒惰。
-source: [https://tala.bearblog.dev/what-do-you-do-when-life-keeps-going-on-without-you] [2026-01-09 Fri 23:13]
+我认为较为可悲的是这些「AI 警察」比谁都更要「AI 入脑」。他们已经默认了人类做不到一些事情,并认为自己所看到的就是世界的一切。
+我高三的时候因为 SAT 认真地钻研了一点点英语,并在大一的时候从教授那儿学习了更为专业的英语写作方式。如果完全使用这些方式来书写英语内容,恐怕也会被人以为是 AI 写的,但我写句子的时候很难不去想句子的完整性、比较时怎么写才是「公平」的、使用 furthermore 这样不知道为什么很戳我的连接词……我能怎么办呢?我就是这么被教的。
-=> https://tala.bearblog.dev/what-do-you-do-when-life-keeps-going-on-without-you https://tala.bearblog.dev/what-do-you-do-when-life-keeps-going-on-without-you
+大一暑假的时候,一位校友询问我我的现状,我回 enhance my xxx skills 却遭到其嘲笑:「你是 ChatGPT 吗?」ChatGPT 你个头喔。
+=> https://marcusolang.substack.com/p/im-kenyan-i-dont-write-like-chatgpt 原文
+### <time> 元素应该做点什么
-## 薄欲正在吞噬你的生活
+HTML 有一个 <time> 元素,使用方法如下:
-什么是薄欲?——在你满足了之后、并不会实质性去改变你的一种欲望。
-
-查看社交媒体而不是去交朋友、观看色情影片而不是寻找伴侣、使用生产力应用而没有真正生产出什么……这些在特定的情况下都是薄欲的一种。人们在不支付任何代价的情况下获得了短暂的快乐,又或者说其实他们已经支付了代价——不再长期快乐的代价。
-
-市面上多的是那些可以让人们快速满足的东西,但是它们没有解决任何事情,反而让一些本应该下降的指数提升了,比如孤独感。互联网让全世界的人们不可思议地联系在了一起,但是我们好像没有变得太快乐,焦虑和抑郁值一直在增长,没有停下来过。
-
-source: [https://www.joanwestenberg.com/thin-desires-are-eating-your-life/] [2026-01-12 Mon 18:38]
-
-
-=> https://www.joanwestenberg.com/thin-desires-are-eating-your-life/ https://www.joanwestenberg.com/thin-desires-are-eating-your-life/
-
-
-## 你并非职业倦怠,而是灵魂在闹饥荒
-
-作者 Neil Thanedar 认为大家有个误解:我们觉得累、不想上班是因为工作太辛苦,所以我们试图通过休息、度假、优化睡眠来解决。但他认为这些方法都没用,因为我们并非倦怠,而是在 _存在主义_ 方面上感到饥饿——我们的生活在物质上很富足,但在精神上很空虚。
-
-心理学家 Viktor Frankl 认为,人的主要驱动力不是快乐也不是权力,而是意义。当我们没有最高目标时,我们就会陷入存在主义真空,感觉生活停滞不前。
-
-借此,Thanedar 引用了 _马蹄铁理论_ 来解释压力:想象一个马蹄铁,它的左右两端虽然方向不同,但是是彼此的镜像。代入「压力」,马蹄铁的最左端意味着「压力太小」和「无聊」,最右端意味着「压力太大」 和「倦怠」,中间则意味着「良性压力」。
-
-这一理论本身如何我就不评价了,因为它原本是一个政治理论,但是它让我想起了初中读的《心流:最优体验心理学》,给我的印象十分深刻(虽然很抱歉没有读完)。
-
-简单来说,这本书的作者 Mihaly Csikszentmihalyi 认为人类的幸福并非静止的状态,也不是单纯感官享乐的堆积,而是一种通过全身心投入某件事而获得的「最优体验」。
-
-他提出了一个动态平衡:当外界赋予的任务挑战过高而个人技能不足时,人会感到焦虑;反之,当技能很高而挑战过低时,人会感到厌倦。 _心流_ 只存在于这两者之间。为了维持这种状态,个体必须不断提升技能以应对更高的挑战,或者寻找更难的任务来匹配已有的技能。
-
-因此,心流本质上是一种促进个体复杂性成长和自我进化的驱动力,它要求活动具备明确的目标、即时的内部反馈,以及技能与挑战的匹配。只要符合这些要点,大众常以为苦的流水线工人也可以进入心流状态。
-
-他也提到现代人感到空虚的原因往往在于过度追求被动的享乐,而缺乏主动创造乐趣的能力。书中有一句话让我印象最为深刻: *人要学会自娱自乐* 。这倒是让我想起 Aristotle 的一句话:
-
-> 离群索居者,不是野兽,便是神灵。
-
-Karl Marx 在他的《1844 年经济学哲学手稿》中提到了「异化劳动」这个概念。劳动本应是人类本质力量的自我确证,但在资本主义生产关系下,劳动发生了多重异化:
-
-* 你造出来的东西不归你,它变成了商品被拿走换钱;
-* 产品越完美,工人越贫穷;
-* 劳动不再是目的,而成了生存的手段;
-* 劳动变成了「外在的苦难」,人只有在不劳动时才觉得自在。
-
-当「钱」成为了唯一的衡量标准时,劳动的挑战性就不再是乐趣的来源,而是痛苦的来源,因为挑战意味着可能拿不到钱的风险。这会形成一个恶性循环:工作被剥夺了自反馈,人们为了防御痛苦选择「摆烂」,结果掉入了「无聊」的无底洞,不得不为了缓解无聊而转向高刺激的消费。
-
-室友有一套自己的理念,她认为人生的重点在于「热爱」。她看一个人的标准基本上就是看这个人是否有热爱,一个人为了自己的热爱而努力的姿态是最闪亮的。那些没有「热爱」的人,对她而言则不过是随波逐流的垃圾,是无聊的。
-
-自然,她的表述很是极端。不过她的一个问题我认为是只看到了空心人们的「果」,而没有看到「因」。社会已经被异化了许久,人们空虚的同时,只能依靠市场提供的奶头乐来刺激自己享乐。他们是系统性饥饿的受害者。
-
-source: [https://neilthanedar.com/youre-not-burnt-out-youre-existentially-starving/] [2026-01-21 Wed 22:30]
-
-
-=> https://neilthanedar.com/youre-not-burnt-out-youre-existentially-starving/ https://neilthanedar.com/youre-not-burnt-out-youre-existentially-starving/
-
-
-## 不要变成机器
-
-> 只有奴隶才通过生产力来衡量自己的存在。
-
-作者讲到了奋斗文化(Hustle Culture),简单来说可以认为是一群人在表演自己很奋斗:炫耀加班时长、用古怪的方式工作……一个很好的观察场地是 LinkedIn(领英)。
-
-大家迷恋于自己可量化的一面,却忽略了真正重要的产出,并用自己的「生产力」来证明自己的价值,已经和机器无异。
-
-作者认为成功的策略应该是不追求线性和盲目的苦干,而是发挥人的优势——适应性和策略性。
-
-source: [https://armeet.bearblog.dev/becoming-the-machine/] [2026-01-22 Thu 01:53]
-
-
-=> https://armeet.bearblog.dev/becoming-the-machine/ https://armeet.bearblog.dev/becoming-the-machine/
-
-
-## 在咖啡馆独处的不能承受之乐
-
-标题中的 /Unbearable Joy/ 引用了 /The Unbearable Lightness of Being/ ,即《生命中不能承受之轻》这本名著,我在翻译中保留了这一点。
-
-我是建议阅读原文,因此不对这篇文章编写总结,只说我的想法。
-
-不知何时,我再也 [em:不独自出去] 了。初中的时候我因为被同学孤立,会每周走半小时的路去图书馆借书。那时候或许是我人生中可以算是「厉害」的阶段:绘画上对自己无比满意、每周都会阅读五本书、成绩还算不错,就是人际关系上有些糟糕,无论是和家庭还是和同龄人。
-
-然后从一个时间点开始,我不再那么做了。我不读书了,我不出门了,我不画画了。到底是什么时候呢?我也说不上来。
-
-现在我几乎是除了和人有约外,就只会因为打工而出门。我在家里待了太久,却没有出门的欲望。我对外面有着一种恐惧:我可能会被流浪汉纠缠、可能会被跟踪、可能会被杀……这些自然都是我的被害妄想。不过出门确实对我来说变成了一种团体活动,但不会有人永远都带着我出门。
-
-这个月我产生了许多幻想。说是幻想是因为我实际上没有精力去实现它们,意味着在我的脑海里它们的优先级并不高。我看到一位博客站主购买了相机,对他路上拍的照片感觉羡慕,因此评论表示自己也想要购买一个、出门拍着玩。对方的回应是这种事想了就要立即去做。我心想说得对,但也没有动身子——「相机好贵,我想要在二手市场淘一个。二手卖家的家好远,我不想去。我不是还有工作要做吗?这件事就放一放吧。」
-
-如果我没有记错的话,我的那个评论是在月初发的,而现在你看到的这个内容是月底写的。
-
-我从很久之前就幻想过我可以再去图书馆,但是我的脑海里也产生了许多阻力:「那家图书馆我没有实体卡,我要去办吗?好像我有虚拟卡,但是我懒得查……」
-
-懒,懒, *懒* !
-
-我又不是不知道如果那么做了我会很开心,但我就是没有那么做。
-
-虽然我很讨厌打工,但是它对我来说有一些好处:不是特别忙的时候,我可以观察顾客们。例如每周六早上都会进来一个老头,戴着帽子系着围巾牵着条狗,他每次都会点一杯热的金橘柠檬茶,坐着慢慢喝。这期间他什么都不会坐,只是坐着。如果有其他顾客过来和他的狗互动,他会笑着说你要摸摸它吗。
-
-纽约市是一个快节奏的城市,对比美国的其他地方。我很意外我会在这样的地方看到人们慢节奏地生活,毕竟很多顾客取走饮品后就会立即离开,其中的一部分人干脆是在等车的五分钟内进来买东西,公交车快到的时候还会催我们。能悠哉坐在这里很久的群体,除了身为成人的「怪人」外,就只有学生了。
-
-说到学生,我有时能遇到非常可爱的小学生或者初中生。这里的「可爱」并非指的是外观,而是他们的思维和行为。他们会带着一本厚重的书读,说话有礼貌也很安静,这种小孩子会让人打心里觉得「真不错」,对比一些烦得要死的熊孩子们。
-
-source: [https://candost.blog/the-unbearable-joy-of-sitting-alone-in-a-cafe/] [2026-01-24 Sat 11:58]
-
-
-=> em:%E4%B8%8D%E7%8B%AC%E8%87%AA%E5%87%BA%E5%8E%BB em:不独自出去
-=> https://candost.blog/the-unbearable-joy-of-sitting-alone-in-a-cafe/ https://candost.blog/the-unbearable-joy-of-sitting-alone-in-a-cafe/
-
-
-# 科学与自然
-
-
-# 技术与创造
-
-## GitHub 的垄断是如何正在摧毁开源生态系统的
-
-GitHub 近期一直都有问题,倒不如说从微软接手了之后,GitHub 再也不是我们心里的开源社区代表之一了。
-
-作者想要知道他的学生的报告里,有多少是和被托管在 GitHub 上的项目有关,结果是只有 238 之 7 个是和 GitHub 无关的,而这里有 6 个人是忘了添加代码库的 URL,实际上使用的代码库依然被托管在 GitHub 上。
-
-作者认为,GitHub 的替代方案有很多:
-
-* GitLab
-* Codeberg
-* Forgejo
-* Sourcehut
-* Fossil
-* Mercurial
-* Radicle
-
-他告诉学生们要去看看 GitHub 以外的内容,但是这 238 个人里,只有 1 个人那么做了。
-
-为什么一定要去看看 GitHub 以外的内容呢?这就要说到 _集权化_ 。当所有数据都放在一个服务上,最大的危险便是失去对它们的访问权限。
-
-谷歌账户就是一个很好的例子:你有一部基于谷歌的手机,你可以登录你的谷歌账户、用谷歌邮箱注册其他网站的账户,并且简单地用手机作为 Passkey 源。一切都太方便了!
-
-但如果你的手机坏了,或者你的谷歌账户登不上手机了,你再去登录其他网站就会变得很麻烦,因为你除了这个手机外,没有其他「可以证明你是你」的证据。而谷歌决定抽风、让「你」消失。
-
-同样的例子也可以用在其他服务上,苹果是如此,微软也是如此。
-
-对于 GitHub 来说,我认为问题更为复杂一些。GitHub 被社区的人们描述得太像一个 /Only One/ 了——大家都在使用它:找项目使用它,贡献使用它,托管私密代码使用它……好像除了 GitHub 之外,其他选择都是「看不见摸不着」,或者说「不入流」。
-
-我也考虑了一下我的情况。我许多时候代码都会优先放在 GitHub 上,它变得像一个云盘,尽管它不是,并且有可能把我的代码都弄没。不过企业相关的代码,我会放在 BitBucket 上,毕竟它是为了企业而生的。这样说来,我对开源的看法,很有可能就是被局限在 GitHub 的一亩土地里。
-
-source: [https://ploum.net/2026-01-05-unteaching_github.html] [2026-01-09 Fri 16:43]
-
-
-=> https://ploum.net/2026-01-05-unteaching_github.html https://ploum.net/2026-01-05-unteaching_github.html
-
-
-## Bear vs Pika vs Write.as
-
-作者比较了三个写作平台:Write\.as、Pika.Page 以及 Bear Blog。
-
-我从未接触过这些写作平台。过去,我以为你要写博客只能是自己构建、部署一个。直到最近我才知道,其实互联网早就有了这样的平台,可以帮助你构建网页样式,你只需要写……还有选择域名?应该吧。
-
-source: [https://commentingon.xyz/bear-vs-pika-vs-writeas] [2026-01-09 Fri 23:08]
-
-
-=> https://commentingon.xyz/bear-vs-pika-vs-writeas https://commentingon.xyz/bear-vs-pika-vs-writeas
-
-
-## br 标签的三十年
-
-作者聊了聊他眼里,从 90 年代到现在的这 30 年里,web 开发都发生了什么。这篇文章有点长,但是值得去了解这段历史。
-
-我个人很羡慕从小就接触了计算机并去学习原理的人。我是疫情的时候才学习计算机相关的东西。当时我想要自己弄一个视觉小说游戏,接触了 OnScripter,后来想着反正闲着也是闲着,不如学习编程。当时入门学的是 C++,但是没有系统地学习,导致我基础没有打好就开始做「C-c C-v战士」了。
-
-让我意外的是,WordPress 居然在 03 年就诞生了。后面想了想也合理,它的底层是 PHP,能用上这东西的怎么说也是老资历了。我只用过一次 WordPress,是因为甲方要求我用这个。感觉刚会 Web 开发不久,对这种低代码平台很是嗤之以鼻——又慢又难用,实在是不够优雅。现在看来技术栈什么的真的没有那么重要,业务才是最重要的。就像是个人博客网站,重点是展示自己,也就是内容。不过技术栈也可以或多或少代表一个人的某些特质,还是不能把话说死了。
-
-我了解过前端的历史,很多事情都要从那个手机开始说起——iPhone。智能手机的大众化让开发者不得不去考虑「如何让网站变成在移动设备上看也很正常」这个问题。答案是响应式设计。前端和后端就此正式分成了两派:你写你的 API,我渲染我的样式,我们不走同个道儿了~
-
-文章里提到了 MongoDB,并讲了这样的一个笑话:「初创公司会选择 MongoDB 因为他们会考虑到未来的百万用户,然后在用户只有几千人的情况下花费数年时间。」哦不,这说的根本就是我!
-
-Agile 和 Scrum,我认为它们是有趣的东西。Scrum 可以在现在的许多企业里看到,至于 Agile,就不太一定了。我在某个项目里曾经提起过 Agile,主要是因为那会儿功能都没有约定好,你个破登录做了这么久做不好,不如直接开始折腾后面的部署,先把 MVP 展示出来。结果那个同事以很鄙夷的语气问道:「你想要搞敏捷开发?」虽然后面登录做好了,但是没有保护路由,所以登录不登录根本不重要。而他也因为不太懂部署和前后端之间的关系,折腾了很久才部署成功。
-
-作者写到 AI 时代的时候,这种事实的冲击依然让人难以接受:原本感觉无限丰富的市场,居然收得这么快速。初创公司貌似变多了,但是岗位一直在减少,大家挤破了头都想进一个岗位——靠更好看的简历、更有噱头的项目、更硬的人脉……
-
-source: [https://www.artmann.co/articles/30-years-of-br-tags] [2026-01-09 Fri 23:11]
-
-
-=> https://www.artmann.co/articles/30-years-of-br-tags https://www.artmann.co/articles/30-years-of-br-tags
-
-
-## 我是肯尼亚人。我不像 ChatGPT 那样写作。ChatGPT 像我一样写作
-
-前几个月我因为「写出了学生不应该写出来的代码」而被质疑使用 AI,这种感受无疑是令人愤怒的,更不用提愚蠢的部门最终选择逃避了我的反质疑、继续将他们那害人的教学方式留给未来的学生们——哦对,我那个分数他们也没有给我,谁叫那个作业只占整体成绩的 2% 呢?实在是虚伪至极,还懒惰。
-
-我认为较为可悲的是这些「AI 警察」比谁都更要「AI 入脑」。他们已经默认了人类做不到一些事情,并认为自己所看到的就是世界的一切。
-
-我高三的时候因为 SAT 认真地钻研了一点点英语,并在大一的时候从教授那儿学习了更为专业的英语写作方式。如果完全使用这些方式来书写英语内容,恐怕也会被人以为是 AI 写的,但我写句子的时候很难不去想句子的完整性、比较时怎么写才是「公平」的、使用 /furthermore/ 这样不知道为什么很戳我的连接词……我能怎么办呢?我就是这么被教的。
-
-大一暑假的时候,一位校友询问我我的现状,我回 /enhance my xxx skills/ 却遭到其嘲笑:「你是 ChatGPT 吗?」ChatGPT 你个头喔。
-
-source: [https://marcusolang.substack.com/p/im-kenyan-i-dont-write-like-chatgpt] [2026-01-12 Mon 17:52]
-
-
-=> https://marcusolang.substack.com/p/im-kenyan-i-dont-write-like-chatgpt https://marcusolang.substack.com/p/im-kenyan-i-dont-write-like-chatgpt
-
-
-## `<time>' 元素应该做点什么
-
-HTML 有一个 `<time>' 元素,使用方法如下:
-
-```
+```html
<time datetime="2026-01-01T00:00:00.000Z">
刚刚
</time>
```
-我的博客里就有使用它。
-
-作者发现 `<time>' 元素明明是语义上可以精确表达时间戳的方式,但是其实际上的使用率低到不可思议——根据 Chrome 浏览器所说,只有 8% 的页面会加载使用它。
-
-source: [https://nolanlawson.com/2025/12/14/the-time-element-should-actually-do-something/] [2026-01-12 Mon 18:28]
-
-
-=> https://nolanlawson.com/2025/12/14/the-time-element-should-actually-do-something/ https://nolanlawson.com/2025/12/14/the-time-element-should-actually-do-something/
-
-
-## 我在地铁上编程
-
-我干过一样的事情,也是在纽约市的地铁上。唯一的区别是,我不只是在地铁上这么做,我还在巴士和渡轮上都这么做了。不过我很快就放弃了——因为我晕车。
-
-我的目的和作者一样:纽约市内的每日通勤实在是让人忍受不了。当时的我需要每天在史泰登岛上坐半小时的巴士到东北边的码头、坐半小时的渡轮到曼哈顿西南边的码头(如果错过了渡轮还需要再等半小时),最后坐半小时的地铁才能到达我的目的地;晚上的时候再以反过来的方法坐回家。这意味着我每天至少要浪费三个小时在通勤上!
-
-因为刚刚接触到编程的美妙没多久,我巴不得每天泡在电脑上,可惜高中里的许多课禁止我使用电脑(更多是我活该)……这自然而然让我产生了「为什么不利用起通勤时间」的想法。
-
-实话实说,在交通工具上编程的感受很奇怪,至少对于过去的我来看是这样的——你成为了这个封闭空间里唯一一个在「积极上进」的人。我会不自觉地开始想:「其他人会如何看待我?上次我在车里写作业,对面就坐着一个人盯着我看——他们觉得我是一个做作的人吗?」这当然也只是我的「被害妄想症」在发作。实际上,纽约市里还有精力去管别人的人依然是少数派中的少数派。
-
-source: [https://www.scd31.com/posts/programming-on-the-subway] [2026-01-13 Tue 20:32]
-
-
-=> https://www.scd31.com/posts/programming-on-the-subway https://www.scd31.com/posts/programming-on-the-subway
-
-
-## 这不是未来
-
-文章的开头又让我想起了上个学期的那节计算机课。太棒了,我喜欢生活的一部分因为不同的事情而联系在一起:我又多了一个攻击部门的理由。
-
-「披露 AI 使用」这个规则实在是太奇怪了,让我无法理解其中的含义。是觉得学生反正都要使用 AI,所以干脆任由他们那么做吗?还是教授自身水平跟不上课程内容(例如我那个不懂 HTML 的教授居然还要让我们做和 HTML 相关的作业),用 AI 当作遮羞布?
-
-回到文章本身,我们需要明白有时候使用最新技术并不代表先进,这世上就没有什么技术是不可避免的;Off-grid 人群在这个星球上依然生活得很好。有时候阅读 Hacker News 的评论区我发现,这世上因为自主意识而选择不持有手机的人并不少,而手机是一个大家都认为必须存在于自己人生中的一个东西。
-
-source: [https://blog.mathieui.net/this-is-not-the-future.html] [2026-01-13 Tue 21:38]
-
-
-=> https://blog.mathieui.net/this-is-not-the-future.html https://blog.mathieui.net/this-is-not-the-future.html
-
-
-## Times New Roman 简史
-
-我不喜欢 Times New Roman。我很难描述这种感受,总之我不喜欢它,我也讨厌教授们要求我们使用这个字体。它说是「专业」和「权威」的代表,但了解到它的历史后,发现它不过是为了在报纸上的每一行里塞更多的字而设计出来的。
-
-source: [https://typographyforlawyers.com/a-brief-history-of-times-new-roman.html] [2026-01-13 Tue 21:54]
-
-
-=> https://typographyforlawyers.com/a-brief-history-of-times-new-roman.html https://typographyforlawyers.com/a-brief-history-of-times-new-roman.html
-
-
-## 解决问题的三种方法
-
-作者认为,如果将「问题」定义为「感知到的现状」与「期望的状态」之间的落差,那么解决问题的路径就不止一条,而是存在三个逻辑上的变量可供调整:
-
-* 改变世界以符合期望,也就是我们通常理解的努力工作去解决具体困难,将现状拉高到理想的标准;
-* 重新审视现状,改变对现状的看法;
-* 降低自己的期望。
-
-室友是一位有时候理性到让人觉得有些冷漠的人,她曾经提出了一套适用于自己的人际关系法:她认为人际关系上的痛苦都来源于「期待」。很多时候对对方的期待过高,会想要将对方的「价值」或行为提升到自己期望的水平,但这往往会导致双方都很痛苦。这时候想要维持这段关系,就只能调整自己的期望:对方不是好朋友、不是朋友、不是校友、不是熟人……
-
-但是人毕竟是人,人是不擅长量化机会成本的,也难以对那些情感强烈的人说「不」。这套方法真的成功了吗?我不见得。我只看到一段本应该断掉、却因为其中一方一直在降低期望而侥幸存活下来的关系。
-
-source: [https://andreasfragner.com/writing/three-ways-to-solve-problems] [2026-01-21 Wed 21:52]
-
-
-=> https://andreasfragner.com/writing/three-ways-to-solve-problems https://andreasfragner.com/writing/three-ways-to-solve-problems
-
-
-## 我无法升级到 Windows 11,现在请别烦我了
-
-我和作者一样,有着一台性能不错但是因为不支持 Windows 11 的电脑。我也遇到了和作者一样的问题,时不时会收到更新到 Windows 11 的提醒,尽管这个电脑想更新也更新不了。
-
-Windows 10 的「逝去」让许多人意识到 Windows 已经不是过去的 Windows,这也包括我在内。这个月我重新翻出了自己的笔记本电脑,用于新学期的学习。因为之前就想要试试看脱离 Windows 系统,以及学习使用 Emacs,所以给这个电脑安装了 Linux 发行版。我下的是 EndeavourOS+i3WM,原本担心自己会不习惯快捷键等操作,实际用下来意外顺手。
-
-source: [https://idiallo.com/byte-size/cant-update-to-windows-11-leave-me-alone] [2026-01-22 Thu 00:58]
+我的博客里就有使用它。
+作者发现 <time> 元素明明是语义上可以精确表达时间戳的方式,但是其实际上的使用率低到不可思议——根据 Chrome 浏览器所说,只有 8% 的页面会加载使用它。
+=> https://nolanlawson.com/2025/12/14/the-time-element-should-actually-do-something/ 原文
-=> https://idiallo.com/byte-size/cant-update-to-windows-11-leave-me-alone https://idiallo.com/byte-size/cant-update-to-windows-11-leave-me-alone
+### 我在地铁上编程
+我干过一样的事情,也是在纽约市的地铁上。唯一的区别是,我不只是在地铁上这么做,我还在巴士和渡轮上都这么做了。不过我很快就放弃了——因为我晕车。
-## 一百万个(独立网络)截图
+我的目的和作者一样:纽约市内的每日通勤实在是让人忍受不了。当时的我需要每天在史泰登岛上坐半小时的巴士到东北边的码头、坐半小时的渡轮到曼哈顿西南边的码头(如果错过了渡轮还需要再等半小时),最后坐半小时的地铁才能到达我的目的地;晚上的时候再以反过来的方法坐回家。这意味着我每天至少要浪费三个小时在通勤上!
-作者看到了一个叫 [onemillionscreenshots.com] 的网站,觉得这种看图选网站的交互方式很棒。
+因为刚刚接触到编程的美妙没多久,我巴不得每天泡在电脑上,可惜高中里的许多课禁止我使用电脑(更多是我活该)……这自然而然让我产生了「为什么不利用起通勤时间」的想法。
-但是该网站抓取的都是最热门的网站,充满了广告和 SEO 垃圾,没点儿营养。他想要挖掘独立网络,也就是个人博客、非盈利项目,虽然不流行,但内容真诚、有设计感。
+实话实说,在交通工具上编程的感受很奇怪,至少对于过去的我来看是这样的——你成为了这个封闭空间里唯一一个在「积极上进」的人。我会不自觉地开始想:「其他人会如何看待我?上次我在车里写作业,对面就坐着一个人盯着我看——他们觉得我是一个做作的人吗?」这当然也只是我的「被害妄想症」在发作。实际上,纽约市里还有精力去管别人的人依然是少数派中的少数派。
+=> https://www.scd31.com/posts/programming-on-the-subway 原文
-因此,他决定复刻那个看图网站,但把数据源换成这些小众网站。
+### 这不是未来
-关于作者的技术实现,我就看不懂了。但是你可以访问 [这个网址] 来看看效果,很酷炫的。
+文章的开头又让我想起了上个学期的那节计算机课。太棒了,我喜欢生活的一部分因为不同的事情而联系在一起:我又多了一个攻击部门的理由。
-source: [https://nry.me/posts/2025-10-09/small-web-screenshots/] [2026-01-22 Thu 01:34]
+「披露 AI 使用」这个规则实在是太奇怪了,让我无法理解其中的含义。是觉得学生反正都要使用 AI,所以干脆任由他们那么做吗?还是教授自身水平跟不上课程内容(例如我那个不懂 HTML 的教授居然还要让我们做和 HTML 相关的作业),用 AI 当作遮羞布?
+回到文章本身,我们需要明白有时候使用最新技术并不代表先进,这世上就没有什么技术是不可避免的;Off-grid 人群在这个星球上依然生活得很好。有时候阅读 Hacker News 的评论区我发现,这世上因为自主意识而选择不持有手机的人并不少,而手机是一个大家都认为必须存在于自己人生中的一个东西。
+=> https://blog.mathieui.net/this-is-not-the-future.html 原文
-=> https://onemillionscreenshots.com onemillionscreenshots.com
-=> https://screenshots.nry.me 这个网址
-=> https://nry.me/posts/2025-10-09/small-web-screenshots/ https://nry.me/posts/2025-10-09/small-web-screenshots/
+### Times New Roman 简史
+我不喜欢 Times New Roman。我很难描述这种感受,总之我不喜欢它,我也讨厌教授们要求我们使用这个字体。它说是「专业」和「权威」的代表,但了解到它的历史后,发现它不过是为了在报纸上的每一行里塞更多的字而设计出来的。
+=> https://typographyforlawyers.com/a-brief-history-of-times-new-roman.html 原文
-## 我是如何离开 YouTube 的
+### 解决问题的三种方法
-这篇文章我最为惊讶的是谷歌的内部构成。
+作者认为,如果将「问题」定义为「感知到的现状」与「期望的状态」之间的落差,那么解决问题的路径就不止一条,而是存在三个逻辑上的变量可供调整:
-过去我阅读过《重新定义公司:谷歌是如何运营的》这本书,书中对于早期的谷歌的描写,与本篇文章所描写的现实中的官僚主义有着巨大的割裂。
+1. 改变世界以符合期望,也就是我们通常理解的努力工作去解决具体困难,将现状拉高到理想的标准;
+2. 重新审视现状,改变对现状的看法;
+3. 降低自己的期望。
-例如书中提到员工可以跨级汇报、只看能力而不看头衔。但对于现在拥有近十几万员工的谷歌,为了维持秩序,「层级化」这个书中曾多少有些唾弃的东西不得不成了管理上的必需品。
+室友是一位有时候理性到让人觉得有些冷漠的人,她曾经提出了一套适用于自己的人际关系法:她认为人际关系上的痛苦都来源于「期待」。很多时候对对方的期待过高,会想要将对方的「价值」或行为提升到自己期望的水平,但这往往会导致双方都很痛苦。这时候想要维持这段关系,就只能调整自己的期望:对方不是好朋友、不是朋友、不是校友、不是熟人……
-上个月我引用了 [一篇文章],表示所谓「优秀的工程管理」不过是一种时尚,同个工程管理在不同的场景下有着截然不同的效果。但看到谷歌这样在 2014 年就提出扁平化的企业,到现在却变得和它曾经厌恶的「传统企业」一样,心中依然颇不是滋味儿(虽说我认为《重新定义公司:谷歌是如何运营的》并没有全面否定「传统企业」管理的价值,但是仍然可以感觉出作者对它的不满)。
+但是人毕竟是人,人是不擅长量化机会成本的,也难以对那些情感强烈的人说「不」。这套方法真的成功了吗?我不见得。我只看到一段本应该断掉、却因为其中一方一直在降低期望而侥幸存活下来的关系。
+=> https://andreasfragner.com/writing/three-ways-to-solve-problems 原文
-扁平化真的是一个先进的管理哲学么?实际上并不见得。就和《「优秀的工程管理」是一种时尚》的作者所说的那样,这些东西只能根据当下的环境来评估。过去谷歌提出扁平化,是因为为了留住「创意精英」们,利润也足够丰富,公司容得下大量的冗余和低效。现在的大量公司所采用的扁平化,本质上是结构上的大裁员,砍掉中间管理层、减少汇报层级,强调人效比。
+### 我无法升级到 Windows 11,现在请别烦我了
-而现在的谷歌,其内部人数过大,为了避免信息的拥堵和决策瘫痪,采用严格的级别制度是必然的。「好管理」是适应环境的产物,根本就没有什么管理是客观而言优秀的。
+我和作者一样,有着一台性能不错但是因为不支持 Windows 11 的电脑。我也遇到了和作者一样的问题,时不时会收到更新到 Windows 11 的提醒,尽管这个电脑想更新也更新不了。
-但是对于仍然想要创新的人们,离开这种大公司才是最好的选择。
+Windows 10 的「逝去」让许多人意识到 Windows 已经不是过去的 Windows,这也包括我在内。这个月我重新翻出了自己的笔记本电脑,用于新学期的学习。因为之前就想要试试看脱离 Windows 系统,以及学习使用 Emacs,所以给这个电脑安装了 Linux 发行版。我下的是 EndeavourOS+i3WM,原本担心自己会不习惯快捷键等操作,实际用下来意外顺手。
+=> https://idiallo.com/byte-size/cant-update-to-windows-11-leave-me-alone 原文
-source: [https://zhach.news/how-i-left-youtube/] [2026-01-22 Thu 02:18]
+### 一百万个(独立网络)截图
+作者看到了一个叫 onemillionscreenshots.com 的网站,觉得这种看图选网站的交互方式很棒。
-=> /posts/b211#%E4%BC%98%E7%A7%80%E7%9A%84%E5%B7%A5%E7%A8%8B%E7%AE%A1%E7%90%86%E6%98%AF%E4%B8%80%E7%A7%8D%E6%97%B6%E5%B0%9A 一篇文章
-=> https://zhach.news/how-i-left-youtube/ https://zhach.news/how-i-left-youtube/
+但是该网站抓取的都是最热门的网站,充满了广告和 SEO 垃圾,没点儿营养。他想要挖掘独立网络,也就是个人博客、非盈利项目,虽然不流行,但内容真诚、有设计感。
+因此,他决定复刻那个看图网站,但把数据源换成这些小众网站。
-## Pixelfed 正在锯着 Fediverse 坐着的树枝吗?
+关于作者的技术实现,我就看不懂了。但是你可以访问 这个网址 来看看效果,很酷炫的。
+=> https://nry.me/posts/2025-10-09/small-web-screenshots/ 原文
+=> https://onemillionscreenshots.com onemillionscreenshots.com
+=> https://screenshots.nry.me 这个网址
-我接触 Fediverse(联邦宇宙)没多久,所以对这整个概念并不熟悉。
+### 我是如何离开 YouTube 的
-作者认为,Pixelfed 的问题在于,它的设计旨在模仿 Instagram,刻意地移除了不显示图片的文字。这导致 Pixelfed 用户以为自己关注了某人,却看不到对方的大部分消息。同样的,被关注的 Mastodon 用户会以为 Pixelfed 用户收到了自己的消息,因为后者关注了自己。
+这篇文章我最为惊讶的是谷歌的内部构成。
-这就导致了另一件事:人们变得倾向于使用 Mastodon 账号来关注 Mastodon,创建 Pixelfed 账号来关注 Pixelfed。这也让 ActivityPub 协议变成了一个笑话——它的承诺是只需要一个账号就能关注宇宙里的所有人。
+过去我阅读过《重新定义公司:谷歌是如何运营的》这本书,书中对于早期的谷歌的描写,与本篇文章所描写的现实中的官僚主义有着巨大的割裂。
-Pixelfed 作为一个 ActivityPub 客户端,理论上应该处理所有接收到的 Activity。它完全可以将纯文字内容渲染成一个文字卡片,例如 Instagram 的文字快拍模式,或者给纯文字内容一个单独的动态流入口。但是它选择直接不显示,让 Fediverse 的意义大打折扣。
+例如书中提到员工可以跨级汇报、只看能力而不看头衔。但对于现在拥有近十几万员工的谷歌,为了维持秩序,「层级化」这个书中曾多少有些唾弃的东西不得不成了管理上的必需品。
-source: [https://ploum.net/2025-12-04-pixelfed-against-fediverse.html] [2026-01-22 Thu 11:05]
+上个月我引用了 一篇文章,表示所谓「优秀的工程管理」不过是一种时尚,同个工程管理在不同的场景下有着截然不同的效果。但看到谷歌这样在 2014 年就提出扁平化的企业,到现在却变得和它曾经厌恶的「传统企业」一样,心中依然颇不是滋味儿(虽说我认为《重新定义公司:谷歌是如何运营的》并没有全面否定「传统企业」管理的价值,但是仍然可以感觉出作者对它的不满)。
+扁平化真的是一个先进的管理哲学么?实际上并不见得。就和《「优秀的工程管理」是一种时尚》的作者所说的那样,这些东西只能根据当下的环境来评估。过去谷歌提出扁平化,是因为为了留住「创意精英」们,利润也足够丰富,公司容得下大量的冗余和低效。现在的大量公司所采用的扁平化,本质上是结构上的大裁员,砍掉中间管理层、减少汇报层级,强调人效比。
-=> https://ploum.net/2025-12-04-pixelfed-against-fediverse.html https://ploum.net/2025-12-04-pixelfed-against-fediverse.html
+而现在的谷歌,其内部人数过大,为了避免信息的拥堵和决策瘫痪,采用严格的级别制度是必然的。「好管理」是适应环境的产物,根本就没有什么管理是客观而言优秀的。
+但是对于仍然想要创新的人们,离开这种大公司才是最好的选择。
+=> https://zhach.news/how-i-left-youtube/ 原文
-## 我们是如何为了娱乐而弄丢了交流的
+### Pixelfed 正在锯着 Fediverse 坐着的树枝吗?
-上一篇文章引发了激烈的讨论,让作者意识到自己和 Pixelfed 的支持者生活在两个完全不同的世界:
+我接触 Fediverse(联邦宇宙)没多久,所以对这整个概念并不熟悉。
-* 作者认为 ActivityPub 是人与人之间的通讯协议,因此「不丢失信息」是底线;
-* Pixelfed 的支持者则认为 ActivityPub 是内容消费协议,是用于娱乐的。他们习惯根据想看什么内容来切换账号。
+作者认为,Pixelfed 的问题在于,它的设计旨在模仿 Instagram,刻意地移除了不显示图片的文字。这导致 Pixelfed 用户以为自己关注了某人,却看不到对方的大部分消息。同样的,被关注的 Mastodon 用户会以为 Pixelfed 用户收到了自己的消息,因为后者关注了自己。
-作者认为,真正的互操作性并不需要用户注册多个账户。现在这种「看图去 Pixelfed,看字去 Mastodon」的思维根本就是被大公司洗脑后的产物,让人以为一个平台必须有一个账号。
+这就导致了另一件事:人们变得倾向于使用 Mastodon 账号来关注 Mastodon,创建 Pixelfed 账号来关注 Pixelfed。这也让 ActivityPub 协议变成了一个笑话——它的承诺是只需要一个账号就能关注宇宙里的所有人。
-然而作者又发现,ActivityPub 的官方定义里明确写了 Fediverse 是为了投递内容,而非成为通讯网络。也就是说,这些社交网络从来都不是为了交流,本质上是把内容创作外包给用户、填满用户的时间—— /ActivityPub 和 Fediverse 可能正在重蹈 Web2 的覆辙/ !
+Pixelfed 作为一个 ActivityPub 客户端,理论上应该处理所有接收到的 Activity。它完全可以将纯文字内容渲染成一个文字卡片,例如 Instagram 的文字快拍模式,或者给纯文字内容一个单独的动态流入口。但是它选择直接不显示,让 Fediverse 的意义大打折扣。
+=> https://ploum.net/2025-12-04-pixelfed-against-fediverse.html 原文
-如果将 Fediverse 应用视为通讯网络的话,那么用户就不应该不担心信息的丢失。但它是社交媒体,所以丢失信息根本不算什么,因为算法平台没少这么干过。而这也可以解释为什么即时通讯是主流的沟通方式,因为用户并不信任对方收到了自己的消息。
+### 我们是如何为了娱乐而弄丢了交流的
-什么是真正的通信方式?电子邮件。它可靠、异步、去中心化、标准化,还可以使用我们自己的工具来离线管理。它使用起来很麻烦,还需要主动维护,但这让我们保持了主动性,而不是像社交媒体那样让我们被动地躺在算法里。
+上一篇文章引发了激烈的讨论,让作者意识到自己和 Pixelfed 的支持者生活在两个完全不同的世界:
-作者也认为真正的通信协议是无聊的,因为它们没有算法让我们上瘾,设计出来的目的也不是为了刺激我们的大脑。也正因为如此,它们的利润不高,自然而然也不会被大肆宣传。
+* 作者认为 ActivityPub 是人与人之间的通讯协议,因此「不丢失信息」是底线;
+* Pixelfed 的支持者则认为 ActivityPub 是内容消费协议,是用于娱乐的。他们习惯根据想看什么内容来切换账号。
-我使用 Mastodon 是为了自己方便、不想要把自己的日记放在谷歌的产品下而已,也就是说最开始我就不指望使用 Mastodon 来和其他人沟通。Mastodon 或许更像是微博客平台。
+作者认为,真正的互操作性并不需要用户注册多个账户。现在这种「看图去 Pixelfed,看字去 Mastodon」的思维根本就是被大公司洗脑后的产物,让人以为一个平台必须有一个账号。
-不过之后我确实将其当作社交媒体来看待了。虽然我已经很克制自己不去使用社交媒体(事实上我还保留着 Instagram、脸谱网和推特的账号,用于关注一些我想要关注的人们),但是这个月使用 Mastodon 的频率明显高上很多。
+然而作者又发现,ActivityPub 的官方定义里明确写了 Fediverse 是为了投递内容,而非成为通讯网络。也就是说,这些社交网络从来都不是为了交流,本质上是把内容创作外包给用户、填满用户的时间—— ActivityPub 和 Fediverse 可能正在重蹈 Web2 的覆辙 !
-不过原因并非我一直在刷,而是我沉迷于微博客那样的碎片化的表达。人类的思维本就是碎片化的,微博客其实要比博客更符合人类大脑的自然运作模式。我不想要去争论哪个更好,这(或许)会引起一场无意义的战争。总之大家只要有产出即可,我是这么想的。总之我并不赞同使用 Fediverse 应用就等同于在使用大公司社交媒体这一观点。
+如果将 Fediverse 应用视为通讯网络的话,那么用户就不应该不担心信息的丢失。但它是社交媒体,所以丢失信息根本不算什么,因为算法平台没少这么干过。而这也可以解释为什么即时通讯是主流的沟通方式,因为用户并不信任对方收到了自己的消息。
-作者对 Fediverse 的批评有一定的可取之处,但并非客观上的真理。既然 ActivityPub 协议本就是为了传递内容而生,那我认为不应该因为一件它原没有打算去做的事情而说它。
+什么是真正的通信方式?电子邮件。它可靠、异步、去中心化、标准化,还可以使用我们自己的工具来离线管理。它使用起来很麻烦,还需要主动维护,但这让我们保持了主动性,而不是像社交媒体那样让我们被动地躺在算法里。
-最后说一下作者在文章中提到的一些我不知道的技术:Gemini 协议和离线浏览器。
+作者也认为真正的通信协议是无聊的,因为它们没有算法让我们上瘾,设计出来的目的也不是为了刺激我们的大脑。也正因为如此,它们的利润不高,自然而然也不会被大肆宣传。
-Gemini 协议具有着极致的极简,不支持图片嵌入、脚本、iframe、复杂的样式,只支持文字和链接。
+我使用 Mastodon 是为了自己方便、不想要把自己的日记放在谷歌的产品下而已,也就是说最开始我就不指望使用 Mastodon 来和其他人沟通。Mastodon 或许更像是微博客平台。
-而离线浏览器作者推荐的是 Offpunk,也是他自己用 Python 写的命令行浏览器。现代浏览器的工作方式是点击、等待加载和阅读,而离线浏览器更像是 RSS 阅读器和电子邮件客户端,它会自动将内容全部下载到本地,这样你只需要阅读本地缓存即可。
+不过之后我确实将其当作社交媒体来看待了。虽然我已经很克制自己不去使用社交媒体(事实上我还保留着 Instagram、脸谱网和推特的账号,用于关注一些我想要关注的人们),但是这个月使用 Mastodon 的频率明显高上很多。
-source: [https://ploum.net/2025-12-15-communication-entertainment.html] [2026-01-22 Thu 16:57]
+不过原因并非我一直在刷,而是我沉迷于微博客那样的碎片化的表达。人类的思维本就是碎片化的,微博客其实要比博客更符合人类大脑的自然运作模式。我不想要去争论哪个更好,这(或许)会引起一场无意义的战争。总之大家只要有产出即可,我是这么想的。总之我并不赞同使用 Fediverse 应用就等同于在使用大公司社交媒体这一观点。
+作者对 Fediverse 的批评有一定的可取之处,但并非客观上的真理。既然 ActivityPub 协议本就是为了传递内容而生,那我认为不应该因为一件它原没有打算去做的事情而说它。
-=> https://ploum.net/2025-12-15-communication-entertainment.html https://ploum.net/2025-12-15-communication-entertainment.html
+最后说一下作者在文章中提到的一些我不知道的技术:Gemini 协议和离线浏览器。
+Gemini 协议具有着极致的极简,不支持图片嵌入、脚本、iframe、复杂的样式,只支持文字和链接。
-## 用纯 HTML 替换 JS
+而离线浏览器作者推荐的是 Offpunk,也是他自己用 Python 写的命令行浏览器。现代浏览器的工作方式是点击、等待加载和阅读,而离线浏览器更像是 RSS 阅读器和电子邮件客户端,它会自动将内容全部下载到本地,这样你只需要阅读本地缓存即可。
+=> https://ploum.net/2025-12-15-communication-entertainment.html 原文
-作者列举了一些可以被原生 HTML/CSS 替换掉的传统 JS 功能:
+### 用纯 HTML 替换 JS
-* 手风琴效果和内容展开面板:使用 `<details>' 和 `<summary>' 标签;
-* 带自动筛选建议的输入框:使用 `<input>' 和 `<datalist>' 标签;
-* 模态框和弹出层:使用 `popover' 和 `popovertarget' 属性;
-* 离屏导航和侧边栏:基于 `popover' API,配合 CSS 的 `translate' 属性。
+作者列举了一些可以被原生 HTML/CSS 替换掉的传统 JS 功能:
-source: [https://www.htmhell.dev/adventcalendar/2025/27/] [2026-01-22 Thu 19:12]
+1. 手风琴效果和内容展开面板:使用 <details> 和 <summary> 标签;
+2. 带自动筛选建议的输入框:使用 <input> 和 <datalist> 标签;
+3. 模态框和弹出层:使用 popover 和 popovertarget 属性;
+4. 离屏导航和侧边栏:基于 popover API,配合 CSS 的 translate 属性。
+=> https://www.htmhell.dev/adventcalendar/2025/27/ 原文
+### 论隐私与控制
-=> https://www.htmhell.dev/adventcalendar/2025/27/ https://www.htmhell.dev/adventcalendar/2025/27/
+作者按照不同类别推荐了 13 个工具、服务或硬件(不包括他提到的个人域名这种策略)。具体清单如下:
+* 密码管理器
+* GNU pass
+* passage
+* Bitwarden
+* 即时通讯
+* Signal
+* 手机系统与应用
+* GrapheneOS
+* F-Droid
+* 邮件
+* Tuta
+* 浏览体验
+* Firefox
+* Privacy Badger
+* uBlock Origin
+* 日历与联系人托管
+* 树莓派
+* Baïkal
+* DAVx⁵
+* 域名与网络
+* Cloudflare Registrar
+* Cloudflare DNS
-## 论隐私与控制
+我因为玩转笔记本的配置,也稍微做了下隐私和安全性的功课。我个人不推荐使用 Firefox 浏览器,尤其是 Mozilla 发行的。首先是它已经声称全面转向 AI,未来会怎样很难说,总之好感对我来说已经掉光了。其次是它在隐私上已截然不再是过去的 Firefox,还修改过自己的条款,好感又要掉掉掉了。
-作者按照不同类别推荐了 13 个工具、服务或硬件(不包括他提到的个人域名这种策略)。具体清单如下:
+如果你想要极致的隐私性的话,可以试试 LibreWolf,其缺点是隐私性太强,很多时候无法正常地使用。
-* 密码管理器
-* GNU pass
-* passage
-* Bitwarden
-* 即时通讯
-* Signal
-* 手机系统与应用
-* GrapheneOS
-* F-Droid
-* 邮件
-* Tuta
-* 浏览体验
-* Firefox
-* Privacy Badger
-* uBlock Origin
-* 日历与联系人托管
-* 树莓派
-* Baïkal
-* DAVx⁵
-* 域名与网络
-* Cloudflare Registrar
-* Cloudflare DNS
+我现在使用的是 Floorp,算是夹在 Firefox 和 LibreWolf 之间的选择,也有许多自己的特色功能。
-我因为玩转笔记本的配置,也稍微做了下隐私和安全性的功课。我个人不推荐使用 Firefox 浏览器,尤其是 Mozilla 发行的。首先是它已经声称全面转向 AI,未来会怎样很难说,总之好感对我来说已经掉光了。其次是它在隐私上已截然不再是过去的 Firefox,还修改过自己的条款,好感又要掉掉掉了。
+在 Mastodon 上还有朋友推荐了 Zen,是一个 UI 非常漂亮的浏览器。唯一的问题是我用不惯垂直标签页。感兴趣的可以试试。
-如果你想要极致的隐私性的话,可以试试 LibreWolf,其缺点是隐私性太强,很多时候无法正常地使用。
+我也想过换自己的手机系统。我现在的手机是摩托罗拉 Razr+,不幸的是摩托罗拉的手机系统已经全面接入谷歌,更不幸的是它作为一款折叠屏手机,适配它的系统估计很少很少……
+=> https://toidiu.com/blog/2025-12-25-privacy-and-control/ 原文
-我现在使用的是 Floorp,算是夹在 Firefox 和 LibreWolf 之间的选择,也有许多自己的特色功能。
+### 一个终结所有网站的网站
-在 Mastodon 上还有朋友推荐了 Zen,是一个 UI 非常漂亮的浏览器。唯一的问题是我用不惯垂直标签页。感兴趣的可以试试。
+这是一个十分漂亮的网站,就算是对文章内容不感兴趣,我认为也可以点进去学习一下样式。
-我也想过换自己的手机系统。我现在的手机是摩托罗拉 Razr+,不幸的是摩托罗拉的手机系统已经全面接入谷歌,更不幸的是它作为一款折叠屏手机,适配它的系统估计很少很少……
+文中提到了 Ivan Illich 的理论,指出技术发展的两个阶段:
-source: [https://toidiu.com/blog/2025-12-25-privacy-and-control/] [2026-01-22 Thu 19:49]
+1. 增强人类能力的乐观阶段;
+2. 工业化后的垄断阶段。
+当到第二个阶段时,工具开始「操纵和篡夺」社会,甚至会产生激进垄断——不使用该工具就会被排除在社会之外。
-=> https://toidiu.com/blog/2025-12-25-privacy-and-control/ https://toidiu.com/blog/2025-12-25-privacy-and-control/
+这是一些历史案例:
+* 纺织革命虽然提高了生产力,但也带来了劳工剥削、巨大的生态成本和过度消费;
+* 抗生素虽然救命,但后期滥用导致耐药性和更高的医疗成本;
+* 太空探索扩展了我们的认知,商业化后反而因太空垃圾泛滥、阻碍了天文学观测。
-## 一个终结所有网站的网站
+万维网也是如此。我们最初使用它来共享信息,但商业化后带来了网络霸凌、虚假信息、成瘾和资本掠夺。
-这是一个十分漂亮的网站,就算是对文章内容不感兴趣,我认为也可以点进去学习一下样式。
+作者重新审视了互联网的三个方面:
-文中提到了 Ivan Illich 的理论,指出技术发展的两个阶段:
+1. 教学和学习:逃离巨头平台的控制和变现陷阱。回归博客、HTML、RSS 和 Webmentions;
+2. 社交连接:逃离社交媒体 App。利用 POSSE、ActivityPub 和 ATProto 等协议,建立属于自己的、去中心化的、互操作的社交网络;
+3. Web 开发:拒绝千篇一律的 B2B SaaS 开发模式。拥抱 HTML 和 CSS 的复兴,利用现代浏览器 API 进行创造性表达。
-* 增强人类能力的乐观阶段;
-* 工业化后的垄断阶段。
+作者也对个人网站进行了一些解释。如果你对个人网站很好奇,但是自己没有一个的话,可以听听看:个人网站是对企业化、工业化互联网的最有力反击。它允许自主、实验、拥有权和去中心化。
-当到第二个阶段时,工具开始「操纵和篡夺」社会,甚至会产生激进垄断——不使用该工具就会被排除在社会之外。
+如何开始呢?从小做起,允许自己的失败,记录自己的成长。哪怕只是简单的 HTML 也好,别纠结工具和框架,除非设计让你快乐。你可以利用 brid.gy 等工具将内容分发到 Mastodon,再把评论收回来。
-这是一些历史案例:
+最后你可以将自己的作品分享到 personalsit.es 这样的社区。这是作者自己推荐的,我看了一下都是英文使用者的网站。介意的话可以改投到中文使用者的社区内,有很多,我就不一一列举了。
+=> https://henry.codes/writing/a-website-to-destroy-all-websites/ 原文
-* 纺织革命虽然提高了生产力,但也带来了劳工剥削、巨大的生态成本和过度消费;
-* 抗生素虽然救命,但后期滥用导致耐药性和更高的医疗成本;
-* 太空探索扩展了我们的认知,商业化后反而因太空垃圾泛滥、阻碍了天文学观测。
+### 纯文本网站的小型合集
-万维网也是如此。我们最初使用它来共享信息,但商业化后带来了网络霸凌、虚假信息、成瘾和资本掠夺。
+作者整理了一份支持「纯文本模式」浏览的网站清单,也列出了它们具体的访问方法。这些方法大多通过修改 URL 实现,常见的模式包括:
-作者重新审视了互联网的三个方面:
+* 添加后缀
+* 替换后缀
+* 添加特定参数
+* 某些站点仅支持通过 curl 命令行工具访问
-* 教学和学习:逃离巨头平台的控制和变现陷阱。回归博客、HTML、RSS 和 Webmentions;
-* 社交连接:逃离社交媒体 App。利用 POSSE、ActivityPub 和 ATProto 等协议,建立属于自己的、去中心化的、互操作的社交网络;
-* Web 开发:拒绝千篇一律的 B2B SaaS 开发模式。拥抱 HTML 和 CSS 的复兴,利用现代浏览器 API 进行创造性表达。
+其中 elle's blog 的设计让我很是吃惊。如果只是点进作者提供的网址,你会看到一个像素的房间。点击左下角的小猫,你会和作者进行对话,她会指导你如何和这个网页互动。这时候随便点点,你会发现中间的小人可以走来走去、一些页面以很有趣的方式展现……这还不是全部。想要阅读她的文章,你需要使用 curl 命令。
-作者也对个人网站进行了一些解释。如果你对个人网站很好奇,但是自己没有一个的话,可以听听看:个人网站是对企业化、工业化互联网的最有力反击。它允许自主、实验、拥有权和去中心化。
-
-如何开始呢?从小做起,允许自己的失败,记录自己的成长。哪怕只是简单的 HTML 也好,别纠结工具和框架,除非设计让你快乐。你可以利用 brid.gy 等工具将内容分发到 Mastodon,再把评论收回来。
-
-最后你可以将自己的作品分享到 personalsit.es 这样的社区。这是作者自己推荐的,我看了一下都是英文使用者的网站。介意的话可以改投到中文使用者的社区内,有很多,我就不一一列举了。
-
-source: [https://henry.codes/writing/a-website-to-destroy-all-websites/] [2026-01-22 Thu 20:09]
-
-
-=> https://henry.codes/writing/a-website-to-destroy-all-websites/ https://henry.codes/writing/a-website-to-destroy-all-websites/
-
-
-## 纯文本网站的小型合集
-
-作者整理了一份支持「纯文本模式」浏览的网站清单,也列出了它们具体的访问方法。这些方法大多通过修改 URL 实现,常见的模式包括:
-
-* 添加后缀
-* 替换后缀
-* 添加特定参数
-* 某些站点仅支持通过 `curl' 命令行工具访问
-
-其中 elle's blog 的设计让我很是吃惊。如果只是点进作者提供的网址,你会看到一个像素的房间。点击左下角的小猫,你会和作者进行对话,她会指导你如何和这个网页互动。这时候随便点点,你会发现中间的小人可以走来走去、一些页面以很有趣的方式展现……这还不是全部。想要阅读她的文章,你需要使用 `curl' 命令。
-
-```
+```zsh
curl elle.sh/blog
```
-你就可以看到她的文章了。
-
-不过说「需要」是有点夸张了。其实在浏览器上访问 `ellesho.me/page/website' 即可。
-
-说回纯文本这个想法,我认为想法不错,我也很乐意为我的读者提供这种阅读方式,但就个人观点而言,如果不美化一下我是不愿意读的。话又说回来,Emacs 可以使用 `M-x eww' 来浏览 `.txt' 的网址,然后使用我自行配置好的字体。Emacs 真是好东西啊。
-
-source: [https://shkspr.mobi/blog/2025/12/a-small-collection-of-text-only-websites/] [2026-01-22 Thu 20:32]
-
-
-=> https://shkspr.mobi/blog/2025/12/a-small-collection-of-text-only-websites/ https://shkspr.mobi/blog/2025/12/a-small-collection-of-text-only-websites/
-
-
-## 过度设计「请勿打扰」设备
-
-作者做了一个小工具,可以在 OLED 屏幕上显示自己是否在开会。听上去是个蛮简单的功能,不过爱折腾的极客们喜欢将小事情做成无比完美的小事情……建议直接阅读原文。
-
-source: [https://apoorv.page/blogs/over-engineered-dnd] [2026-01-22 Thu 22:38]
-
-
-=> https://apoorv.page/blogs/over-engineered-dnd https://apoorv.page/blogs/over-engineered-dnd
-
-
-## 就是为了这份难受劲儿
-
-这篇文章的开头就令人毛骨悚然:有人训练了一个人工智能模型,以作者的风格撰写博客文章,并且想要知道如果这个模型正常工作的话,是否会对作者有用。虽然没有人会那么做,但如果有人这么告诉我,我可能第一时间会想要封锁他,让他不要再来联系我。
-
-不过作者最后的想法有点小邪恶了。虽然客观上没说错,但主动去庆幸这种事还是算了吧!我也是一个读者,还是不希望自己因为其他内容太差所以去关注一个人。
-
-source: [https://nik.art/the-suck-is-why-were-here/] [2026-01-22 Thu 22:44]
-
-
-=> https://nik.art/the-suck-is-why-were-here/ https://nik.art/the-suck-is-why-were-here/
-
-
-## 也许评论应该解释「做什么」
-
-过去人们认为注释应该解释这段代码 [em:为什么] 存在,而不是这段代码 [em:做什么] 。理由是如果你的代码需要额外解释它是什么,那意味着你的代码写得不够清晰和整洁。
-
-阅读代码时最大的敌人是上下文切换。作者引用了《代码整洁之道》作者 Bob Martin 的观点,后者主张把一个长函数拆分成无数个极小的函数,通过函数名来解释 /What/ ,从而消灭注释。
-
-例如我们有一个 `replace()' 方法,它会被拆分成多个小方法。结果是读者为了理解逻辑,往往需要在这些方法里跳来跳去,不断滚动屏幕,打断了阅读思路。
-
-作者推崇保留原本的 10 行代码在一个函数里,但在关键步骤前加上 /What/ 类型的注释。这样读者就可以顺着读下来,利用注释作为路标快速理解逻辑,而不需要跳转到其他地方。
-
-source: [https://www.hillelwayne.com/post/what-comments/] [2026-01-24 Sat 11:29]
-
-
-=> em:%E4%B8%BA%E4%BB%80%E4%B9%88 em:为什么
-=> em:%E5%81%9A%E4%BB%80%E4%B9%88 em:做什么
-=> https://www.hillelwayne.com/post/what-comments/ https://www.hillelwayne.com/post/what-comments/
-
-
-## 2026 年了,关于加密邮件你需要认清的真相
-
-作者认为,电子邮件的设计初衷就是电子明信片,根本没有隐私可言。后来的修修补补不过是在烂地基上盖楼,例如 PGP、S/MIME。
-
-对于邮件来说,正文是数据,而发件人、收件人、主题行等内容就是元数据。即使我们加密了正文,元数据依然是明文传输的。通过元数据,攻击者能知道我们在跟谁聊、聊什么主题、聊了多久。这足以让情报机构定位目标。
-
-再加上虽然可以在技术上进行修补,但邮件被几大巨头垄断,政府也希望保留监控能力,实际改不了一点。
-
-就算是 ProtonMail 这样主打隐私的邮箱服务也有隐患:一旦离开他们的围墙跟别人发邮件,还是会回落到不安全的状态。
-
-假设我们终于配置好了加密邮件,也可能因为易用性灾难而将加密内容以明文形式发出去。
-
-因此作者的主张是,彻底放弃加密邮件这个幻想吧,使用 Signal 来进行敏感沟通。
+你就可以看到她的文章了。
-source: [https://soatok.blog/2026/01/04/everything-you-need-to-know-about-email-encryption-in-2026/] [2026-01-24 Sat 13:18]
+不过说「需要」是有点夸张了。其实在浏览器上访问 ellesho.mepagewebsite 即可。
+说回纯文本这个想法,我认为想法不错,我也很乐意为我的读者提供这种阅读方式,但就个人观点而言,如果不美化一下我是不愿意读的。话又说回来,Emacs 可以使用 M-x eww 来浏览 .txt 的网址,然后使用我自行配置好的字体。Emacs 真是好东西啊。
+=> https://shkspr.mobi/blog/2025/12/a-small-collection-of-text-only-websites/ 原文
-=> https://soatok.blog/2026/01/04/everything-you-need-to-know-about-email-encryption-in-2026/ https://soatok.blog/2026/01/04/everything-you-need-to-know-about-email-encryption-in-2026/
+### 过度设计「请勿打扰」设备
+作者做了一个小工具,可以在 OLED 屏幕上显示自己是否在开会。听上去是个蛮简单的功能,不过爱折腾的极客们喜欢将小事情做成无比完美的小事情……建议直接阅读原文。
+=> https://apoorv.page/blogs/over-engineered-dnd 原文
-# 折腾博客
+### 就是为了这份难受劲儿
-我受 [Slash Pages] 启发,为博客网站添加了一些页面。详细可见 [网站地图] ,它也被添加到网站的 Footer 处。
+这篇文章的开头就令人毛骨悚然:有人训练了一个人工智能模型,以作者的风格撰写博客文章,并且想要知道如果这个模型正常工作的话,是否会对作者有用。虽然没有人会那么做,但如果有人这么告诉我,我可能第一时间会想要封锁他,让他不要再来联系我。
-如果你往下划,会发现我也添加了指向 [笔墨迹] 的链接。去年我的站点被添加到笔墨迹内,不过我是到后面才知道此事,因为提醒邮件被塞进了垃圾邮件内……不清楚是不是 iCloud 的问题。不过无论是不是我都比较想换成用域名结尾的邮箱地址。跑题了跑题了。
+不过作者最后的想法有点小邪恶了。虽然客观上没说错,但主动去庆幸这种事还是算了吧!我也是一个读者,还是不希望自己因为其他内容太差所以去关注一个人。
+=> https://nik.art/the-suck-is-why-were-here/ 原文
-笔墨迹建议我在首页内添加他们的链接,这让我犯了难:因为添加笔墨迹提供的图片素材在我的网站内会导致样式上的混乱。最后我选择了添加只显示文字的超链接。
+### 也许评论应该解释「做什么」
-说回 Slash Pages。根据我最开始对该博客的定义,也就是「个人领地」,我将这些新添加的页面视作「领地里的不同地点」,例如 `/contact' 就是领地的联络处。目前我还在慢慢施工中~
+过去人们认为注释应该解释这段代码 为什么 存在,而不是这段代码 做什么 。理由是如果你的代码需要额外解释它是什么,那意味着你的代码写得不够清晰和整洁。
-我为月刊中的「书影音」部分添加了自动抓取 NeoDB 数据的功能。目前我还在摸索如何使用 NeoDB,例如一些内容无法在 NeoDB 上搜索到条目,也无法让其在互联网上获取。可能还是需要自行手写内容。
+阅读代码时最大的敌人是上下文切换。作者引用了《代码整洁之道》作者 Bob Martin 的观点,后者主张把一个长函数拆分成无数个极小的函数,通过函数名来解释 What ,从而消灭注释。
+例如我们有一个 replace() 方法,它会被拆分成多个小方法。结果是读者为了理解逻辑,往往需要在这些方法里跳来跳去,不断滚动屏幕,打断了阅读思路。
-=> https://slashpages.net/ Slash Pages
-=> /sitemap 网站地图
-=> https://slashpages.net/ 笔墨迹
+作者推崇保留原本的 10 行代码在一个函数里,但在关键步骤前加上 What 类型的注释。这样读者就可以顺着读下来,利用注释作为路标快速理解逻辑,而不需要跳转到其他地方。
+=> https://www.hillelwayne.com/post/what-comments/ 原文
+### 2026 年了,关于加密邮件你需要认清的真相
-# 我写的文章
+作者认为,电子邮件的设计初衷就是电子明信片,根本没有隐私可言。后来的修修补补不过是在烂地基上盖楼,例如 PGP、S/MIME。
-* [《Emacs 里配置邮箱服务》]
-* [《初次走半马》]
-* [《最能保障「数字主权」的 VPS 公司》]
-* [《谈模仿学习与身份误区》]
+对于邮件来说,正文是数据,而发件人、收件人、主题行等内容就是元数据。即使我们加密了正文,元数据依然是明文传输的。通过元数据,攻击者能知道我们在跟谁聊、聊什么主题、聊了多久。这足以让情报机构定位目标。
+再加上虽然可以在技术上进行修补,但邮件被几大巨头垄断,政府也希望保留监控能力,实际改不了一点。
-=> /posts/4420/ 《Emacs 里配置邮箱服务》
-=> /posts/53f4/ 《初次走半马》
-=> /posts/2590/ 《最能保障「数字主权」的 VPS 公司》
-=> /posts/9412/ 《谈模仿学习与身份误区》
+就算是 ProtonMail 这样主打隐私的邮箱服务也有隐患:一旦离开他们的围墙跟别人发邮件,还是会回落到不安全的状态。
+假设我们终于配置好了加密邮件,也可能因为易用性灾难而将加密内容以明文形式发出去。
-# 编程历程
+因此作者的主张是,彻底放弃加密邮件这个幻想吧,使用 Signal 来进行敏感沟通。
+=> https://soatok.blog/2026/01/04/everything-you-need-to-know-about-email-encryption-in-2026/ 原文
-这个月我花了很多时间在自己的笔记本上。首先我将笔记本的键盘换了套新的,原先的不知为何无法正常使用。接着我将笔记本上的 Windows 系统换成了 EndeavourOS,也是 Arch Linux 发行版的一员。它本质上就是预配置好的 Arch Linux,安装起来很丝滑。
+## 折腾博客
-在窗口管理上,我选择了 i3wm 这个颇为独特的选项。它是手动平铺式窗口管理器,与传统的桌面环境,如 GNOME 或 KDE,很不一样。
+我受 Slash Pages 启发,为博客网站添加了一些页面。详细可见 网站地图 ,它也被添加到网站的 Footer 处。
-因为月底我就要开学了,我临时学习了如何使用 Emacs,因为总感觉笔记本系统换了再不换个更高效更少见的工具记笔记实在是说不过去……不过这倒是让我打开了新的大门,Emacs 真好玩!
+如果你往下划,会发现我也添加了指向 笔墨迹 的链接。去年我的站点被添加到笔墨迹内,不过我是到后面才知道此事,因为提醒邮件被塞进了垃圾邮件内……不清楚是不是 iCloud 的问题。不过无论是不是我都比较想换成用域名结尾的邮箱地址。跑题了跑题了。
-为了更好地使用 Emacs,我学习了 GTD 工作流,其核心围绕着这么一个问题:人并不擅长于牢记事情。GTD 工作流鼓励大家将脑子里想到的东西立即记下来,然后暂时抛之脑后,到手上的动作做完了再回看。Emacs 强大的可玩性就能做到这一点:我想到一件事情可以进行 Capture 操作,唤出我自定义好的模板(是 TODO 列表吗?是下一篇博客的想法吗?),写完后就不管它们,待未来再来补充。
+笔墨迹建议我在首页内添加他们的链接,这让我犯了难:因为添加笔墨迹提供的图片素材在我的网站内会导致样式上的混乱。最后我选择了添加只显示文字的超链接。
-因为 Emacs 可以做很多事情,所以我会长期将 Emacs 挂在主要窗口,需要 Capture 的时候只需要一个简单的快捷键即可。这可以抹除许多我们不会注意到的小块时间,例如打开 App、新建文件……
+说回 Slash Pages。根据我最开始对该博客的定义,也就是「个人领地」,我将这些新添加的页面视作「领地里的不同地点」,例如 /contact 就是领地的联络处。目前我还在慢慢施工中~
-当然,你不需要 Emacs 也可以玩转 GTD 工作流。不过我依然认为 Emacs 是一个值得学习和使用的工具,类似定位的我也推荐。使用快捷键来进行过去用鼠标才能做到的操作,实在是太爽了。并且 Emacs 的可玩性极高,虽然配置需要使用 Elisp 来编写,但如果不介意的话,可以利用 AI 来帮助你打造自己想要的配置。
+我为月刊中的「书影音」部分添加了自动抓取 NeoDB 数据的功能。目前我还在摸索如何使用 NeoDB,例如一些内容无法在 NeoDB 上搜索到条目,也无法让其在互联网上获取。可能还是需要自行手写内容。
+=> https://slashpages.net/ Slash Pages
-我也写了个配置来自动化一些我写博客期间可以被忽略掉的步骤,例如自动生成月刊内容。过去我还在用 Typora 写博客的时候,一个月刊的 Markdown 文件差不多有两万字。每次想在月刊里添加新内容,都需要在一个 Markdown 文件里找来找去,麻烦的同时还卡顿得不行。
+## 编程历程
-现在我可以将内容以列表的形式放在一个 Org Mode 文件内(Emacs + Org Mode 是一个天衣无缝的组合),然后使用自定义好的快捷键快速将它们移动到月刊 Org Mode 文件内、我想要它们在的分类下。整理好后,我会再次使用快捷键,将月刊 Org Mode 文件转换成 Markdown 文件,接着保存在 Hexo 项目的文章目录下。
+这个月我花了很多时间在自己的笔记本上。首先我将笔记本的键盘换了套新的,原先的不知为何无法正常使用。接着我将笔记本上的 Windows 系统换成了 EndeavourOS,也是 Arch Linux 发行版的一员。它本质上就是预配置好的 Arch Linux,安装起来很丝滑。
-我现在会推荐想要写博客的各位使用 Hugo 而不是 Hexo……我现在依旧使用 Hexo 的原因不过是习惯了,且懒得去迁移。
+在窗口管理上,我选择了 i3wm 这个颇为独特的选项。它是手动平铺式窗口管理器,与传统的桌面环境,如 GNOME 或 KDE,很不一样。
-总之,我很满意这个月的折腾,虽然和标题「编程历程」中的「编程」关系不是特别大!
+因为月底我就要开学了,我临时学习了如何使用 Emacs,因为总感觉笔记本系统换了再不换个更高效更少见的工具记笔记实在是说不过去……不过这倒是让我打开了新的大门,Emacs 真好玩!
+为了更好地使用 Emacs,我学习了 GTD 工作流,其核心围绕着这么一个问题:人并不擅长于牢记事情。GTD 工作流鼓励大家将脑子里想到的东西立即记下来,然后暂时抛之脑后,到手上的动作做完了再回看。Emacs 强大的可玩性就能做到这一点:我想到一件事情可以进行 Capture 操作,唤出我自定义好的模板(是 TODO 列表吗?是下一篇博客的想法吗?),写完后就不管它们,待未来再来补充。
-# 书籍
+因为 Emacs 可以做很多事情,所以我会长期将 Emacs 挂在主要窗口,需要 Capture 的时候只需要一个简单的快捷键即可。这可以抹除许多我们不会注意到的小块时间,例如打开 App、新建文件……
+当然,你不需要 Emacs 也可以玩转 GTD 工作流。不过我依然认为 Emacs 是一个值得学习和使用的工具,类似定位的我也推荐。使用快捷键来进行过去用鼠标才能做到的操作,实在是太爽了。并且 Emacs 的可玩性极高,虽然配置需要使用 Elisp 来编写,但如果不介意的话,可以利用 AI 来帮助你打造自己想要的配置。
-# 影视
+我也写了个配置来自动化一些我写博客期间可以被忽略掉的步骤,例如自动生成月刊内容。过去我还在用 Typora 写博客的时候,一个月刊的 Markdown 文件差不多有两万字。每次想在月刊里添加新内容,都需要在一个 Markdown 文件里找来找去,麻烦的同时还卡顿得不行。
+现在我可以将内容以列表的形式放在一个 Org Mode 文件内(Emacs + Org Mode 是一个天衣无缝的组合),然后使用自定义好的快捷键快速将它们移动到月刊 Org Mode 文件内、我想要它们在的分类下。整理好后,我会再次使用快捷键,将月刊 Org Mode 文件转换成 Markdown 文件,接着保存在 Hexo 项目的文章目录下。
-# 音乐
+我现在会推荐想要写博客的各位使用 Hugo 而不是 Hexo……我现在依旧使用 Hexo 的原因不过是习惯了,且懒得去迁移。
-## Sakanaction
+总之,我很满意这个月的折腾,虽然和标题「编程历程」中的「编程」关系不是特别大!
-我重新听了一下 Sakanaction 的歌。去年我很喜欢他们的专辑 /834.194/ ,这个月发现 /DocumentaLy/ 和 /Shin-Shiro/ 也不错。
+## 音乐
-这些是我很喜欢的歌曲:
+### Sakanaction
-* 《『バッハの[旋律]を夜に聴いたせいです。』》
+我重新听了一下 Sakanaction 的歌。去年我很喜欢他们的专辑 834.194 ,这个月发现 DocumentaLy 和 Shin-Shiro 也不错。
-其中歌词:
+这些是我很喜欢的歌曲:
-> バッハの[旋律]を夜に聴いたせいです こんな心
+* 《『バッハの旋律(せんりつ)を夜に聴いたせいです。』》
-的唱法对我而言很有意思,听了没几次就会唱了,作为一个日语口语白痴。
+ 其中歌词:
+
+> バッハの旋律(せんりつ)を夜に聴いたせいです
+> こんな心
-唱歌期间被室友听到,然后被笑话……因为「没有一个音是对的,但居然能和原唱形成很好听的和声」,让她认为我或许在一些奇怪的地方上有着天赋——怎么听都不像好话吧!
+ 的唱法对我而言很有意思,听了没几次就会唱了,作为一个日语口语白痴。
-* 《ネイティブダンサー》,或称 /Native Dancer/ 。
+ 唱歌期间被室友听到,然后被笑话……因为「没有一个音是对的,但居然能和原唱形成很好听的和声」,让她认为我或许在一些奇怪的地方上有着天赋——怎么听都不像好话吧!
-> [淡]い日に僕らは[揺]れた、ただ揺れた そういう気になって
->
-> 思い[出]のように降り[落]ちた、ただ降り落ちた そう雪になって
+* 《ネイティブダンサー》,或称 Native Dancer 。
-* 《多分、風。》
+> 淡(あわ)い日に僕らは揺(ゆ)れた、ただ揺れた
+> そういう気になって
+>
+> 思い出(で)のように降り落(お)ちた、ただ降り落ちた
+> そう雪になって
-这首歌的前奏相当抓耳!
+* 《多分、風。》
+ 这首歌的前奏相当抓耳!
-=> ruby:%E3%81%9B%E3%82%93%E3%82%8A%E3%81%A4 旋律
-=> ruby:%E3%81%82%E3%82%8F 淡
-=> ruby:%E3%82%86 揺
-=> ruby:%E3%81%A7 出
-=> ruby:%E3%81%8A 落
+## 日记片段
+日记片段发布在 Mastodon 上。
-# 日记片段
+=> https://m.otter.homes/@Cytrogen 在 Mastodon 阅读日记片段
-日记片段现在已经全面使用我在 Mastodon 内发布的内容。你可以通过跟随我的 Mastodon 账户来提前阅读日记片段,或者不跟随,在月刊里一次性读完。
M posts/4-个字符为一组构成的城市.gmi => posts/4-个字符为一组构成的城市.gmi +20 -24
@@ 1,14 1,10 @@
# 4 个字符为一组构成的城市
-:CAPTURED: [2026-02-16 Mon 00:43]
+从小时候记事起,我就有一个奇怪的习惯,那就是看到商店招牌,会自动将上面的字符以 4 个一组的形式排列起来。
-从小时候记事起,我就有一个奇怪的习惯,那就是看到商店招牌,会自动将上面的字符以 4 个一组的形式排列起来。
+比方说「江南皮革厂倒闭了,老板黄鹤带着小姨子跑路了」,在我的眼里会变成:
-#+MORE
-
-比方说「江南皮革厂倒闭了,老板黄鹤带着小姨子跑路了」,在我的眼里会变成:
-
-```
+```plaintext
江南皮革
厂倒闭了
,老板黄
@@ 17,15 13,15 @@
了
```
-正好多出来 1 个字符。
+正好多出来 1 个字符。
-多出来的内容会让小时候的我感到既不开心,也不舒服。为了让自己开心起来,有时候我会强行将限制改成 3 个或者 5 个字符一组。这样做并不是特别容易,因为 4 个字符一组已经是我脑内的标准,突然换成别的总感觉怪怪的。
+多出来的内容会让小时候的我感到既不开心,也不舒服。为了让自己开心起来,有时候我会强行将限制改成 3 个或者 5 个字符一组。这样做并不是特别容易,因为 4 个字符一组已经是我脑内的标准,突然换成别的总感觉怪怪的。
-之后我常用的伎俩便是将余数加入到下一个招牌的计算中。
+之后我常用的伎俩便是将余数加入到下一个招牌的计算中。
-假设下一个招牌的内容是「我要金坷垃,非洲农业不发达,必须要有,金坷垃!」,那么排列就会加上刚才多出来的「了」:
+假设下一个招牌的内容是「我要金坷垃,非洲农业不发达,必须要有,金坷垃!」,那么排列就会加上刚才多出来的「了」:
-```
+```plaintext
了我要金
坷垃,非
洲农业不
@@ 34,27 30,27 @@
金坷垃!
```
-哎,这下就可以被 4 整除了,内心一下子开心起来~
-
-通常来说,我都是在乘车期间进行这些脑内操作的,比如跟着大人们坐出租车去什么地方,或者坐在电动车上,望着远处。我自小居住在一个城市里,无论是往哪边看去,都可以看到带有招牌的店铺。坐车是无聊的,为了让自己不无聊,我自行研发了这种小游戏,好让自己在什么时候都能游玩——会这么说,是因为在我的记忆中,这种行为慢慢地也渗透到我的其他生活里:小时候翻开课本时,我会扫视一番页面上的内容,快速将里面的字符根据 4 个字符一组的方式排序。
+哎,这下就可以被 4 整除了,内心一下子开心起来~
-现在想来,为什么孩童时期的我要这么做呢?不知道从什么时候开始,我看商店招牌再也不会去想要将字符分成 4 个一组了,乘车时望向窗外也只会发呆。
+通常来说,我都是在乘车期间进行这些脑内操作的,比如跟着大人们坐出租车去什么地方,或者坐在电动车上,望着远处。我自小居住在一个城市里,无论是往哪边看去,都可以看到带有招牌的店铺。坐车是无聊的,为了让自己不无聊,我自行研发了这种小游戏,好让自己在什么时候都能游玩——会这么说,是因为在我的记忆中,这种行为慢慢地也渗透到我的其他生活里:小时候翻开课本时,我会扫视一番页面上的内容,快速将里面的字符根据 4 个字符一组的方式排序。
-能够确认的是,它是我的强迫行为的一种。我小时候总是有一些现在看来都觉得莫名其妙的「秩序」,比方说喝粥时绝对不能在里面放任何东西。如果大人往我的碗里夹了肉或者榨菜,又或者不小心滴了点酱料进去,我会很难过,认为我的粥被玷污了、不再纯净。
+现在想来,为什么孩童时期的我要这么做呢?不知道从什么时候开始,我看商店招牌再也不会去想要将字符分成 4 个一组了,乘车时望向窗外也只会发呆。
-我已经很难记起小时生活的点点滴滴,自然也不知道那时候的我是怎么想的、经历了什么才会这么想,所以我还是不揣测自己了吧。但我可以感觉出,我是一个很轴的人,且只生活在自己的世界里:一套独属于自己的逻辑,外界对我而言并不重要,因为是它们不遵守我的规则在先。
+能够确认的是,它是我的强迫行为的一种。我小时候总是有一些现在看来都觉得莫名其妙的「秩序」,比方说喝粥时绝对不能在里面放任何东西。如果大人往我的碗里夹了肉或者榨菜,又或者不小心滴了点酱料进去,我会很难过,认为我的粥被玷污了、不再纯净。
-不过随着年龄的增长,经历了一个又一个事情,发现这个世界就是存在着余数、绝大多数事物都是无法被完美整除的——有些能不能被「除」都是个问题。白粥也不可避免地会沾染上其他味道,毕竟再去取一个碟子装榨菜意味着需要多洗一个餐具。
+我已经很难记起小时生活的点点滴滴,自然也不知道那时候的我是怎么想的、经历了什么才会这么想,所以我还是不揣测自己了吧。但我可以感觉出,我是一个很轴的人,且只生活在自己的世界里:一套独属于自己的逻辑,外界对我而言并不重要,因为是它们不遵守我的规则在先。
-现实总是塞满了需要我去重新适应的全新事物,而这些问题远比招牌上多出来的字符庞杂得多。所以那个坐在电动车后座的小孩,最好还是连同她那套规则一起,留在那条以 4 个字符一组构成的街道吧。
+不过随着年龄的增长,经历了一个又一个事情,发现这个世界就是存在着余数、绝大多数事物都是无法被完美整除的——有些能不能被「除」都是个问题。白粥也不可避免地会沾染上其他味道,毕竟再去取一个碟子装榨菜意味着需要多洗一个餐具。
+现实总是塞满了需要我去重新适应的全新事物,而这些问题远比招牌上多出来的字符庞杂得多。所以那个坐在电动车后座的小孩,最好还是连同她那套规则一起,留在那条以 4 个字符一组构成的街道吧。
### Bonus
-最近我知道了 [BlogBlog 同乐会],相当于中文版的 IndieWeb Carnival。或许初来乍到的你也不知道 [IndieWeb Carnival] 是什么。简单来说,它是一个每月根据主办方提出的主题,让参与者们在自己的个人网站上发布该主题的博文,并投稿给主办方的活动。
+最近我知道了 BlogBlog 同乐会,相当于中文版的 IndieWeb Carnival。或许初来乍到的你也不知道 IndieWeb Carnival 是什么。简单来说,它是一个每月根据主办方提出的主题,让参与者们在自己的个人网站上发布该主题的博文,并投稿给主办方的活动。
-这个月 BlogBlog 同乐会的主题是「只有我这样吗?!」。我心想该主题还蛮有趣的,所以快速动笔写了一下。不过写到后面,总感觉有些偏题——应该没有关系吧,因为成年人的世界总是不遵守规矩的!
+这个月 BlogBlog 同乐会的主题是「只有我这样吗?!」。我心想该主题还蛮有趣的,所以快速动笔写了一下。不过写到后面,总感觉有些偏题——应该没有关系吧,因为成年人的世界总是不遵守规矩的!
+## 链接
-=> https://blogblog.club/party BlogBlog 同乐会
-=> https://indieweb.org/IndieWeb_Carnival IndieWeb Carnival
+=> https://blogblog.club/party BlogBlog 同乐会
+=> https://indieweb.org/IndieWeb_Carnival IndieWeb Carnival
M posts/emacs-里配置邮箱服务.gmi => posts/emacs-里配置邮箱服务.gmi +52 -57
@@ 1,25 1,23 @@
# Emacs 里配置邮箱服务
-我开始在我的笔记本电脑上使用 EndeavourOS+i3WM 以及 Emacs 了。刚开始使用 Emacs,实在是被它的能力上限所折服,巴不得所有事情都让它来做——例如邮件收发。
+我开始在我的笔记本电脑上使用 EndeavourOS+i3WM 以及 Emacs 了。刚开始使用 Emacs,实在是被它的能力上限所折服,巴不得所有事情都让它来做——例如邮件收发。
-#+MORE
+该文章并不是一篇教程文章,只是分享我的方案。
-该文章并不是一篇教程文章,只是分享我的方案。
+关于邮箱收发,我最终决定使用这样的邮件客户端流:Mu4e 客户端+mbsync。
-关于邮箱收发,我最终决定使用这样的邮件客户端流:Mu4e 客户端+mbsync。
+首先需要安装以下内容:
-首先需要安装以下内容:
-
-```
+```bash
sudo pacman -S isync msmtp msmtp-mta pass
yay -S mu
```
-其中,isync 用于 IMAP 同步,mu 是邮件索引器,msmtp 是 SMTP 客户端用于发送,pass 则是密钥管理器。
+其中,isync 用于 IMAP 同步,mu 是邮件索引器,msmtp 是 SMTP 客户端用于发送,pass 则是密钥管理器。
-配置邮件同步,需要创建 `~/.mbsyncrc' :
+配置邮件同步,需要创建 ~/.mbsyncrc :
-```
+```conf-xdefaults
Create Both
Expunge Both
SyncState *
@@ 46,68 44,66 @@ Near :gmail-local:
Patterns *
```
-在终端初始化目录: `mkdir -p ~/Mail/Gmail' 。
+在终端初始化目录: mkdir -p ~MailGmail 。
-同步前需要生成 GPG 密钥:
+同步前需要生成 GPG 密钥:
-```
+```bash
gpg --full-generate-key
gpg --list-keys
pass init <GPG ID 或者最后 8 位>
pass insert email/gmail
```
-最后一个命令是交互式的,需要自行粘贴邮箱的密码。对于主流的邮箱,需要输入应用密码,Gmail 和 iCloud 都是这样。
-
-使用 `mbsync gmail' 来测试单个邮箱的连接。全部一起连接用 `mbsync -a' 。
+最后一个命令是交互式的,需要自行粘贴邮箱的密码。对于主流的邮箱,需要输入应用密码,Gmail 和 iCloud 都是这样。
+使用 mbsync gmail 来测试单个邮箱的连接。全部一起连接用 mbsync -a 。
### 初始化 mu
-我们需要初始化 mu,告诉它邮件都存放在哪里、哪些是我们的邮箱地址:
+我们需要初始化 mu,告诉它邮件都存放在哪里、哪些是我们的邮箱地址:
-```
+```bash
mu init --maildir=~/Mail \
--my-address=邮箱地址 \
--my-address=另一个邮箱地址
```
-最后建立索引:
+最后建立索引:
-```
+```bash
mu index
```
-
### 将我校邮箱加进来
-CUNY 用的是微软的服务,并且关闭了基本认证,必须使用 OAuth2。
+CUNY 用的是微软的服务,并且关闭了基本认证,必须使用 OAuth2。
-我最初的方案是,弄一个脚本处理 OAuth2 握手并自动刷新令牌,也就是 `mutt_oauth2.py' 脚本(见 neomutt)。这个脚本需要被伪装成 Mozilla Thunderbird,来绕过应用注册审批。
+我最初的方案是,弄一个脚本处理 OAuth2 握手并自动刷新令牌,也就是 mutt_oauth2.py 脚本(见 neomutt)。这个脚本需要被伪装成 Mozilla Thunderbird,来绕过应用注册审批。
-```
+```bash
mkdir -p ~/.mbsync
curl -L -o ~/.mbsync/mutt_oauth2.py https://raw.githubusercontent.com/neomutt/neomutt/master/contrib/oauth2/mutt_oauth2.py
chmod -x ~/.mbsync/mutt_oauth2.py
```
-然后这么调用:
+然后这么调用:
-```
+```bash
python ~/.mbsync/mutt_oauth2.py ~/.mbsync/cuny_token --verbose --authorize --provider microsoft --client-id 9e5f94bc-e8a4-4e73-b8be-63364c29d753 --authflow authcode --email <你的邮箱地址>
```
-出现 Client Secret 时直接按回车,复制终端里给的 URL,最好是在无痕浏览器里登录。登录完会跳转到一个页面,赶紧复制 URL 下来,否则过几秒会跳转到警告页面。这个 URL 里有个 `code' 参数,复制下来(注意后面的 `session_state' 参数,删掉),输入到终端里……
+出现 Client Secret 时直接按回车,复制终端里给的 URL,最好是在无痕浏览器里登录。登录完会跳转到一个页面,赶紧复制 URL 下来,否则过几秒会跳转到警告页面。这个 URL 里有个 code 参数,复制下来(注意后面的 session_state 参数,删掉),输入到终端里……
-然后你会收到 /User is authorized but not connected/ 的消息。
+然后你会收到 User is authorized but not connected 的消息。
-为什么会这样呢?我们的 OAuth2 配置是没有问题的,但是 CUNY IT 部门把邮箱的 IMAP 和 POP 协议都禁用、不让用在应用上。
+为什么会这样呢?我们的 OAuth2 配置是没有问题的,但是 CUNY IT 部门把邮箱的 IMAP 和 POP 协议都禁用、不让用在应用上。
-解决方法是,用 DavMail 在本地机器开启一个 IMAP 端口,mbsync 会连接到它,发送的请求会被转换成 Microsoft EWS 协议,也是 Outlook 网页版和官方客户端使用的协议。DavMail 会向微软的服务器请求数据,并伪装成 IMAP 返回给 mbsync。
+解决方法是,用 DavMail 在本地机器开启一个 IMAP 端口,mbsync 会连接到它,发送的请求会被转换成 Microsoft EWS 协议,也是 Outlook 网页版和官方客户端使用的协议。DavMail 会向微软的服务器请求数据,并伪装成 IMAP 返回给 mbsync。
-创建 `~/.davmail.properties' :
+创建 ~/.davmail.properties :
-```
+```conf-xdefaults
davmail.mode=O365Manual
davmail.uri=https://outlook.office365.com/EWS/Exchange.asmx
davmail.imapPort=1143
@@ 124,22 120,22 @@ davmail.logFilePath=/var/log/davmail.log
davmail.keepDelay=30
```
-`davmail.oauth.clientId' 里的内容是微软 Outlook 官方客户端的 ID。 用 `davmail ~/.davmail.properties' 启动,它会出现一个 URL,也是建议用无痕浏览器使用。唯一的区别是,这次登录后会一直卡着,一定要在登录前打开 Inspect 的 Network 标签页,里面会有一个 302 状态码的请求,location 值里的 URL 有个 `code' 参数,取出来粘贴到 DavMail 里。
+davmail.oauth.clientId 里的内容是微软 Outlook 官方客户端的 ID。
+用 davmail ~/.davmail.properties 启动,它会出现一个 URL,也是建议用无痕浏览器使用。唯一的区别是,这次登录后会一直卡着,一定要在登录前打开 Inspect 的 Network 标签页,里面会有一个 302 状态码的请求,location 值里的 URL 有个 code 参数,取出来粘贴到 DavMail 里。
-在另一个终端里运行 mbsync:
+在另一个终端里运行 mbsync:
-```
+```bash
mbsync cuny
```
-
### 发送邮件
-我们需要使用 msmtp 这个外部程序来发信。
+我们需要使用 msmtp 这个外部程序来发信。
-如果你有着需要使用 DavMail 才能连接上的邮箱地址,msmtp 也需要通过 DavMail 发送邮件。创建 `~/.msmtprc' :
+如果你有着需要使用 DavMail 才能连接上的邮箱地址,msmtp 也需要通过 DavMail 发送邮件。创建 ~/.msmtprc :
-```
+```conf-xdefaults
defaults
auth on
tls off
@@ 165,30 161,29 @@ passwordeval "pass show email/gmail"
tls_trust_file /etc/ssl/certs/ca-certificates.crt
```
-设置文件的权限:
+设置文件的权限:
-```
+```bash
chmod 600 ~/.msmtprc
```
-你可以这样测试发送:
+你可以这样测试发送:
-```
+```bash
echo "This is a test email from msmtp via DavMail." | msmtp --debug --account=发的账户 另一个收的邮箱
```
-
### 配置 Emacs
-现在我们的邮件系统由三个组件协同工作:
+现在我们的邮件系统由三个组件协同工作:
-* mbsync 负责收
-* mu4e 负责界面和索引
-* msmtp 负责发
+* mbsync 负责收
+* mu4e 负责界面和索引
+* msmtp 负责发
-我的方案是,在一个配置文件内写好所有的邮箱账号信息,例如这样:
+我的方案是,在一个配置文件内写好所有的邮箱账号信息,例如这样:
-```
+```lisp
(:name "CUNY" ; 显示名称
:email "邮箱地址"
:fullname "blabla" ; 发件人名
@@ 200,11 195,11 @@ echo "This is a test email from msmtp via DavMail." | msmtp --debug --account=
:archive "Archive") ; 归档
```
-多账号就是一个列表: `(账号1 账号2 ...)' 。
+多账号就是一个列表: (账号1 账号2 ...) 。
-为了让 mu4e 支持多账号,需要写一个函数自动生成 context。
+为了让 mu4e 支持多账号,需要写一个函数自动生成 context。
-```
+```lisp
(defun my/email--make-context (account)
(make-mu4e-context
:name (plist-get account :name)
@@ 216,17 211,17 @@ echo "This is a test email from msmtp via DavMail." | msmtp --debug --account=
...)))
```
-mu4e 很大,建议用 `with-eval-after-load' 延迟配置:
+mu4e 很大,建议用 with-eval-after-load 延迟配置:
-```
+```lisp
(with-eval-after-load 'mu4e
(setq mu4e-maildir "~/Mail")
(setq mu4e-get-mail-command "mbsync -a"))
```
-也可以使用 `--read-envelope-from' 让 msmtp 自动从邮件头的 `From:' 字段选择正确的账号发送:
+也可以使用 --read-envelope-from 让 msmtp 自动从邮件头的 From: 字段选择正确的账号发送:
-```
+```lisp
(setq sendmail-program "/usr/bin/msmtp")
(setq message-send-mail-function 'message-send-mail-with-sendmail)
(setq message-sendmail-extra-arguments '("--read-envelope-from"))
M posts/初次走半马.gmi => posts/初次走半马.gmi +83 -101
@@ 1,189 1,171 @@
# 初次走半马
-室友这些天喜欢看 [橙飞一下] 这个 BiliBili 频道。频道主是一位大胃王,也是一位马拉松跑者,吃饭的时候看他吃饭会格外香。不过呢他跑马拉松这件事情引起了室友那奇怪的好战之心,想要试试一天内走「全马」。不过嘛,结果从本文标题里就可以看出……
+室友这些天喜欢看 橙飞一下 这个 BiliBili 频道。频道主是一位大胃王,也是一位马拉松跑者,吃饭的时候看他吃饭会格外香。不过呢他跑马拉松这件事情引起了室友那奇怪的好战之心,想要试试一天内走「全马」。不过嘛,结果从本文标题里就可以看出……
-#+MORE
+-----
-------------------------------------------------------------------------
+「全马」指的是「全程马拉松」,即 42.195 公里;「半马」顾名思义,是「全马」的一半。虽然通常来说马拉松都是跑的,但你要想走也没有关系,还更适合我这个运动白痴。考虑到我的身体状况和缺陷,我和室友最终决定这一天走完全马即可。
-「全马」指的是「全程马拉松」,即 42.195 公里;「半马」顾名思义,是「全马」的一半。虽然通常来说马拉松都是跑的,但你要想走也没有关系,还更适合我这个运动白痴。考虑到我的身体状况和缺陷,我和室友最终决定这一天走完全马即可。
+这一周室友都很兴奋,还去咨询了自己的几位朋友——她们都是马拉松跑者或者走者,其中一位还是踢踏舞舞者,可以在跑步期间感受到脚步的节奏,听上去颇为有趣——她们给出了一些不错的建议,例如厕所要时刻留意、袜子建议多带几双……
-这一周室友都很兴奋,还去咨询了自己的几位朋友——她们都是马拉松跑者或者走者,其中一位还是踢踏舞舞者,可以在跑步期间感受到脚步的节奏,听上去颇为有趣——她们给出了一些不错的建议,例如厕所要时刻留意、袜子建议多带几双……
+不幸的是,约定好的这天下起了雪。我们原本打算早上四点就起床的,但因为嗜睡、到六点才起,望向窗外时外面已是大雪飘飘。我此时已经打起了退堂鼓:外面又是下雪和下雨,一整天还只有零度,真的有必要在这个日子出去吗?室友则认为既然已经约好了,外面下火也得出去。为了防止冻着自己,她还穿了两层保暖衣,我则是戴了一个从未戴过的针织帽。
-不幸的是,约定好的这天下起了雪。我们原本打算早上四点就起床的,但因为嗜睡、到六点才起,望向窗外时外面已是大雪飘飘。我此时已经打起了退堂鼓:外面又是下雪和下雨,一整天还只有零度,真的有必要在这个日子出去吗?室友则认为既然已经约好了,外面下火也得出去。为了防止冻着自己,她还穿了两层保暖衣,我则是戴了一个从未戴过的针织帽。
+我们身上的装备除了彼此的手机,就是一个充电宝、昨夜剩下的冷鸡块和折叠雨伞。因为担心期间太无聊,我们还带了无线蓝牙耳机,不过这一整天我们都没有使用过就是了。
-我们身上的装备除了彼此的手机,就是一个充电宝、昨夜剩下的冷鸡块和折叠雨伞。因为担心期间太无聊,我们还带了无线蓝牙耳机,不过这一整天我们都没有使用过就是了。
+路线昨天就已经被室友规划好了。我们要先走到昆斯博罗大桥(Queensboro Bridge),它在曼哈顿的东边,连接起了曼哈顿和皇后区。
-路线昨天就已经被室友规划好了。我们要先走到昆斯博罗大桥(Queensboro Bridge),它在曼哈顿的东边,连接起了曼哈顿和皇后区。
+从家里过去的距离大致是五公里,这期间我看到了一个当地餐饮业的趋势:做日料。这里的「日料」指的是那种小手卷,我个人并不爱吃。这种店通常会开在上班族多的地段,价格贵得离谱,材料一眼看过去就是便宜货。但是这种店开得不少,意味着当地人就爱吃这一套。或许我找不到「体面工作」可以考虑下做寿司师傅,算是我的 Plan S 吧。
-从家里过去的距离大致是五公里,这期间我看到了一个当地餐饮业的趋势:做日料。这里的「日料」指的是那种小手卷,我个人并不爱吃。这种店通常会开在上班族多的地段,价格贵得离谱,材料一眼看过去就是便宜货。但是这种店开得不少,意味着当地人就爱吃这一套。或许我找不到「体面工作」可以考虑下做寿司师傅,算是我的 Plan S 吧。
+这五公里走起来很难受,快到桥的时候我们都感觉身体有点不适,遂走去一家最近的 Dunkin' Donuts(唐恩都乐;我的天我都不知道它的中文译名是这个)买了杯抹茶。我不喜欢抹茶,所以没有喝多少,都让室友喝去了。
-这五公里走起来很难受,快到桥的时候我们都感觉身体有点不适,遂走去一家最近的 Dunkin' Donuts(唐恩都乐;我的天我都不知道它的中文译名是这个)买了杯抹茶。我不喜欢抹茶,所以没有喝多少,都让室友喝去了。
+昆斯博罗桥比曼哈顿桥好看点,但是没有布鲁克林大桥好看。我建议想要走桥参观的人们只去布鲁克林大桥,曼哈顿桥实在是太丑了,还特别吵!布鲁克林大桥是西边的那座,不要走错了。说回昆斯博罗桥,我们站在上面望向东河。因为雪,只能看到大片大片的雾,白茫茫的。期间我实在是受不了这个针织帽——它会压住我的眼镜,很是难受——把它戴在了室友头上,别说,还挺搭配。
-昆斯博罗桥比曼哈顿桥好看点,但是没有布鲁克林大桥好看。我建议想要走桥参观的人们只去布鲁克林大桥,曼哈顿桥实在是太丑了,还特别吵!布鲁克林大桥是西边的那座,不要走错了。说回昆斯博罗桥,我们站在上面望向东河。因为雪,只能看到大片大片的雾,白茫茫的。期间我实在是受不了这个针织帽——它会压住我的眼镜,很是难受——把它戴在了室友头上,别说,还挺搭配。
-[./queensboro_bridge.jpg]
-走到桥的一半我们看到了罗斯福岛,我还从未上去过呢。据说可以坐缆车过去,未来可以坐坐看。
+走到桥的一半我们看到了罗斯福岛,我还从未上去过呢。据说可以坐缆车过去,未来可以坐坐看。
-整个桥的长度差不多是二公里,走完后我就走了七公里了,身体意外地没有先前那样不舒服,我也不觉得渴。倒是室友听了「走路大师」的意见后,对厕所产生了执着,非要去找厕所上。我们去了星巴克,室友想着是不是买点东西更好,不然感觉坐在里面不自在。我说你放心,这种店的员工不会在乎的,他们忙得要死哪儿还有精力管你。
+整个桥的长度差不多是二公里,走完后我就走了七公里了,身体意外地没有先前那样不舒服,我也不觉得渴。倒是室友听了「走路大师」的意见后,对厕所产生了执着,非要去找厕所上。我们去了星巴克,室友想着是不是买点东西更好,不然感觉坐在里面不自在。我说你放心,这种店的员工不会在乎的,他们忙得要死哪儿还有精力管你。
-桥下是皇后区的长岛市,是一个对我来说比较新颖的区域。我曾经来过这里的攀岩馆,高兴地接受了自己恐高、抓力弱,以及脚型奇怪穿不了攀岩鞋的事实。长岛市的中国餐厅不少,貌似是一个留学生比较多的地方。房价不能说是特别高?总要比曼哈顿中城的房租便宜吧。它的地理位置也不错,西边可以快速抵达曼哈顿,东边可以坐车去法拉盛大吃一顿(我认为法拉盛作为华人区还是有不可替代的地方在的)。
+桥下是皇后区的长岛市,是一个对我来说比较新颖的区域。我曾经来过这里的攀岩馆,高兴地接受了自己恐高、抓力弱,以及脚型奇怪穿不了攀岩鞋的事实。长岛市的中国餐厅不少,貌似是一个留学生比较多的地方。房价不能说是特别高?总要比曼哈顿中城的房租便宜吧。它的地理位置也不错,西边可以快速抵达曼哈顿,东边可以坐车去法拉盛大吃一顿(我认为法拉盛作为华人区还是有不可替代的地方在的)。
-这时候的路线基本上就是跟着 7 号线和 LIRR(Long Island Rail Road,长岛铁路) 的铁轨走。毕竟是有铁轨的地方,道路都变得宽敞不少,建筑物除了仓库就是加油站,还有一家装修漂亮的狗狗托管所,叫作 Dozo Dog LIC。我们可以通过玻璃清楚地看到里面的狗狗在和工作人员们玩耍。
+这时候的路线基本上就是跟着 7 号线和 LIRR(Long Island Rail Road,长岛铁路) 的铁轨走。毕竟是有铁轨的地方,道路都变得宽敞不少,建筑物除了仓库就是加油站,还有一家装修漂亮的狗狗托管所,叫作 Dozo Dog LIC。我们可以通过玻璃清楚地看到里面的狗狗在和工作人员们玩耍。
-[./under_rail.jpg]
-路上,我向室友提到了一个命题:「你更想要共享知识而将数据都免费开放,还是为了版权和盈利而严厉打击盗版?」她认为只有在自己足够富足的时候,她才愿意将知识分享出去。这让我想起前些时候我做的「你是 Copyleft 还是 Copyright」测试,结果显示我是 Copyright,虽然和 Copyleft 的比例相差没有太大。
-走了一会儿我们走到了 Sunnyside 区,原先以为这就是一个物欲低的住宅区,却没想到发现了一个很大的美食城,不过来的时间太早,还关着门。令人意外的是,这个美食城内貌似都是中国餐厅,但这个区看着并不像华人区。
+路上,我向室友提到了一个命题:「你更想要共享知识而将数据都免费开放,还是为了版权和盈利而严厉打击盗版?」她认为只有在自己足够富足的时候,她才愿意将知识分享出去。这让我想起前些时候我做的「你是 Copyleft 还是 Copyright」测试,结果显示我是 Copyright,虽然和 Copyleft 的比例相差没有太大。
-事后我查了地图,才发现我们走的只不过是 Sunnyside 较为偏僻的那条路,再往南走两个大道就是 7 号线的地铁站以及一大堆餐厅——最开始说你物欲低真是抱歉啦。
+走了一会儿我们走到了 Sunnyside 区,原先以为这就是一个物欲低的住宅区,却没想到发现了一个很大的美食城,不过来的时间太早,还关着门。令人意外的是,这个美食城内貌似都是中国餐厅,但这个区看着并不像华人区。
-走到一个供孩童玩耍的公园时,发现门口摆放着数个椅子和箱子,好像是临时放在这里的活动用具。其中一个蓝色箱子上贴着 /Cursed Books/ 的字眼,真是好笑。
+事后我查了地图,才发现我们走的只不过是 Sunnyside 较为偏僻的那条路,再往南走两个大道就是 7 号线的地铁站以及一大堆餐厅——最开始说你物欲低真是抱歉啦。
-[./cursed_books.jpg]
+走到一个供孩童玩耍的公园时,发现门口摆放着数个椅子和箱子,好像是临时放在这里的活动用具。其中一个蓝色箱子上贴着 Cursed Books 的字眼,真是好笑。
-回看照片时发现 /C/ 没有被拍到,我更好笑。
-再往东走,可以看到一个土耳其小超市,卖很多精致的甜品和零食,价格并不贵。吸引我们走进去的是它门口用中文写着「我们有卖奶皮子喔!」走进去找了半天并没有找到这个叫作「奶皮子」的东西,到底什么是「奶皮子」啊?
-[./nai_pi_zi.jpg]
+回看照片时发现 C 没有被拍到,我更好笑。
-隔着一条街有一家归正宗教堂,意外的是他们居然对性少数群体友善。我简单地查了一下,这主要是源于开放派教会的观点,认为对圣经的解释可以随着社会对正义、人权和科学理解的进步而不断更新。
+再往东走,可以看到一个土耳其小超市,卖很多精致的甜品和零食,价格并不贵。吸引我们走进去的是它门口用中文写着「我们有卖奶皮子喔!」走进去找了半天并没有找到这个叫作「奶皮子」的东西,到底什么是「奶皮子」啊?
-这让我想起了《地。-关于地球的运动-》这部漫画里临近尾声的一幕,一位角色作为教会的人,反对了教会整部漫画里对地动说的看法——「地球是动的又如何?这反而可以证明上帝的伟大,我们对圣经的解释不应该拘泥于过去的错误理解。」
-[./reformed_church.jpg]
-走到 Woodside 区时,或者说重新回到 7 号线高架下时,可以明显感受到我们走到了一个人口密集的社区。这里感觉是墨西哥人的社区,道路十分拥挤的情况下还能看到很多人在路边摆摊、开餐车。你还别说,有些烧烤摊的串串看上去很好吃的样子,就是不知道多少钱。
+隔着一条街有一家归正宗教堂,意外的是他们居然对性少数群体友善。我简单地查了一下,这主要是源于开放派教会的观点,认为对圣经的解释可以随着社会对正义、人权和科学理解的进步而不断更新。
-因为下了雪,高架上积累了不少水,一滴滴往我们头上流。走这一段路是我认为这一天里最痛苦的经历,人实在是太多了,还要撑着伞挡着头上的雨水,时不时还有雪下下来。因为快到法拉盛了,我们也不打算在这里就餐,只能饿着肚子继续向前走。
+这让我想起了《地。-关于地球的运动-》这部漫画里临近尾声的一幕,一位角色作为教会的人,反对了教会整部漫画里对地动说的看法——「地球是动的又如何?这反而可以证明上帝的伟大,我们对圣经的解释不应该拘泥于过去的错误理解。」
-我发现这种社区里一定会开不少花店,让我很好奇花店赚钱么,明明这里的花店的价格也不是很贵的样子。
-[./flower_shop.jpg]
-一位朋友住在 Woodside 区旁边的一个区,我给他发了一个定位,让他猜猜我是怎么过来的。他听到我说我是步行走过来之后,整个人都惊讶得不行,连发了许多问号,哈哈!
+走到 Woodside 区时,或者说重新回到 7 号线高架下时,可以明显感受到我们走到了一个人口密集的社区。这里感觉是墨西哥人的社区,道路十分拥挤的情况下还能看到很多人在路边摆摊、开餐车。你还别说,有些烧烤摊的串串看上去很好吃的样子,就是不知道多少钱。
-走了这么久,找厕所就成了一个问题。我推荐一个开源的 App,叫作 LavSeeker,可以根据 OpenStreetMap 上的信息在地图上显示厕所的位置。不过这个 App 有一些使用上的逻辑问题,比如用户的位置不是实时获取的,需要点击右上角的按钮先定位一下,过一小段时间才会显示附近最近的厕所。因为太冷了,我除了拍照外都鲜有掏出手机的时候,绝大多数情况下我们还是进店里问有没有厕所。
+因为下了雪,高架上积累了不少水,一滴滴往我们头上流。走这一段路是我认为这一天里最痛苦的经历,人实在是太多了,还要撑着伞挡着头上的雨水,时不时还有雪下下来。因为快到法拉盛了,我们也不打算在这里就餐,只能饿着肚子继续向前走。
-多数本地的店里都不提供厕所,就算有、也需要你买东西成为「顾客」才可以给你使用。不过有些地方还是一定会有厕所的,例如星巴克、麦当劳和超市(首选那种连锁超市,例如 Whole Foods)。偏僻的地方可以考虑问问加油站,以及找公园。公园里的厕所比想象中干净那么一点点,但还是有着说不上来的压抑感。
+我发现这种社区里一定会开不少花店,让我很好奇花店赚钱么,明明这里的花店的价格也不是很贵的样子。
-[./dragon_ball_z.jpg]
-言归正传,我们走到了花旗球场。这里人烟稀少,路上都是厚厚的雪,走起来很不舒服。我很后悔没有穿靴子来,不过我的脚就算穿靴子了,也会先因为脚型奇怪而提前喊苦吧。室友为了好看,穿上了漂亮的羊毛大衣,但是这个材质会吸水,在雪天待久了只会徒增难受。
-[./citi_field.jpg]
+一位朋友住在 Woodside 区旁边的一个区,我给他发了一个定位,让他猜猜我是怎么过来的。他听到我说我是步行走过来之后,整个人都惊讶得不行,连发了许多问号,哈哈!
-室友这时候提起了昨天她去参加的生日派对。她一直都是一个不喜欢和「无聊的人」打交道的人,对「朋友」的标准很高——在她眼里,好朋友只有我一个,剩下的都是酒肉朋友或者生意伙伴。过生日的这个人(以下简称甲)对她来说就是个「有点无聊的人」。不过碍于甲很喜欢她,两人之间有点交情,她最终还是接受了派对邀请。
+走了这么久,找厕所就成了一个问题。我推荐一个开源的 App,叫作 LavSeeker,可以根据 OpenStreetMap 上的信息在地图上显示厕所的位置。不过这个 App 有一些使用上的逻辑问题,比如用户的位置不是实时获取的,需要点击右上角的按钮先定位一下,过一小段时间才会显示附近最近的厕所。因为太冷了,我除了拍照外都鲜有掏出手机的时候,绝大多数情况下我们还是进店里问有没有厕所。
-搞笑的是,室友之前为了公司而做的宣传视频被甲的朋友挖了出来(是的,室友就是我口中的「项目管理」;整个故事见 [十一月十日]),还被私下嘲笑。这件事要是她不知道也就罢了,偏偏甲莫名其妙地选择了直接把聊天记录甩给她看,搞得她心里七上八下——「你的朋友嘲笑了我,你给我看又是想怎样?」甲虽表示无意冒犯,觉得这些记录可能对她有帮助,但这逻辑实在感人。
+多数本地的店里都不提供厕所,就算有、也需要你买东西成为「顾客」才可以给你使用。不过有些地方还是一定会有厕所的,例如星巴克、麦当劳和超市(首选那种连锁超市,例如 Whole Foods)。偏僻的地方可以考虑问问加油站,以及找公园。公园里的厕所比想象中干净那么一点点,但还是有着说不上来的压抑感。
-很多时候,人做错事若是源于「坏」,尚有逻辑可循;但若是源于「蠢」,就真得小心了,因为你根本不知道他在想什么。甲显然属于后者。室友说,她根本不知道甲在那些朋友面前传了什么话,因为甲既然能把朋友的闲话复述给她,就意味着在甲心里,这种「双向传话」压根无所谓。
-据说那群人在背地里把她无缘无故数落了一通,还追问甲关于她的事情。甲转头又把这事告诉了她,惹得她烦躁地表示:「你们要是想要知道什么的话就直接来问我吧!」但果不其然,没有人敢主动联系她。
-这次生日派对里,甲的那些朋友也在场。那些背地里说得最欢的人,见了面却不敢吭声,装作初次相识,这让室友倍感无趣。整个派对的氛围也很诡异:明明甲才是寿星,全程叽叽喳喳抢话的却是那群人。他们不仅声音很大、时不时爆粗口,还喜欢在公共场合高谈阔论一些不合时宜的话题,例如「孩童被强奸和种族歧视,你最能接受哪一个?」拜托,这种问题私底下说说也就算了,不要在公共场合大声说出来啊!
+言归正传,我们走到了花旗球场。这里人烟稀少,路上都是厚厚的雪,走起来很不舒服。我很后悔没有穿靴子来,不过我的脚就算穿靴子了,也会先因为脚型奇怪而提前喊苦吧。室友为了好看,穿上了漂亮的羊毛大衣,但是这个材质会吸水,在雪天待久了只会徒增难受。
-总之,这场生日派对算是还了甲的人情。事后她问我我会不会开生日派对,我回道:「你想想跟我认识的这些年来我开过吗,我只有『被开生日派对』的份儿。」她被逗乐了,两人哈哈哈地笑作一团。
-走过花旗球场,就能抵达华人区法拉盛。不过在说法拉盛之前,我要先说一下球场附近好玩的东西:室内溜冰场 World Ice Arena。这里的价格不算贵,还提供付费教学课。不过据说曼哈顿中城 Bryant Park 的那个溜冰场可以免费入场。
-至于为什么我会想要提起这件事,是因为我们穿过法拉盛河时,路上有两个女生叫住了我们,问我们知不知道 World Ice Arena 在哪里。根据她们来的方向,我推测出原先告诉她们路线的人并不知道如何快速抵达这个溜冰场:假设你从 Mets-Willets Point 站下车(无论是 LIRR 还是 7 号线地铁),你都可以通过南边的 David Dinkins Circle 一路向东走到溜冰场。然而她们的原定路线是向东走到法拉盛的 Main Street 再从西南方向走,相当于绕了一大圈。
+室友这时候提起了昨天她去参加的生日派对。她一直都是一个不喜欢和「无聊的人」打交道的人,对「朋友」的标准很高——在她眼里,好朋友只有我一个,剩下的都是酒肉朋友或者生意伙伴。过生日的这个人(以下简称甲)对她来说就是个「有点无聊的人」。不过碍于甲很喜欢她,两人之间有点交情,她最终还是接受了派对邀请。
-说回法拉盛,这可是纽约市相当有名的华人区。这里有着各种各样的美食,对我这个北方胃+碳水大王来说实在是喜欢得不得了。像海底捞、快乐小羊等国内知名品牌都在法拉盛有分店,不过这类店我吃得不多,我最喜欢的还是本地一个面馆——皇后区法拉盛公共图书馆附近的郑州烩面。听名字会以为它是一家普通的面馆,但其实提供的食物很多,量大管饱好吃的同时还不贵,实在是太稀奇了。我偶尔来这里玩舞萌 DX 时,就会来这家点上一碗羊肉烩面吃。
+搞笑的是,室友之前为了公司而做的宣传视频被甲的朋友挖了出来(是的,室友就是我口中的「项目管理」;整个故事见 十一月十日),还被私下嘲笑。这件事要是她不知道也就罢了,偏偏甲莫名其妙地选择了直接把聊天记录甩给她看,搞得她心里七上八下——「你的朋友嘲笑了我,你给我看又是想怎样?」甲虽表示无意冒犯,觉得这些记录可能对她有帮助,但这逻辑实在感人。
-不过这次是和室友一起来的,她对碳水不是特别感冒,想要点个菜我俩一起就着大米饭吃。最后我俩选的是干锅肥肠,加了份藕片(居然要六块钱),她一碗大米饭,我两碗。最后小费前总计三十块整。整体服务还可以,当时有点忙服务生跑来跑去的,也能理解一点吧。这家店还会提供免费茶水,茶水没了也会主动给你续,光是这点我就觉得给小费很理所当然。
+很多时候,人做错事若是源于「坏」,尚有逻辑可循;但若是源于「蠢」,就真得小心了,因为你根本不知道他在想什么。甲显然属于后者。室友说,她根本不知道甲在那些朋友面前传了什么话,因为甲既然能把朋友的闲话复述给她,就意味着在甲心里,这种「双向传话」压根无所谓。
-[./gj_go_fw_ih.jpg]
+据说那群人在背地里把她无缘无故数落了一通,还追问甲关于她的事情。甲转头又把这事告诉了她,惹得她烦躁地表示:「你们要是想要知道什么的话就直接来问我吧!」但果不其然,没有人敢主动联系她。
-吃饭期间来了一个乞讨的,我前段时间来法拉盛玩舞萌 DX 时也遇到了这个人。他在店里走来走去,用英语说着他失业了,问有人能不能给他钱。老板娘用中文告诉我们不要给他钱,他这么年轻就出来乞讨要钱,如果给了钱他未来每天都会来,到时候店就不要开了。
+这次生日派对里,甲的那些朋友也在场。那些背地里说得最欢的人,见了面却不敢吭声,装作初次相识,这让室友倍感无趣。整个派对的氛围也很诡异:明明甲才是寿星,全程叽叽喳喳抢话的却是那群人。他们不仅声音很大、时不时爆粗口,还喜欢在公共场合高谈阔论一些不合时宜的话题,例如「孩童被强奸和种族歧视,你最能接受哪一个?」拜托,这种问题私底下说说也就算了,不要在公共场合大声说出来啊!
-见没有人理他,他还走到大门口处挡着其他客人、不让他们进来。要不到钱还恶意妨碍店内生意,实在是不道德。
+总之,这场生日派对算是还了甲的人情。事后她问我我会不会开生日派对,我回道:「你想想跟我认识的这些年来我开过吗,我只有『被开生日派对』的份儿。」她被逗乐了,两人哈哈哈地笑作一团。
-可能也有读者认为这种人很苦,给点钱不好么。说实话,只要你来纽约市久了,自然而然就会对这种乞讨者祛魅。
+走过花旗球场,就能抵达华人区法拉盛。不过在说法拉盛之前,我要先说一下球场附近好玩的东西:室内溜冰场 World Ice Arena。这里的价格不算贵,还提供付费教学课。不过据说曼哈顿中城 Bryant Park 的那个溜冰场可以免费入场。
-吃完饭后我们继续向东进发。这时候我们已经走了十七公里。路上路过了 Koreatown(韩国城),也就是韩国人版本的唐人街。在曼哈顿中城也有一个韩国城,就在 Macy's(梅西百货)附近。
+至于为什么我会想要提起这件事,是因为我们穿过法拉盛河时,路上有两个女生叫住了我们,问我们知不知道 World Ice Arena 在哪里。根据她们来的方向,我推测出原先告诉她们路线的人并不知道如何快速抵达这个溜冰场:假设你从 Mets-Willets Point 站下车(无论是 LIRR 还是 7 号线地铁),你都可以通过南边的 David Dinkins Circle 一路向东走到溜冰场。然而她们的原定路线是向东走到法拉盛的 Main Street 再从西南方向走,相当于绕了一大圈。
-我们经过了一个华人超市,在里面买了一些小零嘴和桃子味儿的脉动,现在想来其实应该买外星人电解质水。除了矿泉水,瓶装饮料里我只会喝小样和可乐,去超市也是为了找小样。离开超市的时候我才发现其实有卖小样,只是不单卖,很是让我气愤。
+说回法拉盛,这可是纽约市相当有名的华人区。这里有着各种各样的美食,对我这个北方胃+碳水大王来说实在是喜欢得不得了。像海底捞、快乐小羊等国内知名品牌都在法拉盛有分店,不过这类店我吃得不多,我最喜欢的还是本地一个面馆——皇后区法拉盛公共图书馆附近的郑州烩面。听名字会以为它是一家普通的面馆,但其实提供的食物很多,量大管饱好吃的同时还不贵,实在是太稀奇了。我偶尔来这里玩舞萌 DX 时,就会来这家点上一碗羊肉烩面吃。
-[./utopia_pkwy.jpg]
+不过这次是和室友一起来的,她对碳水不是特别感冒,想要点个菜我俩一起就着大米饭吃。最后我俩选的是干锅肥肠,加了份藕片(居然要六块钱),她一碗大米饭,我两碗。最后小费前总计三十块整。整体服务还可以,当时有点忙服务生跑来跑去的,也能理解一点吧。这家店还会提供免费茶水,茶水没了也会主动给你续,光是这点我就觉得给小费很理所当然。
-先前室友上厕所时我翻阅着 Mastodon 解闷儿,看到一篇和 Crypto,即虚拟货币相关的嘟文串。我对金融并不了解,只是大概地知道它在技术方面上的实现原理。室友和我完全相反,她是个技术小白,但在金融和商业嗅觉上却极其敏锐。
-她说现在各国政府都开始监管 Crypto,并不推荐靠 Crypto 来避税,一般人当股票玩玩就好了。就算是想要自由地使用自己的资产,也会因为售卖货币的机构已经和政府有关联而变得很难。无论如何买币的人的信息都会被上交给政府,而美国政府对于人民的调查权是无限期的,也就是说政府哪天抽风了就是想查查你玩,你就一定会被扒干净。
-她认为这类建议最好不要盲从。如果未来真的出了问题,你是找不到出建议的人的,想要玩的话还是先自己学明白吧。
+吃饭期间来了一个乞讨的,我前段时间来法拉盛玩舞萌 DX 时也遇到了这个人。他在店里走来走去,用英语说着他失业了,问有人能不能给他钱。老板娘用中文告诉我们不要给他钱,他这么年轻就出来乞讨要钱,如果给了钱他未来每天都会来,到时候店就不要开了。
-这番话引出了我心中长期存在的一个疑问:Crypto 和股票到底有什么区别?她耐心地给我补了堂金融课。
+见没有人理他,他还走到大门口处挡着其他客人、不让他们进来。要不到钱还恶意妨碍店内生意,实在是不道德。
-股票的本质是你拥有一家公司的一部分。对于上市公司而言,它们通过出让股份来筹集资金去研发和扩张,因此可以被一般人买去。每一年它们需要根据赚来的钱选择取多少给研发、取多少分红给股东。
+可能也有读者认为这种人很苦,给点钱不好么。说实话,只要你来纽约市久了,自然而然就会对这种乞讨者祛魅。
-有人想要提前变现,有人想现在就入场……于是一个股票市场就出现了:我认为这家公司会赚很多钱,持有它的股票能够拿到更多的分红,所以我要买这家公司的股份;你觉得这家公司赚钱有点悬,所以想要赶紧卖出避免亏损。根据双方预测的股份价值,我们会进行一次交易。也就是说股份的价值是完全主观的,基于我们认为它值多少钱。但是股市所锚定的是公司的生产力,是实体资产。
+吃完饭后我们继续向东进发。这时候我们已经走了十七公里。路上路过了 Koreatown(韩国城),也就是韩国人版本的唐人街。在曼哈顿中城也有一个韩国城,就在 Macy's(梅西百货)附近。
-我想起了两件事:一个是特朗普刚上台没多久和马斯克之间的冲突,市场担心特斯拉被针对,导致大量投资者抛售特斯拉股票;另一个是去年 CS2 还是 CS:GO 因为 Valve 的操作、导致整个饰品市场一夜之间崩盘。
+我们经过了一个华人超市,在里面买了一些小零嘴和桃子味儿的脉动,现在想来其实应该买外星人电解质水。除了矿泉水,瓶装饮料里我只会喝小样和可乐,去超市也是为了找小样。离开超市的时候我才发现其实有卖小样,只是不单卖,很是让我气愤。
-股份、Crypto 和游戏资产都是数字资产,这些东西并不是客观存在的,也都有一个可以随意控制市场的「角色」存在——股份是分发股票的公司,Crypto 是政府的监管,游戏资产则是游戏公司。
-区别在于,分发股票的公司受法律保护,还算稳定些,虽然还是有着「炒」的元素在;游戏资产是纯粹的割韭菜;而 Crypto 的重点在于「共识」,说直白点它完全依赖于市场里的人相不相信它值钱。一旦监管介入,切断了法币入金和出金的渠道,或者像室友说的那样开始秋后算账,「共识」就会迅速崩塌。
-[./do_not_fear_enter.jpg]
+先前室友上厕所时我翻阅着 Mastodon 解闷儿,看到一篇和 Crypto,即虚拟货币相关的嘟文串。我对金融并不了解,只是大概地知道它在技术方面上的实现原理。室友和我完全相反,她是个技术小白,但在金融和商业嗅觉上却极其敏锐。
-我们沿着纽约州公路 25A 继续向东走,时不时可以看到中国餐厅、韩国餐厅和日本餐厅,但是整个区域给人感觉不知道是什么区,好像什么人都有,又好像什么人都没有。
+她说现在各国政府都开始监管 Crypto,并不推荐靠 Crypto 来避税,一般人当股票玩玩就好了。就算是想要自由地使用自己的资产,也会因为售卖货币的机构已经和政府有关联而变得很难。无论如何买币的人的信息都会被上交给政府,而美国政府对于人民的调查权是无限期的,也就是说政府哪天抽风了就是想查查你玩,你就一定会被扒干净。
-[./nj_uj_hot_pot.jpg]
+她认为这类建议最好不要盲从。如果未来真的出了问题,你是找不到出建议的人的,想要玩的话还是先自己学明白吧。
-快走到 Little Neck Bridge 的时候我已经感觉到达了自己的极限,也就是半马。这时候的我膝盖后方的肌肉明显开始抽搐,疼痛不已,只能靠僵硬地移动大腿根部的骨头来行走。
+这番话引出了我心中长期存在的一个疑问:Crypto 和股票到底有什么区别?她耐心地给我补了堂金融课。
-我们停在了那附近的 Popeyes(博派斯;派派思;大力水手炸鸡;佰百鸡……译名真多),点了份五美元的炸鸡吃,然后我就吃到了这辈子最难吃的炸鸡——又油又干,鸡翅炸老了,咬下去连骨头都是脆的,肉硬得不行,真是恶心!没吃几口我就把食物打包了起来。
+股票的本质是你拥有一家公司的一部分。对于上市公司而言,它们通过出让股份来筹集资金去研发和扩张,因此可以被一般人买去。每一年它们需要根据赚来的钱选择取多少给研发、取多少分红给股东。
-因为我到了极限,室友不得不调整我们的行走路线。她原先的计划是走到 LIRR 的 Great Neck 站点,然后再往西南方向走去 Jamaica(牙买加)站点,完成全马的目标。
+有人想要提前变现,有人想现在就入场……于是一个股票市场就出现了:我认为这家公司会赚很多钱,持有它的股票能够拿到更多的分红,所以我要买这家公司的股份;你觉得这家公司赚钱有点悬,所以想要赶紧卖出避免亏损。根据双方预测的股份价值,我们会进行一次交易。也就是说股份的价值是完全主观的,基于我们认为它值多少钱。但是股市所锚定的是公司的生产力,是实体资产。
-此牙买加非彼牙买加,只是皇后区的一个社区而已,约翰·肯尼迪国际机场就在这里。
+我想起了两件事:一个是特朗普刚上台没多久和马斯克之间的冲突,市场担心特斯拉被针对,导致大量投资者抛售特斯拉股票;另一个是去年 CS2 还是 CS:GO 因为 Valve 的操作、导致整个饰品市场一夜之间崩盘。
-问题在于,这时候天已经开始黑了,我走完半马就已经开始身体不适,继续往东走只怕会愈来愈难回家,更何况雪依旧在下着。室友明显看着很不开心,但为了我的状况,最后决定一起走到牙买加区的 F 号线最后一站,然后坐 F 号线回家。
+股份、Crypto 和游戏资产都是数字资产,这些东西并不是客观存在的,也都有一个可以随意控制市场的「角色」存在——股份是分发股票的公司,Crypto 是政府的监管,游戏资产则是游戏公司。
-离开了更繁荣的主道路后,我才意识到人烟稀少的住宅区有多么难走。这里和城市的住宅区不同,路上几乎没有人,人们出行都是靠车,这也代表人行道都被大学覆盖,有些人行道干脆设计得很有问题,像是不希望人们在这里走的样子。
+区别在于,分发股票的公司受法律保护,还算稳定些,虽然还是有着「炒」的元素在;游戏资产是纯粹的割韭菜;而 Crypto 的重点在于「共识」,说直白点它完全依赖于市场里的人相不相信它值钱。一旦监管介入,切断了法币入金和出金的渠道,或者像室友说的那样开始秋后算账,「共识」就会迅速崩塌。
-[./random_road.jpg]
-说实话,就算是让我走到 F 号线的最后一站,那也是差不多七公里的距离。我已经临近了身体的极限,还因为忘记在 Popeyes 上厕所,膀胱憋得难受,实在是走不到那里,所以还是让室友在 Oakland Gardens 区提前停止了走马。我们在公交站的附近找了下厕所,一家 99 美分店(AKA 一元店)很好心地给了我们他们厕所的钥匙,实在是太友善了。
-比较好笑的是,我上完厕所后立马觉得身体抖擞,好像又可以继续走了。不过我还是没有那么做……天黑了快回家吧,下次可以继续,我明天还要上班呢。
+我们沿着纽约州公路 25A 继续向东走,时不时可以看到中国餐厅、韩国餐厅和日本餐厅,但是整个区域给人感觉不知道是什么区,好像什么人都有,又好像什么人都没有。
-[./long_is_expwy_bus_stop.jpg]
-接下来就是坐公交、转地铁、回家了。下车时看着无比熟悉的地铁站,忽然觉得今天的所有经历像梦一样。哎,我居然一路走到了那么远?我吗?回家后我们先是洗了澡。感受着热水从花洒里喷到身体上的感觉,我心里想着现代技术的发达和我有多幸福——或许人就是这么「下贱」吧,必须得感觉难受才会知道平日过得有多舒服。
-室友和父母打电话的期间,她的体质真是可怕,居然意犹未尽,还想要之后每两周走一次马。我和你们这群有足弓的人没话说。
+快走到 Little Neck Bridge 的时候我已经感觉到达了自己的极限,也就是半马。这时候的我膝盖后方的肌肉明显开始抽搐,疼痛不已,只能靠僵硬地移动大腿根部的骨头来行走。
-我躺在床上查看自己今天拍的照片。我有个自托管的 Immich(虽然只是本地的 Docker 容器),可以很轻松地将手机上的照片上传到电脑上查看。看着地图里的图片分布,让人觉得无比有成就感。虽然今天只走了半马,并没有达成室友原先定的全马目标,但已经够了。我打算先将今天所发生的事情都写成博客文章发布,结果写到一半我就坐着睡着了……所以这篇文章是隔了一天才写完的。
+我们停在了那附近的 Popeyes(博派斯;派派思;大力水手炸鸡;佰百鸡……译名真多),点了份五美元的炸鸡吃,然后我就吃到了这辈子最难吃的炸鸡——又油又干,鸡翅炸老了,咬下去连骨头都是脆的,肉硬得不行,真是恶心!没吃几口我就把食物打包了起来。
-这是我第一次写流水账。流水账如何才能写得好呢?我很好奇,毕竟我还在国内上小学时老师可没有教我这个。我现在只能靠图片来分隔开一些内容,但或许整体看上去还是会有点无聊?总之我已经很努力在使用连接词了……呃啊。
+因为我到了极限,室友不得不调整我们的行走路线。她原先的计划是走到 LIRR 的 Great Neck 站点,然后再往西南方向走去 Jamaica(牙买加)站点,完成全马的目标。
-这也是我第二次用 Emacs 写博客文章。Hexo 框架本身并没有那么支持 Org Mode,就算使用 Org Mode 渲染器也就只是把 Markdown 换成 Org Mode 来写,还是没有很棒地利用起 Emacs+Org Mode。
+此牙买加非彼牙买加,只是皇后区的一个社区而已,约翰·肯尼迪国际机场就在这里。
-我的方案是先创建一个专门存放 Org Mode 文件的目录,这个目录也会被我用来存放 GTD(Getting Things Done 的简写,是一种时间管理系统,未来我会写一篇和这有关的文章) 工作流相关的文件。当我写完了这篇 Org Mode 文章,我会用 Emacs 配置内我已经写好的方法将其转换成 Markdown 文件,并保存在 Hexo 源文件内,这期间 Front Matter 什么的都可以利用 Emacs 来完成,实在是太方便了!
+问题在于,这时候天已经开始黑了,我走完半马就已经开始身体不适,继续往东走只怕会愈来愈难回家,更何况雪依旧在下着。室友明显看着很不开心,但为了我的状况,最后决定一起走到牙买加区的 F 号线最后一站,然后坐 F 号线回家。
-扯远了。让我总结这一天的话,我认为走马是一个颇为有意思的活动。如果有一个有趣的朋友陪着自己完成的话,全程不会特别无聊。不过室友认识的马拉松跑者或者走者平日都是独自一人完成目标,要是你是一个享受这一活动的人的话,说不定走着走着就会进入心流状态呢?
+离开了更繁荣的主道路后,我才意识到人烟稀少的住宅区有多么难走。这里和城市的住宅区不同,路上几乎没有人,人们出行都是靠车,这也代表人行道都被大学覆盖,有些人行道干脆设计得很有问题,像是不希望人们在这里走的样子。
-:CAPTURED: [2026-01-18 Sun 21:03]
-=> https://space.bilibili.com/8263502 橙飞一下
-=> ./queensboro_bridge.jpg ./queensboro_bridge.jpg
-=> ./under_rail.jpg ./under_rail.jpg
-=> ./cursed_books.jpg ./cursed_books.jpg
-=> ./nai_pi_zi.jpg ./nai_pi_zi.jpg
-=> ./reformed_church.jpg ./reformed_church.jpg
-=> ./flower_shop.jpg ./flower_shop.jpg
-=> ./dragon_ball_z.jpg ./dragon_ball_z.jpg
-=> ./citi_field.jpg ./citi_field.jpg
-=> /posts/31df.html#%E6%97%A5%E8%AE%B0%E7%89%87%E6%AE%B5 十一月十日
-=> ./gj_go_fw_ih.jpg ./gj_go_fw_ih.jpg
-=> ./utopia_pkwy.jpg ./utopia_pkwy.jpg
-=> ./do_not_fear_enter.jpg ./do_not_fear_enter.jpg
-=> ./nj_uj_hot_pot.jpg ./nj_uj_hot_pot.jpg
-=> ./random_road.jpg ./random_road.jpg
-=> ./long_is_expwy_bus_stop.jpg ./long_is_expwy_bus_stop.jpg
+说实话,就算是让我走到 F 号线的最后一站,那也是差不多七公里的距离。我已经临近了身体的极限,还因为忘记在 Popeyes 上厕所,膀胱憋得难受,实在是走不到那里,所以还是让室友在 Oakland Gardens 区提前停止了走马。我们在公交站的附近找了下厕所,一家 99 美分店(AKA 一元店)很好心地给了我们他们厕所的钥匙,实在是太友善了。
+
+比较好笑的是,我上完厕所后立马觉得身体抖擞,好像又可以继续走了。不过我还是没有那么做……天黑了快回家吧,下次可以继续,我明天还要上班呢。
+
+
+
+接下来就是坐公交、转地铁、回家了。下车时看着无比熟悉的地铁站,忽然觉得今天的所有经历像梦一样。哎,我居然一路走到了那么远?我吗?回家后我们先是洗了澡。感受着热水从花洒里喷到身体上的感觉,我心里想着现代技术的发达和我有多幸福——或许人就是这么「下贱」吧,必须得感觉难受才会知道平日过得有多舒服。
+
+室友和父母打电话的期间,她的体质真是可怕,居然意犹未尽,还想要之后每两周走一次马。我和你们这群有足弓的人没话说。
+
+我躺在床上查看自己今天拍的照片。我有个自托管的 Immich(虽然只是本地的 Docker 容器),可以很轻松地将手机上的照片上传到电脑上查看。看着地图里的图片分布,让人觉得无比有成就感。虽然今天只走了半马,并没有达成室友原先定的全马目标,但已经够了。我打算先将今天所发生的事情都写成博客文章发布,结果写到一半我就坐着睡着了……所以这篇文章是隔了一天才写完的。
+
+这是我第一次写流水账。流水账如何才能写得好呢?我很好奇,毕竟我还在国内上小学时老师可没有教我这个。我现在只能靠图片来分隔开一些内容,但或许整体看上去还是会有点无聊?总之我已经很努力在使用连接词了……呃啊。
+
+这也是我第二次用 Emacs 写博客文章。Hexo 框架本身并没有那么支持 Org Mode,就算使用 Org Mode 渲染器也就只是把 Markdown 换成 Org Mode 来写,还是没有很棒地利用起 Emacs+Org Mode。
+
+我的方案是先创建一个专门存放 Org Mode 文件的目录,这个目录也会被我用来存放 GTD(Getting Things Done 的简写,是一种时间管理系统,未来我会写一篇和这有关的文章) 工作流相关的文件。当我写完了这篇 Org Mode 文章,我会用 Emacs 配置内我已经写好的方法将其转换成 Markdown 文件,并保存在 Hexo 源文件内,这期间 Front Matter 什么的都可以利用 Emacs 来完成,实在是太方便了!
+
+扯远了。让我总结这一天的话,我认为走马是一个颇为有意思的活动。如果有一个有趣的朋友陪着自己完成的话,全程不会特别无聊。不过室友认识的马拉松跑者或者走者平日都是独自一人完成目标,要是你是一个享受这一活动的人的话,说不定走着走着就会进入心流状态呢?
+
+## 链接
+
+=> https://space.bilibili.com/8263502 橙飞一下
M posts/女人的血.gmi => posts/女人的血.gmi +21 -28
@@ 1,50 1,43 @@
# 女人的血
-:CAPTURED: [2026-02-11 Wed 22:22]
+女人,或者说有雌性生殖器官的人,又或者说需要生产卵子来进行繁殖生育的哺乳动物,都会有月经吧。以防万一有人不知道月经的底层逻辑,它本质上是卵子死去时流出的血液。女人需要每个月更换卵子,经历「流血的七天、安全期、卵子生成的发情期」这样的 28 天循环,直到无法生育。这期间有一个例外,那便是怀孕。
-女人,或者说有雌性生殖器官的人,又或者说需要生产卵子来进行繁殖生育的哺乳动物,都会有月经吧。以防万一有人不知道月经的底层逻辑,它本质上是卵子死去时流出的血液。女人需要每个月更换卵子,经历「流血的七天、安全期、卵子生成的发情期」这样的 28 天循环,直到无法生育。这期间有一个例外,那便是怀孕。
+要说月经有多么不便,一是伴随而来的腹痛和肌肉酸痛,二是下体那无法离去的黏稠感,三是对于流血这件事情的恐惧——这里主要指的是不知道什么时候流血,以及在实际确认前不知道自己流了多少。量就像死或者没死的猫,无论是哪个结果,在打开箱子前我们作为观测者都是心惊胆跳的。
-#+MORE
+五年级的时候,我流出了第一滩月经血。那是一坨黑色的东西,附在我彩色的凯蒂猫睡裤上,当然还有内裤上。我对它的第一个反应,便是恐怖——废话,身体不舒服去蹲个马桶,刚脱下裤子就是这么一大滩黑色的玩意儿,哪个小孩儿不会被吓到。和近乎所有中二的小孩儿一样,我的第二个反应是「我该不会得了什么绝症吧」,进而得出自己是「特殊的」这件事。
-要说月经有多么不便,一是伴随而来的腹痛和肌肉酸痛,二是下体那无法离去的黏稠感,三是对于流血这件事情的恐惧——这里主要指的是不知道什么时候流血,以及在实际确认前不知道自己流了多少。量就像死或者没死的猫,无论是哪个结果,在打开箱子前我们作为观测者都是心惊胆跳的。
+也和近乎所有中二的小孩儿一样,我认为「特殊」的事情,不过是世界上比我能数出的数字更多的人正在经历的事情。因为母亲像是没事人一样说,「我也到那个年纪了」,然后像是被逗乐般,告诉我如何使用卫生巾。使用卫生巾是一个极其不适的事情:你的肉体和内裤之间隔了一层粗糙的护垫;要是你出汗了,这个护垫还会黏糊糊地粘在屁股上,更别提血多的时候了。虽然长大后我有幸使用过高质量的卫生巾,但是我绝大多数只买得起便宜货……而这种事情,每个月都要发生足足七天,可能会少一两天,亦或者多一两天。
-五年级的时候,我流出了第一滩月经血。那是一坨黑色的东西,附在我彩色的凯蒂猫睡裤上,当然还有内裤上。我对它的第一个反应,便是恐怖——废话,身体不舒服去蹲个马桶,刚脱下裤子就是这么一大滩黑色的玩意儿,哪个小孩儿不会被吓到。和近乎所有中二的小孩儿一样,我的第二个反应是「我该不会得了什么绝症吧」,进而得出自己是「特殊的」这件事。
+为什么女人一定要经历月经这件事,我自小就在思考。它实在不是一件能让我觉得有价值的事情,无论是不舒适还是其带来的结果——可生育——都让我觉得可有可无。
-也和近乎所有中二的小孩儿一样,我认为「特殊」的事情,不过是世界上比我能数出的数字更多的人正在经历的事情。因为母亲像是没事人一样说,「我也到那个年纪了」,然后像是被逗乐般,告诉我如何使用卫生巾。使用卫生巾是一个极其不适的事情:你的肉体和内裤之间隔了一层粗糙的护垫;要是你出汗了,这个护垫还会黏糊糊地粘在屁股上,更别提血多的时候了。虽然长大后我有幸使用过高质量的卫生巾,但是我绝大多数只买得起便宜货……而这种事情,每个月都要发生足足七天,可能会少一两天,亦或者多一两天。
+母亲来美国后,成为了一个忠诚的基督教徒。我来美国后,自然也没少和她去教堂。还是孩子的我,并不能理解宗教,只是在没有娱乐的教堂里一遍遍翻阅圣经,直到看到《撒母耳记》以及后面的明显不再带有故事情节的内容;因为那些内容实在是「无聊」,无法吸引到我。圣经在那时候,对我来说更像是西方人的「故事书」。因此,孩童时期的我最喜欢的章节是《启示录》。不过那里面没有太多和耶稣相关的内容,说出去的时候还被说教了一番。
-为什么女人一定要经历月经这件事,我自小就在思考。它实在不是一件能让我觉得有价值的事情,无论是不舒适还是其带来的结果——可生育——都让我觉得可有可无。
+先前我表态过,我并 不喜欢宗教。不过我喜欢宗教故事。也就是说,将它们视为故事书来看,我是很欢迎的;如果是传教来的,我只能用手打个大大的 X 给你看。我很不喜欢跟耶和华有关系的宗教。无论是犹太教还是基督教还是伊斯兰教,都一定会出现旧约的内容。尽管知道一些派系否认了旧约里说的事情,但我还是无法喜欢上它们。《创世纪》里说,夏娃被蛇欺骗,吃了生命果,还劝亚当吃下,所以被上帝额外惩罚,后代的所有女人都要每月受腹痛之刑,且在一个章节里,女人要额外比男人多清洗几天,只因女人一出生便是不洁的。
-母亲来美国后,成为了一个忠诚的基督教徒。我来美国后,自然也没少和她去教堂。还是孩子的我,并不能理解宗教,只是在没有娱乐的教堂里一遍遍翻阅圣经,直到看到《撒母耳记》以及后面的明显不再带有故事情节的内容;因为那些内容实在是「无聊」,无法吸引到我。圣经在那时候,对我来说更像是西方人的「故事书」。因此,孩童时期的我最喜欢的章节是《启示录》。不过那里面没有太多和耶稣相关的内容,说出去的时候还被说教了一番。
+我会一次次去想,我是生而不纯洁的吗?我会在小时候就体验这种钻心之痛,是因为这种事情吗?
-先前我表态过,我并 [不喜欢宗教]。不过我喜欢宗教故事。也就是说,将它们视为故事书来看,我是很欢迎的;如果是传教来的,我只能用手打个大大的 X 给你看。我很不喜欢跟耶和华有关系的宗教。无论是犹太教还是基督教还是伊斯兰教,都一定会出现旧约的内容。尽管知道一些派系否认了旧约里说的事情,但我还是无法喜欢上它们。《创世纪》里说,夏娃被蛇欺骗,吃了生命果,还劝亚当吃下,所以被上帝额外惩罚,后代的所有女人都要每月受腹痛之刑,且在一个章节里,女人要额外比男人多清洗几天,只因女人一出生便是不洁的。
+「血」,仿佛真的像是诅咒一般。
-我会一次次去想,我是生而不纯洁的吗?我会在小时候就体验这种钻心之痛,是因为这种事情吗?
+疫情期间,父亲被辞退,纽约市的街道空荡荡的,大家买不到口罩,我们一家四口和一个亲戚在房子里日复一日地搓麻将。那是一段压抑的时期,我们无处可去,只能醒来、玩手机、打麻将、睡觉、重复。这种像是被打了一针麻醉的生活里,母亲突然说了一句,「要是当时死掉的人是我就好了。」我陷入了沉默,然后和过去一样,不受控制地出现了情绪闪回:这是母亲多少次如此厌恶我?或者在我的面前赞扬她那个已经胎死腹中的男孩儿?
-「血」,仿佛真的像是诅咒一般。
+母亲打掉的孩子一共有两个,我是她第三个怀上的孩子,也是第一个顺利生产的孩子。在我之前,她怀上的是一个男婴。然而当时发生了许多事情,母亲一气之下打掉了这个孩子,后面又一个劲儿地后悔。梦里,她时不时会梦到这个男婴,对着她说「妈妈,我冷。」惊恐中,她向外婆求助做法事,心境安稳后,就再也没有梦到这个男婴了;取而代之的是她会潜意识中将所有男青年视为自己的儿子,并对我说,「要是你哥哥还活着,他就是这个样子吧。」
-疫情期间,父亲被辞退,纽约市的街道空荡荡的,大家买不到口罩,我们一家四口和一个亲戚在房子里日复一日地搓麻将。那是一段压抑的时期,我们无处可去,只能醒来、玩手机、打麻将、睡觉、重复。这种像是被打了一针麻醉的生活里,母亲突然说了一句,「要是当时死掉的人是我就好了。」我陷入了沉默,然后和过去一样,不受控制地出现了情绪闪回:这是母亲多少次如此厌恶我?或者在我的面前赞扬她那个已经胎死腹中的男孩儿?
+我一边摸着麻将牌,一边流下泪水。父亲看到我哭了,愤怒地掀翻了麻将桌,和母亲吵了一架;妹妹大声哭了起来,亲戚只能在旁边做和事佬。
-母亲打掉的孩子一共有两个,我是她第三个怀上的孩子,也是第一个顺利生产的孩子。在我之前,她怀上的是一个男婴。然而当时发生了许多事情,母亲一气之下打掉了这个孩子,后面又一个劲儿地后悔。梦里,她时不时会梦到这个男婴,对着她说「妈妈,我冷。」惊恐中,她向外婆求助做法事,心境安稳后,就再也没有梦到这个男婴了;取而代之的是她会潜意识中将所有男青年视为自己的儿子,并对我说,「要是你哥哥还活着,他就是这个样子吧。」
+在美国欠债的生活压得还未成年的我很是难受,也压得父母难受,尤其是母亲。她在我初中时开始,精神逐渐变态。不仅打骂已经是家常便饭,还会管控我和同龄人之间的社交,令我很难和朋友们进一步发展关系。最为可恶的是那些向着她的人们,口上说着要帮助我,却没有人真的做什么,只是让身为孩子的我一次次原谅母亲、体谅她。直到日后,高中的一位老师策划了一件事,瞒着我报告了儿童局,且一位友人一直在帮助和支持我,我和母亲的关系才得以缓和。所以让孩子体谅父母,根本就不是什么责任,明明解决问题有着更好的方法。
-我一边摸着麻将牌,一边流下泪水。父亲看到我哭了,愤怒地掀翻了麻将桌,和母亲吵了一架;妹妹大声哭了起来,亲戚只能在旁边做和事佬。
+母亲到底是为什么生下我,以及妹妹的呢?是为了社会义务,是为了一己私欲,还是真的希望一个生命能够诞生、享受世界上各个美好?我想,怎么都不会是最后一个吧。如果我都不觉得自己能够抚养好的一个孩子的话,那我这些年为了生育而保留的这个系统,真的还有存在的必要吗?
-在美国欠债的生活压得还未成年的我很是难受,也压得父母难受,尤其是母亲。她在我初中时开始,精神逐渐变态。不仅打骂已经是家常便饭,还会管控我和同龄人之间的社交,令我很难和朋友们进一步发展关系。最为可恶的是那些向着她的人们,口上说着要帮助我,却没有人真的做什么,只是让身为孩子的我一次次原谅母亲、体谅她。直到日后,高中的一位老师策划了一件事,瞒着我报告了儿童局,且一位友人一直在帮助和支持我,我和母亲的关系才得以缓和。所以让孩子体谅父母,根本就不是什么责任,明明解决问题有着更好的方法。
+在知道我和同性交往过后,一个说教味儿极重的校友找到我,开门见山问我为什么要和同性在一起、我应该知道「洞和洞是不能在一起」的吧。我心想,这个人恐怕是一个「洞性恋」;怎么会有人将其他人类视作为「洞」呢?除非他满脑子都是洞,看到的也只有洞。对话的结尾,他为了让我难堪,说「因为你是同性恋者,所以你全家的血脉都断了。」
-母亲到底是为什么生下我,以及妹妹的呢?是为了社会义务,是为了一己私欲,还是真的希望一个生命能够诞生、享受世界上各个美好?我想,怎么都不会是最后一个吧。如果我都不觉得自己能够抚养好的一个孩子的话,那我这些年为了生育而保留的这个系统,真的还有存在的必要吗?
+香火、血脉,这些事情,真的有那么重要吗?为了这些「社会义务」,生下一个又一个孩子,但是缺乏培养他们的能力,最终得到的却是一个个倍受童年折磨的人。
-在知道我和同性交往过后,一个说教味儿极重的校友找到我,开门见山问我为什么要和同性在一起、我应该知道「洞和洞是不能在一起」的吧。我心想,这个人恐怕是一个「洞性恋」;怎么会有人将其他人类视作为「洞」呢?除非他满脑子都是洞,看到的也只有洞。对话的结尾,他为了让我难堪,说「因为你是同性恋者,所以你全家的血脉都断了。」
+这一切的目的是什么?在生物角度上来看,是为了发情和繁殖。生育从来都不是一件错事,这是自然的。只是我并不清楚自己真的会想要生育吗?我在未来,会喜欢上一个人,然后想要去那个人组建家庭、生下两人基因的融合体吗?不,这样的想法到底在把孩子们当成什么?如果要让一个生命诞生的话,就必须为他负起责任吧。我不想成为一个,像父母亲那样的人啊。我希望世上的孩子们,都可以幸福地度过童年,可以成长为自己想要成为的大人——因为,我连自己也喜欢不上来啊。
-香火、血脉,这些事情,真的有那么重要吗?为了这些「社会义务」,生下一个又一个孩子,但是缺乏培养他们的能力,最终得到的却是一个个倍受童年折磨的人。
+既然如此,为什么我没有去采取相关的措施、好让自己的生活好过一些?我思来想去,觉得最大的问题在于「后路」。每次想到这件事,考虑到的都不是所消耗的精力和资源,而是「万一自己未来会使用到呢」——潜意识中,生育这种与生俱来的能力,竟是我的后路吗?
-这一切的目的是什么?在生物角度上来看,是为了发情和繁殖。生育从来都不是一件错事,这是自然的。只是我并不清楚自己真的会想要生育吗?我在未来,会喜欢上一个人,然后想要去那个人组建家庭、生下两人基因的融合体吗?不,这样的想法到底在把孩子们当成什么?如果要让一个生命诞生的话,就必须为他负起责任吧。我不想成为一个,像父母亲那样的人啊。我希望世上的孩子们,都可以幸福地度过童年,可以成长为自己想要成为的大人——因为,我连自己也喜欢不上来啊。
+如果我构建出来的社会身份失败了,我剩下的,便是「母亲」这种最为原始的身份。照顾孩子是困难的,我一直都知道,所以我也会认为母爱是伟大的。但如果让我因为这种理由而成为一位母亲,这个身份便成了廉价的兜底方案——它不需要我拥有才智和品格,只需要我维持这具肉体的基本机能。这种思想是可怕的,我在潜意识里依然认可了将人简化为「洞」的逻辑,依然在为自己保留一种功能性的价值,而非主体性。
-既然如此,为什么我没有去采取相关的措施、好让自己的生活好过一些?我思来想去,觉得最大的问题在于「后路」。每次想到这件事,考虑到的都不是所消耗的精力和资源,而是「万一自己未来会使用到呢」——潜意识中,生育这种与生俱来的能力,竟是我的后路吗?
+我要是因为自己的失败,而让一个生命诞生了,对他而言,我或许只不过是一个又傲慢又糟糕的人吧。我会将他视为填补自己人生空洞的工具,让他成为我逃避虚无的牺牲品。好像,我又一次变成了母亲。
-如果我构建出来的社会身份失败了,我剩下的,便是「母亲」这种最为原始的身份。照顾孩子是困难的,我一直都知道,所以我也会认为母爱是伟大的。但如果让我因为这种理由而成为一位母亲,这个身份便成了廉价的兜底方案——它不需要我拥有才智和品格,只需要我维持这具肉体的基本机能。这种思想是可怕的,我在潜意识里依然认可了将人简化为「洞」的逻辑,依然在为自己保留一种功能性的价值,而非主体性。
-
-我要是因为自己的失败,而让一个生命诞生了,对他而言,我或许只不过是一个又傲慢又糟糕的人吧。我会将他视为填补自己人生空洞的工具,让他成为我逃避虚无的牺牲品。好像,我又一次变成了母亲。
-
-我好希望这「女人的血」,仅仅是血,而不是诅咒。
-
-
-=> /posts/b211.html#%E6%96%B0%E6%8A%A5%E5%91%8A%E5%91%BC%E5%90%81%E5%9C%A8%E7%BE%8E%E5%9B%BD%E7%BB%88%E7%BB%93%E7%AB%A5%E5%A9%9A 不喜欢宗教
+我好希望这「女人的血」,仅仅是血,而不是诅咒。
A posts/我的胶囊旅馆开张了.gmi => posts/我的胶囊旅馆开张了.gmi +107 -0
@@ 0,0 1,107 @@
+# 我的胶囊旅馆开张了
+
+此胶囊旅馆非彼胶囊旅馆。虽说我对现实中的胶囊旅馆很感兴趣,但至今都没有睡过一次,去开张一家真正的胶囊旅馆更是无稽之谈。标题中的「胶囊旅馆」指的是通过 Gemini 协议提供内容的独立信息集合。
+
+想必有些读者看到 Gemini,第一时间想到的是同名的,由谷歌开发的多模态大型语言模型,亦或者是同由谷歌开发的生成式 AI 聊天机器人了吧。实则不然,本篇文章所说的 Gemini 指的都是 Gemini 协议,一个轻量级的互联网应用层通信协议。
+
+一个常见的误解是,将「互联网」和「万维网」混为一谈。很多人认为,浏览器就是互联网,或者说互联网只有 HTTPS。这些都是认知盲区,但也怪不了谁。现代万维网极度繁荣,承载了普通用户所有的线上活动,但也掩盖了底层网络架构的多样性。
+
+互联网是由全球无数计算机网络相互连接而成的庞大基础设施,它的核心职责是数据的路由和传输,其基石是 TCP/IP 协议族。
+
+在计算机网络的体系结构中,网络通信被严密地划分为不同的层级。从下往上分别是「链接层」、「网络层」、「传输层」、「应用层」。
+
+底层协议负责处理物理信号、IP 寻址和数据包在路由器之间的接力,而最顶层的应用层协议定义了运行在不同设备上的应用程序如何相互传递报文、直接决定了数据在终端用户面前的呈现和交互方式。
+
+为了让同一台服务器能够同时处理多种不同的网络服务,传输层引入了「端口」的概念。当我们在浏览器中输入 https:// 时,实际上要求了操作系统使用超文本传输协议安全版(HTTP over TLS,也就是 HTTPS),去连接目标服务器的 443 端口。
+
+HTTP 协议最初仅仅是为了在研究人员之间共享简单的学术超文本文档而设计的。但随着数十年的发展,为了满足复杂的现代 Web 应用程序的需求,它被不断追加了 Cookie 会话管理、CORS、Service Worker 等庞杂的机制,最终造就了今天功能强大但也极其臃肿的 Web 生态。
+
+不过应用层是一个相当宽广的领域,HTTP 仅仅是其中的一个居民。互联网上时刻运行着大量与 HTTP 平级的应用层协议,它们各自服务于高度专一的通信需求。例如:构建全球电子邮件系统的核心是 SMTP 和 IMAP\slash{}POP3 协议;远程管理 Linux 服务器时,系统管理员会依赖运行在 22 端口的 SSH 协议;服务器之间进行时间同步,依赖于 NTP 协议。这些协议支撑着互联网的底层运转,却鲜为人知,很大缘故是它们通常在后台静默工作,或者需要特定的客户端而非通用浏览器来访问。
+
+今天的主角 Gemini 协议也是与 HTTP 完全平行的应用层协议。它拥有着自己专属的通信规则、状态码体系和数据格式,并且默认运行在 TCP 1965 端口(纪念 1965 年的「双子星号」载人航天任务)。
+
+在深入 Gemini 的技术基层之前,有必要了解它的精神前身:Gopher 协议。
+
+在万维网尚未一统天下的二十世纪,Gopher 是互联网上最流行的信息检索系统。它采用严格的层级菜单结构来组织纯文本信息:
+
+```text
+Welcome to Gopherspace
+
+ 1. About this server.
+ 2. Articles and Musings/
+ 3. Links to other Gopher holes/
+ 4. Search this server <?>
+ 5. A plain text document.
+
+Press ? for Help, q to Quit, u to go up a menu, or enter a number: _
+```
+
+大概就是这样吧,是不是看着很像早些年的文字游戏呢?
+
+其实我最初学习编程语言,写的第一个项目就是一个类似于这样的文字冒险游戏——可惜源代码被我删除了,之后考虑使用 Python 重构却没有写下去。
+
+Gopher 的客户端界面之所以是这么个列表形态,是因为服务端返回的原始数据本身就是一种以制表符分割的结构化纯文本。每一行代表菜单中的一项,行首的单个字符定义了该项的资源类型。
+
+然而随着带有图形界面、支持内嵌图像和复杂排版的早期 Web 浏览器的出现,加之 Gopher 的发源地明尼苏达大学曾短暂尝试其服务端软件收取许可费,Gopher 迅速走向了衰落。
+
+Gemini 正是诞生于对现代 Web 日益臃肿和商业化,以及对 Gopher 历史教训的深度反思之中。其核心设计理念被概括为「比 Gopher 重,比 HTTP 轻」。很聪明地,它并不打算取代现有的 Web,而是想要构建一个被称为 Geminispace 的独立、纯粹的文本网络生态。对于偏好纯文本与自托管服务的极客们而言,Gemini 是个相当具备吸引力的信息分发与获取方案。
+
+与 HTTP 不同的是,Gemini 强制要求使用 TLS 加密连接,不允许任何明文传输,确保了基础的通信安全。同时它在实践中广泛接受 TOFU(Trust on First Use,首次信任)模式或自签发证书,大幅降低了个人站长维护基础设施的门槛。
+
+其请求和响应模型被设计为一次性的单向事务,连接在响应完成后立即关闭。服务端的响应头部极简,仅包含一个两位数的状态码、一个空格、一段元数据(在请求成功时通常是 MIME 类型,如 text/gemini),从根本上抛弃了 HTTP 中复杂的头部字段。
+
+更为彻底的是,Gemini 规范中没有 Cookie,没有 User-Agent 嗅探,不支持任何形式的客户端脚本执行。如果服务端应用需要维持会话状态或进行身份验证,协议规定直接使用 TLS 客户端证书来实现。这意味着在体系结构上,任何人都无法在 Gemini 页面中嵌入追踪探针、广告代码或第三方分析工具。
+
+与该协议深度绑定的是一种名为 Gemtext 的专属轻量级标记语言(文件后缀通常为 .gmi)。Gemtext 的语法相较于 Markdown,仅支持三级标题、无序列表、引用块、预格式化文本以及链接。
+
+三级标题对我而言,不是什么大问题,因为我现在使用的主题的原作者 Infinity 这么认为:
+
+> 实际上,Hexo-theme-apollo 只支持两种标题:h1~h3 大标题,h4~h6 小标题,也就是说,# 和 ### 的样式是一样的。之所以这么处理,是因为就个人感觉而言,我们不应该为文章设置过多的层级消耗读者的阅读精力。这相当于强制使用 Hexo-theme-apollo 的用户在写文章时注意文章结构,最多只能使用两层结构。
+
+不过我印象里,这个「两种标题」并不准确,实际上是三种标题:h1 一个,h2~h3 一个,h4~h6 一个才对。我并不记得我特意修改了这一点,也有可能是我记错了。总之,我在写博客的时候就已经慢慢培养出来了不滥用标题层级的习惯。
+
+特殊的是,Gemtext 还严格禁止在段落文本中内嵌链接,所有超链接必须作为独立的代码行存在。
+
+我个人算是半个脚注的反对者。脚注在实体书籍上出现没问题,但展示在互联网的文章上,阅读起来相当难受。如果可以的话,我会希望文章都尽量是从头到尾、瀑布般的排版,不需要让读者去别的地方才能收获完整的阅读体验。不过为了漂亮,我还是会在文本内嵌入链接,给它们附加文本。这个做法我会深思熟虑一下,是否应当完全参照 Gemini 协议希望的那样。
+
+先前说过,Capsule 是通过 Gemini 协议提供内容的独立信息集合。它的概念完全等同于万维网中的 Website。正如一个 Website 是由多个通过 HTTP 协议传输的 HTML 页面和资源组成,一个 Capsule 则是通过 Gemini 协议传输的 Gemtext 文件及其他媒体文件的集合。
+
+虽然它的命名出处来自于阿波罗计划中的「双子星号」太空舱,但结合我给个人网络附加的设定,最终将我自己的 Capsule 其称为「胶囊旅馆」。莫要搞混了,它的意思是太空舱,而不是我二次创作出来的胶囊旅馆!
+
+因为 Capsule 等同于 Website,所以通过 Gemini 客户端访问他人搭建的服务器时,最好不要称其为「Gemini 站点」,而是说「Gemini 胶囊」会更好些。因为「站」这个概念属于 HTTP 协议,胶囊严格来说也不属于「网站」——网站是依附于万维网生态、基于 HTTP\slash{}HTTPS 协议和 HTML 标记语言构建的产物。
+
+### 访问 Gemini 地址
+
+由于 Gemini 协议从根本上切断了与 HTTP 的联系,常规的现代 Web 浏览器是无法撬开这些太空舱的。我们需要借助专门支持 Gemini 协议的客户端工具。
+
+在终端环境中,Amfora 是一款功能完备的命令行客户端。如果依然偏好图形界面的便捷性,Lagrange 则是目前生态中非常优秀的桌面端选择。
+
+如果你要问我,我选了哪个的话。莫要忘了,我是一个 typical Emacs user(经典 Emacs 用户)——其实只要使用 Elpher 包就可以访问 Gemini 胶囊啦,太方便了!
+
+```eshell
+M-x package-install RET elpher RET
+```
+
+接着你可以在 Elpher 界面上,使用 g 命令,然后输入我的胶囊旅馆地址 gemini://cytrogen.icu 便可以访问了。
+
+### 博文生成和部署
+
+我的写作流程因为相当私人化,所以仅供参考了。
+
+Org Mode 文件是所有文章的上游。写好 Org Mode 文件,我会转换它为 Markdown 和 Gemtext 文件。这里只说 Gemtext 的转换:我引用的是 ox-gemini 这个导出后端,不过我有很多额外的定制化需求,因此进行了一些魔改。比方说在我的月刊内,有个「日记片段」板块,那里理论上来说是 Hexo 框架在构建文件时,自动从 Fediverse 应用上获取数据、嵌入 HTML 文件内。这意味着 Org Mode 文件里没有这些日记内容,转换成的 Gemtext 文件也不会有。但我目前并不希望 Gemtext 文件在构建时进行过多的操作,导致流程愈来愈复杂,最终决定只放一个 Mastodon 主页链接。
+
+接着我会将 Gemini 项目 git push 到 VPS 的 bare repo,并触发它的构建命令。说是构建命令,其实也就是帮我部署到 Gemini 服务器,然后镜像到 Sourcehut 仓库。
+
+我选用的是 Agate 这个由 Rust 写的 Gemini 协议服务器。它会自动生成并管理 TLS 证书,不需要额外配置 Let's Encrypt,运行内存要求很低,我自己搭建后实际用的连 500KB 都不到。
+
+不过它仅适用于纯静态 gemtext 文件 capsule。想要动态内容支持的话,可以考虑一下 Gemserv 或者 Molly Brown 这些服务器。
+
+在 VPS 上安装了 Agate 之后,所需要的命令相当简单:
+
+```zsh
+agate --content /gemtext/文件目录 --hostname 域名.后缀 --lang zh
+```
+
+## 链接
+
+=> https://github.com/WhoKnowInfinity Infinity
M posts/最能保障数字主权的-vps-公司.gmi => posts/最能保障数字主权的-vps-公司.gmi +240 -255
@@ 1,465 1,450 @@
# 最能保障「数字主权」的 VPS 公司
-我观看了一场名为「后美国互联网」的 [演讲],实在是精彩,让我对「数字主权」这一概念有了更深刻的认知。借此,我发现我的许多服务依然部署在美国的 PaaS 服务上。这类中心化的服务如果出问题了会很麻烦,参考去年 Cloudflare 的事故。而我愈来愈对美国企业产生抵触之心。不过要我完全逃离是很难做到的,毕竟我人就在美国。这些原因结合在一起,促使我对「哪家提供 VPS(虚拟专用服务器)服务的公司最适用于数字主权者」这一命题感到好奇。
+我观看了一场名为「后美国互联网」的 演讲,实在是精彩,让我对「数字主权」这一概念有了更深刻的认知。借此,我发现我的许多服务依然部署在美国的 PaaS 服务上。这类中心化的服务如果出问题了会很麻烦,参考去年 Cloudflare 的事故。而我愈来愈对美国企业产生抵触之心。不过要我完全逃离是很难做到的,毕竟我人就在美国。这些原因结合在一起,促使我对「哪家提供 VPS(虚拟专用服务器)服务的公司最适用于数字主权者」这一命题感到好奇。
-#+MORE
-------------------------------------------------------------------------
+-----
-首先我需要确立一个核心的排他性原则: *任何受 _《美国爱国者法》_ 和 _CLOUD Act_ 管辖的实体必须被彻底剔除* 。
+首先我需要确立一个核心的排他性原则: 任何受 《美国爱国者法》 和 CLOUD Act 管辖的实体必须被彻底剔除 。
-这不仅仅是因为数据隐私问题,更是管辖权层面的问题:CLOUD Act 赋予美国执法机构长臂管辖权,无论服务器物理位置在何处,只要控制着是美国企业,数据即被视为处于美国管辖之下。因此,AWS、Google Cloud、DigitalOcean、Vultr 等主流厂商在第一轮筛选中即宣告出局。
+这不仅仅是因为数据隐私问题,更是管辖权层面的问题:CLOUD Act 赋予美国执法机构长臂管辖权,无论服务器物理位置在何处,只要控制着是美国企业,数据即被视为处于美国管辖之下。因此,AWS、Google Cloud、DigitalOcean、Vultr 等主流厂商在第一轮筛选中即宣告出局。
-为了让后续对其他厂商的筛选带有令人信服的法理依据,我打算剖析美国法律体系来确立负面清单的标准。这也是为了还没有怎么接触过「数字主权」一概念的读者们可以更明白为什么我的选择是这个、为什么是哪个。
+为了让后续对其他厂商的筛选带有令人信服的法理依据,我打算剖析美国法律体系来确立负面清单的标准。这也是为了还没有怎么接触过「数字主权」一概念的读者们可以更明白为什么我的选择是这个、为什么是哪个。
-在 2018 年之前,微软曾经以「数据不存储在美国境内」为由, [拒绝向美国政府移交存储在爱尔兰的数据] 。这时候,大家都普遍认为数据存储在美国境外可以规避美国的搜查令。然而 CLOUD Act 的签署彻底摧毁了这一避风港。该法案确立了一个核心原则,即 *数据的管辖权不再取决于数据的物理存储位置,而取决于数据控制者的注册地* 。
+在 2018 年之前,微软曾经以「数据不存储在美国境内」为由, 拒绝向美国政府移交存储在爱尔兰的数据 。这时候,大家都普遍认为数据存储在美国境外可以规避美国的搜查令。然而 CLOUD Act 的签署彻底摧毁了这一避风港。该法案确立了一个核心原则,即 数据的管辖权不再取决于数据的物理存储位置,而取决于数据控制者的注册地 。
-这意味着,只要一家公司是在美国注册的实体,或者该公司在美国有业务运营,无论它将你的数据存储在东京、伦敦还是南极,美国执法机构都有权要求其移交数据。
+这意味着,只要一家公司是在美国注册的实体,或者该公司在美国有业务运营,无论它将你的数据存储在东京、伦敦还是南极,美国执法机构都有权要求其移交数据。
-对于大多数人而言,这是一个巨大的认知误区——许多人误以为选择了 AWS 的德国区就受到了 _GDPR_ 的绝对保护。
+对于大多数人而言,这是一个巨大的认知误区——许多人误以为选择了 AWS 的德国区就受到了 GDPR 的绝对保护。
-为了防止有读者不理解这些术语,我将在本篇以「问为什么之前先问是不是」这一形式来构建完整的因果链条。
+为了防止有读者不理解这些术语,我将在本篇以「问为什么之前先问是不是」这一形式来构建完整的因果链条。
-GDPR(General Data Protection Regulation,通用资料保护规则)是欧盟于 2018 年生效的一项法律法规,被公认为全球史上最严厉、最全面的隐私保护法。它的核心宗旨是让公民重新掌控自己的个人数据。GDPR 规定了数据控制者必须如何收集、存储和处理数据,并赋予了用户一系列强大的权利,例如 _被遗忘权_ 和 _数据可携带权_ 。德国作为欧盟的核心成员国,自然完全受 GDPR 管辖。
+GDPR(General Data Protection Regulation,通用资料保护规则)是欧盟于 2018 年生效的一项法律法规,被公认为全球史上最严厉、最全面的隐私保护法。它的核心宗旨是让公民重新掌控自己的个人数据。GDPR 规定了数据控制者必须如何收集、存储和处理数据,并赋予了用户一系列强大的权利,例如 被遗忘权 和 数据可携带权 。德国作为欧盟的核心成员国,自然完全受 GDPR 管辖。
-事实是,由于 AWS 是美国公司,当美国法律与欧盟法律冲突时,AWS 必须优先响应母国的要求,否则将面临本土的巨额罚款或制裁。因此,对于美国主流厂商而言,物理位置的隔离在法律层面是无效的。
+事实是,由于 AWS 是美国公司,当美国法律与欧盟法律冲突时,AWS 必须优先响应母国的要求,否则将面临本土的巨额罚款或制裁。因此,对于美国主流厂商而言,物理位置的隔离在法律层面是无效的。
-CLOUD Act 针对刑事调查也就算了, _FISA Section 702_ 还针对大规模的国家安全情报收集。FISA(Foreign Intelligent Surveillance Act,外国情报监视法)是美国于 1978 年颁布的一项联邦法律。它的初衷是为了规范美国政府在进行针对外国势力和外国代理人的情报收集时的行为。在早期,如果美国情报机构想要监听境内的通讯,必须经过一个秘密法庭的批准。这在当时是为了防止政府滥用权力。而 FISA Section 702 是该法案在 2008 年增加的一个修正案,允许美国情报机构在无需获得任何具体法院搜查令的情况下,直接对位于美国境外的非美国公民进行大规模监控。
+CLOUD Act 针对刑事调查也就算了, FISA Section 702 还针对大规模的国家安全情报收集。FISA(Foreign Intelligent Surveillance Act,外国情报监视法)是美国于 1978 年颁布的一项联邦法律。它的初衷是为了规范美国政府在进行针对外国势力和外国代理人的情报收集时的行为。在早期,如果美国情报机构想要监听境内的通讯,必须经过一个秘密法庭的批准。这在当时是为了防止政府滥用权力。而 FISA Section 702 是该法案在 2008 年增加的一个修正案,允许美国情报机构在无需获得任何具体法院搜查令的情况下,直接对位于美国境外的非美国公民进行大规模监控。
-这是 _PRISM_ (棱镜计划) 的法律基础。NSA(国家安全局)基于 Section 702 法律授权实施了这个大规模电子监听项目。2013 年该项目被 Edward Snowden 曝光。根据 Snowden 披露的文件,PRISM 允许 NSA 直接接入美国互联网巨头的中心服务器。
+这是 PRISM (棱镜计划) 的法律基础。NSA(国家安全局)基于 Section 702 法律授权实施了这个大规模电子监听项目。2013 年该项目被 Edward Snowden 曝光。根据 Snowden 披露的文件,PRISM 允许 NSA 直接接入美国互联网巨头的中心服务器。
-当你使用美国厂商的服务时,从法律层面讲,你已经默认放弃了对抗美国情报机构窥探的权利。更为不幸的是,这类提取往往伴随着严格的保密指令,服务商不仅必须配合,而且被法律禁止告知用户数据已被查看。这种不透明性使得用户根本无法知晓自己的主权何时被侵犯。
+当你使用美国厂商的服务时,从法律层面讲,你已经默认放弃了对抗美国情报机构窥探的权利。更为不幸的是,这类提取往往伴随着严格的保密指令,服务商不仅必须配合,而且被法律禁止告知用户数据已被查看。这种不透明性使得用户根本无法知晓自己的主权何时被侵犯。
-抛开国家层面的法律,仅从商业合同来看,美国主流厂商的条款也充满了对用户主权的剥夺。最典型的陷阱在于 _单方面终止权_ 。如果仔细阅读 AWS 或者 Google Cloud 的条款,你会发现它们通常包含类似「我们保留在任何时间、出于任何原因(或无须理由)终止服务或拒绝访问的权利」的表述。这种条款赋予了企业凌驾于用户之上的绝对权力。即使你的内容完全合法,只要触发了其自动风控算法,或者你的内容不符合其模糊的社会准则(注意,并非法律),你的账号及其中的所有数据可能在瞬间被封锁,且往往没有申诉通道。
+抛开国家层面的法律,仅从商业合同来看,美国主流厂商的条款也充满了对用户主权的剥夺。最典型的陷阱在于 单方面终止权 。如果仔细阅读 AWS 或者 Google Cloud 的条款,你会发现它们通常包含类似「我们保留在任何时间、出于任何原因(或无须理由)终止服务或拒绝访问的权利」的表述。这种条款赋予了企业凌驾于用户之上的绝对权力。即使你的内容完全合法,只要触发了其自动风控算法,或者你的内容不符合其模糊的社会准则(注意,并非法律),你的账号及其中的所有数据可能在瞬间被封锁,且往往没有申诉通道。
-此外,关于 _可接受使用策略_ ,美国厂商通常会加入极其模糊的道德审查标准,例如禁止「令人反感的内容」。这是一个极其危险的口袋条款,因为「反感」是一个主观的感觉,它的解释权完全掌握在公司手中,而非由法院裁定。
+此外,关于 可接受使用策略 ,美国厂商通常会加入极其模糊的道德审查标准,例如禁止「令人反感的内容」。这是一个极其危险的口袋条款,因为「反感」是一个主观的感觉,它的解释权完全掌握在公司手中,而非由法院裁定。
-说了这么多,理解起来可能依然很困难。作为实操案例,我分析和解读一下 [AWS 的隐私条款] 。
+说了这么多,理解起来可能依然很困难。作为实操案例,我分析和解读一下 AWS 的隐私条款 。
-AWS 将数据严格划分为两类:个人信息和上传到服务器的数据。前者受这份隐私条款管辖;对于后者,AWS 则在法律上认定自己只是处理者、用户才是控制者。因此,关于如何收集、使用、分享的条款统统不适用于用户服务器里的文件。如果数据被泄露,或者被 AWS 删除,都和这份隐私政策无关,需要去查阅其他条款和协议(内容太多暂且不做)。
+AWS 将数据严格划分为两类:个人信息和上传到服务器的数据。前者受这份隐私条款管辖;对于后者,AWS 则在法律上认定自己只是处理者、用户才是控制者。因此,关于如何收集、使用、分享的条款统统不适用于用户服务器里的文件。如果数据被泄露,或者被 AWS 删除,都和这份隐私政策无关,需要去查阅其他条款和协议(内容太多暂且不做)。
-AWS 都会拿我们的个人信息做什么呢?除了和改进 AWS 内部的产品有关外,就是推广推广推广——推广自己的产品,也会推广其他公司的产品,简称「打广告」。证据例如:
+AWS 都会拿我们的个人信息做什么呢?除了和改进 AWS 内部的产品有关外,就是推广推广推广——推广自己的产品,也会推广其他公司的产品,简称「打广告」。证据例如:
-> We use your personal information to market, advertise, and promote AWS Offerings.
+> We use your personal information to market, advertise, and promote AWS Offerings.
>
-> 我们使用您的个人信息来营销、宣传和推广 AWS 产品。
+> 我们使用您的个人信息来营销、宣传和推广 AWS 产品。
-法律相关的表述中,AWS 这么说道:
+法律相关的表述中,AWS 这么说道:
-> In certain cases, we have a legal obligation to collect, use, or retain your personal information. For example, we collect bank account information from AWS Marketplace sellers for identity verification.
+> In certain cases, we have a legal obligation to collect, use, or retain your personal information. For example, we collect bank account information from AWS Marketplace sellers for identity verification.
>
-> 在某些情况下,我们负有法律义务收集、使用或保留您的个人信息。例如,我们会收集 AWS Marketplace 卖家银行账户信息以进行身份验证。
+> 在某些情况下,我们负有法律义务收集、使用或保留您的个人信息。例如,我们会收集 AWS Marketplace 卖家银行账户信息以进行身份验证。
-这是很常见的陷阱表达: /in certain cases/ ,什么 certain case?「某些情况」是哪些情况?在没有明确说明的情况下,这个「某些情况」是完全受 AWS 主观判断而决定的。同样的表达也可以见:
+这是很常见的陷阱表达: in certain cases ,什么 certain case?「某些情况」是哪些情况?在没有明确说明的情况下,这个「某些情况」是完全受 AWS 主观判断而决定的。同样的表达也可以见:
-> We release account and other personal information when we believe release is appropriate to comply with the law, enforce or apply our terms and other agreements, or protect the rights, property, or security of AWS, our customers, or others. This includes exchanging information with other companies and organizations for fraud prevention and detection and credit risk reduction.
+> We release account and other personal information when we believe release is appropriate to comply with the law, enforce or apply our terms and other agreements, or protect the rights, property, or security of AWS, our customers, or others. This includes exchanging information with other companies and organizations for fraud prevention and detection and credit risk reduction.
>
-> 当我们在认为公开信息有助于遵守法律、执行或应用我们的条款及其他协议,或保护 AWS、我们的客户或其他人的权利、财产或安全时,我们会公开账户和其他个人信息。这包括与公司及组织交换信息,以进行欺诈预防和检测以及信用风险降低。
+> 当我们在认为公开信息有助于遵守法律、执行或应用我们的条款及其他协议,或保护 AWS、我们的客户或其他人的权利、财产或安全时,我们会公开账户和其他个人信息。这包括与公司及组织交换信息,以进行欺诈预防和检测以及信用风险降低。
-/When we believe/ 、 /comply with the law/ 是一个又一个的陷阱。只需要 AWS 内部的法务团队认为合适,他们就可以移交数据,将 _司法裁定权_ 私有化。
+When we believe 、 comply with the law 是一个又一个的陷阱。只需要 AWS 内部的法务团队认为合适,他们就可以移交数据,将 司法裁定权 私有化。
-没有国界限制的「法律适用」也是危险的。对于美国而言,这默认包含美国法律。这意味着为了遵守美国法律,他们可以出卖非美国用户的数据。
+没有国界限制的「法律适用」也是危险的。对于美国而言,这默认包含美国法律。这意味着为了遵守美国法律,他们可以出卖非美国用户的数据。
-先前我说过,数据实际在什么位置根本不重要,这里 AWS 就给了我们一个很好的例子:
+先前我说过,数据实际在什么位置根本不重要,这里 AWS 就给了我们一个很好的例子:
-> We share personal information only as described below and with Amazon.com, Inc. and the affiliates that Amazon.com, Inc. controls that are either subject to this Privacy Notice or follow practices at least protective as those described in this Privacy Notice.
+> We share personal information only as described below and with Amazon.com, Inc. and the affiliates that Amazon.com, Inc. controls that are either subject to this Privacy Notice or follow practices at least protective as those described in this Privacy Notice.
>
-> 我们仅按照下述方式分享个人信息,并与亚马逊公司(Amazon.com, Inc.)及其控制的附属公司分享。这些附属公司要么受本隐私声明的约束,要么遵循与本隐私声明中描述的实践至少具有同等保护性的实践。
+> 我们仅按照下述方式分享个人信息,并与亚马逊公司(Amazon.com, Inc.)及其控制的附属公司分享。这些附属公司要么受本隐私声明的约束,要么遵循与本隐私声明中描述的实践至少具有同等保护性的实践。
-AWS 承认了数据会被合法流向 Amazon.com ,即美国母公司,或者其他附属公司。只要在这个链条中有一个实体受美国管辖——显然母公司受管辖——整个数据池就受管辖。无论你是在 AWS 的哪个分公司注册,结果都是如此。
+AWS 承认了数据会被合法流向 Amazon.com ,即美国母公司,或者其他附属公司。只要在这个链条中有一个实体受美国管辖——显然母公司受管辖——整个数据池就受管辖。无论你是在 AWS 的哪个分公司注册,结果都是如此。
-还有一点是 AWS 并不独立完成所有工作,它依赖一个庞大的第三方供应商网络。即使 AWS 发誓不看我们的数据,但它还是把我们的数据交给了第三方。根据 _短板效应_ ,美国执法机构也不用找 AWS,只要找下游供应商就好了。你的安全程度取决于整套供应链中最弱的一环。
+还有一点是 AWS 并不独立完成所有工作,它依赖一个庞大的第三方供应商网络。即使 AWS 发誓不看我们的数据,但它还是把我们的数据交给了第三方。根据 短板效应 ,美国执法机构也不用找 AWS,只要找下游供应商就好了。你的安全程度取决于整套供应链中最弱的一环。
-> We employ other companies and individuals to perform functions on our behalf. Examples include: delivering AWS hardware, sending communications, processing payments, assessing credit and compliance risks, analyzing data, providing marketing and sales assistance (including advertising and event management), conducting customer relationship management, and providing training. These third-party service providers have access to personal information needed to perform their functions, but may not use it for other purposes. Further, they must process that information in accordance with this Privacy Notice and as permitted by applicable data protection law.
+> We employ other companies and individuals to perform functions on our behalf. Examples include: delivering AWS hardware, sending communications, processing payments, assessing credit and compliance risks, analyzing data, providing marketing and sales assistance (including advertising and event management), conducting customer relationship management, and providing training. These third-party service providers have access to personal information needed to perform their functions, but may not use it for other purposes. Further, they must process that information in accordance with this Privacy Notice and as permitted by applicable data protection law.
>
-> 我们聘请其他公司和个人代表我们执行职能。例如:交付 AWS 硬件、发送通信、处理付款、评估信用和合规风险、分析数据、提供营销和销售支持(包括广告和活动管理)、进行客户关系管理以及提供培训。这些第三方服务提供商可以访问其履行职能所需的个人信息,但不得将其用于其他目的。此外,他们必须根据本隐私声明以及适用数据保护法的规定处理这些信息。
+> 我们聘请其他公司和个人代表我们执行职能。例如:交付 AWS 硬件、发送通信、处理付款、评估信用和合规风险、分析数据、提供营销和销售支持(包括广告和活动管理)、进行客户关系管理以及提供培训。这些第三方服务提供商可以访问其履行职能所需的个人信息,但不得将其用于其他目的。此外,他们必须根据本隐私声明以及适用数据保护法的规定处理这些信息。
-注意,这里的「不得将其用于其他目的」仅是用于合同约束。只要数据流出,对用户来说就一定存在着潜在风险。这段话对 AWS 来说更多是免责说明。并且最后的「适用数据保护法」依然表明了美国政府可以向下游供应商索要数据。
+注意,这里的「不得将其用于其他目的」仅是用于合同约束。只要数据流出,对用户来说就一定存在着潜在风险。这段话对 AWS 来说更多是免责说明。并且最后的「适用数据保护法」依然表明了美国政府可以向下游供应商索要数据。
-尽管 AWS 开头就说:
+尽管 AWS 开头就说:
-> Information about our customers is an important part of our business and we are not in the business of selling our customers’ personal information to others.
+> Information about our customers is an important part of our business and we are not in the business of selling our customers’ personal information to others.
>
-> 关于我们客户的信息是我们业务的重要组成部分,我们不从事将客户的个人信息出售给他人。
+> 关于我们客户的信息是我们业务的重要组成部分,我们不从事将客户的个人信息出售给他人。
-但它也没说自己不共享用户数据啊。这是一个相当经典的商业诡辩:无论是「卖」还是「共享」,对于用户而言自己的数据就是被脱离出了原本的隔壁环境,进入了不可控的第三方手中。
+但它也没说自己不共享用户数据啊。这是一个相当经典的商业诡辩:无论是「卖」还是「共享」,对于用户而言自己的数据就是被脱离出了原本的隔壁环境,进入了不可控的第三方手中。
-一个有意思的题外话:韩国拥有全球最严格、最注重形式主义细节的数据保护法 _PIPA_ (Personal Information Protection Act,个人信息保护法)。第 17 条里表示:
+一个有意思的题外话:韩国拥有全球最严格、最注重形式主义细节的数据保护法 PIPA (Personal Information Protection Act,个人信息保护法)。第 17 条里表示:
-> (2) A personal information controller shall inform a data subject of the following matters when it obtains the consent under paragraph (1) 1. The same shall apply when any of the following is modified:
-> * The recipient of personal information;
-> * The purpose for which the recipient of personal information uses such information;
-> * Particulars of personal information to be provided;
-> * The period during which the recipient retains and uses personal information;
-> * The fact that the data subject is entitled to deny consent, and disadvantages, if any, resulting from the
-> denial of consent.
+> (2) A personal information controller shall inform a data subject of the following matters when it obtains
+> the consent under paragraph (1) 1. The same shall apply when any of the following is modified:
+> 1. The recipient of personal information;
+> 2. The purpose for which the recipient of personal information uses such information;
+> 3. Particulars of personal information to be provided;
+> 4. The period during which the recipient retains and uses personal information;
+> 5. The fact that the data subject is entitled to deny consent, and disadvantages, if any, resulting from the
+> denial of consent.
>
-> (2) 个人信息处理者在依据第(1)款第1项取得同意时,应当向信息主体告知下列事项;下列事项发生变更时,亦同:
+> (2) 个人信息处理者在依据第(1)款第1项取得同意时,应当向信息主体告知下列事项;下列事项发生变更时,亦同:
>
-> * 个人信息的接收方;
-> * 个人信息接收方使用该信息的目的;
-> * 拟提供的个人信息具体项目;
-> * 接收方保有及使用个人信息的期间;
-> * 信息主体有权拒绝同意的事实,以及因拒绝同意而产生的不利后果(如有)。
+> 1. 个人信息的接收方;
+> 2. 个人信息接收方使用该信息的目的;
+> 3. 拟提供的个人信息具体项目;
+> 4. 接收方保有及使用个人信息的期间;
+> 5. 信息主体有权拒绝同意的事实,以及因拒绝同意而产生的不利后果(如有)。
-> (3) ...obtain the consent from the data subject in order to provide personal information to a third party overseas...
+> (3) ...obtain the consent from the data subject in order to provide personal information to a third party overseas...
>
-> (3) ...为了向海外第三方提供个人信息...应获得数据主体的同意...
+> (3) ...为了向海外第三方提供个人信息...应获得数据主体的同意...
-这导致 AWS 在对韩国的额外说明里,揭露了其全球运营的真实后台架构。实际使用的第三方服务商名单见隐私条款内的 /South Korea/ 区域。
+这导致 AWS 在对韩国的额外说明里,揭露了其全球运营的真实后台架构。实际使用的第三方服务商名单见隐私条款内的 South Korea 区域。
-虽然这份名单名义上只针对韩国,但云服务商的后台架构通常是全球统一的。AWS 不太可能专门为韩国搭建一套独立的 Salesforce 或 Marketo 系统,也不太可能只在韩国使用 Paymentech,而在其他地区完全自研。因此,我合理推断这份名单实际上就是 AWS 在全球范围内通用的第三方供应商名单。
+虽然这份名单名义上只针对韩国,但云服务商的后台架构通常是全球统一的。AWS 不太可能专门为韩国搭建一套独立的 Salesforce 或 Marketo 系统,也不太可能只在韩国使用 Paymentech,而在其他地区完全自研。因此,我合理推断这份名单实际上就是 AWS 在全球范围内通用的第三方供应商名单。
-这样我们就能得知:
+这样我们就能得知:
-* AWS 的客户关系管理直接被托管在 Salesforce 的美国服务器上;
-* 哪怕用本地信用卡支付,结算的底层通道和记录依然与美国的金融系统紧密相连,因为 Paymentech(JPMorgan Chase)的地址为美国,而根据《美国爱国者法》金融数据是重点监控对象;
-* 表格中明确列出传输的项目包括「必要时通过信息网络传输数据」,意味着只要业务需要,数据就会跨境流动,完全无视物理距离。
+* AWS 的客户关系管理直接被托管在 Salesforce 的美国服务器上;
+* 哪怕用本地信用卡支付,结算的底层通道和记录依然与美国的金融系统紧密相连,因为 Paymentech(JPMorgan Chase)的地址为美国,而根据《美国爱国者法》金融数据是重点监控对象;
+* 表格中明确列出传输的项目包括「必要时通过信息网络传输数据」,意味着只要业务需要,数据就会跨境流动,完全无视物理距离。
-现在大致地阅读了 AWS 的隐私条款后,我认为作为读者的你多多少少也应该明白什么样的话是陷阱了。用同样的规则去阅读其他公司的隐私条款,很容易就可以觉察出各种不对劲。
+现在大致地阅读了 AWS 的隐私条款后,我认为作为读者的你多多少少也应该明白什么样的话是陷阱了。用同样的规则去阅读其他公司的隐私条款,很容易就可以觉察出各种不对劲。
-我将「数字主权」定义为:用户对存储的数据拥有排他性的控制权,且该控制权仅受服务器物理所在地的当地法律约束,不受第三方国家的长臂管辖干扰。
+我将「数字主权」定义为:用户对存储的数据拥有排他性的控制权,且该控制权仅受服务器物理所在地的当地法律约束,不受第三方国家的长臂管辖干扰。
-自然,你喜欢哪一类都没有对错之分。我希望我的研究是可以帮助你找到理想中的那个「它」,而不是让你感觉你是否选错了公司。
+自然,你喜欢哪一类都没有对错之分。我希望我的研究是可以帮助你找到理想中的那个「它」,而不是让你感觉你是否选错了公司。
-我将从隐私政策、服务条款以及公司注册地与物理设施管辖权三个维度进行解构。不过这些并非所有提供 VPS 的服务商,只是出于篇幅,暂时只看了这些公司的文档。
+我将从隐私政策、服务条款以及公司注册地与物理设施管辖权三个维度进行解构。不过这些并非所有提供 VPS 的服务商,只是出于篇幅,暂时只看了这些公司的文档。
+### 1984 Hosting
-=> https://pluralistic.net/2026/01/01/39c3/ 演讲
-=> https://en.wikipedia.org/wiki/Microsoft_Corp._v._United_States 拒绝向美国政府移交存储在爱尔兰的数据
-=> https://aws.amazon.com/privacy/ AWS 的隐私条款
+1984 Hosting 通常被视为「数字主权」界的标杆,但如果仔细阅读它的 Terms of Service ,会发现它并非像某些人想象的那样是一个无法无天的法外之地。相反,它确实提供了极高的国家级防御,但在操作界面和道德条款上埋下了不少陷阱。
+条款里相比于 AWS 模糊的「适用法律」,1984 Hosting 明确指定了冰岛法律。
-#### 1984 Hosting
-
-1984 Hosting 通常被视为「数字主权」界的标杆,但如果仔细阅读它的 [Terms of Service] ,会发现它并非像某些人想象的那样是一个无法无天的法外之地。相反,它确实提供了极高的国家级防御,但在操作界面和道德条款上埋下了不少陷阱。
-
-条款里相比于 AWS 模糊的「适用法律」,1984 Hosting 明确指定了冰岛法律。
-
-> These Terms are governed by Icelandic law. Disputes arising from these Terms shall be brought before the Reykjavík District Court.
+> These Terms are governed by Icelandic law. Disputes arising from these Terms shall be brought before the Reykjavík District Court.
>
-> 本条款受冰岛法律管辖。由此条款引起的争议应提交给雷克雅未克地方法院。
+> 本条款受冰岛法律管辖。由此条款引起的争议应提交给雷克雅未克地方法院。
-美国政府想要获取服务器内的数据的话必须通过 _MLAT_ 让雷克雅未克地方法院认可并签发本地搜查令。MLAT(Mutual legal assitance treaty,相互法律援助条约)是两个国家之间签署的一种双边协议,用于在刑事调查中交换证据和信息。虽然 CLOUD Act 声称对美国公司拥有全球管辖权,但是 1984 Hosting 是一家纯粹的冰岛公司,和美国没有一点关系。因此美国想要数据,只能请求冰岛政府协助。
+美国政府想要获取服务器内的数据的话必须通过 MLAT 让雷克雅未克地方法院认可并签发本地搜查令。MLAT(Mutual legal assitance treaty,相互法律援助条约)是两个国家之间签署的一种双边协议,用于在刑事调查中交换证据和信息。虽然 CLOUD Act 声称对美国公司拥有全球管辖权,但是 1984 Hosting 是一家纯粹的冰岛公司,和美国没有一点关系。因此美国想要数据,只能请求冰岛政府协助。
-而冰岛法律拥有 _IMMI_ ,要让冰岛法官签发针对媒体或言论的搜查令,难度极高。IMMI(Icelandic Modern Media Initiative)是冰岛协会在 2010 年一致通过的一项决议,其目的是将冰岛打造为全球新闻自由和言论自由的避风港。根据 MLAT 中的 _双重犯罪原则_ ,如果美国的指控在冰岛法律下被视为受保护的言论自由而非犯罪,冰岛法院将拒绝签发搜查令。
+而冰岛法律拥有 IMMI ,要让冰岛法官签发针对媒体或言论的搜查令,难度极高。IMMI(Icelandic Modern Media Initiative)是冰岛协会在 2010 年一致通过的一项决议,其目的是将冰岛打造为全球新闻自由和言论自由的避风港。根据 MLAT 中的 双重犯罪原则 ,如果美国的指控在冰岛法律下被视为受保护的言论自由而非犯罪,冰岛法院将拒绝签发搜查令。
-说了优点,现在来说说缺点。很多追求「数字主权」的用户误以为 1984 Hosting 等于匿名抗审查,但它其实会明确记录用户的真实姓名和电话号码。
+说了优点,现在来说说缺点。很多追求「数字主权」的用户误以为 1984 Hosting 等于匿名抗审查,但它其实会明确记录用户的真实姓名和电话号码。
-> When a service agreement is concluded between the Subscriber and 1984 ehf., the following information from the Subscriber will be recorded: (1) the Subscriber's name; (2) the Subscriber's active e-mail address; (3) any user name selected by the Subscriber; (4) the Subscriber's password(s); (5) the Subscriber's active telephone number; and (6) payment details, i.e. address, means of payment, etc., in accordance with the laws on the handling of such information and 7) PIN number selected by customer
+> When a service agreement is concluded between the Subscriber and 1984 ehf., the following information from the Subscriber will be recorded: (1) the Subscriber's name; (2) the Subscriber's active e-mail address; (3) any user name selected by the Subscriber; (4) the Subscriber's password(s); (5) the Subscriber's active telephone number; and (6) payment details, i.e. address, means of payment, etc., in accordance with the laws on the handling of such information and 7) PIN number selected by customer
>
-> 当订户与 1984 ehf. 订立服务协议时,将记录下列来自订户的信息:(1) 订户的姓名;(2) 订户的有效电子邮件地址;(3) 订户选择的任何用户名;(4) 订户的密码;(5) 订户的有效电话号码;(6) 支付详情,即地址、支付方式等(依照处理此类信息的相关法律规定);以及 (7) 客户选择的 PIN 码。
+> 当订户与 1984 ehf. 订立服务协议时,将记录下列来自订户的信息:(1) 订户的姓名;(2) 订户的有效电子邮件地址;(3) 订户选择的任何用户名;(4) 订户的密码;(5) 订户的有效电话号码;(6) 支付详情,即地址、支付方式等(依照处理此类信息的相关法律规定);以及 (7) 客户选择的 PIN 码。
-如果试图提供虚假信息,你便违反了保证条款,他们有权关停服务:
+如果试图提供虚假信息,你便违反了保证条款,他们有权关停服务:
-> In addition, the Subscriber represents and warrants that all information provided by the Subscriber to 1984 ehf. is accurate, complete and current upon renewal and registration of services. The Subscriber represents and warrants that the Subscriber will inform 1984 ehf. of any changes to such information so as to ensure that 1984 ehf. always has accurate, complete and current information.
+> In addition, the Subscriber represents and warrants that all information provided by the Subscriber to 1984 ehf. is accurate, complete and current upon renewal and registration of services. The Subscriber represents and warrants that the Subscriber will inform 1984 ehf. of any changes to such information so as to ensure that 1984 ehf. always has accurate, complete and current information.
>
-> 此外,订户陈述并保证,其向 1984 ehf. 提供的所有信息在服务续约和注册时均准确、完整且为最新版本。订户陈述并保证将通知 1984 ehf. 此类信息的任何变更,以确保 1984 ehf. 始终掌握准确、完整且最新的信息。
+> 此外,订户陈述并保证,其向 1984 ehf. 提供的所有信息在服务续约和注册时均准确、完整且为最新版本。订户陈述并保证将通知 1984 ehf. 此类信息的任何变更,以确保 1984 ehf. 始终掌握准确、完整且最新的信息。
-虽然 1984 Hosting 标榜言论自由,但他们同样保留了极大的主观裁量权。根据 Sec 8.02,他们禁止「任何 1984 ehf. 认为是非法、有害或在道德上令人反感的材料」。
+虽然 1984 Hosting 标榜言论自由,但他们同样保留了极大的主观裁量权。根据 Sec 8.02,他们禁止「任何 1984 ehf. 认为是非法、有害或在道德上令人反感的材料」。
-> Offering, selling or showing, or providing links to other websites offering, selling or showing the following is prohibited: (a) habit-forming or narcotic substances or related services; (b) weapons; (c) copyrighted materials that the Subscriber is not entitled to offer or sell; (d) information used to violate the copyrights or trademarks of others; (e) information used to manufacture, make or provide illegal goods or weapons; (f) pornography or sexual products; (g) file sharing; (h) pharmaceuticals; (i) any materials or information that are, in the opinion of 1984 ehf., illegal, harmful or ethically objectionable.
+> Offering, selling or showing, or providing links to other websites offering, selling or showing the following is prohibited: (a) habit-forming or narcotic substances or related services; (b) weapons; (c) copyrighted materials that the Subscriber is not entitled to offer or sell; (d) information used to violate the copyrights or trademarks of others; (e) information used to manufacture, make or provide illegal goods or weapons; (f) pornography or sexual products; (g) file sharing; (h) pharmaceuticals; (i) any materials or information that are, in the opinion of 1984 ehf., illegal, harmful or ethically objectionable.
>
-> 禁止提供、销售或展示下列内容,亦禁止提供链接指向提供、销售或展示下列内容的其他网站:(a) 成瘾性物质、麻醉药品或相关服务;(b) 武器;(c) 订户无权提供或销售的受版权保护的材料;(d) 用于侵犯他人版权或商标的信息;(e) 用于制造、制作或提供非法物品或武器的信息;(f) 色情内容或性产品;(g) 文件共享;(h) 医药产品;(i) 任何经 1984 ehf. 认定为非法、有害或在道德上令人反感的材料或信息。
-
-冰岛法律对色情内容有严格限制,所以做成人内容或者边缘内容的用户会被直接 pass 掉。而「道德上令人反感」是一个口袋条款。什么是「道德上反感」?解释权完全归 1984 Hosting 所有,这与「绝对的言论自由」是有出入的。
-
-1984 Hosting 也和 AWS 一样,给自己预留了完全的决定权——只要他们认为你的材料有害,就可以不需要经过法院审判而直接停止向用户提供服务(见 Sec 8.04)。
-
-一个较为恶趣味的设计是,如果想要退订 1984 Hosting 的服务的话,必须在订阅到期的 16 天前向他们发送电子邮件(见 Sec 2.04)。
+> 禁止提供、销售或展示下列内容,亦禁止提供链接指向提供、销售或展示下列内容的其他网站:(a) 成瘾性物质、麻醉药品或相关服务;(b) 武器;(c) 订户无权提供或销售的受版权保护的材料;(d) 用于侵犯他人版权或商标的信息;(e) 用于制造、制作或提供非法物品或武器的信息;(f) 色情内容或性产品;(g) 文件共享;(h) 医药产品;(i) 任何经 1984 ehf. 认定为非法、有害或在道德上令人反感的材料或信息。
-基于上述分析,1984 Hosting 的「数字主权」建立在冰岛法律之上,而不是建立在 _无政府主义_ 之上。如果你的内容对美国而言是有问题,但在冰岛没问题的话,可以尝试一下 1984 Hosting。
+冰岛法律对色情内容有严格限制,所以做成人内容或者边缘内容的用户会被直接 pass 掉。而「道德上令人反感」是一个口袋条款。什么是「道德上反感」?解释权完全归 1984 Hosting 所有,这与「绝对的言论自由」是有出入的。
-在价格方面,一个 1 GB RAM、单 CPU、25 GB 硬盘内存的 VPS 是每月 7.6 欧元,折合 9 美元,或者说 63 人民币。
+1984 Hosting 也和 AWS 一样,给自己预留了完全的决定权——只要他们认为你的材料有害,就可以不需要经过法院审判而直接停止向用户提供服务(见 Sec 8.04)。
+一个较为恶趣味的设计是,如果想要退订 1984 Hosting 的服务的话,必须在订阅到期的 16 天前向他们发送电子邮件(见 Sec 2.04)。
-=> https://1984.hosting/tos/ Terms of Service
+基于上述分析,1984 Hosting 的「数字主权」建立在冰岛法律之上,而不是建立在 无政府主义 之上。如果你的内容对美国而言是有问题,但在冰岛没问题的话,可以尝试一下 1984 Hosting。
+在价格方面,一个 1 GB RAM、单 CPU、25 GB 硬盘内存的 VPS 是每月 7.6 欧元,折合 9 美元,或者说 63 人民币。
-#### OrangeWebsite
+### OrangeWebsite
-OrangeWebsite 很喜欢强调自己「在冰岛」这一身份。那么它的 [隐私条款] 可以证明它够「冰岛」么?
+OrangeWebsite 很喜欢强调自己「在冰岛」这一身份。那么它的 隐私条款 可以证明它够「冰岛」么?
-> We do not disclose any personal information obtained about you from this website to third parties. We may use the information to keep in contact with you and inform you of developments associated with our business. We do not release any information to foreign authorities or agencies. We only release any personal data or any data saved on our servers with valid Icelandic court order or similar order from Icelandic authorities if it's not stated otherwise in this document.
+> We do not disclose any personal information obtained about you from this website to third parties. We may use the information to keep in contact with you and inform you of developments associated with our business. We do not release any information to foreign authorities or agencies. We only release any personal data or any data saved on our servers with valid Icelandic court order or similar order from Icelandic authorities if it's not stated otherwise in this document.
>
-> We disclose the necessary personal data with 3rd party service providers, such as domain registrars and SSL-certificate registrars. Our client will be however informed about this before disclosure.
+> We disclose the necessary personal data with 3rd party service providers, such as domain registrars and SSL-certificate registrars. Our client will be however informed about this before disclosure.
>
-> 我们不会向第三方披露我们从本网站获取的您的任何个人信息。我们可能会使用这些信息与您保持联系,并向您告知与我们业务相关的最新动态。我们不会向外国当局或机构披露任何信息。除非本文档另有规定,否则我们仅凭有效的冰岛法院命令或冰岛当局的类似命令才会披露任何个人数据或保存在我们服务器上的任何数据。
+> 我们不会向第三方披露我们从本网站获取的您的任何个人信息。我们可能会使用这些信息与您保持联系,并向您告知与我们业务相关的最新动态。我们不会向外国当局或机构披露任何信息。除非本文档另有规定,否则我们仅凭有效的冰岛法院命令或冰岛当局的类似命令才会披露任何个人数据或保存在我们服务器上的任何数据。
>
-> 我们向第三方服务提供商披露必要个人数据,例如域名注册商和SSL证书注册商。但是,我们的客户将在披露前被告知此事。
+> 我们向第三方服务提供商披露必要个人数据,例如域名注册商和SSL证书注册商。但是,我们的客户将在披露前被告知此事。
-可以看出,OrangeWebsite 明确表示其法律根基完全扎根于冰岛,受到全球最严格隐私法之一的保护。
+可以看出,OrangeWebsite 明确表示其法律根基完全扎根于冰岛,受到全球最严格隐私法之一的保护。
-有意思的是,如果任何第三方就客户的个人详细信息联系 OrangeWebsite,他们会保留通知客户此类行动的权利。要知道,大多数美国服务商会受到禁言令的限制,被迫在秘密中移交数据且禁止通知用户。能把通知用户的权利写进隐私政策,很是豪爽喔。
+有意思的是,如果任何第三方就客户的个人详细信息联系 OrangeWebsite,他们会保留通知客户此类行动的权利。要知道,大多数美国服务商会受到禁言令的限制,被迫在秘密中移交数据且禁止通知用户。能把通知用户的权利写进隐私政策,很是豪爽喔。
-虽然在法律防御上很强硬,但在数据收集层面上,这份文档显示他们依然遵循传统的商业 ISP 模式。OrangeWebsite 会收集完整的计费信息字段,虽然没说必须验证真伪,但也没说使用假的也可以。
+虽然在法律防御上很强硬,但在数据收集层面上,这份文档显示他们依然遵循传统的商业 ISP 模式。OrangeWebsite 会收集完整的计费信息字段,虽然没说必须验证真伪,但也没说使用假的也可以。
-文档也承认 `orangewebsite.com' 上使用了自动化营销工具收集数据,但强调在 `secure.orangewebsite.com' 上不收集。意味着他们会追踪访客的营销数据,但是不会监控已登录用户的后台操作。
+文档也承认 orangewebsite.com 上使用了自动化营销工具收集数据,但强调在 secure.orangewebsite.com 上不收集。意味着他们会追踪访客的营销数据,但是不会监控已登录用户的后台操作。
-支付方面,文档并没有提及加密货币。如果只支持信用卡和 PayPal 的话,那么资金流向就是实名的。这一点需要阅读其他文档来确认。
+支付方面,文档并没有提及加密货币。如果只支持信用卡和 PayPal 的话,那么资金流向就是实名的。这一点需要阅读其他文档来确认。
-要知道更多,必须去阅读 [Terms of Service] 。里面提到,OrangeWebsite 虽然支持加密货币支付,但是是用的是 BitPay 和 CoinPayments。前者是业界最著名的合约狂魔,在许多情况下会强制要求付款人上传护照照片进行 KYC,否则拒绝处理交易——加密了个寂寞!如果付钱给 OrangeWebsite,你便有可能必须把护照交给美国公司。后者 CoinPayments 相对宽松点,但依然是第三方。
+要知道更多,必须去阅读 Terms of Service 。里面提到,OrangeWebsite 虽然支持加密货币支付,但是是用的是 BitPay 和 CoinPayments。前者是业界最著名的合约狂魔,在许多情况下会强制要求付款人上传护照照片进行 KYC,否则拒绝处理交易——加密了个寂寞!如果付钱给 OrangeWebsite,你便有可能必须把护照交给美国公司。后者 CoinPayments 相对宽松点,但依然是第三方。
-至于能否提供假的个人信息,答案是「否」,只是没有强制验证而已。平时是没人管,但要是出问题被发现了,他们可以以此为由封锁用户账号,且不退款。
+至于能否提供假的个人信息,答案是「否」,只是没有强制验证而已。平时是没人管,但要是出问题被发现了,他们可以以此为由封锁用户账号,且不退款。
-合法的成人内容在冰岛通常是被允许的,OrangeWebsite 的条款没有明确禁止合法成人内容,只提及了儿童色情。这一点依然需要进一步确认。
+合法的成人内容在冰岛通常是被允许的,OrangeWebsite 的条款没有明确禁止合法成人内容,只提及了儿童色情。这一点依然需要进一步确认。
-文档中也没有提及到 Tor。在主机行业,未明确允许即默认为高风险。结合 Sec 3.3,运行 Tor 出口节点极易被判定为扫描或滥用。建议默认其不支持 Tor 出口节点,除非咨询客服获得书面许可。
+文档中也没有提及到 Tor。在主机行业,未明确允许即默认为高风险。结合 Sec 3.3,运行 Tor 出口节点极易被判定为扫描或滥用。建议默认其不支持 Tor 出口节点,除非咨询客服获得书面许可。
-一些有趣的点:没买防御却被打,想临时加防御的话需要先交 200 欧元罚款;除非用户授权,否则 OrangeWebsite 是不会碰服务器的,包括维护系统时。
+一些有趣的点:没买防御却被打,想临时加防御的话需要先交 200 欧元罚款;除非用户授权,否则 OrangeWebsite 是不会碰服务器的,包括维护系统时。
+### FlokiNET
-=> https://orangewebsite.com/docs/privacy-policy.php 隐私条款
-=> https://orangewebsite.com/docs/tos.php Terms of Service
+阅读了一些隐私条款后,FlokiNET 的 隐私条款 中的一些内容我想只要看到就能发现陷阱。
+例如:
-#### FlokiNET
-
-阅读了一些隐私条款后,FlokiNET 的 [隐私条款] 中的一些内容我想只要看到就能发现陷阱。
-
-例如:
-
-> FlokiNET considers any information that can be used to directly or indirectly identify you to be Personal Data, including, without limitation, Personal Data that is accessed, collected, maintained, transmitted and/or used by FlokiNET in the normal course of our business and is subject to the provisions of this Privacy Policy and applicable law.
+> FlokiNET considers any information that can be used to directly or indirectly identify you to be Personal Data, including, without limitation, Personal Data that is accessed, collected, maintained, transmitted and/or used by FlokiNET in the normal course of our business and is subject to the provisions of this Privacy Policy and applicable law.
>
-> FlokiNET 将任何可用于直接或间接识别您的信息视为个人数据,包括但不限于 FlokiNET 在正常业务过程中访问、收集、维护、传输和/或使用的个人数据,并且该等数据受本隐私政策和适用法律的约束。
+> FlokiNET 将任何可用于直接或间接识别您的信息视为个人数据,包括但不限于 FlokiNET 在正常业务过程中访问、收集、维护、传输和/或使用的个人数据,并且该等数据受本隐私政策和适用法律的约束。
-> FlokiNET will ensure that appropriate security measures are in place and that confidentiality is maintained to protect your personal information in accordance with applicable laws and regulations.
+> FlokiNET will ensure that appropriate security measures are in place and that confidentiality is maintained to protect your personal information in accordance with applicable laws and regulations.
>
-> FlokiNET 将确保采取适当的安全措施并保持机密性,以根据适用法律法规保护您的个人信息。
+> FlokiNET 将确保采取适当的安全措施并保持机密性,以根据适用法律法规保护您的个人信息。
-> If you breach the Terms of Service or any other applicable service level agreement, or if FlokiNET is required to disclose or share your personal data in order to comply with any legal obligation, FlokiNET may disclose your information to a relevant authority. In particular, FlokiNET may disclose the information it collects to third parties if FlokiNET believes that disclosure is appropriate to comply with the law, to enforce its legal rights, or to protect the rights or safety of others.
+> If you breach the Terms of Service or any other applicable service level agreement, or if FlokiNET is required to disclose or share your personal data in order to comply with any legal obligation, FlokiNET may disclose your information to a relevant authority. In particular, FlokiNET may disclose the information it collects to third parties if FlokiNET believes that disclosure is appropriate to comply with the law, to enforce its legal rights, or to protect the rights or safety of others.
>
-> 如果您违反服务条款或任何其他适用的服务级别协议,或者 FlokiNET 为遵守任何法律义务而被要求披露或共享您的个人数据,FlokiNET 可以向相关部门披露您的信息。特别是,如果 FlokiNET 认为披露信息有助于遵守法律、执行其合法权利或保护他人权利或安全,FlokiNET 可以向第三方披露其收集的信息。
+> 如果您违反服务条款或任何其他适用的服务级别协议,或者 FlokiNET 为遵守任何法律义务而被要求披露或共享您的个人数据,FlokiNET 可以向相关部门披露您的信息。特别是,如果 FlokiNET 认为披露信息有助于遵守法律、执行其合法权利或保护他人权利或安全,FlokiNET 可以向第三方披露其收集的信息。
-等等等等(提示:「适用」!)。
+等等等等(提示:「适用」!)。
-那我们只来看一些有趣的地方:
+那我们只来看一些有趣的地方:
-> Customer data (data stored on the server) is stored in accordance with applicable law and requires a court order from the country in which it is stored in order to be disclosed.
+> Customer data (data stored on the server) is stored in accordance with applicable law and requires a court order from the country in which it is stored in order to be disclosed.
>
-> 客户数据(存储在服务器上的数据)的存储须符合适用法律,且披露该数据需要获得数据存储所在国家的法院命令。
+> 客户数据(存储在服务器上的数据)的存储须符合适用法律,且披露该数据需要获得数据存储所在国家的法院命令。
-后半句很关键,因为它明确了数据主权随物理位置而定。如果用户的服务器选在冰岛,FlokiNET 就只认冰岛法院的命令;选在罗马尼亚,只认罗马尼亚法院的命令。这意味着 *用户必须明智地选择数据中心位置* 。这一点往往会被忽略,以为只要是 FlokiNET 就全都一样安全。
+后半句很关键,因为它明确了数据主权随物理位置而定。如果用户的服务器选在冰岛,FlokiNET 就只认冰岛法院的命令;选在罗马尼亚,只认罗马尼亚法院的命令。这意味着 用户必须明智地选择数据中心位置 。这一点往往会被忽略,以为只要是 FlokiNET 就全都一样安全。
-言论自由主机从来都不等同于匿名主机,FlokiNET 就是一个例子。它会收集用户的信息,且不单单指代用户的注册信息,还有访客的指纹。
+言论自由主机从来都不等同于匿名主机,FlokiNET 就是一个例子。它会收集用户的信息,且不单单指代用户的注册信息,还有访客的指纹。
-FlokiNET 还会存储账单记录足足七年,就算是比特币交易哈希也会被存储:
+FlokiNET 还会存储账单记录足足七年,就算是比特币交易哈希也会被存储:
-> You may cancel your account at any time and request that your personal information be deleted from our databases, except for any accounting records of purchases, which we are required by law to retain for 7 years, network access logs, which we may retain for any period of time at our discretion, in cases where there are outstanding financial obligations or in cases where illegal activity is suspected (as determined by FlokiNET management or law enforcement officials), in which case personal information may be retained indefinitely for the purposes of ongoing investigation and prevention of recurrence of fraud, or in cases where a breach of the Terms and Conditions and applicable Service Level Agreement has resulted in the termination of your account (as defined by revocation of your permission to use FlokiNET's services), in which case personal information may be retained indefinitely for the purposes of preventing further use of FlokiNET's services by the offending individual.
+> You may cancel your account at any time and request that your personal information be deleted from our databases, except for any accounting records of purchases, which we are required by law to retain for 7 years, network access logs, which we may retain for any period of time at our discretion, in cases where there are outstanding financial obligations or in cases where illegal activity is suspected (as determined by FlokiNET management or law enforcement officials), in which case personal information may be retained indefinitely for the purposes of ongoing investigation and prevention of recurrence of fraud, or in cases where a breach of the Terms and Conditions and applicable Service Level Agreement has resulted in the termination of your account (as defined by revocation of your permission to use FlokiNET's services), in which case personal information may be retained indefinitely for the purposes of preventing further use of FlokiNET's services by the offending individual.
>
-> 您可以随时取消您的账户,并要求从我们的数据库中删除您的个人信息,但出于会计记录的购买记录除外,根据法律规定,我们必须保留 7 年;网络访问日志,我们可以自行决定在任何时期保留,在存在未偿还的财务义务的情况下,或在怀疑存在非法活动的情况下(由 FlokiNET 管理层或执法官员确定),在这种情况下,个人信息可能会被无限期保留,以用于正在进行的调查和防止欺诈再次发生;或在违反了服务条款和适用的服务级别协议导致您的账户被终止的情况下(定义为撤销您使用 FlokiNET 服务的权限),在这种情况下,个人信息可能会被无限期保留,以防止违规个人进一步使用 FlokiNET 的服务。
-
-「自行决定」是法律上的流氓条款。FlokiNET 明确表示他们会留日志,而且想留多久留多久。这通常是为了应对执法部门的溯源要求。
-
-FlokiNET 也会无限期保留违规的用户信息。注意,这里的「违规」也包括「怀疑存在违规行为」这一主观想法。无限期保留的缺陷便是你无法通过注销账号来行使被遗忘权。
-
-关于支付,FlokiNET 使用的是第三方支付,这包含了面向智利或全球的 Paygol、面向冰岛的 Borgun(现更名为 SaltPay),以及面向冰岛国家银行的 Landsbankinn。这三家都是受严格金融监管的实体,必定遵守 _AML_ (Anti-money Laundering,反洗钱)规定,将数据直通给政府。
+> 您可以随时取消您的账户,并要求从我们的数据库中删除您的个人信息,但出于会计记录的购买记录除外,根据法律规定,我们必须保留 7 年;网络访问日志,我们可以自行决定在任何时期保留,在存在未偿还的财务义务的情况下,或在怀疑存在非法活动的情况下(由 FlokiNET 管理层或执法官员确定),在这种情况下,个人信息可能会被无限期保留,以用于正在进行的调查和防止欺诈再次发生;或在违反了服务条款和适用的服务级别协议导致您的账户被终止的情况下(定义为撤销您使用 FlokiNET 服务的权限),在这种情况下,个人信息可能会被无限期保留,以防止违规个人进一步使用 FlokiNET 的服务。
-说到 AML,就必须说到该法规强制要求机构们执行的两个关键动作:
+「自行决定」是法律上的流氓条款。FlokiNET 明确表示他们会留日志,而且想留多久留多久。这通常是为了应对执法部门的溯源要求。
-* KYC(Know Your Customer,了解你的客户):必须验证付款人的真实身份;
-* SAR(Suspicious Activity Reports,可疑活动报告):必须监控交易流向。
+FlokiNET 也会无限期保留违规的用户信息。注意,这里的「违规」也包括「怀疑存在违规行为」这一主观想法。无限期保留的缺陷便是你无法通过注销账号来行使被遗忘权。
-凡是提及遵守 AML/KYC 的支付方式,都等同于实名支付。而在 AML 框架下的金融数据,隐私保护等级极低。只要执法机构以调查洗钱或资助恐怖主义为由调取数据,这些支付机构不仅必须配合,而且往往设有专门的自动化接口来对接政府查询。
+关于支付,FlokiNET 使用的是第三方支付,这包含了面向智利或全球的 Paygol、面向冰岛的 Borgun(现更名为 SaltPay),以及面向冰岛国家银行的 Landsbankinn。这三家都是受严格金融监管的实体,必定遵守 AML (Anti-money Laundering,反洗钱)规定,将数据直通给政府。
-因此, *在金融世界里,不存在法外之地的支付通道* ,尤其是涉及到信用卡和银行转账(再尤其是 Visa 和 Mastercard 的授权收单机构)时。
+说到 AML,就必须说到该法规强制要求机构们执行的两个关键动作:
-FlokiNET 目前提供四个区:罗马尼亚、冰岛、荷兰以及芬兰(未来会提供新加坡)。这四个区的价格各不相同,但单核、1 GB RAM、20 GB 硬盘空间的 VPS 大致在每月 7.99 到 10.99 欧元之间,折合 9.5 到 13 美元,或者 66.5 到 91.5 人民币。
+1. KYC(Know Your Customer,了解你的客户):必须验证付款人的真实身份;
+2. SAR(Suspicious Activity Reports,可疑活动报告):必须监控交易流向。
+凡是提及遵守 AML/KYC 的支付方式,都等同于实名支付。而在 AML 框架下的金融数据,隐私保护等级极低。只要执法机构以调查洗钱或资助恐怖主义为由调取数据,这些支付机构不仅必须配合,而且往往设有专门的自动化接口来对接政府查询。
-=> https://flokinet.is/privacy-policy 隐私条款
+因此, 在金融世界里,不存在法外之地的支付通道 ,尤其是涉及到信用卡和银行转账(再尤其是 Visa 和 Mastercard 的授权收单机构)时。
+FlokiNET 目前提供四个区:罗马尼亚、冰岛、荷兰以及芬兰(未来会提供新加坡)。这四个区的价格各不相同,但单核、1 GB RAM、20 GB 硬盘空间的 VPS 大致在每月 7.99 到 10.99 欧元之间,折合 9.5 到 13 美元,或者 66.5 到 91.5 人民币。
-#### Njalla
+### Njalla
-Njalla 的 [条款] 是「数字主权」领域中最激进的条款之一,得利于它的法律隔离层。不同于传统服务商试图平衡合规与隐私,Njalla 采用了一种替代所有权的模式来规避管辖。
+Njalla 的 条款 是「数字主权」领域中最激进的条款之一,得利于它的法律隔离层。不同于传统服务商试图平衡合规与隐私,Njalla 采用了一种替代所有权的模式来规避管辖。
-首先 Njalla 的运营实体位于尼维斯,是加勒比海的一个小岛,也是著名的离岸避税天堂和隐私堡垒。尼维斯法律对公司信息的保密性极高,且不执行美国或欧盟的民事判决。这意味着版权流氓想要起诉 Njalla 索要用户数据几乎是不可能的,因为当地法院根本不承认这些外国的民事诉求。
+首先 Njalla 的运营实体位于尼维斯,是加勒比海的一个小岛,也是著名的离岸避税天堂和隐私堡垒。尼维斯法律对公司信息的保密性极高,且不执行美国或欧盟的民事判决。这意味着版权流氓想要起诉 Njalla 索要用户数据几乎是不可能的,因为当地法院根本不承认这些外国的民事诉求。
-不过条款中并未披露服务器的物理位置。虽然公司在尼维斯,但服务器可能位于瑞典、芬兰或其他欧洲国家。根据 _属地管辖权_ ,服务器所在地的执法机构依然有权直接扣押物理服务器。Njalla 的防御仅限于法律文书层面,而非物理设施层面。
+不过条款中并未披露服务器的物理位置。虽然公司在尼维斯,但服务器可能位于瑞典、芬兰或其他欧洲国家。根据 属地管辖权 ,服务器所在地的执法机构依然有权直接扣押物理服务器。Njalla 的防御仅限于法律文书层面,而非物理设施层面。
-其次 Njalla 不需要用户实名制,甚至都不需要邮箱,仅需一个 XMPP(一种去中心化的即时通讯协议)地址即可注册。
+其次 Njalla 不需要用户实名制,甚至都不需要邮箱,仅需一个 XMPP(一种去中心化的即时通讯协议)地址即可注册。
-在 Sec 6.4 中,Njalla 还嘲讽了 GDPR,认为真正的隐私并非「合规地处理数据」,而是「根本不收集数据」。这种态度表明他们不会主动配合常规的数据保留指令。
+在 Sec 6.4 中,Njalla 还嘲讽了 GDPR,认为真正的隐私并非「合规地处理数据」,而是「根本不收集数据」。这种态度表明他们不会主动配合常规的数据保留指令。
-较为有争议性的是 Sec 3.3。在 WHOIS 数据库和法律层面,域名或服务器的所有者是 Njalla,而非用户。好处是这实现了完美的隐私,因为在公网记录里你根本不存在,没人能查到你的名字;坏处是如果 Njalla 跑路、倒闭或者恶意侵占,你在法律上很难证明这个资产是你的。
+较为有争议性的是 Sec 3.3。在 WHOIS 数据库和法律层面,域名或服务器的所有者是 Njalla,而非用户。好处是这实现了完美的隐私,因为在公网记录里你根本不存在,没人能查到你的名字;坏处是如果 Njalla 跑路、倒闭或者恶意侵占,你在法律上很难证明这个资产是你的。
-说完优点来说缺点。Njalla 的条款内有一些陷阱:在 Sec 9.2 中,他们也使用了「任何适用法律」这样的词汇,且没有限定是尼维斯法律。如果服务器位于瑞典,瑞典警方的要求也属于适用法律。
+说完优点来说缺点。Njalla 的条款内有一些陷阱:在 Sec 9.2 中,他们也使用了「任何适用法律」这样的词汇,且没有限定是尼维斯法律。如果服务器位于瑞典,瑞典警方的要求也属于适用法律。
-> needed to comply with any applicable laws, government rules, requests of law enforcement, court orders or public authorities; it is in compliance with any dispute resolution process; to avoid any potential civil or criminal liability; or your use of the Services in any other way incurs damage on the Services or Njalla or entails a risk thereof.
+> needed to comply with any applicable laws, government rules, requests of law enforcement, court orders or public authorities;
+> it is in compliance with any dispute resolution process;
+> to avoid any potential civil or criminal liability; or
+> your use of the Services in any other way incurs damage on the Services or Njalla or entails a risk thereof.
>
-> 需要遵守任何适用的法律、政府规定、执法部门的要求、法院命令或公共当局的要求; 符合任何争议解决程序; 为避免任何潜在的民事或刑事责任;或 您以其他任何方式使用本服务均会对本服务或 Njalla 造成损害或带来风险。
+> 需要遵守任何适用的法律、政府规定、执法部门的要求、法院命令或公共当局的要求;
+> 符合任何争议解决程序;
+> 为避免任何潜在的民事或刑事责任;或
+> 您以其他任何方式使用本服务均会对本服务或 Njalla 造成损害或带来风险。
-「执法请求」一词意味着仅仅是警方的请求就足以让 Njalla 关停你的服务。以及绝对免责条款:只要 Njalla 觉得你的存在可能让他们惹上官司,他们就可以先下手为强把你关了。尽管他们由海盗湾创始人建立,但他们并不打算为了你而在法庭上死磕。
+「执法请求」一词意味着仅仅是警方的请求就足以让 Njalla 关停你的服务。以及绝对免责条款:只要 Njalla 觉得你的存在可能让他们惹上官司,他们就可以先下手为强把你关了。尽管他们由海盗湾创始人建立,但他们并不打算为了你而在法庭上死磕。
-Njalla 并不是一个传统的 VPS 服务商,它更像是个匿名代理中介。如果你是极度需要隐藏身份的用户,且主要受来自民事诉讼或非国家级的骚扰的话,可以尝试一下 Njalla。
+Njalla 并不是一个传统的 VPS 服务商,它更像是个匿名代理中介。如果你是极度需要隐藏身份的用户,且主要受来自民事诉讼或非国家级的骚扰的话,可以尝试一下 Njalla。
-在价格方面,Njalla 一个单核、1.5 GB RAM、15 GB 硬盘空间、1.5 TB 流量的 VPS 每个月是 15 欧元,折合近 18 美元,或者说近 125 人民币。
+在价格方面,Njalla 一个单核、1.5 GB RAM、15 GB 硬盘空间、1.5 TB 流量的 VPS 每个月是 15 欧元,折合近 18 美元,或者说近 125 人民币。
+### Privex
-=> https://njal.la/tos/ 条款
+Privex 的 隐私条款 很是简短,因为它实行了 数据极简主义 ——如果根本不收集数据,那就不需要写几千字来说明你如何处理数据。
+不过虽然看起来很美,但依然存在需要警惕的盲区。
-#### Privex
+阅读隐私条款时最可怕的并不是它写了什么,而是它没写什么。Privex 的隐私条款就完全没有提及它的注册实体在哪里,也没有提及适用的法律管辖区。这就带来了一个巨大的法律不确定性。如果 Privex 注册在五眼联盟国家,那这份隐私条款在 国家安全信函 面前就是废纸一张。
-Privex 的 [隐私条款] 很是简短,因为它实行了 _数据极简主义_ ——如果根本不收集数据,那就不需要写几千字来说明你如何处理数据。
+然而文档中有一句话极其耐人寻味,暴露了他们的威胁模型:
-不过虽然看起来很美,但依然存在需要警惕的盲区。
-
-阅读隐私条款时最可怕的并不是它写了什么,而是它没写什么。Privex 的隐私条款就完全没有提及它的注册实体在哪里,也没有提及适用的法律管辖区。这就带来了一个巨大的法律不确定性。如果 Privex 注册在五眼联盟国家,那这份隐私条款在 _国家安全信函_ 面前就是废纸一张。
-
-然而文档中有一句话极其耐人寻味,暴露了他们的威胁模型:
-
-> We hold all database data on our own database cluster, with full disk encryption on all database nodes, protecting your data in the event of our database servers being seized.
+> We hold all database data on our own database cluster, with full disk encryption on all database nodes, protecting your data in the event of our database servers being seized.
>
-> 我们将所有数据库数据保存在我们自己的数据库集群中,并在所有数据库节点上进行全盘加密,以保护您数据在我们的数据库服务器被扣押的情况下。
+> 我们将所有数据库数据保存在我们自己的数据库集群中,并在所有数据库节点上进行全盘加密,以保护您数据在我们的数据库服务器被扣押的情况下。
-绝大多数主流厂商的条款只会讨论数据泄露或合规,而 Privex 罕见地预设了服务器被执法部门物理扣押的情况,这说明他们的防御对象直接设定为了国家强力部门。
+绝大多数主流厂商的条款只会讨论数据泄露或合规,而 Privex 罕见地预设了服务器被执法部门物理扣押的情况,这说明他们的防御对象直接设定为了国家强力部门。
-在隐私方面上,Privex 做得相当不错:允许用户使用假名,也不会记录用户的 IP 地址。配合加密货币支付,理论上可以实现 100% 的链上链下身份隔离。再加上 Privex 不使用第三方服务:不使用 Cloudflare、不使用 AWS RDS、自建支付网关。先前我在 AWS 的条款分析中提到,数据泄露往往发生在第三方供应商。
+在隐私方面上,Privex 做得相当不错:允许用户使用假名,也不会记录用户的 IP 地址。配合加密货币支付,理论上可以实现 100% 的链上链下身份隔离。再加上 Privex 不使用第三方服务:不使用 Cloudflare、不使用 AWS RDS、自建支付网关。先前我在 AWS 的条款分析中提到,数据泄露往往发生在第三方供应商。
-现在来说「陷阱」。Privex 会收集用户使用服务器的目的。一个不需要实名、不记录 IP 的服务商,为什么要问用户「买服务器干什么」?
+现在来说「陷阱」。Privex 会收集用户使用服务器的目的。一个不需要实名、不记录 IP 的服务商,为什么要问用户「买服务器干什么」?
-> In some rare cases, for specific products, we may be required to share some, or all of your personal details with one or more third parties in-order to provide the service. In the event of this, we will explicitly inform the customer before sharing any details, in clear visible writing.
+> In some rare cases, for specific products, we may be required to share some, or all of your personal details with one or more third parties in-order to provide the service. In the event of this, we will explicitly inform the customer before sharing any details, in clear visible writing.
>
-> 在极少数情况下,对于特定产品,我们可能需要与一个或多个第三方共享您的一些或所有个人详细信息,以提供服务。在这种情况下,在共享任何详细信息之前,我们将以清晰可见的文字明确告知客户。
-
-Privex 也给自己留了这么个合规的后门。通常来说,这指的是域名注册或软件授权。如果在 Privex 注册域名,ICANN 规定必须有 WHOIS 信息,Privex 必须把信息传给上游注册局。虽然 Privex 承诺会用大号粗体字显式告知,但为了绝对的「数字主权」,建议只在 Privex 购买纯粹的计算资源,不要购买域名或者商业软件授权,以避免触发这个第三方共享条款。
-
-这样看来,Privex 最大的缺点便是缺乏明确的法律管辖区声明。一旦出事,用户没有任何法律途径维权,只能寄希望于 Privex 的技术防御能扛得住。
-
-但先别急!我们最好是再多阅读一下 Privex 的文档,例如 [FAQ] 。
+> 在极少数情况下,对于特定产品,我们可能需要与一个或多个第三方共享您的一些或所有个人详细信息,以提供服务。在这种情况下,在共享任何详细信息之前,我们将以清晰可见的文字明确告知客户。
-FAQ 解答了我先前的一些疑惑:是的,Privex 是在伯利兹注册的。他们也不向伯利兹本地人提供服务,符合离岸公司的标准操作(为了避免触犯本地法律)。
+Privex 也给自己留了这么个合规的后门。通常来说,这指的是域名注册或软件授权。如果在 Privex 注册域名,ICANN 规定必须有 WHOIS 信息,Privex 必须把信息传给上游注册局。虽然 Privex 承诺会用大号粗体字显式告知,但为了绝对的「数字主权」,建议只在 Privex 购买纯粹的计算资源,不要购买域名或者商业软件授权,以避免触发这个第三方共享条款。
-Privex 有两类区域:标准区域和自治区域。前者是租用别人的机器,受上游供应商管制。如果上游收到投诉,Privex 必须在 12-72 小时内删号。这些区域自然没有数字主权而言。后者的机器是 Privex 自个儿买的,网络设备自己运营,IP 也是自己的。这意味着只有瑞典或者荷兰当地法院或者伯利兹法院能命令他们关机。普通的 DMCA 投诉、滥用报告,Privex 可以选择无视。
+这样看来,Privex 最大的缺点便是缺乏明确的法律管辖区声明。一旦出事,用户没有任何法律途径维权,只能寄希望于 Privex 的技术防御能扛得住。
-对于一般人来说,一个较为扣分的点是 Privex 拒绝法币支付,也就是信用卡和 Paypal 这类支付方式。
+但先别急!我们最好是再多阅读一下 Privex 的文档,例如 FAQ 。
-接着是对于灰产许可与诚实原则的说明。这一点展现了 Privex 独特的法外狂徒但守规矩的逻辑:
+FAQ 解答了我先前的一些疑惑:是的,Privex 是在伯利兹注册的。他们也不向伯利兹本地人提供服务,符合离岸公司的标准操作(为了避免触犯本地法律)。
-* Tor 出口节点许可;
+Privex 有两类区域:标准区域和自治区域。前者是租用别人的机器,受上游供应商管制。如果上游收到投诉,Privex 必须在 12-72 小时内删号。这些区域自然没有数字主权而言。后者的机器是 Privex 自个儿买的,网络设备自己运营,IP 也是自己的。这意味着只有瑞典或者荷兰当地法院或者伯利兹法院能命令他们关机。普通的 DMCA 投诉、滥用报告,Privex 可以选择无视。
-* 在「使用目的」里老老实实说自己买服务器干什么,跑的是色情网站 Privex 也会保护你;
+对于一般人来说,一个较为扣分的点是 Privex 拒绝法币支付,也就是信用卡和 Paypal 这类支付方式。
-* 不过呢,在标准区域里 Privex 依然需要遵守上游供应商的规矩。
+接着是对于灰产许可与诚实原则的说明。这一点展现了 Privex 独特的法外狂徒但守规矩的逻辑:
-价格方面,Privex 提供迷你 VPS,例如一个 256M RAM、单核、5 G 硬盘空间、仅有 IPv6 的瑞典服务器,每月只需要 1 美元。如果看更为标准的单核、1 G RAM、15 G 硬盘空间的瑞典服务器的话,则是 4 美元一个月。
+* Tor 出口节点许可;
-其他国家的服务器会贵一丢丢,这里就只展示瑞典区域的服务器价格了。
+* 在「使用目的」里老老实实说自己买服务器干什么,跑的是色情网站 Privex 也会保护你;
+* 不过呢,在标准区域里 Privex 依然需要遵守上游供应商的规矩。
-=> https://www.privex.io/privacy/ 隐私条款
-=> https://www.privex.io/faq/ FAQ
+价格方面,Privex 提供迷你 VPS,例如一个 256M RAM、单核、5 G 硬盘空间、仅有 IPv6 的瑞典服务器,每月只需要 1 美元。如果看更为标准的单核、1 G RAM、15 G 硬盘空间的瑞典服务器的话,则是 4 美元一个月。
+其他国家的服务器会贵一丢丢,这里就只展示瑞典区域的服务器价格了。
-#### Hetzner
+### Hetzner
-Hetzner 的 [隐私条款] 的重要部分是折叠起来的,这有点小坑,我还以为那个是超链接,点击后才发现是折叠块。
+Hetzner 的 隐私条款 的重要部分是折叠起来的,这有点小坑,我还以为那个是超链接,点击后才发现是折叠块。
-> Unless otherwise specified, your data will remain within the EU and will not be passed on to third parties.
+> Unless otherwise specified, your data will remain within the EU and will not be passed on to third parties.
>
-> 除非另有说明,您的数据将保留在欧盟境内,不会透露给第三方。
+> 除非另有说明,您的数据将保留在欧盟境内,不会透露给第三方。
-这一句话表明了 Hetzner 默认让用户数据归于 GDPR 的保护下。但是重点在于「另有说明」一词。现在 Hetzner 在美国和其他国家都有数据中心。如果购买时选择了美国节点,那么根据之前提到的属地管辖权,这部分数据将不可避免地落入美国 CLOUD Act 的管辖范围。这份隐私政策是针对德国母公司的,它巧妙地没有展开讨论美国分公司的法律地位。
+这一句话表明了 Hetzner 默认让用户数据归于 GDPR 的保护下。但是重点在于「另有说明」一词。现在 Hetzner 在美国和其他国家都有数据中心。如果购买时选择了美国节点,那么根据之前提到的属地管辖权,这部分数据将不可避免地落入美国 CLOUD Act 的管辖范围。这份隐私政策是针对德国母公司的,它巧妙地没有展开讨论美国分公司的法律地位。
-Hetzner 有着极其严苛的预审与 KYC。在用户付款前,他们会通过第三方服务对用户进行风险画像,通常包括 IP 声誉、浏览器指纹甚至名字是否在某些黑名单上。如果被判定为高风险,他们甚至不会告诉用户原因就拒绝服务。
+Hetzner 有着极其严苛的预审与 KYC。在用户付款前,他们会通过第三方服务对用户进行风险画像,通常包括 IP 声誉、浏览器指纹甚至名字是否在某些黑名单上。如果被判定为高风险,他们甚至不会告诉用户原因就拒绝服务。
-匿名也是不可能的。Hetzner 会将护照信息传输给立陶宛(欧盟国家,受 GDPR 保护)的 iDenfy。较为恐怖的是,Hetzner 会保留足足 14 年的开票数据,用于税法和商法保留义务。
+匿名也是不可能的。Hetzner 会将护照信息传输给立陶宛(欧盟国家,受 GDPR 保护)的 iDenfy。较为恐怖的是,Hetzner 会保留足足 14 年的开票数据,用于税法和商法保留义务。
-一个大家可能不会注意到的泄漏点是 Hetzner 的网页客服系统外包给了美国公司 Kapa.ai 和 OpenAI。虽然声称有个人敏感信息过滤工具,但在技术上这依然是一个通向美国的后门。
+一个大家可能不会注意到的泄漏点是 Hetzner 的网页客服系统外包给了美国公司 Kapa.ai 和 OpenAI。虽然声称有个人敏感信息过滤工具,但在技术上这依然是一个通向美国的后门。
-看完数据隐私相关后,还需要阅读 [Terms and Conditions] ,因为前者的内容过短,许多重要条款都没有提及到。
+看完数据隐私相关后,还需要阅读 Terms and Conditions ,因为前者的内容过短,许多重要条款都没有提及到。
-> All matters arising out of or relating to these Terms and the contractual relationship are governed by and construed in accordance with German law without giving effect to any choice or conflict of law provision or rule that would cause the application of the law of any jurisdiction – including international jurisdiction - other than German law. Place of jurisdiction for all disputes arising from the contractual relationship is our registered office in Gunzenhausen, Germany. However, we are entitled in all cases to take legal action at your place of business. Overriding statutory provisions, in particular, exclusive jurisdiction, shall remain unaffected.
+> All matters arising out of or relating to these Terms and the contractual relationship are governed by and construed in accordance with German law without giving effect to any choice or conflict of law provision or rule that would cause the application of the law of any jurisdiction – including international jurisdiction - other than German law. Place of jurisdiction for all disputes arising from the contractual relationship is our registered office in Gunzenhausen, Germany. However, we are entitled in all cases to take legal action at your place of business. Overriding statutory provisions, in particular, exclusive jurisdiction, shall remain unaffected.
>
-> 因本条款及合同关系引起或与之相关的所有事项,均应受德国法律管辖并根据德国法律解释,不得引起任何选择或冲突法律条款或规则适用任何管辖权——包括国际管辖权——而非德国法律。合同关系引起的所有争议的管辖地为我们在德国 Gunzenhausen 的注册办事处。但是,在所有情况下,我们均有权在您的营业地提起法律诉讼。特别是,具有约束力的法定条款,尤其是专属管辖权,将不受影响。
+> 因本条款及合同关系引起或与之相关的所有事项,均应受德国法律管辖并根据德国法律解释,不得引起任何选择或冲突法律条款或规则适用任何管辖权——包括国际管辖权——而非德国法律。合同关系引起的所有争议的管辖地为我们在德国 Gunzenhausen 的注册办事处。但是,在所有情况下,我们均有权在您的营业地提起法律诉讼。特别是,具有约束力的法定条款,尤其是专属管辖权,将不受影响。
-Sec 22 里,Hetzner 表面上声称即使服务器在美国,他们也会按照德国法律办事。
+Sec 22 里,Hetzner 表面上声称即使服务器在美国,他们也会按照德国法律办事。
-但是……
+但是……
-> You are not allowed to publish content that may violate the rights of third parties or otherwise violate the federal or any state law of the US.
+> You are not allowed to publish content that may violate the rights of third parties or otherwise violate the federal or any state law of the US.
>
-> 您不得发布可能侵犯第三方权利或以其他方式违反美国联邦或任何州法律的内容。
+> 您不得发布可能侵犯第三方权利或以其他方式违反美国联邦或任何州法律的内容。
-> The Services we provide in the USA are subject to the export laws, restrictions, regulations and administrative acts of the United States Department of Commerce, Department of Treasury Office of Foreign Assets Control (“OFAC”), State Department, and other United States authorities (collectively, “U.S. Export Laws”). You shall not use our Services to collect, store or transmit any technical information or data that is controlled under U.S. Export Laws. You shall not export or re-export, or allow the export or re-export of, our Services in violation of any U.S. Export Laws. None of our Services may be downloaded or otherwise exported or re-exported (i) into (or to a national or resident thereof) any country with which the United States has embargoed trade; or (ii) to anyone on the U.S. Treasury Department's list of Specially Designated Nationals or the U.S. Commerce Department's Denied Persons List, or any other denied parties lists under U.S. Export Laws. By using the Site and our Services, you agree to the forego, represent and warrant that you are not a national or resident of, located in, or under the control of, any restricted country; and you are not on any denied parties list; and you agree to comply with all U.S. Export Laws (including “anti-boycott”, “deemed export” and “deemed re-export” regulations). If you access the Site or our Services from other countries or jurisdictions, you do so on your own initiative and you are responsible for compliance with the local laws of that jurisdiction, if and to the extent those local laws are applicable and do not conflict with U.S. Export Laws. If such laws conflict with U.S. Export Laws, you shall not access the Site or use our Services. The obligations under this section shall survive any termination or expiration of these Terms or your use of the Site our Services.
+> The Services we provide in the USA are subject to the export laws, restrictions, regulations and administrative acts of the United States Department of Commerce, Department of Treasury Office of Foreign Assets Control (“OFAC”), State Department, and other United States authorities (collectively, “U.S. Export Laws”). You shall not use our Services to collect, store or transmit any technical information or data that is controlled under U.S. Export Laws. You shall not export or re-export, or allow the export or re-export of, our Services in violation of any U.S. Export Laws. None of our Services may be downloaded or otherwise exported or re-exported (i) into (or to a national or resident thereof) any country with which the United States has embargoed trade; or (ii) to anyone on the U.S. Treasury Department's list of Specially Designated Nationals or the U.S. Commerce Department's Denied Persons List, or any other denied parties lists under U.S. Export Laws. By using the Site and our Services, you agree to the forego, represent and warrant that you are not a national or resident of, located in, or under the control of, any restricted country; and you are not on any denied parties list; and you agree to comply with all U.S. Export Laws (including “anti-boycott”, “deemed export” and “deemed re-export” regulations). If you access the Site or our Services from other countries or jurisdictions, you do so on your own initiative and you are responsible for compliance with the local laws of that jurisdiction, if and to the extent those local laws are applicable and do not conflict with U.S. Export Laws. If such laws conflict with U.S. Export Laws, you shall not access the Site or use our Services. The obligations under this section shall survive any termination or expiration of these Terms or your use of the Site our Services.
>
-> 我们在美国提供的服务受美国商务部、美国财政部外国资产控制办公室(“OFAC”)、国务院及其他美国当局(统称“美国出口法律”)的出口法律、限制、法规和行政法令的约束。您不得使用我们的服务来收集、存储或传输任何受美国出口法律管制的任何技术信息或数据。您不得违反任何美国出口法律出口或转口我们的服务,或允许出口或转口我们的服务。我们提供的任何服务不得下载或以其他方式出口或转口(i)到美国已实施贸易禁运的任何国家(或该国的国民或居民);或(ii)到美国财政部特别指定国民名单或美国商务部禁止出口人员名单,或根据美国出口法律的任何其他被拒绝方名单上的任何人。使用本网站和我们的服务,即表示您同意上述规定,并声明和保证您不是任何受限制国家的国民或居民,也不在该国家或地区,或受其控制;您不在任何被拒绝方名单上;并且您同意遵守所有美国出口法律(包括“反抵制”、“视同出口”和“视同转口”法规)。如果您从其他国家或司法管辖区访问本网站或我们的服务,您将自行承担此行为,并负责遵守该司法管辖区的当地法律,如果且在这些当地法律适用且不与美国出口法律冲突的情况下。如果此类法律与美国出口法律发生冲突,您不得访问本网站或使用我们的服务。本节项下的义务在本条款的任何终止或期满,或您对本网站或我们服务的使用的任何终止或期满后仍然有效。
+> 我们在美国提供的服务受美国商务部、美国财政部外国资产控制办公室(“OFAC”)、国务院及其他美国当局(统称“美国出口法律”)的出口法律、限制、法规和行政法令的约束。您不得使用我们的服务来收集、存储或传输任何受美国出口法律管制的任何技术信息或数据。您不得违反任何美国出口法律出口或转口我们的服务,或允许出口或转口我们的服务。我们提供的任何服务不得下载或以其他方式出口或转口(i)到美国已实施贸易禁运的任何国家(或该国的国民或居民);或(ii)到美国财政部特别指定国民名单或美国商务部禁止出口人员名单,或根据美国出口法律的任何其他被拒绝方名单上的任何人。使用本网站和我们的服务,即表示您同意上述规定,并声明和保证您不是任何受限制国家的国民或居民,也不在该国家或地区,或受其控制;您不在任何被拒绝方名单上;并且您同意遵守所有美国出口法律(包括“反抵制”、“视同出口”和“视同转口”法规)。如果您从其他国家或司法管辖区访问本网站或我们的服务,您将自行承担此行为,并负责遵守该司法管辖区的当地法律,如果且在这些当地法律适用且不与美国出口法律冲突的情况下。如果此类法律与美国出口法律发生冲突,您不得访问本网站或使用我们的服务。本节项下的义务在本条款的任何终止或期满,或您对本网站或我们服务的使用的任何终止或期满后仍然有效。
-这两条(Sec 4 和 Sec 19)否定了 Sec 22 的独立性。只要选择了美国节点,用户就必须遵守美国联邦法律和州法律。原本在德国合法但在美国非法的内容,在 Hetzner US 都是违规的。
+这两条(Sec 4 和 Sec 19)否定了 Sec 22 的独立性。只要选择了美国节点,用户就必须遵守美国联邦法律和州法律。原本在德国合法但在美国非法的内容,在 Hetzner US 都是违规的。
-为什么说是 Sec 22 被否定,而不是 Sec 22 否定了这两条条款呢。因为接下来的 Sec 23 中说道:
+为什么说是 Sec 22 被否定,而不是 Sec 22 否定了这两条条款呢。因为接下来的 Sec 23 中说道:
-> (a) IN THE EVENT THAT SECTION 22 IS NOT APPLICABLE BY LAW, THE FOLLOWING RULES SHALL APPLY.
+> (a) IN THE EVENT THAT SECTION 22 IS NOT APPLICABLE BY LAW, THE FOLLOWING RULES SHALL APPLY.
>
-> (b) YOU AND WE AGREE TO GIVE UP ANY RIGHTS TO LITIGATE CLAIMS IN A COURT OR BEFORE A JURY, OR TO PARTICIPATE IN A CLASS ACTION OR REPRESENTATIVE ACTION WITH RESPECT TO A CLAIM. OTHER RIGHTS THAT YOU WOULD HAVE IF YOU WENT TO COURT MAY ALSO BE UNAVAILABLE OR MAY BE LIMITED IN ARBITRATION.
+> (b) YOU AND WE AGREE TO GIVE UP ANY RIGHTS TO LITIGATE CLAIMS IN A COURT OR BEFORE A JURY, OR TO PARTICIPATE IN A CLASS ACTION OR REPRESENTATIVE ACTION WITH RESPECT TO A CLAIM. OTHER RIGHTS THAT YOU WOULD HAVE IF YOU WENT TO COURT MAY ALSO BE UNAVAILABLE OR MAY BE LIMITED IN ARBITRATION.
>
-> ANY CLAIM, DISPUTE OR CONTROVERSY (WHETHER IN CONTRACT, TORT OR OTHERWISE, WHETHER PRE-EXISTING, PRESENT OR FUTURE, AND INCLUDING STATUTORY, CONSUMER PROTECTION, COMMON LAW, INTENTIONAL TORT, INJUNCTIVE AND EQUITABLE CLAIMS) BETWEEN YOU AND US ARISING FROM OR RELATING IN ANY WAY TO YOUR PURCHASE OF PRODUCTS OR SERVICES VIA THE SITE WILL BE RESOLVED EXCLUSIVELY AND CONCLUSIVELY BY BINDING ARBITRATION.
+> ANY CLAIM, DISPUTE OR CONTROVERSY (WHETHER IN CONTRACT, TORT OR OTHERWISE, WHETHER PRE-EXISTING, PRESENT OR FUTURE, AND INCLUDING STATUTORY, CONSUMER PROTECTION, COMMON LAW, INTENTIONAL TORT, INJUNCTIVE AND EQUITABLE CLAIMS) BETWEEN YOU AND US ARISING FROM OR RELATING IN ANY WAY TO YOUR PURCHASE OF PRODUCTS OR SERVICES VIA THE SITE WILL BE RESOLVED EXCLUSIVELY AND CONCLUSIVELY BY BINDING ARBITRATION.
>
-> (c) The arbitration will be administered by the American Arbitration Association ("AAA") in accordance with the Consumer Arbitration Rules (the "AAA Rules") then in effect, except as modified by this section of this Agreement. (The AAA Rules are available at adr.org or by calling the AAA at 1-800-778-7879.) The Federal Arbitration Act will govern the interpretation and enforcement of this section.
+> (c) The arbitration will be administered by the American Arbitration Association ("AAA") in accordance with the Consumer Arbitration Rules (the "AAA Rules") then in effect, except as modified by this section of this Agreement. (The AAA Rules are available at adr.org or by calling the AAA at 1-800-778-7879.) The Federal Arbitration Act will govern the interpretation and enforcement of this section.
>
-> The arbitrator will have exclusive authority to resolve any dispute relating to arbitrability and/or enforceability of this arbitration provision, including any unconscionability challenge or any other challenge that the arbitration provision or the Agreement is void, voidable or otherwise invalid. The arbitrator will be empowered to grant whatever relief would be available in court under law or in equity. Any award of the arbitrator(s) will be final and binding on each of the parties and may be entered as a judgment in any court of competent jurisdiction.
+> The arbitrator will have exclusive authority to resolve any dispute relating to arbitrability and/or enforceability of this arbitration provision, including any unconscionability challenge or any other challenge that the arbitration provision or the Agreement is void, voidable or otherwise invalid. The arbitrator will be empowered to grant whatever relief would be available in court under law or in equity. Any award of the arbitrator(s) will be final and binding on each of the parties and may be entered as a judgment in any court of competent jurisdiction.
>
-> (d) You agree to an arbitration on an individual basis. In any dispute, NEITHER YOU NOR WE WILL BE ENTITLED TO JOIN OR CONSOLIDATE CLAIMS BY OR AGAINST OTHER CUSTOMERS IN COURT OR IN ARBITRATION OR OTHERWISE PARTICIPATE IN ANY CLAIM AS A CLASS REPRESENTATIVE, CLASS MEMBER OR IN A PRIVATE ATTORNEY GENERAL CAPACITY.
+> (d) You agree to an arbitration on an individual basis. In any dispute, NEITHER YOU NOR WE WILL BE ENTITLED TO JOIN OR CONSOLIDATE CLAIMS BY OR AGAINST OTHER CUSTOMERS IN COURT OR IN ARBITRATION OR OTHERWISE PARTICIPATE IN ANY CLAIM AS A CLASS REPRESENTATIVE, CLASS MEMBER OR IN A PRIVATE ATTORNEY GENERAL CAPACITY.
>
-> The arbitral tribunal may not consolidate more than one person's claims and may not otherwise preside over any form of a representative or class proceeding. The arbitral tribunal has no power to consider the enforceability of this class arbitration waiver, and any challenge to the class arbitration waiver may only be raised in a court of competent jurisdiction.
+> The arbitral tribunal may not consolidate more than one person's claims and may not otherwise preside over any form of a representative or class proceeding. The arbitral tribunal has no power to consider the enforceability of this class arbitration waiver, and any challenge to the class arbitration waiver may only be raised in a court of competent jurisdiction.
>
-> If any provision of this arbitration agreement is found to be unenforceable, the unenforceable provision will be severed, and the remaining arbitration terms will be enforced.
+> If any provision of this arbitration agreement is found to be unenforceable, the unenforceable provision will be severed, and the remaining arbitration terms will be enforced.
>
-> (a) 如果法律规定第22条不适用,则适用以下规则。
+> (a) 如果法律规定第22条不适用,则适用以下规则。
>
-> (b) 您和我们同意放弃在法院或陪审团面前起诉索赔的任何权利,或就索赔参与集体诉讼或代表诉讼。您在去法院时可能拥有的其他权利在仲裁中也可能不可用或受到限制。
+> (b) 您和我们同意放弃在法院或陪审团面前起诉索赔的任何权利,或就索赔参与集体诉讼或代表诉讼。您在去法院时可能拥有的其他权利在仲裁中也可能不可用或受到限制。
>
-> 因您通过本网站购买产品或服务而产生或与之有关的任何索赔、争议或纠纷(无论是合同、侵权法或其他性质的,无论是在签订合同之前、现时或将来发生的,包括法定、消费者保护、普通法、故意侵权、禁令救济和衡平法索赔),将仅通过具有约束力的仲裁来解决,并且该解决将是终局的。
+> 因您通过本网站购买产品或服务而产生或与之有关的任何索赔、争议或纠纷(无论是合同、侵权法或其他性质的,无论是在签订合同之前、现时或将来发生的,包括法定、消费者保护、普通法、故意侵权、禁令救济和衡平法索赔),将仅通过具有约束力的仲裁来解决,并且该解决将是终局的。
>
-> (c) 仲裁将由美国仲裁协会(“AAA”)根据当时有效的《消费者仲裁规则》(“AAA规则”)进行管理,但本协议本节对其进行的修改除外。(AAA规则可在adr.org查阅,或致电AAA 1-800-778-7879索取。)《联邦仲裁法》将管辖本节的解释和执行。
+> (c) 仲裁将由美国仲裁协会(“AAA”)根据当时有效的《消费者仲裁规则》(“AAA规则”)进行管理,但本协议本节对其进行的修改除外。(AAA规则可在adr.org查阅,或致电AAA 1-800-778-7879索取。)《联邦仲裁法》将管辖本节的解释和执行。
>
-> 仲裁员将拥有处理任何与本仲裁条款的可仲裁性和/或可执行性有关的争议的专属权力,包括任何不公平性挑战或对仲裁条款或本协议无效、可撤销或以其他方式无效的任何其他挑战。仲裁员将被授权授予法庭依法或衡平法可提供的任何救济。仲裁员的任何裁决将对各方具有最终约束力,并可在任何有管辖权的法院作为判决执行。
+> 仲裁员将拥有处理任何与本仲裁条款的可仲裁性和/或可执行性有关的争议的专属权力,包括任何不公平性挑战或对仲裁条款或本协议无效、可撤销或以其他方式无效的任何其他挑战。仲裁员将被授权授予法庭依法或衡平法可提供的任何救济。仲裁员的任何裁决将对各方具有最终约束力,并可在任何有管辖权的法院作为判决执行。
>
-> (d) 您同意以个人身份进行仲裁。在任何争议中,您和我方均无权在法庭或仲裁中加入或合并其他客户的索赔,或以其他方式作为集体代表、集体成员或以私人公益律师身份参与任何索赔。
+> (d) 您同意以个人身份进行仲裁。在任何争议中,您和我方均无权在法庭或仲裁中加入或合并其他客户的索赔,或以其他方式作为集体代表、集体成员或以私人公益律师身份参与任何索赔。
>
-> 仲裁庭不得合并一人以上的索赔,也不得以任何形式主持代表性或集体诉讼。仲裁庭无权考虑此集体仲裁弃权条款的可执行性,并且对集体仲裁弃权条款的任何质疑只能在有管辖权的法院提出。
+> 仲裁庭不得合并一人以上的索赔,也不得以任何形式主持代表性或集体诉讼。仲裁庭无权考虑此集体仲裁弃权条款的可执行性,并且对集体仲裁弃权条款的任何质疑只能在有管辖权的法院提出。
>
-> 如果本仲裁协议的任何条款被认定为不可执行,则不可执行的条款将被分割,其余的仲裁条款将得到执行。
+> 如果本仲裁协议的任何条款被认定为不可执行,则不可执行的条款将被分割,其余的仲裁条款将得到执行。
-强行在美国执行德国法律是行不通的,他们的 Plan B 是 _美国仲裁协会_ (AAA) 的强制仲裁。强制仲裁意味着用户放弃在法院起诉的权利,也放弃了陪审团审判。这是典型的美国式法律压迫工具,旨在降低大公司的诉讼成本。
+强行在美国执行德国法律是行不通的,他们的 Plan B 是 美国仲裁协会 (AAA) 的强制仲裁。强制仲裁意味着用户放弃在法院起诉的权利,也放弃了陪审团审判。这是典型的美国式法律压迫工具,旨在降低大公司的诉讼成本。
-Sec 19 还提到了 OFAC(Office of Foreign Assets Control,外国资产控制办公室),也是美国政治部的制裁者:如果美国决定制裁某个实体,Hetzner 为了保住其美国业务,必须切断该实体的服务。这证明了其管辖权不再是独立的,而是附庸于美国外交政策的。
+Sec 19 还提到了 OFAC(Office of Foreign Assets Control,外国资产控制办公室),也是美国政治部的制裁者:如果美国决定制裁某个实体,Hetzner 为了保住其美国业务,必须切断该实体的服务。这证明了其管辖权不再是独立的,而是附庸于美国外交政策的。
-> You are not allowed to publish content that may violate the rights of individuals or groups of people, or that insults or denigrates these people.
+> You are not allowed to publish content that may violate the rights of individuals or groups of people, or that insults or denigrates these people.
>
-> 您不得发布可能侵犯个人或群体权利、或侮辱或贬低这些人的内容。
+> 您不得发布可能侵犯个人或群体权利、或侮辱或贬低这些人的内容。
-和其他提供商一样,Hetzner 也给自己预留了极大的主观裁量权:什么是侮辱?什么是贬低?难道任何引发争议的政治或社会内容的站点都要被关闭吗?
+和其他提供商一样,Hetzner 也给自己预留了极大的主观裁量权:什么是侮辱?什么是贬低?难道任何引发争议的政治或社会内容的站点都要被关闭吗?
-Hetzner 必须被拆分为两个完全不同的实体来评价。讲完了 Hetzner 在美国的分公司后,再来说说母公司的原罪。
+Hetzner 必须被拆分为两个完全不同的实体来评价。讲完了 Hetzner 在美国的分公司后,再来说说母公司的原罪。
-根据 Terms and Conditions 的 Section 8.3 和 8.4,只要 Hetzner 的自动化系统监测到用户的服务器有异常流量或者收到了第三方投诉,他们通常会先拔线,再发邮件通知用户。用户必须在断网状态下自证清白。对于追求高可用性的用户,这种官僚逻辑自然是致命的。
+根据 Terms and Conditions 的 Section 8.3 和 8.4,只要 Hetzner 的自动化系统监测到用户的服务器有异常流量或者收到了第三方投诉,他们通常会先拔线,再发邮件通知用户。用户必须在断网状态下自证清白。对于追求高可用性的用户,这种官僚逻辑自然是致命的。
-Hetzner 也明确指出他们在监视元数据,通常是分析连接频率、目标 IP 分布和端口扫描行为。用 Hetzner 的机器做任何会产生大量连接数的行为都会被系统自动判定为攻击行为,进而触发自动封锁。
+Hetzner 也明确指出他们在监视元数据,通常是分析连接频率、目标 IP 分布和端口扫描行为。用 Hetzner 的机器做任何会产生大量连接数的行为都会被系统自动判定为攻击行为,进而触发自动封锁。
-支付方面,Hetzner 不支持 Monero(XMR)或完全匿名的加密货币支付。他们只接受信用卡、PayPal 或银行转账。
+支付方面,Hetzner 不支持 Monero(XMR)或完全匿名的加密货币支付。他们只接受信用卡、PayPal 或银行转账。
-Hetzner 的合同需要提前 30 天通知并在月底终止。这种周期过于僵硬,对于需要灵活部署或者紧急撤离的用户来说是一个巨大的财务和安全负担。
+Hetzner 的合同需要提前 30 天通知并在月底终止。这种周期过于僵硬,对于需要灵活部署或者紧急撤离的用户来说是一个巨大的财务和安全负担。
-价格上,一个 2 VCPU、4 GB RAM、40 GB 硬盘空间、20 TB 流量的服务器最低可以达到每月 3.49 欧元,也就是 4 美元、29 人民币。
+价格上,一个 2 VCPU、4 GB RAM、40 GB 硬盘空间、20 TB 流量的服务器最低可以达到每月 3.49 欧元,也就是 4 美元、29 人民币。
+### Bahnhof
-=> https://www.hetzner.com/legal/privacy-policy/ 隐私条款
-=> https://www.hetzner.com/legal/terms-and-conditions/ Terms and Conditions
-
-
-#### Bahnhof
-
-我找不到 Bahnhof 的隐私条款……留给未来的自己吧。
-
+我找不到 Bahnhof 的隐私条款……留给未来的自己吧。
### 结论
-选择 VPS 的之前,一定要搞清楚自己买这个服务器做什么。如果是想要记录敏感内容(色情网站不算啊),就必须找到提供法律保护的服务商;如果是极客或者加密无政府主义者,你需要找到那些提供身份隔离的服务商;如果是开发者或者中小企业主,且业务完全合法,那选择稳定、便宜且合规的服务商会更好。不过无论选谁,只要看到美国节点,请直接 pass。
+选择 VPS 的之前,一定要搞清楚自己买这个服务器做什么。如果是想要记录敏感内容(色情网站不算啊),就必须找到提供法律保护的服务商;如果是极客或者加密无政府主义者,你需要找到那些提供身份隔离的服务商;如果是开发者或者中小企业主,且业务完全合法,那选择稳定、便宜且合规的服务商会更好。不过无论选谁,只要看到美国节点,请直接 pass。
+
+这篇文章也绝非真理 !我可能遗漏一些细节,有可能无视了服务商们实际的操作——毕竟完全不按照条款运作的公司貌似也不少见——甚至可能说错了内容。如果有任何需要修正的地方,还请务必联系我。
-*这篇文章也绝非真理* !我可能遗漏一些细节,有可能无视了服务商们实际的操作——毕竟完全不按照条款运作的公司貌似也不少见——甚至可能说错了内容。如果有任何需要修正的地方,还请务必联系我。
+细数了这些「面向隐私」的 VPS 服务商的罪恶后,或许有人会想要使用自己家中的物理服务器。但在我看来,它依然不是旅途的终点,因为家中的物理服务器会和互联网服务提供商有所牵连。具体是怎样我就不展开说了,很多民用互联网服务提供商也禁止搭建公开服务。
-细数了这些「面向隐私」的 VPS 服务商的罪恶后,或许有人会想要使用自己家中的物理服务器。但在我看来,它依然不是旅途的终点,因为家中的物理服务器会和互联网服务提供商有所牵连。具体是怎样我就不展开说了,很多民用互联网服务提供商也禁止搭建公开服务。
+## 链接
-:CAPTURED: [2026-01-27 Tue 11:58]
+=> https://pluralistic.net/2026/01/01/39c3/ 演讲
+=> https://en.wikipedia.org/wiki/Microsoft_Corp._v._United_States 拒绝向美国政府移交存储在爱尔兰的数据
+=> https://aws.amazon.com/privacy/ AWS 的隐私条款
+=> https://1984.hosting/tos/ Terms of Service
+=> https://orangewebsite.com/docs/privacy-policy.php 隐私条款
+=> https://orangewebsite.com/docs/tos.php Terms of Service
+=> https://flokinet.is/privacy-policy 隐私条款
+=> https://njal.la/tos/ 条款
+=> https://www.privex.io/privacy/ 隐私条款
+=> https://www.privex.io/faq/ FAQ
+=> https://www.hetzner.com/legal/privacy-policy/ 隐私条款
+=> https://www.hetzner.com/legal/terms-and-conditions/ Terms and Conditions
M posts/汇编语言学习·壹.gmi => posts/汇编语言学习·壹.gmi +449 -536
@@ 1,119 1,114 @@
# 汇编语言学习·壹
-[2026-01-11 Sun 20:03]
+学习汇编语言的笔记。
-学习汇编语言的笔记。
+使用的教学材料:
-#+MORE
-
-使用的教学材料:
-
-* Linux Foundation X [LFD117x] Foundations of RISC-V Assembly Programming
-
-汇编语言可以用于开发操作系统和编译器,不过我认为也可以用于「入门」计算机——学了总是好事。
+* Linux Foundation X [LFD117x] Foundations of RISC-V Assembly Programming
+汇编语言可以用于开发操作系统和编译器,不过我认为也可以用于「入门」计算机——学了总是好事。
### 基础知识
-#### RISC-V
-
-这是一种指令集架构规范,为处理器奠定了通用的机器代码语言基础。 RISC 指的是「精简指令集计算机」,而 V 代表的是罗马数字 5。 RISC-V 属于一种开放式指令集架构。
-
-
-#### Assembly
-
-Assembly 语言可以被直接翻译成机器码,是最低级的编程语言。需要记住的是,「低级」不代表是一件坏事。
+### RISC-V
-学习 Assembly 以及如何使用它可以帮助我们理解软件和硬件的内部。
+这是一种指令集架构规范,为处理器奠定了通用的机器代码语言基础。
+RISC 指的是「精简指令集计算机」,而 V 代表的是罗马数字 5。
+RISC-V 属于一种开放式指令集架构。
+### Assembly
-#### 微处理器
+Assembly 语言可以被直接翻译成机器码,是最低级的编程语言。需要记住的是,「低级」不代表是一件坏事。
-通常来说,处理器包含控制单元、算术逻辑单元、寄存器以及用于输入输出的信号与数据线路。
+学习 Assembly 以及如何使用它可以帮助我们理解软件和硬件的内部。
-* 处理器利用控制单元来执行指令
-* 算数逻辑单元负责对整数执行算术和逻辑运算
-* 寄存器是位于处理器内部的一种小型存储单元。处理器能够将数据从外部存储器或其他设备快速加载到寄存器中,在寄存器内对数据进行操作,随后将结果写入外部存储器或者其他设备
-* 程序计数器是一种特殊的寄存器,用于保存当前待执行指令的位置信息。控制单元可以通过程序计数器来确定程序的执行进度
+### 微处理器
-微处理器可以被分为 RISC 和 CISC,后者是复杂指令集计算机。两者的区别在于,RISC 架构拥有的指令数量较少。特定情况下,CISC 架构可能只需要一条指令就能做到一件事情,而 RISC 架构下需要执行更多的指令。
+通常来说,处理器包含控制单元、算术逻辑单元、寄存器以及用于输入输出的信号与数据线路。
-继续说 RISC。典型的 RISC 处理器会执行典型的五级流水线工作:
+* 处理器利用控制单元来执行指令
+* 算数逻辑单元负责对整数执行算术和逻辑运算
+* 寄存器是位于处理器内部的一种小型存储单元。处理器能够将数据从外部存储器或其他设备快速加载到寄存器中,在寄存器内对数据进行操作,随后将结果写入外部存储器或者其他设备
+* 程序计数器是一种特殊的寄存器,用于保存当前待执行指令的位置信息。控制单元可以通过程序计数器来确定程序的执行进度
-* 指令获取(IF)
-* 指令译码(ID)
-* 指令执行(EX)
-* 存储器访问(MEM)
-* 写回(WB)
+微处理器可以被分为 RISC 和 CISC,后者是复杂指令集计算机。两者的区别在于,RISC 架构拥有的指令数量较少。特定情况下,CISC 架构可能只需要一条指令就能做到一件事情,而 RISC 架构下需要执行更多的指令。
-具体流程是这样的:
+继续说 RISC。典型的 RISC 处理器会执行典型的五级流水线工作:
-* 处理器从程序计数器所指向的内存地址获取指令
-* 指令是以二进制代码形式编码的,所以系统随后会对其进行译码、确定并获取执行所需的其他信息
-* 进入执行阶段,利用算术逻辑单元进行计算
-* 如果指令涉及内存访问,则会在接下来的存储器访问阶段进行处理
-* 如果运算产生了结果,该结果将在最后一个阶段被写回寄存器
+1. 指令获取(IF)
+2. 指令译码(ID)
+3. 指令执行(EX)
+4. 存储器访问(MEM)
+5. 写回(WB)
-该流程可以按照单周期方式执行,也可以采用流水线技术执行。后者可以实现各阶段的并行处理,从而提升效率。
+具体流程是这样的:
+1. 处理器从程序计数器所指向的内存地址获取指令
+2. 指令是以二进制代码形式编码的,所以系统随后会对其进行译码、确定并获取执行所需的其他信息
+3. 进入执行阶段,利用算术逻辑单元进行计算
+4. 如果指令涉及内存访问,则会在接下来的存储器访问阶段进行处理
+5. 如果运算产生了结果,该结果将在最后一个阶段被写回寄存器
-#### Ripes
+该流程可以按照单周期方式执行,也可以采用流水线技术执行。后者可以实现各阶段的并行处理,从而提升效率。
-Ripes 是一款专为演示 RV32IMC 和 RV64IMC 架构上机器代码执行过程而设计的模拟器。 总体而言,Ripes 是快速入门并实践学习汇编语言的极佳工具。
+### Ripes
+Ripes 是一款专为演示 RV32IMC 和 RV64IMC 架构上机器代码执行过程而设计的模拟器。
+总体而言,Ripes 是快速入门并实践学习汇编语言的极佳工具。
### 安装
-课程使用的系统是 Debian/Ubuntu 系,我用的是 Arch Linux 系,部分包会对不上。这里只写我安装了什么:
+课程使用的系统是 Debian/Ubuntu 系,我用的是 Arch Linux 系,部分包会对不上。这里只写我安装了什么:
-```
+```zsh
sudo pacman -S qemu-system-riscv qemu-user
```
-可以使用 `qemu-riscv-64-static -help' 命令就可以。
+可以使用 qemu-riscv-64-static -help 命令就可以。
-这是用于在我们的计算机上安装专门针对 RISC-V 架构的系统仿真器。 接着我们需要安装交叉编译器,用来让我们的 C 语言源代码编译成 RISC-V 指令集。
+这是用于在我们的计算机上安装专门针对 RISC-V 架构的系统仿真器。
+接着我们需要安装交叉编译器,用来让我们的 C 语言源代码编译成 RISC-V 指令集。
-```
+```zsh
sudo pacman -S riscv64-linux-gnu-gcc
```
-当编译一个动态链接的 RISC-V 程序时,编译器会在生成的二进制文件里写入一个解释器的绝对路径。对于 64 位的 RISC-V Linux 程序,这个解释器通常是 `ld-linux-riscv64-lp64d.so.1' 默认预期位置在 `/lib/' 目录下。然而在我们的宿主机上,这个文件实际上位于交叉编译器的安装目录中,而不是系统的根目录 `/lib/' 下。
+当编译一个动态链接的 RISC-V 程序时,编译器会在生成的二进制文件里写入一个解释器的绝对路径。对于 64 位的 RISC-V Linux 程序,这个解释器通常是 ld-linux-riscv64-lp64d.so.1 默认预期位置在 lib 目录下。然而在我们的宿主机上,这个文件实际上位于交叉编译器的安装目录中,而不是系统的根目录 lib 下。
-当使用 `qemu-riscv64' 运行程序时,QEMU 会尝试加载程序,但程序本身会告诉系统去 `/lib/' 找解释器。如果找不到就会报错。
+当使用 qemu-riscv64 运行程序时,QEMU 会尝试加载程序,但程序本身会告诉系统去 lib 找解释器。如果找不到就会报错。
-因此我们需要建立一个软链接,将位于深层目录的解释器映射到程序预期的 `/lib/' 位置,从而欺骗程序使其能够找到加载器。
+因此我们需要建立一个软链接,将位于深层目录的解释器映射到程序预期的 lib 位置,从而欺骗程序使其能够找到加载器。
-这里有两个选择:
+这里有两个选择:
-* 链接到 `/lib/'
-* 链接到 `/usr/lib/'
+1. 链接到 lib
+2. 链接到 usrlib/
-两者其实差不多,都可以。我就用后者来示范了。
+两者其实差不多,都可以。我就用后者来示范了。
-```
+```zsh
sudo ln -s /usr/riscv64-linux-gnu/lib/ld-linux-riscv64-lp64d.so.1 /usr/lib/ld-linux-riscv64-lp64d.so.1
```
-但其实还有一种方法,更适合「洁癖党」,那就是指定 Sysroot 路径。这样 QEMU 就会在那个目录下查找 `/lib/' 和 `/usr/lib' 了,我们也不需要弄乱系统的目录。我的建议是设置一个环境变量:
+但其实还有一种方法,更适合「洁癖党」,那就是指定 Sysroot 路径。这样 QEMU 就会在那个目录下查找 lib 和 usrlib 了,我们也不需要弄乱系统的目录。我的建议是设置一个环境变量:
-```
+```zsh ~/.zshrc
export QEMU_LD_PREFIX=/usr/riscv64-linux-gnu
```
-无论如何,都可以使用 `riscv64-linux-gnu-as --version' 来进行检查。
+无论如何,都可以使用 riscv64-linux-gnu-as --version 来进行检查。
-然后我们需要安装一个调试器:
+然后我们需要安装一个调试器:
-```
+```zsh
sudo pacman -S gdb
```
-运行 `gdb -h' 来检查。
+运行 gdb -h 来检查。
-让我们创建一个测试文件 `example.s' :
+让我们创建一个测试文件 example.s :
-```
+```asm :tangle example.s
.globl _start
_start:
addi x10, x0, 7
@@ 121,758 116,676 @@ _start:
ecall
```
-先使用 `as' 将源码转换为目标文件:
+先使用 as 将源码转换为目标文件:
-```
+```shell :results output
riscv64-linux-gnu-as -o example.o example.s
```
-再将 `example.o' 链接为可执行文件 `example' :
+再将 example.o 链接为可执行文件 example :
-```
+```shell :results output
riscv64-linux-gnu-ld -o example example.o
```
-最后在 QEMU 中执行:
+最后在 QEMU 中执行:
-```
+```shell :results output
qemu-riscv64 example
```
-最终的结果是返回了个 `7' 。
+最终的结果是返回了个 7 。
-我们也可以使用 `riscv64-linux-gnu-objdump' 来审视我们的二进制文件:
+我们也可以使用 riscv64-linux-gnu-objdump 来审视我们的二进制文件:
-```
+```shell :results output
riscv64-linux-gnu-objdump -sd example
```
-这可以将机器码逆向翻译回人类可读的汇编指令,帮我们验证编译器是否真的生成了预期中的代码。
+```
-/Contents of section .text/ 处展示了内存中的原始字节数据。
+example: file format elf64-littleriscv
-```
-100b0 13057000 9308d005 73000000
+Contents of section .text:
+ 100b0 13057000 9308d005 73000000 ..p.....s...
+Contents of section .riscv.attributes:
+ 0000 415e0000 00726973 63760001 54000000 A^...riscv..T...
+ 0010 05727636 34693270 315f6d32 70305f61 .rv64i2p1m2p0a
+ 0020 3270315f 66327032 5f643270 325f7a69 2p1f2p2d2p2_zi
+ 0030 63737232 70305f7a 6966656e 63656932 csr2p0_zifencei2
+ 0040 70305f7a 6d6d756c 3170305f 7a61616d p0zmmul1p0zaam
+ 0050 6f317030 5f7a616c 72736331 703000 o1p0_zalrsc1p0.
+
+Disassembly of section .text:
+
+00000000000100b0 <_start>:
+ 100b0: 00700513 li a0,7
+ 100b4: 05d00893 li a7,93
+ 100b8: 00000073 ecall
```
-其中地址 `100b0' 是这段代码在内存中存放的起始地址,数据 `13057000' 是第一个 4 字节(32 位)的内容。
+这可以将机器码逆向翻译回人类可读的汇编指令,帮我们验证编译器是否真的生成了预期中的代码。
-在计算机科学中,位(bit,有时也可以叫比特位)是信息的最小单位,只能显示 0 或者 1 两种状态,也就是「假」与「真」。而字节(byte)是计算机存储和处理数据的基本单位,通常规定 1 个字节由 8 个位组成。
+Contents of section .text 处展示了内存中的原始字节数据。
-`13057000' 这串数据实际上是十六进制表示法。
+```plaintext
+100b0 13057000 9308d005 73000000
+```
-这个「十六」并非物理上的容量单位,而是「进制」这个数字概念,具体代表的是在一个单独的数位上,到底拥有多少种不同的独立状态或者符号。例如人类最熟悉的十进制,每一个数位拥有从 0 到 9 这十个独立符号,当状态数值超过 9 时,就必须向前进位(1 + 9 = 10,个位超过了 9,就会向前面的十位进位)。
+其中地址 100b0 是这段代码在内存中存放的起始地址,数据 13057000 是第一个 4 字节(32 位)的内容。
-同理,十六进制意味着每一个单独的数位拥有 16 种独立的状态,为了填补数字 9 之后的符号空缺,系统引入了 a 到 f,对应十进制的 10 到 15。
+在计算机科学中,位(bit,有时也可以叫比特位)是信息的最小单位,只能显示 0 或者 1 两种状态,也就是「假」与「真」。而字节(byte)是计算机存储和处理数据的基本单位,通常规定 1 个字节由 8 个位组成。
-理解了进制代表着「状态的数量」后,就可以将其与底层的「位」建立起直接的数学映射。先前说过,位只有 `0' 和 `1' 这两个状态。如果想要使用纯续的二进制来表示更多的状态,就必须将多个位组合在一起来观察:1 个位是 2 种状态;2 个位组合在一起(=00=、=01=、=10=、=11=)是 4 种状态;3 个位是 8 种状态。
+13057000 这串数据实际上是十六进制表示法。
-十六进制中每一个字符(=0-9= 和 =a-f=)就代表 4 个位,总计 16 种状态。
+这个「十六」并非物理上的容量单位,而是「进制」这个数字概念,具体代表的是在一个单独的数位上,到底拥有多少种不同的独立状态或者符号。例如人类最熟悉的十进制,每一个数位拥有从 0 到 9 这十个独立符号,当状态数值超过 9 时,就必须向前进位(1 + 9 = 10,个位超过了 9,就会向前面的十位进位)。
-计算机科学选择大量采用十六进制,其根本原因是为了在机器的物理状态和人类的阅读习惯之间寻找妥协:人类无法快速阅读和心算二进制流,而如果将其转换为人类最熟悉的十进制,二进制与十进制之间的互相转换又必须经过整体的乘除法运算。由于 10 不是 2 的整数次幂,这种转换无法在底层的比特位上做到规整的一一对应。
+同理,十六进制意味着每一个单独的数位拥有 16 种独立的状态,为了填补数字 9 之后的符号空缺,系统引入了 a 到 f,对应十进制的 10 到 15。
-既然 1 个十六进制字符代表 4 个位,那么需要 2 个连续的十六进制字符并排,来转录 1 个字节的完整物理状态——因为 1 个物理字节由 4 个比特位组成。
+理解了进制代表着「状态的数量」后,就可以将其与底层的「位」建立起直接的数学映射。先前说过,位只有 0 和 1 这两个状态。如果想要使用纯续的二进制来表示更多的状态,就必须将多个位组合在一起来观察:1 个位是 2 种状态;2 个位组合在一起(00、01、10、11)是 4 种状态;3 个位是 8 种状态。
-在 `13057000' 里共有 8 个字符(=13=、=05=、=70= 和 =00=),意味着总共有 32 个位,或者说 4 个字节。对于 RISC-V 架构而言,其标准的指令长度固定为 32 位,也正好对应了内存中这 4 个连续字节所占据的空间。
+十六进制中每一个字符(0-9 和 a-f)就代表 4 个位,总计 16 种状态。
-`littleriscv' 指明了小端序,低字节需要存放在低地址。
+计算机科学选择大量采用十六进制,其根本原因是为了在机器的物理状态和人类的阅读习惯之间寻找妥协:人类无法快速阅读和心算二进制流,而如果将其转换为人类最熟悉的十进制,二进制与十进制之间的互相转换又必须经过整体的乘除法运算。由于 10 不是 2 的整数次幂,这种转换无法在底层的比特位上做到规整的一一对应。
-小端序又是什么呢?它描述的是多字节数据在计算机内存中的排列顺序。由于内存是被组织成一个线性的字节序列,即每个地址对应一个字节,当我们要在内存中存放一个跨越多个字节的数值,比如一个 32 位的整数时,就面临着把哪一端放在低地址的选择。
+既然 1 个十六进制字符代表 4 个位,那么需要 2 个连续的十六进制字符并排,来转录 1 个字节的完整物理状态——因为 1 个物理字节由 4 个比特位组成。
-小端序指的是将数据的最低有效字节存放在内存的最低地址处,而最高有效字节则存放在最高地址处。这种存储方式的优势在于从低地址读取数据时,不需要进行地址计算即可直接获得数值的低位部分。
+在 13057000 里共有 8 个字符(13、05、70 和 00),意味着总共有 32 个位,或者说 4 个字节。对于 RISC-V 架构而言,其标准的指令长度固定为 32 位,也正好对应了内存中这 4 个连续字节所占据的空间。
-要想更加理解这一部分,就必须深入理解计算机是如何「看待」数据的物理本质。计算机的内存可以类比于一排无限长的储物柜,每个储物柜上都有编号,叫作「地址」,从 0 开始,依次递增。低地址是编号较小的位置,高地址自然就是编号较大的位置。
+littleriscv 指明了小端序,低字节需要存放在低地址。
-问题在于,一个储物柜只能存放 1 个字节。我们想要存储的数据往往是多个字节,要想存进内存就必须占用连续的储物柜。用 `13057000' 举例:你有着身为最高位的 `00' 以及身为最低位的 `13' ,面前是低地址 0 和高地址 3,你应该把数据的头放在低地址还是把尾放在低地址?
+小端序又是什么呢?它描述的是多字节数据在计算机内存中的排列顺序。由于内存是被组织成一个线性的字节序列,即每个地址对应一个字节,当我们要在内存中存放一个跨越多个字节的数值,比如一个 32 位的整数时,就面临着把哪一端放在低地址的选择。
-更直观一些,假设我们要存储十六进制数 `0x12345678' ,其中 `12' 是最高有效字节,相当于「千位」, `78' 是最低有效字节,相当于「个位」。而我们会占用从 `0x100' 到 `0x103' 这四个地址。
+小端序指的是将数据的最低有效字节存放在内存的最低地址处,而最高有效字节则存放在最高地址处。这种存储方式的优势在于从低地址读取数据时,不需要进行地址计算即可直接获得数值的低位部分。
-人类的阅读习惯是从左到右,从大到小(例如数字),所以先把最大的头 `12' 放在最开始的低地址 `0x100' 。
+要想更加理解这一部分,就必须深入理解计算机是如何「看待」数据的物理本质。计算机的内存可以类比于一排无限长的储物柜,每个储物柜上都有编号,叫作「地址」,从 0 开始,依次递增。低地址是编号较小的位置,高地址自然就是编号较大的位置。
-```
- 内存地址 `0x100' `0x101' `0x102' `0x103'
- 存放内容 `12' `34' `56' `78'
+问题在于,一个储物柜只能存放 1 个字节。我们想要存储的数据往往是多个字节,要想存进内存就必须占用连续的储物柜。用 13057000 举例:你有着身为最高位的 00 以及身为最低位的 13 ,面前是低地址 0 和高地址 3,你应该把数据的头放在低地址还是把尾放在低地址?
-```
+更直观一些,假设我们要存储十六进制数 0x12345678 ,其中 12 是最高有效字节,相当于「千位」, 78 是最低有效字节,相当于「个位」。而我们会占用从 0x100 到 0x103 这四个地址。
-而小端序更符合计算逻辑。计算机在做加法时,是先算个位,再算十位。把最低位放在低地址(数据的起始地址),CPU 读取数据时,直接从起始地址就能拿到最低位开始运算。因此就会变成:
+人类的阅读习惯是从左到右,从大到小(例如数字),所以先把最大的头 12 放在最开始的低地址 0x100 。
-```
- 内存地址 `0x100' `0x101' `0x102' `0x103'
- 存放内容 `78' `56' `34' `12'
+| 内存地址 | 0x100 | 0x101 | 0x102 | 0x103 |
+| 存放内容 | 12 | 34 | 56 | 78 |
-```
+而小端序更符合计算逻辑。计算机在做加法时,是先算个位,再算十位。把最低位放在低地址(数据的起始地址),CPU 读取数据时,直接从起始地址就能拿到最低位开始运算。因此就会变成:
-理解了小端序,就能解释为什么会出现 `00700513' 这样的内容。在 `objdump' 输出中,左侧的 `13057000' 是按照内存地址从低到高显示的: `13' (地址 N), `05' (N+1), `70' (N+2), `00' (N+3)。正因为是小端序,放在低地址(最左边)的 `0x13' 实际上是数值的最低位,而放在高地址(最右边)的 `0x00' 是最高位。
+| 内存地址 | 0x100 | 0x101 | 0x102 | 0x103 |
+| 存放内容 | 78 | 56 | 34 | 12 |
-当 CPU 读取这 4 个字节组成一个 32 位整数(指令)时,它会按照权重将这些字节重新组装,最终形成符合人类书写习惯的大端数值 `0x00700513' (高位在左)。
+理解了小端序,就能解释为什么会出现 00700513 这样的内容。在 objdump 输出中,左侧的 13057000 是按照内存地址从低到高显示的: 13 (地址 N), 05 (N+1), 70 (N+2), 00 (N+3)。正因为是小端序,放在低地址(最左边)的 0x13 实际上是数值的最低位,而放在高地址(最右边)的 0x00 是最高位。
-/Disassembly of section .text/ 处是 `objdump' 将机器码翻译回汇编指令的结果,也是我们验证代码逻辑的核心区域。
+当 CPU 读取这 4 个字节组成一个 32 位整数(指令)时,它会按照权重将这些字节重新组装,最终形成符合人类书写习惯的大端数值 0x00700513 (高位在左)。
-```
+Disassembly of section .text 处是 objdump 将机器码翻译回汇编指令的结果,也是我们验证代码逻辑的核心区域。
+
+```plaintext
100b0: 00700513 li a0,7
```
-第一行指令中显示, `100b0' 是指令的内存地址; `00700513' 是 CPU 实际执行的 32 位机器码,也是上面提到的「被倒过来」的指令; `li a0,7' 是反汇编后的汇编代码。
+第一行指令中显示, 100b0 是指令的内存地址; 00700513 是 CPU 实际执行的 32 位机器码,也是上面提到的「被倒过来」的指令; li a0,7 是反汇编后的汇编代码。
-我们源码写的是 `addi x10, x0, 7' ,寄存器中 `objdump' 默认使用 ABI 名称, `x10' 寄存器在函数调用规范中用于传递参数或者返回值,因此被称为 `a0' 即 /Argument/Return 0/ 的意思。
+我们源码写的是 addi x10, x0, 7 ,寄存器中 objdump 默认使用 ABI 名称, x10 寄存器在函数调用规范中用于传递参数或者返回值,因此被称为 a0 即 Argument\slash{}Return 0 的意思。
-ABI 全称为 Application Binary Interface(应用程序二进制接口),是一套规范,定义了软件组件之间如何在机器码层面进行交互。它规定了每个寄存器的专用功能,其名称也可以让汇编代码更具可读性。
+ABI 全称为 Application Binary Interface(应用程序二进制接口),是一套规范,定义了软件组件之间如何在机器码层面进行交互。它规定了每个寄存器的专用功能,其名称也可以让汇编代码更具可读性。
-`objdump' 识别出 `addi x10, x0, 7' 的语义实际上就是「将立即数 7 加载到 a0 中」,因此它显示了更易读的伪指令 =li=(Load Immediate,加载立即数)。这两者在机器码层面是完全一样的。
+objdump 识别出 addi x10, x0, 7 的语义实际上就是「将立即数 7 加载到 a0 中」,因此它显示了更易读的伪指令 li(Load Immediate,加载立即数)。这两者在机器码层面是完全一样的。
-```
+```plaintext
100b4: 05d00893 li a7,93
```
-第二行指令中显示, `05d00893' 是机器码; `li a7,93' 对应的是源码中的 `addi x17, x0, 93' 。
+第二行指令中显示, 05d00893 是机器码; li a7,93 对应的是源码中的 addi x17, x0, 93 。
-`x17' 的 ABI 别名是 `a7' 。在 Linux RISC-V 系统调用规矩中, `a7' 寄存器用来存放系统调用号。 `93' 代表的是 `exit' 的系统调用。
+x17 的 ABI 别名是 a7 。在 Linux RISC-V 系统调用规矩中, a7 寄存器用来存放系统调用号。 93 代表的是 exit 的系统调用。
-```
+```plaintext
100b8: 00000073 ecall
```
-第三行指令中显示, `00000073' 是 `ecall' 指令的固定机器码。
+第三行指令中显示, 00000073 是 ecall 指令的固定机器码。
-`ecall' 即 Environment Call,它会触发中断,将控制权交给操作系统内核。内核检查 `a7' 中的值(93),知道你要退出,然后检查 `a0' 中的值(7),将其作为退出状态码返回。
+ecall 即 Environment Call,它会触发中断,将控制权交给操作系统内核。内核检查 a7 中的值(93),知道你要退出,然后检查 a0 中的值(7),将其作为退出状态码返回。
-至于中间的 `.riscv.attributes' 部分,它是编译器留下的指纹。右侧的 ASCII 码显示了该程序编译时所使用的架构扩展列表。
+至于中间的 .riscv.attributes 部分,它是编译器留下的指纹。右侧的 ASCII 码显示了该程序编译时所使用的架构扩展列表。
-```
+```zsh
qemu-riscv64 -g 1234 example
```
-启动另一个终端来连接 GDB(目录需要是同一个):
+启动另一个终端来连接 GDB(目录需要是同一个):
-```
+```zsh
gdb -q example
```
-当显示 `(gdb)' 时输入:
+当显示 (gdb) 时输入:
-```
+```zsh
target remote :1234
```
-我们可以使用命令 `display /3i $pc' 来打印内存信息。其中 `3' 代表着数量, `i' 代表着指令, `$pc' 则代表程序计数器寄存器,这个寄存器始终存储着 CPU 即将执行的下一条指令的内存地址。
+我们可以使用命令 display /3i $pc 来打印内存信息。其中 3 代表着数量, i 代表着指令, $pc 则代表程序计数器寄存器,这个寄存器始终存储着 CPU 即将执行的下一条指令的内存地址。
-```
+```plaintext output
1: x/3i $pc
=> 0x100b0 <_start>: li a0,7
0x100b4 <_start+4>: li a7,93
0x100b8 <_start+8>: ecall
```
-得出的结果中,带有箭头标记的一行就是当前 CPU 暂停的位置,也就是下一刻将被执行的指令。随后的两行则展示了未来的执行路径。
-
-接下来可以使用 `si' 来命令 CPU 向前走一步,返回的结果中可以看到箭头出现在了下一行指令。
+得出的结果中,带有箭头标记的一行就是当前 CPU 暂停的位置,也就是下一刻将被执行的指令。随后的两行则展示了未来的执行路径。
-使用 `c' 来解除暂停,让 CPU 全速运行直到遇到下一个断点或者程序结束,我们就能看到返回码 `7' 。
+接下来可以使用 si 来命令 CPU 向前走一步,返回的结果中可以看到箭头出现在了下一行指令。
-最后 `q' 来结束当前的 GDB 调试会话。
+使用 c 来解除暂停,让 CPU 全速运行直到遇到下一个断点或者程序结束,我们就能看到返回码 7 。
-上述的所有没有解释明白的术语,在后续都有讲解。
+最后 q 来结束当前的 GDB 调试会话。
-教程中还提到了可以在 Visual Studio Code 中使用 PlatformIO 插件,不过我不用 Visual Studio Code,就不说了。
+上述的所有没有解释明白的术语,在后续都有讲解。
+教程中还提到了可以在 Visual Studio Code 中使用 PlatformIO 插件,不过我不用 Visual Studio Code,就不说了。
### 星光板
-StarFive VisionFive(以下简称星光板)是一款基于 RISC-V 架构的单板计算机,相当于 RISC-V 版本的树莓派。
+StarFive VisionFive(以下简称星光板)是一款基于 RISC-V 架构的单板计算机,相当于 RISC-V 版本的树莓派。
-介于我手上没有这个物理开发板,和物理外设相关的代码我都无法运行,只当学习运算逻辑了。
+介于我手上没有这个物理开发板,和物理外设相关的代码我都无法运行,只当学习运算逻辑了。
-教程中展示了如何在板子内调用生成 RISC-V 代码的工具,例如 `as' 和 `gcc' ;在我这个 x86 电脑上,就只能使用 `riscv64-linux-gnu-as' 了。同理, `./example' 这样的命令在 x86 电脑上要改用 `qemu-riscv64 example' 。
+教程中展示了如何在板子内调用生成 RISC-V 代码的工具,例如 as 和 gcc ;在我这个 x86 电脑上,就只能使用 riscv64-linux-gnu-as 了。同理, ./example 这样的命令在 x86 电脑上要改用 qemu-riscv64 example 。
-在之前的步骤,我们的 GDB 会提示 `(No debugging symbols found)' ,这是因为我们生成的只是纯粹的机器码。需要添加 `-g' 参数,汇编器才会将源代码的调试信息嵌入到生成的目标文件中。
+在之前的步骤,我们的 GDB 会提示 (No debugging symbols found) ,这是因为我们生成的只是纯粹的机器码。需要添加 -g 参数,汇编器才会将源代码的调试信息嵌入到生成的目标文件中。
-```
+```shell :results output
riscv64-linux-gnu-as -g -o example.o example.s
riscv64-linux-gnu-ld -o example example.o
```
-接下来是关键的调试步骤。
+接下来是关键的调试步骤。
-打开终端 A,充当服务端:
+打开终端 A,充当服务端:
-```
+```zsh
qemu-riscv64 -g 1234 example
```
-打开另一个终端 B,充当客户端。
+打开另一个终端 B,充当客户端。
-客户端连接成功后,输入:
+客户端连接成功后,输入:
-```
+```zsh
layout src
```
-因为这次添加了 `-g' ,我们会看到熟悉的源代码窗口,而不是汇编代码。
+因为这次添加了 -g ,我们会看到熟悉的源代码窗口,而不是汇编代码。
-接着输入:
+接着输入:
-```
+```zsh
b 5
```
-意思是在第 5 行打断点。
+意思是在第 5 行打断点。
-最后使用 `c' 命令,让程序全速运行,直到撞上第 5 行的断点并自动停下。此时输入:
+最后使用 c 命令,让程序全速运行,直到撞上第 5 行的断点并自动停下。此时输入:
-```
+```zsh
info reg x10
```
-会看到寄存器 `x10' 的值确实是 7。
-
+会看到寄存器 x10 的值确实是 7。
### 指令集架构
-ISA(Instruction Set Architecture, _指令集架构_ )是软件与硬件之间的契约。它定义了处理器能够理解的所有操作指令(比方说加法、跳转、内存读写),以及处理器向软件暴露的状态。
-
-RISC-V 的设计哲学是模块化的。基础指令集代表了 CPU 必须实现的最小功能集合。其他的扩展功能,如浮点运算,都是可选的插件。这与 x86 这种将所有功能捆绑在一起的架构并不相同。这意味着,只要掌握了基础指令集,代码就能在任何一个标准的 RISC-V 处理器上运行。
-
-
-#### 非特权指令集
-
-现代处理器通常至少有两种运行模式:
-
-* 特权模式:操作系统内核运行的模式,可以执行所有指令,包括管理硬件、中断和内存映射的指令;
-* 非特权模式:普通应用程序运行的模式。
-
-
-#### 基础架构的分类
-
-RISC-V 通过简单的命名规则来区分不同的基础架构变体:
-
-* RV:代表 RISC-V;
-* 32 / 64 / 128:代表寄存器的位宽和地址空间的大小;
-* I:代表整数;
-* E:代表嵌入式。
-
-RV64I 是目前我们正在使用的架构,因为工具链是 `riscv64' 。它是 64 位的标准整数指令集。 RV32I 是 32 位的标准版本,在微控制器领域非常流行。 RV128I 是为未来设计的 128 位架构,用于应对未来海量内存寻址的需求。 RV32E 是为了极低成本、极低功耗的微控制器而设计的。它将寄存器数量从标准的 32 个砍到了 16 个,以节省芯片面积。
-
-
-#### 寄存器大小与地址空间
-
-寄存器大小与地址空间是理解 32 位或 64 位计算机本质的关键。在 RV64I 中,通用寄存器(例如 `x10' )的物理宽度是 64 个比特,这意味着单一一条指令可以直接处理一个最大为 $2^{64} - 1$ 的整数。如果在 RV32I 上处理同样的数,就需要多条指令将其拆分处理。
+ISA(Instruction Set Architecture, 指令集架构 )是软件与硬件之间的契约。它定义了处理器能够理解的所有操作指令(比方说加法、跳转、内存读写),以及处理器向软件暴露的状态。
-寄存器的宽度也决定了指针的大小。在 RV32 中,指针是 32 位的,因此 CPU 最多只能寻址 $2^{32}$ 个字节的内存,即 4 GB。这对于现代桌面应用来说往往是不够的。在 RV64 中,指针是 64 位的,理论寻址空间高达 $2^{64}$ 字节,即 160 亿 GB,消除了内存容量的限制。
+RISC-V 的设计哲学是模块化的。基础指令集代表了 CPU 必须实现的最小功能集合。其他的扩展功能,如浮点运算,都是可选的插件。这与 x86 这种将所有功能捆绑在一起的架构并不相同。这意味着,只要掌握了基础指令集,代码就能在任何一个标准的 RISC-V 处理器上运行。
-RV32I 的基础指令集仅包含 40 条指令,也就是说,只需要这 40 条最基本的指令就可以构建出所有的计算逻辑!
+### 非特权指令集
+现代处理器通常至少有两种运行模式:
-#### 模块化命名规则
+1. 特权模式:操作系统内核运行的模式,可以执行所有指令,包括管理硬件、中断和内存映射的指令;
+2. 非特权模式:普通应用程序运行的模式。
-RISC-V 的设计允许通过组合不同的扩展模块来定制处理器的功能。
+### 基础架构的分类
-先前说过,RISC-V 处理器都必须至少支持一个基础整数指令集。在此基础上,处理器设计者可以选择添加额外的硬件功能,这些功能被称为扩展。处理器的完整型号就是「基础架构名 + 扩展后缀」。
+RISC-V 通过简单的命名规则来区分不同的基础架构变体:
-这些是标准扩展代码:
+* RV:代表 RISC-V;
+* 32 \slash{} 64 \slash{} 128:代表寄存器的位宽和地址空间的大小;
+* I:代表整数;
+* E:代表嵌入式。
-* M(Integer Multiplication and Division):整数乘除法。硬件直接支持整数的乘法和除法运算。如果没有这个扩展,处理器需要通过软件算法模拟乘除法,速度会显著变慢;
-* A(Atomic Instructions):原子指令。支持在单一操作中完成内存的「读取-修改-写入」过程。这对于多线程同步和并发控制至关重要,例如实现互斥锁;
-* F(Single-Precision Floating Point):单精度浮点数。硬件支持 32 位浮点数运算;
-* D(Double-Precision Floating Point):双精度浮点数。硬件支持 64 位浮点数运算。通常依赖于 F 扩展;
-* Q(Quad-Precision Floating Point):四精度浮点数。硬件支持 128 位浮点数运算;
-* C(Compressed Instructions):压缩指令。支持 16 位长度的指令,而标准 RISC-V 指令为 32 位。这可以显著减少程序占用的内存空间,提高代码密度;
-* V(Vector Operations):向量操作。支持 SIMD(单指令多数据)操作,允许一条指令同时处理一组数据,常用于高性能计算和 AI 加速。
+RV64I 是目前我们正在使用的架构,因为工具链是 riscv64 。它是 64 位的标准整数指令集。
+RV32I 是 32 位的标准版本,在微控制器领域非常流行。
+RV128I 是为未来设计的 128 位架构,用于应对未来海量内存寻址的需求。
+RV32E 是为了极低成本、极低功耗的微控制器而设计的。它将寄存器数量从标准的 32 个砍到了 16 个,以节省芯片面积。
-这里使用两个例子:
+### 寄存器大小与地址空间
-* RV32IMAC:
-* RV32I:基础是 32 位整数架构;
-* M:支持硬件乘除法;
-* A:支持原子操作;
-* C:支持压缩指令;
-* 但是不支持浮点运算,是一个纯整数处理器。
-* RV64IMAFDC(通常也被称为 RV64GC):
-* RV64I:基础是 64 位整数架构;
-* 剩下的意味着它同时支持乘除法、原子操作、单/双精度浮点运算和压缩指令。这是一个全功能的通用处理器配置,类似于我们电脑内的 CPU。
+寄存器大小与地址空间是理解 32 位或 64 位计算机本质的关键。在 RV64I 中,通用寄存器(例如 x10 )的物理宽度是 64 个比特,这意味着单一一条指令可以直接处理一个最大为 $2^{64} - 1$ 的整数。如果在 RV32I 上处理同样的数,就需要多条指令将其拆分处理。
-某些情况下会出现 SU 后缀,例如 RV64IMAFDCSU。这两个字母不代表具体的运算指令,而是代表处理器支持的特权模式:
+寄存器的宽度也决定了指针的大小。在 RV32 中,指针是 32 位的,因此 CPU 最多只能寻址 $2^{32}$ 个字节的内存,即 4 GB。这对于现代桌面应用来说往往是不够的。在 RV64 中,指针是 64 位的,理论寻址空间高达 $2^{64}$ 字节,即 160 亿 GB,消除了内存容量的限制。
-* S(Supervisor Mode):监管者模式。这是操作系统内核,如 Linux Kernel,运行所需的权限级别。支持 S 模式意味着该处理器有能力运行完整的操作系统;
-* U(User Mode):用户模式。这是普通应用程序运行的受限权限级别。
+RV32I 的基础指令集仅包含 40 条指令,也就是说,只需要这 40 条最基本的指令就可以构建出所有的计算逻辑!
-因此,如果一个处理器列出了 `S' ,事实就是它被设计为可以运行操作系统;如果只支持机器模式(也是默认都有的),则它通常只能运行简单的裸机代码。
+### 模块化命名规则
+RISC-V 的设计允许通过组合不同的扩展模块来定制处理器的功能。
-#### 硬件层面的寄存器结构
+先前说过,RISC-V 处理器都必须至少支持一个基础整数指令集。在此基础上,处理器设计者可以选择添加额外的硬件功能,这些功能被称为扩展。处理器的完整型号就是「基础架构名 + 扩展后缀」。
-RISC-V 的基础指令集规定处理器必须包含 32 个通用整数寄存器,物理编号为 `x0' 到 `x31' 。此外,还有一个独立的程序计数器 `PC' ,用于记录当前正在执行的指令地址。
+这些是标准扩展代码:
-寄存器的位宽直接对应于基础架构的位数。在 RV32I 架构中,每个寄存器( `x0' 到 `x31' )和 `PC' 都是 32 位的(4 字节);而在 RV64I 架构中,它们则是 64 位的(8 字节)。这意味着寄存器即用于存储参与运算的数据,也用于存储内存地址(指针)。
+* M(Integer Multiplication and Division):整数乘除法。硬件直接支持整数的乘法和除法运算。如果没有这个扩展,处理器需要通过软件算法模拟乘除法,速度会显著变慢;
+* A(Atomic Instructions):原子指令。支持在单一操作中完成内存的「读取-修改-写入」过程。这对于多线程同步和并发控制至关重要,例如实现互斥锁;
+* F(Single-Precision Floating Point):单精度浮点数。硬件支持 32 位浮点数运算;
+* D(Double-Precision Floating Point):双精度浮点数。硬件支持 64 位浮点数运算。通常依赖于 F 扩展;
+* Q(Quad-Precision Floating Point):四精度浮点数。硬件支持 128 位浮点数运算;
+* C(Compressed Instructions):压缩指令。支持 16 位长度的指令,而标准 RISC-V 指令为 32 位。这可以显著减少程序占用的内存空间,提高代码密度;
+* V(Vector Operations):向量操作。支持 SIMD(单指令多数据)操作,允许一条指令同时处理一组数据,常用于高性能计算和 AI 加速。
-在硬件层面, `x0' 是一个特殊的寄存器。它被硬件强制硬连线位常数 0。无论程序向 `x0' 写入什么值,读取时得到的结果永远是 0。这是为了简化指令集,例如「将寄存器清零」或「移动数据」等操作都可以复用通用的算术指令,而无需设计专用的指令。
+这里使用两个例子:
+* RV32IMAC:
+* RV32I:基础是 32 位整数架构;
+* M:支持硬件乘除法;
+* A:支持原子操作;
+* C:支持压缩指令;
+* 但是不支持浮点运算,是一个纯整数处理器。
+* RV64IMAFDC(通常也被称为 RV64GC):
+* RV64I:基础是 64 位整数架构;
+* 剩下的意味着它同时支持乘除法、原子操作、单/双精度浮点运算和压缩指令。这是一个全功能的通用处理器配置,类似于我们电脑内的 CPU。
-#### ABI
+某些情况下会出现 SU 后缀,例如 RV64IMAFDCSU。这两个字母不代表具体的运算指令,而是代表处理器支持的特权模式:
-先前已经提到了 ABI,此处详细说一下 ABI 将寄存器按功能划分成了多少类:
+* S(Supervisor Mode):监管者模式。这是操作系统内核,如 Linux Kernel,运行所需的权限级别。支持 S 模式意味着该处理器有能力运行完整的操作系统;
+* U(User Mode):用户模式。这是普通应用程序运行的受限权限级别。
-* 特殊功能寄存器
-* zero( `x0' ):恒为 0;
-* `ra' ( `x1' ,Return Address):返回地址寄存器。当发生函数调用( `call' )时,硬件会将「下一条指令的地址」自动保存到这里,以便函数执行完后能跳回原来的位置;
-* `sp' ( `x2' ,Stack Pointer):栈指针。指向当前栈顶的内存地址,用于管理函数调用栈;
-* `gp' ( `x3' ,Global Pointer)和 `tp' ( `x4' ,Thread Pointer):分别用于快速访问全局变量和线程本地存储。
-* 函数调用与参数传递
-* `a0-a7' (=x10-x17= ,Arguments):参数寄存器。用于将参数传递给函数。其中 `a0' 和 `a1' 还兼职用于存储函数的返回值。如果参数超过 8 个,多余的参数通常会通过栈(内存)传递。
-* 临时与保存寄存器
-* `t0-t6' (Temporaries):临时寄存器。被调用函数(Callee)可以随意修改这些寄存器,不需要恢复原值。因此,调用者(Caller)如果想在函数调用后继续使用 `t' 寄存器里的值,必须自己在调用前保存它们;
-* `s0-s11' (Saved Registers):保存寄存器。被调用函数必须保证这些寄存器的值在函数退出时与进入时一致。如果函数内部需要使用这些寄存器,必须先将旧值压入栈中保存,使用完后再从栈中恢复。其中 `s0' 有时也被用作 `fp' (Frame Pointer),即帧指针。
+因此,如果一个处理器列出了 S ,事实就是它被设计为可以运行操作系统;如果只支持机器模式(也是默认都有的),则它通常只能运行简单的裸机代码。
+### 硬件层面的寄存器结构
-#### 加载-存储架构
+RISC-V 的基础指令集规定处理器必须包含 32 个通用整数寄存器,物理编号为 x0 到 x31 。此外,还有一个独立的程序计数器 PC ,用于记录当前正在执行的指令地址。
-在 RISC-V 中,所有的算术和逻辑运算只能在寄存器之间进行。CPU 无法直接对内存中的数据执行加法操作。
+寄存器的位宽直接对应于基础架构的位数。在 RV32I 架构中,每个寄存器( x0 到 x31 )和 PC 都是 32 位的(4 字节);而在 RV64I 架构中,它们则是 64 位的(8 字节)。这意味着寄存器即用于存储参与运算的数据,也用于存储内存地址(指针)。
-如果想要修改内存中的一个变量,必须遵循严格的「三步走」流程:
+在硬件层面, x0 是一个特殊的寄存器。它被硬件强制硬连线位常数 0。无论程序向 x0 写入什么值,读取时得到的结果永远是 0。这是为了简化指令集,例如「将寄存器清零」或「移动数据」等操作都可以复用通用的算术指令,而无需设计专用的指令。
-* Load:使用加载指令(如 `lw' )将数据从内存读取到某个通用寄存器中;
-* Compute:在寄存器内部使用算术指令(如 `add' )对数据进行计算;
-* Store:使用存储指令(如 `sw' )将计算结果从寄存器写回到内存中。
+### ABI
-这种设计虽然使得单条指令的功能变弱了,比方说不能像 x86 的 `add [eax] 5' 那样一步到位,但简化了硬件电路设计,使指令流水线更加规整和高效。
+先前已经提到了 ABI,此处详细说一下 ABI 将寄存器按功能划分成了多少类:
-以 `addi' 指令为例,用三个核心层级来讲解汇编指令如何被 CPU 执行、寄存器如何变化以及机器码在内存中的基本布局。
+* 特殊功能寄存器
+* zero( x0 ):恒为 0;
+* ra ( x1 ,Return Address):返回地址寄存器。当发生函数调用( call )时,硬件会将「下一条指令的地址」自动保存到这里,以便函数执行完后能跳回原来的位置;
+* sp ( x2 ,Stack Pointer):栈指针。指向当前栈顶的内存地址,用于管理函数调用栈;
+* gp ( x3 ,Global Pointer)和 tp ( x4 ,Thread Pointer):分别用于快速访问全局变量和线程本地存储。
+* 函数调用与参数传递
+* a0-a7 (x10-x17 ,Arguments):参数寄存器。用于将参数传递给函数。其中 a0 和 a1 还兼职用于存储函数的返回值。如果参数超过 8 个,多余的参数通常会通过栈(内存)传递。
+* 临时与保存寄存器
+* t0-t6 (Temporaries):临时寄存器。被调用函数(Callee)可以随意修改这些寄存器,不需要恢复原值。因此,调用者(Caller)如果想在函数调用后继续使用 t 寄存器里的值,必须自己在调用前保存它们;
+* s0-s11 (Saved Registers):保存寄存器。被调用函数必须保证这些寄存器的值在函数退出时与进入时一致。如果函数内部需要使用这些寄存器,必须先将旧值压入栈中保存,使用完后再从栈中恢复。其中 s0 有时也被用作 fp (Frame Pointer),即帧指针。
+
+### 加载-存储架构
-两个例子:
+在 RISC-V 中,所有的算术和逻辑运算只能在寄存器之间进行。CPU 无法直接对内存中的数据执行加法操作。
-* `addi x1, x0, 1'
-* `addi x1, x1, 1'
+如果想要修改内存中的一个变量,必须遵循严格的「三步走」流程:
-一、在指令层级上, `addi' 的全程是 Add Immediate(立即数加法)。它的标准语法格式是 `addi rd, rs1, imm' 。
+1. Load:使用加载指令(如 lw )将数据从内存读取到某个通用寄存器中;
+2. Compute:在寄存器内部使用算术指令(如 add )对数据进行计算;
+3. Store:使用存储指令(如 sw )将计算结果从寄存器写回到内存中。
-* `rd' (Destination Register):目标寄存器,用来存放计算结果;
-* `rs1' (Source Register 1):源寄存器,提供基础数值;
-* `imm' (Immediate):立即数。这是一个直接写在指令里的常数,而不是从寄存器里读的。
-* 限制:它必须是一个 12 位有符号整数。这意味着它的取值范围被限制在 $[-2048, 2047]$ 之间。
+这种设计虽然使得单条指令的功能变弱了,比方说不能像 x86 的 add [eax] 5 那样一步到位,但简化了硬件电路设计,使指令流水线更加规整和高效。
-第一个例子取出了 `x0' 的值,并添加立即数 1,结果便是 $0 + 1 = 1$。然后将这个结果 1 写入寄存器 `x1' 。 第二个例子取出 `x1' 当前的值,并添加立即数 1,结果是 $1 + 1 = 2$。然后将这个结果 2 写入寄存器 `x1' ,实际上实现了自增的操作。
+以 addi 指令为例,用三个核心层级来讲解汇编指令如何被 CPU 执行、寄存器如何变化以及机器码在内存中的基本布局。
-二、 `PC' 指针与步进。
+两个例子:
-在 RISC-V 的基础指令集中,每条指令的长度固定为 4 字节(32 位)。每当 CPU 取出一条指令后, `PC' 寄存器会自动加 4,使得 CPU 能够指向内存中的下一条指令。
+1. addi x1, x0, 1
+2. addi x1, x1, 1
-三、内存与机器码层级上,代码到底是如何被存放的?
+一、在指令层级上, addi 的全程是 Add Immediate(立即数加法)。它的标准语法格式是 addi rd, rs1, imm 。
-假设代码从地址 `0x0' 开始:
+* rd (Destination Register):目标寄存器,用来存放计算结果;
+* rs1 (Source Register 1):源寄存器,提供基础数值;
+* imm (Immediate):立即数。这是一个直接写在指令里的常数,而不是从寄存器里读的。
+* 限制:它必须是一个 12 位有符号整数。这意味着它的取值范围被限制在 $[-2048, 2047]$ 之间。
-```
- 内存地址 机器码 对应的汇编
- `0x0' `0x00100093' `addi x1, x0, 1'
- `0x4' `0x00108093' `addi x1, x1, 1'
-
-```
-
-* 地址 `0x0' :存放第一条指令。执行时,CPU 处于地址 `0x0' ,执行完后 `PC' 变为 `0x4' ;
-* 地址 `0x4' :存放第二条指令。因为上一条指令占了 4 个字节(0, 1, 2, 3),所以下一条指令必须从 4 开始。
-
-执行流演示:
-
-* 初始状态: `PC = 0x0' ;
-* 取指:CPU 读取地址 `0x0' 处的数据 `00100093' ;
-* 执行:解析为 `addi x1, x0, 1' 。寄存器 `x1' 变为 1;
-* 更新: `PC' 自动加 4,变为 `0x4' ;
-* 取指:CPU 读取地址 `0x4' 处的数据 `00108093' ;
-* 执行:解析为 `addi x1, x1, 1' 。寄存器 `x1' 变为 2。
-
-教程推荐使用 Ripes 模拟器来直观观看数据通路中,信号是如何流动的,以及 `PC' 指针是如何跳变的。
-
-
-#### 六大指令类型
-
-基础指令集将所有功能划分为 6 种类型,每种类型对应一种特定的比特位布局:
-
-```
- 类型 英文全称 中文含义 典型用途 示例指令
- R Register 寄存器型 纯寄存器之间的运算 `add x1, x2, x3'
- I Immediate 立即数型 寄存器与小常数运算,或加载内存 `addi x1, x0, 1'
- S Store 存储型 将数据存入内存 `sw x1, 0(x2)'
- B Branch 分支型 条件跳转 `beq x1, x2, label'
- U Upper 高位立即数 设置长立即数的高 20 位 `lui x1, 0x1000'
- J Jump 跳转型 无条件跳转 `jal , label'
-
-```
-
-根据先前的例子, `addi x1, x0, 1' 的机器码是 `0x00100093' 。我们可以通过查表并结合已知信息推导出这个编码:
-
-* Opcode(操作码): `0x13' (二进制 `0010011' );
-* `funct3=(功能码): =0x0' (二进制 `000' );
-* Type(类型):属于 I-type。
-
-因此 `addi x1, x0, 1' 的机器码按位组合如下:
-
-* 二进制序列: `0000 0000 0001 0000 0000 0000 1001 0011' ;
-* 由于每 4 个二进制位可以转换为 1 个十六进制数字,最终结果就是 `0x00100093' 。
-
-要看懂这个解析,我们需要深入了解指令编码的具体布局。虽然 RISC-V 的指令长度固定为 32 位,但这 32 个比特并非随意排列,而是被划分为了不同的字段。每种指令类型都有其独特的字段排布方式。对于 `addi' 这种 I-type 指令,其 32 位数据的内部结构由高位到低位依次如下:
-
-首先,其 32 位空间被分割为 5 个部分:
-
-```
- 比特位置 `31:20' `19:15' `14:12' `11:7' `6:0'
- 字段名称 `imm[11:0]' `rs1' `funct3' `rd' 操作码
- 含义 立即数 源寄存器 功能码 目标寄存器 操作码
- 长度 12 位 5 位 3 位 5 位 7 位
-
-```
-
-其次,我们将具体的汇编指令映射到上述结构中:
-
-* 操作码:这是识别指令家族的。对于所有的 I-type 算术指令(如 `addi' 、 `ori' 等),操作码固定为 `0010011' 也就是十六进制的 `0x13' ;
-* `rd=:指令中的目标是 =x1' 。在二进制中,1 表示为 `00001' ;
-* `funct3=:由于操作码定义了一组指令,我们需要额外的 3 位来区分具体是「加法」还是「异或」等。对于加法 =addi' ,该值为 `000' ;
-* `rs1=:指令中的源操作数是 =x0' 。在二进制中,0 表示为 `00000' ;
-* `imm=:我们要加的数值是 =1' 。I-type 允许 12 位的有符号立即数,因此 1 表示为 `000000000001' 。
-
-最后,我们需要将上述二进制片段按顺序连接起来。值得注意的是,我们要用的是从高位 31 到低位 0 的顺序:
-
-* `imm=: =000000000001'
-* `rs1=: =00000'
-* `funct3=: =000'
-* `rd=: =00001'
-* `操作码=: =0010011'
+第一个例子取出了 x0 的值,并添加立即数 1,结果便是 $0 + 1 1$。然后将这个结果 1 写入寄存器 x1= 。
+第二个例子取出 x1 当前的值,并添加立即数 1,结果是 $1 + 1 2$。然后将这个结果 2 写入寄存器 x1= ,实际上实现了自增的操作。
-连在一起我们就得到了 32 位二进制流: `00000000000100000000000010010011' 。
+二、 PC 指针与步进。
-为了将其转换成人类可读的十六进制,我们将这 32 位每 4 位分为一组进行转换:
+在 RISC-V 的基础指令集中,每条指令的长度固定为 4 字节(32 位)。每当 CPU 取出一条指令后, PC 寄存器会自动加 4,使得 CPU 能够指向内存中的下一条指令。
-```
- 二进制分组 0000 0000 0001 0000 0000 0000 1001 0011
- 十六进制值 0 0 1 0 0 0 9 3
+三、内存与机器码层级上,代码到底是如何被存放的?
-```
+假设代码从地址 0x0 开始:
-最终组合结果为: `0x00100093' 。这就是机器真正看到并执行的内容!
+| 内存地址 | 机器码 | 对应的汇编 |
+| 0x0 | 0x00100093 | addi x1, x0, 1 |
+| 0x4 | 0x00108093 | addi x1, x1, 1 |
-其他类型的编码方式见下图:
+* 地址 0x0 :存放第一条指令。执行时,CPU 处于地址 0x0 ,执行完后 PC 变为 0x4 ;
+* 地址 0x4 :存放第二条指令。因为上一条指令占了 4 个字节(0, 1, 2, 3),所以下一条指令必须从 4 开始。
-[./encoding_table.png]
+执行流演示:
+1. 初始状态: PC 0x0= ;
+2. 取指:CPU 读取地址 0x0 处的数据 00100093 ;
+3. 执行:解析为 addi x1, x0, 1 。寄存器 x1 变为 1;
+4. 更新: PC 自动加 4,变为 0x4 ;
+5. 取指:CPU 读取地址 0x4 处的数据 00108093 ;
+6. 执行:解析为 addi x1, x1, 1 。寄存器 x1 变为 2。
+
+教程推荐使用 Ripes 模拟器来直观观看数据通路中,信号是如何流动的,以及 PC 指针是如何跳变的。
-=> ./encoding_table.png ./encoding_table.png
+### 六大指令类型
-##### 立即数类型指令集中与算术、逻辑运算相关的具体指令
+基础指令集将所有功能划分为 6 种类型,每种类型对应一种特定的比特位布局:
-这些指令的一个共同特征是:它们都接受一个源寄存器和一个立即数作为输入,运算后将结果存入目标寄存器。所有这些指令共享同一个 操作码,这意味着 CPU 是通过 `funct3' 字段,以及移位指令中的部分立即数位来区分具体是要执行加法、异或还是移位操作。
+| 类型 | 英文全称 | 中文含义 | 典型用途 | 示例指令 |
+| R | Register | 寄存器型 | 纯寄存器之间的运算 | add x1, x2, x3 |
+| I | Immediate | 立即数型 | 寄存器与小常数运算,或加载内存 | addi x1, x0, 1 |
+| S | Store | 存储型 | 将数据存入内存 | sw x1, 0(x2) |
+| B | Branch | 分支型 | 条件跳转 | beq x1, x2, label |
+| U | Upper | 高位立即数 | 设置长立即数的高 20 位 | lui x1, 0x1000 |
+| J | Jump | 跳转型 | 无条件跳转 | jal , label |
-我们将这些指令分为三类进行讲解:
+根据先前的例子, addi x1, x0, 1 的机器码是 0x00100093 。我们可以通过查表并结合已知信息推导出这个编码:
-一、算术与逻辑运算。
+* Opcode(操作码): 0x13 (二进制 0010011 );
+* funct3(功能码): 0x0 (二进制 000 );
+* Type(类型):属于 I-type。
-这组指令对寄存器数值进行基础数字或位操作。
+因此 addi x1, x0, 1 的机器码按位组合如下:
-```
- 指令 全称 功能描述 关键点
- `addi' Add Immediate `rd = rs1 + imm' 唯一的加法指令。RISC-V 没有专门的 `subi' 指令。因为立即数 `immi' 是有符号的(-2048 到 2047),如果你想做减法,只需加上一个复数即可。
- `xori' XOR Immediate `rd = rs1 ^ imm' 按位异或。常用于翻转特定位。
- `ori' OR Immediate `rd = rs1 \vert{} imm' 按位或。常用于将特定位置 1。
- `andi' AND Immediate `rd = rs1 & imm' 按位与。常用于掩码操作(清零特定位)。
+* 二进制序列: 0000 0000 0001 0000 0000 0000 1001 0011 ;
+* 由于每 4 个二进制位可以转换为 1 个十六进制数字,最终结果就是 0x00100093 。
-```
-假设寄存器 `x1' 的值为 `0x9' (二进制 `1001' )。执行 `xori x1, x1, 0x3' :
+要看懂这个解析,我们需要深入了解指令编码的具体布局。虽然 RISC-V 的指令长度固定为 32 位,但这 32 个比特并非随意排列,而是被划分为了不同的字段。每种指令类型都有其独特的字段排布方式。对于 addi 这种 I-type 指令,其 32 位数据的内部结构由高位到低位依次如下:
-* 源数据: `1001' ( `0x9' )
-* 立即数: `0011' ( `0x3' )
-* 异或结果: `1010' ( `0xA' )
-* 最终 `x1' 变为 `0xA'
+首先,其 32 位空间被分割为 5 个部分:
-二、移位运算。
+| 比特位置 | 31:20 | 19:15 | 14:12 | 11:7 | 6:0 |
+| 字段名称 | imm[11:0] | rs1 | funct3 | rd | 操作码 |
+| 含义 | 立即数 | 源寄存器 | 功能码 | 目标寄存器 | 操作码 |
+| 长度 | 12 位 | 5 位 | 3 位 | 5 位 | 7 位 |
-移位指令用于将二进制位向左或向右移动。对于 I-Type 移位指令,立即数指定了移位的位数。
+其次,我们将具体的汇编指令映射到上述结构中:
-值得注意的是,移位指令在编码上比较特殊。由于移位量只需要 5 个比特,I-Type 指令原本 12 位的立即数空间被拆分了:低 5 位用于存移位量,高 7 位( `imm[11:5]' )被用来作为辅助功能码,区分逻辑移位和算术移位。
+* 操作码:这是识别指令家族的。对于所有的 I-type 算术指令(如 addi 、 ori 等),操作码固定为 0010011 也就是十六进制的 0x13 ;
+* rd:指令中的目标是 x1 。在二进制中,1 表示为 00001 ;
+* funct3:由于操作码定义了一组指令,我们需要额外的 3 位来区分具体是「加法」还是「异或」等。对于加法 addi ,该值为 000 ;
+* rs1:指令中的源操作数是 x0 。在二进制中,0 表示为 00000 ;
+* imm:我们要加的数值是 1 。I-type 允许 12 位的有符号立即数,因此 1 表示为 000000000001 。
-```
- 指令 全称 符号 填充规则
- `slli' Shift Left Logical Imm. `<<' 逻辑左移;所有位向左移,低位(右侧)空出的位置补 0
- `srli' Shift Right Logical Imm. `>>' 逻辑右移;所有位向右移,高位(左侧)空出的位置补 0
- `srai' Shift Right Arithmetic Imm. `>>' 算术右移;所有位向右移,高位(左侧)空出的位置补符号位(即维持最高位不变)。适用于有符号数(补码),这能保证负数右移后依然是负数
+最后,我们需要将上述二进制片段按顺序连接起来。值得注意的是,我们要用的是从高位 31 到低位 0 的顺序:
-```
+* imm: 000000000001
+* rs1: 00000
+* funct3: 000
+* rd: 00001
+* 操作码: 0010011
-作为一个例子,假设 `x1' 为 `0x9' ( `1001' )。执行 `slli x1, x1, 0x2' ,即左移 2 位。原始内容是 `00...001001' ,左移后变成 `00...100100' (低位补了两个 0),等于 `36' ,即十六进制 `0x24' 。
+连在一起我们就得到了 32 位二进制流: 00000000000100000000000010010011 。
-三、比较运算。
+为了将其转换成人类可读的十六进制,我们将这 32 位每 4 位分为一组进行转换:
-这类指令用于数值比较,结果不是返回差值,而是返回布尔值 0 或者 1。
+| 二进制分组 | 0000 | 0000 | 0001 | 0000 | 0000 | 0000 | 1001 | 0011 |
+| 十六进制值 | 0 | 0 | 1 | 0 | 0 | 0 | 9 | 3 |
-```
- 指令 全称 功能描述 区别
- `slti' Set Less Than Imm. 若 `rs1 < imm' 则 ~rd=1~,否则 `0' 有符号比较。它将操作数视为补码。例如,它会认为 -1 小于 10
- `sltiu' Set Less Than Imm. Unsigned 若 `rs1 < imm' 则 ~rd=1~,否则 `0' 无符号比较。它将操作视为纯正整数。例如,它会认为 -1,即全 1 的 `0xFFFFFFFF' ,是一个巨大的正数,因此 -1 大于 10
+最终组合结果为: 0x00100093 。这就是机器真正看到并执行的内容!
-```
+其他类型的编码方式见下图:
-##### 寄存器类型
-在先前的 I-Type(立即数型)指令中,指令的 32 个比特位被分配给了一个目标寄存器( `rd' )、一个源寄存器( `rs1' )和一个 12 位的立即数( `imm' )。当程序需要将两个都在寄存器中的变量进行运算时,I-Type 就无能为力了。因此,RISC-V 设计了 R-Type 格式。
+### 立即数类型指令集中与算术、逻辑运算相关的具体指令
-```
- 指令名称 操作码 `funct3' `funct7' 描述
- =add=(加法) `0110011' `0x0' `0x00' `rd = rs1 + rs2
-`
- #ERROR `0110011' `0x0' `0x20' `rd = rs1 - rs2
-`
- =xor=(异或) `0110011' `0x4' `0x00' `rd = rs1 ^ rs2
-`
- =or=(或) `0110011' `0x6' `0x00' `rd = rs1 \vert rs2
-`
- =and=(与) `0110011' `0x7' `0x00' `rd = rs1 & rs2
-`
- =sll=(逻辑左移) `0110011' `0x1' `0x00' `rd = rs1 << rs2
-`
- =srl=(逻辑右移) `0110011' `0x5' `0x00' `rd = rs1 >> rs2
-`
- =sra=(算术右移) `0110011' `0x5' `0x20' `rd = rs1 >> rs2
-`
- =slt=(小于置位) `0110011' `0x2' `0x00' `rd = (rs1 < rs2)? 0:1
-`
- =sltu=(无符号小于置位) `0110011' `0x3' `0x00' `rd = (rs1 < rs2)? 0:1
-`
+这些指令的一个共同特征是:它们都接受一个源寄存器和一个立即数作为输入,运算后将结果存入目标寄存器。所有这些指令共享同一个 操作码,这意味着 CPU 是通过 funct3 字段,以及移位指令中的部分立即数位来区分具体是要执行加法、异或还是移位操作。
-```
+我们将这些指令分为三类进行讲解:
-R-Type 指令的物理编码结构将原本用于存放 12 位立即数的空间重新进行了分配。它划出了 5 个比特位用于指定第二个源寄存器( `rs2' ),而剩余的 7 个比特位则被定位为 `funct7' 也叫 7 位功能码。所有的 R-Type 算术和逻辑指令都共享同一个基本的操作码,操作码 为 `0110011' 。CPU 首先读取操作码,得知这是一条 R-Type 算术指令,接着通过结合 `funct3' 和 `funct7' ,才能最终确定具体要执行的硬件电路。
+一、算术与逻辑运算。
-例如加法和减法。RISC-V 的 I-Type 指令中不存在 `subi' (立即数减法),因为程序员可以直接加上一个负的立即数。但是在纯寄存器运算中,加法和减法是截然不同的操作。在 R-Type 中,=add= 和 `sub' 拥有完全相同的操作码和 `funct3=,它们唯一的物理区别就在于 =funct7' 字段:=add= 的 `funct7' 为 `0x00=,而 =sub' 的 `funct7' 为 =0x20=。硬件编码器会捕捉到这一个比特位的差异,从而指示算术逻辑单元执行减法而不是加法。
+这组指令对寄存器数值进行基础数字或位操作。
-这种 R-Type 架构同样适用于移位操作。在前面提到的立即数移位指令(如 =slli=)中,移位的步长是硬编码在指令里的常数。而在 R-Type 的移位指令中(=sll=、=srl=、=sra=)中,移位的步长来自于第二个源寄存器(=rs2=)的最低 5 个比特位。这意味着程序可以在运行时,动态计算并决定需要移位的具体位数,从而极大地提升了运算的灵活性。
+| 指令 | 全称 | 功能描述 | 关键点 |
+| <6> | <10> | <10> | <8> |
+| addi | Add Immediate | rd rs1 + imm | 唯一的加法指令。RISC-V 没有专门的 subi 指令。因为立即数 immi= 是有符号的(-2048 到 2047),如果你想做减法,只需加上一个复数即可。 |
+| xori | XOR Immediate | rd rs1 ^ imm= | 按位异或。常用于翻转特定位。 |
+| ori | OR Immediate | rd rs1 \vert{} imm= | 按位或。常用于将特定位置 1。 |
+| andi | AND Immediate | rd rs1 & imm= | 按位与。常用于掩码操作(清零特定位)。 |
+假设寄存器 x1 的值为 0x9 (二进制 1001 )。执行 xori x1, x1, 0x3 :
-依然是作为例子:
+* 源数据: 1001 ( 0x9 )
+* 立即数: 0011 ( 0x3 )
+* 异或结果: 1010 ( 0xA )
+* 最终 x1 变为 0xA
-```
- 地址 机器码 汇编含义
- `0x0' `0x00100093' `addi x1, x0, 1'
- `0x4' `0x00108093' `addi x1, x1, 1'
- `0x8' `0x00108133' `add x2, x1, x1'
+二、移位运算。
-```
+移位指令用于将二进制位向左或向右移动。对于 I-Type 移位指令,立即数指定了移位的位数。
-程序计数器会从地址 `0x0' 启动,第一条 I-Type 指令将 `x1' 初始化为 1。随后 `PC' 步进至 `0x4=,第二条 I-Type 指令通过自增操作使 =x1' 的值更新为 2。当 `PC' 到达 `0x8=,CPU 读取并解码出第一条 R-Type 指令(=add=)。此时,指令指示 ALU 取出 =rs1=(即 =x1=,值为 2)和 =rs2=(依然是 =x1=,值为 2)的内容。ALU 执行加法后得到 4,并将该结果通过数据通路写回到目标寄存器 =rd=(即 =x2=)。至此,=x2' 的状态被确立为 4。
+值得注意的是,移位指令在编码上比较特殊。由于移位量只需要 5 个比特,I-Type 指令原本 12 位的立即数空间被拆分了:低 5 位用于存移位量,高 7 位( imm[11:5] )被用来作为辅助功能码,区分逻辑移位和算术移位。
+| 指令 | 全称 | 符号 | 填充规则 |
+| slli | Shift Left Logical Imm. | << | 逻辑左移;所有位向左移,低位(右侧)空出的位置补 0 |
+| srli | Shift Right Logical Imm. | >> | 逻辑右移;所有位向右移,高位(左侧)空出的位置补 0 |
+| srai | Shift Right Arithmetic Imm. | >> | 算术右移;所有位向右移,高位(左侧)空出的位置补符号位(即维持最高位不变)。适用于有符号数(补码),这能保证负数右移后依然是负数 |
-#### 加载与存储
+作为一个例子,假设 x1 为 0x9 ( 1001 )。执行 slli x1, x1, 0x2 ,即左移 2 位。原始内容是 00...001001 ,左移后变成 00...100100 (低位补了两个 0),等于 36 ,即十六进制 0x24 。
-如何与主内存进行数据交换,以及如何高效地生成大型的 32 位常数和内存地址呢?
+三、比较运算。
-RISC-V 采用了严格的「加载-存储」架构。ALU 无法直接读取或修改内存中的数据。所有的运算必须在寄存器内完成。这就构成了数据流转的基本逻辑:使用 Load 指令将内存数据搬运到寄存器,在寄存器中计算完毕后,再使用 Store 指令将结果搬运回内存。
+这类指令用于数值比较,结果不是返回差值,而是返回布尔值 0 或者 1。
-```
- 指令 名称 格式 操作码 `funct3' 描述
- `lb' 加载字节 I `0000011' `0x0' `rd = M[rs1+imm][7:0]
-`
- `lh' 加载半字 I `0000011' `0x1' `rd = M[rs1+imm][15:0]
-`
- `lw' 加载字 I `0000011' `0x2' `rd = M[rs1+imm][31:0]
-`
- `lbu' 加载无符号字节 I `0000011' `0x4' `rd = M[rs1+imm][7:0]
-`
- `lhu' 加载无符号半字 I `0000011' `0x5' `rd = M[rs1+imm][15:0]
-`
- `sb' 存储字节 S `0100011' `0x0' `M[rs1+imm][7:0] = rs2[7:0]
-`
- `sh' 存储半字 S `0100011' `0x1' `M[rs1+imm][15:0] = rs2[15:0]
-`
- `sw' 存储字 S `0100011' `0x2' `M[rs1+imm][31:0] = rs2[31:0]
-`
+| 指令 | 全称 | 功能描述 | 区别 |
+| slti | Set Less Than Imm. | 若 rs1 < imm 则 rd1,否则 0= | 有符号比较。它将操作数视为补码。例如,它会认为 -1 小于 10 |
+| sltiu | Set Less Than Imm. Unsigned | 若 rs1 < imm 则 rd1,否则 0 | 无符号比较。它将操作视为纯正整数。例如,它会认为 -1,即全 1 的 0xFFFFFFFF= ,是一个巨大的正数,因此 -1 大于 10 |
-```
+### 寄存器类型
-该表格列出了所有的 Load 和 Store 指令。这些指令的寻址模式被称为「基址寻址」。以语法 `lb x2, 0(x1)' 为例,括号内的 `x1' 是基址寄存器(=rs1=),提供了一个基础的内存地址;括号外的 `0' 是立即数偏移量(=imm=)。硬件会将 `x1' 的值与立即数相加,计算出最终的物理内存地址,然后从该地址读取数据存入 =x2=(=rd=)中。
+在先前的 I-Type(立即数型)指令中,指令的 32 个比特位被分配给了一个目标寄存器( rd )、一个源寄存器( rs1 )和一个 12 位的立即数( imm )。当程序需要将两个都在寄存器中的变量进行运算时,I-Type 就无能为力了。因此,RISC-V 设计了 R-Type 格式。
-对于 Load 指令,RISC-V 提供了按字节(8 位,=lb=)、半字(16 位,=lh=)和字(32 位,=lw=)加载的选项。由于目标寄存器总是 32 位的,当加载不足 32 位的数据(如 8 位的字节)时,就会出现高 24 位如何填充的问题。带有 `u' 后缀的指令(如 `lbu=,无符号加载)会在高位全部填充 0;而不带 =u' 的指令(如 `lb=,有符号加载)则会进行「符号扩展」,即将最高位(符号位)复制填充到所有的剩余高位中,以维持负数的数字意义。Store 指令则不需要区分符号,因为它们仅仅是截断寄存器中的低位数据,并覆盖到内存中,如 =sb' 只取寄存器的最低 8 位写入内存。
+| 指令名称 | 操作码 | funct3 | funct7 | 描述 |
+| add(加法) | 0110011 | 0x0 | 0x00 | rd = rs1 + rs2 |
+| #ERROR | 0110011 | 0x0 | 0x20 | rd = rs1 - rs2 |
+| xor(异或) | 0110011 | 0x4 | 0x00 | rd = rs1 ^ rs2 |
+| or(或) | 0110011 | 0x6 | 0x00 | rd = rs1 \vert rs2 |
+| and(与) | 0110011 | 0x7 | 0x00 | rd = rs1 & rs2 |
+| sll(逻辑左移) | 0110011 | 0x1 | 0x00 | rd = rs1 << rs2 |
+| srl(逻辑右移) | 0110011 | 0x5 | 0x00 | rd = rs1 >> rs2 |
+| sra(算术右移) | 0110011 | 0x5 | 0x20 | rd = rs1 >> rs2 |
+| slt(小于置位) | 0110011 | 0x2 | 0x00 | rd = (rs1 < rs2)? 0:1 |
+| sltu(无符号小于置位) | 0110011 | 0x3 | 0x00 | rd = (rs1 < rs2)? 0:1 |
-既然内存地址通常是一个 32 位的巨大数值,而基于 I-Type 和 S-Type 的指令只能容纳 12 位的立即数,我们该如何将一个 32 位的地址放入寄存器以便后续寻址呢?
+R-Type 指令的物理编码结构将原本用于存放 12 位立即数的空间重新进行了分配。它划出了 5 个比特位用于指定第二个源寄存器( rs2 ),而剩余的 7 个比特位则被定位为 funct7 也叫 7 位功能码。所有的 R-Type 算术和逻辑指令都共享同一个基本的操作码,操作码 为 0110011 。CPU 首先读取操作码,得知这是一条 R-Type 算术指令,接着通过结合 funct3 和 funct7 ,才能最终确定具体要执行的硬件电路。
-早期的笨办法是通过复杂的算术运算。程序员被迫先用 `addi' 将 1 放入寄存器,然后再用 `slli' 将其左移 28 位,才能勉强凑出 `0x10000000' 这个地址。这种操作极其低效,且难以泛用。
+例如加法和减法。RISC-V 的 I-Type 指令中不存在 subi (立即数减法),因为程序员可以直接加上一个负的立即数。但是在纯寄存器运算中,加法和减法是截然不同的操作。在 R-Type 中,add 和 sub 拥有完全相同的操作码和 funct3,它们唯一的物理区别就在于 funct7 字段:add 的 funct7 为 0x00,而 sub 的 funct7 为 0x20。硬件编码器会捕捉到这一个比特位的差异,从而指示算术逻辑单元执行减法而不是加法。
-为了解决这个问题,RISC-V 引入了 U-Type(Upper Immediate,高位立即数)指令格式。U-Type 指令舍弃了源寄存器字段,将立即数的可用空间直接扩展到了 20 位。
+这种 R-Type 架构同样适用于移位操作。在前面提到的立即数移位指令(如 slli)中,移位的步长是硬编码在指令里的常数。而在 R-Type 的移位指令中(sll、srl、sra)中,移位的步长来自于第二个源寄存器(rs2)的最低 5 个比特位。这意味着程序可以在运行时,动态计算并决定需要移位的具体位数,从而极大地提升了运算的灵活性。
-```
- 指令 名称 操作码 `funct3' 描述
- `lui' 加载高位立即数 `0110111' 无 `rd = imm << 12
-`
- `auipc' 将高位立即数加至 `PC' `0010111' 无 `rd = PC + (imm << 12)
-`
+依然是作为例子:
-```
+| 地址 | 机器码 | 汇编含义 |
+| 0x0 | 0x00100093 | addi x1, x0, 1 |
+| 0x4 | 0x00108093 | addi x1, x1, 1 |
+| 0x8 | 0x00108133 | add x2, x1, x1 |
-`lui' 的硬件逻辑非常纯粹:它获取指令中提供的 20 位立即数,直接将其放置在目标寄存器的高 20 位(即向左移位 12 次),并将底部的 12 位强制清零。因为在十六进制中,每 4 个二进制等于 1 个十六进制字符,左移 12 位正好等同于在数字末尾追加 3 个零。这样,只需要一条 `lui' 指令,就可以极快地构造出 32 位数值的上半部分。
+程序计数器会从地址 0x0 启动,第一条 I-Type 指令将 x1 初始化为 1。随后 PC 步进至 0x4,第二条 I-Type 指令通过自增操作使 x1 的值更新为 2。当 PC 到达 0x8,CPU 读取并解码出第一条 R-Type 指令(add)。此时,指令指示 ALU 取出 rs1(即 x1,值为 2)和 rs2(依然是 x1,值为 2)的内容。ALU 执行加法后得到 4,并将该结果通过数据通路写回到目标寄存器 rd(即 x2)。至此,x2 的状态被确立为 4。
-而 `auipc' 与 `lui' 机制类似,但多了一个步骤:它在将高 20 位就位后,会将其与当前的 `PC' 的值相加。在现代操作系统中,程序加载到内存的绝对地址往往是随机的,程序必须能够相对于其自身的位置去寻找变量。=auipc= 允许处理器以当前执行的指令地址为基准,向前或向后计算出相距甚远的数据地址。
+### 加载与存储
+如何与主内存进行数据交换,以及如何高效地生成大型的 32 位常数和内存地址呢?
-#### 控制流
+RISC-V 采用了严格的「加载-存储」架构。ALU 无法直接读取或修改内存中的数据。所有的运算必须在寄存器内完成。这就构成了数据流转的基本逻辑:使用 Load 指令将内存数据搬运到寄存器,在寄存器中计算完毕后,再使用 Store 指令将结果搬运回内存。
-在先前的学习中,我们已经知道 `PC' 在默认情况下会在每个时钟周期自动加 4,以此顺序执行内存中的指令。控制流的物理本质就是通过特定的条件或指令强行重写 `PC' 寄存器的值,从而改变指令获取的物理地址。
+| 指令 | 名称 | 格式 | 操作码 | funct3 | 描述 |
+| lb | 加载字节 | I | 0000011 | 0x0 | rd = M[rs1+imm][7:0] |
+| lh | 加载半字 | I | 0000011 | 0x1 | rd = M[rs1+imm][15:0] |
+| lw | 加载字 | I | 0000011 | 0x2 | rd = M[rs1+imm][31:0] |
+| lbu | 加载无符号字节 | I | 0000011 | 0x4 | rd = M[rs1+imm][7:0] |
+| lhu | 加载无符号半字 | I | 0000011 | 0x5 | rd = M[rs1+imm][15:0] |
+| sb | 存储字节 | S | 0100011 | 0x0 | M[rs1+imm][7:0] = rs2[7:0] |
+| sh | 存储半字 | S | 0100011 | 0x1 | M[rs1+imm][15:0] = rs2[15:0] |
+| sw | 存储字 | S | 0100011 | 0x2 | M[rs1+imm][31:0] = rs2[31:0] |
-条件分支指令(B-Type)的核心机制是让 ALU 对两个源寄存器进行比较。如果满足指令规定的比较条件,硬件会将指令中携带的立即数与当前的 `PC' 值相加,并将这个计算结果强行写入 `PC' 寄存器,完成物理跳转。如果条件不满足,PC 则按常规加 4,继续执行内存中紧挨着的下一条指令。
+该表格列出了所有的 Load 和 Store 指令。这些指令的寻址模式被称为「基址寻址」。以语法 lb x2, 0(x1) 为例,括号内的 x1 是基址寄存器(rs1),提供了一个基础的内存地址;括号外的 0 是立即数偏移量(imm)。硬件会将 x1 的值与立即数相加,计算出最终的物理内存地址,然后从该地址读取数据存入 x2(rd)中。
-在条件比较中,区分有符号和无符号至关重要。底层的机器码只是一串二进制位,没有内在的正负之分。
+对于 Load 指令,RISC-V 提供了按字节(8 位,lb)、半字(16 位,lh)和字(32 位,lw)加载的选项。由于目标寄存器总是 32 位的,当加载不足 32 位的数据(如 8 位的字节)时,就会出现高 24 位如何填充的问题。带有 u 后缀的指令(如 lbu,无符号加载)会在高位全部填充 0;而不带 u 的指令(如 lb,有符号加载)则会进行「符号扩展」,即将最高位(符号位)复制填充到所有的剩余高位中,以维持负数的数字意义。Store 指令则不需要区分符号,因为它们仅仅是截断寄存器中的低位数据,并覆盖到内存中,如 sb 只取寄存器的最低 8 位写入内存。
-作为个例子:
+既然内存地址通常是一个 32 位的巨大数值,而基于 I-Type 和 S-Type 的指令只能容纳 12 位的立即数,我们该如何将一个 32 位的地址放入寄存器以便后续寻址呢?
-```
- 地址 机器码 意思 注释
- `0x00' `0xffb00093' `addi x1, x0, -5' `x1 = -5
-`
- `0x04' `0x00500113' `addi x2, x0, 5' `x2 = 5
-`
- `0x08' `0x0020c463' `blt x1, x2, 0x8' `if (x1 < x2) pc = pc + 8
-`
- `0x0c' `0x00100193' `addi x3, x0, 1' `skipped if (x1 < x2): x3 = 1
-`
- `0x10' `0x00200193' `addi x3, x0, 2' `x3 = 2
-`
+早期的笨办法是通过复杂的算术运算。程序员被迫先用 addi 将 1 放入寄存器,然后再用 slli 将其左移 28 位,才能勉强凑出 0x10000000 这个地址。这种操作极其低效,且难以泛用。
-```
+为了解决这个问题,RISC-V 引入了 U-Type(Upper Immediate,高位立即数)指令格式。U-Type 指令舍弃了源寄存器字段,将立即数的可用空间直接扩展到了 20 位。
-寄存器 `x1' 先是被赋予了 `-5=。在 32 位系统中,'-5= 的底层补码是以 1 开头的一串极长的数据(即 `0xfffffffb=),而 =x2' 是 `5=。当使用 =blt' 进行比较时,硬件逻辑会将最高位视为符号位,从而正确得出 `-5' 小于 `5' 的结论,并触发跳转。
+| 指令 | 名称 | 操作码 | funct3 | 描述 |
+| lui | 加载高位立即数 | 0110111 | 无 | rd = imm << 12 |
+| auipc | 将高位立即数加至 PC | 0010111 | 无 | rd = PC + (imm << 12) |
-但如果错用了 `bltu=,硬件会纯续从数值大小的角度将 =0xfffffffb' 视为一个巨大的正数,此时比较结果为假,程序就会错误地跳过分支。
+lui 的硬件逻辑非常纯粹:它获取指令中提供的 20 位立即数,直接将其放置在目标寄存器的高 20 位(即向左移位 12 次),并将底部的 12 位强制清零。因为在十六进制中,每 4 个二进制等于 1 个十六进制字符,左移 12 位正好等同于在数字末尾追加 3 个零。这样,只需要一条 lui 指令,就可以极快地构造出 32 位数值的上半部分。
-除了基于条件的短距离跳转,RISC-V 还提供了用于实现函数调用和返回的无条件跳转指令,即 `jal=(Jump and Link)和 =jalr=(Jump and Link Register)。这类指令不仅要改变 =PC' 的值以实现跳转,还承担着「记录来处」的责任。
+而 auipc 与 lui 机制类似,但多了一个步骤:它在将高 20 位就位后,会将其与当前的 PC 的值相加。在现代操作系统中,程序加载到内存的绝对地址往往是随机的,程序必须能够相对于其自身的位置去寻找变量。auipc 允许处理器以当前执行的指令地址为基准,向前或向后计算出相距甚远的数据地址。
-所谓的 /Link/(链接),指的是在覆盖 `PC' 寄存器之前,硬件会先将当前的 `PC' 值加上 4 保存到一个指定的目标寄存器中。这个被保存的地址就是返回地址。通过这种机制,程序在跳入一个代码片段执行完毕后,可以再次通过读取该寄存器的值跳回到最初离开的位置,这是实现程序模块化和复用的底层基础。
+### 控制流
-`jal' 和 `jalr' 的区别在于计算目标地址的方式。=jal= 属于 J-Type 指令,它将当前的 `PC' 值与指令中携带的大范围立即数相加来实现相对位置的跳转。而 `jalr' 属于 I-Type 指令,它通过读取一个源寄存器的值,加上立即数偏移量来计算跳转的绝对物理地址。
+在先前的学习中,我们已经知道 PC 在默认情况下会在每个时钟周期自动加 4,以此顺序执行内存中的指令。控制流的物理本质就是通过特定的条件或指令强行重写 PC 寄存器的值,从而改变指令获取的物理地址。
-这是又一个例子:
+条件分支指令(B-Type)的核心机制是让 ALU 对两个源寄存器进行比较。如果满足指令规定的比较条件,硬件会将指令中携带的立即数与当前的 PC 值相加,并将这个计算结果强行写入 PC 寄存器,完成物理跳转。如果条件不满足,PC 则按常规加 4,继续执行内存中紧挨着的下一条指令。
-```
- 地址 机器码 意思 注释
- `0x00' `0x00c000ef' `jal x1, 0xc' `set pc to 0x0 + 0xc = 0xc, x1 = pc + 4 = 0x4
-`
- `0x04' `0x00000013' `addi x0, x0, 0' 无操作
- `0x08' `0x00010093' `addi x1, x2, 0' `set x1 = x2
-`
- `0x0c' `0x00008167' `jalr x2, x1, 0' `set pc to x1, x2 = pc + 4 = 0x10
-`
- `0x10' `0x00100093' `addi x1, x0, 1' `x1 = 1
-`
+在条件比较中,区分有符号和无符号至关重要。底层的机器码只是一串二进制位,没有内在的正负之分。
-```
+作为个例子:
-这是一个相对复杂点的跳转时序,实际上模拟了一个状态机的执行轨迹。程序从地址 `0x00' 开始,执行 `jal x1, 0xc=。此时 CPU 计算跳转目标为 =0x00' 加上 `0xc' 等于 `0x0c=,同时将返回地址 =0x04' 保存到寄存器 `x1' 中。
+| 地址 | 机器码 | 意思 | 注释 |
+| 0x00 | 0xffb00093 | addi x1, x0, -5 | x1 = -5 |
+| 0x04 | 0x00500113 | addi x2, x0, 5 | x2 = 5 |
+| 0x08 | 0x0020c463 | blt x1, x2, 0x8 | if (x1 < x2) pc = pc + 8 |
+| 0x0c | 0x00100193 | addi x3, x0, 1 | skipped if (x1 < x2): x3 = 1 |
+| 0x10 | 0x00200193 | addi x3, x0, 2 | x3 = 2 |
-随后 `PC' 跳转至 `0x0c=,执行 =jalr x2, x1, 0=。此时 =x1' 的值为 `0x04=,因此跳转目标为 =0x04' 加上 `0' 等于 `0x04=。同时,这条指令需要保存新的返回地址,即当前的 =0x0c' 加上 `4' 等于 `0x10=,并将其写入寄存器 =x2' 中。
+寄存器 x1 先是被赋予了 -5。在 32 位系统中,-5 的底层补码是以 1 开头的一串极长的数据(即 0xfffffffb),而 x2 是 5。当使用 blt 进行比较时,硬件逻辑会将最高位视为符号位,从而正确得出 -5 小于 5 的结论,并触发跳转。
-此时 `PC' 再次跳转回 `0x04=。=0x04' 处的指令是将 `x0' 加上 `0=,实际上是一条不改变任何物理状态的空操作。程序继续顺序执行到 =0x08=,这里的指令将 =x2' 的值(即刚才保存的 =0x10=)复制给 =x1=。
+但如果错用了 bltu,硬件会纯续从数值大小的角度将 0xfffffffb 视为一个巨大的正数,此时比较结果为假,程序就会错误地跳过分支。
-程序继续顺序执行,再次来到 `0x0c=。此时再次执行 =jalr x2, x1, 0=。由于在上一步,=x1' 的值已经被更新为 `0x10=,因此这次的跳转目标变成了 =0x10' 加上 `0' 等于 `0x10=。同时,新的返回地址 =0x10' 再次被写入 =x2=。
+除了基于条件的短距离跳转,RISC-V 还提供了用于实现函数调用和返回的无条件跳转指令,即 jal(Jump and Link)和 jalr(Jump and Link Register)。这类指令不仅要改变 PC 的值以实现跳转,还承担着「记录来处」的责任。
-最终,PC 跳转至 `0x10' 执行加法指令。
+所谓的 Link(链接),指的是在覆盖 PC 寄存器之前,硬件会先将当前的 PC 值加上 4 保存到一个指定的目标寄存器中。这个被保存的地址就是返回地址。通过这种机制,程序在跳入一个代码片段执行完毕后,可以再次通过读取该寄存器的值跳回到最初离开的位置,这是实现程序模块化和复用的底层基础。
+jal 和 jalr 的区别在于计算目标地址的方式。jal 属于 J-Type 指令,它将当前的 PC 值与指令中携带的大范围立即数相加来实现相对位置的跳转。而 jalr 属于 I-Type 指令,它通过读取一个源寄存器的值,加上立即数偏移量来计算跳转的绝对物理地址。
-#### 系统接口
+这是又一个例子:
-在现代计算机体系结构中,为了保证系统的稳定与安全,硬件在物理上划分了不同的运行模式。普通应用程序默认运行在权限极低的「用户模式」下,这种模式下的代码被物理电路限制,无法直接操作底层硬件。而操作系统内核运行在高权限的「监管者模式」或者「机器模式」下,拥有掌控所有物理资源的最高权限。
+| 地址 | 机器码 | 意思 | 注释 |
+| 0x00 | 0x00c000ef | jal x1, 0xc | set pc to 0x0 + 0xc 0xc, x1 pc + 4 = 0x4 |
+| 0x04 | 0x00000013 | addi x0, x0, 0 | 无操作 |
+| 0x08 | 0x00010093 | addi x1, x2, 0 | set x1 = x2 |
+| 0x0c | 0x00008167 | jalr x2, x1, 0 | set pc to x1, x2 pc + 4 0x10 |
+| 0x10 | 0x00100093 | addi x1, x0, 1 | x1 = 1 |
-当运行在用户模式下的程序需要执行必须由高权限才能完成的动作时,就必须通过一种机制,在硬件层面上安全地将控制权移交给操作系统。=ecall= 指令就是为此而生的。
+这是一个相对复杂点的跳转时序,实际上模拟了一个状态机的执行轨迹。程序从地址 0x00 开始,执行 jal x1, 0xc。此时 CPU 计算跳转目标为 0x00 加上 0xc 等于 0x0c,同时将返回地址 0x04 保存到寄存器 x1 中。
-它在执行时,会在处理器内部触发一个同步异常。这个物理动作会瞬间打断当前用户程序的线性执行流,将 `PC' 的值强行替换为操作系统内核预先设定的异常处理程序的物理地址,并同时提升处理器的硬件特权级别。
+随后 PC 跳转至 0x0c,执行 jalr x2, x1, 0。此时 x1 的值为 0x04,因此跳转目标为 0x04 加上 0 等于 0x04。同时,这条指令需要保存新的返回地址,即当前的 0x0c 加上 4 等于 0x10,并将其写入寄存器 x2 中。
-然而,操作系统内核在接管控制权后,必须知道用户程序究竟想要请求什么服务。这就需要依靠 ABI 指定的寄存器契约。在 Linux RISC-V 的契约中,程序员必须在触发 `ecall' 之前,将特定的系统调用号放入指定的物理寄存器 `x17=(ABI 名称为 =a7=)中。内核被唤醒后,会第一时间去读取 =a7' 寄存器的电平状态,以此来决定分配哪一段内核代码去执行具体的任务。
+此时 PC 再次跳转回 0x04。0x04 处的指令是将 x0 加上 0,实际上是一条不改变任何物理状态的空操作。程序继续顺序执行到 0x08,这里的指令将 x2 的值(即刚才保存的 0x10)复制给 x1。
-教程中提供的例子正是描述了这样一个完整的系统调用物理过程,其具体内容如下表所示:
+程序继续顺序执行,再次来到 0x0c。此时再次执行 jalr x2, x1, 0。由于在上一步,x1 的值已经被更新为 0x10,因此这次的跳转目标变成了 0x10 加上 0 等于 0x10。同时,新的返回地址 0x10 再次被写入 x2。
-```
- 地址 机器码 意思 注释
- `0x00' `0x05d00893' `addi x17, x0, 93' 设置 ~a7 = 93~,对应 Linux 的 `exit' 系统调用
- `0x04' `0x00000073' `ecall' 触发环境调用,将控制权移交系统内核
+最终,PC 跳转至 0x10 执行加法指令。
-```
+### 系统接口
-在这个执行序列中,程序首先位于内存地址 `0x00=。指令解码器将机器码 =0x05d00893' 翻译为 `addi x17, x0, 93=。硬件电路读取恒为 0 的 =x0' 寄存器,将其与立即数 93 相加,并将结果存在 `x17' 寄存器中,也就是 `a7=。在 Linux 内核的系统调用映射表中,数字 93 严格对应着 =sys_exit' 的服务。随后 `PC' 步进至 `0x04=,处理器读取并执行 =ecall' 指令。此时,硬件权限提升,Linux 内核介入,检查到 `a7' 寄存器内部的数据为 93,于是内核执行进程清理工作,彻底在内存中抹除该程序的运行状态。
+在现代计算机体系结构中,为了保证系统的稳定与安全,硬件在物理上划分了不同的运行模式。普通应用程序默认运行在权限极低的「用户模式」下,这种模式下的代码被物理电路限制,无法直接操作底层硬件。而操作系统内核运行在高权限的「监管者模式」或者「机器模式」下,拥有掌控所有物理资源的最高权限。
-另一个系统接口指令是 `ebreak=。与 =ecall' 移交控制权给操作系统不同,=ebreak= 的物理设计目的是将处理器的控制权移交给调试器。执行 `ebreak' 同样会触发一个异常,迫使 CPU 暂停当前的流水线工作。
+当运行在用户模式下的程序需要执行必须由高权限才能完成的动作时,就必须通过一种机制,在硬件层面上安全地将控制权移交给操作系统。ecall 指令就是为此而生的。
-不过程序员在编写汇编源码时,极少会手动写入 `ebreak' 指令。它的主要应用场景是在幕后由调试软件动态注入。当我们在调试器中对代码的某一行下达「打断点」的指令时,调试器会在物理内存中定位到该行代码对应的原始机器码,并将其悄悄替换为 `ebreak' 的机器码。
+它在执行时,会在处理器内部触发一个同步异常。这个物理动作会瞬间打断当前用户程序的线性执行流,将 PC 的值强行替换为操作系统内核预先设定的异常处理程序的物理地址,并同时提升处理器的硬件特权级别。
-当微处理器的高速缓存读取并执行到这个被篡改的内存地址时,=ebreak= 触发异常,CPU 物理挂起,调试器趁机接管控制台,允许我们通过输入命令去查看各个寄存器内部的电平状态。当我们在调试器中输入继续运行的指令后,调试器会再次访问那段内存,将 `ebreak' 机器码抹除,并把原本正确的指令机器码填补回去,最后让 CPU 恢复物理运转。
+然而,操作系统内核在接管控制权后,必须知道用户程序究竟想要请求什么服务。这就需要依靠 ABI 指定的寄存器契约。在 Linux RISC-V 的契约中,程序员必须在触发 ecall 之前,将特定的系统调用号放入指定的物理寄存器 x17(ABI 名称为 a7)中。内核被唤醒后,会第一时间去读取 a7 寄存器的电平状态,以此来决定分配哪一段内核代码去执行具体的任务。
+教程中提供的例子正是描述了这样一个完整的系统调用物理过程,其具体内容如下表所示:
-#### 内存排序
+| 地址 | 机器码 | 意思 | 注释 |
+| 0x00 | 0x05d00893 | addi x17, x0, 93 | 设置 a7 93,对应 Linux 的 exit= 系统调用 |
+| 0x04 | 0x00000073 | ecall | 触发环境调用,将控制权移交系统内核 |
-在现代微处理器架构中,为了极致追求物理执行效率,硬件通常会采用乱序执行技术,并配备多级高速缓存和存储缓冲区。这意味着,机器码在内存中的线性排列顺序,并不完全等同于 CPU 最终将计算结果写入主内存的物理时序。在单核处理器中,这种乱序执行对程序员是透明的,硬件内部的依赖检查机制会保证最终结果的正确性。
+在这个执行序列中,程序首先位于内存地址 0x00。指令解码器将机器码 0x05d00893 翻译为 addi x17, x0, 93。硬件电路读取恒为 0 的 x0 寄存器,将其与立即数 93 相加,并将结果存在 x17 寄存器中,也就是 a7。在 Linux 内核的系统调用映射表中,数字 93 严格对应着 sys_exit 的服务。随后 PC 步进至 0x04,处理器读取并执行 ecall 指令。此时,硬件权限提升,Linux 内核介入,检查到 a7 寄存器内部的数据为 93,于是内核执行进程清理工作,彻底在内存中抹除该程序的运行状态。
-然而在拥有多个 RISC-V 硬件线程且共享同一块物理主内存的系统中,这种乱序写入会导致严重的同步问题。当核心 A 向共享内存写入一组数据,随后写入一个标志位表示数据已准备就绪时;核心 B 如果通过物理总线先预测到了标志位的改变,却因为核心 A 的缓存延迟而读取到了尚未更新的旧数据,就会引发并发程序的逻辑崩溃。
+另一个系统接口指令是 ebreak。与 ecall 移交控制权给操作系统不同,ebreak 的物理设计目的是将处理器的控制权移交给调试器。执行 ebreak 同样会触发一个异常,迫使 CPU 暂停当前的流水线工作。
-`fence' 指令的物理作用就是强制实施严格的内存访问顺序,以解决上述的可见性倒置问题。当微处理器的指令流水线读取到 `fence' 指令时,它会在硬件层面上将程序的执行流划分为两个绝对隔离的集合:位于 `fence' 之前的指令集合,以及位于 `fence' 之后的指令集合。
+不过程序员在编写汇编源码时,极少会手动写入 ebreak 指令。它的主要应用场景是在幕后由调试软件动态注入。当我们在调试器中对代码的某一行下达「打断点」的指令时,调试器会在物理内存中定位到该行代码对应的原始机器码,并将其悄悄替换为 ebreak 的机器码。
-执行 `fence' 指令时,当前处理器核心会暂时挂起后续集合中所有涉及内存访问指令的执行。硬件控制电路会等待并确保,前序集合中的所有内存读写操作不仅在当前核心内执行完毕,而且其产生的电平状态改变必须通过系统总线被推送至全局,确保被系统内的所有其他物理核心准确观测到。只有在这一物理可见性保证达成之后,后续集合中的内存访问指令才被允许启动。
+当微处理器的高速缓存读取并执行到这个被篡改的内存地址时,ebreak 触发异常,CPU 物理挂起,调试器趁机接管控制台,允许我们通过输入命令去查看各个寄存器内部的电平状态。当我们在调试器中输入继续运行的指令后,调试器会再次访问那段内存,将 ebreak 机器码抹除,并把原本正确的指令机器码填补回去,最后让 CPU 恢复物理运转。
-这种硬件级别的时序强制保证,是构建现代并发软件的基石。在操作系统的底层实现中,开发人员利用 `fence' 指令配合原子操作,来构建互斥锁等同步机制,从而确保多个进程或线程在操作共享内存区块时不会发生物理状态的竞态条件。
+### 内存排序
-```
- 指令 名称 类型 操作码 `funct3' 描述
- `fence' Fence I `0001111' `0x0' `rd' 和 `rs1' 处于保留状态。针对所有内存访问类型的常规 `fence' 指令,其立即数 `imm = 0b000011111111
-`
+在现代微处理器架构中,为了极致追求物理执行效率,硬件通常会采用乱序执行技术,并配备多级高速缓存和存储缓冲区。这意味着,机器码在内存中的线性排列顺序,并不完全等同于 CPU 最终将计算结果写入主内存的物理时序。在单核处理器中,这种乱序执行对程序员是透明的,硬件内部的依赖检查机制会保证最终结果的正确性。
-```
+然而在拥有多个 RISC-V 硬件线程且共享同一块物理主内存的系统中,这种乱序写入会导致严重的同步问题。当核心 A 向共享内存写入一组数据,随后写入一个标志位表示数据已准备就绪时;核心 B 如果通过物理总线先预测到了标志位的改变,却因为核心 A 的缓存延迟而读取到了尚未更新的旧数据,就会引发并发程序的逻辑崩溃。
-根据该表,由于 `fence' 并不进行实际的算术数据搬运,其目标寄存器 `rd' 和源寄存器 `rs1' 在基础用法中被硬件忽略并保留为空。
+fence 指令的物理作用就是强制实施严格的内存访问顺序,以解决上述的可见性倒置问题。当微处理器的指令流水线读取到 fence 指令时,它会在硬件层面上将程序的执行流划分为两个绝对隔离的集合:位于 fence 之前的指令集合,以及位于 fence 之后的指令集合。
-该指令的核心在于其 12 位的立即数。在 `fence' 指令的微架构实现中,这 12 个比特位被精确划分为输入和输出两组掩码,用于细粒度地指定具体需要对哪种类型的设备的哪种操作进行强制排序。表格中给出的立即数(即十六进制的 =0x0FF=)是一个全为 1 的掩码。当硬件电路接收到这个特定的立即数序列时,它会执行最严格的「完全屏障」,即要求该屏障之前的所有类型的物理内存读写,必须先于该屏障之后的所有类型的物理内存读写完成全局同步。
+执行 fence 指令时,当前处理器核心会暂时挂起后续集合中所有涉及内存访问指令的执行。硬件控制电路会等待并确保,前序集合中的所有内存读写操作不仅在当前核心内执行完毕,而且其产生的电平状态改变必须通过系统总线被推送至全局,确保被系统内的所有其他物理核心准确观测到。只有在这一物理可见性保证达成之后,后续集合中的内存访问指令才被允许启动。
+这种硬件级别的时序强制保证,是构建现代并发软件的基石。在操作系统的底层实现中,开发人员利用 fence 指令配合原子操作,来构建互斥锁等同步机制,从而确保多个进程或线程在操作共享内存区块时不会发生物理状态的竞态条件。
-#### /M/ 扩展
+| 指令 | 名称 | 类型 | 操作码 | funct3 | 描述 |
+| fence | Fence | I | 0001111 | 0x0 | rd 和 rs1 处于保留状态。针对所有内存访问类型的常规 fence 指令,其立即数 imm = 0b000011111111 |
-在体系结构的底层设计中,基础整数指令集(RV32I)为了追求硅片面积的极简与低功耗,在物理电路上刻意移除了硬件乘法器和除法器。如果仅有基础指令集,微处理器在执行乘除法时必须依赖编译器生成的循环加法与位移指令软件算法,这会消耗大量的时钟周期。M 扩展代表着在处理器的硅片上实际蚀刻了专用的硬件乘法器和除法器逻辑电路,使得乘除法可以在极少的时钟周期内直接由硬件电路完成。
+根据该表,由于 fence 并不进行实际的算术数据搬运,其目标寄存器 rd 和源寄存器 rs1 在基础用法中被硬件忽略并保留为空。
-M 扩展包含的指令全部属于 R-Type 格式,这意味着所有参与运算的数据必须预先加载到通用寄存器中,且指令的操作码统一为 =011011=。硬件译码器通过识别 7 位功能码(=funct7=,M 扩展固定为 =0x01=,即 =0000001=)与 3 位功能码(=funct3=)的电平信号组合,来精确激活对应的乘除法物理电路。
+该指令的核心在于其 12 位的立即数。在 fence 指令的微架构实现中,这 12 个比特位被精确划分为输入和输出两组掩码,用于细粒度地指定具体需要对哪种类型的设备的哪种操作进行强制排序。表格中给出的立即数(即十六进制的 0x0FF)是一个全为 1 的掩码。当硬件电路接收到这个特定的立即数序列时,它会执行最严格的「完全屏障」,即要求该屏障之前的所有类型的物理内存读写,必须先于该屏障之后的所有类型的物理内存读写完成全局同步。
-```
- 指令 名称 `funct3' 描述
- `mul' Multiply `0x0' ~rd = (rs1 * rs2)[31:0]~(取乘积的低 32 位)
- `mulh' Multiply High `0x1' ~rd = (rs1 * rs2)[63:32]~(有符号乘法,取高 32 位)
- `mulhsu' Multiply High Sign/Uns. `0x2' ~rd = (rs1 * rs2)[63:32]~(有符号与无符号乘法,取高 32 位)
- `mulhu' Multiply Unsigned `0x3' ~rd = (rs1 * rs2)[63:32]~(无符号乘法,取高 32 位)
- `div' Divide `0x4' ~rd = rs1 / rs2~(有符号除法,取商)
- `divu' Divide Unsigned `0x5' ~rd = rs1 / rs2~(无符号除法,取商)
- `rem' Remainder `0x6' ~rd = rs1 % rs2~(有符号除法,取余数)
- `remu' Remainder Unsigned `0x7' ~rd = rs1 % rs2~(无符号除法,取余数)
+### M 扩展
-```
+在体系结构的底层设计中,基础整数指令集(RV32I)为了追求硅片面积的极简与低功耗,在物理电路上刻意移除了硬件乘法器和除法器。如果仅有基础指令集,微处理器在执行乘除法时必须依赖编译器生成的循环加法与位移指令软件算法,这会消耗大量的时钟周期。M 扩展代表着在处理器的硅片上实际蚀刻了专用的硬件乘法器和除法器逻辑电路,使得乘除法可以在极少的时钟周期内直接由硬件电路完成。
-这组指令设计的核心物理矛盾在于数据位宽的溢出。当物理电路执行两个 32 位整数的乘法运算时,其产生的最大物理输出结果需要 64 根导线,即 64 个比特位才能无损承载。
+M 扩展包含的指令全部属于 R-Type 格式,这意味着所有参与运算的数据必须预先加载到通用寄存器中,且指令的操作码统一为 011011。硬件译码器通过识别 7 位功能码(funct7,M 扩展固定为 0x01,即 0000001)与 3 位功能码(funct3)的电平信号组合,来精确激活对应的乘除法物理电路。
-在 RV32 架构下,微处理器内部的单一通用寄存器物理位宽被硬性限制为 32 位。由于一个物理卡槽无法吞下 64 位的电平信号,硬件电路在输出时必须对数据进行物理截断。RISC-V 采用了两次读取的策略:=mul= 指令用于将硬件乘法器底部的 32 根导线(低 32 位)连接到目标寄存器;而 `mulh' 系列指令则用于将硬件乘法器顶部的 32 根导线(高 32 位)连接到目标目标寄存器。根据参与运算的数据是有符号补码还是无符号纯二进制,系统提供了不同的 `mulh' 变体以确保最高位(符号位)扩展时的物理正确性。
+| 指令 | 名称 | funct3 | 描述 |
+| mul | Multiply | 0x0 | rd = (rs1 * rs2)[31:0](取乘积的低 32 位) |
+| mulh | Multiply High | 0x1 | rd = (rs1 * rs2)[63:32](有符号乘法,取高 32 位) |
+| mulhsu | Multiply High Sign/Uns. | 0x2 | rd = (rs1 * rs2)[63:32](有符号与无符号乘法,取高 32 位) |
+| mulhu | Multiply Unsigned | 0x3 | rd = (rs1 * rs2)[63:32](无符号乘法,取高 32 位) |
+| div | Divide | 0x4 | rd = rs1 / rs2(有符号除法,取商) |
+| divu | Divide Unsigned | 0x5 | rd = rs1 / rs2(无符号除法,取商) |
+| rem | Remainder | 0x6 | rd = rs1 % rs2(有符号除法,取余数) |
+| remu | Remainder Unsigned | 0x7 | rd = rs1 % rs2(无符号除法,取余数) |
-举个例子:
+这组指令设计的核心物理矛盾在于数据位宽的溢出。当物理电路执行两个 32 位整数的乘法运算时,其产生的最大物理输出结果需要 64 根导线,即 64 个比特位才能无损承载。
-```
- 地址 机器码 意思 注释
- `0x00' `0x000100b7' `lui x1, 0x10' 通过高位立即数加载,=x1= 的物理状态变为 `0x00010000'
- `0x04' `0x00108093' `addi x1, x1, 1' `x1' 与 1 相加,其状态确立为被乘数:=0x00010001=
- `0x08' `0x00080137' `lui x2, 0x80' `x2' 的物理状态被确立为乘数:=0x00080000=
- `0x0c' `0x022081b3' `mul x3, x1, x2' 执行乘法,并将结果的低 32 位截断后存入 =x3=,此时 `x3 = 0x00080000
-`
- `0x10' `0x02209233' `mulh x4, x1, x2' 执行乘法,将结果的高 32 位截断后存入 =x4=,此时 `x4 = 0x00000008
-`
+在 RV32 架构下,微处理器内部的单一通用寄存器物理位宽被硬性限制为 32 位。由于一个物理卡槽无法吞下 64 位的电平信号,硬件电路在输出时必须对数据进行物理截断。RISC-V 采用了两次读取的策略:mul 指令用于将硬件乘法器底部的 32 根导线(低 32 位)连接到目标寄存器;而 mulh 系列指令则用于将硬件乘法器顶部的 32 根导线(高 32 位)连接到目标目标寄存器。根据参与运算的数据是有符号补码还是无符号纯二进制,系统提供了不同的 mulh 变体以确保最高位(符号位)扩展时的物理正确性。
-```
+举个例子:
-程序首先利用 `lui=(向左偏移 12 位)和 =addi' 指令,在 `x1' 寄存器中构造了十六进制数值 `0x00010001=。随后通过 =lui' 在 `x2' 寄存器中构造了十六进制数值 =0x00080000=。
+| 地址 | 机器码 | 意思 | 注释 |
+| 0x00 | 0x000100b7 | lui x1, 0x10 | 通过高位立即数加载,x1 的物理状态变为 0x00010000 |
+| 0x04 | 0x00108093 | addi x1, x1, 1 | x1 与 1 相加,其状态确立为被乘数:0x00010001 |
+| 0x08 | 0x00080137 | lui x2, 0x80 | x2 的物理状态被确立为乘数:0x00080000 |
+| 0x0c | 0x022081b3 | mul x3, x1, x2 | 执行乘法,并将结果的低 32 位截断后存入 x3,此时 x3 = 0x00080000 |
+| 0x10 | 0x02209233 | mulh x4, x1, x2 | 执行乘法,将结果的高 32 位截断后存入 x4,此时 x4 = 0x00000008 |
-当在内存地址 `0x0c' 和 `0x10' 触发乘法运算时,硬件乘法器接收这两个 32 位的输入电平,在内部产生一个 64 位的完整结果。从数学逻辑上验算:=0x00010001= 乘以 `0x00080000=,其完整的 64 位十六进制结果为 =0x0000000800080000=。在地址 =0x0c' 处,=mul= 指令激活了捕获低 32 位信号的数据通路,将其引流至寄存器 `x3=,因此 =x3' 呈现为 `0x00080000=。在地址 =0x10' 处,=mulh= 指令重新执行乘法(在实际的高性能微架构实现中,乘法器可能会缓存上一次的 64 位结果以避免重复计算),并激活捕获高 32 位信号的通路引流至 `x4=,因此 =x4' 呈现为 `0x00000008=。此时,=x4' 和 `x3' 在物理上共同组合成了完整的 64 位乘积。
+程序首先利用 lui(向左偏移 12 位)和 addi 指令,在 x1 寄存器中构造了十六进制数值 0x00010001。随后通过 lui 在 x2 寄存器中构造了十六进制数值 0x00080000。
-最后,教程指出了硬件除法器在面临「除数为零」这种未定义数学行为时的物理响应机制。在某些复杂的体系结构(如 x86)中,除以零会在硬件级别强行触发一个异常中断,迫使操作系统介入处理(通常表现为程序崩溃)。但在 RISC-V 架构中,为了维持处理单元和流水线控制逻辑的绝对精简,除以零被规定为一种不会引发物理中断的常规操作。当除法器电路接收到除数为 0 的电平信号时,其硬件连线会产生一个固定的输出:将目标寄存器内的所有物理比特位强制拉高至 1。全 1 的二进制状态在有符号补码逻辑中等同于数值 -1(即十六进制的 =0xFFFFFFFF=)。这就意味着,硬件将除以零的安全边界检查责任完全推卸给了软件。程序员或编译器必须在使用 div 指令之前,通过条件分支指令(如 =beq rs2, x0, exception_label=)主动探测除数寄存器的电平状态,以防止错误的 -1 污染后续的数据流计算。
+当在内存地址 0x0c 和 0x10 触发乘法运算时,硬件乘法器接收这两个 32 位的输入电平,在内部产生一个 64 位的完整结果。从数学逻辑上验算:0x00010001 乘以 0x00080000,其完整的 64 位十六进制结果为 0x0000000800080000。在地址 0x0c 处,mul 指令激活了捕获低 32 位信号的数据通路,将其引流至寄存器 x3,因此 x3 呈现为 0x00080000。在地址 0x10 处,mulh 指令重新执行乘法(在实际的高性能微架构实现中,乘法器可能会缓存上一次的 64 位结果以避免重复计算),并激活捕获高 32 位信号的通路引流至 x4,因此 x4 呈现为 0x00000008。此时,x4 和 x3 在物理上共同组合成了完整的 64 位乘积。
+最后,教程指出了硬件除法器在面临「除数为零」这种未定义数学行为时的物理响应机制。在某些复杂的体系结构(如 x86)中,除以零会在硬件级别强行触发一个异常中断,迫使操作系统介入处理(通常表现为程序崩溃)。但在 RISC-V 架构中,为了维持处理单元和流水线控制逻辑的绝对精简,除以零被规定为一种不会引发物理中断的常规操作。当除法器电路接收到除数为 0 的电平信号时,其硬件连线会产生一个固定的输出:将目标寄存器内的所有物理比特位强制拉高至 1。全 1 的二进制状态在有符号补码逻辑中等同于数值 -1(即十六进制的 0xFFFFFFFF)。这就意味着,硬件将除以零的安全边界检查责任完全推卸给了软件。程序员或编译器必须在使用 div 指令之前,通过条件分支指令(如 beq rs2, x0, exception_label)主动探测除数寄存器的电平状态,以防止错误的 -1 污染后续的数据流计算。
-#### RV64
+### RV64
-RV64 架构的基础执行逻辑与 RV32 完全一致。这种一致性体现在操作码、指令寻址格式以及寄存器契约的完全复用上。其根本的物理变化在于微处理器内部数据通路的全面拓宽。在 RV64 架构中,微处理器内部的 32 个通用物理寄存器(=x0= 至 `x31=)、ALU 的内部逻辑门阵列,以及连接各部件的内部数据总线,其物理导线的数量都被硬性地增加到了 64 根。这意味着,当你在 RV64 上执行一条基础的 =add' 或 `addi' 指令时,硬件电路默认激活的是一个 64 位的全加器,它会同时处理 64 位的电平信号,并将 64 位的完整结果写回目标寄存器。
+RV64 架构的基础执行逻辑与 RV32 完全一致。这种一致性体现在操作码、指令寻址格式以及寄存器契约的完全复用上。其根本的物理变化在于微处理器内部数据通路的全面拓宽。在 RV64 架构中,微处理器内部的 32 个通用物理寄存器(x0 至 x31)、ALU 的内部逻辑门阵列,以及连接各部件的内部数据总线,其物理导线的数量都被硬性地增加到了 64 根。这意味着,当你在 RV64 上执行一条基础的 add 或 addi 指令时,硬件电路默认激活的是一个 64 位的全加器,它会同时处理 64 位的电平信号,并将 64 位的完整结果写回目标寄存器。
-然而,计算体系中存在大量依赖 32 位物理边界的软件逻辑。例如 C 语言中标准 `int' 数据类型在大多数现代系统中被强制定义为 32 位。在纯粹的 32 位物理硬件上,当一个 `int' 类型的整数不断递增并超越其最大物理承载上限时,最高位的进位信号会因为没有更多的物理导线而自然丢失,从而精确的截断与符号位翻转(即溢出变成负数)。如果将这种运算直接放到 RV64 的 64 位加法器中执行,进位信号会顺理成章地流向第 33 根导线,数值会继续平滑增大,原本预期的 32 位溢出截断行为在物理上彻底失效了,这将导致严重的软件逻辑谬误。
+然而,计算体系中存在大量依赖 32 位物理边界的软件逻辑。例如 C 语言中标准 int 数据类型在大多数现代系统中被强制定义为 32 位。在纯粹的 32 位物理硬件上,当一个 int 类型的整数不断递增并超越其最大物理承载上限时,最高位的进位信号会因为没有更多的物理导线而自然丢失,从而精确的截断与符号位翻转(即溢出变成负数)。如果将这种运算直接放到 RV64 的 64 位加法器中执行,进位信号会顺理成章地流向第 33 根导线,数值会继续平滑增大,原本预期的 32 位溢出截断行为在物理上彻底失效了,这将导致严重的软件逻辑谬误。
-为了在 64 位的物理硬件上精准模拟 32 位的截断环境,RV64 指令集专门引入了带有 `w' 后缀的指令子集。在 RISC-V 的标准术语中,「字」(Word,即 `w=)被严格且永久地定义为 32 个比特位,而 64 位的数据被称为「双字」(Doubleword)。教程中提到的 =addw=、=addiw=、=sllw' 和 =mulw=,就是专门针对 32 位电平信号设计的截断运算指令。
+为了在 64 位的物理硬件上精准模拟 32 位的截断环境,RV64 指令集专门引入了带有 w 后缀的指令子集。在 RISC-V 的标准术语中,「字」(Word,即 w)被严格且永久地定义为 32 个比特位,而 64 位的数据被称为「双字」(Doubleword)。教程中提到的 addw、addiw、sllw 和 mulw,就是专门针对 32 位电平信号设计的截断运算指令。
-当微处理器的指令解码器读取到带有 `w' 后缀的机器码时,控制电路会向算术逻辑单元下达特定的屏蔽指令。此时,ALU 在获取源寄存器的数据时,会从物理上切断或忽略第 32 根至第 63 根导线的输入信号,仅仅提取寄存器最底部的 32 根导线(即低 32 位)的状态作为有效的运算输入。在 ALU 内部执行完纯粹的 32 位运算并得出结果后,硬件电路还需要完成最后一步关键的物理填充:符号扩展。
+当微处理器的指令解码器读取到带有 w 后缀的机器码时,控制电路会向算术逻辑单元下达特定的屏蔽指令。此时,ALU 在获取源寄存器的数据时,会从物理上切断或忽略第 32 根至第 63 根导线的输入信号,仅仅提取寄存器最底部的 32 根导线(即低 32 位)的状态作为有效的运算输入。在 ALU 内部执行完纯粹的 32 位运算并得出结果后,硬件电路还需要完成最后一步关键的物理填充:符号扩展。
-由于目标寄存器本质上仍然是一个 64 位的物理卡槽,ALU 不能仅仅将低 32 位的结果写回而任由高 32 位保留先前的垃圾电平信号。根据 RISC-V 的规范,硬件电路必须提取这 32 位运算结果的最高位(即第 31 根导线,符号位)的电平状态,并通过物理连线将其强行复制、覆盖到目标寄存器高段的全部 32 根导线上。这种由底层电路强制执行的符号扩展机制,确保了 32 位截断运算产生的数据,在被放回 64 位的寄存器空间后,依然能够维持其在数学逻辑上的正负一致性。
+由于目标寄存器本质上仍然是一个 64 位的物理卡槽,ALU 不能仅仅将低 32 位的结果写回而任由高 32 位保留先前的垃圾电平信号。根据 RISC-V 的规范,硬件电路必须提取这 32 位运算结果的最高位(即第 31 根导线,符号位)的电平状态,并通过物理连线将其强行复制、覆盖到目标寄存器高段的全部 32 根导线上。这种由底层电路强制执行的符号扩展机制,确保了 32 位截断运算产生的数据,在被放回 64 位的寄存器空间后,依然能够维持其在数学逻辑上的正负一致性。
M posts/玩茂林源记.gmi => posts/玩茂林源记.gmi +81 -88
@@ 1,168 1,161 @@
# 玩《茂林源记》
-《茂林源记》,或称 Root(以下也这么称呼),是一个区域控制类桌游。虽然这么说,但它的标签还是很多的,例如德式桌游标准的得分制、应该被划分给美式桌游的阵营机制等等。我先前为这款游戏写过一些评价,本来没有打算继续去写该游戏的说明,但介于自己刚写了个扫雷的入门说明,最终还是写下了这篇文章。
+《茂林源记》,或称 Root(以下也这么称呼),是一个区域控制类桌游。虽然这么说,但它的标签还是很多的,例如德式桌游标准的得分制、应该被划分给美式桌游的阵营机制等等。我先前为这款游戏写过一些评价,本来没有打算继续去写该游戏的说明,但介于自己刚写了个扫雷的入门说明,最终还是写下了这篇文章。
-#+MORE
+首先需要说明,桌游和其他电子游戏一样,是一个很大的类。休闲的桌游,如爆炸猫,跟大型的桌游,如很知名的 D&D,区别是很大很大的。在决定游玩 Root 之前,请务必考虑一下自己到底是什么桌游玩家——愿意花时间钻研吗?愿意仔细阅读说明书,且游玩期间遇到不懂的地方也会去认真查询吗?
-首先需要说明,桌游和其他电子游戏一样,是一个很大的类。休闲的桌游,如爆炸猫,跟大型的桌游,如很知名的 D&D,区别是很大很大的。在决定游玩 Root 之前,请务必考虑一下自己到底是什么桌游玩家——愿意花时间钻研吗?愿意仔细阅读说明书,且游玩期间遇到不懂的地方也会去认真查询吗?
+问这些问题的原因是,Root 其实卡在一个颇为尴尬的地方:它既没有大型桌游那么难懂,但入门门槛也足以劝退休闲玩家。这也是为什么我很难线下跟他人玩 Root,愿意尝试的就不多,看到说明书和规则书的还想继续玩的是少数;最麻烦的是教完一个人规则和至少一个阵营后,天也暗了,大家没有那么多空闲时间,只能等几个月再约。
-问这些问题的原因是,Root 其实卡在一个颇为尴尬的地方:它既没有大型桌游那么难懂,但入门门槛也足以劝退休闲玩家。这也是为什么我很难线下跟他人玩 Root,愿意尝试的就不多,看到说明书和规则书的还想继续玩的是少数;最麻烦的是教完一个人规则和至少一个阵营后,天也暗了,大家没有那么多空闲时间,只能等几个月再约。
-
-好啦虽然我抛出了这么多预警,对于依然想要继续学习的你们来说,Root 可能并没有那么可怕!实际上,就像我刚才说的,它无法跟更大的桌游比较。既然只需要一天就能教会一个新人,它的困难程度可想而知,并没有那么高,难的地方只是它的阵营机制。
-
-说了这么多,让我们回归正题吧,一起进入这片广大的茂林吧!
+好啦虽然我抛出了这么多预警,对于依然想要继续学习的你们来说,Root 可能并没有那么可怕!实际上,就像我刚才说的,它无法跟更大的桌游比较。既然只需要一天就能教会一个新人,它的困难程度可想而知,并没有那么高,难的地方只是它的阵营机制。
+说了这么多,让我们回归正题吧,一起进入这片广大的茂林吧!
### 基础规则
-Root 里,每个阵营的回合都结束后,一轮才算结束。也就是说,玩家甲开始回合,到玩家乙的回合结束,这算一轮。每个阵营的回合会经历三个阶段,也是三个时间段:清晨、白天和晚上。在这三个阶段里,不同阵营能够做的事情都不相同。
+Root 里,每个阵营的回合都结束后,一轮才算结束。也就是说,玩家甲开始回合,到玩家乙的回合结束,这算一轮。每个阵营的回合会经历三个阶段,也是三个时间段:清晨、白天和晚上。在这三个阶段里,不同阵营能够做的事情都不相同。
-通常而言,在设置期间,每个玩家会获得自己的阵营板、阵营所需要的所有米宝和令牌,以及 3 张牌。说到卡牌,该游戏有三个基础类型,或者说领地类型:老鼠、兔子和狐狸,他们是这个森林里的老百姓,更详细的背景设定我之后会补充。该游戏的大多数卡牌都需要锻造后才能发挥作用。在 Root 里,如果手牌超过 5 张,就必须在晚上阶段结束时丢弃直到手上只有 5 张牌。
+通常而言,在设置期间,每个玩家会获得自己的阵营板、阵营所需要的所有米宝和令牌,以及 3 张牌。说到卡牌,该游戏有三个基础类型,或者说领地类型:老鼠、兔子和狐狸,他们是这个森林里的老百姓,更详细的背景设定我之后会补充。该游戏的大多数卡牌都需要锻造后才能发挥作用。在 Root 里,如果手牌超过 5 张,就必须在晚上阶段结束时丢弃直到手上只有 5 张牌。
-地图上的地点和路线都是固定的,不过地点的类型可以随机,不过我个人推荐在学会游玩 Root 之前,只玩它的默认地图,因为类型分布最为平均。
+地图上的地点和路线都是固定的,不过地点的类型可以随机,不过我个人推荐在学会游玩 Root 之前,只玩它的默认地图,因为类型分布最为平均。
-必须要记住的是,Root 是一个区域控制游戏,「占领的领地」和地点是两个不同的概念。当你的士兵米宝和建筑物在一个地点上,数量超过其他阵营的士兵和建筑物,就算占领了该地点。当移动士兵时,出发地点和目标地点必须至少有一个在你进行移动之前、被你的阵营占领。这是 Root 在移动士兵上的基础规则。一次可以移动的士兵数量是随意的,想要移动多少就移动多少。
+必须要记住的是,Root 是一个区域控制游戏,「占领的领地」和地点是两个不同的概念。当你的士兵米宝和建筑物在一个地点上,数量超过其他阵营的士兵和建筑物,就算占领了该地点。当移动士兵时,出发地点和目标地点必须至少有一个在你进行移动之前、被你的阵营占领。这是 Root 在移动士兵上的基础规则。一次可以移动的士兵数量是随意的,想要移动多少就移动多少。
-再就是「建筑物」,查看地图时你会发现,地点上都有数个空格,这些便是放置建筑物的格子。当一个地点上没有空闲的建筑物格子,玩家们就不可以在该地点上放置更多的建筑物了。建筑物并不属于令牌的一种,令牌是圆形的,建筑物是方形的。建筑物在计算占领权会被算上,令牌则不算。
+再就是「建筑物」,查看地图时你会发现,地点上都有数个空格,这些便是放置建筑物的格子。当一个地点上没有空闲的建筑物格子,玩家们就不可以在该地点上放置更多的建筑物了。建筑物并不属于令牌的一种,令牌是圆形的,建筑物是方形的。建筑物在计算占领权会被算上,令牌则不算。
-战斗需要用到两个骰子,这两个骰子都只能投出 0/1/2/3 这四个点数。假设玩家甲和乙丢出了 1 和 3 这两个点数,且甲和乙在这个地点上的士兵数量分别是 2 和 3。在 Root 的战斗中,发起战斗的一方会取点数最大的那个骰子,被攻击的一方则拿点数最小的骰子——乙作为攻击方,一共有 3 个士兵,点数也是 3,这意味着他的 3 个士兵都可以各杀死一个敌人。尽管甲的士兵数量是 2,但拿到的 1 点数让他只能让 1 个士兵杀死一个敌人。结果就是,乙的 3 个士兵杀死了甲的 2 个士兵,多出了 1 次攻击,而甲的 1 个士兵杀死了乙的 1 个士兵。
+战斗需要用到两个骰子,这两个骰子都只能投出 012/3 这四个点数。假设玩家甲和乙丢出了 1 和 3 这两个点数,且甲和乙在这个地点上的士兵数量分别是 2 和 3。在 Root 的战斗中,发起战斗的一方会取点数最大的那个骰子,被攻击的一方则拿点数最小的骰子——乙作为攻击方,一共有 3 个士兵,点数也是 3,这意味着他的 3 个士兵都可以各杀死一个敌人。尽管甲的士兵数量是 2,但拿到的 1 点数让他只能让 1 个士兵杀死一个敌人。结果就是,乙的 3 个士兵杀死了甲的 2 个士兵,多出了 1 次攻击,而甲的 1 个士兵杀死了乙的 1 个士兵。
-当地点上的士兵都死掉了,多出来的攻击会算给令牌和建筑物。它们都不具备攻击能力,所以也无法战斗。如果攻击方攻击的地点上只有对方的令牌或者建筑物,那么无论投出多少点的骰子,都会另加 1 点伤害。并且,只要有 1 个令牌或者建筑物被摧毁,攻击者都可以额外拿取 1 分。如果有多个令牌或者建筑物,那么由被攻击的一方决定哪一个应当被移除。
-
-要在 Root 里获胜,通常是靠先得到 30 分。至于如何得分,每个阵营的方式也都不一样。所以可以看出来,该游戏的绝大多内容都在阵营上,而因为阵营除了游侠这个特殊阵营外都不能重复,所以在游玩自己的阵营时,也需要提防他人的阵营得分。这也是 Root 入门时的难点:记住所有阵营的机制和得分方法。
+当地点上的士兵都死掉了,多出来的攻击会算给令牌和建筑物。它们都不具备攻击能力,所以也无法战斗。如果攻击方攻击的地点上只有对方的令牌或者建筑物,那么无论投出多少点的骰子,都会另加 1 点伤害。并且,只要有 1 个令牌或者建筑物被摧毁,攻击者都可以额外拿取 1 分。如果有多个令牌或者建筑物,那么由被攻击的一方决定哪一个应当被移除。
+要在 Root 里获胜,通常是靠先得到 30 分。至于如何得分,每个阵营的方式也都不一样。所以可以看出来,该游戏的绝大多内容都在阵营上,而因为阵营除了游侠这个特殊阵营外都不能重复,所以在游玩自己的阵营时,也需要提防他人的阵营得分。这也是 Root 入门时的难点:记住所有阵营的机制和得分方法。
### 阵营机制说明
-#### 猫女侯爵
-
-也有翻译称其为「猫咪贵族」。在原文中用的 marquis 其实是法语的「女侯爵」的意思,这里就保留这层意思吧,不过后面都会简称为「猫咪」就是了。
-
-猫咪们在打跑了原本统治了森林的「飞鹰王朝」后,决心一路向工业化进发——砍树盖房子!猫咪可以放置三个种类的建筑物,且加分方式是靠放置建筑物。
-
-猫咪在开局阶段里优先级最高,可以选择地图上的任意一个角落作为自己城堡的落脚点,然后可以在城堡所在的地点或者相邻的地点内免费放置一个伐木场、一个工坊,和一个招兵所。
-
-我用了「免费」这个词,为什么呢,因为是「砍树」盖房子,原先这些建筑物都需要使用「木材」才能建造。木材作为一个令牌,又该如何获取呢?答案是靠猫咪的伐木场。嗯,这下便好理解了:猫咪通过建造伐木场来获取木材,又消耗木材来建造建筑物,建造建筑物还能加分,且场上相同类型的建筑物盖得越多、 加分越多。这便是猫咪主要的玩法。
+### 猫女侯爵
-猫咪的士兵足足有 25 个,到后面我介绍越来越多的阵营时,你便会发现这个数量有多么夸张。开局阶段里,猫咪需要在地图的所有地点上放置一个士兵,除了城堡斜对面的那一个角落。
+也有翻译称其为「猫咪贵族」。在原文中用的 marquis 其实是法语的「女侯爵」的意思,这里就保留这层意思吧,不过后面都会简称为「猫咪」就是了。
-清晨阶段,猫咪只能做一件事,那便是在场上所有伐木场所在的地点放置一个木材令牌,相当于每个伐木场都砍到了木头。白天阶段里则分两个步骤:一是激活场上的工坊来锻造卡牌,二是按照任意顺序和组合执行最多三项操作。
+猫咪们在打跑了原本统治了森林的「飞鹰王朝」后,决心一路向工业化进发——砍树盖房子!猫咪可以放置三个种类的建筑物,且加分方式是靠放置建筑物。
-先说猫咪的锻造。卡牌的锻造条件都要求一个阵营的可锻造单位有足够的数量,且位于正确的地点类型。比方说有一张牌要求有两个兔子类型,那对于猫咪而言,就需要在兔子类型的地点内先建造两个工坊,才能锻造该卡牌。这些可锻造单位,一回合只能使用一次。这对猫咪来说,不是一个好兆头,因为锻造卡牌之前,猫咪需要先消耗木头和行动次数来建造建筑物。
+猫咪在开局阶段里优先级最高,可以选择地图上的任意一个角落作为自己城堡的落脚点,然后可以在城堡所在的地点或者相邻的地点内免费放置一个伐木场、一个工坊,和一个招兵所。
-再来说猫咪的行动:战斗、行军、招募、建造建筑物、加班。
+我用了「免费」这个词,为什么呢,因为是「砍树」盖房子,原先这些建筑物都需要使用「木材」才能建造。木材作为一个令牌,又该如何获取呢?答案是靠猫咪的伐木场。嗯,这下便好理解了:猫咪通过建造伐木场来获取木材,又消耗木材来建造建筑物,建造建筑物还能加分,且场上相同类型的建筑物盖得越多、 加分越多。这便是猫咪主要的玩法。
-其中战斗没什么好说的,剩下三个都有着猫咪自己的特色。行军是加强的移动,一次行军相当于移动两次,且移动时仍然可以随意决定要移动的士兵数量;招募会在每个招兵所所在的地点放置一个新士兵,不过该操作 *每个回合只能执行一次* 。
+猫咪的士兵足足有 25 个,到后面我介绍越来越多的阵营时,你便会发现这个数量有多么夸张。开局阶段里,猫咪需要在地图的所有地点上放置一个士兵,除了城堡斜对面的那一个角落。
-建造建筑物需要单独拉出来说。一个玩家们经常忘记的猫咪规则是,想要建造建筑物的地点首先得是被猫咪占领的,且该地点需要和木材所在的地点形成一条完全被猫咪占领的路线才行。也就是说,木材必须从猫咪占领的地点,通过一系列也被猫咪占领的地点,才能抵达猫咪打算建造建筑物的已被占领地点。接着玩家需要在阵营板上选择建造哪一个建筑物、查看该建筑物如果被建造了需要消耗多少木材(每个类型的建筑物所需要的木材以及得到的分数都是独立开来的),并消耗这些木材。
+清晨阶段,猫咪只能做一件事,那便是在场上所有伐木场所在的地点放置一个木材令牌,相当于每个伐木场都砍到了木头。白天阶段里则分两个步骤:一是激活场上的工坊来锻造卡牌,二是按照任意顺序和组合执行最多三项操作。
-猫咪也可以通过消耗一张手牌里的飞鹰类型的卡牌来为自己添加一次额外的操作次数。咦,什么是飞鹰类型?这是有别于基础三类型的第四个类型,对许多阵营而言,它可以被当成是「任意一个类型」,相当特殊。
+先说猫咪的锻造。卡牌的锻造条件都要求一个阵营的可锻造单位有足够的数量,且位于正确的地点类型。比方说有一张牌要求有两个兔子类型,那对于猫咪而言,就需要在兔子类型的地点内先建造两个工坊,才能锻造该卡牌。这些可锻造单位,一回合只能使用一次。这对猫咪来说,不是一个好兆头,因为锻造卡牌之前,猫咪需要先消耗木头和行动次数来建造建筑物。
-至于加班,它需要你选中一个伐木场,并根据该伐木场所在的地点类型,消耗一张同类型的卡牌来获取一个木材令牌。因为飞鹰卡牌可以被视作任意一个类型,所以也可以用在这里。
+再来说猫咪的行动:战斗、行军、招募、建造建筑物、加班。
-到晚上阶段,猫咪需要补充一张手牌。如果招兵所被建造得够多,你会根据阵营板上的卡牌图标而获取额外的手牌。
+其中战斗没什么好说的,剩下三个都有着猫咪自己的特色。行军是加强的移动,一次行军相当于移动两次,且移动时仍然可以随意决定要移动的士兵数量;招募会在每个招兵所所在的地点放置一个新士兵,不过该操作 每个回合只能执行一次 。
-最后说一下猫咪的被动技能:其他阵营不能在城堡所在的地点内放置任何令牌或者建筑物或者士兵,他们只能将士兵移动到该地点。每当任意数量的猫咪士兵从一个地点中被移除,猫咪可以选择消耗一张匹配该地点类型的卡牌,将这些被移除的士兵放置在城堡所在的地点。如果城堡被移除,它会在该局游戏内完全被移除,拿不回来。
+建造建筑物需要单独拉出来说。一个玩家们经常忘记的猫咪规则是,想要建造建筑物的地点首先得是被猫咪占领的,且该地点需要和木材所在的地点形成一条完全被猫咪占领的路线才行。也就是说,木材必须从猫咪占领的地点,通过一系列也被猫咪占领的地点,才能抵达猫咪打算建造建筑物的已被占领地点。接着玩家需要在阵营板上选择建造哪一个建筑物、查看该建筑物如果被建造了需要消耗多少木材(每个类型的建筑物所需要的木材以及得到的分数都是独立开来的),并消耗这些木材。
+猫咪也可以通过消耗一张手牌里的飞鹰类型的卡牌来为自己添加一次额外的操作次数。咦,什么是飞鹰类型?这是有别于基础三类型的第四个类型,对许多阵营而言,它可以被当成是「任意一个类型」,相当特殊。
-#### 飞鹰王朝
+至于加班,它需要你选中一个伐木场,并根据该伐木场所在的地点类型,消耗一张同类型的卡牌来获取一个木材令牌。因为飞鹰卡牌可以被视作任意一个类型,所以也可以用在这里。
-Eyrie 虽然是鹰巢的意思,但是「鹰巢王朝」总感觉不好听,故使用官方翻译「飞鹰王朝」。
+到晚上阶段,猫咪需要补充一张手牌。如果招兵所被建造得够多,你会根据阵营板上的卡牌图标而获取额外的手牌。
-飞鹰是森林过去的霸主,被猫咪打跑后,希望通过重新占领领地,来恢复自己的尊严。不过他们也是一个强迫症种族,每日的行动必须完全遵守「法令」的顺序,否则民众会陷入混乱、推翻当下的领袖。
+最后说一下猫咪的被动技能:其他阵营不能在城堡所在的地点内放置任何令牌或者建筑物或者士兵,他们只能将士兵移动到该地点。每当任意数量的猫咪士兵从一个地点中被移除,猫咪可以选择消耗一张匹配该地点类型的卡牌,将这些被移除的士兵放置在城堡所在的地点。如果城堡被移除,它会在该局游戏内完全被移除,拿不回来。
-清晨阶段按照顺序分为三个步骤:一、如果没有手牌,则抽一张牌;二、必须将手牌的一张或两张牌添加到法令区中,但只能有一张是飞鹰牌;三、如果地图上没有鸟巢建筑物,则在一个有最少士兵的空地上放置一个鸟巢和三个士兵。
+### 飞鹰王朝
-白天阶段按照顺序分为两个步骤:一、激活鸟巢锻造卡牌;二、必须严格从最左边的列开始,向右依次结算法令。
+Eyrie 虽然是鹰巢的意思,但是「鹰巢王朝」总感觉不好听,故使用官方翻译「飞鹰王朝」。
-不过在说明法令如何运作之前,我们需要先看一眼飞鹰的开局阶段。在游戏开始时,飞鹰玩家需要从四张领袖卡牌中选择一张作为初始领袖放置在阵营板上。每位领袖不仅拥有一个独特的被动技能,决定了两张初始大臣卡牌(两张固定视为飞鹰类型的卡牌)在法令区四个列中的初始位置。选定领袖后,飞鹰需要在地图上猫咪城堡斜对角的那个地点,放置一个鸟巢以及六个士兵。
+飞鹰是森林过去的霸主,被猫咪打跑后,希望通过重新占领领地,来恢复自己的尊严。不过他们也是一个强迫症种族,每日的行动必须完全遵守「法令」的顺序,否则民众会陷入混乱、推翻当下的领袖。
-该阵营最为重要的机制有且只有一个:法令。飞鹰的阵营板上有一个分为四个栏位的法令区,从左到右依次为招募、移动、战斗和建造。在每一个单独的列中,如果有两张或以上的卡牌,玩家可以按任意顺序解决该列里的所有牌,但对于每一张牌,玩家都必须切实执行其所在列对应的操作。
+清晨阶段按照顺序分为三个步骤:一、如果没有手牌,则抽一张牌;二、必须将手牌的一张或两张牌添加到法令区中,但只能有一张是飞鹰牌;三、如果地图上没有鸟巢建筑物,则在一个有最少士兵的空地上放置一个鸟巢和三个士兵。
-招募要求玩家在带有与卡牌类型相符、且已经建有鸟巢的地点上放置一个士兵;移动要求玩家从与卡牌类型相符的地点出发,移动至少一个士兵到其他相邻地点,前提是移动的基础条件可以被满足;战斗要求玩家在带有与卡牌类型相符的地点上,主动发起一场战斗;建造要求玩家在一个被自己占领、卡牌类型相符且当前没有鸟巢的地点上,放置一个新的鸟巢。
+白天阶段按照顺序分为两个步骤:一、激活鸟巢锻造卡牌;二、必须严格从最左边的列开始,向右依次结算法令。
-这一机制是极其死板的。如果在解决法令的过程中,玩家因为版图局势或者自身资源限制,无法完全执行某一张卡牌对应的一项操作,飞鹰就会立即陷入动乱——当天的白天阶段会被立即强制中止。玩家会因为法令区中包含的每一张飞鹰类型的卡牌而失去 1 分,飞鹰也是唯一一个会在游戏中失去分数的阵营。随后,整个法令区除了两张初始的大臣卡牌外,所有的手牌都会被清空弃置。触发动乱的现任领袖必须下台,玩家需要从备选的领袖中挑选一位接任。新领袖的上台会改变初始卡牌所在的列数位置,玩家也必须在接下来的回合里重新构筑整个行动链条。
+不过在说明法令如何运作之前,我们需要先看一眼飞鹰的开局阶段。在游戏开始时,飞鹰玩家需要从四张领袖卡牌中选择一张作为初始领袖放置在阵营板上。每位领袖不仅拥有一个独特的被动技能,决定了两张初始大臣卡牌(两张固定视为飞鹰类型的卡牌)在法令区四个列中的初始位置。选定领袖后,飞鹰需要在地图上猫咪城堡斜对角的那个地点,放置一个鸟巢以及六个士兵。
-如果飞鹰成功且完整地解决了白天的所有法令,便能顺利进入晚上阶段,这也是其核心的得分环节。飞鹰会根据地图上现存的鸟巢总数,直接获取阵营板上对应位置标明的分数。鸟巢铺设得越多,每回合自动获取的分数就越高。计分结束后,飞鹰进行手牌抽取,抽牌的具体数量同样由版图上的鸟巢数量决定。
+该阵营最为重要的机制有且只有一个:法令。飞鹰的阵营板上有一个分为四个栏位的法令区,从左到右依次为招募、移动、战斗和建造。在每一个单独的列中,如果有两张或以上的卡牌,玩家可以按任意顺序解决该列里的所有牌,但对于每一张牌,玩家都必须切实执行其所在列对应的操作。
-最后说一下飞鹰的被动技能。作为森林过去的领主,当一个地点上飞鹰的士兵以及建筑物的数量,和其他阵营的士兵以及建筑物的数量,相同时,默认飞鹰占领该领地。飞鹰也藐视贸易,锻造物品时会忽略列出的分数,而只获得 1 分。
+招募要求玩家在带有与卡牌类型相符、且已经建有鸟巢的地点上放置一个士兵;移动要求玩家从与卡牌类型相符的地点出发,移动至少一个士兵到其他相邻地点,前提是移动的基础条件可以被满足;战斗要求玩家在带有与卡牌类型相符的地点上,主动发起一场战斗;建造要求玩家在一个被自己占领、卡牌类型相符且当前没有鸟巢的地点上,放置一个新的鸟巢。
+这一机制是极其死板的。如果在解决法令的过程中,玩家因为版图局势或者自身资源限制,无法完全执行某一张卡牌对应的一项操作,飞鹰就会立即陷入动乱——当天的白天阶段会被立即强制中止。玩家会因为法令区中包含的每一张飞鹰类型的卡牌而失去 1 分,飞鹰也是唯一一个会在游戏中失去分数的阵营。随后,整个法令区除了两张初始的大臣卡牌外,所有的手牌都会被清空弃置。触发动乱的现任领袖必须下台,玩家需要从备选的领袖中挑选一位接任。新领袖的上台会改变初始卡牌所在的列数位置,玩家也必须在接下来的回合里重新构筑整个行动链条。
-#### 森林联盟
+如果飞鹰成功且完整地解决了白天的所有法令,便能顺利进入晚上阶段,这也是其核心的得分环节。飞鹰会根据地图上现存的鸟巢总数,直接获取阵营板上对应位置标明的分数。鸟巢铺设得越多,每回合自动获取的分数就越高。计分结束后,飞鹰进行手牌抽取,抽牌的具体数量同样由版图上的鸟巢数量决定。
-在猫咪和飞鹰天天打架的时候,森林的老百姓坐不住了……联盟需要努力赢得森林里对现状不满的各种动物的同情,大家联合起来,将女侯爵还是王朝都赶出森林!
+最后说一下飞鹰的被动技能。作为森林过去的领主,当一个地点上飞鹰的士兵以及建筑物的数量,和其他阵营的士兵以及建筑物的数量,相同时,默认飞鹰占领该领地。飞鹰也藐视贸易,锻造物品时会忽略列出的分数,而只获得 1 分。
-森林联盟是一个起步极晚但爆发力极强的阵营。与其他阵营不同,联盟在开局阶段的地图上没有任何实质性的棋子,只有阵营板上的 3 个基地、10 个民意令牌以及 10 个士兵。
+### 森林联盟
-联盟的运作高度依赖一个独立于玩家手牌的特殊卡牌区域——支持者牌堆。支持者牌堆里的卡牌面朝下放置,不计入手牌上限,只有联盟玩家可以查看,且专门用来执行联盟的核心行动。如果联盟在地图上没有建立任何基地,该牌堆的容量上限仅有 5 张,超出部分必须被直接弃置;而一旦地图上存在至少一个联盟基地,支持者牌堆的容量便没有限制。
+在猫咪和飞鹰天天打架的时候,森林的老百姓坐不住了……联盟需要努力赢得森林里对现状不满的各种动物的同情,大家联合起来,将女侯爵还是王朝都赶出森林!
-联盟拥有两个让其他阵营极为头疼的被动技能。首先是民意机制。每当其他玩家移除了地图上的民意令牌,或者将任何士兵移动到一个有民意的地点时,该玩家必须从自己的手牌中强制上交一张与该地点类型相符的卡牌,并将其加入联盟的支持者牌堆。如果该玩家手中没有对应类型的卡牌或者飞鹰卡牌,则必须向联盟玩家展示手牌自证,随后联盟会从公共牌堆顶部抽取一张牌加入支持者牌堆。
+森林联盟是一个起步极晚但爆发力极强的阵营。与其他阵营不同,联盟在开局阶段的地图上没有任何实质性的棋子,只有阵营板上的 3 个基地、10 个民意令牌以及 10 个士兵。
-另一个被动技能是「游击战」。这是整个 Root 游戏中,强度最为可怕的被动技能:在所有战斗中,只要联盟是作为防守方被攻击,那么联盟始终会拿取点数较大的骰子作为自己的命中数,而攻击方只能拿取较小的骰子。这意味着主动攻击联盟很多时候只会被联盟反杀。
+联盟的运作高度依赖一个独立于玩家手牌的特殊卡牌区域——支持者牌堆。支持者牌堆里的卡牌面朝下放置,不计入手牌上限,只有联盟玩家可以查看,且专门用来执行联盟的核心行动。如果联盟在地图上没有建立任何基地,该牌堆的容量上限仅有 5 张,超出部分必须被直接弃置;而一旦地图上存在至少一个联盟基地,支持者牌堆的容量便没有限制。
-既然提到了骰子,我想要再深入讲解一下 Root 骰子的机制。已知每枚骰子有四个面,点数是 0/1/2/3 ,因此投掷结果是由两枚骰子组成的 16 种等概率组合构成的样本空间。在这个样本空间中,取最大值的概率分布是不均匀的。两枚骰子最大值为 0 的组合仅有 $(0,0)$ 这一种,概率为 $1/16$ ;最大值为 $1$ 的组合有 3 种,概率为 $3/16$ ;最大值为 $2$ 的组合有 5 种,概率为 $5/16$ ;而最大值为 3 的组合最多,共有 $7$ 种,概率为 $7/16$ 。
+联盟拥有两个让其他阵营极为头疼的被动技能。首先是民意机制。每当其他玩家移除了地图上的民意令牌,或者将任何士兵移动到一个有民意的地点时,该玩家必须从自己的手牌中强制上交一张与该地点类型相符的卡牌,并将其加入联盟的支持者牌堆。如果该玩家手中没有对应类型的卡牌或者飞鹰卡牌,则必须向联盟玩家展示手牌自证,随后联盟会从公共牌堆顶部抽取一张牌加入支持者牌堆。
-也就是说,掷出 2 点和 3 点的概率加在一起,正好是 $75%$ 。如果计算较大值的数学期望,就会是 2.125,而较小值的数学期望仅为 0.875。在基础规则下,主动进攻方有着绝对的火力优势,然而「游击战」强制反转了这一判定规则。只要森林联盟作为防守方被攻击,从概率论的角度来看,这一反转让攻击方的单次命中期望瞬间从 2.125 骤降直 0.875,而联盟的防守反击期望则从 0.875 飙升至 2.125。
+另一个被动技能是「游击战」。这是整个 Root 游戏中,强度最为可怕的被动技能:在所有战斗中,只要联盟是作为防守方被攻击,那么联盟始终会拿取点数较大的骰子作为自己的命中数,而攻击方只能拿取较小的骰子。这意味着主动攻击联盟很多时候只会被联盟反杀。
-清晨阶段是联盟扩张与爆发的核心时间段,分为「起义」和「散播民意」两步。
+既然提到了骰子,我想要再深入讲解一下 Root 骰子的机制。已知每枚骰子有四个面,点数是 0123 ,因此投掷结果是由两枚骰子组成的 16 种等概率组合构成的样本空间。在这个样本空间中,取最大值的概率分布是不均匀的。两枚骰子最大值为 0 的组合仅有 $(0,0)$ 这一种,概率为 $116$ ;最大值为 $1$ 的组合有 3 种,概率为 $316$ ;最大值为 $2$ 的组合有 5 种,概率为 $516$ ;而最大值为 3 的组合最多,共有 $7$ 种,概率为 $7/16$ 。
-起义是联盟建立基地的唯一方式,玩家需要选择一个已有民意令牌且类型与阵营板上未建基地相符的地点,随后从支持者牌堆中消耗两张匹配该地点类型的卡牌。起义一旦爆发,该地点上的所有敌方棋子,包括士兵、建筑物和各种令牌,将被瞬间全部清空(联盟也会获取摧毁建筑物和令牌所得的分数)。接着,联盟会在该地点放置对应的基地,并根据目前地图上与该基地类型相符的民意令牌总数,放置等量的士兵,最后再将一名士兵放置到阵营板的教官区。
+也就是说,掷出 2 点和 3 点的概率加在一起,正好是 $75%$ 。如果计算较大值的数学期望,就会是 2.125,而较小值的数学期望仅为 0.875。在基础规则下,主动进攻方有着绝对的火力优势,然而「游击战」强制反转了这一判定规则。只要森林联盟作为防守方被攻击,从概率论的角度来看,这一反转让攻击方的单次命中期望瞬间从 2.125 骤降直 0.875,而联盟的防守反击期望则从 0.875 飙升至 2.125。
-执行完起义后,联盟可以进行散播民意来获取分数。玩家必须选择一个与现有民意地点相邻的无民意地点(若地图上完全没有民意,则可任选地点)。根据民意令牌轨道上标明的成本,玩家需要从支持者牌堆中消耗对应数量且与目标地点类型匹配的卡牌,将民意放置上去并立即获得轨道上显示的分数。
+清晨阶段是联盟扩张与爆发的核心时间段,分为「起义」和「散播民意」两步。
-需要注意的是戒严规则:如果目标地点内驻扎着至少三名属于同一敌方阵营的士兵,联盟在传播民意时必须额外多消耗一张匹配的支持者卡牌。
+起义是联盟建立基地的唯一方式,玩家需要选择一个已有民意令牌且类型与阵营板上未建基地相符的地点,随后从支持者牌堆中消耗两张匹配该地点类型的卡牌。起义一旦爆发,该地点上的所有敌方棋子,包括士兵、建筑物和各种令牌,将被瞬间全部清空(联盟也会获取摧毁建筑物和令牌所得的分数)。接着,联盟会在该地点放置对应的基地,并根据目前地图上与该基地类型相符的民意令牌总数,放置等量的士兵,最后再将一名士兵放置到阵营板的教官区。
-白天阶段,联盟可以进行手牌和支持者牌堆的资源转化。联盟可以执行动员,将手中的任意卡牌放入支持者牌堆中。同时也可以执行训练,通过消耗手中一张与地图上已有联盟基地类型相匹配的卡牌,将一名士兵放置到教官区。必须要注意的是,联盟只有 10 个士兵,放置多少个到教官区、保留多少个士兵在地图上,是游玩联盟阵营时必须要考虑到的问题。此外,联盟的卡牌锻造也在白天阶段进行,与其他阵营依赖特定的建筑物不同,联盟是通过激活地图上对应类型的民意令牌来完成锻造的。
+执行完起义后,联盟可以进行散播民意来获取分数。玩家必须选择一个与现有民意地点相邻的无民意地点(若地图上完全没有民意,则可任选地点)。根据民意令牌轨道上标明的成本,玩家需要从支持者牌堆中消耗对应数量且与目标地点类型匹配的卡牌,将民意放置上去并立即获得轨道上显示的分数。
-夜晚阶段则是联盟进行常规版图互动的时刻。联盟可以根据阵营板上现有的教官数量,执行同等次数的军事行动。军事行动包含四种选项:移动士兵、发起战斗、在拥有基地的地点招募一名士兵,或是执行组织行动。组织行动允许联盟从一个没有民意的地点移除一名自己的士兵,并直接在那里放置一个民意以此获取分数,这是一种不消耗支持者卡牌来传播民意的方式。
+需要注意的是戒严规则:如果目标地点内驻扎着至少三名属于同一敌方阵营的士兵,联盟在传播民意时必须额外多消耗一张匹配的支持者卡牌。
-在所有军事行动结束后,联盟进行常规的抽取手牌步骤,并将超出五张上限的多余手牌弃置。每次基地被敌人摧毁时,联盟必须丢弃支持者牌堆中所有与该基地同类型的卡牌,并损失一半的教官(向上约)。
+白天阶段,联盟可以进行手牌和支持者牌堆的资源转化。联盟可以执行动员,将手中的任意卡牌放入支持者牌堆中。同时也可以执行训练,通过消耗手中一张与地图上已有联盟基地类型相匹配的卡牌,将一名士兵放置到教官区。必须要注意的是,联盟只有 10 个士兵,放置多少个到教官区、保留多少个士兵在地图上,是游玩联盟阵营时必须要考虑到的问题。此外,联盟的卡牌锻造也在白天阶段进行,与其他阵营依赖特定的建筑物不同,联盟是通过激活地图上对应类型的民意令牌来完成锻造的。
+夜晚阶段则是联盟进行常规版图互动的时刻。联盟可以根据阵营板上现有的教官数量,执行同等次数的军事行动。军事行动包含四种选项:移动士兵、发起战斗、在拥有基地的地点招募一名士兵,或是执行组织行动。组织行动允许联盟从一个没有民意的地点移除一名自己的士兵,并直接在那里放置一个民意以此获取分数,这是一种不消耗支持者卡牌来传播民意的方式。
-#### 神秘游侠
+在所有军事行动结束后,联盟进行常规的抽取手牌步骤,并将超出五张上限的多余手牌弃置。每次基地被敌人摧毁时,联盟必须丢弃支持者牌堆中所有与该基地同类型的卡牌,并损失一半的教官(向上约)。
-在猫咪、飞鹰和联盟互相牵制的期间,森林里总有一些流浪者,想要趁机提升自己在森林中的声望——这当然也包括了恶名。与那三个势力截然不同的是,游侠在地图上只有一个棋子,那就是游侠自己。游侠并不属于士兵,因此永远无法占领任何地点,也无法阻止其他阵营占领地点,且无法被移除。但这种孤立也赋予了游侠移动时可以完全无视出发地和目的地的占领权限制。
+### 神秘游侠
-游侠的行动与生存完全依赖于他的物品系统。无论是移动、战斗、探索废墟获取新装备,还是完成任务与援助他人,都需要消耗背包或物品栏中对应的、未损坏的物品。
+在猫咪、飞鹰和联盟互相牵制的期间,森林里总有一些流浪者,想要趁机提升自己在森林中的声望——这当然也包括了恶名。与那三个势力截然不同的是,游侠在地图上只有一个棋子,那就是游侠自己。游侠并不属于士兵,因此永远无法占领任何地点,也无法阻止其他阵营占领地点,且无法被移除。但这种孤立也赋予了游侠移动时可以完全无视出发地和目的地的占领权限制。
-这里需要提到 Root 的物品系统。物品可以通过锻造特定的卡牌来获取,对于不会用到物品的阵营来说,锻造出来的物品只会从公共物品区取出一个、放到一边。当公共物品区里没有物品了,那么制造物品的卡牌便无法被锻造,自然也不能用来锻造得分。
+游侠的行动与生存完全依赖于他的物品系统。无论是移动、战斗、探索废墟获取新装备,还是完成任务与援助他人,都需要消耗背包或物品栏中对应的、未损坏的物品。
-而对于会使用到物品的阵营来说,物品还可以通过地图上的废墟来获取。游侠能够探索这些废墟、获取废墟内的物品,并且将废墟移除、变成一个空的建筑物格子。如果本局游戏里没有能够移除废墟格子的阵营,那么这些废墟格子会一直占着空闲的建筑物格子。
+这里需要提到 Root 的物品系统。物品可以通过锻造特定的卡牌来获取,对于不会用到物品的阵营来说,锻造出来的物品只会从公共物品区取出一个、放到一边。当公共物品区里没有物品了,那么制造物品的卡牌便无法被锻造,自然也不能用来锻造得分。
-对游侠来说,物品具有两个通用的属性:是否被使用,以及是否损坏。这两个属性是完全独立的。在遭遇战中,由于游侠没有士兵可供阵亡,他所拥有的未损坏物品总量便等同于他的生命值上限,而未损坏的物品「剑」的总数,等同于能够掷出的最大命中数,无论是否被使用。每当游侠受到一点伤害,他就必须将一件未损坏的物品移入损坏区。如果身上没有任何完好的物品,游侠则忽略所有剩余的伤害。
+而对于会使用到物品的阵营来说,物品还可以通过地图上的废墟来获取。游侠能够探索这些废墟、获取废墟内的物品,并且将废墟移除、变成一个空的建筑物格子。如果本局游戏里没有能够移除废墟格子的阵营,那么这些废墟格子会一直占着空闲的建筑物格子。
-处理与其他阵营的社交关系是游侠核心的战略维度。通过消耗物品并向其他玩家支付对应地点类型的卡牌,游侠可以执行「援助」行动。这不仅能从其他玩家那里换取他们锻造好的物品,还能逐步提升双方的关系轨道。当关系达到同盟状态时,游侠便赢得了该阵营的信任,不仅每次援助都能获得额外分数,还能在白天行动时直接裹挟盟友的士兵一同移动甚至发起进攻。
+对游侠来说,物品具有两个通用的属性:是否被使用,以及是否损坏。这两个属性是完全独立的。在遭遇战中,由于游侠没有士兵可供阵亡,他所拥有的未损坏物品总量便等同于他的生命值上限,而未损坏的物品「剑」的总数,等同于能够掷出的最大命中数,无论是否被使用。每当游侠受到一点伤害,他就必须将一件未损坏的物品移入损坏区。如果身上没有任何完好的物品,游侠则忽略所有剩余的伤害。
-反之,如果游侠在游戏中移除了任何一个非敌对阵营的士兵,双方的关系会立刻跌入敌对状态。虽然游侠进入有敌对士兵驻扎的地点时需要额外消耗用于移动的物品,但这开启了另一条得分途径:在游侠自己的回合内,每在战斗中移除一个敌对阵营的部件(无论士兵、建筑还是令牌),游侠都能获得 1 分。这种得分机制太可怕,以至于官方需要在比赛中特别削弱游侠,才能平衡游戏。
+处理与其他阵营的社交关系是游侠核心的战略维度。通过消耗物品并向其他玩家支付对应地点类型的卡牌,游侠可以执行「援助」行动。这不仅能从其他玩家那里换取他们锻造好的物品,还能逐步提升双方的关系轨道。当关系达到同盟状态时,游侠便赢得了该阵营的信任,不仅每次援助都能获得额外分数,还能在白天行动时直接裹挟盟友的士兵一同移动甚至发起进攻。
-游侠的开局阶段中,玩家需要选择一个游侠角色。不同的游侠角色开局携带的物品不同,且技能也都不一样。接着玩家需要将游侠米宝放置在森林里,注意,并不是在地图的格子内,而是其他阵营都无法进入的「森林」里。然后玩家会获取一个任务牌堆,抽取 3 张、面朝上放在阵营板的附近。任务需要游侠到达任务牌上类型相符的地点,并使用任务所需要的未使用物品,以获取奖励:得分或者抽卡。随着同类型的任务做得越来越多,得分以及抽卡的数量也会越来越多。不过在我看来,靠任务得分并不是一个很棒的选择。
+反之,如果游侠在游戏中移除了任何一个非敌对阵营的士兵,双方的关系会立刻跌入敌对状态。虽然游侠进入有敌对士兵驻扎的地点时需要额外消耗用于移动的物品,但这开启了另一条得分途径:在游侠自己的回合内,每在战斗中移除一个敌对阵营的部件(无论士兵、建筑还是令牌),游侠都能获得 1 分。这种得分机制太可怕,以至于官方需要在比赛中特别削弱游侠,才能平衡游戏。
-清晨阶段,3 个已使用的物品会变成未使用状态,且每有 1 个物品「水壶」,还可以多刷新 2 个物品。接着游侠可以无消耗地移动到相邻的地点或者森林中,无论该地点是否被敌对阵营占领。
+游侠的开局阶段中,玩家需要选择一个游侠角色。不同的游侠角色开局携带的物品不同,且技能也都不一样。接着玩家需要将游侠米宝放置在森林里,注意,并不是在地图的格子内,而是其他阵营都无法进入的「森林」里。然后玩家会获取一个任务牌堆,抽取 3 张、面朝上放在阵营板的附近。任务需要游侠到达任务牌上类型相符的地点,并使用任务所需要的未使用物品,以获取奖励:得分或者抽卡。随着同类型的任务做得越来越多,得分以及抽卡的数量也会越来越多。不过在我看来,靠任务得分并不是一个很棒的选择。
-早上阶段,游侠可以按照任意顺序来使用自己的物品:
+清晨阶段,3 个已使用的物品会变成未使用状态,且每有 1 个物品「水壶」,还可以多刷新 2 个物品。接着游侠可以无消耗地移动到相邻的地点或者森林中,无论该地点是否被敌对阵营占领。
-* 移动:使用 1 个物品「靴子」;
-* 战斗:使用 1 个物品「剑」;
-* 探索:使用 1 个物品「火把」,探索后获得 1 分;
-* 援助:使用任意 1 个物品。就算是敌对阵营,游侠也可以援助,但是关系不会变好;
-* 任务:使用任务牌上所要求的物品;
-* 打击:使用 1 个物品「弩」,直接移动当前所在地点的士兵或者建筑物或者令牌。打击并不算战斗,但是算移除士兵或者令牌,因此不会触发游侠杀害士兵得分的机制,但是会触发联盟民意被移除的机制;
-* 制作:选中一张手牌,在类型相符的地点上使用 1 个物品「锤子」来锻造它。因为游侠只能一次出现在一个地点上,意味着所有要求多个地点类型的卡牌都无法被锻造;
-* 修复:使用 1 个物品「锤子」,将一个已损坏的物品变成未损坏的状态。不过如果该物品也出于已使用的状态,那么修复并不会让它也变成未使用的状态;
-* 特殊行动:游侠角色的技能不同,在进行的特殊行动也不同,不过使用的都是物品「火把」。例如「猎人」角色就可以一次性修复 3 个物品,代价是白天阶段会被立即结束。
+早上阶段,游侠可以按照任意顺序来使用自己的物品:
-晚上阶段中,如果游侠处于森林,那么所有已使用或者已损坏的物品都会变成未使用或者未损坏的物品,相当变态。接着抽取卡牌,每有 1 个物品「金币」都会额外抽取 1 张。若手牌多于 5 张,则丢弃手牌直到手牌数为 5 张。最后,游侠要检查物品的容量。如果未损坏和已损坏的物品总数超过物品上限(默认 6,每有 1 个物品「背包」便多出 2),那就需要丢弃物品,直到物品数量等于物品上限。这里的「丢弃」并不代表着将物品放回公共物品区,被丢弃的物品不会再回来。
+* 移动:使用 1 个物品「靴子」;
+* 战斗:使用 1 个物品「剑」;
+* 探索:使用 1 个物品「火把」,探索后获得 1 分;
+* 援助:使用任意 1 个物品。就算是敌对阵营,游侠也可以援助,但是关系不会变好;
+* 任务:使用任务牌上所要求的物品;
+* 打击:使用 1 个物品「弩」,直接移动当前所在地点的士兵或者建筑物或者令牌。打击并不算战斗,但是算移除士兵或者令牌,因此不会触发游侠杀害士兵得分的机制,但是会触发联盟民意被移除的机制;
+* 制作:选中一张手牌,在类型相符的地点上使用 1 个物品「锤子」来锻造它。因为游侠只能一次出现在一个地点上,意味着所有要求多个地点类型的卡牌都无法被锻造;
+* 修复:使用 1 个物品「锤子」,将一个已损坏的物品变成未损坏的状态。不过如果该物品也出于已使用的状态,那么修复并不会让它也变成未使用的状态;
+* 特殊行动:游侠角色的技能不同,在进行的特殊行动也不同,不过使用的都是物品「火把」。例如「猎人」角色就可以一次性修复 3 个物品,代价是白天阶段会被立即结束。
+晚上阶段中,如果游侠处于森林,那么所有已使用或者已损坏的物品都会变成未使用或者未损坏的物品,相当变态。接着抽取卡牌,每有 1 个物品「金币」都会额外抽取 1 张。若手牌多于 5 张,则丢弃手牌直到手牌数为 5 张。最后,游侠要检查物品的容量。如果未损坏和已损坏的物品总数超过物品上限(默认 6,每有 1 个物品「背包」便多出 2),那就需要丢弃物品,直到物品数量等于物品上限。这里的「丢弃」并不代表着将物品放回公共物品区,被丢弃的物品不会再回来。
### 结语
-本篇文章仅供参考。在实际的游玩时,我建议还是阅读官方提供的规则书,或者说 [这个网站]。为了减少篇幅,我没有细讲许多内容,只是将游戏的大致规则讲了一遍。
+本篇文章仅供参考。在实际的游玩时,我建议还是阅读官方提供的规则书,或者说 这个网站。为了减少篇幅,我没有细讲许多内容,只是将游戏的大致规则讲了一遍。
-Root 除了实体桌游外,还有电子版本。你可以从 Steam 上购买下载,也可以在 Google Play 或者 App Store 中购买下载。购买游戏本体是不共通的,但是购买 DLC 是可以通过 Dire Wolf 账户实现共通。
+Root 除了实体桌游外,还有电子版本。你可以从 Steam 上购买下载,也可以在 Google Play 或者 App Store 中购买下载。购买游戏本体是不共通的,但是购买 DLC 是可以通过 Dire Wolf 账户实现共通。
-又因为 Root 既有实体桌游,也有电子版本,我采取的讲述方式是同时基于了它们二者:你会发现我尽量不去介绍桌游特有的实体物件,也没有无视掉电子版本中程序已经帮助玩家处理好的地方,而是围绕着游戏机制本身进行介绍。
+又因为 Root 既有实体桌游,也有电子版本,我采取的讲述方式是同时基于了它们二者:你会发现我尽量不去介绍桌游特有的实体物件,也没有无视掉电子版本中程序已经帮助玩家处理好的地方,而是围绕着游戏机制本身进行介绍。
-未来我考虑继续介绍 Root 的 DLC 内的阵营,或者说阵营的进阶玩法。
+未来我考虑继续介绍 Root 的 DLC 内的阵营,或者说阵营的进阶玩法。
+## 链接
-=> http://root.livingrules.io/ 这个网站
+=> http://root.livingrules.io/ 这个网站
M posts/用笑脸玩扫雷.gmi => posts/用笑脸玩扫雷.gmi +20 -29
@@ 1,55 1,46 @@
# 用笑脸玩扫雷
-:CAPTURED: [2026-02-13 Fri 19:59]
+想必大家都有玩过「扫雷」这款游戏,尤其是经历过 Windows 早年版本时代的人们,在计算机的开始菜单里找了半天,好不容易找到「游戏」文件夹,里面赫然躺着一个应用程序。双击打开,看到一个黄黄的微笑,心想这游戏肯定很简单吧!然后便被炸弹炸死。
-想必大家都有玩过「扫雷」这款游戏,尤其是经历过 Windows 早年版本时代的人们,在计算机的开始菜单里找了半天,好不容易找到「游戏」文件夹,里面赫然躺着一个应用程序。双击打开,看到一个黄黄的微笑,心想这游戏肯定很简单吧!然后便被炸弹炸死。
+好吧,这游戏到底该怎么玩呢?首先,你可以点开一个网格,看看下面有没有雷,就像是现实生活中挖雷一般。你可以右键给一个网格插上旗子,标记该网格,假设它底下有雷。
-#+MORE
+那就点开一个网格看看吧!
-[./start.png]
-好吧,这游戏到底该怎么玩呢?首先,你可以点开一个网格,看看下面有没有雷,就像是现实生活中挖雷一般。你可以右键给一个网格插上旗子,标记该网格,假设它底下有雷。
-那就点开一个网格看看吧!
+看来我们挖出了一个大区域。其中没有数字的网格,代表它的周围(即相邻的八个格子)没有雷;有数字的网格,上面的数字代表周围存在多少个雷,例如 1 就是相邻的格子里有 1 个雷、2 就是相邻的格子里有 2 个雷……
-[./first_click.png]
+知道了这一条规则后,我们可以快速锁定这些 1 们:因为它们的周围只有 1 个格子,也只有 1 个雷,那么雷到底在哪里,很显而易见了吧~
-看来我们挖出了一个大区域。其中没有数字的网格,代表它的周围(即相邻的八个格子)没有雷;有数字的网格,上面的数字代表周围存在多少个雷,例如 1 就是相邻的格子里有 1 个雷、2 就是相邻的格子里有 2 个雷……
-知道了这一条规则后,我们可以快速锁定这些 1 们:因为它们的周围只有 1 个格子,也只有 1 个雷,那么雷到底在哪里,很显而易见了吧~
-[./eight_ones.png]
+给这些定有雷的格子插上旗后,我们可以进一步推测出,旁边的 1 的雷已经被找到了,那么它们的周围就不可能再有其他雷——全部挖开!
-给这些定有雷的格子插上旗后,我们可以进一步推测出,旁边的 1 的雷已经被找到了,那么它们的周围就不可能再有其他雷——全部挖开!
+持续做下去后,很快你便会发现,已经没有可以用这种推理方法挖开或者插旗的格子了。当然,这不意味着扫雷无法再继续进行下去,只是我们还没有明白该游戏的本质。
-持续做下去后,很快你便会发现,已经没有可以用这种推理方法挖开或者插旗的格子了。当然,这不意味着扫雷无法再继续进行下去,只是我们还没有明白该游戏的本质。
+扫雷的核心逻辑在于「公共区域的控制权」。什么是公共区域?当两个数字相邻时,它们周围的一圈格子在中间部分一定是重叠的。除了这片公共区域,它们又各自拥有属于自己的一小块独占区域。
-扫雷的核心逻辑在于「公共区域的控制权」。什么是公共区域?当两个数字相邻时,它们周围的一圈格子在中间部分一定是重叠的。除了这片公共区域,它们又各自拥有属于自己的一小块独占区域。
+假设我们决定观察这两个相邻的数字:M 和 N。M 周围有 M 个雷,N 周围也有 N 个雷,它们中间夹着的几个格子是它们共同拥有的。无论这些公共格子通过什么方式排列雷,它们对 M 和 N 的贡献是一样的。如果 M 是 1,N 也是 1,意味着 M 需要在它的视野里找到 1 颗雷,N 也需要找到 1 颗雷——因为 M 通过公共区域得到了满足,那么 N 作为邻居,自然也得到了满足。如果此时 N 还有额外的独占区域格子,那么格子必然不能有雷,否则 N 周围的雷数就会超标。
-假设我们决定观察这两个相邻的数字:M 和 N。M 周围有 M 个雷,N 周围也有 N 个雷,它们中间夹着的几个格子是它们共同拥有的。无论这些公共格子通过什么方式排列雷,它们对 M 和 N 的贡献是一样的。如果 M 是 1,N 也是 1,意味着 M 需要在它的视野里找到 1 颗雷,N 也需要找到 1 颗雷——因为 M 通过公共区域得到了满足,那么 N 作为邻居,自然也得到了满足。如果此时 N 还有额外的独占区域格子,那么格子必然不能有雷,否则 N 周围的雷数就会超标。
+明白了这些后,恭喜你,你理解了扫雷游戏里的「1-1」定式!
-明白了这些后,恭喜你,你理解了扫雷游戏里的「1-1」定式!
+接着我们用这个逻辑去理解「1-2」定式。想象这么一个场景,M 是 1,N 是 2。这意味着公共区域内最多只能有 1 颗雷,绝对不能再多。既然最多只能有 1 颗雷,那么 N 的最后那颗雷哪里来?答案是在 N 的独占区域内。也就是说,我们可以通过减法公式 N - M = 1,来得出答案 1 颗雷必然存在于大数字的独占区域内。
-接着我们用这个逻辑去理解「1-2」定式。想象这么一个场景,M 是 1,N 是 2。这意味着公共区域内最多只能有 1 颗雷,绝对不能再多。既然最多只能有 1 颗雷,那么 N 的最后那颗雷哪里来?答案是在 N 的独占区域内。也就是说,我们可以通过减法公式 N - M = 1,来得出答案 1 颗雷必然存在于大数字的独占区域内。
+再来看「1-2-1」定式。我们这里使用 M 1、N 2、O = 1 来代表这个场景。假设我们把雷放在 N 的正下方,这颗雷会同时被 M、N、O 看到,且同时满足 M 和 O 的条件。可是,中间的 N 还差 1 颗雷。但这颗雷没有地方放了,因为如果再在任何地方放雷,左右两边的 1 就会变成 2,也就违背了已知条件。所以,结论只有一个:中间那个公共格子绝对不能有雷。既然中间不能有雷,为了满足中间的 2,雷只能被迫分布在两个 1 的下方。也就是说,「1-2-1」是一个硬性定式,只要看到了就可以断定两个 1 下面有雷,而 2 的下面没有。
-再来看「1-2-1」定式。我们这里使用 M = 1、N = 2、O = 1 来代表这个场景。假设我们把雷放在 N 的正下方,这颗雷会同时被 M、N、O 看到,且同时满足 M 和 O 的条件。可是,中间的 N 还差 1 颗雷。但这颗雷没有地方放了,因为如果再在任何地方放雷,左右两边的 1 就会变成 2,也就违背了已知条件。所以,结论只有一个:中间那个公共格子绝对不能有雷。既然中间不能有雷,为了满足中间的 2,雷只能被迫分布在两个 1 的下方。也就是说,「1-2-1」是一个硬性定式,只要看到了就可以断定两个 1 下面有雷,而 2 的下面没有。
-[./one-two-one.png]
-如果将两个「1-2」叠加起来,我们能得到「1-2-2-1」定式。左边的「1-2」结构意味着,为了补足 2 的雷数,最左边的雷必须在 2 的独占区域。同理,右边的「2-1」结构意味着最右边的雷也必须在 2 的独占区域。这样一来,两个 2 外侧的雷都确定了。现在只需要找到公共区域的雷。由于它们原本都是 2,现在各减去确定的 1 颗,剩下的需求便变成了「1-1」的局面。
+如果将两个「1-2」叠加起来,我们能得到「1-2-2-1」定式。左边的「1-2」结构意味着,为了补足 2 的雷数,最左边的雷必须在 2 的独占区域。同理,右边的「2-1」结构意味着最右边的雷也必须在 2 的独占区域。这样一来,两个 2 外侧的雷都确定了。现在只需要找到公共区域的雷。由于它们原本都是 2,现在各减去确定的 1 颗,剩下的需求便变成了「1-1」的局面。
-根据前面提到的「1-1」逻辑,中间往往是安全的,或者雷的分布是对称的。结果便是,两头的 1 下面有雷,中间的两个 2 下面往往可以挖开。不过该定式需要取决于雷的具体排列,不过逻辑核心依然是先确定外侧的必然雷。
+根据前面提到的「1-1」逻辑,中间往往是安全的,或者雷的分布是对称的。结果便是,两头的 1 下面有雷,中间的两个 2 下面往往可以挖开。不过该定式需要取决于雷的具体排列,不过逻辑核心依然是先确定外侧的必然雷。
-其实,这些定式本质上都是数个「1-1」或者「1-2」组成的,只要理解底层逻辑,都可以通过这些减法公式来判断雷的位置。但是呢,在实际的中盘博弈中,数字周围通常已经插上了旗帜。如果不扣除这些已知的雷,直接套用减法公式,新手容易将实质上的「1-2」误判为「2-2」或者「3-3」等对称局面,从而得出完全相反的安全结论并导致踩雷。
+其实,这些定式本质上都是数个「1-1」或者「1-2」组成的,只要理解底层逻辑,都可以通过这些减法公式来判断雷的位置。但是呢,在实际的中盘博弈中,数字周围通常已经插上了旗帜。如果不扣除这些已知的雷,直接套用减法公式,新手容易将实质上的「1-2」误判为「2-2」或者「3-3」等对称局面,从而得出完全相反的安全结论并导致踩雷。
-过去我为作业写过 [一个简单的扫雷 AI]。因为对该游戏的不熟悉,代码里并没有赋予 AI 处理任何需要综合判断的局面的能力。这对我们而言也是同样的,如果只是随便将定式套在数字上,而没有考虑到更为综合的情况的话,得到的可能就是一个爆炸的雷,和一个死掉的小黄脸了。
+过去我为作业写过 一个简单的扫雷 AI。因为对该游戏的不熟悉,代码里并没有赋予 AI 处理任何需要综合判断的局面的能力。这对我们而言也是同样的,如果只是随便将定式套在数字上,而没有考虑到更为综合的情况的话,得到的可能就是一个爆炸的雷,和一个死掉的小黄脸了。
-该文章仅讲述扫雷游戏的入门玩法,参考 [该文章],想要更多了解的也请阅读该文章。
+该文章仅讲述扫雷游戏的入门玩法,参考 该文章,想要更多了解的也请阅读该文章。
+## 链接
-=> ./start.png ./start.png
-=> ./first_click.png ./first_click.png
-=> ./eight_ones.png ./eight_ones.png
-=> ./one-two-one.png ./one-two-one.png
-=> https://github.com/Cytrogen/CS50AI_2023/blob/main/minesweeper/minesweeper.py 一个简单的扫雷 AI
-=> https://zhuanlan.zhihu.com/p/27550382 该文章
+=> https://github.com/Cytrogen/CS50AI_2023/blob/main/minesweeper/minesweeper.py 一个简单的扫雷 AI
+=> https://zhuanlan.zhihu.com/p/27550382 该文章
M posts/读大闸蟹.gmi => posts/读大闸蟹.gmi +47 -51
@@ 1,99 1,95 @@
# 读《大闸蟹》
-[2026-02-23 Mon 17:34]
+这是陈昌平在零几年写的一篇短篇小说。
-这是陈昌平在零几年写的一篇短篇小说。
+这篇小说整体来说,带有许多影射文革时代的内容。
-#+MORE
+故事开始,主角刘爱国从苏州回到辽北,带来了三只阳澄湖的大闸蟹。它们丰腴饱满,以至于刘爱国描述它们为「脑满肠肥的南方大地主」。
-这篇小说整体来说,带有许多影射文革时代的内容。
+为什么是这样的比喻?这些大闸蟹来自于南方不假,但为什么要描述为「肥地主」呢?这便是这篇小说的一个特色,它采取了主人公刘爱国的视角,在生活的方方面面透露出经历过文革时代的人们如何看待这些地方。将「肥硕的东西」下意识想成是「肥地主」便是这样。实际上,历史上的地主能吃成「脑满肠肥」的并不多,会将「地主」和「脑满肠肥」绑定在一起的,通常是政治宣传。
-故事开始,主角刘爱国从苏州回到辽北,带来了三只阳澄湖的大闸蟹。它们丰腴饱满,以至于刘爱国描述它们为「脑满肠肥的南方大地主」。
+除开中文课上教授提到的「文革」,我个人认为这篇小说里,出现的「地域」也是个重点。刘爱国看到蟹壳上印着激光防伪的标志,和经纪公司的信息,心想南方人有着出色的商品意识。
-为什么是这样的比喻?这些大闸蟹来自于南方不假,但为什么要描述为「肥地主」呢?这便是这篇小说的一个特色,它采取了主人公刘爱国的视角,在生活的方方面面透露出经历过文革时代的人们如何看待这些地方。将「肥硕的东西」下意识想成是「肥地主」便是这样。实际上,历史上的地主能吃成「脑满肠肥」的并不多,会将「地主」和「脑满肠肥」绑定在一起的,通常是政治宣传。
+数十年前,我经常会接收到的一个信息便是中国的南北之争,例如一些文章说南方人喝茶谈生意,所以南方人更容易出大老板,而北方人喝酒吹牛皮,所以北方人更容易出败家子等等——这样的观点现在听来自然是蠢到家了,不过在中国开始在南方建设经济区,以及北方下岗潮的引发,或许当时也会有人认为是这样吧。总之,「地域黑」永远是不可取的。
-除开中文课上教授提到的「文革」,我个人认为这篇小说里,出现的「地域」也是个重点。刘爱国看到蟹壳上印着激光防伪的标志,和经纪公司的信息,心想南方人有着出色的商品意识。
+刘爱国担心这些大闸蟹是假货,于是拨号上网查阳澄湖大闸蟹的特征,并一一验证,发觉自己确实买的是真货。此处有意思的在于刘爱国的用词,他先是用了「验明正身」这个成语,接着称呼这些大闸蟹「根红苗正」。
-数十年前,我经常会接收到的一个信息便是中国的南北之争,例如一些文章说南方人喝茶谈生意,所以南方人更容易出大老板,而北方人喝酒吹牛皮,所以北方人更容易出败家子等等——这样的观点现在听来自然是蠢到家了,不过在中国开始在南方建设经济区,以及北方下岗潮的引发,或许当时也会有人认为是这样吧。总之,「地域黑」永远是不可取的。
+「验明正身」指的是,查验死刑犯是否为其本人,毕竟执行死刑前可不能弄错人了。验证大闸蟹是否是阳澄湖的真货,有必要使用对死刑犯用的词儿吗?
-刘爱国担心这些大闸蟹是假货,于是拨号上网查阳澄湖大闸蟹的特征,并一一验证,发觉自己确实买的是真货。此处有意思的在于刘爱国的用词,他先是用了「验明正身」这个成语,接着称呼这些大闸蟹「根红苗正」。
+再就是「根红苗正」。这个成语很简单,在文革时期意味着家庭出身好。那什么是家庭出身好的,那自然便是「红色的根」,也就是父母亲也是中国共产党的人了。所以这个成语也特指「中国共产党」。
-「验明正身」指的是,查验死刑犯是否为其本人,毕竟执行死刑前可不能弄错人了。验证大闸蟹是否是阳澄湖的真货,有必要使用对死刑犯用的词儿吗?
+刘爱国形容个大闸蟹,怎么口里蹦出来这么多这样的词儿?这是因为他是出生在文革时代的人,就连用词都受了那个时代的影响。
-再就是「根红苗正」。这个成语很简单,在文革时期意味着家庭出身好。那什么是家庭出身好的,那自然便是「红色的根」,也就是父母亲也是中国共产党的人了。所以这个成语也特指「中国共产党」。
+下一幕中,刘爱国给儿子打电话。小说先是特意提到儿子在省重点中学,还是市实验中学里住校上学,接着又是刻意说刘爱国打电话时,是在「向儿子报到」。
-刘爱国形容个大闸蟹,怎么口里蹦出来这么多这样的词儿?这是因为他是出生在文革时代的人,就连用词都受了那个时代的影响。
-
-下一幕中,刘爱国给儿子打电话。小说先是特意提到儿子在省重点中学,还是市实验中学里住校上学,接着又是刻意说刘爱国打电话时,是在「向儿子报到」。
-
-> 爸爸回来啦。爱国向儿子报到。
+> 爸爸回来啦。爱国向儿子报到。
>
-> 嗯。儿子的声音像领导一样稳重和漠然。
+> 嗯。儿子的声音像领导一样稳重和漠然。
>
-> 周末回家有好东西吃了。爱国抛出了主题。
+> 周末回家有好东西吃了。爱国抛出了主题。
>
-> 什么东西?儿子声音一下子升高了。
+> 什么东西?儿子声音一下子升高了。
>
-> 你猜。爱国说。
+> 你猜。爱国说。
>
-> 嗯——炸鸡翅。这是儿子喜欢吃的东西。
+> 嗯——炸鸡翅。这是儿子喜欢吃的东西。
>
-> 不是。
+> 不是。
>
-> 是……螃蟹。这是儿子更喜欢吃的东西。
+> 是……螃蟹。这是儿子更喜欢吃的东西。
>
-> 爱国笑了。儿子马上明白了,大声问,是赤甲红还是梭子?馋儿子最喜欢吃的就是蟹子里的赤甲红了。
+> 爱国笑了。儿子马上明白了,大声问,是赤甲红还是梭子?馋儿子最喜欢吃的就是蟹子里的赤甲红了。
>
-> 都不是。爱国笑吟吟地回答,顿了一下,又一字一句地说,这可不是一般的螃蟹啊,这是阳澄湖的大、闸、蟹!
+> 都不是。爱国笑吟吟地回答,顿了一下,又一字一句地说,这可不是一般的螃蟹啊,这是阳澄湖的大、闸、蟹!
-陈昌平用了短短一个对话,便能让读者快速搞明白刘爱国和儿子之间的关系到底是什么样的。刘爱国又是要向儿子报到,又是说儿子的声音像个领导。而儿子起初的声音很是冷淡,好像并不关心父亲,直到父亲提到了好吃的东西,态度才变好。也就是说,刘爱国在家庭里,并没有所谓「父亲的尊严」,除非能向儿子提供好吃的。
+陈昌平用了短短一个对话,便能让读者快速搞明白刘爱国和儿子之间的关系到底是什么样的。刘爱国又是要向儿子报到,又是说儿子的声音像个领导。而儿子起初的声音很是冷淡,好像并不关心父亲,直到父亲提到了好吃的东西,态度才变好。也就是说,刘爱国在家庭里,并没有所谓「父亲的尊严」,除非能向儿子提供好吃的。
-之后儿子问了刘爱国什么是阳澄湖大闸蟹。刘爱国的脑海里出现了这样的思考流程:阳澄湖是著名的沙家浜,是阿庆嫂智斗的地方,但儿子不懂这些。如果用儿子懂的语言来说,赤甲红是桑塔纳,而大闸蟹是奔驰。
+之后儿子问了刘爱国什么是阳澄湖大闸蟹。刘爱国的脑海里出现了这样的思考流程:阳澄湖是著名的沙家浜,是阿庆嫂智斗的地方,但儿子不懂这些。如果用儿子懂的语言来说,赤甲红是桑塔纳,而大闸蟹是奔驰。
-《沙家浜》是文革时期相当有名的八大样板戏之一。我没有看过样板戏,所以不评价了。不过在讨论这篇小说之前,中文课有个异步线上讨论,是和延安文艺座谈会有关的。那次讲话要求文艺工作者放下身态,走到底层群众中,用群众看得懂的形式创作。许多同学提到这个方案相当成功,不仅快速团结了底层群众,也影响到了后来中国文学创作的底色。
+《沙家浜》是文革时期相当有名的八大样板戏之一。我没有看过样板戏,所以不评价了。不过在讨论这篇小说之前,中文课有个异步线上讨论,是和延安文艺座谈会有关的。那次讲话要求文艺工作者放下身态,走到底层群众中,用群众看得懂的形式创作。许多同学提到这个方案相当成功,不仅快速团结了底层群众,也影响到了后来中国文学创作的底色。
-刘爱国的这个思考流程有这些值得思考的点:一、在他的认知图谱中,地理是被样板戏定义的;二、使用汽车品牌来划分螃蟹种类。不论是桑塔纳还是奔驰,都是物质符号。奔驰要比桑塔纳更为「高档」,且奔驰完全出自于德国公司,而桑塔纳是中国第一款合资车型。
+刘爱国的这个思考流程有这些值得思考的点:一、在他的认知图谱中,地理是被样板戏定义的;二、使用汽车品牌来划分螃蟹种类。不论是桑塔纳还是奔驰,都是物质符号。奔驰要比桑塔纳更为「高档」,且奔驰完全出自于德国公司,而桑塔纳是中国第一款合资车型。
-「车」在刘爱国接下来的回忆中又出现了一次。儿子开学当天,刘爱国借了辆桑塔纳来接送儿子,未曾想学校门口全是好车,尾号一个比一个炫富——但是一个学校能开来全市的好车么?刘爱国能借车,他人就不能借车了么?或许除了刘爱国有攀比心,其他人也想要攀比攀比。不过在刘爱国的心里,他在社会竞争中依然失败了,不仅买不起车,连借来的车都不如别人的高档。作为补偿,既然儿子爱吃的螃蟹还是买得起的,那不如等每次儿子回家,都买上只螃蟹犒劳犒劳。
+「车」在刘爱国接下来的回忆中又出现了一次。儿子开学当天,刘爱国借了辆桑塔纳来接送儿子,未曾想学校门口全是好车,尾号一个比一个炫富——但是一个学校能开来全市的好车么?刘爱国能借车,他人就不能借车了么?或许除了刘爱国有攀比心,其他人也想要攀比攀比。不过在刘爱国的心里,他在社会竞争中依然失败了,不仅买不起车,连借来的车都不如别人的高档。作为补偿,既然儿子爱吃的螃蟹还是买得起的,那不如等每次儿子回家,都买上只螃蟹犒劳犒劳。
-次日,刘爱国发现大闸蟹丢失,急眼、只能一个个地方都找过去。有趣的是他找到的那些不是大闸蟹的东西:「失踪已久的结婚证」,意味着对婚姻的不重视;「爱国的中专毕业证」,文革期间学校不大上课的话,这个毕业证并不能代表刘爱国是否是「知识分子」;「儿子一年级时『最有意义的一天』」,我相信中国学生没少写过这类作文吧!刘爱国将它和其他重要文件收集起来,意味着他重视儿子的教育,以及这可能是儿子第一次一个人写作文,具有一定的意义;「洗衣机的保修单」,在二十一世纪刚开始的时候,买得起洗衣机并不常见,想必也是一种资产上的炫耀吧。
+次日,刘爱国发现大闸蟹丢失,急眼、只能一个个地方都找过去。有趣的是他找到的那些不是大闸蟹的东西:「失踪已久的结婚证」,意味着对婚姻的不重视;「爱国的中专毕业证」,文革期间学校不大上课的话,这个毕业证并不能代表刘爱国是否是「知识分子」;「儿子一年级时『最有意义的一天』」,我相信中国学生没少写过这类作文吧!刘爱国将它和其他重要文件收集起来,意味着他重视儿子的教育,以及这可能是儿子第一次一个人写作文,具有一定的意义;「洗衣机的保修单」,在二十一世纪刚开始的时候,买得起洗衣机并不常见,想必也是一种资产上的炫耀吧。
-最后一个则是:
+最后一个则是:
-> 甚至还找到了爱国二十多年前的日记本。日记本是红色的塑料皮,发硬了,上面印着烫金的「为人民服务」,洇着蓝钢笔水的扉页上,中学生刘爱国歪扭而又工整地抄录着《钢铁是怎样炼成的》里面的一段话——人的一生应当这样度过:回首往事,他不会因为虚度年华而悔恨,也不会因为碌碌不为而羞愧;临死的时候,他能够说:我的整个生命和全部精力,都……以下的字被墨水淹没了。
+> 甚至还找到了爱国二十多年前的日记本。日记本是红色的塑料皮,发硬了,上面印着烫金的「为人民服务」,洇着蓝钢笔水的扉页上,中学生刘爱国歪扭而又工整地抄录着《钢铁是怎样炼成的》里面的一段话——人的一生应当这样度过:回首往事,他不会因为虚度年华而悔恨,也不会因为碌碌不为而羞愧;临死的时候,他能够说:我的整个生命和全部精力,都……以下的字被墨水淹没了。
-被墨水淹没的后续虽然小说里没有提到,不过其实是:
+被墨水淹没的后续虽然小说里没有提到,不过其实是:
-> 已经献给世界上最壮丽的事业——为人类的解放而斗争。
+> 已经献给世界上最壮丽的事业——为人类的解放而斗争。
-有些同学读过这本书,因为它是学校的必读书籍之一。不过我没有读过这本书,只是上学期间听说过。教授借此扩展了下话题,告诉我们它在文革期间其实是禁书,因为它的作者是苏联人,而当时中苏的关系并不好。但《钢铁是怎样炼成的》的中译本在学生之间很是有名,早就偷偷传开了。大家不仅会偷读,还会手抄下来。
+有些同学读过这本书,因为它是学校的必读书籍之一。不过我没有读过这本书,只是上学期间听说过。教授借此扩展了下话题,告诉我们它在文革期间其实是禁书,因为它的作者是苏联人,而当时中苏的关系并不好。但《钢铁是怎样炼成的》的中译本在学生之间很是有名,早就偷偷传开了。大家不仅会偷读,还会手抄下来。
-说回小说的内容。很明显,这本日记本的存在暗示了刘爱国小时候的理想主义早已在琐碎且物欲的现实生活面前变得模糊不清:它有大闸蟹重要么?能让人吃好饭么?
+说回小说的内容。很明显,这本日记本的存在暗示了刘爱国小时候的理想主义早已在琐碎且物欲的现实生活面前变得模糊不清:它有大闸蟹重要么?能让人吃好饭么?
-刘爱国出门找大闸蟹时,陈昌平又描写了他所居住的桃源小区:一个典型的北方重工业城市中的普通居住区。文中提到的「安居工程」是中国政府为中低收入城市居民实施的保障性住房项目,点明了刘爱国并不宽裕的工薪阶层角色——实际上,先前有很多地方都介绍了他的背景,并不是一个多么富足的人。
+刘爱国出门找大闸蟹时,陈昌平又描写了他所居住的桃源小区:一个典型的北方重工业城市中的普通居住区。文中提到的「安居工程」是中国政府为中低收入城市居民实施的保障性住房项目,点明了刘爱国并不宽裕的工薪阶层角色——实际上,先前有很多地方都介绍了他的背景,并不是一个多么富足的人。
-陈昌平也强调了刘爱国在此居住七八年却与邻居毫无来往,揭示了现代城市生活中的人际疏离。这倒也解释了后续发生的种种。
+陈昌平也强调了刘爱国在此居住七八年却与邻居毫无来往,揭示了现代城市生活中的人际疏离。这倒也解释了后续发生的种种。
-刘爱国上班去,知道同样买了阳澄湖大闸蟹的大李子不仅吃了,还对此给出了极高的评价,心里不舒坦。中午儿子罕见地主动打电话回来,询问大闸蟹怎样,让他的心情又变差了不少。挂了电话,他跑去上海菜馆看大闸蟹,却发现里面的螃蟹和大闸蟹没有一点共同特征,领班还强行将它们标榜为「最正宗的大闸蟹」,并以此贬低其他产地的河蟹。这种推销让刘爱国确信,这座北方老工业城市里的人根本不具备鉴赏南方高档消费品的认知水平。
+刘爱国上班去,知道同样买了阳澄湖大闸蟹的大李子不仅吃了,还对此给出了极高的评价,心里不舒坦。中午儿子罕见地主动打电话回来,询问大闸蟹怎样,让他的心情又变差了不少。挂了电话,他跑去上海菜馆看大闸蟹,却发现里面的螃蟹和大闸蟹没有一点共同特征,领班还强行将它们标榜为「最正宗的大闸蟹」,并以此贬低其他产地的河蟹。这种推销让刘爱国确信,这座北方老工业城市里的人根本不具备鉴赏南方高档消费品的认知水平。
-从这里之后,才是这篇小说的「正文」。刘爱国在公告栏上贴了个启事,希望拾到自己蟹子的人可以归还给自己。谁曾想,来的是来纠正语病的孙老师,蟹子的下落依然不知道。这一段再次呼应和坐实了先前「人际关系冷漠」的描写。孙老师作为刘爱国自认「最熟悉的邻居」,其所谓的「热心」仅仅停留在居高临下的知识纠错与说教层面,对刘爱国丢失物品的实际焦虑毫无共情。
+从这里之后,才是这篇小说的「正文」。刘爱国在公告栏上贴了个启事,希望拾到自己蟹子的人可以归还给自己。谁曾想,来的是来纠正语病的孙老师,蟹子的下落依然不知道。这一段再次呼应和坐实了先前「人际关系冷漠」的描写。孙老师作为刘爱国自认「最熟悉的邻居」,其所谓的「热心」仅仅停留在居高临下的知识纠错与说教层面,对刘爱国丢失物品的实际焦虑毫无共情。
-被当面指出低级错误也让刘爱国感到了文化与体面上的双重难堪。先前就已经暗示过,刘爱国已经在家庭和社会层面上「失败」了。再加上孙老师对「几只蟹子」轻描淡写的态度,极大地刺激了刘爱国:在这个小区里,大众根本不具备识别阳澄湖大闸蟹高贵身份的认知能力。这两种感觉都迫使刘爱国重新打印了一份更加周密和庄重的第二版启事。
+被当面指出低级错误也让刘爱国感到了文化与体面上的双重难堪。先前就已经暗示过,刘爱国已经在家庭和社会层面上「失败」了。再加上孙老师对「几只蟹子」轻描淡写的态度,极大地刺激了刘爱国:在这个小区里,大众根本不具备识别阳澄湖大闸蟹高贵身份的认知能力。这两种感觉都迫使刘爱国重新打印了一份更加周密和庄重的第二版启事。
-实际上,在教授讲解前,我对小灵通没有一个实际的概念,一直以为它是类似于诺基亚那样的手机品牌。其实它是一种无线通信工具,或者说是当地固定电话网络的无线延伸。另一个我不知道,但教授没有讲解的东西是「红塔山」,后面查了一下发现是中高档香烟。
+实际上,在教授讲解前,我对小灵通没有一个实际的概念,一直以为它是类似于诺基亚那样的手机品牌。其实它是一种无线通信工具,或者说是当地固定电话网络的无线延伸。另一个我不知道,但教授没有讲解的东西是「红塔山」,后面查了一下发现是中高档香烟。
-贴完第二版启事后,刘爱国发现小区垃圾箱里有一个红色的蟹子壳,正是自己丢失的其中一只,已经被人吃干净了。邻居们的冷漠此时展示了出来:就算看到了刘爱国贴的启事,也不选择归还,反而是自己吃掉。
+贴完第二版启事后,刘爱国发现小区垃圾箱里有一个红色的蟹子壳,正是自己丢失的其中一只,已经被人吃干净了。邻居们的冷漠此时展示了出来:就算看到了刘爱国贴的启事,也不选择归还,反而是自己吃掉。
-陈昌平在此处立刻描写了辽北的衰败现状。这座衰落,且物质相对匮乏的北方城市,与代表着南方精致生活和经济繁荣的阳澄湖大闸蟹形成了反差:大闸蟹在辽北的垃圾箱中竟惨遭粗暴对待并沦为残骸!要知道它在刘爱国心里,除了是高贵的食物外,还是刘爱国作为一个父亲的骄傲、对儿子的承诺。他鼻子一酸,心里骂自己没出息,这种生理上的悲伤反应让他感到羞耻。
+陈昌平在此处立刻描写了辽北的衰败现状。这座衰落,且物质相对匮乏的北方城市,与代表着南方精致生活和经济繁荣的阳澄湖大闸蟹形成了反差:大闸蟹在辽北的垃圾箱中竟惨遭粗暴对待并沦为残骸!要知道它在刘爱国心里,除了是高贵的食物外,还是刘爱国作为一个父亲的骄傲、对儿子的承诺。他鼻子一酸,心里骂自己没出息,这种生理上的悲伤反应让他感到羞耻。
-回家后,刘爱国在启事的后面加了个附录,试图指导捡到剩余两只大闸蟹的人正确保存它们,以防它们在被归还前死亡,毕竟大闸蟹死后就不能吃了,儿子还有两天才回来呢。戏剧性的是,当他贴上附录后,他便看到了第二只被吃掉的大闸蟹——这只螃蟹被吃得乱七八糟,好多肉都没吃干净,简直是暴殄天物。
+回家后,刘爱国在启事的后面加了个附录,试图指导捡到剩余两只大闸蟹的人正确保存它们,以防它们在被归还前死亡,毕竟大闸蟹死后就不能吃了,儿子还有两天才回来呢。戏剧性的是,当他贴上附录后,他便看到了第二只被吃掉的大闸蟹——这只螃蟹被吃得乱七八糟,好多肉都没吃干净,简直是暴殄天物。
-愤怒的刘爱国接到了儿子主动打来的第二通电话。面对儿子那句「大闸蟹到底是什么滋味儿呢」,刘爱国罕见地呵斥了儿子。他不仅弄丢了原打算犒劳儿子的昂贵礼物,甚至连他自己也无从知晓这代表着阶层品味的大闸蟹究竟是何滋味儿。儿子的期待成了一种精神上的压迫,让他无法继续维系那个能为后代提供高级物质体验的父亲形象,这样的无力感,令他无处宣泄情绪,失控地攻击了儿子。
+愤怒的刘爱国接到了儿子主动打来的第二通电话。面对儿子那句「大闸蟹到底是什么滋味儿呢」,刘爱国罕见地呵斥了儿子。他不仅弄丢了原打算犒劳儿子的昂贵礼物,甚至连他自己也无从知晓这代表着阶层品味的大闸蟹究竟是何滋味儿。儿子的期待成了一种精神上的压迫,让他无法继续维系那个能为后代提供高级物质体验的父亲形象,这样的无力感,令他无处宣泄情绪,失控地攻击了儿子。
-另一边,大闸蟹的象征意义逐渐发生了异化。起初它只是作为纯粹的犒劳物品存在的,然而随着它的丢失及其惨遭邻居随意丢弃,它脱离了单纯的食物属性,变成了刘爱国个人尊严以及对抗周围庸俗环境的心理寄托。当刘爱国发现大闸蟹被以极不讲究的方式糟蹋时,他感受到的是自身向往的精致生活被碾碎的屈辱。因此,他后期的所有偏执行为,都演变成了一场捍卫个人尊严的自救。就如他自己所说的,「这已经不是为了儿子了。」
+另一边,大闸蟹的象征意义逐渐发生了异化。起初它只是作为纯粹的犒劳物品存在的,然而随着它的丢失及其惨遭邻居随意丢弃,它脱离了单纯的食物属性,变成了刘爱国个人尊严以及对抗周围庸俗环境的心理寄托。当刘爱国发现大闸蟹被以极不讲究的方式糟蹋时,他感受到的是自身向往的精致生活被碾碎的屈辱。因此,他后期的所有偏执行为,都演变成了一场捍卫个人尊严的自救。就如他自己所说的,「这已经不是为了儿子了。」
-刘爱国做了一份重要启事,整理了阳澄湖大闸蟹的所有知识,其字里行间的庄严感,与当年抄写革命宣言时的虔诚恐怕如出一辙吧。下班回来,他变态般地扒拉着小区的垃圾箱,并在旁边找到了一只完整的蟹子:天啊,它竟然在没有蟹八件的北方,被吃得很规范、很圆满、很精彩、很成功、很伟大!刘爱国满意、得意,又反省自己能不能像这个邻居一样,吃出如此美丽的大闸蟹。
+刘爱国做了一份重要启事,整理了阳澄湖大闸蟹的所有知识,其字里行间的庄严感,与当年抄写革命宣言时的虔诚恐怕如出一辙吧。下班回来,他变态般地扒拉着小区的垃圾箱,并在旁边找到了一只完整的蟹子:天啊,它竟然在没有蟹八件的北方,被吃得很规范、很圆满、很精彩、很成功、很伟大!刘爱国满意、得意,又反省自己能不能像这个邻居一样,吃出如此美丽的大闸蟹。
-在刘爱国这么想的时候,他还会在乎共产主义么?
+在刘爱国这么想的时候,他还会在乎共产主义么?
-周末儿子回来的那天,刘爱国买了三只赤甲红回家,好似大闸蟹是一场梦——一场试图依靠消费符号来跨越阶级的梦。
+周末儿子回来的那天,刘爱国买了三只赤甲红回家,好似大闸蟹是一场梦——一场试图依靠消费符号来跨越阶级的梦。
M posts/读那片血一般红的杜鹃花.gmi => posts/读那片血一般红的杜鹃花.gmi +48 -50
@@ 1,99 1,97 @@
# 读《那片血一般红的杜鹃花》
-我这个学期开始上中文课了。这节课是短篇小说课,主要是阅读上个世纪台湾、大陆等作者们的短篇小说。
+我这个学期开始上中文课了。这节课是短篇小说课,主要是阅读上个世纪台湾、大陆等作者们的短篇小说。
-开课要阅读的第一本叫作《那片血一般红的杜鹃花》,出自于《白先勇文集》的第二卷「台北人」。
+开课要阅读的第一本叫作《那片血一般红的杜鹃花》,出自于《白先勇文集》的第二卷「台北人」。
-这是一个第一人称视角的故事,但「我」并非故事的主角,而是故事的旁观者。而故事采取的叙事手法是倒叙。
+这是一个第一人称视角的故事,但「我」并非故事的主角,而是故事的旁观者。而故事采取的叙事手法是倒叙。
-#+MORE
+开头人们便在海边找到一具男尸——够 hook,吸引了读者的注意力。此时出现了故事真正的主角——王雄——的第一次外表描写:
-开头人们便在海边找到一具男尸——够 hook,吸引了读者的注意力。此时出现了故事真正的主角——王雄——的第一次外表描写:
+> 要不是他那双大得出奇的手掌,十个指头圆秃秃的,仍旧没有变形的话,我简直不敢想象,躺在地上那个庞大的怪物,竟会是舅妈家的男工王雄。
-> 要不是他那双大得出奇的手掌,十个指头圆秃秃的,仍旧没有变形的话,我简直不敢想象,躺在地上那个庞大的怪物,竟会是舅妈家的男工王雄。
+简单一句话,我们得知了这些信息:王雄很大一只,且手掌出奇地大,有着秃秃的手指头——并不精致,是个干活的手。
-简单一句话,我们得知了这些信息:王雄很大一只,且手掌出奇地大,有着秃秃的手指头——并不精致,是个干活的手。
+之后故事便切换到了「我」最初来到故事发生的地点的时候。此处纷纷介绍了舅妈和丽儿这两个角色。舅妈在这个故事里并非什么重要角色,作者对她的描写并不多;丽儿是故事的另一个主角,描写自然也就多了:从小就被惯着养,且又白又圆,像个玉娃娃——玉娃娃是个颇为有趣的描写,代表着精致、贵重的同时,还有着易碎的特征。
-之后故事便切换到了「我」最初来到故事发生的地点的时候。此处纷纷介绍了舅妈和丽儿这两个角色。舅妈在这个故事里并非什么重要角色,作者对她的描写并不多;丽儿是故事的另一个主角,描写自然也就多了:从小就被惯着养,且又白又圆,像个玉娃娃——玉娃娃是个颇为有趣的描写,代表着精致、贵重的同时,还有着易碎的特征。
+接着「我」初次见到了王雄——他在长满了杜鹃花的花圃里,给丽儿当马骑。就算是丽儿从他的头上跨过去,他也觉得无所谓。作者对王雄的描写是这样的:高大得出奇、黑头黑脸、巨掌、秃秃的指头。很显然,这是一个完全和丽儿反着来的角色;一个小孩和一个大人,一个白一个黑。
-接着「我」初次见到了王雄——他在长满了杜鹃花的花圃里,给丽儿当马骑。就算是丽儿从他的头上跨过去,他也觉得无所谓。作者对王雄的描写是这样的:高大得出奇、黑头黑脸、巨掌、秃秃的指头。很显然,这是一个完全和丽儿反着来的角色;一个小孩和一个大人,一个白一个黑。
+不过王雄也有着和丽儿相似的外貌描写,他有着一嘴白牙齿和发白的裤子,意味着他并不是一个完完全全「黑」的人。
-不过王雄也有着和丽儿相似的外貌描写,他有着一嘴白牙齿和发白的裤子,意味着他并不是一个完完全全「黑」的人。
+三人的对话透露出,王雄是个湖南人,以前还打过仗。意外的是,当丽儿说王雄曾经对自己说过,可以让自己骑着他上学时,王雄这个粗男人竟脸红了。
-三人的对话透露出,王雄是个湖南人,以前还打过仗。意外的是,当丽儿说王雄曾经对自己说过,可以让自己骑着他上学时,王雄这个粗男人竟脸红了。
+「我」从舅妈那儿得知,王雄是个退伍军人,现在被舅妈雇佣作男工。他为人老实,干活细腻,花圃的杜鹃花全是他一颗颗种的。「我」心生疑惑:为什么要种杜鹃花呢?舅妈给出的答案是丽儿喜欢。
-「我」从舅妈那儿得知,王雄是个退伍军人,现在被舅妈雇佣作男工。他为人老实,干活细腻,花圃的杜鹃花全是他一颗颗种的。「我」心生疑惑:为什么要种杜鹃花呢?舅妈给出的答案是丽儿喜欢。
+王雄每天都会接送丽儿上下学,还会把自己打扮得体体面面的。一回到家,便会钻研各种东西讨丽儿欢心。此时的二人,关系再好不过。
-王雄每天都会接送丽儿上下学,还会把自己打扮得体体面面的。一回到家,便会钻研各种东西讨丽儿欢心。此时的二人,关系再好不过。
+因为服兵役,「我」时不时会借住在舅妈家,因此有时间给丽儿补习功课,以及和王雄谈话。王雄告诉「我」,他原是湖南乡下的农民,十八岁抽壮丁时被抽了出来,直到现在四十了也没能回过家。
-因为服兵役,「我」时不时会借住在舅妈家,因此有时间给丽儿补习功课,以及和王雄谈话。王雄告诉「我」,他原是湖南乡下的农民,十八岁抽壮丁时被抽了出来,直到现在四十了也没能回过家。
-
-> 「表少爷,你在金门岛上看得到大陆吗?」有一次王雄若有所思的问我道。我告诉他,从望远镜里可以看得到那边的人在走动。
+> 「表少爷,你在金门岛上看得到大陆吗?」有一次王雄若有所思的问我道。我告诉他,从望远镜里可以看得到那边的人在走动。
>
-> 「隔得那样近吗?」他吃惊的望着我,不肯置信的样子。
+> 「隔得那样近吗?」他吃惊的望着我,不肯置信的样子。
>
-> 「怎么不呢?」我答道,「那边时常还有尸首漂过来呢。」
+> 「怎么不呢?」我答道,「那边时常还有尸首漂过来呢。」
>
-> 「他们是过来找亲人的。表少爷,你不知道,」王雄摇了摇手止住我道,「我们湖南乡下有赶尸的,人死在外头,要是家里有挂得紧的亲人,那些死人跑回去跑得才快呢。」
+> 「他们是过来找亲人的。表少爷,你不知道,」王雄摇了摇手止住我道,「我们湖南乡下有赶尸的,人死在外头,要是家里有挂得紧的亲人,那些死人跑回去跑得才快呢。」
-「我」服兵役的地方正是现在福建的金门岛,且离大陆很近很近。但就算这么近了,两岸当时的关系也不容探亲,更别提让王雄这个国民党的军人回家了。
+「我」服兵役的地方正是现在福建的金门岛,且离大陆很近很近。但就算这么近了,两岸当时的关系也不容探亲,更别提让王雄这个国民党的军人回家了。
-当描述到营地里的老士兵的时候,「我」说他们有时会出现成人不会有的「童稚般的笑容」以及「赤子的天真」。且「我」初次提到了「怀乡的哀愁」。对于王雄来说,他不也是这样的人吗?
+当描述到营地里的老士兵的时候,「我」说他们有时会出现成人不会有的「童稚般的笑容」以及「赤子的天真」。且「我」初次提到了「怀乡的哀愁」。对于王雄来说,他不也是这样的人吗?
-当问到王雄家里还有什么人的时候,王雄回答说家里有个不知道还在不在的母亲,以及一个十岁大的童养媳。作者描述童养媳的时候,也使用了「白白胖胖」这样的比喻。童养媳的年龄和描述,正和现在的丽儿一模一样。
+当问到王雄家里还有什么人的时候,王雄回答说家里有个不知道还在不在的母亲,以及一个十岁大的童养媳。作者描述童养媳的时候,也使用了「白白胖胖」这样的比喻。童养媳的年龄和描述,正和现在的丽儿一模一样。
-这一段里,不只是出现了童养媳这个角色,作者也引入了最开头提过但没有深入的角色——喜妹。她是下女,也就是女佣或者侍女。对于喜妹这个角色的描写,虽然她也是「白白胖胖」,但是「自以为很有风情」,反而和王雄是死对头。喜妹很喜欢撩拨王雄玩,这在旧中国看来是相当轻浮的举动,但王雄又很不喜欢她。
+这一段里,不只是出现了童养媳这个角色,作者也引入了最开头提过但没有深入的角色——喜妹。她是下女,也就是女佣或者侍女。对于喜妹这个角色的描写,虽然她也是「白白胖胖」,但是「自以为很有风情」,反而和王雄是死对头。喜妹很喜欢撩拨王雄玩,这在旧中国看来是相当轻浮的举动,但王雄又很不喜欢她。
-让我好奇的是,喜妹在逗完王雄后,「用着尖细的声音哼起了台湾的哭调《闹五更》」。而王雄「霍然立起身,头也不回」回了房间。这里的《闹五更》到底有着什么样的含义?
+让我好奇的是,喜妹在逗完王雄后,「用着尖细的声音哼起了台湾的哭调《闹五更》」。而王雄「霍然立起身,头也不回」回了房间。这里的《闹五更》到底有着什么样的含义?
-丽儿上中学前,舅妈给她买了套童军制服。王雄看后,「猛吃了一惊」。先前暗示过,王雄将丽儿视为自己小时候的童养媳;但现在丽儿开始长大,有了新的衣服,变得也渐渐和童养媳不一样。对于那时的王雄来说,又意味着什么呢?不只是如此,丽儿上中学后也有了性别和阶级意识。在她在家里炫耀自己学的英文时,她说:
+丽儿上中学前,舅妈给她买了套童军制服。王雄看后,「猛吃了一惊」。先前暗示过,王雄将丽儿视为自己小时候的童养媳;但现在丽儿开始长大,有了新的衣服,变得也渐渐和童养媳不一样。对于那时的王雄来说,又意味着什么呢?不只是如此,丽儿上中学后也有了性别和阶级意识。在她在家里炫耀自己学的英文时,她说:
-> /I am a girl./ 丽儿指了一指自己的胸膛念道,然后又指了一指王雄。
+> I am a girl. 丽儿指了一指自己的胸膛念道,然后又指了一指王雄。
>
-> /You are a boy./ 王雄微张着嘴,脸上充满了崇敬的神情。
+> You are a boy. 王雄微张着嘴,脸上充满了崇敬的神情。
>
-> /I am a student./ 丽儿又念了一句,她瞥了王雄一眼,然后突然指着他大声叫道:
+> I am a student. 丽儿又念了一句,她瞥了王雄一眼,然后突然指着他大声叫道:
>
-> /You are a dog./
+> You are a dog.
-这些都象征着丽儿在未来只会越来越不像童养媳。果不其然,在紧接着的下一场景中,丽儿便大发脾气,不再允许王雄接送自己,理由是同学们觉得王雄长得像大猩猩。此时,王雄不仅不再是「非异性」、「同级人」,而是一个动物——连人都不是了!
+这些都象征着丽儿在未来只会越来越不像童养媳。果不其然,在紧接着的下一场景中,丽儿便大发脾气,不再允许王雄接送自己,理由是同学们觉得王雄长得像大猩猩。此时,王雄不仅不再是「非异性」、「同级人」,而是一个动物——连人都不是了!
-王雄为了让这段关系回到过去那样美好,给丽儿带来两条金鱼。丽儿非但没有收下,反而摔碎了鱼缸、害死了金鱼。作者借物描述了二人的关系,正如文中所说那样,「跌落在地上不能动弹了」。这也是这部短篇小说里,王雄和丽儿的最后一次对话。
+王雄为了让这段关系回到过去那样美好,给丽儿带来两条金鱼。丽儿非但没有收下,反而摔碎了鱼缸、害死了金鱼。作者借物描述了二人的关系,正如文中所说那样,「跌落在地上不能动弹了」。这也是这部短篇小说里,王雄和丽儿的最后一次对话。
-自这之后,王雄变得颓废起来。人叫他,他不应,脾气还越来越暴躁,一整天只是不停照料杜鹃花。一次,他和喜妹就用水一事起了冲突。王雄瞪着喜妹时,喜妹却放声嘲笑他:
+自这之后,王雄变得颓废起来。人叫他,他不应,脾气还越来越暴躁,一整天只是不停照料杜鹃花。一次,他和喜妹就用水一事起了冲突。王雄瞪着喜妹时,喜妹却放声嘲笑他:
-> 「大猩猩——大猩猩」
+> 「大猩猩——大猩猩」
-谁知这一笑,王雄彻底愤怒、像头真的大猩猩一样,抓住喜妹的肩膀拼命摇晃,还发出野兽般的低吼!喜妹挣扎逃开,对着他骂道:
+谁知这一笑,王雄彻底愤怒、像头真的大猩猩一样,抓住喜妹的肩膀拼命摇晃,还发出野兽般的低吼!喜妹挣扎逃开,对着他骂道:
-> 「考背!」
+> 「考背!」
-次日早上,「我」和舅妈在花园找到了像是死了一样的喜妹。她的衣服被撕碎,身上包括乳房都是伤痕。同一天,王雄也不见了。在那之后,便发生了小说开头的「王雄之死」。这里小说中并没有提及喜妹到底有没有被性侵。
+次日早上,「我」和舅妈在花园找到了像是死了一样的喜妹。她的衣服被撕碎,身上包括乳房都是伤痕。同一天,王雄也不见了。在那之后,便发生了小说开头的「王雄之死」。这里小说中并没有提及喜妹到底有没有被性侵。
-------------------------------------------------------------------------
+-----
-上中文课的一个好处是,我们可以一边阅读,一边讨论。这篇小说在开课前我便读过一遍,但当时并没有读出其更为深奥的意义来。这次讨论让我见识到了作者的功底,也更乐意去解读这些小说。
+上中文课的一个好处是,我们可以一边阅读,一边讨论。这篇小说在开课前我便读过一遍,但当时并没有读出其更为深奥的意义来。这次讨论让我见识到了作者的功底,也更乐意去解读这些小说。
-教授问我们,王雄和丽儿的关系到底是什么。一位同学认为是父女般的关系,一位同学认为是不纯粹的、王雄将丽儿视为性对象的关系……在我看来,王雄确实是以不单纯的视角去看丽儿,不过并不能简单归于「父女」或者「性」。这就需要讲到这部短篇小说的主题——乡愁。
+教授问我们,王雄和丽儿的关系到底是什么。一位同学认为是父女般的关系,一位同学认为是不纯粹的、王雄将丽儿视为性对象的关系……在我看来,王雄确实是以不单纯的视角去看丽儿,不过并不能简单归于「父女」或者「性」。这就需要讲到这部短篇小说的主题——乡愁。
-王雄十八岁便被迫离开湖南,到四十岁都没有再回去过。他将对童养媳的思念加到丽儿身上,正好她们在小时候很是相似。可是丽儿终究是丽儿,而非童养媳。长大后的丽儿只会慢慢疏远王雄,变得和王雄记忆里的童养媳不再一样。在王雄意识到这一点之后,他的重点便放在了浇灌杜鹃花上。
+王雄十八岁便被迫离开湖南,到四十岁都没有再回去过。他将对童养媳的思念加到丽儿身上,正好她们在小时候很是相似。可是丽儿终究是丽儿,而非童养媳。长大后的丽儿只会慢慢疏远王雄,变得和王雄记忆里的童养媳不再一样。在王雄意识到这一点之后,他的重点便放在了浇灌杜鹃花上。
-为什么非得是杜鹃花呢?不论是小说的标题,还是王雄最初决定栽种的植物,都是杜鹃花。故事中的「我」很是好奇,便去询问了舅妈。当时舅妈的回复是「丽儿喜欢」,但其实还有一层意思:湖南盛产杜鹃花,早在 193x 年便引入长沙市栽培,1985 年还成了长沙市的市花。种杜鹃花,是为了让舅妈家变得像自己在湖南的家一样。
+为什么非得是杜鹃花呢?不论是小说的标题,还是王雄最初决定栽种的植物,都是杜鹃花。故事中的「我」很是好奇,便去询问了舅妈。当时舅妈的回复是「丽儿喜欢」,但其实还有一层意思:湖南盛产杜鹃花,早在 193x 年便引入长沙市栽培,1985 年还成了长沙市的市花。种杜鹃花,是为了让舅妈家变得像自己在湖南的家一样。
-这份思乡之心也在其他地方表现出来:王雄询问「我」能否看到内地时,提到的赶尸习俗中,他特意提到「只要亲人挂得紧,尸体回去才快呢」。小说里也让「我」见到念叨着家乡的老士兵,作为主题的又一暗示。
+这份思乡之心也在其他地方表现出来:王雄询问「我」能否看到内地时,提到的赶尸习俗中,他特意提到「只要亲人挂得紧,尸体回去才快呢」。小说里也让「我」见到念叨着家乡的老士兵,作为主题的又一暗示。
-王雄作为退伍老兵,回不去家,仅能将丽儿和杜鹃花视为一种寄托。但丽儿变了,开始嫌弃自己,生活没有了正面反馈,自己又同喜妹产生冲突——喜妹那句骂人的话很有意思。「考背」(现在更喜欢称之为「靠北」)的意思其实是「哀悼父亲去世」,延伸开来就有诅咒对方死全家的意思。王雄是家中唯一一个男丁,对他来说,母亲可能已经去世,家中只剩下一个不知去向的童养媳,王雄本人又回不去——这又何尝不是一种「死全家」了呢?
+王雄作为退伍老兵,回不去家,仅能将丽儿和杜鹃花视为一种寄托。但丽儿变了,开始嫌弃自己,生活没有了正面反馈,自己又同喜妹产生冲突——喜妹那句骂人的话很有意思。「考背」(现在更喜欢称之为「靠北」)的意思其实是「哀悼父亲去世」,延伸开来就有诅咒对方死全家的意思。王雄是家中唯一一个男丁,对他来说,母亲可能已经去世,家中只剩下一个不知去向的童养媳,王雄本人又回不去——这又何尝不是一种「死全家」了呢?
-而王雄暴怒时的举动,正好和他人嘲弄他说的「大猩猩」一样。此时的他,不仅理解了和丽儿的关系无法再回到当初,自己可能一辈子无法回家;种种压力下,王雄想:「你们说我是大猩猩,那我就变成大猩猩给你们看。」结果便是喜妹的悲剧。
+而王雄暴怒时的举动,正好和他人嘲弄他说的「大猩猩」一样。此时的他,不仅理解了和丽儿的关系无法再回到当初,自己可能一辈子无法回家;种种压力下,王雄想:「你们说我是大猩猩,那我就变成大猩猩给你们看。」结果便是喜妹的悲剧。
-王雄本身并不是一个暴力的人。攻击了喜妹之后,想必他的想法很是复杂:愧疚、焦虑、后悔、自暴自弃……想要回家,怎么回家?「湖南有个赶尸习俗,只要亲人挂得紧,尸体回去才快呢。」荒诞的是,能回家的方法竟只剩「死」这一条路。
+王雄本身并不是一个暴力的人。攻击了喜妹之后,想必他的想法很是复杂:愧疚、焦虑、后悔、自暴自弃……想要回家,怎么回家?「湖南有个赶尸习俗,只要亲人挂得紧,尸体回去才快呢。」荒诞的是,能回家的方法竟只剩「死」这一条路。
-这必须得讲一下当时的历史。1949 年到 1987 年之间,所有流亡到台湾的外省人都无法回到内地。1949 年国民党退守台湾后,海峡两岸处于战争状态:两岸之间不通邮、不通商、不通航。而王雄的身份是国军退伍士兵。当时台湾处于长达 38 年的「戒严时期」。私自与大陆联系或试图前往大陆,会被视为通匪或叛逃,可能面临极刑或牢狱之灾。同理,在大陆那边,曾为国民党效力的士兵被划为「黑五类」或「历史反革命」。假设王雄真的偷渡回去,等待他的极可能是批斗、监禁甚至处决。
+这必须得讲一下当时的历史。1949 年到 1987 年之间,所有流亡到台湾的外省人都无法回到内地。1949 年国民党退守台湾后,海峡两岸处于战争状态:两岸之间不通邮、不通商、不通航。而王雄的身份是国军退伍士兵。当时台湾处于长达 38 年的「戒严时期」。私自与大陆联系或试图前往大陆,会被视为通匪或叛逃,可能面临极刑或牢狱之灾。同理,在大陆那边,曾为国民党效力的士兵被划为「黑五类」或「历史反革命」。假设王雄真的偷渡回去,等待他的极可能是批斗、监禁甚至处决。
-戏剧性的是,《台北人》是在 1960 年代到 1970 年代初。 两岸开放探亲要等到 1987 年。王雄死在了黎明前的漫长黑夜里。对于那个时代的大多数老兵来说,这就是死局。他们唯一的归乡方式,往往只能是死后魂归故里。「我」看到的老士兵实际上便是无数个王雄。他们虽然年纪看着大,但有着成人没有的童真和天真——有多少是还没长好就被抓来当兵,半辈子都在战场上生活的呢?先前我说这暗示了乡愁主题,其实也暗示了这些人们停留在孩童的年龄。
+戏剧性的是,《台北人》是在 1960 年代到 1970 年代初。 两岸开放探亲要等到 1987 年。王雄死在了黎明前的漫长黑夜里。对于那个时代的大多数老兵来说,这就是死局。他们唯一的归乡方式,往往只能是死后魂归故里。「我」看到的老士兵实际上便是无数个王雄。他们虽然年纪看着大,但有着成人没有的童真和天真——有多少是还没长好就被抓来当兵,半辈子都在战场上生活的呢?先前我说这暗示了乡愁主题,其实也暗示了这些人们停留在孩童的年龄。
-这又要说回最开始那个问题:王雄和丽儿到底是什么关系?作者在描写他们二人互动时,很喜欢将王雄写成一个「虽然年纪大身体也大,但处处跟个孩子一样、同丽儿玩耍的人」。在我看来,就算他将丽儿当成童养媳看待,但这也不意味着他带着有色滤镜去看待丽儿,反而是将其视为童年的一部分;同丽儿游玩,就像是自己也变小了一样,从来都没有上战场过。
+这又要说回最开始那个问题:王雄和丽儿到底是什么关系?作者在描写他们二人互动时,很喜欢将王雄写成一个「虽然年纪大身体也大,但处处跟个孩子一样、同丽儿玩耍的人」。在我看来,就算他将丽儿当成童养媳看待,但这也不意味着他带着有色滤镜去看待丽儿,反而是将其视为童年的一部分;同丽儿游玩,就像是自己也变小了一样,从来都没有上战场过。
-可惜他最终的结局是:
+可惜他最终的结局是:
-> 他的尸体被潮水冲到了岩石缝中,夹在那里,始终没有漂走。
+> 他的尸体被潮水冲到了岩石缝中,夹在那里,始终没有漂走。
M posts/谈模仿学习与身份误区.gmi => posts/谈模仿学习与身份误区.gmi +22 -26
@@ 1,49 1,45 @@
# 谈模仿学习与身份误区
-我在网络冲浪时看到了一位网友的求助。他自小就没有被教导如何和人打交道,长大后先是被母亲认定是一个孤僻的人,又被学校的环境误导,以为优秀的道路注定是孤独的、维持人际关系不重要。
+我在网络冲浪时看到了一位网友的求助。他自小就没有被教导如何和人打交道,长大后先是被母亲认定是一个孤僻的人,又被学校的环境误导,以为优秀的道路注定是孤独的、维持人际关系不重要。
-这些因素堆叠在一起,当他意识到的时候,自己已经错过了积累社交经验的黄金期。
+这些因素堆叠在一起,当他意识到的时候,自己已经错过了积累社交经验的黄金期。
-在此背景下,我真挚地给出了自己的建议:你只是不知道怎么说而已,你可以通过学习他人的对话来补上这个技术缺陷。这却遭到了第三人的反对,他认为这会让当事人丢失自己,不如让当事人以自己的方法来。
+在此背景下,我真挚地给出了自己的建议:你只是不知道怎么说而已,你可以通过学习他人的对话来补上这个技术缺陷。这却遭到了第三人的反对,他认为这会让当事人丢失自己,不如让当事人以自己的方法来。
-#+MORE
+-----
-------------------------------------------------------------------------
+我们常说大学是一个「小社会」,此话不假。对于社交能力的缺失让他开始感到痛苦;他其实很渴望别人能靠近自己,也希望自己能够回应别人的好意。
-我们常说大学是一个「小社会」,此话不假。对于社交能力的缺失让他开始感到痛苦;他其实很渴望别人能靠近自己,也希望自己能够回应别人的好意。
+但因为他从未学习过如何社交,许多本可以拉近别人距离的社交场合都被他无一例外地搞砸。在其他人眼里,他看上去是那么冷漠或者奇怪,但他根本不是那个意思,他只是不知道如何接话。
-但因为他从未学习过如何社交,许多本可以拉近别人距离的社交场合都被他无一例外地搞砸。在其他人眼里,他看上去是那么冷漠或者奇怪,但他根本不是那个意思,他只是不知道如何接话。
+社交本质上是一套由符号、编码和反馈构成的系统 。这听上去像是把人以计算机来看待,颇有股「只要学了计算机就可以把所有东西用它来解释」的傲慢劲儿。但实际上,这是许多人没有注意到的社交的另一面。
-*社交本质上是一套由符号、编码和反馈构成的系统* 。这听上去像是把人以计算机来看待,颇有股「只要学了计算机就可以把所有东西用它来解释」的傲慢劲儿。但实际上,这是许多人没有注意到的社交的另一面。
+具体而言,对于社交经验匮乏的人们来说,他们面临的挑战通常不是缺乏表达欲,而是将内在意图转化为有效社交信号的能力。如果一个人都无法分辨笑话,那要求对方「做自己」不过是一个伪命题。当事人缺乏表达手段,展示出来的自己往往是 {% em %}受限且扭曲{% endem %} 的。
-具体而言,对于社交经验匮乏的人们来说,他们面临的挑战通常不是缺乏表达欲,而是将内在意图转化为有效社交信号的能力。如果一个人都无法分辨笑话,那要求对方「做自己」不过是一个伪命题。当事人缺乏表达手段,展示出来的自己往往是 {% em %}受限且扭曲{% endem %} 的。
+社交能力充其量也只是一种技能,数年来人们对其的误解导致了大众对它的敬畏:「我不知道如何回复,这意味着那是我的性格,我只是不愿意和他人交流。」但这很多时候又是不对的,因为人们实际上很渴望与人交流和联系。大家一边承受着孤独,一边却又无动于衷。交流是人类的本能,社交是一种从小人们就要学习的技能。用这个角度来看,我们的「孤独」就可以是被改变的了!
-社交能力充其量也只是一种技能,数年来人们对其的误解导致了大众对它的敬畏:「我不知道如何回复,这意味着那是我的性格,我只是不愿意和他人交流。」但这很多时候又是不对的,因为人们实际上很渴望与人交流和联系。大家一边承受着孤独,一边却又无动于衷。交流是人类的本能,社交是一种从小人们就要学习的技能。用这个角度来看,我们的「孤独」就可以是被改变的了!
+当然,如果你是一个沟通能力没有问题的孤独人,那就是另一码事了……未来我会对此发表一些暴论,敬请期待?
-当然,如果你是一个沟通能力没有问题的孤独人,那就是另一码事了……未来我会对此发表一些暴论,敬请期待?
+社会学家 Erving Goffman 提出过 拟剧论 :社会生活分为前台和后台。社交能力和人格无关,人们是可以采取 工具性沟通 的。在这种模式下,社交不再投射自我,更多是为了达成特定的目标的手段。这也不是一个应当被批评的行为,很多时候人们会下意识采用工具性沟通来适配社会规则,和「背叛自我」没有半毛钱关系。
-社会学家 Erving Goffman 提出过 _拟剧论_ :社会生活分为前台和后台。社交能力和人格无关,人们是可以采取 _工具性沟通_ 的。在这种模式下,社交不再投射自我,更多是为了达成特定的目标的手段。这也不是一个应当被批评的行为,很多时候人们会下意识采用工具性沟通来适配社会规则,和「背叛自我」没有半毛钱关系。
+回到我的观点。既然社交能力是一种技能,就和画画、编程一样,那么要如何学会它呢?在我看来,许多东西都需要经历这样的一套流程: 模仿-内化-创新 。
-回到我的观点。既然社交能力是一种技能,就和画画、编程一样,那么要如何学会它呢?在我看来,许多东西都需要经历这样的一套流程: *模仿-内化-创新* 。
+孩童学习一件事情几乎就是依赖着「模仿」和「重复」,他们会模仿自己看到的所有人,然后不停地重复。这也是为什么长时间陪伴孩子的那个人在孩子的成长里是最重要的,通常来说这个人是父母。至于重复,只要你带过小孩子,就会知道他们有多么热衷于只做一件事情、只看一个电视频道……
-孩童学习一件事情几乎就是依赖着「模仿」和「重复」,他们会模仿自己看到的所有人,然后不停地重复。这也是为什么长时间陪伴孩子的那个人在孩子的成长里是最重要的,通常来说这个人是父母。至于重复,只要你带过小孩子,就会知道他们有多么热衷于只做一件事情、只看一个电视频道……
+一个画家必须先通过大量临摹来掌握透视、色彩和线条等技术手段,才能最终创作出具有个人风格的作品;如果画家拒绝学习技术,其画作呈现出的笨拙并非「真我」,仅仅只是「无能」。既然孩童是通过模仿他人才学会的社交,那错过了这一时期的人们也必须得让自己再次变成孩子。
-一个画家必须先通过大量临摹来掌握透视、色彩和线条等技术手段,才能最终创作出具有个人风格的作品;如果画家拒绝学习技术,其画作呈现出的笨拙并非「真我」,仅仅只是「无能」。既然孩童是通过模仿他人才学会的社交,那错过了这一时期的人们也必须得让自己再次变成孩子。
+认知科学认为,社交能力并非由抽象的理论构成,而是由无数个具体的「条件-反应」链条组成。当能力达到一定程度,个体自然会从「完全模仿」过渡到「选择性采纳」,最终形成带有个人色彩的社交风格。只有当社交动作不再占据一个人的全部认知资源时,他才有余力将真实的自己注入到谈话中。
-认知科学认为,社交能力并非由抽象的理论构成,而是由无数个具体的「条件-反应」链条组成。当能力达到一定程度,个体自然会从「完全模仿」过渡到「选择性采纳」,最终形成带有个人色彩的社交风格。只有当社交动作不再占据一个人的全部认知资源时,他才有余力将真实的自己注入到谈话中。
+值得注意的是,模仿他人说话与保持自我从来都不是此消彼长的关系,这也是为什么我十分排斥第三人的回复。他错将当事人的技能缺失认为是他的真实一面,完全无视了他对此的烦恼和痛苦,轻飘飘地反驳了我的建设性建议,要求当事人继续「当自己」——当事人的「自己」到底是什么?我认为肯定不是因为不知道该说什么、而被同学们误以为高冷的那个他。要知道,社交中的「自我」是动态构建的,而非静态存在的。
-值得注意的是,模仿他人说话与保持自我从来都不是此消彼长的关系,这也是为什么我十分排斥第三人的回复。他错将当事人的技能缺失认为是他的真实一面,完全无视了他对此的烦恼和痛苦,轻飘飘地反驳了我的建设性建议,要求当事人继续「当自己」——当事人的「自己」到底是什么?我认为肯定不是因为不知道该说什么、而被同学们误以为高冷的那个他。要知道,社交中的「自我」是动态构建的,而非静态存在的。
+总之, 强大的社交能力反而意味着我们可以更好地表达出自己 。这是一个反直觉的概念:我们模仿他人是为了展现出完全、真实的自己。但是事情就是如此运转的。
-总之, *强大的社交能力反而意味着我们可以更好地表达出自己* 。这是一个反直觉的概念:我们模仿他人是为了展现出完全、真实的自己。但是事情就是如此运转的。
+缺乏社交技巧的人往往因为无法融入群体而感到自卑,这种负面情绪反而会极大地侵蚀自我的独特性。通过学习社交技巧,个体如果能获得更顺畅的社交反馈,反而可能建立起更强的自信,从而更有能力在公共场合展示出真实的自我。
-缺乏社交技巧的人往往因为无法融入群体而感到自卑,这种负面情绪反而会极大地侵蚀自我的独特性。通过学习社交技巧,个体如果能获得更顺畅的社交反馈,反而可能建立起更强的自信,从而更有能力在公共场合展示出真实的自我。
+技能缺陷从来都不是一种性格选择 。我认为现在的社会经常将这两点搞混——不,你不是 自闭症、抑郁症、ADHD ……你只是不会「社交」这个能力而已。自然,我不是说所有自闭症、抑郁症、ADHD 等患者都是如此,这只是夸张式表达而已。
-*技能缺陷从来都不是一种性格选择* 。我认为现在的社会经常将这两点搞混——不,你不是 /自闭症、抑郁症、ADHD/ ……你只是不会「社交」这个能力而已。自然,我不是说所有自闭症、抑郁症、ADHD 等患者都是如此,这只是夸张式表达而已。
+更进一步说,当事人被母亲贴上了「孤僻」的标签,并被误导认为优秀的人不需要人际关系。这些事情对于一个还未稳定的个体而言,是一瓶瓶毒药。我会这么评价,是因为我也经历过同样的事情。我很高兴我身边有一位讲话十分直白的人,教会了我许多过去从未被教导过的社交礼仪。这也让我愈发对自己的父母感到不满,他们为了自己,数次伤害还是孩童的我,最终将我的惨状视为笑柄。
-更进一步说,当事人被母亲贴上了「孤僻」的标签,并被误导认为优秀的人不需要人际关系。这些事情对于一个还未稳定的个体而言,是一瓶瓶毒药。我会这么评价,是因为我也经历过同样的事情。我很高兴我身边有一位讲话十分直白的人,教会了我许多过去从未被教导过的社交礼仪。这也让我愈发对自己的父母感到不满,他们为了自己,数次伤害还是孩童的我,最终将我的惨状视为笑柄。
+自然,第三人的考量不是并无道理。个体为了融入社交环境,可能会刻意压抑本能反应、模仿他人的行为。只是放在当事人的案例里,这只是 {% em %}廉价且无效{% endem %} 的安慰,还回避了当事人正在经历的认知困境和技术门槛。
-自然,第三人的考量不是并无道理。个体为了融入社交环境,可能会刻意压抑本能反应、模仿他人的行为。只是放在当事人的案例里,这只是 {% em %}廉价且无效{% endem %} 的安慰,还回避了当事人正在经历的认知困境和技术门槛。
-
-这其实让我想起了另一个现象:只看简单的一段,然后只以事情的一面来发表意见或者建议,最终得出的结果牛头不对马嘴。事情是多面性的,你怎么可以因为我说了「模仿」,所以认定我的建议必定会让当事人压抑自我呢?
-
-:CAPTURED: [2026-01-16 Fri 12:52]
+这其实让我想起了另一个现象:只看简单的一段,然后只以事情的一面来发表意见或者建议,最终得出的结果牛头不对马嘴。事情是多面性的,你怎么可以因为我说了「模仿」,所以认定我的建议必定会让当事人压抑自我呢?
M posts/那些不受欢迎的想法.gmi => posts/那些不受欢迎的想法.gmi +44 -48
@@ 1,92 1,88 @@
# 那些不受欢迎的想法
-:CAPTURED: [2026-02-24 Tue 23:29]
+室友自上个月开始,和另一位有趣的人联合举办了一个活动,名为「那些不受欢迎的想法」。
-室友自上个月开始,和另一位有趣的人联合举办了一个活动,名为「那些不受欢迎的想法」。
+该活动准确的名称叫作 The Unsolicited Opinions Hour,而简介很有特色:
-#+MORE
-
-该活动准确的名称叫作 /The Unsolicited Opinions Hour/,而简介很有特色:
-
-> 大多数人实际上并没有自己的观点。他们持有的是继承来的立场、重复的观点,或是伪装成深刻见解的自助车轱辘话。
+> 大多数人实际上并没有自己的观点。他们持有的是继承来的立场、重复的观点,或是伪装成深刻见解的自助车轱辘话。
>
-> 本次活动是为那些真正拥有观点的人准备的。
+> 本次活动是为那些真正拥有观点的人准备的。
>
-> 每次活动,参与者都会分享一个他们真正持有的、经过深思熟虑的观点——一些他们真正思考过、检验过或通过真实经历得出的东西。
+> 每次活动,参与者都会分享一个他们真正持有的、经过深思熟虑的观点——一些他们真正思考过、检验过或通过真实经历得出的东西。
>
-> 一些他们真正相信并且能够捍卫的东西。
+> 一些他们真正相信并且能够捍卫的东西。
>
-> 每次分享后,所有人都会在「完全不同意」到「完全同意」的谱系上选择自己的态度。然后我们会进行结构化的讨论:双方都有不被打断的时间来阐述他们的理由。目标不是为了胜利或证明自己是对的——而是将想法与其他敏锐的头脑进行碰撞,并练习将想法与持有它们的人分开。
+> 每次分享后,所有人都会在「完全不同意」到「完全同意」的谱系上选择自己的态度。然后我们会进行结构化的讨论:双方都有不被打断的时间来阐述他们的理由。目标不是为了胜利或证明自己是对的——而是将想法与其他敏锐的头脑进行碰撞,并练习将想法与持有它们的人分开。
-第一次活动里,室友分享给我的话题并不是让我特别在意,不过还是让我记录一下吧。
+第一次活动里,室友分享给我的话题并不是让我特别在意,不过还是让我记录一下吧。
-室友自己分享了「将手机屏幕颜色调成灰阶」这个想法,因为这可以避免大脑被鲜艳的颜色吸引到。我必须严肃表示,她这一想法是从我这里学来的,而我是从 [另一篇文章] 学来的。
+室友自己分享了「将手机屏幕颜色调成灰阶」这个想法,因为这可以避免大脑被鲜艳的颜色吸引到。我必须严肃表示,她这一想法是从我这里学来的,而我是从 另一篇文章 学来的。
-有人不赞同这个做法,因为护眼的话,其实调成纯红色更好,看上去也更恶心、让人不想要动手机。
+有人不赞同这个做法,因为护眼的话,其实调成纯红色更好,看上去也更恶心、让人不想要动手机。
-经过两个月的使用后,我发觉将手机屏幕颜色调成灰阶的一个问题在于,眼睛逐渐不习惯于鲜丽的颜色。我的手机屏幕原本能够发出极其鲜艳的颜色,购买时我还认为是一件好事,现在看来一点都不好;眼睛都要瞎了,还是乖乖调回灰阶吧。
+经过两个月的使用后,我发觉将手机屏幕颜色调成灰阶的一个问题在于,眼睛逐渐不习惯于鲜丽的颜色。我的手机屏幕原本能够发出极其鲜艳的颜色,购买时我还认为是一件好事,现在看来一点都不好;眼睛都要瞎了,还是乖乖调回灰阶吧。
-至于护眼不护眼,省不省电,我认为最好的方法还是——把手机放下!
+至于护眼不护眼,省不省电,我认为最好的方法还是——把手机放下!
-一个人建议大家学习在地板上睡觉,而理由是想要让自己不需要依赖任何外界的东西就能好好活下去。睡眠对人类而言是一件大事,如果只能在床上睡着的话,她会觉得自己的身体不受控制。
+一个人建议大家学习在地板上睡觉,而理由是想要让自己不需要依赖任何外界的东西就能好好活下去。睡眠对人类而言是一件大事,如果只能在床上睡着的话,她会觉得自己的身体不受控制。
-一个人表示「写作即思想」。他是一个热爱撰写博客文章的人,并在纽约市举办了一个自己的写作俱乐部。
+一个人表示「写作即思想」。他是一个热爱撰写博客文章的人,并在纽约市举办了一个自己的写作俱乐部。
-室友觉得这个想法很棒,问我如何开发一个个人网站——哼,这个家伙根本不理解个人网站的魅力,吃了我一嘴教程后到现在也没有搓出来一个网站。
+室友觉得这个想法很棒,问我如何开发一个个人网站——哼,这个家伙根本不理解个人网站的魅力,吃了我一嘴教程后到现在也没有搓出来一个网站。
-一个人认为话疗没有用,根本就是胡言乱语,不会解决任何人的问题。不过这个人的想法过于主观,没有足够可以说服人的证据,不太严谨。
+一个人认为话疗没有用,根本就是胡言乱语,不会解决任何人的问题。不过这个人的想法过于主观,没有足够可以说服人的证据,不太严谨。
-过去和室友大打出手的时候,室友去过几次话疗,结果都不尽人意:要么是建议她去搞开放式关系,要么是建议她去找心理医生、嗑药。这个话题本该会勾起她表达欲,但是提出者给出论点让她觉得有些幼稚。
+过去和室友大打出手的时候,室友去过几次话疗,结果都不尽人意:要么是建议她去搞开放式关系,要么是建议她去找心理医生、嗑药。这个话题本该会勾起她表达欲,但是提出者给出论点让她觉得有些幼稚。
-一个人提议大家去专注于平日不会注意到的细节。他经常会在家附近走一条固定的路线。一次,他决定放慢脚步,鉴赏大自然,却发现家附近有个温室——天啊,他住在这里这么多年了,居然不知道这里有这么大一个温室!
+一个人提议大家去专注于平日不会注意到的细节。他经常会在家附近走一条固定的路线。一次,他决定放慢脚步,鉴赏大自然,却发现家附近有个温室——天啊,他住在这里这么多年了,居然不知道这里有这么大一个温室!
-一个人说千万不要觉得自己奇怪,想到什么就去做吧。这个想法虽然很不错,但我认为实现起来很困难。
+一个人说千万不要觉得自己奇怪,想到什么就去做吧。这个想法虽然很不错,但我认为实现起来很困难。
-作为室友和另一个人初次举办的活动,她们俩都没有什么经验,后来也承认不够成熟,经过审核的话题也不够符合标题「不受欢迎的想法」,甚至有些听上去依然是车轱辘话来回转。不过第二次举办的活动里,能聊的东西就多了起来。
+作为室友和另一个人初次举办的活动,她们俩都没有什么经验,后来也承认不够成熟,经过审核的话题也不够符合标题「不受欢迎的想法」,甚至有些听上去依然是车轱辘话来回转。不过第二次举办的活动里,能聊的东西就多了起来。
-首先是鸽子被严重低估了!纽约客们可能都很讨厌这个动物吧:到处都是,到处拉屎。但其实这个动物并不是原生动物,而是因为战争、以「信鸽」的形式来到这片土地的。
+首先是鸽子被严重低估了!纽约客们可能都很讨厌这个动物吧:到处都是,到处拉屎。但其实这个动物并不是原生动物,而是因为战争、以「信鸽」的形式来到这片土地的。
-提出这个观点的人认为,鸽子也可以很美丽。想要了解更多的话,可以见这个 [鸽子博物馆]。
+提出这个观点的人认为,鸽子也可以很美丽。想要了解更多的话,可以见这个 鸽子博物馆。
-我想到了「赛鸽」和「和平鸽」。这样说来,鸽子同时是「信息」以及「和平」的象征,可以拼接在一起,合成「沟通可以达成世界和平」的想法。
+我想到了「赛鸽」和「和平鸽」。这样说来,鸽子同时是「信息」以及「和平」的象征,可以拼接在一起,合成「沟通可以达成世界和平」的想法。
-不过真的要给一个动物贴上如此宏大的标签么?「和平鸽」这个概念出自于《圣经》的诺亚方舟。当时诺亚放出了鸽子去打探地上的情况,而鸽子叼了橄榄叶回来,暗示地上已经有植物生长,洪水退了、世界和平了。
+不过真的要给一个动物贴上如此宏大的标签么?「和平鸽」这个概念出自于《圣经》的诺亚方舟。当时诺亚放出了鸽子去打探地上的情况,而鸽子叼了橄榄叶回来,暗示地上已经有植物生长,洪水退了、世界和平了。
-或许将动物的美拉回到动物本身是最好的——你认为三文鱼的代表色是橙色吗?
+或许将动物的美拉回到动物本身是最好的——你认为三文鱼的代表色是橙色吗?
-接着是一个颇有争议性的话题:男人和女人如果互换了生殖系统,会发生什么?提出该话题的人认为,这世上的大多数人祖上都是皇族或者强奸犯。这是因为过去,只有强壮的人才能够繁殖后代。抛开在地位和权利上「强大」的皇族,强奸犯则是因为暴力、强迫了女性诞下自己的子嗣。皇族终究是少数人,那么剩余的多数人都是强奸犯,且越暴力越好。
+接着是一个颇有争议性的话题:男人和女人如果互换了生殖系统,会发生什么?提出该话题的人认为,这世上的大多数人祖上都是皇族或者强奸犯。这是因为过去,只有强壮的人才能够繁殖后代。抛开在地位和权利上「强大」的皇族,强奸犯则是因为暴力、强迫了女性诞下自己的子嗣。皇族终究是少数人,那么剩余的多数人都是强奸犯,且越暴力越好。
-他接着提出一个猜想:在基因层面上,男人会更暴躁。再加上男人的生殖系统是侵入性的,并且男人可以让多个女人怀孕,而女人一次只能怀一个男人的胎,因此男人想要授种的欲望更加强烈,其生殖系统也更希望他更加暴力。那么在互换后,具备这样的生殖系统的女人也会变得暴躁起来——生殖系统决定了人类的很多事情。
+他接着提出一个猜想:在基因层面上,男人会更暴躁。再加上男人的生殖系统是侵入性的,并且男人可以让多个女人怀孕,而女人一次只能怀一个男人的胎,因此男人想要授种的欲望更加强烈,其生殖系统也更希望他更加暴力。那么在互换后,具备这样的生殖系统的女人也会变得暴躁起来——生殖系统决定了人类的很多事情。
-室友提出反对。假设这个互换是突然发生的,那它仅改变了男女的「先天条件」,但是没有改变长期以来人类形成的文化,所以男人不会突然变得女性化,而女人也不会突然变得男性化。作为证据,她提出了双胞胎说:一对同卵双胞胎如果在不同的环境下生长,最终会长成完全不同的人。这意味着对人类而言,后天环境更加重要。
+室友提出反对。假设这个互换是突然发生的,那它仅改变了男女的「先天条件」,但是没有改变长期以来人类形成的文化,所以男人不会突然变得女性化,而女人也不会突然变得男性化。作为证据,她提出了双胞胎说:一对同卵双胞胎如果在不同的环境下生长,最终会长成完全不同的人。这意味着对人类而言,后天环境更加重要。
-当然,这些都是以极端的情况作为前提来讨论的。是男人并不意味着他就是个强奸犯,拥有男性生殖系统也不意味着他一定会有 _有毒男子气质_——我曾经写过 [相关的文章],并认为这是被社会化的结果,而不是生理层面上的。将繁衍的生物学内驱力强行和系统性的社会暴力表现替换,实在是过于极端了,毕竟生殖器官本身并不具备实施社会暴力的主观意志,认为男性生殖器官更有侵入性一点我也不好说,毕竟男性也可以被女性强奸。
+当然,这些都是以极端的情况作为前提来讨论的。是男人并不意味着他就是个强奸犯,拥有男性生殖系统也不意味着他一定会有 有毒男子气质——我曾经写过 相关的文章,并认为这是被社会化的结果,而不是生理层面上的。将繁衍的生物学内驱力强行和系统性的社会暴力表现替换,实在是过于极端了,毕竟生殖器官本身并不具备实施社会暴力的主观意志,认为男性生殖器官更有侵入性一点我也不好说,毕竟男性也可以被女性强奸。
-下一个话题是「大学是给一些不愿进社会的人们的拖延症」。提出方是一个没有上过大学的人。说实话,她是我目前见过最自律的人了,不仅自学了大量技能,就连生活的方方面面也不愿意交给其他人来做。她热爱音乐、走马拉松、尝试做自己从来没有做过的任何事情……令人忍不住去羡慕她。
+下一个话题是「大学是给一些不愿进社会的人们的拖延症」。提出方是一个没有上过大学的人。说实话,她是我目前见过最自律的人了,不仅自学了大量技能,就连生活的方方面面也不愿意交给其他人来做。她热爱音乐、走马拉松、尝试做自己从来没有做过的任何事情……令人忍不住去羡慕她。
-说回她的论点。她认为大学对自己而言没有用处,只是让不想接受现实的人们再当几年的学生。室友也赞同这一点。不过这一论点很快被两个人否决了:一个认为,这是因为提出方和室友两个人都是主动性很强的人,在大学前就知道自己应该做什么工作。那如果是对未来感到迷茫的人呢?比方说他自己,就是上了大学才发现自己对物理学感兴趣,继而成为了一个物理老师,因此他永远都不会后悔自己上了大学。
+说回她的论点。她认为大学对自己而言没有用处,只是让不想接受现实的人们再当几年的学生。室友也赞同这一点。不过这一论点很快被两个人否决了:一个认为,这是因为提出方和室友两个人都是主动性很强的人,在大学前就知道自己应该做什么工作。那如果是对未来感到迷茫的人呢?比方说他自己,就是上了大学才发现自己对物理学感兴趣,继而成为了一个物理老师,因此他永远都不会后悔自己上了大学。
-另一个不赞同的人则认为,「大学无用」这个结论根本上是因为社会让太年轻的人去上大学了。刚刚成年的人们根本不知道未来该怎么办,也不知道社会是什么样的,去了大学自然不知道应当学什么专业。他希望高中生们毕业后,就立即步入社会工作,然后再决定是否要读本科,专精某项技能。
+另一个不赞同的人则认为,「大学无用」这个结论根本上是因为社会让太年轻的人去上大学了。刚刚成年的人们根本不知道未来该怎么办,也不知道社会是什么样的,去了大学自然不知道应当学什么专业。他希望高中生们毕业后,就立即步入社会工作,然后再决定是否要读本科,专精某项技能。
-这很难让我回应……我讨厌大学是真,但更多是我觉得大学教育德不配位——贵死了,教育水平也一般般,不如自学。所以我也算在大学之前就知道自己想做什么的人。不过并不是所有人一出生就知道自己想做什么,为这些人提供帮助的,我想正是学校。
+这很难让我回应……我讨厌大学是真,但更多是我觉得大学教育德不配位——贵死了,教育水平也一般般,不如自学。所以我也算在大学之前就知道自己想做什么的人。不过并不是所有人一出生就知道自己想做什么,为这些人提供帮助的,我想正是学校。
-但是我有一个更为宏观的看法:本科的重点是培养搞学术的人,而不是专业的工作者。后者应该去读专科。很多人错将本科认为是可以学习到专业技术的地方,毕业后却去找更适合专科毕业生的工作。同理,现在的职场也只认本科生,将适合专科生的工作交给本科生。结果社会越来越乱,出现了大量的本科生,出社会找工作却发现学校教的知识根本不是职场需要的技能。
+但是我有一个更为宏观的看法:本科的重点是培养搞学术的人,而不是专业的工作者。后者应该去读专科。很多人错将本科认为是可以学习到专业技术的地方,毕业后却去找更适合专科毕业生的工作。同理,现在的职场也只认本科生,将适合专科生的工作交给本科生。结果社会越来越乱,出现了大量的本科生,出社会找工作却发现学校教的知识根本不是职场需要的技能。
-这也是为什么我觉得双方的观点其实并不冲突:赞同方更注重于步入职场的实用性,都是创业者;不赞同方想要的是在学术上的引导,因为他之后当的也是和学术相关的老师。
+这也是为什么我觉得双方的观点其实并不冲突:赞同方更注重于步入职场的实用性,都是创业者;不赞同方想要的是在学术上的引导,因为他之后当的也是和学术相关的老师。
-至于是否应该让高中毕业生先去工作,我认为该想法的内核是值得称赞的,目前教育系统的一大痛点正是大多数年轻人在做出人生最昂贵的一次投资时,对真实的社会运作一无所知。
+至于是否应该让高中毕业生先去工作,我认为该想法的内核是值得称赞的,目前教育系统的一大痛点正是大多数年轻人在做出人生最昂贵的一次投资时,对真实的社会运作一无所知。
-过去我认识到了一个观点,即 K-12 教育中应当多出哪些课程,其中就有税法、金钱管理等长大后必须要学习的内容。可惜,K-12 教育里没有这些,想要学习税法的需要自行去申请成为税法专业学生。社会残酷地没有为刚刚成年的个体提供试错和探索的空间,导致一个又一个人发觉大学真是个笑话,自己不过是又当了四五年高中生。
+过去我认识到了一个观点,即 K-12 教育中应当多出哪些课程,其中就有税法、金钱管理等长大后必须要学习的内容。可惜,K-12 教育里没有这些,想要学习税法的需要自行去申请成为税法专业学生。社会残酷地没有为刚刚成年的个体提供试错和探索的空间,导致一个又一个人发觉大学真是个笑话,自己不过是又当了四五年高中生。
-而已经经历过社会毒打,参与过真实工作场景的人们,更能清楚自己欠缺什么。重返校园接受本科教育时,他们拥有着更强的目的性。我没少见过年纪可以做我父母的本科生们比谁都要更努力地钻研学业,让我忍不住去关注他们。
+而已经经历过社会毒打,参与过真实工作场景的人们,更能清楚自己欠缺什么。重返校园接受本科教育时,他们拥有着更强的目的性。我没少见过年纪可以做我父母的本科生们比谁都要更努力地钻研学业,让我忍不住去关注他们。
-不过这个想法实践起来有些不切实际,并不是因为它有误,而是目前社会运转逻辑已经固定了。我们的劳动力市场过于前置了学历门槛,剥夺了高中毕业生通过低门槛工作去探索世界的过渡期,就连 Gap Year 这个概念在很多国家都属于奢侈品。社会默认将年轻人直接从高中强行推进大学,导致许多人只是为了逃避就业而继续读书。本科是如此,硕士也是如此。
+不过这个想法实践起来有些不切实际,并不是因为它有误,而是目前社会运转逻辑已经固定了。我们的劳动力市场过于前置了学历门槛,剥夺了高中毕业生通过低门槛工作去探索世界的过渡期,就连 Gap Year 这个概念在很多国家都属于奢侈品。社会默认将年轻人直接从高中强行推进大学,导致许多人只是为了逃避就业而继续读书。本科是如此,硕士也是如此。
-最后一个话题就没有前一些话题那么有争议性了:自私和无私的代价。我和室友在高中时就参与过这个话题的辩论。或许是一直待一块的原因,臭味相投,我和她的看法是一致的:世界上根本没有什么所谓的「无私」,无私不过是在客观结果上利他的自私,因为无私者是被自己的想法驱动而去做利他型行为的,获得最多的也是自我的满足。
+最后一个话题就没有前一些话题那么有争议性了:自私和无私的代价。我和室友在高中时就参与过这个话题的辩论。或许是一直待一块的原因,臭味相投,我和她的看法是一致的:世界上根本没有什么所谓的「无私」,无私不过是在客观结果上利他的自私,因为无私者是被自己的想法驱动而去做利他型行为的,获得最多的也是自我的满足。
-当时我哗啦啦写了一篇作文表示人类有着自私的基因,却被另一个同学评论认为这种想法是不人道的。现在我已经不记得我做出了什么样的回应,但我现在可以说,自私并不意味着要和恶意、贪婪和剥削等词汇挂钩,承认自己自私也并不妨碍我们在宏观层面建立道德——人类的自私基因为了延续,演化出来的恰恰正是合作、同理心和无私奉献等策略,因为互助的群体存活率远高于互相残杀的群体。
+当时我哗啦啦写了一篇作文表示人类有着自私的基因,却被另一个同学评论认为这种想法是不人道的。现在我已经不记得我做出了什么样的回应,但我现在可以说,自私并不意味着要和恶意、贪婪和剥削等词汇挂钩,承认自己自私也并不妨碍我们在宏观层面建立道德——人类的自私基因为了延续,演化出来的恰恰正是合作、同理心和无私奉献等策略,因为互助的群体存活率远高于互相残杀的群体。
+## 链接
-=> https://sami.eljabali.org/go-gray-not-cray-why-you-should-grayscale-your-phone/ 另一篇文章
-=> https://www.theamericanpigeonmuseum.org/pigeon-breed-gallery 鸽子博物馆
-=> /posts/5c85.html#%E6%9C%89%E6%AF%92%E7%94%B7%E6%80%A7%E6%B0%94%E8%B4%A8%E4%B8%8E%E6%80%A7%E5%88%AB%E6%9D%83%E5%8A%9B 相关的文章
+=> https://sami.eljabali.org/go-gray-not-cray-why-you-should-grayscale-your-phone/ 另一篇文章
+=> https://www.theamericanpigeonmuseum.org/pigeon-breed-gallery 鸽子博物馆