diff options
Diffstat (limited to 'content')
| -rw-r--r-- | content/weekly/75.md | 120 |
1 files changed, 107 insertions, 13 deletions
diff --git a/content/weekly/75.md b/content/weekly/75.md index 2755191f..bc686334 100644 --- a/content/weekly/75.md +++ b/content/weekly/75.md @@ -1,5 +1,5 @@ +++ -title = "稻草人周刊 Vol." +title = "稻草人周刊 Vol.75" subtitle = "" tags = ["Lisp"] date = 2026-04-02T23:52:12+08:00 @@ -7,10 +7,98 @@ draft = true toc = true +++ -{{< music cover="" title="" artist="" apple="" spotify="" netease="" >}} - +众所周知,我时不时就会调整一下周刊的格式,所以…… Voilà,我把音乐推荐移动到单独的栏目了,现在周刊的开头都是我的碎碎念了。 <!--more--> +--- + +## 止语 + +{{< music album=true cover="https://r2.eltr.ac/picgo2025/9312a91249d2b11a.png" title="GUTS" artist="Olivia Rodrigo" apple="https://music.apple.com/cn/album/guts-spilled/1736994915" spotify="https://open.spotify.com/album/1xJHno7SmdVtZAtXbdbDZp" netease="https://music.163.com/#/album?id=174251376" >}} + +[第 46 期周刊](/weekly/46/) 就分享过这张专辑里的《love is embarrassing》,说来有趣,那一期周刊是第一次使用这个音乐组件,如今我给组件加上了显示专辑的特殊样式,正好最近也一直在听这张专辑,所以就拿出来分享了。 + +今年再听这张专辑,发现最喜欢的一首变成了《ballad of a homeshcooled girl》,一来是很喜欢乐器使用,二来是这首歌的歌词大部分都让我深有同感,在通勤路上听这首歌,很难忍住不跟着她一起发疯似地大喊:*I know. I know!* + +我很喜欢 Olivia Rodrigo 某些歌曲的风格,包括她上一张专辑的《brutal》和《jealousy, jealousy》(或许还有《good 4 u》),甚至觉得《SOUR》里其他的歌都逊色不少。最近才得知我喜欢的那几首歌都是朋克摇滚,包括这张专辑里我很喜欢的《ballad of a home schooled girl》和《love is embarrassing》。 + +后知后觉才发现自己喜欢的摇滚类别其实是朋克啊。 + +> Everything I do is tragic <br/> +> Every guy I like is ~~gay~~ straight <br/> +> The morning after, I panic <br/> +> Oh, God, what did I say? + +> I broke a glass, I tripped and fell <br/> +> I told secrets I shouldn't tell <br/> +> I stumbled over all my words <br/> +> I made it weird, I made it worse <br/> +> Each time I step outside, it's social suicide <br/> +> It's social suicide, wanna curl up and die + + +--- + +## 回拨 + +*等等,你是说「回拨」这个栏目从[第 61 期](/weekly/61/)开始就再也没出现过啦?* + +那这期周刊就来回顾一下第一季度(1~3 月)极客死亡计划的文章更新吧,我会选取我自认为写得最不错的文章放在这里,并附上简介,可以选择最感兴趣的阅读。其实我本来月初的时候打算写月刊的,如今看来还是太难为自己了,能坚持写周刊就很不错了。 + +### 技术和软件专题 + +1. 《[程序员和整洁的 Home](/essays/clean-home/)》<br/> + 本文介绍了 XDG 基本目录规范,适用于类 Unix 系统(macOS 和 Linux),提供了整理 `$HOME` 目录的实用指南,以及…… 让不知道 XDG 规范的开发者支持这个规范有多难。最近我还了解到,一些开发者以为这是 Linux 发行版上规范,所以给 Linux 实现了,但对于 macOS,还是直接把配置文件和缓存文件放在用户的 `$HOME` 里。真难受啊。 +2. 《[如何用电车难题理解 Git](/essays/git-with-trolley/)》 <br/> + 某天下午我摄入了过多的咖啡因,于是…… 就发生了这么一件事。 +3. 《[网页即列表!](/posts/webpage-as-lists/)》 <br/> + 众所周知,HTML 和 XML 层层嵌套的结构其实就是树,而 Lisp 的 S-expression 层层嵌套的结构也是树,所以可以用 Lisp 来写网页,并且比 XML 写起来要干净不少,而且非常灵活。本文提供了基于 Clojure 和 hiccup 的解决方案。 +4. 《[迷失于图形界面](/essays/lost-in-gui/)》 <br/> + 图形界面非常容易变得臃肿,尤其是 IDE 这种复杂的东西。图形界面其实是建立了非常高层的抽象,屏蔽了底层细节,然而,这些细节真的是应该被屏蔽的吗?比如某个编程语言的依赖项是怎么声明和管理的?如果全都交给 IDE,那程序员不就无法了解这门语言的基础构建块了吗?据我所知,不少 Java 开发者离开了 Intellij IDEA 就完全不会写代码了,他们同时使用 IDEA 和 Cursor 编程,这真是我听过最好笑的事情。 +5. 《[Webmention 简明指南](/article/webmention/)》 <br/> + 介绍了 IndieWeb 推崇的 Webmention 规范,如何发送和接收 Webmention,同时还解释了经常和这种技术一起使用的 microformats。 +6. 《[计算无穷](/article/compute-infinity/)》 <br/> + 介绍了 Clojure 中的惰性序列,以及如何使用惰性序列用非常简洁且优雅的方式编写高性能的代码。 + +### 软件相关,但不懂技术也能读懂 + +1. 《[去营地整点 FLAC](/article/got-flac/)》 <br/> + 介绍了常见的音频文件格式、音频信号处理的基础知识、无损和有损压缩以及自由和开放格式。最后把矛头指向流媒体和混乱的音乐行业,提供了抛弃流媒体的方法。如果不想要在多个流媒体平台支付订阅费,还想要听到音质更好的音乐的话,可以阅读这篇文章。 +2. 《[带着鸭鸭和狗狗逃离咕噜咕噜](/article/search-engines/)》 <br/> + 讲完音乐来讲搜索引擎,一个垄断更严重的行业。本文简述了搜索引擎最初的愿景、发展历史和谷歌的兴起再到后来的垄断(谷歌所占的市场份额超过 90%),以及大科技公司提供的搜索引擎为什么不好、常规的隐私搜索引擎(如 DuckDuckGo)有什么问题、付费搜索引擎为什么更好,以及自托管搜索引擎的可行性。 + +这两篇文章的字数似乎都超过了一万,第二篇甚至有一万六千多字。写这种文章挺累的,但我也能学到不少东西,总之很有意思,之后应该会多写,可能每个月会有一篇类似的文章。 + +### 人文社科专题 + +1. 《[Es muss sein?](/article/tarot-hanged-man/)》 <br/> + 好久没更新的《塔罗牌漫谈》系列,这次讲的牌是「倒吊人」,我对这张牌的牌意总结是:旧秩序的颠覆、从行动中退出、必要的反思、心流状态、坚持自我、用新视角看待问题、接受不能改变的、精神上的掌控感。 +2. 《[论遣词造句](/essays/on-wording/)》 <br/> + 文风和用词问题,大概是每个语言使用者(尤其是作者)都应该考虑的问题,还顺带谈了谈欧化中文。我还在这篇文章中提出了 [/glossary](/glossary) 页面的想法,两周前已经给 [slashpages.net](https://slashpages.net/) 提交了 [Pull Request](https://github.com/rknightuk/slashpages/pull/27),不过维护者兴许太忙了,目前还没有合并。 +3. 《[我为什么喜欢音乐剧?](/article/i-love-musicals/)》 <br/> + 我并不是音乐迷,但我爱音乐剧。好多人觉得演戏演到一半突然唱起来很奇怪,但我超爱! +4. 《[阅读文学如何帮我欣赏摇滚乐?](/article/rock-and-literature/)》 <br/> + 文学基于理性的话语,而音乐相反,音乐是反话语。在音乐的非理性中,个体能够暂时抛弃话语和理性带来的痛苦,在喧嚣中知晓一切。 + +最近人文社科相关的话题写得比较少,至少不如以前那么多了。杂文也有一些,这里没列出来,感兴趣的可以去[议与叙](/article/)页面查看这三个月的所有文章。 + +### 书评合集 + +1. 《[帕尔马修道院](/library/2026/la-chartreuse-de-parme/)》 <br/> + 司汤达的长篇小说,好长…… 好长…… 从去年年底读到今年一月底。一如既往的司汤达,他的狗血剧情和文学性是可以共存的。 +2. 《[世界尽头的咖啡馆](/library/2026/the-why-cafe/)》 <br/> + 我不推荐任何人读这本书。好刻意直白、毫无文学美感的心灵鸡汤。更好笑的是,我那个讨人厌的同室挺喜欢这本书,~~不值得一读的原因又增加了~~。你敢信这本书竟然给「人生的意义」这个词造了个缩略词 PFL(Purpose for Life,我没记错的话应该是这样)? +3. 《[如何获得内心的安宁](/library/2026/how-to-find-peace/)》 <br/> + 斯多葛主义哲学家塞涅卡的书信集选译本,翻译质量不错,不少文章都挺有意思,而且足够通俗,不懂哲学的普通读者也能读懂。~~斯多葛主义看起来登味很重呢,不太适合我,但感觉像是我同室会喜欢的,比如洗冷水澡什么的。~~ +4. 《[不能承受的生命之轻](/library/2026/the-unbearable-lightness-of-being/)》 <br/> + 非常喜欢的小说,我已经能预见自己在几年后再次打开这本小说读了。我还没能完全明白这本小说要讲的东西,没有理解的就等待之后温故知新吧。 +5. 《[来自沉船的爱意](/library/2026/from-a-sinking-ship-with-love/)》 <br/> + 乙一和另外两个作者合作的短篇小说集,质量中等偏下,如果只是想找点故事来读还不错。*什么时候能再次读到《夏天,烟火和我的尸体》那样的乙一呢?* + +我这三个月竟然只读了五本书吗?定下的 40 本目标看起来遥遥无期啊。最近面临找实习和准备项目的压力,焦虑得即便有时间也没办法停下来(或者说静下心来)阅读,希望能早点恢复状态吧。不过还好,还能够全情投入地写文,所以能够保持 San 值健康。 + +--- + ## 连接 ### 控制你的标记语言 @@ -18,7 +106,7 @@ toc = true > [!note] 📜 > [控制你的标记语言 - 空栈顶](https://emptystack.top/control-your-markup-language/) -作者介绍了几种 Markdown 和 Org Mode 以外的用于写作的标记语言,其中 Lisp 含量达到了~~惊人的~~ 80%。 +作者介绍了几种 Markdown 和 Org Mode 以外的用于写作的标记语言,文章的 Lisp 含量非常喜人。 和我之前写过的《[网页即列表!](/posts/webpage-as-lists/)》的思想类似,既然要把标记语言编写的文本转化为 HTML,而 HTML 构成的嵌套的 DOM 树本身就是树形结构,那么用 S-expression(Lisp 语言所采用的表达式,即列表或者说括号的嵌套)编写网页就非常合理,并且比用 XML 或 HTML 干净不少。 @@ -52,7 +140,7 @@ I am **so** happy to be writing this. </root> ``` -Pollen 的灵活性体现在自定义标签(custom tagst),比如图片写作 `◊image["图片地址"]{图片描述}` 而链接写作 `◊link["链接地址"]{链接文本}`(*Org Mode 正在攻击我,混杂着 Markdown 和奇怪的东西*),`image` 和 `link` 可以换成自己定义的函数。 +Pollen 的灵活性体现在自定义标签(custom tagst),比如图片写作 `◊image["图片地址"]{图片描述}` 而链接写作 `◊link["链接地址"]{链接文本}`(*Org Mode 正在攻击我,但是混杂着 Markdown 和奇怪的东西*),`image` 和 `link` 可以换成自己定义的函数。 可以用类似的方式定义如何把某个标签转换为 X-expression: @@ -65,7 +153,7 @@ Pollen 的灵活性体现在自定义标签(custom tagst),比如图片写ä 另外 Pollen 可以一边定义语法一边写文,说实话,看起来很爽。 -```pollen +```racket #lang pollen ◊(define ($ . xs) `(mathjax ,(apply string-append `("$" ,@xs "$")))) @@ -99,36 +187,42 @@ Pollen 的灵活性体现在自定义标签(custom tagst),比如图片写ä 1. 用于编辑 S-expression 的结构化编辑功能(否则就真的 *Lost In Stupid Parentheses* 了) 2. 内嵌 REPL[^1] 以实现交互式编程(否则和非 Lisp 语言还有什么区别) -作者在文章介绍了如何使用 Vlime(类似于 Emacs 的 SLIME,用于交互式编程)和 Paredit(括号编辑,或者说结构化编辑)。前者本质上是启动了一个服务器,这个服务器运行 REPL,接收来自编辑器的表达式,计算表达式后返回值给编辑器。比如,在 Vim 里选中 `(+ 1 2)`,执行 Eval 操作,Vlime 就会把这个字符串发送给 REPL 服务器,然后得到返回值 `3` 显示出来。 +作者在文章中介绍了如何使用 Vlime(类似于 Emacs 的 SLIME,用于交互式编程)和 Paredit(括号编辑,或者说结构化编辑)。前者本质上是启动了一个服务器,这个服务器运行 REPL,接收来自编辑器的表达式,计算表达式后返回值给编辑器。比如,在 Vim 里选中 `(+ 1 2)`,执行 Eval 操作,Vlime 就会把这个字符串发送给 REPL 服务器,然后得到返回值 `3` 显示出来。 -这有点像 LSP(语言服务器协议),编辑器把代码发送给语言服务器,然后把语言服务器分析得到的警告、报错和优化建议显示给用户。不过 REPL 要更强大,不仅仅是计算。比如,如果把一个函数定义发送给 REPL,它就会记住它,在同一个会话下,可以在之后的 Eval 操作里直接使用这个函数。这就是交互式编程,可以直接对 S-expression 求值,不需要手写 `print` 或者 `console.log` 之类的。 +这有点像 LSP(语言服务器协议):编辑器把代码发送给语言服务器,然后把语言服务器分析得到的警告、报错和优化建议显示给用户。REPL 不仅仅是计算表达式的值那么简单,如果把一个函数定义发送给 REPL,它就会记住它,在同一个会话下,可以在之后的 Eval 操作里直接使用这个函数。这就是交互式编程,可以直接对 S-expression 求值,不需要手写 `print` 或者 `console.log` 之类的。 不过 Vlime 有点老了,而且是给 Vim 写的。对于 Neovim 用户,可以选择用 Fennel(用来写 Lua 的 Lisp 方言)实现的 [Conjure](https://github.com/Olical/conjure),这个插件甚至还能实现 Lua、Python 和 SQL 等语言的交互式编程。 至于 Paredit,我的选择是 [nvim-paredit](https://github.com/julienvincent/nvim-paredit) 插件,Paredit 的实现大概都没有太多区别。不过,我还没有细细研究过 Paredit 的各种操作(因为文档太长了懒得看),目前觉得编写 Lisp 代码必不可少的有这些操作。Slurp(吞参数),把括号外面的一个形式(form,也就是一个括号和括号里面的所有东西)吸到括号里面来,可以吸前面的也可以吸后面的;相对应的有 Barf(吐参数),不必解释。这两个操作在 `nvim-paredit` 里的快捷键是 `>)`(吞后面的参数)、`<(`(吞前面的参数、`<)`(把参数吐到后面)和 `>(`(把参数吐到前面)。 -另一个常用操作是选中整个形式,复制和删除代码的时候很好用,进入 `-- VISUAL --` 模式后按下 `af` 即可。其他的操作我就用得比较少了,或许我该找时间仔细读一读 Paredit 的文档了。顺带一提,适应 Lisp 里形式的概念之后会发现很多有趣的操作,比如 Clojure 可以用 `#_(...)` 注释一个形式里的代码,我第一次发现的时候觉得简直是天才的设计,毕竟 Lisp 同一行里有很多前几行代码的反括号,注释一整行会出现问题。 +另一个常用操作是选中整个形式,复制和删除代码的时候很好用,进入 `VISUAL` 模式后按下 `af` 即可。其他的操作我就用得比较少了,或许我该找时间仔细读一读 Paredit 的文档了。顺带一提,适应 Lisp 里形式的概念之后会发现很多有趣的操作,比如 Clojure 可以用 `#_(...)` 注释一个形式里的代码,我第一次发现的时候觉得简直是天才的设计,毕竟 Lisp 同一行里有很多前几行代码的反括号,注释一整行会出现问题。 -大概就是这样,如果你是 Vim 用户,想要编写 Lisp 代码的话,可以参考作者的配置,使用 Vlime 和 Paredit;如果你用是的 Neovim,理论上也可以使用前两个插件,是兼容的,但我推荐你事实 Conjure 和 `nvim-paredit`。 +大概就是这样,如果你是 Vim 用户,想要编写 Lisp 代码的话,可以参考作者的配置,使用 Vlime 和 Paredit;如果你用是的 Neovim,理论上也可以使用前两个插件,是兼容的,但我推荐你试试 Conjure 和 `nvim-paredit`。 -### 为什么免费的东西让我们变得不理智? +### 为什么免费的东西让人失智? > [!note] 📃 > [Why free stuff makes us irrational](https://thehustle.co/why-free-stuff-makes-us-irrational) 作者列举了两次由免费试吃引发的事故,比如老人指责年轻人吃了太多试吃小样让其他人没得吃,然后被锤了一拳,还有两个九十多岁的老年人也因为超市试吃发生了口角。不仅如此,作者还引用了一些研究,从行为经济学的角度解释,人们就是会因为某件商品的价格是免费的而做出不理智的消费决策。 -不理智是指,即便不免费的商品更好,人们也普遍倾向于选择免费的。免费的巧克力,和只要一毛钱(美元)的巧克力,哪怕后者品质更好,大多数人都会选择前者;当免费的巧克力价格变成一分钱,不再免费,人们又会更倾向于后者。另一个例子是运费,哪怕有更划算但需要支付运费的商品,人们也更倾向于选择免运费的商品,甚至选择需要支付运费的商品,消费者还能省几块钱。 +不理智是指,即便不免费的商品更好,人们也普遍倾向于选择免费的。免费的巧克力,和只要一毛钱(美元)的巧克力,哪怕后者品质更好,大多数人都会选择前者;当免费的巧克力价格变成一分钱,不再免费,人们又会更倾向于后者。另一个例子是运费,哪怕有更划算但需要支付运费的商品,人们也更倾向于选择免运费的商品,然而选择需要支付运费的商品,消费者还能省几块钱。 -对此的解释是,人们在看到某件商品免费时会产生一种「良好的感觉」,这种感觉驱使我们做出不理性的消费决策。如今更常见的例子是互联网媒体和社交媒体,只有很少的人会为内容(比如说新闻)付费,甚至大家理所应当地认为这些东西就应该是免费的,永远不会给这些东西付钱(当然这并不是因为他们是海盗党或者 Copyfarleft),还有社交媒体,人们已经习惯了免费使用,忍受大量广告和垃圾信息的商业模式了。 +对此的解释是,人们在看到某件商品免费时会产生一种「良好的感觉」,这种感觉驱使我们做出不理性的消费决策。如今更常见的例子是互联网媒体和社交媒体,只有很少的人会为内容(比如说新闻)付费,甚至大家理所应当地认为这些东西就应该是免费的,永远不会给这些东西付钱(当然这并不是因为他们是海盗党或者 Copyfarleft),还有社交媒体,人们已经习惯了免费使用,忍受大量广告和垃圾信息的商业模式了(*联邦宇宙居民就这么静静地看着你们*)。 顺带一提,文中还列举了免费试吃带来的购买率提升,令人震惊,原来这种商业行为这么有效…… +--- + + ## 星群 +--- ## 切片 +- 已经完成一百期周刊的四分之三了,真快啊。 + [^1]: REPL:Read-Eval-Print-Loop,输入-计算-打印-循环。 |
