summaryrefslogtreecommitdiff
path: root/content/article
diff options
context:
space:
mode:
authoreltrac <hi@eltr.ac>2026-04-19 16:34:46 +0800
committereltrac <hi@eltr.ac>2026-04-19 16:34:46 +0800
commited4793aba95e61ee6817b3cb5338d3e8abb81a00 (patch)
tree62cff6409e170153389a144f6f45e32f3e7349d8 /content/article
parentb42645bc8d9547f6476cdbab928487619abb6e34 (diff)
[article] new draft
Diffstat (limited to 'content/article')
-rw-r--r--content/article/on-blog-links.md104
1 files changed, 104 insertions, 0 deletions
diff --git a/content/article/on-blog-links.md b/content/article/on-blog-links.md
new file mode 100644
index 00000000..eeda2991
--- /dev/null
+++ b/content/article/on-blog-links.md
@@ -0,0 +1,104 @@
++++
+title = '关于「林卷」页面的详细说明'
+subtitle = ''
+slug = ''
+tags = ['破事儿']
+categories = ''
+date = 2026-04-19T15:12:58+08:00
+draft = true
+toc = true
++++
+
+本来不想淌浑水,像以往一样保持沉默是最好的,但我发现还是有不少人误解[林卷](/linkroll/)页面存在的意义,以至于对页面内容的微小变动都产生了不必要的关注和猜想。所以,解释是必要的,尽管我有预感写完这篇文章之后我被误解的概率会只增不减,但至少我把话说明了。<!--more-->
+
+## 极客死亡计划没有友情链接
+
+本网站没有「友情链接」这个东西。我**不是**在重新定义友情链接,也不想要改变任何人,我只是没有友情链接这个东西。我不知道这样说够不够清楚了:极客死亡计划**没有**友情链接。
+
+林卷页面里列出的博客链接,请读者看清楚了,我从来没有说过它是友情链接,我写的是「我常看的博客」。不要因为不少其他博客喜欢用「左邻右舍」这样的词代替「友情链接」四个字,就以为我说的也是一个意思。请读者再看得仔细一些,我是这样说明「我常看的博客」这一栏内容的:
+
+> 以下内容直接从我的 RSS 阅读器导出的 OPML 文件生成,是我订阅的所有 RSS 源,包含我常读的博客和关注的媒体。每次构建时乱序输出。
+
+所以,如果发现我添加了谁或者删除了谁,这不是因为我和对方达成了某种契约,友好地进行了交换,也不代表有任何矛盾和冲突发生。这是个相当中性且相当主观的过程:我发现了我觉得有意思的网站,我把他添加到了 RSS 阅读器里,后来被导出为 OPML 格式,我的静态网站生成器 Hugo 直接读取 OPML 文件生成列表。
+
+请允许我为你详细讲解这个过程有多么无聊,多么**缺少**钩心斗角。
+
+在我博客主题的 [layouts/_shortcodes/opml-links.html](https://src.eltr.ac/eltrac/hugo-theme-venin/src/branch/master/layouts/_shortcodes/opml-links.html) 文件中,我定义了一个可以嵌入在页面中的短代码。它从网站源代码的 `/data` 目录下获取名为 `rss` 的数据,这里指的是 [rss.xml](https://src.eltr.ac/eltrac/geedeapro/src/branch/master/data/rss.xml) 文件。
+
+```html
+{{ $opml := hugo.Data.rss }}
+
+<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
+{{ range shuffle $opml.body.outline }}
+ {{ $title := index . "-title" }}
+ {{ $url := index . "-htmlUrl" }}
+ {{ if and $title $url }}
+ {{ $parts := split $url "/" }}
+ {{ $url := printf "%s//%s/" (index $parts 0) (index $parts 2) }}
+ <a href="{{ $url }}" target="_blank"
+ class="block rounded-md overflow-hidden box-border p-4"
+ style="background-color: var(--block-background-color);
+ color: var(--text-color);
+ text-decoration: none;">
+ <h3 class="m-0 text-lg font-medium">{{ $title }}</h3>
+ </a>
+ {{ end }}
+{{ end }}
+</div>
+```
+
+`rss.xml` 文件也不是我手动编写的,而是从我的 RSS 阅读器直接导出。我使用基于命令行的开源 RSS 阅读器 [blogtato](https://github.com/kantord/blogtato),导出时我只需要执行一条命令[^1],然后推送到 Git 仓库即可。
+
+```shell
+cd ~/Projects/geek-death-project/
+blog feed export > rss.xml
+git commit -m "[chore] update rss.xml"
+git push
+```
+
+所以,「我常看的博客」中有任何新增和删除,都只是它们在某次数据同步时程序自动化处理的结果,而之所以数据会发生变更,只是因为我调整了我的 RSS 订阅,调整的策略非常简单:我添加那些更新之后我希望第一时间被通知的订阅源,我移除那些我很久都没有点开阅读、仅仅是增加未读数量的订阅源。
+
+想要被通知可以有很多原因:我喜欢某个作者的内容,想要在未来读到更多;我觉得某个订阅源有一些高质量内容,可以作为资讯和知识来源;我想看某个蠢货继续犯蠢,以作为人类观察样本;我感到无聊,需要一些新鲜内容。
+
+很久没有点开阅读有很多原因:近期某个作者开始发一些我不感兴趣的内容;我一开始关注某个作者是因为他的某一部分创作,深入了解之后我发现整体而言我对他兴趣寥寥;某个订阅源更新频率太快了,我读不完;猎奇心理减弱,我对蠢货提供的样本感到厌烦;我最近接收的信息太多,所以想要精简和整理订阅源。此外,移除之后不代表我就此与某个作者决裂,我仍然会时不时点开他们的网站,我只是**不想要被通知**而已。
+
+我想我解释得够清楚了,我绝对没有和人闹矛盾之后,阴暗地念叨着骂人的话,然后把它从我博客的某个*本来就不是友情链接*的页面里移除。
+
+## “你为什么这么反感友情链接?”
+
+我不反感友情链接!我说的只是:极客死亡计划没有友情链接!
+
+极客死亡计划也没有常规的评论系统,但我并不反感评论,相反我很期待交流,我只是在众多的交流媒介中选择了当下最适合自己的,而这个媒介恰好不是「默认选项」而已!
+
+请不要用「默认选项」来解读我网站上的内容。
+
+## “所以你删了谁啊?”
+
+太多了,数不清。另外我其实不太喜欢「删了某个人」这种说法,因为我没有删掉谁的联系方式,没有在人际关系层面上和任何人决裂,我只是把某个订阅源从我的 RSS 阅读器移除了,然后数据被同步到了我的博客上而已。
+
+只不过另我感到匪夷所思的是,在我删过的众多链接中,有一个脱颖而出。对方看起来没什么意见,倒是有其他人感到异常好奇。
+
+> ?不是,这几天老有人突然出来问我为什么和极客死亡计划互删“友情链接”,主要是我都不知道他删了我,我只是最近整理了一下列表,单纯是因为不常去逛了,我确实看不懂技术类的东西,这是我的个人能力问题。而且我页面的“友情链接”真的单纯是因为我想要有个入口进入这些页面,也有原因确实有友情部分,比如非理勿试,他是我这个博客第一个朋友。
+>
+> 刚才来了一个人问,我认真回答了,他就删除了我们的telegram聊天框,啊卧槽,你知道这对于一个事事回应的人有多烦躁吗?没有前因后果,哪怕你告诉我你想八卦我也接受,不能把我当个洞插了说不够润滑就把我扔了啊!!!
+
+{{< right "——[♾️莫比乌斯环世界♾️](https://t.me/s/onojyunblog)" >}}
+
+我把莫比乌斯从我的 RSS 订阅列表移除的原因是「内容不感兴趣了,所以不常读了」,对方把我的链接移除的原因是「单纯是因为不常去逛了,我确实看不懂技术类的东西」。他的网站也没有「友情链接」这个东西,只是放自己常看的页面;我的网站没有「友情链接」这个东西,只是展示我的 RSS 订阅列表,也是我常看的。
+
+如果没有人告诉他我删除了他的链接,他就不知道这件事情;如果不是我*删掉订阅源之后仍然会时不时去逛逛*,我也不会知道他也删除了我的链接。你看,这本来就是双方都不知情也无需知请的小事(因为我们都没有友情链接,没有形成任何必须保留链接的契约),我俩把自己的事情管得好好的,不觉得有什么问题,其他人可以也把自己的好奇心管一管。
+
+而且,我不仅没有刻意地把莫比乌斯从我的页面上移除,他的链接**仍然还在**林卷页面的另一个地方。林卷页面是外部链接的聚合,包含我的 88x31 按钮墙、我的 RSS 订阅列表和博客的外部链接引用次数排行。所谓的引用次数,就是来自某个域名的链接在我的文章中出现的次数。
+
+这个引用次数统计是由一个 [Go 语言程序](https://src.eltr.ac/eltrac/hugo-theme-venin/src/branch/master/scripts/get_external_link_rank.go)生成的,在网站每次构建时,它会自动扫描所有 Markdown 文件,匹配文件里的所有链接,提取出域名,然后放入一个键值对数组,最后导出为 JSON,再由 Hugo 稍后使用,生成静态的引用次数排行。
+
+如果读者看得足够仔细,就会发现 `onojyun.com` 这个域名安然无恙地躺在那里。如果我真的阴暗地要与对方决裂,我就会在那个 Go 程序里写个特例,屏蔽掉 `onojyun.com` 域名,这不难。
+
+## “你搞这么复杂干嘛?”
+
+因为我喜欢。
+
+认真地讲,RSS 订阅列表能**最真实地**反映我关注什么,外部链接引用排行能**最真实地**反映我提及得最多的是哪些网站、从哪里获取信息用作援引、和哪些博主有直接的智识交流。为了维护这种真实,我需要排除所有人际关系的束缚,让我自由地、主观地调整订阅列表;我需要用最冰冷的自动化程序呈现最真实的数据,比如,尽管我更喜欢 Codeberg 而不是 GitHub,我也要接受 GitHub 现在就是极客死亡计划外部链接排行榜的榜首这个事实。
+
+[^1]: 感谢作者 kantord 的及时响应,我给他提了这个[需求](https://github.com/kantord/blogtato/issues/89)之后他很快就实现了。
+