MoreRSS

site iconArlmy | 素生修改

书评、影评、哲学写作等。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

Arlmy | 素生的 RSS 预览

Toots 412 2026 Mar.22 - Mar.28

2026-03-29 17:37:27

Mar.22

  • 一定要有作为人的独特需求,不是为了完成,而是为了显现、表达,品牌能加速人类共性表达的传播
  • 希望有更多农产品能先完成产地标识认证,然后再以IP的名义跟餐饮、奶茶等品牌合作
  • 找回十几年前的自己是不是奢望
  • “寻找那些在未来十年,无论AI如何发展、无论屏幕里的世界如何光怪陆离,人类作为一个碳基生物依然绝对离不开,且能帮助人更好地作为一个人去生活的公司。”

Mar.23

  • 加了norobot也仍会有robot来呢,但搜索引擎的收录已经很少了
  • 7账,大跌看傻了,中印混血二次元的印度学校生活,生活和朋友是重要的
  • use old tech
  • CanIRun.ai — Can your machine run AI models?
  • 果然要经历一次才能懂……这次可以好好检查下基金回撤了
  • 工劳短视频平台
  • 好像只剩下游戏,可以自定义一个数字世界的全部空间和规则
  • 人类在不断向AI交出重构、提问、审视、迭代的权力
  • 从我的文件中挖掘,替换关键词,然后生成平行宇宙的我
  • 人如何重获灵魂自由,机会就在眼前
  • 手敲输入是在给思考以阻力
  • 建议把认知科学的基本知识纳入中学课本
  • 看两个群最近对Typeless和豆包输入法的各种安利和吹捧,感叹世界上果然还是傻子多,以及,真的没人在看书了,以后选股选基绝对向巴芒看齐,只买傻子也能经营好的公司,只投傻子也能明白的商业模式
  • 漫漫扬-伯克希尔资料库
  • yzr278892/arxiv-daily-researcher
  • “由于我的大部分研究代码都是公开的,我经常会告诉编码代理将我的存储库克隆到tmp并使用它们作为输入。” 谁说工程师不懂“卡片式写作”的

Mar.24

  • 你是碳基,只能玩碳基的游戏
  • Emacs Org-transclusion 没玩过
  • 啊魔法是这样理解的吗
  • 饼叔谈到克制,感觉里面有一种说不清的东西
  • 梦里梦到个傻子,醒了发现呆爷在我旁边呼噜
  • 游戏是个好平台工具
  • 不在意腿,所以膝盖会坏,不在意心,所以心会被污染
  • 7账,做个评估框架,听一个情感陪伴(PUA识别)项目
  • “ta是一位具有深刻自我觉察力的现代生活实验者。ta在一个失控的世界里,通过对油盐酱醋、软件信息的绝对控制,来构建自己微观宇宙的秩序。ta表面上依赖这些供应商,实际上,ta依赖的是那个拥有选择权和鉴赏力的自己。” 卧槽真能分析出来啊
  • 原来我去过敖鲁古雅,甚至可能见过玛丽亚·索

Mar.25

  • AI还真挺擅长找反共识和反常识的
  • 外部的世界熵增难以逃脱,但减熵是守住自己的红线底线
  • “可以通过签署《一致行动人协议》、《利润定向分配协议》或《内部承包/对赌协议》,将股权上的表决权与分红权彻底剥离。”
  • 书账,中国东北沦陷十四年史纲要,长夜萤火,绿色的谷,烛心集
  • 缓解下自己的应激,把大部分微信联系人的消息通知关了,群聊全部折叠
  • 未来做傻子的学习成本降低了,做相对清醒的学习成本陡然增加了,很多事情都要从头开始学习和仔细梳理,要每一天都有大量的闲置注意力,坚决不能上学和上班,虽然效率增加了(未来更可能与消费强绑定),但需要搞清楚的黑箱会越来越多

Mar.26

  • 今日工作已过量
  • 你屁股才屎心儿的
  • 土豆子的戏份也太少了
  • 门缝里看玄奘的舍利
  • 耳机里放着黑金属专辑,放在一边放着,像极了在下雨,时而小雨,时而暴雨

Mar.27

  • “每个故事都需要自己的语言。”
  • 老子一走BIFF就特么赫尔佐格展映了!艹!
  • 哇哦我好像可以通过整合rss来聚合很多渠道的信息,甚至留言和评论,Reddit应该也可以
  • AI第一次让很多数字化了的手搓工作有了“他者”和对照
  • 我开始对仍在认真敲字的人改观了,要珍惜
  • “朝鲜捕获的海鲜通过图们江大桥运到中国延吉。对中国商人而言,进口螃蟹是利润丰厚的买卖。”
  • 7账,水怪在延吉旅行,一边旅游一边工作,看大学,评朝鲜族美食从夯到拉,吃新鲜桑葚

Mar.28

  • 在楼上看斑鸠和鸽子飞好像扑棱蛾子啊
  • 喜迁莺 其一 韦庄
    • 人汹汹,鼓冬冬,襟袖五更风。
    • 大罗天上月朦胧,骑马上虚空。
    • 香满衣,云满路,鸾凤绕身飞舞。
    • 霓旌绛节一群群,引见玉华君。
  • 浣溪沙 其一 薛昭蕴
    • 红蓼渡头秋正雨,印沙鸥迹自成行。
    • 整鬟飘袖野风香。
    • 不语含嚬深浦里,几回愁煞棹船郎。
    • 燕归帆尽水茫茫。
  • 哇靠三万步

CHANGELOG

  • 20260329 Arlmy 创建、整理
  • 20260329 Arlmy 发布

摘:《How to Do Nothing》

2026-03-22 14:10:46

Jenny Odell “How to Do Nothing: Resisting the Attention Economy”

台版:如何「無所事事」:一種對注意力經濟的抵抗

以下摘录为自译(Deepseek)版

个人短评:从观鸟开始,获得了与他者的连接,走进树林,溯河而上,去沼泽地,重建着自己的注意力和语言,停一下、慢一些也是一种拒绝。看到并融入自然,并以另一种方式得到了“我”与万物相连的结论。

