diff options
| -rw-r--r-- | content/posts/beast-inside.md | 2 | ||||
| -rw-r--r-- | content/posts/weekly/67.md | 93 |
2 files changed, 93 insertions, 2 deletions
diff --git a/content/posts/beast-inside.md b/content/posts/beast-inside.md index e9787bbc..067bc741 100644 --- a/content/posts/beast-inside.md +++ b/content/posts/beast-inside.md @@ -4,7 +4,7 @@ slug = 'beast-inside' tags = ['性','生活'] date = 2026-02-08 00:46:54 draft = false -toc = true +toc = false toot = 'https://akk.eltr.ac/objects/d3f404dc-4a5e-4404-9e0c-1fb75c98155b' +++ diff --git a/content/posts/weekly/67.md b/content/posts/weekly/67.md index 3fe91e74..241fe4d4 100644 --- a/content/posts/weekly/67.md +++ b/content/posts/weekly/67.md @@ -9,6 +9,10 @@ toc = true toot = '' +++ +{{< music cover="https://r2.eltr.ac/geedeapro/posts/weekly/67/Taylor_Swift_-_Opalite.png" title="Opalite" artist="Taylor Swift" apple="https://music.apple.com/cn/album/opalite/1874387732?i=1874387733" netease="https://music.163.com/#/song?id=3347158754" spotify="https://open.spotify.com/album/3evV0p6SkiOZFt1rtWRco9" >}} + +Taylor Swift 在这周发布了《Opalite》的 MV 和单曲版本,这首歌是我在《The Life of a Showgirl》这张专辑里最喜欢的一首。MV 拍得很有意思,我看了好几遍。<!--more--> + ## 连接 ### 如何逃离自说自话的认知体系? @@ -20,7 +24,7 @@ toot = '' 树老师观察到,她在豆瓣上经常被骂「娇妻」和「婚驴」[^1],而在虎扑上却经常被当作挑起性别对立的极端女权主义者。她在某些平台的播客评论区下,能看到一些人沉浸在自己已有的观点和评价中自嗨,评论的内容与播客内容完全无关,那些人只是在抒发他们已有的态度而已,根本没想要认真交流。[^2] -播客的主要观点之一是:互联网上缺乏现实世界中自然而然建立起来的共识,尤其是指跟具体的人建立起来的过往经历和对对方人格的判断。比如,在现实世界中,和一个自以为是的年轻人谈话,所需要采取的态度、语气和讲话方式,当然是要不同于和一个刚经历了重大打击的老年人谈话应当采取的态度、与其和谈话方式的。而且,现实是复杂的,一个在某些层面看起来道德败坏的人,也有其他的闪光点,毕竟人无完人,和这样的人也能成为朋友。在互联网上,这种共识是不存在的,所有人都被压扁成了一个单一的人格,并且没有人被允许拥有一点瑕疵。 +播客的主要观点之一是:互联网上缺乏现实世界中自然而然建立起来的共识,尤其是指跟具体的人建立起来的过往经历和对对方人格的判断。比如,在现实世界中,和一个自以为是的年轻人谈话,所需要采取的态度、语气和讲话方式,当然是要不同于和一个刚经历了重大打击的老年人谈话应当采取的态度、语气和谈话方式的。而且,现实是复杂的,一个在某些层面看起来道德败坏的人,也有其他的闪光点,毕竟人无完人,和这样的人也能成为朋友。在互联网上,这种共识是不存在的,所有人都被压扁成了一个单一的人格,并且没有人被允许拥有一点瑕疵。 播客的另一个主要观点是:知识精英热衷于「拿着锤子找钉子」。他们擅长构造出一个抽象概念,并不断发展这个概念,用它来解释一切、解释世界,并在这一套已经建立起来的前提之下成为能够解释和反驳一切的神。然而,若是要他们从这个假设和前提中跳脱出来,他们却没办法解释这个概念本身,继而与现实立的越来越远。这也使得,在互联网上最安全的讨论方式,就是加入一个同温层,加入一个有共识的认知体系自说自话。 @@ -28,6 +32,71 @@ toot = '' 我还不清楚应该怎么做,但至少,我开始思考。 +### 黯然死去的「好代码」 + +> [!note] 📜 +> [The Silent Death of Good Code](https://amit.prasad.me/blog/rip-good-code) + +*我已经不记得上次大声朗读是什么时候了。为了让自己坐在书桌前的时间不那么静态,也为了更好地感受语言的力量,我决定每周开始朗读一篇被我选取到周刊里的文章。其实一开始的出发点是周日早上起来发现自己感冒好了,喉咙不痛了,想要赶紧使用一下康复的器官。总之,以下是这篇《The Silent Death of Good Code》的音频,由我朗读。我没有刻意练习,只是想读出来,所以会有错误和卡顿的地方,还请见谅。* + +<div> + <audio src="https://r2.eltr.ac/geedeapro/posts/weekly/67/The%20Silent%20Death%20of%20Good%20Code%20(reading).m4a" type="audio/x-m4a" controls autostart="0" autostart="false" preload ="none" /> +</div> + +作者发现现在人们很少在乎「写出好的代码」这件事情了。好代码是指容易阅读和理解,开发和维护起来令人愉悦,因不多不少一个具体的原因而存在,由才华、经验、热情和不能立刻得到回报的投入的时间而产生的代码。最不幸的是,好代码是罕见的。 + +尽管我的软件开发经验不能与作者相提并论,但我依稀记得,不久以前人们还很在意代码的整洁,而现在很多的工作都由 Agent 完成,开发者直接接触代码的时间变少了,人们似乎不那么在意代码的整洁了。 + +> #突然想到 LLM 编程似乎让人们开始忽略编码风格,刚刚在读《代码整洁之道》,作者建议函数最好应该只写两三行,还给出了「一个函数里的代码应该在一个抽象层级上」这种建议。然而,LLM 吐出来代码大多都不会呈现这样的风格,也很难真的判断什么样的代码是「一个抽象层级上」的。 +> +> 不过程序员们真的在乎吗?人们还会关注自己写下来的代码能不能被人读懂吗? + +{{< right "来自[我的旧 Mastodon 账号](https://c7.io/@eltrac/115819799771105669)" >}} + +最近有人在联邦宇宙上回复我,说他最近准备把博客迁移到 Hugo,参考了包括本博客在内的许多主题源代码,他夸奖我的代码写得很规范、按照最佳实践跟进、很漂亮。开心的同时,我也有些心虚,因为博客的代码也有一部分是用 Agent 写的,而那些规范的代码也是我不定期重构的结果,最初的代码其实相当乱(现在也有一部分新添的代码写得很冗杂)。我在想,做人和写代码之间共通的一个美德就是「节制」——在添加新功能、推进开发的欲望中主动停下来,回看之前写下的各种代码,想办法把它变成更令人愉悦的结构,尽可能接近「好代码」的标准。 + +我现在逐渐养成了一个习惯,就是在一个闲暇的午后,在 Git 仓库创建一个名为 `linting` 的分支,然后调整代码的结构,重写冗杂的代码。这其实还挺令人放松的,像是在修剪花草,我建议你也试试。 + +### 逃离 GitHub 指南 + +> [!note] 📜 +> [A Programmer's Guide to Leaving GitHub] + +之前听闻过 [Zig](https://ziglang.org/news/migrating-from-github-to-codeberg/)(一门编程语言)项目和 [Leiningen](https://codeberg.org/leiningen/leiningen/src/branch/main/.github/README.md)(Clojure 的构建工具)搬离 GitHub 的消息,也认识一些个人选择离开这个平台。一开始我对 GitHub 并没有这样避而远之,它的 [ToS;DR](https://tosdr.org/en/service/297) 评级是 B,几乎所有程序员都有 GitHub 账号,并且他的 API 和各种工具都是开放的。我意识到的只是代码托管平台过于中心化的问题,所以自建了 [Forgejo 实例](https://src.eltr.ac),把没有太多合作需求的个人项目都搬到上面(包括这个博客,代码托管和 CI/CD 工作流都是在自己的机器上跑的)。 + +这篇文章比起「指南」,更像是在告诉读者「为什么应该这么做」。作者列举了人们反抗和离开 GitHub 的种种原因,其中的一些我是第一次听闻。在得知 GitHub 竟然和 ICE(美国的移民和海关执法部门)有合作关系之后,我气愤得直接在电脑面前吼出声来。即便我不关心政治,我也能在 New Yorker 杂志和 Hacker News 上看到有关 ICE 的新闻,[ICE 执法人员在今年一月杀害 Renée Good 的事件还被记录在维基百科上](https://en.wikipedia.org/wiki/Killing_of_Ren%C3%A9e_Good)。GitHub 现在还在帮 ICE 托管代码。 + +最近还有腾讯等国内企业要求 GitHub 下架 [WeChat Clean](https://github.com/ellermister/wechat-clean) 等微信相关的开源软件,我这里摘取 WeChat Clean 项目的原文: + +> 根据腾讯法务发来的RTF文档, 翻译了半天才看明白,项目被指控: +> +> 1. 违反DMCA第1201条 - 绕过技术保护措施 +> - 是指:我看了微信的数据库结构 +> +> 2. 违反微信服务条款 - 逆向工程 +> - 是指:我试图理解我自己手机上的数据 +> +> 3. 威胁用户隐私和安全 +> - 是指:让用户知道自己的数据长什么样很危险 +> +> 4. 侵犯知识产权 +> - 是指:你的聊天记录存储格式归腾讯所有 +> +> 不仅如此,我这只是其中一个项目 +> +> - 这次投诉一口气举报了 30 多个类似项目 +> - 其中最大的项目有 4443 个 stars,181 个 stars 的也没了 +> - 我这个 291 stars 的也没得说 +> +> 投诉文件原文节选: +> "illegally offer tools for circumventing Tencent's methods for preventing unauthorized access" +> +> 是指:让用户访问自己的数据是非法的 😣 + +就算不关心政治和技术自由,离开这样一个充满纷争的平台也是有益的。文中作者列出了一些 GitHub 的替代品,并列出了背后的开发者、进行代码审查的方式和一些备注,是很好的参考。如果是个人使用,推荐使用 Go 开发的 Forgejo,很轻量,功能也不少。作者采用的方案更简单直接:使用 S3 储存桶作为远程仓库。他还开发了 [j3](https://code.lord.io/j3/),十分轻量简洁,用于自托管 Git 和 [Jujutsu](https://www.jj-vcs.dev/latest/) 仓库。本质上 j3 只是个 Web UI。印象中,你也可以直接把 Git 仓库上传到自己的服务器,通过 SSH 提交更改。 + +不过,我暂时还不会注销 GitHub 账户,因为目前还是个学生,一个有一定数量的关注者和一些有几百 Stars 的仓库的 GitHub 账号,在求职时大概是很有说服力的。迁移所有的仓库也是个大工程,我大概会慢慢减少 GitHub 上的活动,但要完全离开的话,还得再等一阵子。 + ## 星群 ### DaxDuckDex @@ -46,6 +115,28 @@ Tirith 解决了这个问题,安装后,你执行的每一条命令都被守æ 访问:[sheeki03/tirith](https://github.com/sheeki03/tirith) +### ReMemory + +这个基于浏览器的工具实现了[沙密的加密分享算法](https://en.wikipedia.org/wiki/Shamir%27s_secret_sharing)(Shamir's Secret Sharing),这是一种在团体之中共享秘密信息的方法。简单来说,信息被加密之后,密钥会被拆分开来,分配给团体中的每一个人。一个人没有办法单独解密,必须要有一定数量的成员集结起来,用多个密钥才能解密信息。 + +ReMemory 的工作方式大概是这样的,你将文件加密之后,将密钥拆分给(例如)5 个你信任的朋友,只有他们其中 3 个人聚在一起使用他们得到的密钥,才能解密这个文件。每个朋友都会得到一个 `recovery.html` 文件,这个文件是自容的(self-contained),意味着不需要联网、只需要有一个浏览器就能使用。一个人打开 `recovery.html`,然后把另外两个人的 `README.txt` 文件拖进网页,就能开始解密。 + +这个工具被创建的初衷是,开发者希望就算他出事了,他信任的朋友也能有办法访问某些重要文件。这个方法不单独信任每一个人,而是信任一个团体。 + +不过这意味着你要有一群相互认识、熟悉计算机技术并且有良好的文件保存习惯的朋友,门槛有点太高了。 + +访问:[ReMemory](https://eljojo.github.io/rememory/) + +## 当下 + +### 自托管 GoatCounter + +上周偷偷地给博客加上了 [GoatCounter](https://www.goatcounter.com/),一个不会跟踪(track)用户的网站流量分析工具。所谓不跟踪,就是不会给访客增加唯一标识,不会跟踪访客在网站上的行踪。这一点不同于 Google Analytics 和 Umami 这类分析工具。GoatCounter,顾名思义,就是在收到访问的时候给对应的数据 +1,仅此而已。GoatCounter 是用 Go 语言开发的,数据库可以选 SQLite 或者 PostgreSQL,从技术栈看就能知道,它的内存占用非常小,对服务器的要求极低。总之,GoatCounter 是一个对用户和网站管理员都很友好的网站分析工具。 + +之前一直在用官方提供的免费托管服务,对大多数来说人都够用了。试了一周之后觉得不错,便决定自托管。官方提供了 [compose.yml](https://github.com/arp242/goatcounter/blob/main/compose.yaml),可以很方便地用 `docker compose` 部署。 + +GoatCounter 可以设置向所有人公开数据,我打开了这个设置,你可以在 [stats.geedea.pro](https://stats.geedea.pro/) 查看 GoatCounter 收集到的所有访问数据。如果你希望完全无影无踪地访问我的网站,可以在 URL 后面加上 `#toggle-goatcounter`,这样 GoatCounter 就不会记录你的访问了。 + [^1]: 很难想象,自称女权主义者的人,会发明出这么多辱骂女性的词汇。 [^2]: 本人有幸也在博客评论区收到过这样的评论。 |
