diff options
Diffstat (limited to 'content/posts')
| -rw-r--r-- | content/posts/lost-in-gui.md | 50 | ||||
| -rw-r--r-- | content/posts/weekly/71.md | 78 |
2 files changed, 110 insertions, 18 deletions
diff --git a/content/posts/lost-in-gui.md b/content/posts/lost-in-gui.md index 43737c7f..d87f7fb7 100644 --- a/content/posts/lost-in-gui.md +++ b/content/posts/lost-in-gui.md @@ -15,17 +15,19 @@ toc = true ## 不解之词 -老师在演示如何用 PyCharm 安装依赖时说了这样一句话:“我看有的人用写代码的方式就能把依赖安装上了,那样好像是会快很多,有些人就是能找到一些捷径啊!” +老师在演示如何用 PyCharm 安装依赖时说了这样一句话:“我看有的人用写代码的方式就能把依赖安装上了,那样好像是会快很多,有些人就是能找到捷径啊!” 尽管我对 Python 生态不熟悉,但根据他的描述,我大概明白他说的是类似 Node.js 的 `package.json`、Go 语言的 `go.mod` 和 Maven 的 `pom.xml` 之类的东西。在项目根目录的一个文件声明项目所需的依赖之后,执行安装命令,就能在当前项目下安装所需的依赖。这实际上是相当常见的实践,有正经工程应用的编程语言都有类似的东西。 在讲授数据库原理及其应用这门课的时候,他要求我们安装的是 [Navicat](https://www.navicat.com/),一个管理数据库的图形界面工具。我不想用闭源的商业软件(而且我当时的操作系统是 Arch Linux,似乎也没有在 AUR 上找到包),所以选择了 [DBeaver](https://dbeaver.io/)。我记得很清楚,我除了在需要提交作业截图时使用了这个软件,其他时候都是用 [MariaDB](https://mariadb.org/) 自带的命令行工具,手打 `SELECT` 和 `INSERT INTO` 语句,因为我真的不想在层层叠叠的图形界面里找我想要的功能。 -我记得有一次交作业我实在不想打开 DBeaver,于是提交了终端截图,结果下一次上课的时候就听到他这样说:“有的同学直接输入 SQL 语句,都不嫌麻烦的吗?临时输入一两句还好,要输的东西多的时候,就直接在软件的表格里编辑数据表就好了啊。” +我记得有一次交作业我实在不想打开 DBeaver,于是提交了终端截图,结果下一次上课的时候就听到他这样说: -到目前为止,这还只是操作习惯的差异,不足为奇。*所以,老师只是一个喜欢操作图形界面的人而已,这不代表他是个差劲的程序员,程序员的能力不体现在工具的选择上,不熟悉命令行工具又怎么了?* +> “有的同学直接输入 SQL 语句,都不嫌麻烦的吗?临时输入一两句还好,要输的东西多的时候,就直接在软件的表格里编辑数据表就好了啊。” -“大家用 `pip` 安装依赖的时候注意一下啊。”老师好像是突然想起了以往的经历,在讲课时突然插入了这样一句话,“用 `pip` 安装的第三方库和你的 PyCharm 里的第三方库可能不会互通,就是说你用 `pip` 安装了第三方库之后,在 PyCharm 里可能用不了,要在 PyCharm 的图形界面里安装依赖。” +到目前为止,这还只是操作习惯的差异,不足为奇。*所以,老师只是一个喜欢操作图形界面的人而已,这不代表他是个差劲的程序员,程序员的能力不体现在工具的选择上,不熟悉命令行工具又怎么了?用 Neovim 和 Emacs 就比用 VS Code 更高尚?用 Postman 就比用 `curl` 更愚蠢?用集成开发环境也不代表无能啊。* + +> “大家用 `pip` 安装依赖的时候注意一下啊。”老师好像是突然想起了以往的经历,在讲课时突然插入了这样一句话,“用 `pip` 安装的第三方库和你的 PyCharm 里的第三方库可能不会互通,就是说你用 `pip` 安装了第三方库之后,在 PyCharm 里可能用不了,要在 PyCharm 的图形界面里安装依赖。” 我没学过 Python,但确实用 Python 写过不少脚本来帮我自动化处理某些操作,比如批量修改博客的 Markdown 文件格式、替换文本之类的,我也的确遇到过没办法正常加载依赖的问题。当时我只能改变实现方式,避免调用第三方库,一直没明白原因。这么说,我的问题就要从老师那里得到解答了? @@ -45,17 +47,49 @@ toc = true 我在英文博客上写过一篇《[Java Development with True IDEA](/en/posts/java-dev-with-true-idea/)》,强烈抨击了 IntelliJ IDEA 这个令我作呕的集成开发环境,并把 IDEA 重新定义为 Instant(快速)、Deliberate(审慎)、Elegant(优雅)和 Attentive(专心)。 -我当时连续使用 IDEA 将近一年的时间,原因在于:没了 IDEA 我就不知道怎么开发 Java 项目了。之所以会这样,是因为 IDEA 给我屏蔽的信息太多了。不操心底层真正发生了什么的后果是,我根本不知道底下发生了什么。当我按下 IDEA 的「运行」按钮时(PyCharm 也是一样的),究竟有什么命令被执行了?我不清楚,以前的我也不关心,我只知道「这个按钮能让我的代码跑起来」,就像魔法一样。 +我当时连续使用 IDEA 将近一年的时间,原因在于:没了 IDEA 我就不知道怎么开发 Java 项目了。之所以会这样,是因为 IDEA 给我屏蔽的信息太多了。不操心底层真正发生了什么的后果是,我根本不知道底下发生了什么。当我按下 IDEA 的「运行」按钮时,究竟有什么命令被执行了?我不清楚,以前的我也不关心,我只知道「这个按钮能让我的代码跑起来」,就像魔法一样。 可是,要是有一天魔法失效了呢?当我按下「运行」的时候程序没有被执行,当我按下「同步」按钮的时候依赖没有被同步(IDEA 的设计非常奇怪,有时候「同步」按钮根本不会显示,我必须在一个下拉框里找到某个菜单项才能正常同步依赖),当我的程序没有被正常编译,而我在密密麻麻的界面里找不到相关的配置项时,我要怎么办? -要找到图形界面里的某项配置可真不简单。首先,我很难用语言描述清楚我要找的是什么,如果描述不清楚,又怎么在搜索引擎里搜索教程呢?其次,就算找到了我要的东西,有人告诉我这个东西要在 `Project Strucutre -> Libraries -> More` 里面找到,我也要在硕大的图形界面里搜寻这些文字的位置。再次,就算有截图指引,我也有可能因为版本差异而没有办法在图中所示的地方找到我需要的东西。 +要找到图形界面里的某项配置可真不简单。 + +首先,我很难用语言描述清楚我要找的是什么,如果描述不清楚,又怎么在搜索引擎里搜索教程呢?其次,就算找到了我要的东西,有人告诉我这个东西要在 `Project Strucutre -> Libraries -> More` 里面找到,我也要在硕大的图形界面里搜寻这些文字的位置。再次,就算有截图指引,我也有可能因为版本差异而没有办法在图中所示的地方找到我需要的东西。 唔,有人可能会因为熟悉图形界面迷宫而感到自豪吧。我记得我在各种按钮、菜单、面板和输入框之间穿梭,只为了调整项目的编译方式时,有一个不熟悉计算机的朋友突然凑过来看我在做什么,发出了「好厉害」的感叹。可是,究竟为什么要学习一套可有可无的、建立在基础工具之上的抽象,而不去直接使用基础工具呢? -这就好比用 React 开发一个只有一页的网站,而这一页的内容只是几句话和几个链接——*你为什么不能直接写 HTML,而要去操作虚拟 DOM 呢?* +这就好比用 React 开发一个只有一页的网站,而这一页的内容只是几句话和几个链接——*你为什么不能直接写 HTML,而要去操作虚拟 DOM 呢?这层多余的抽象究竟给你带来了什么价值?* + +我为什么要学习 Postman 的图形界面,等待它花几秒钟的时间启动一个 Chromium 实例渲染一个网页,学习和记忆 URL 输入框 和 HTTP 请求方法的选择框的位置,只为了发一个简单的 HTTP 请求?我为什么不能直接使用 `curl`?如果我只会用 Postman,我就不知道要怎么在其他的地方发送 HTTP 请求了,而 `curl` 却被安装在几乎任何一台计算机上,是很多软件的基础工具,无论是日常测试、运维还是开发工作,都能用到。我调试自己写的 API 会用 `curl`,我测试自己在 VPS 上部署的服务有没有真的跑起来会 `curl localhost:<port>`,像 [Hurl](https://hurl.dev/) 这类与 HTTP 请求相关的软件也是在 `curl` 的基础上开发的。 + +显然,无论选用抽象层次很高的图形界面软件,还是最基础的命令行工具,都有学习的成本。那为什么要学习一套将你与底层隔离开来的抽象,而不是直接学习更接近底层的工具呢? + +我承认抽象有存在的价值,但我反对过度且不必要的抽象。 + +## 专业与门槛 + +可能有些幼稚,但我又要举一个大学老师的例子了。不过这个老师本身就很讨人厌,说话爹味很重而且粗俗,还觉得自己和蔼可亲,他项目组里的学生能跑的都跑了。他身上有一个很多爹味浓重的人都有的典型特质:热衷于做「守门人」,强调门槛与专业性,踩在门槛上拉开自己与他人的距离。 + +他也喜欢使用图形界面,但原因,在我看来,并非是权衡利弊之后的选择,而是对门槛的维护。在我看来,如果你不想接触基础工具,只想要优化开发体验,那么选择简洁直观的图形界面工具也无可厚非,只要这是你自己选的。 + +设计软件架构常用 UML,即统一建模语言,UML 有各种不同类型的图表,用来表达架构、活动、操作的时间顺序、涉及的模块和对象等等,总之是便于沟通的标准化工具。既然目的是「沟通」,那么只要能准确表达,能让他人理解,就达到了目的。简单来说,只要图画得清晰,没有错误和歧义,能够高效沟通,就是好图。 -## 破除魔法 +但是这位老师显然不这么认为。 +> “有的同学用 Visio 画图,这样不好,我们作为软件工程的学生,要使用**专业**的 UML 绘图工具。你作为**专业**的软件工程学生,连**专业**的画图工具都不会用,怎么行!?”,老师神情严肃地讲道,“我在群里发了两个软件,第一个软件我们把他叫作 EA[^3],这个软件是商用的,你也可以用第二个开源的 StarUML。[^2]” + +Visio(以及开源的 draw.io)不被它视作**专业**的 UML 图绘制工具,并不是说架构师没办法用它们画好图,而是因为它们缺乏与 UML 相关的抽象。这位老师强调,Visio 是矢量图绘制工具,而不是**专业**的 UML 图绘制工具。然而,这两类工具的区别就在于抽象层次的高低。 + +之所以这么说,是因为,UML 图明显就是图片的一种,一般也是作为矢量图来绘制的。能绘制矢量图的工具当然也能绘制 UML 图,说白了,UML 图里最常见的元素就是方框、圆圈、直线、箭头、小人和文字,连 PowerPoint 都能画这种图。只要使用了正确的建模语言和规范,保证图片清晰易懂,就是好的 UML 图。 + +前文提及的 EA 和 StarUML 等软件,当然也是能画方框、圆圈和小人的,只不过它们只能用这些元素来画 UML 图。使用这种工具画图是自然的,哪怕对 UML 建模语言本身不熟悉的人,也不容易画出错误的图。 + +通俗地来讲,这两类软件的区别,就是化学原料和包装好的清洁剂的区别。这位老师觉得:使用一水柠檬酸溶液来清除水垢是不专业的,应该使用包装上写明了「水垢清洁剂」的清洁产品,才**显得专业**。 + +## [^1]: 参见:[Running commands in projects | uv](https://docs.astral.sh/uv/concepts/projects/run/) + +[^2]: 我了解之后发现,StarUML 也是专卖软件(Proprietary software),最初以 GNU GPL 协议发布了开源版本,但开源版本在 2010 年就停止维护了。当然,就算它是自由软件,我也不想用,原因在于它是 GUI 软件,很重,另一个很关键的的原因是,*它是用 Electron 和 Java 写的*。 + +[^3]: 全称是 Enterprise Architect,中文意思是「企业架构师」。英文里的 Enterprise 除了指代企业和创业,也和企业家精神和专业性有关联,所以也可以理解为「专业架构师」。 + diff --git a/content/posts/weekly/71.md b/content/posts/weekly/71.md index fd7f7e85..dcae700f 100644 --- a/content/posts/weekly/71.md +++ b/content/posts/weekly/71.md @@ -23,26 +23,58 @@ toc = true > Charlie Puth should be a bigger artist。[^3] -就这样,继续看周刊吧。 +就这样,继续看周刊吧。如果不麻烦的话,还请留意这一期的「当下」栏目。 --- ## 连接 -### 锻炼是为了什么? +### 程序员如何沟通? + +> [!note] 📜 +> [What I Do](https://inessential.com/what-i-do.html) + +[NetNewsWire](https://netnewswire.com/)(macOS 和 iOS 上的自由且开源的 RSS 阅读器)的开发者 Brent Simmons 尝试向亲友解释他的工作,我很喜欢文中的某些句子: + +> I know I’m a big nerd and what I do must seem all super nerdy and vague. <br/> +> 我知道我是个大书呆子,我做的事情一定看起来超级书呆子,让人看不明白。 + +> My blog inessential.com (this site) has been going since 1999. I mostly write about Apple nerd stuff. Other Apple nerds read it. <br/> +> 我的博客 inessential.com(这个网站)从 1999 年就开始写了。我主要写 Apple 书呆子相关的东西。其他的 Apple 书呆子会读。 + +> In the Apple nerd world I’m the NetNewsWire guy. <br/> +> 在 Apple 书呆子们的世界里我就是 NetNewsWire 哥。 + +> So I’m a nerd and a computer programmer. But what I am not is a math nerd... I’m usually the worst person at math in any room I’m in. Shock, I know! <br/> +> 对,我是个书呆子,是个程序员。但我绝对不是数学书呆子…… 我在任何地方通常都是那个数学最差的人。令人震惊,对吧!? + +好了,对 nerd 这个词的滥用我们看够了。读完之后我突然觉得 Brent 变得很亲切,因为我和他一样,数学非常差劲!虽然有些难以启齿,但仔细想想也没什么好隐瞒的:我的高考数学成绩只有 68 分!Brent 说他没有大学毕业,但就算毕业了,也会得到英语学位,而不是数学学位。 + +似乎全世界都有这样的误解:程序员一定数学很好,要学编程一定要先学好数学。我记得我的初中老师就问过我:“你学这个编程,难道不需要把数学学好吗?” + +他关于软件开发的观点我很喜欢,他认为==编程的重点不是数学,而是沟通==。首先是程序员和机器的沟通,更重要地,如果你在开发一个 App,也要考虑如何设计软件,让软件更好地和用户沟通。我在学软件工程相关的课程,例如需求工程、软件项目管理和架构设计的时候,也逐渐意识到,软件开发中最重要的过程从来不是写代码,而是沟通。架构设计是一种沟通、需求获取是一种沟通,更别提开发团队内部的沟通和与用户的沟通了——这也是我不担心程序员会被 LLM 取代的原因。 + +> Like any other popular art form, it’s about connecting with humans. <br/> +> 就和其他流行的艺术形式一样,重点在于和人的链接。 + +我想我比起后端更喜欢前端开发的原因也是如此,前端与用户的链接感会更强。不过从技术上,我还是不太喜欢 JavaScript 生态。记得去年还有过学 Swift 做苹果开发的想法,兴许最近也可以捡起来了,先等水逆过去吧。 + +### 擦马桶如何帮我维持学者风范? > [!note] 📻 -> [《独树不成林》313 - 如何学习快乐老女人运动法](https://www.xiaoyuzhoufm.com/episode/69a84afae46749707ffdff3c) +> [《独树不成林》315 - 擦马桶如何帮我维持学者风范](https://www.xiaoyuzhoufm.com/episode/69ab81365b2d0ed069b63f7d) -树老师在这期运动闲聊播客里分享了她母亲的锻炼心态,她认为她母亲的心态要比她自己和许多年轻人都健康不少。她的母亲在过去的几十年人生里都没有任何运动习惯,直到年过五十,发现身体正在明显地衰老、恶化,才开始为了维持生命而运动。她锻炼的目的是为了对抗衰老和掌控身体,是为了锻炼神经系统调动身体部位的能力,每天能动起来她就很快乐了。 +听这期博客的前一天刚刷过马桶,亮到能反光。于是我一边把洗手间的各个角落刷了一遍,一边把这期播客听了两遍。我最喜欢的句子是: -对比另一种锻炼心态,追求进步、对比和竞争的锻炼,「快乐老女人」的锻炼心态要更健康。前者容易陷入这样的窘境:一旦做不到进步,或者进步不够明显,锻炼的乐趣和动力就会大大减少;一旦有了对比,锻炼的目的就不再是满足自己身体的需求,而是为了迎合别人的审视;一旦有了竞争,人就会感到焦虑。这种锻炼心态甚至成为了门槛,让没有锻炼习惯的人认为,自己要是没有运动天赋,就不该开始运动。实际上,每天都让自己动起来这个事实本身就值得骄傲,就像自己又活了一天一样值得庆祝。 +> 在网上喷粪不如在现实中擦粪。 -关于锻炼的目的,我的观点可以引用 Steven Pressfield 的《[一生之敌](/library/2025/一生之敌/)》中的一句话来阐释:*除了爱,出于任何其他原因而从事艺术创作,都是卖淫。* 把这句话的「从事艺术创作」换成「锻炼」,就是我的观点,而且我觉得这句话用在「身体」相关的话题上,显得更有说服力。 +树老师说他不焦虑、不想死,是因为每天都要做家务,没空想东想西。整天坐在电脑前从事思考工作的人容易产生这样一种假象,认为一切都在控制当中,然而当生活中的小事出了差错,这种差错很容易降他们击垮,陷入崩溃当中。我也赞同,在网络世界、精神世界、知识世界中待久了,需要关注现实,而且是与自己有着直接关联的现实,而非别人的生活、海另一边的战争、某个无聊的家伙对自己的谩骂。 -锻炼是为了保证身体的机能,提升神经适应性,保证自己的身体能做到它应该做到的事情。简单来说,是为了健康——*我那个经常跑健身房,买五花八门运动补剂,没事就对着镜子拗造型的室友,还对我这个目的颇有微词。* 当然我不是说健身房撸铁增肌就不好,我向来很欣赏热爱力量训练并关注身体变化的人,不过我欣赏的是能从训练和身体变化本身得到满足的人。 +刚打开这期播客没多久,我就做了一个决定。我找到我的室友,告诉他以后的家务都由我来做。这里要交代一个背景:先前我们是按照时间来划分家务职责的,一个人负责一天,但他老是忘记,我也常因为各种小事跳过自己做家务的那一天;最近改成了按照事务划分,每个人负责一部分,当时厕所划分给了我,与是我立马把马桶擦得锃亮给他打了个样,可惜激励效果欠佳。某天我看不下去,自己动手吸尘拖地(这本该是他负责的工作)。于是我想,比起每天阴湿地暗暗谩骂对方不好好做家务,不如自己把活儿全干了。我告诉他接下来的家务我全包了之后,他还有些尴尬地回应说自己最近太忙了。 -更准确地说,我欣赏所有好好为自己和自己热爱的事情活着的人,在我看来,这才是生命力的体现,而生命本身就是意义。 +我最近也没闲着,野心勃勃地同时推进着两个个人项目,学校那边也有各种琐事,辅导员和某些老师也在推着我做职业规划,焦虑是难免的。正是因此,我才开始比以往更加频繁、细致地做家务,把自己的大脑从想东想西的状态拉出来,开始关注身体、生活环境和秩序。 + +*所以,读者有没有什么瓷砖和木地板的清洁剂推荐呢?* ### 亚当·斯密如何颠覆古典美德? @@ -59,6 +91,21 @@ toc = true 对于这两种美德,也可以联系到第 42 期周刊引用的[古典审美与现代审丑](/posts/weekly/42/#古典审美与现代审丑)。在我看来,古典美德在如今的视角下更接近于自我要求,而强调同理心的现代美德更接近于社会要求。个体可以要求自身节制,比如节制饮食,但在社会层面,应该对肥胖者有同理心,不去责备他们缺乏节制的美德。[^1] +### 锻炼是为了什么? + +> [!note] 📻 +> [《独树不成林》313 - 如何学习快乐老女人运动法](https://www.xiaoyuzhoufm.com/episode/69a84afae46749707ffdff3c) + +树老师在这期运动闲聊播客里分享了她母亲的锻炼心态,她认为她母亲的心态要比她自己和许多年轻人都健康不少。她的母亲在过去的几十年人生里都没有任何运动习惯,直到年过五十,发现身体正在明显地衰老、恶化,才开始为了维持生命而运动。她锻炼的目的是为了对抗衰老和掌控身体,是为了锻炼神经系统调动身体部位的能力,每天能动起来她就很快乐了。 + +对比另一种锻炼心态,追求进步、对比和竞争的锻炼,「快乐老女人」的锻炼心态要更健康。前者容易陷入这样的窘境:一旦做不到进步,或者进步不够明显,锻炼的乐趣和动力就会大大减少;一旦有了对比,锻炼的目的就不再是满足自己身体的需求,而是为了迎合别人的审视;一旦有了竞争,人就会感到焦虑。这种锻炼心态甚至成为了门槛,让没有锻炼习惯的人认为,自己要是没有运动天赋,就不该开始运动。实际上,每天都让自己动起来这个事实本身就值得骄傲,就像自己又活了一天一样值得庆祝。 + +关于锻炼的目的,我的观点可以引用 Steven Pressfield 的《[一生之敌](/library/2025/一生之敌/)》中的一句话来阐释:*除了爱,出于任何其他原因而从事艺术创作,都是卖淫。* 把这句话的「从事艺术创作」换成「锻炼」,就是我的观点,而且我觉得这句话用在「身体」相关的话题上,显得更有说服力。 + +锻炼是为了保证身体的机能,提升神经适应性,保证自己的身体能做到它应该做到的事情。简单来说,是为了健康——*我那个经常跑健身房,买五花八门运动补剂,没事就对着镜子拗造型的室友,还对我这个目的颇有微词。* 当然我不是说健身房撸铁增肌就不好,我向来很欣赏热爱力量训练并关注身体变化的人,不过我欣赏的是能从训练和身体变化本身得到满足的人。 + +更准确地说,我欣赏所有好好为自己和自己热爱的事情活着的人,在我看来,这才是生命力的体现,而生命本身就是意义。 + ## 星群 ### GRAM @@ -73,7 +120,7 @@ toc = true  -如果你在找 VS Code 替代品(是时候抛弃这个基于 Electron 的软件,~~停止用浏览器编辑代码了~~),GRAM 值得一试。 +如果你在找 VS Code 替代品[^4],GRAM 值得一试。 访问:[GRAM](https://gram.liten.app/) 或 [Codeberg 仓库](https://codeberg.org/GramEditor/gram) @@ -81,10 +128,19 @@ toc = true 不出意外的话,这应该是《稻草人周刊》里最后一次出现「当下」这个栏目,原因是我正在计划一个每月更新的新闻报,也就是「Newsletter」,名字暂时还没有定下来。新闻报中计划包含这些内容: -1. 过去一个月里,自认为写得不错的博客文章(其实《稻草人周刊》也有「回拨」这个栏目,原本打算每个月写一次,但总是容易忘记,干脆放到一个月刊里) +1. 过去一个月里,自认为写得不错的博客文章(其实《稻草人周刊》也有「回拨」这个栏目,原本打算每个月写一次,但总是忘记,干脆放到月刊里) 2. 正在进行或已经完成的项目,情况以及进度回报(我对「项目」的定义很广泛,一般来说是软件项目,也可以是目标明确且耗时较长的大任务,比如「把家里的所有塑料制品都替换掉」) 3. 书影音游回顾,包含这个月看的剧、写过的书评合集和完整听过的专辑等(也希望能借此治好我的电子阳痿吧) +这意味着《稻草人周刊》会更关注于分享我每周读到的有趣文章、听过的觉得有启发的播客、发现的觉得不错的项目。如果你关心我最近做了什么事情,可以等待新的月刊,预计会在四月初发布第一期;或者,你可以在[联邦宇宙](https://akk.eltr.ac/@eltrac)上关注我,可以用 Mastodon、Misskey、Pleroma 等联邦宇宙软件与我社交。 + +## 切片 + +- 状态低迷、注意力涣散和效率低下的状态持续挺久了,春节结束回到家也不见好转,遂求助玄学,盘了半天月运势和周运势也没看出个名堂,直到突然被提醒天象:从二月底开始水星逆行了,直到三月 20 日结束。 + + 水逆啊,那不稀奇了,放心躺吧。 + + *双子座加月升处女已经被水逆折磨习惯了* [^1]: 相关博客文章:《[关于肥胖的杂谈](/essays/关于肥胖的杂谈/)》 @@ -92,3 +148,5 @@ toc = true [^3]: 出自《The Tortured Poets' Department》 + +[^4]: 是时候抛弃这个基于 Electron 的软件,~~停止用浏览器编辑代码了~~ |