Notes

  • 面对这个日益物质主义与实用主义的时代……未来若出现这样的社会亦非怪诞:那些为精神愉悦而活之人,将不再有权要求在阳光下占据一席之地。作家、思想家、梦想家、诗人、形而上学者、观察者……那些试图破解谜题或作出评判之人,将成为时代错位的存在,注定像鱼龙与猛犸象般从地球表面消失。(Giorgio de Chirico)
  • 凝视这棵树,就是在凝视一个始于截然不同甚至难以辨认的世界的事物:那时的人类居民维护着当地的生命平衡而非破坏它,海岸线的形状尚未改变,grizzly bears, California condors, and Coho salmon仍在东湾栖息(这些物种都在十九世纪从东湾消失了)。这不是寓言故事。事实上,那甚至不算太久远。正如Old Survivor枝头的新芽必然连接着它古老的根系,当下也必然生长于过去。当我们发现自己沉溺于失忆的当下和虚拟世界千篇一律的美学时,这种根植性正是我们迫切需要的。
  • 当我给予自己足够时间,抽离当前理解生产力与成功的资本主义逻辑时,心中浮现的正是同样的问题。生产出什么的生产力?以何种方式成功?为谁成功?我生命中最幸福、最充实的时刻,是当我全然觉知自己活着,体验着凡人之躯所承载的全部希望、痛苦与悲伤。那些时刻里,将成功视为目的论目标毫无意义;那些时刻本身就是目的,而非阶梯上的台阶。
  • 我们被无意义的谈话、疯狂数量的文字和图像所困扰。愚蠢从不盲目或沉默。所以问题不在于让人们表达自己,而在于提供些许孤独与沉默的间隙,让他们最终可能找到值得言说之事。压制性力量不会阻止人们表达,而是强迫他们表达;无话可说是一种解脱,保持沉默的权利弥足珍贵,因为只有这样,才有可能构建那些罕见且日益稀少、或许值得言说的事物。(from Gilles Deleuze in Negotiations)
  • 我了解深度聆听时,我意识到自己已经在无意中实践了一段时间——只不过是在观鸟的语境中。事实上,我一直觉得观鸟这个说法很有趣,因为观鸟活动中至少有一半实际上是听鸟。(我个人认为应该直接改名为注意鸟bird-noticing。)无论你怎么称呼它,这种实践与深度聆听的共同之处在于:观察鸟类确实要求你什么都不做。观鸟与上网查询信息截然相反。你无法真正寻找鸟类;你无法让一只鸟出来向你表明身份。你最多只能安静地行走,等待听到什么,然后一动不动地站在树下,用你的动物感官去判断它在哪里、是什么。
  • 停下来倾听的时刻与那些能持续吸引注意力的建筑所具有的迷宫特质,有一个重要的共同点:它们各自都以自己的方式实施着某种中断,将人从熟悉的领域中抽离。每当我看到或听到一只不寻常的鸟,时间就会停止,之后我会疑惑自己刚才身在何处,就像漫步在某个意想不到的秘密通道中会让人感觉脱离了线性时间。即使短暂或瞬间,这些地方和时刻都是退隐之所,就像更长时间的退隐一样,它们会影响我们回归日常生活时的看待方式。
  • 我父亲在我这个年纪时,也在湾区担任技术员期间经历了类似的抽离期。他对工作感到厌倦,盘算着积蓄足够支撑他辞职过一段极简生活。这段时光最终持续了两年。当我问起他那两年的生活,他说自己大量阅读、骑自行车、研究数学和电子学、钓鱼、与朋友兼室友长谈,还坐在山间自学长笛。过了一段时间他意识到,自己对工作和外部环境的诸多不满,其实更多源于自身。用他的话说:只剩你独自面对自己的糟心事,所以必须处理它。但那段时光也让我父亲领悟到创造力所需的开放状态,甚至可能是必要的无聊或虚无。
  • 我注意到与我们自主安排这一类别相关的事物类型:休息、思考、鲜花、阳光。这些都是身体性的、人性化的事物,而这种身体性是我将要回头探讨的。当领导组织这次八小时运动具体迭代的劳工团体领袖塞缪尔·戈姆珀斯(Samuel Gompers)发表题为What Does Labor Want?的演讲时,他得出的答案是:“它想要大地及其丰饶。” 在我看来,重要的不是八小时的“休闲”或“教育”,而是“八小时由我们自主安排”。尽管休闲或教育可能包含其中,但描述这段时间最人性化的方式是拒绝定义它。
  • a break to do nothing, to just listen, to remember in the deepest sense what, when, and where we are.
  • 晚上没什么事可做,所以我和其中一位艺术家有时会坐在屋顶上看日落。她是天主教徒,来自中西部;我则有点像是典型的加州无神论者。我非常怀念我们在那里进行的关于科学和宗教的慵懒、漫无边际的谈话。令我印象深刻的是,我们谁也没有说服对方——那并不是重点——但我们倾听了彼此,并且我们确实都带着对对方立场更细致的理解,在离开时变得不同了。
  • 在历史的某个节点,文明走错了方向,绕了一条弯路,最终走进了死胡同。他们觉得,唯一的办法就是退出,一路回到起点,回到意识的原始源头,文化的真正基础:土地(the land)。
  • 这意味着始终与人们的期望背道而驰。如同早前的庄周,第欧根尼认为世上每个"清醒"之人实则都疯了——因为他们竟会遵从那些维护着贪婪、腐败与无知世界的习俗。他践行着一种近乎颠倒的美学:倒着走在街道上,只在人群散场时踏入剧院。当被问及希望如何安葬时,他答道:“头朝下埋。因为很快下就会变成上。” 平日里,他会在盛夏滚过滚烫的沙地,也会拥抱覆满积雪的雕像。 他质疑抽象概念与那种只为病态世界培养职业人才、却不教导年轻人如何过好生活的教育。有人曾见他整个下午都在粘合书页。尽管许多哲学家都奉行苦修,第欧根尼却连这点都要刻意表演。一次,看见孩童用手捧水喝,他扔掉自己的杯子说:"这孩子已在简朴生活上胜过了我。"另一次,他高声赞叹老鼠活得多么俭省。
  • 我们需要第欧根尼,不仅为了消遣,也不仅为了展示 alternatives 的存在,更因为像他这样的故事——即便数百年后——仍在丰富着我们关于拒绝的语汇
  • 德勒兹认为,巴托比的回应以其独特的语言结构“在语言内部雕琢出一种异质语言,使整体直面沉默,倾覆于沉默之中”。
  • 西塞罗推论:若相信万物皆由命运或天性注定,就无人需为任何事负责,正义便无从谈起。用现代话语说,我们都将沦为算法。更甚者,我们将失去超越天性倾向、完善自我的动力。
  • 然而这意味着,即便出狱之后,梭罗的视角仍将他禁锢在永久的拒绝生活中。他“悄然向国家宣战”,不得不作为一个流亡者生活在与自身价值观格格不入的世界里。梭罗的“国度”实际上正是我先前描述的“抽身独立”。从未来审视当下,以正义视角透视不公,梭罗必须栖身于未实现的困顿之境。但希望与自律使他坚守于此,始终朝向“那个更完美辉煌的国度——我虽能想象,却尚未在任何地方得见”。
  • “In Zen they say: If something is boring after two minutes, try it for four. If still boring, then eight. Then sixteen. Then thirty-two. Eventually one discovers that it is not boring at all.” John Cage
  • 从第一天起,我就感到兴奋不已……我意识到这种图片更接近我们实际的观看方式,也就是说,不是一眼看全,而是通过离散、分离的一瞥,然后我们将这些一瞥构建成我们对世界的连续体验……有上百个跨越时间的独立一瞥,我从这些一瞥中综合出对你的生动印象。这真是太棒了。(霍克尼)是的,这就是出片摄影所失去的东西。
  • 一直珍视这部电影(The Exchange)那具有欺骗性的宁静;它展示了即使是最微小的断裂,也能突然让一切变得鲜明起来。就像那些参观霍克尼作品后报告“看到了东西”的访客——或者像我自己沿着格罗夫街行走时被声音迷住一样——这部电影的转折点完全是感知性的。它与我们“注视”现实而非“透过”现实看时,现实那无穷无尽的奇异本质有关。
  • 与"我-它"相对,“我-你"关系承认他者的不可化约性与绝对平等性。在这种关系中,我通过给予你全然的关注,与完整的"你"相遇;因为我既不投射也不"解读"你,世界便收缩为你我之间充满魔力的专属时刻。在"我-你"关系中,“你"不必是人;布伯著名的例子是以不同方式观看一棵树,其中除一种方式外,其余皆被他归为"我-它”。他可以"将其视为一幅图画”,描述其视觉元素;可以将其看作某个物种的实例、自然法则的表达,或是纯粹的数字关系。"在所有这些过程中,树始终是我的对象,拥有其位置、时间跨度、种类与状态,"他说。但接着存在"我-你"的可能性:"如果意愿与恩典结合,也可能发生这样的事:当我凝视这棵树时,我被带入一种关系,树不再是一个’它’。那种排他性的力量攫住了我。
  • 研究人员提出,注意力是开启无意识感知与意识感知之间闸门的钥匙。没有这把注意力钥匙,刺激物根本无法进入意识层面。作为一位试图通过艺术影响和拓宽注意力的艺术家,我不禁将这个视觉注意力的发现推演到广义的注意力范畴。我们只看见寻找之物已是老生常谈,但这种“信息已进入大脑却未被意识接纳”的概念,似乎解释了为何我们会突然发现始终存在之物的诡异感。比如无数次听完交响乐后走过格罗夫街时,各种声响其实早已进入耳朵并被处理——毕竟我生理上并无听力障碍。是约翰·凯奇作品的演绎,或者说它对我注意力的调谐,为那些声音提供了通过“闸门”进入意识感知的“钥匙”。当我转移注意力的焦点,那些早已传入大脑的信号终于获得了进入意识感知的许可。
  • 在科林和迈尔斯互相凝视时那种不适和不自然的时刻,你能感受到注意力中“延伸向”(ad tendere)的张力。他们不仅仅是目光投向对方;他们是在看见彼此。正是这场戏让我清晰地理解了注意力、感知、偏见和意志之间的联系。实际上,种族主义观点的对立面正是布伯的“我-你”感知,它坚决拒绝让他者坍缩为任何工具性范畴。回想一下,布伯拒绝将树视为图像、物种或数字关系。相反,“你”拥有与我相同的深度。以这种方式看待意味着放弃所有更简单、更习惯性的“观看”方式,因此,这是一种脆弱的状态,需要自律来维持。
  • 我们大多数人都经历过感知方式的改变:你一旦注意到某件事(或有人向你指出),就会开始处处留意它。举个简单的例子,在我成为狂热的观鸟者之前,我的注意力所"呈现"的世界中鸟类远不如现在丰富。参观德扬博物馆的游客,他们的注意力被大卫·霍克尼重新塑造,开始关注微小细节、丰富色彩和万花筒般的布局;约翰·凯奇的演出则重塑了我的注意力,让我开始关注旋律音乐之外的声音。当你的注意力模式发生改变,你便会以不同的方式呈现现实。你开始在一个截然不同的世界里行动与生活。
  • 突然间,你从前一晚独自在自己的小世界里上床睡觉,变成了被扔到街上,与那些你可能没怎么打过招呼的邻居混在一起,并依恋上那些人,关心他们,帮助他们,试图看看你能为彼此做些什么,谈论你的感受。
  • 若让现实互动受困于信息茧房和品牌化身份,我们将永远失去被震撼、被挑战、被改变的可能——永远看不见自身之外的天地,包括自身特权。这并非否定与相似者交往的价值(理论上)。但若注意力始终局限于此,我们就活在“我-它”(I-It)世界里,万物仅在与我们的关联中才有意义。我们将更难邂逅那些颠覆认知、重构世界的人——那些本可能深刻改变我们的人,如果我们允许的话。
  • 我总觉得“独处自然”这个说法充满幽默的矛盾感,根本不可能实现。当园中空无一人时,我仍视其为社交场所——与松鸦、渡鸦、暗眼灯草鹀、鹰、火鸡、蜻蜓和蝴蝶共处,更不用说那些橡树、红杉、七叶树和玫瑰本身。我常从书页间抬头,任注意力追随觅食的唧鹀,沉浸于它的感知尺度,流连在玫瑰丛下微小的昆虫宇宙。这些年来我注意到,当听见看不见的鸟鸣时,我的问题已从“那是什么?”转变为“那是谁?”。每一天,乃至每一个念头,都因“谁在场”而截然不同。
  • 当我试图思考“思考”本身时——比如追溯某个想法的来源——英语的局限性迫使我表述为“我”“产生(produced)”了“想法”。但这些都不是稳定实体,其间的语法关系更易产生误导。“想法”并非边界清晰、瞬间成型的成品——这正是艺术家们厌恶“这件作品的灵感是什么?”这类采访问题的原因之一。任何想法实际上都是自我与所遇事物之间不稳定、流动的交汇点。推而广之,思想并非发生在我“内部”,而是存在于我所感知的“我”与“非我”之间。
  • “…with everything, the plants and the rocks and the fungus. Eventually, to behold is to become beholden to.”
  • 如果我们把事物说成是惰性或无生命的物体,我们就否定了它们积极与我们互动和交流的能力——我们排除了它们回应我们关注、将我们带入无声对话、告知和教导我们的能力。
  • If what I’ve said about the ecology of the self is true, then it may only be among the most elaborate web of the nonhuman that we can most fully experience our own humanity.
  • 显现空间(the space of appearance)就像一个共同的“我-你”关系,它抵制了坍塌成“我-它”关系的诱惑,在这种关系中,群体的任何部分都不会对另一方显得抽象,或者像柏拉图的理想城邦那样,“有些人有权命令,而另一些人被迫服从”。在这个空间里,我被赋予权力去看和被看,听和被听,那些对这个空间投入与我相等的人也是如此。与 Twitter 的抽象公众不同,显现空间是我的“理想受众”,因为在这里,我被关注、被理解、被挑战——从而为我在这里所说和所听的内容提供了一个已知的语境。在这种相遇形式中,我和其他任何人都不必浪费时间和精力去争夺语境,或者为最低共同点的公众意见包装我们的信息。我们聚集,我们说我们想说的,然后我们行动。
  • 基本上,显现空间是一种足够小且集中的相遇,其参与者的多元性没有被坍塌。这种多元相遇的动态是权力可能性的基础;我们从对话的形式中直观地知道这一点,两个论点的相互作用会带来新的东西。
  • 在那片灿烂夺目的湛蓝中,我看见了它们:成百上千,或许成千上万的鸟儿,聚集在浅滩,又腾空而起,化作闪烁的巨大鸟群,转向时由墨黑幻化为银白。我竟意外地哭了出来。尽管这片区域无疑会被归为“自然景观”,但在我眼中,它简直是个奇迹——一个让我觉得无论是自己还是这个世界都不配拥有的奇迹。在这片不可思议的壮丽景象中,这片沼泽似乎代表着所有受威胁的空间,所有即将消逝、正在消逝的事物。但我也第一次意识到,我想保护这个地方的愿望也是一种自我保护的本能,因为我也需要这样的空间,因为我无法在纯粹的人类社群中感受到真正的归属。失去这种联系我会枯萎;没有其他生命的生活似乎不值得过。承认这片空间及其中的一切濒临危险,意味着承认我自己也身处险境。这片野生动物保护区就是我的避难所。
  • 这很可怕,但我别无选择。与地方丰富性的这种关系也让我能够参与其中,让我能够像鸟群一样变形,向内陆流动,流向大海,起起落落,呼吸。这是一个重要的提醒:作为一个人,我是这种复杂性的继承者——我是天生的,不是被设计的。这就是为什么当我担心河口的多样性时,我也在担心我自己的多样性——担心我最美好、最鲜活的部分被一种无情的实用逻辑所覆盖。当我担心鸟类时,我也在担心我所有可能的自我走向灭绝。当我担心没有人会看到这些浑浊水域的价值时,我也在担心我自己那些无用的部分、我自己的神秘和我自己的深度会被剥夺。
  • 追求效率、注重产出的时间观来看,这种行为似乎是不负责任的。我看起来像个逃兵。但从这个地方的视角来看,我看起来像是终于开始关注它的人。而从我自己——那个真正体验生活、最终在离世时需要面对自己的人——的视角来看,我会知道那一天我在地球上真实地生活过。在这样的时刻,甚至连注意力经济本身的问题都逐渐淡去。如果你要我回答这个问题,我可能会说——目光依然停留在地面上生长和爬行的事物上——“I would prefer not to.”

CHANGELOG

  • 20260322 Arlmy 创建
  • 20260322 Arlmy 整理、发布

Toots 411 2026 Mar.15 - Mar.21

2026-03-22 13:47:27

Mar.15

  • “气温回升使越冬的蚜虫和红蜘蛛开始活动和繁殖,直接危害嫩叶和花苞。”
  • 多为普通人和真实需求赋能,而不是为大平台和洗脑买单
  • 7账,看酒蒙子喝酒跟爸妈聊上白酒了,当年8元一瓶的茅台也没人买得起呀,继续整理日记
  • 书账,猫在故纸堆,春之死,犬滩歌谣,生而为熊
  • “Cloudflare 工程师这一次能够复刻成功,主要原因是 Next.js 有完备的文档、庞大的社区文章、以及完整的测试用例。AI 模拟的每一个 API,只要能够通过原有的接口测试,就能确认百分百兼容。如果拿不到测试用例,谁知道代码行为是否一致,谁敢放到生产环境运行。可以想象,为了防止复刻,大型软件项目一定会保护自己的测试用例。测试才是新的护城河。”
  • 梦里好亮呀
  • 饭账,带江草堂烧仔鲢、锅巴肉片(好)、肉末蔬菜豆花、小炒翠笋、甜水面(好)、凉拌折耳根、花香蓝莓
  • “At its core Pentagram is – and always has been – about doing good work. That is basically the business plan.” (归根结底,Pentagram 的一切都关乎做出好作品。这,基本上就是我们的全部商业计划。)(Pentagram)

Mar.16

  • 一瞬间就知道诗词歌赋的价值了
  • 忽然感觉回到了二十几年前,博客和个人主页可以自行定义和增减组件的时代,我的页面我说了算,最重要的mindset的改变就是:我不用怕写代码了
  • 7账,列清单,博客改版想法,2026特别提及文档
  • 传统机械化的测试用例能坚持多久呢?龙虾能火爆不就是因为它懂得灵活、变通思考吗?toB还能再坚持几年,toC估计下个月就可以放弃抵抗了
  • 请一定保护好OC,这将是非常珍贵的核心资产,抽象地说,里面凝聚着时间、情感、情绪、状态等诸多难以完全重现的变量,以及长期互动积累下来的敏感(用的人当然能分辨真假)
  • 书账,昭明文选,花间集校注
  • 当你的情绪可以被预判
  • 中国让我开始质疑我是谁
  • 「我们大多数人都经历过感知方式的改变:你一旦注意到某件事(或有人向你指出),就会开始处处留意它。举个简单的例子,在我成为狂热的观鸟者之前,我的注意力所"呈现"的世界中鸟类远不如现在丰富。参观德扬博物馆的游客,他们的注意力被大卫·霍克尼重新塑造,开始关注微小细节、丰富色彩和万花筒般的布局;约翰·凯奇的演出则重塑了我的注意力,让我开始关注旋律音乐之外的声音。当你的注意力模式发生改变,你便会以不同的方式呈现现实。你开始在一个截然不同的世界里行动与生活。」
  • “《玛纳斯》现存最完整的版本是在克孜勒苏柯尔克孜自治州阿合奇县的“大玛纳斯奇”居素甫·玛玛依演唱基础上整理而成的。”
  • “养”龙虾,这个动词就是它能火的原因,切中农业基因
  • “声音已经从一种不可变的生物密码,彻底降维成了一种可以被随时调用、编程和篡改的数字资产”,好嘛……那我还是自己录吧
  • Auphonic - AI sound engineer
  • Fun-CosyVoice3-0.5B - a Hugging Face Space by FunAudioLLM

Mar.17

  • 用1小时给博客加了热力图
  • The kid in front looked up from his clipboard, scrutinizing me. “So would you say…care?” he asked.
  • “突然间,你从前一晚独自在自己的小世界里上床睡觉,变成了被扔到街上,与那些你可能没怎么打过招呼的邻居混在一起,并依恋上那些人,关心他们,帮助他们,试图看看你能为彼此做些什么,谈论你的感受。”
  • 「若让现实互动受困于信息茧房和品牌化身份,我们将永远失去被震撼、被挑战、被改变的可能——永远看不见自身之外的天地,包括自身特权。这并非否定与相似者交往的价值(理论上)。但若注意力始终局限于此,我们就活在“我-它”(I-It)世界里,万物仅在与我们的关联中才有意义。我们将更难邂逅那些颠覆认知、重构世界的人——那些本可能深刻改变我们的人,如果我们允许的话。」
  • 「我总觉得“独处自然”这个说法充满幽默的矛盾感,根本不可能实现。当园中空无一人时,我仍视其为社交场所——与松鸦、渡鸦、暗眼灯草鹀、鹰、火鸡、蜻蜓和蝴蝶共处,更不用说那些橡树、红杉、七叶树和玫瑰本身。我常从书页间抬头,任注意力追随觅食的唧鹀,沉浸于它的感知尺度,流连在玫瑰丛下微小的昆虫宇宙。这些年来我注意到,当听见看不见的鸟鸣时,我的问题已从“那是什么?”转变为“那是谁?”。每一天,乃至每一个念头,都因“谁在场”而截然不同。」
  • 「当我试图思考“思考”本身时——比如追溯某个想法的来源——英语的局限性迫使我表述为“我”“产生(produced)”了“想法”。但这些都不是稳定实体,其间的语法关系更易产生误导。“想法”并非边界清晰、瞬间成型的成品——这正是艺术家们厌恶“这件作品的灵感是什么?”这类采访问题的原因之一。任何想法实际上都是自我与所遇事物之间不稳定、流动的交汇点。推而广之,思想并非发生在我“内部”,而是存在于我所感知的“我”与“非我”之间。
  • “…with everything, the plants and the rocks and the fungus. Eventually, to behold is to become beholden to.”
  • “如果我们把事物说成是惰性或无生命的物体,我们就否定了它们积极与我们互动和交流的能力——我们排除了它们回应我们关注、将我们带入无声对话、告知和教导我们的能力。”
  • “If what I’ve said about the ecology of the self is true, then it may only be among the most elaborate web of the nonhuman that we can most fully experience our own humanity.”
  • 时间戳很重要
  • 远远看到了红耳鹎
  • “截至 2025 年 12 月,我国网上外卖用户规模达 6.30 亿人,较 2024 年 12 月增长 3748 万人,占网民整体的 56.0%,较 2024 年 12 月提升 2.6 个百分点。截至 2025 年 12 月,我国生成式人工智能用户规模达 6.02 亿人,较 2024 年 12 月增长 3.53 亿人;在整体人口中的普及率达 42.8%,较 2024 年 12 月提升 25.2 个百分点。”
  • “截至 2025 年 12 月,我国网民主要集中在中青年群体,10-49 岁网民占比合计为 61.4%;50 岁及以上网民群体占为 34.4%。”
  • “截至 2025 年 12 月,我国网民的人均每周上网时长23为 32.5 个小时,较 2024 年 12 月提升 3.8 个小时。(2024 年每周 28.7 小时、2023 年每周 16.1 小时)”
  • “2025 年 12 月各细分互联网行业中,短视频是网民使用时长净增量最多的应用,较 2024 年 12 月增长 94.3 亿小时,同比增长 14.1%;AIGC25是同比增长率最高的应用,较 2024 年 12 月增长 5.1 亿小时。”
  • “互联网应用用户规模和网民使用率,短视频增长1.6%,网络支付降低2.5%,网络购物降低4.7%,搜索引擎降低9.7%,网上外卖增长2.6%,网络文学降低5.2%”
  • “生成式人工智能的主要群体为年轻用户,但已开始向中高龄群体渗透。19 岁及以下用户占比最高,达 26.4%;20-29 岁用户占比为 21.3%;30-39 岁用户占比为 22.0%;40 岁以上用户占比合计 30.3%,半年提高 4.9 个百分点。主要用户是大专及以上群体,占比达 38.6%;其次为初中学历用户,占比为 29.9%。学生是使用生成式人工智能用户的主要群体,占比达 30.1%;其次是企业/公司管理人员/一般职员、个体户/自由职业者,占比分别为 16.2%、14.2%。”
  • 两会 受权发布 新华网
  • 7账,跟老外交流Basalt fiber,我口语忒差了2333

Mar.18

  • 7账,出门取文件,路上看到晚樱,记下了双元路
  • 书账,道元禅师语录,制造亚洲
  • 神华的持有体验真的很好
  • OKLCH Color Picker & Converter

Mar.19

  • 语言也只是刚用了几千年的一种工具
  • 「显现空间(the space of appearance)就像一个共同的“我-你”关系,它抵制了坍塌成“我-它”关系的诱惑,在这种关系中,群体的任何部分都不会对另一方显得抽象,或者像柏拉图的理想城邦那样,“有些人有权命令,而另一些人被迫服从”。在这个空间里,我被赋予权力去看和被看,听和被听,那些对这个空间投入与我相等的人也是如此。与 Twitter 的抽象公众不同,显现空间是我的“理想受众”,因为在这里,我被关注、被理解、被挑战——从而为我在这里所说和所听的内容提供了一个已知的语境。在这种相遇形式中,我和其他任何人都不必浪费时间和精力去争夺语境,或者为最低共同点的公众意见包装我们的信息。我们聚集,我们说我们想说的,然后我们行动。」
  • “基本上,显现空间是一种足够小且集中的相遇,其参与者的多元性没有被坍塌。这种多元相遇的动态是权力可能性的基础;我们从对话的形式中直观地知道这一点,两个论点的相互作用会带来新的东西。”
  • 「在那片灿烂夺目的湛蓝中,我看见了它们:成百上千,或许成千上万的鸟儿,聚集在浅滩,又腾空而起,化作闪烁的巨大鸟群,转向时由墨黑幻化为银白。我竟意外地哭了出来。尽管这片区域无疑会被归为“自然景观”,但在我眼中,它简直是个奇迹——一个让我觉得无论是自己还是这个世界都不配拥有的奇迹。在这片不可思议的壮丽景象中,这片沼泽似乎代表着所有受威胁的空间,所有即将消逝、正在消逝的事物。但我也第一次意识到,我想保护这个地方的愿望也是一种自我保护的本能,因为我也需要这样的空间,因为我无法在纯粹的人类社群中感受到真正的归属。失去这种联系我会枯萎;没有其他生命的生活似乎不值得过。承认这片空间及其中的一切濒临危险,意味着承认我自己也身处险境。这片野生动物保护区就是我的避难所。」
  • “这很可怕,但我别无选择。与地方丰富性的这种关系也让我能够参与其中,让我能够像鸟群一样变形,向内陆流动,流向大海,起起落落,呼吸。这是一个重要的提醒:作为一个人,我是这种复杂性的继承者——我是天生的,不是被设计的。这就是为什么当我担心河口的多样性时,我也在担心我自己的多样性——担心我最美好、最鲜活的部分被一种无情的实用逻辑所覆盖。当我担心鸟类时,我也在担心我所有可能的自我走向灭绝。当我担心没有人会看到这些浑浊水域的价值时,我也在担心我自己那些无用的部分、我自己的神秘和我自己的深度会被剥夺。”
  • 「追求效率、注重产出的时间观来看,这种行为似乎是不负责任的。我看起来像个逃兵。但从这个地方的视角来看,我看起来像是终于开始关注它的人。而从我自己——那个真正体验生活、最终在离世时需要面对自己的人——的视角来看,我会知道那一天我在地球上真实地生活过。在这样的时刻,甚至连注意力经济本身的问题都逐渐淡去。如果你要我回答这个问题,我可能会说——目光依然停留在地面上生长和爬行的事物上——“I would prefer not to.”」
  • 上千个文件直接拿出来,瞬间就升级了我的输入法词库
  • “最近一个月,最常用的提示词是:顺着你的新思路走。因为在接收到大量启发式反问之后,我越来越感到,“爹味先验"和"自信的人择”,正在限制AI的能力。”(赵纯想)
  • “最近一个月,我开始意识到,软件诞生所需的时间,和它的生命周期一样,越来越短暂。接下来的日子,软件不需要被迭代,只需要被不断生成。所有的版本都是临时版本,就连最终版本也是"重新生成",而非迭代而来。” “走在江边,江水,草地,人群,变得比往日更加鲜活,动人。他们是唯一不可以生成的东西了。”(赵纯想)
  • cloudflare/vinext: Vite plugin that reimplements the Next.js API surface — deploy anywhere
  • 一身冷汗

Mar.20

  • “更多高度依赖燃油发电和物资海运的酒店涨价通知还在路上” 酒店也可以跟着涨价啊
  • “椋鸟在11月初来到罗马,3月初飞走。它们的迁徙活动非常准时,迁徙时间可能不完全取决于温度的高低,而是取决于天文原因,例如日照持续的时间。在罗马,椋鸟夜间会在能遮风御寒的常绿乔木上栖息;白天,在城市很难觅食,它们就结成百余只规模的小组,飞到环城公路以外的乡下找吃的。它们是习惯集体生活的群居动物:当它们在一片田地停留时,一半的鸟安心进食,另一半则在田地四周,仔细观察可能会出现的捕食者;当它们来到下一片田地时,双方互换角色。到了晚上,椋鸟回到温暖的城市,在树上栖宿之前,会组成庞大的鸟阵,在罗马的天空中盘旋。但不管怎么说,椋鸟仍然是对冬天的寒冷非常敏感的动物:一连几夜寒风凛冽之后,很容易就能发现,在那些不足以遮蔽风寒的大树下散落着很多它们的尸体。”
  • 阿拉伯咖啡是手搓,意式是工业
  • “令人遗憾的是,通常在科学中,特别是在硬科学中,获得结果所需的中间步骤往往无迹可寻,我们无从知晓是什么激发了科学家的灵感。因为科学之外的考量不会出现在学术论文和著作的字里行间,尤其是在数学中,但物理学和其他学科也存在这种情况。书面文本是绝对纯净的,用一种正式的语言来书写,其中很少提及非技术性的问题。在更通俗的文本中偶尔会有一些前科学论证的痕迹,例如庞加莱的文章,这些文本中存在元科学的推理,但在科学家撰写的几乎所有论著中,这样的主题都成了禁忌。”
  • agent仍在加速,只有真人手搓可以与之抗衡
  • 我需要人的随机性,不需要过滤出来的周刊,摄取信息时,我不想跟世界同频。我把各个平台的关注量都控制在100甚至50以内,偶尔看看推荐,但多数时候只看自己的关注。关注量最多的是豆瓣,2000+,但主要用于看友邻的书影音评分(不看大众评分),算是一种经过自己筛选后的个人数据集合,这是我需要的,但很难让感兴趣的人把所有思考都分享出来。
  • 快速融入AI浪潮的人都开始不阅读了(或阅读被AI处理过的文本),亲自阅读将成为收益很高的杠杆
  • “南仁东(1945年2月19日-2017年9月15日),男,满族,吉林辽源人,中国天文学家、中国科学院国家天文台研究员,人民科学家。曾任FAST工程首席科学家兼总工程师,主要研究领域为射电天体物理和射电天文技术与方法,负责国家重大科技基础设施500米口径球面射电望远镜(FAST)的科学技术工作。”
  • 杠铃在剧烈地向慢、停、降、弃一侧倾斜
  • AI Exposure of the US Job Market
  • openclaw淹没了所有的“学习”的“过程”
  • IFTTT的功能在n8n上研究明白了,用时3小时

Mar.21

  • 工具直觉要靠亲自与工具的长期磨合,语言也不例外
  • 欧阳炯、李珣、牛希济
  • “洛阳城里春光好,洛阳才子他乡老。柳暗魏王堤,此时心转迷。”(韦庄)这也算移民文学了吧
  • 7账,京东买的耳机到了,食贫道更新了柬埔寨篇,开看,吃大枣
  • 书账,The Diaries of Paul Klee(1898-1918),True to Life
  • “5月起非洲咖啡零关税入华”
  • 繁花落锦,美西的新品,三倍浑浊IPA,好好喝!
  • 胡赛这么厉害啊

CHANGELOG

  • 20260322 Arlmy 创建、整理
  • 20260322 Arlmy 发布

最近惦念 20260228

2026-03-22 02:46:27

Anthropocene, Capitalocene, Plantationocene, Chthulucene: Making Kin

Reset Spacetime

个体有降维的自由(只要决定了就可以)

“AI是披着重工业外衣的知识服务业”

“(第欧根尼)丰富着我们关于拒绝的语汇”

最可怕的事情只有一件:沉溺在自己的叙事里不愿出来

“Stay in the midst of life” 世间百态之中

“like Bartleby’s answer, refuses the terms of the question itself.” 拒斥结构本身

“无所事事是灵魂在进行光合作用”

DO NOTHING

“a break to do nothing, to just listen, to remember in the deepest sense what, when, and where we are.”

Pera/πήρα 乌托邦,Typhos/τύφος 虚妄、傲慢、错觉,Atyphia/ἀτυφία 心智澄明、旁观、跳出

人脑会飞

穿越不是愿望不是想象,人本来就可以重新开始,随时都可以

变奏,创作,发泄,写作,向前看,重新来,把你的愤怒写出来唱出来,就没事了

越来越多人明白了建设自己的信息库和数据库,还有记录日常和写日记的重要性

业务模式:公司必须把核心价值转移到高维物理数据(很多维度被压平了,要回归其他维度)、合规认证资质(牌照、准入标准、安全认证)、底层的硬件信任根(物理层面写死的安全机制),以及生态工具链上(工具平台,核心是将复杂的流程抽象成工具)。

公司的核心算法/商业模式,必须极度内敛(高复用、小团队,算法和智力已变为基础设施),硬件适配极其包容(灰度解耦,跨越硬件也能运行),工程落地具备强大的“退场能力”(工具链和各种功能赋能,去定制化,做轻)。

老板与员工的合作方式,也要改写了。注定要有更多的IP、更多的合作模式创新,宣誓个人的主权和所有权(so,将个人能力产品化的能力也变得很重要)

共有、共担,有效的互动和信任,才是最高效的,而非分离,但从经济模型(创造收益和利润)的角度,不占有优势,世界的异化和下一步演化,或许因为AI的出现,提前和加强了

做平衡者、连接者,不断积累着信任,很难输

  • “所有关系都被契约化、数据化、效率化的世界里,共有、共担、信任这古老的模式,反而会因为稀缺而产生巨大的溢价。”
  • 共享“平庸”。去奇观化。

以你对我的了解来描述我。以这些了解,推荐给我小模型的宪法prompt(0.md)。建议我应该如何选型和积累、整理数据,以及备份我的soul.md和日志。最后,如何简化,且把损失降到最低。


CHANGELOG

  • 20260229 Arlmy 创建
  • 20260309 Arlmy 发布

觉得会离不开的供应商盘点(2026年3月)

2026-03-21 18:05:27

目前觉得会离不开的供应商们盘点,感觉每年都在变化,整理下打个时间戳,尽量以有品牌、有IP的为主,无依赖的品牌不计入。

粮油副食

  • 胚芽米(吉林)
  • 长粒香(新疆察布查尔)
  • 葱香锅饼(江苏徐州)
  • 吾双面包(河南)、谷悟面包&麦的多(成都)
  • 桃李全麦切片、红豆(辽宁)
  • 沁州黄小米(山西)
  • 德富祥五仁咸油茶(陕西)
  • 扁形意大利面(Molisana、百味来)
  • 蝴蝶意大利面(百味来)
  • 麦片、玉米片:世壮

肉蛋奶

  • 猪肉:安庆、运城、雅安、四川藏香猪
  • 牛肉:内蒙古南屯牛肉/牛排
  • 羊肉:内蒙古草原宏宝、简阳羊肉
  • 鱼:国联三去黄花鱼
  • 牛奶:悦鲜活、菊乐、天润、淳轩、葛兰纳诺、兰雀
  • 燕麦乳:大咖国际
  • 酸奶:蒙域、真零

调味品

  • 菜籽油:贵州农家菜籽油(二级以下、压榨法)
  • 豆油:中安
  • 香油:河南农家小磨香油(二级以下、水代法)
  • 橄榄油:山姆的特级初榨
  • 生抽:鹃城牌犀浦酱油
  • 老抽:中坝
  • 料酒:护国岩
  • 醋:保宁醋、宁化府陈醋(5年)
  • 香糟卤:鼎丰
  • 酸菜:二丫
  • 辣白菜:崔奶奶
  • 豆豉:浏阳鲜豆豉
  • 沙茶酱:迎春楼
  • 番茄酱:半球红(新疆)
  • 其他:刨灰婆烧辣椒、Kara佳乐椰浆、S&B咖哩块(中辛)、新疆焉耆辣皮子

农产品/水果

  • 黄金百香果/钦蜜9号(广西)
  • 隰县玉露香梨(山西)
  • 青州蜜桃(山东)
  • 瑞雪青苹果(咸阳)
  • 宁夏骏枣
  • 济薯26号
  • 宁夏枸杞
  • 花香蓝莓(云南)
  • 三代金桔(广西)
  • 丰滋壶瓶枣(山西)
  • 香叭香原味瓜子(新疆)
  • 洪湖九孔藕(湖北)
  • 枇杷(龙泉、汶川)
  • 白玉枇杷(江苏苏州)
  • 五月脆/青脆李/蜂糖李(四川)
  • 红啤梨(三门峡陕州区)
  • 鸡心果(锦州)
  • 大枣(辽宁朝阳孙家湾)
  • 去皮核桃仁(新疆、云南)
  • 耙耙柑、血橙(四川)
  • 赣南脐橙(江西)
  • 猕猴桃(河南西峡红心猕猴桃、贵州修文猕猴桃)
  • 小台芒、凯特芒
  • 栗子:紫玉

零食

  • 洪湖香莲泡藕带
  • 斯娃泡泡干
  • 洽洽葵珍瓜子
  • 西尔丹雪莲辣椒丝
  • 杜毛女棒棒馍花椒味、杜毛女石子馍杂粮味(陕西蒲城)
  • 北堤麻辣肉(湖南常德)
  • 唯怡花生露
  • 荔浦芋头条
  • 喜达捞面
  • 天津欣乐月饼
  • 奇多

家居日化

  • 洗洁精:家安米精华餐具净
  • 洗护:大宝、vellie山羊奶洗发露
  • 纸巾:Tempo
  • 插排:公牛、AOC
  • 厨房纸:五月花
  • 中性笔:斑马ZEBRA黑色&复古色
  • 软头笔:蜻蜓TOMBOW笔之助
  • 记号笔:sharpie
  • 笔记本:Luv Letter(FC)、whatever、NOTE FOR、良山、morning glory
  • 收纳盒:优得比、齐心
  • 杯子:16开
  • 牙膏:贝利达
  • 常用药:北京同仁堂牛黄解毒片、贵州百灵双羊喉痹通颗粒、羚锐通络祛痛膏、泰诺
  • 猫用:领先罐头、Nikoro猫砂、法米娜猫粮、蓝氏猫条

软件&硬件

  • 音乐:Spotify、Radiooooo、Pandora
  • 笔记本:ROG
  • 手机:OPPO、一加
  • 耳机:声阔Q30降噪耳机
  • 配件:倍思
  • 电视:坚果投影 N1、百度网盘TV版、网易爆米花
  • 漫画:漫画人
  • RSS:Tiny Tiny RSS、Folo
  • 阅读:Librera、KOReader、BOOX Leaf2
  • 时间统计:时间日志
  • 笔记:Logseq
  • Launcher:Niagara
  • 输入法:Rime、小企鹅
  • 待办:Twos
  • AI:Gemini

烟酒茶咖

  • 咖啡豆:LAVAZZA、KREMOSO、Kimbo、大咖国际、喜神(KFC同款)
  • 六堡茶:梧州三鹤六堡茶
  • 普洱茶:澜沧古茶0081
  • 滇红:凤牌经典58
  • 苏打水:Chang象牌
  • 白酒:汾酒青花25
  • STOUT:SUPER BOCK、帝磨栏、迷失海岸、左手
  • IPA:美西
  • 其他:Boddington宝汀顿、CHIMAY红帽、KASTEEL、Leffe黑啤、CROFT波特(Tawny)

播客

  • 翻转电台&世界苦茶
  • 西海之声(主版节目)
  • 东京脱线时间
  • 不可理论
  • 鼓腹而游
  • 这是干啥的
  • 游荡集

UP

  • 食贫道
  • 大瑶同学remix
  • 中气爱
  • 摸鱼事务所
  • 傲慢的小肉包
  • papi酱

其他盘点

  • 公众号关注数:196
  • 服务号关注数:198
  • 小红书关注数:67
  • 豆瓣友邻数: 1570
  • 微信好友数:2966

CHANGELOG

  • 20260321 Arlmy 创建、发布

Hexo 增加热力图

2026-03-19 14:34:36

已经布署在了INDEX页面,12年的时间一下就非常具象化了。

鸣谢

借鉴了howaboutqiu如何给Hugo博客添加热力图-椒盐豆豉制作hexo热力图-Green Dolphin Dance

Hexo配置

  1. 在主题文件夹layout\_partial内,创建heatmap.pug文件,代码后附,如果主题模板是ejs格式的,让AI帮你转换下就行。

  2. 在主题文件夹layout内,在page.pug、post.pug文件内,增加代码

page.pug内,将if page.heatmap两行代码(缩进关系不要变),放在页面标题后、正文前。

1
2
3
4
5
6
7
8
9
10
block content
.post
h1.post-title(onclick="copyUrlSegment()")= page.title

//- 放在正文内容之前(推荐,一打开页面就能看到热力图)
if page.heatmap
include _partial/heatmap.pug

.post-content
!= page.content

post.pug内,将if page.heatmap两行代码(缩进关系不要变),放在页面标题后、正文前。

1
2
3
4
5
6
7
8
9
10
11
12
block content
.post
h1.post-title(onclick="copyUrlSegment()")= page.title
.post-meta= page.date.format(config.date_format)

//- 放在.post-meta之后.post-content之前,与它们平级
if page.heatmap
div(style="margin: 2rem 0;")
include _partial/heatmap.pug

.post-content
!= page.content
  1. 在想要显示热力图的页面,增加一行heatmap: true,比如我放在Index页面,在页面文件头部增加既可。
1
2
3
4
5
---
title: INDEX
date: 2025-09-30 09:08:27
heatmap: true
---
  1. 布署上线,hexo clean & hexo g -d

heatmap.pug文件代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
//- 1. 数据预处理
-
var yearWeekData = {};
var yearsSet = new Set();

site.posts.forEach(function(post) {
var y = post.date.isoWeekYear();
var w = post.date.isoWeek();
yearsSet.add(y);

var key = y + '-' + w;
if (!yearWeekData[key]) {
yearWeekData[key] = { count: 0, posts: [] };
}
yearWeekData[key].count += 1;
yearWeekData[key].posts.push({
title: post.title,
link: url_for(post.path)
});
});

var allYears = Array.from(yearsSet).sort(function(a, b){ return b - a });
if(allYears.length === 0) allYears = [new Date().getFullYear()];
var maxYear = allYears[0];
var minYear = allYears[allYears.length - 1];

var displayYears = [];
for(var i = maxYear; i >= minYear; i--) {
displayYears.push(i);
}

//- 2. DOM 结构
#heatmap-container
#tooltip

//- 3. 样式表
style.
#heatmap-container {
width: 100%;
overflow: visible;
margin-top: 40px;
margin-bottom: 30px;
}

.heatmap-cell {
rx: 1.5px;
ry: 1.5px;
transition: opacity 0.2s ease;
stroke: none !important;
}

.heatmap-cell.has-post {
cursor: default; /* 改为默认箭头,因为现在不直接点击色块了 */
}

.heatmap-cell:hover {
opacity: 0.5;
}

.year-text, .legend-text, .legend-number, #tooltip {
font-family: 'Source Han Serif SC', 'Source Han Serif', 'Noto Serif CJK SC', serif;
}

.year-text {
font-size: 14px;
font-weight: bold;
fill: #888888;
}

.legend-text {
font-size: 14px;
fill: #333333;
font-weight: bold;
}

.legend-number {
font-size: 13px;
fill: #888888;
}

html[data-dark="true"] .legend-text { fill: #dddddd; }
html[data-dark="true"] .year-text,
html[data-dark="true"] .legend-number { fill: #777777; }

/* Tooltip 样式:删除了 pointer-events: none,加入隐藏机制 */
#tooltip {
position: absolute;
background-color: rgba(255, 255, 255, 0.98);
color: #222222;
border: 1px solid #e0e0e0;
border-radius: 2px;
padding: 10px 14px;
opacity: 0;
visibility: hidden; /* 默认隐藏,防止阻挡正常页面点击 */
font-size: 13px;
transform: translate(-50%, -100%);
line-height: 1.6;
z-index: 1000;
white-space: nowrap;
box-shadow: 0 4px 12px rgba(0,0,0,0.08);
}

/* 优雅的链接样式 */
#tooltip a {
color: inherit;
text-decoration: none;
display: block;
border-bottom: 1px dashed rgba(136, 136, 136, 0.3);
padding: 2px 0;
transition: all 0.2s ease;
}
#tooltip a:last-child {
border-bottom: none;
}
#tooltip a:hover {
color: #000;
border-bottom: 1px solid #000;
}

html[data-dark="true"] #tooltip {
background-color: rgba(30, 30, 30, 0.98);
color: #dddddd;
border: 1px solid #444444;
box-shadow: 0 4px 12px rgba(0,0,0,0.6);
}

html[data-dark="true"] #tooltip a:hover {
color: #fff;
border-bottom: 1px solid #fff;
}

//- 4. 脚本逻辑
script(src="https://d3js.org/d3.v5.min.js")
script.
document.addEventListener("DOMContentLoaded", function () {
var data = !{JSON.stringify(yearWeekData)};
var displayYears = !{JSON.stringify(displayYears)};

var fullGrid = [];
displayYears.forEach(function(y, rowIdx) {
for(var w = 1; w <= 53; w++) {
var key = y + '-' + w;
var cellData = data[key] || { count: 0, posts: [] };
fullGrid.push({
year: y,
week: w,
row: rowIdx,
col: w - 1,
count: cellData.count,
posts: cellData.posts
});
}
});

var cellWidth = 10;
var cellHeight = 16.18;
var cellPaddingX = 3;
var cellPaddingY = 8;
var labelWidth = 50;
var topMargin = 45;

var width = labelWidth + (53 * (cellWidth + cellPaddingX));
var height = topMargin + (displayYears.length * (cellHeight + cellPaddingY));

var svg = d3.select("#heatmap-container").append("svg")
.attr("viewBox", "0 0 " + width + " " + height)
.attr("preserveAspectRatio", "xMidYMid meet");

function getFillColor(count, isDark) {
if (isDark) {
if (count === 0) return "#1e1e1e";
if (count === 1) return "#3a3a3a";
if (count === 2) return "#5c5c5c";
if (count === 3) return "#858585";
return "#b3b3b3";
} else {
if (count === 0) return "#ebebeb";
if (count === 1) return "#c2c2c2";
if (count === 2) return "#949494";
if (count === 3) return "#666666";
return "#333333";
}
}

svg.append("text")
.attr("class", "legend-text")
.attr("x", 0)
.attr("y", 16)
.text("Posts by week");

var legendCounts = [0, 1, 2, 3, 4];
var legendGroup = svg.append("g").attr("transform", "translate(125, 4)");
var legendSpacing = 42;

legendGroup.selectAll("rect")
.data(legendCounts)
.enter().append("rect")
.attr("class", "heatmap-cell")
.attr("width", cellWidth)
.attr("height", cellHeight)
.attr("x", function(d, i) { return i * legendSpacing; })
.attr("y", 0);

legendGroup.selectAll("text")
.data(["0", "1", "2", "3", "4+"])
.enter().append("text")
.attr("class", "legend-number")
.attr("x", function(d, i) { return i * legendSpacing + cellWidth + 6; })
.attr("y", 13)
.text(function(d) { return d; });

svg.selectAll(".year-text.axis")
.data(displayYears)
.enter().append("text")
.attr("class", "year-text axis")
.attr("x", 0)
.attr("y", function(d, i) {
return topMargin + i * (cellHeight + cellPaddingY) + cellHeight - 3;
})
.text(function(d) { return d; });

var gridGroup = svg.append("g")
.attr("transform", "translate(" + labelWidth + "," + topMargin + ")");

var cells = gridGroup.selectAll(".heatmap-cell.grid-cell")
.data(fullGrid)
.enter().append("rect")
.attr("class", function(d) { return "heatmap-cell grid-cell" + (d.count > 0 ? " has-post" : ""); })
.attr("width", cellWidth)
.attr("height", cellHeight)
.attr("x", function(d) { return d.col * (cellWidth + cellPaddingX); })
.attr("y", function(d) { return d.row * (cellHeight + cellPaddingY); });

// 【核心改进】:增加缓冲计时器,解决鼠标移动时的断层消失问题
var hideTimeout;
var tooltip = d3.select("#tooltip");

cells.on("mouseover", function(d) {
if (d.count > 0) {
clearTimeout(hideTimeout);
tooltip.style("visibility", "visible").transition().duration(200).style("opacity", 1);

// 渲染顶部周次说明,以及下方的文章可点击链接
var text = "<div style='margin-bottom: 8px; font-weight: bold; color: #888; font-size: 11px; border-bottom: 1px solid #eee; padding-bottom: 4px;'>" + d.year + "年 第" + d.week + "周 (" + d.count + "篇)</div>";
d.posts.forEach(function(p) {
text += "<a href='" + p.link + "'>" + p.title + "</a>";
});
tooltip.html(text);

var cellBox = this.getBoundingClientRect();
tooltip.style("left", (cellBox.left + cellBox.width / 2) + "px")
.style("top", (cellBox.top - 8 + window.scrollY) + "px");
}
})
.on("mouseout", function() {
// 离开色块时,给用户留出 250 毫秒的移动缓冲时间
hideTimeout = setTimeout(function() {
tooltip.transition().duration(200).style("opacity", 0).on("end", function() {
d3.select(this).style("visibility", "hidden");
});
}, 250);
});

// 为 Tooltip 本身增加事件,确保鼠标悬停在框内时不消失
tooltip.on("mouseover", function() {
clearTimeout(hideTimeout);
d3.select(this).style("opacity", 1).style("visibility", "visible");
})
.on("mouseout", function() {
// 鼠标离开悬浮框,彻底隐藏
hideTimeout = setTimeout(function() {
tooltip.transition().duration(200).style("opacity", 0).on("end", function() {
d3.select(this).style("visibility", "hidden");
});
}, 250);
});

function updateCellStyles() {
var isDarkTheme = document.querySelector('html').dataset.dark === 'true';
legendGroup.selectAll("rect").style("fill", function(d, i) {
return getFillColor(i, isDarkTheme);
});
cells.style("fill", function(d) {
return getFillColor(d.count, isDarkTheme);
});

// 暗黑模式下,Tooltip 内的分割线也要适应变暗
if(isDarkTheme) {
document.querySelectorAll('#tooltip div').forEach(el => el.style.borderBottom = '1px solid #444');
} else {
document.querySelectorAll('#tooltip div').forEach(el => el.style.borderBottom = '1px solid #eee');
}
}

updateCellStyles();

document.body.addEventListener("themechange", function () {
updateCellStyles();
});
});

CHANGELOG

  • 20260319 Arlmy 创建、发布