普通视图

剖析千行C语言文本编辑器Kilo的技术细节

2025年12月6日 13:26

今天上午学习了一下Kilo的源代码。我很早以前就对文本编辑器的实现方法感兴趣了。

Kilo是一个很简易却不简陋的项目,清晰地展示了如何构建一个终端下的文本编辑器,它的目的不是真正让你学会去开发一个高标准高质量,能投入使用的文本编辑器,而是理解文本编辑器的核心骨架、理解一个看似庞大一团糟的问题的拆解思路。这是一个很好的起点。也过了一把爽玩C语言的瘾(虽然我并没有写几行代码)。

程序分析

整个项目只有一个文件,一千三百行代码。我用了大概一个半小时梳理了程序的执行流程,手画了一个流程图。为了美观,我又用Graphviz绘制了一个电子版:

程序流程图(大意)
程序流程图(大意)

这张图我省略了一些深的函数调用,但也能帮助我大体上掌握这个程序的执行流程。结合这张图与源码,我发现文本编辑器的核心功能——打开、编辑、保存,实现难度并不大,在C语言中容易踩坑的是缓冲区处理、文件读写这种老生常谈的内容。在这个程序中,调用最多、最重磅的部分是initEditor这个函数,以及后续的高亮处理,尤其是前者在窗口尺寸计算、修改后的做法上花费了大功夫。其实和终端环境的交互才是最麻烦的点,它提供的封装和抽象并不多,有很多需要自己手动调试的地方,繁琐是显著特征。

终端信号处理

我发现在终端程序里,需要快捷键的部分都是使用Raw mode和signal相关的函数组合实现的,在理解signal这个函数和它的有关宏的概念时,耗费了比较长的时间。

简单来说,signal用于处理用户在终端发出的信号,比如SIGINT代表由C-c产生的中断信号,SIGIGN代表忽略信号,即接受到这个信号以后什么都不做,关于如何接受信号,就要说起signal()这个函数。定义如下:

void (*signal(int sig, void (*func)(int)))(int);

看起来非常复杂,说人话就是接受两个参数,第一个参数是int类型的sig,是信号编号,比如SIGINT,这是要接收的信号。第二个参数是一个函数指针,接受一个返回void,参数是int类型的信号处理函数,使用第二个函数中的函数对接受到的信号做处理。函数返回原来的信号处理函数(函数指针)。

可以用typedef简化理解:

// 定义信号处理函数的类型
typedef void (*sighandler_t)(int);

// 用 typedef 重写 signal 声明
sighandler_t signal(int sig, sighandler_t func);

在Kilo中,C-c是被忽略的,因为它非常容易导致丢失修改,可以这样实现:

signal(SIGINT, SIGIGN);

不过,在Kilo的实现,是通过调用editorReadKey(),从Raw Mode 中读取一个按键存入数组,用switch匹配按键对应的值再返回给调用方,调用方也通过switch,匹配对应的操作函数。而在C-c的部分,则是直接break掉了。

...

case CTRL_C: /* Ctrl-c */
        /* We ignore ctrl-c, it can't be so simple to lose the changes
         * to the edited file. */
        break;

...

这种实现方法也有一定局限性,不同的终端模拟器可能发送不同的转义字符,硬编码转义字符会出现不适配的情况。并且使用read()阻塞读取输入有性能瓶颈。

精妙的数据结构与算法

这个程序最有趣的地方在于清晰、通用的数据结构的设计,以editorConfig为例:

struct editorConfig {
    int cx, cy;     /* Cursor x and y position in characters */
    int rowoff;     /* Offset of row displayed. */
    int coloff;     /* Offset of column displayed. */
    int screenrows; /* Number of rows that we can show */
    int screencols; /* Number of cols that we can show */
    int numrows;    /* Number of rows */
    int rawmode;    /* Is terminal raw mode enabled? */
    erow *row;      /* Rows */
    int dirty;      /* File modified but not saved. */
    char *filename; /* Currently open filename */
    char statusmsg[80];
    time_t statusmsg_time;
    struct editorSyntax *syntax; /* Current syntax highlight, or NULL. */
};

我们定义了一个editorConfig类型的变量,它全局唯一,维护了程序的基本状态,包括行、列、滚动偏移、终端尺寸。让程序状态的流转非常清楚。这些内容都是一个文本编辑器需要关心的最核心内容:光标位置、视图偏移、数据和文件的状态等信息。

通过这个结构体,能简单地获取程序当前的状态,或者为某项功能对状态作出修改,对一个新手来说还是挺拓宽思路的,至少我想不到怎么设计这些数据结构。

数据与显示的分离

editorConfig中嵌套了一个erow类型的变量,里面的东西也可以展开说说,定义如下:

typedef struct erow {
    int idx;           /* Row index in the file, zero-based. */
    int size;          /* Size of the row, excluding the null term. */
    int rsize;         /* Size of the rendered row. */
    char *chars;       /* Row content. */
    char *render;      /* Row content "rendered" for screen (for TABs). */
    unsigned char *hl; /* Syntax highlight type for each character in render.*/
    int hl_oc;         /* Row had open comment at end in last syntax highlight
                          check. */
} erow;

这里面有一个render字段,在editorUpdateRow()中,有这样的代码:

unsigned int tabs = 0, nonprint = 0;
    int j, idx;

    /* Create a version of the row we can directly print on the screen,
     * respecting tabs, substituting non printable characters with '?'. */
    free(row->render);
    for (j = 0; j < row->size; j++)
        if (row->chars[j] == TAB)
            tabs++;

    unsigned long long allocsize =
        (unsigned long long)row->size + tabs * 8 + nonprint * 9 + 1;
    if (allocsize > UINT32_MAX) {
        printf("Some line of the edited file is too long for kilo\n");
        exit(1);
    }

循环的if中使用的 TAB 定义在KEY_ACTION枚举,值为9,在ASCII码中是\t也就是水平制表符。代码在统计tab的数量。

问题在于,一个\t在内存中占1字节,但在屏幕显示的时候会占据八个字符的宽度,这里就体现出render的作用了,如果一行有两个\t,每个最多展开为八个空格,那么所需要计算的大小就是2 * 8 + chars的大小

(unsigned long long)row->size + tabs * 8 + nonprint * 9 + 1;

那个恒为0的变量nonprint可能是为将来打印不可见字符设计的。结尾的+1'\0'预留。

按照这个公式,给render分配内存:

row->render = malloc(row->size + tabs * 8 + nonprint * 9 + 1);

随后,这些代码在非制表位填充空格:

idx = 0;
    for (j = 0; j < row->size; j++) {
        if (row->chars[j] == TAB) {
            row->render[idx++] = ' ';
            while ((idx + 1) % 8 != 0) // 在非制表位填充空格
                row->render[idx++] = ' ';
        } else { // 正常字符直接赋值
            row->render[idx++] = row->chars[j];
        }
    }

row->rsize = idx; // 在循环结束的时候,idx等于写入字符总数
row-render[idx] = '\0'; //在字符末尾添加结束符

虽然有点绕,但设计还是非常巧妙的!


代码高亮

源码中使用大量篇幅实现了代码高亮,定义了一些关键字:

char *C_HL_extensions[] = {".c", ".h", ".cpp", ".hpp", ".cc", NULL};
char *C_HL_keywords[] = {
    /* C Keywords */
    "auto", "break", "case", "continue", "default", "do", "else", "enum",
    "extern", "for", "goto", "if", "register", "return", "sizeof", "static",
    "struct", "switch", "typedef", "union", "volatile", "while", "NULL",

    /* C++ Keywords */
    "alignas", "alignof", "and", "and_eq", "asm", "bitand", "bitor", "class",
    "compl", "constexpr", "const_cast", "deltype", "delete", "dynamic_cast",
    "explicit", "export", "false", "friend", "inline", "mutable", "namespace",
    "new", "noexcept", "not", "not_eq", "nullptr", "operator", "or", "or_eq",
    "private", "protected", "public", "reinterpret_cast", "static_assert",
    "static_cast", "template", "this", "thread_local", "throw", "true", "try",
    "typeid", "typename", "virtual", "xor", "xor_eq",

    /* C types */
    "int|", "long|", "double|", "float|", "char|", "unsigned|", "signed|",
    "void|", "short|", "auto|", "const|", "bool|", NULL};

然后在具体实现editorUpdateSyntax()中,简单粗暴地遍历字符匹配这些关键字。在一般的教学例子中这样实现是可以的,我认为在具体的工程中应当用词法分析、语法分析和字典树去匹配。更易于维护和拓展,也能适配复杂的嵌套。


上述分析提到的缺点都可以作为优化方向,比如提供更简单操作接口,用词法分析技术或接入LSP服务器,为程序提供Lua接口来扩展插件……不过我相信在古老的纯C应用中,添加这些功能的繁琐程度和开发周期简直是灾难级别的。但是在处理快捷键上,使用termcap库的难度应该小于修改代码高亮部分的难度。

这个项目最值得学习的点是如何将抽象的功能和终端联系起来、如何设计合理的数据结构以及标准库的使用。是阐释「程序 = 数据结构 + 算法」的很好例子。不过我自己是想不到那些函数该什么时候用,没准还会手动实现标准库造好的轮子呢。

学习的过程很好玩,从主函数开始探索整个程序,一段一段地跳转调用,A调用B,B调用C,C调用D,理解了逻辑后再把它们画成图,对感兴趣的部分深入研究,有一种前人用他的智慧抚平我大脑褶皱的感觉……读懂它,几乎就等于一只脚趾踩上了理解Vim / Nano等项目的大门吧。

想自己重新实现一次,然后加入自己的优化,比如联动Lua / Zig甚至是Go来实现上层的功能,好玩好玩真好玩。

头皮好痒,要长脑子了!


  • 在查资料的过程中又发现了 vismicro(它甚至是用Go写的),又有新玩具了!
  •  

一次对Webmention的探索

2025年12月5日 17:22

Webmention is a simple way to notify any URL when you link to it from your site.

It is an open web standard (W3C Recommendation) for conversations and interactions across the web, a powerful building block used for a growing distributed network of peer-to-peer comments, likes, reposts, and other responses across the web.

Webmention 是一种开放网络标准(W3C推荐标准),用于在链接到某个网址时,自动向该网址发送通知。它是构成分布式网络的基础组件,支持跨网站的点对点评论、点赞、转发等多种互动。

上一篇文章 写完后,我开始寻找更合适的评论方案。Webmention这个看起来古老,但又超前的形式很快引起了我的兴趣。「去中心化」这个词貌似对我有什么魔力,就比如Mastodon,比Twitter更吸引我。

我很想试试用Go手搓一套收发系统,但时间并不充裕,正巧webmention.io提供现成的服务和详细的文档,那就跟着文档配置吧。

验证与接收

教程提供了多种验证方案,这里使用最简便的Github. 只要在网站的首页挂上一个链接,指向用户档案页:

<a href="https://github.com/example" rel="me">github.com/example</a>

如果不想让它可见,也可以设置为一个`:

<link href="https://github.com/example" rel="me">

作为验证,你需要在Github主页中包含你的网站
作为验证,你需要在Github主页中包含你的网站

这里我部署后回退了一下网页就弹出来Github APP 认证请求了,大概需要刷新网页或打开Github?

这样,访问之后页面中提供的链接,就可以看到别人发送的Webmention了。

渲染

在网页中添加link

<link rel="webmention" href="https://webmention.io/你的用户名/webmention" />

我使用webmention.js,根据说明文档,可以复制仓库中的/static/webmention.min.js到博客的/static/js/webmention.min.js.

在评论框下方提供一个容器<div id="webmentions"></div>,并引用脚本

<div id="webmentions"></div>
<script src="/js/webmention.min.js"
    data-id="webmentions" // 与容器id匹配
    data-page-url="https://yourdomain.com/当前文章永久链接" // 建议使用
    data-max-webmentions="50" // 最多显示数量
    data-wordcount="30" // 回复预览最大字数
    data-sort-by="published" // 按照发布时间排序
    data-sort-dir="up" // 时间升序
    async>
</script>

Hugo用户在永久链接上可以使用:

data-page-url="https://yourdomain.com{{ .RelPermalink  }}"

为了本地测试,使用相对链接的变量拼接。脚本会对API发送请求,如果拿到的数据是空的,则会把最终的HTML输出为一个空字符串,所以刚开始看不到输出是正常的。大概写点CSS就可以正常投入使用了。

对Webmention的看法

我认为Webmention是一种很像友情链接的互惠模式,优于在评论区下方留下链接的形式。续上上一篇文章的话题,这样不仅促成高质量的互动,也能丰富自己的写作素材,分量应该重于评论区链接的手段。就像上一篇文章的结尾所说,利人利己,何乐而不为呢?

虽然这种模式的普及程度不高,但我相信去中心化会称为互联网的新趋势。开放、互联才能称为「互联网」。

我通过一些Webmention,一条一条顺藤摸瓜也找到了很多有趣的博客。我准备有时间优化渲染格式,可能也会研究一点桥接的功能,不过还是要保持博客一贯的简洁风格。当然,要先有人回应才有数据拿来渲染,欢迎大家使用Webmention参与互动!

  •  

那种虚伪的互动和友善,赶快把它撕破吧!

2025年12月4日 16:15

本文使用了一些带有攻击性的词汇,言论风格尖锐,介意者谨慎阅读。

本来想随便写写近期的事,写到网站最近的变化,写到了评论区的问题,越写越多,单独开一篇文章来说说吧。有时候觉得自己像个愤青一样,或者就是个愤青,整天喷天怼地的,应该平和点,不过实在不吐不快。


给评论区做减法

最近我把评论系统换成了Giscus,原因很简单:我累了。

关于评论系统,我想了很长时间。

至少是在我的博客里,如果是议论类文章,基于事实或观点的讨论、延伸,或反驳。偏题跑题、没看完或没看懂文章就急于发表评论的情况并不少见。而且性子比较急的朋友直接看到了评论区,自己的重点也可能会被带跑偏,于是构成恶性循环……

如果是记录类,分享见闻的文章,评论除了附和、赞同之类的评论,也难以找其它类型的评论,而且似乎也不会出现其他类型的评论。

我不是要说教读者该如何写评论,其实是我并不擅长回应这种评论,或者可以说,我没有跟人闲唠嗑说家常和寒暄的能力。一些评论留下的话茬实在让人很难接上,但不回复又显得冷漠,这是一直以来让我困扰的问题。和社交沾边的事,不是热脸贴冷屁股,就是痛并快乐着,又在期待与不安中挣扎。

七八月的时候我特意在评论区上方注了一行小字,具体原文不记得了,但我记得大意是:「我没回复是因为赞同,或者没什么可说的,而不是因为对你有意见」。主题改来改去,换来换去,就忘了重新写上这行字了。这是为我不回复这一行为的辩解,也是为读者可能会受到的「冷落」所做的提前安慰。

另一方面,维护Waline的外部CSS很麻烦,我也不想再修改CSS了。

我在使用Waline的时候尝试给评论功能做减法,我移除了表情回复和正文插入表情的功能、移除了表情包,删除了点赞、头衔,隐藏了头像和IP。力求打造安静的浏览和讨论氛围,甚至有移除网址文本框的想法。出于对博客的理念不同,有些同样在写博客的人就是冲着这个框来的,他们可能就是非常享受与人社交的获得感,把博客作为社交名片。

我觉得移除网址框可以减少为了自我营销而发送的评论,因为自己的博客沦为别人的推广场所的滋味很难受,也实在不知道怎么对待这些评论最为恰当。也想过关闭评论区。如果关闭评论区,可能会显得高冷,甚至是封闭。

折中的方案

转念一想,我怕的是什么?怕的是不知道如何接话。那么提高评论的「门槛」,让真正想要讨论的人评论,也许能解决问题。所以我换成了从前被我鄙视的Giscus。我当时觉得一定需要Github帐号才能评论是在一定程度上打消读者互动的积极性的,但现在才意识到了这是在放过自己。说真的,我非常佩服那些能一直和人聊得来,接得上话的人,也很佩服从一篇干巴巴的日常分享,甚至只有几张图的文章里找出可以评论的点的人,这确实是一种社交能力。

为了照顾没有Github或访问不方便的读者,我也放了一个邮件链接,可以点击发送邮件评论。由于使用场景,它多少会和「正式性」沾边,这也就间接提高了交流的质量。虽然我的博客并没有什么流量,但有效的交流,总比虚伪的敷衍强。我知道那些评论可能出于友善,但是妥善处理它们对我真的很难。

简单地来说,让说话更麻烦,是一种让说出来的话更有分量的方式。它会让说话的人经过深思熟虑,认真想想这些话到底值不值得我费这么大劲去说。

为什么我认为新的做法更好

可能有人要批判我是「精英主义」,把Email和Giscus强行和高质量讨论绑定在一起,或者认为我说以前的讨论都是低质量,我要为自己辩解。

首先,不是会用Github和Email的人都能写高质量的评论,而是这个方法在「倒逼」出正经的评论。

Github和技术身份强关联,它代表作为开源社区的一员的你,对某篇文章的看法。如果说得更「敏感」点,为了维护网络上的形象,至少不应该写出冒犯性的话语或无理取闹的反驳。而邮件在其它场合下的使用就如上文所说,是带有一定正式性的,并且写邮件的「仪式感」也很容易让人认真对待这件事。至少需要安安静静坐下来,组织完整的语言表达看法,留有正式的署名和日期,长期可以留存 —— 这些都在间接促成一个或严谨或私密的正式的讨论环境。

虽然这种做法可能会拦住内向但真诚或没有技术背景的读者,但也能拦住自我营销与应付不来的闲谈,我没有排斥喜爱轻松交流氛围的读者,这是不得已的取舍。而且博客不是论文期刊和政府文件,不是公示真理和规范的地方,这里是自我表达的地方,我在尽力打造理想中的秩序和风格。

此方法也能防止某些幽默的匿名评论。虽然当年百度贴吧和知乎都有很多匿名神贴,匿名才能让他们大胆表达,但总有这么一小波的大胆,给人一种傲慢和轻视的感觉。

林子不大也有各种鸟

比如说《罪恶感》这篇文章写得确实非常矫情,但有人匿名评论:

额…实际上只要是病,能够通过医学手段解决的,有钱人一般能请私人家教授课,可能这就是青春期吧…

这位网友的评论在不在理,确实是在理的。但连留个邮箱的勇气都没有,匿名在个人博客唱反调的行为,高高在上地想轻易解决慢性病,并把情绪都归结给青春期的傲慢的行为,属实让人忍俊不禁。

虽然文章发出来了肯定会有被人喷的风险,但我当时还是忍着自己的痛苦和不安,让人轻飘飘地说得一文不值的愤怒,给出了一个回复:

  1. 文本解读能力的问题

  2. 经历和共情能力的问题

我尊重你这个没啥大事的看法,不强求共鸣。

说得好,我同意了,玩去吧。

现在再仔细想想,这种文章根本不可能有人从搜索引擎来,大概率是某个混博客圈子的人,大概率也写博客。英国女作家伊夫林·比阿特丽斯·霍尔说过:「虽然我不同意你的观点,但我誓死捍卫你说话的权利。」

我今天说,虽然我不同意你的观点,但你唱反调连告诉我你是谁的胆子都没有,那你他妈的还是闭嘴吧!

如果你反对我,那就请你逻辑严密地写出几百字来批判我,即使是匿名我也会输得心服口服,在这种情况里匿名甚至可以促进大胆批判。而傲慢地写下反驳的话语却不敢署名的敢做不敢当的行为,我只能认为你是一个弱者,仗着个人博客对读者隐私的保护与自由的追求,输出轻浮的观点。

当然,匿名评论不是一定没有优势,如上文所说可以促进大胆批评,但任何事情都能从不同角度思考出不同的结果,没有人能做到真正的公平和客观,我只是尽力在维护边界。

在非匿名的评论中,有些人挂着自己的网站链接,写一句「学习了!」、「写得好!」,甚至连编程语言是哪个都没看清,指鹿为马地夸赞着,长期在各个博客的评论区混迹着。

出于人情的默契,这类行为往往被默许。我相信这是中文博客圈的大家都看破不说破的问题。今天我就在这里,以一个和大多数博主比起来确实是小孩的年龄,指出皇帝完全就是光着屁股在大街上乱逛。

我并不反对匿名评论和评论区,而是反对形式化的评论区,反对只是为了自己网站的外链的评论,反对形式化的、缺乏真诚的互动,而非反对社交本身。评论区应当是能围绕文章展开讨论、甚至是反驳的地方,哪怕意见相左,只要是真诚的表达,任何博主都会愿意真诚回应。但当评论的形式大于其本身的作用时,就该好好思考一下它究竟有没有继续存在下去的意义,以及如何存在下去了。

这种你唱我喝,看似牢固的关系,我在其它地方也有感受。

大概在十月份,我退掉了很多在上一次信息节食行动时没有退掉的QQ群。虽然确实有几位群友在问我为什么退群了,但过了一段时间后,仅仅是少了一个人自言自语。该打游戏的还在打游戏,该上班的还在上班,该骂街的还在骂街。这很正常,但也很残酷,少了某个人,大家照样吃饭,中东那几个国家照样战乱不断,地球照样天天转。

这种浅层的链接,只是披着一层友情之皮的无关紧要的感情。当然,这都是我的一家之言,你也可以认为我在社交上相当失败。

我能理解那种单纯对文章表达欣赏,又期待被回访的复杂心理。我个人的做法是开启一个点赞按钮。如果赞同或欣赏文章,也许不发那些简单但带有善意的评论,按一下那个按钮也能表达认同的态度。关于期待回访的心情,如果不是真正读了你的文字,被你的灵魂打动,那种回访就是肤浅且客套的,也许回访者也是出于迫不得已的礼仪压力。

所以无论是Q群聊天还是博客为了外链的「互访」,为了自己和他人考虑,为了让自己不再苦恼于如何应对根本没有留下话茬的评论,为了让别人不再绞尽脑汁填写自己博客的链接,如果你也厌倦了廉价的温情,那就来吧,那种虚伪的互动和友善,赶快把它撕破吧!

  •  

不喊口号,不搞煽情:《南京照相馆》才是抗日题材该有的样子

2025年11月30日 20:36

学校里每周一次的美术课在升入初三后,改为放电影,我在学校看完了一大半的《南京照相馆》,今天在家看完了剩余部分。

先说结论,《南京照相馆》无疑是一部艺术水平、教育意义极高、角色塑造饱满、讽刺控诉手法辛辣的非常成功的电影。

为什么《南京照相馆》更出彩

《南京照相馆》比同类型影片更出彩的原因是,它以平民的视角,揭露了抗日战争时期日寇在南京城泯灭人性的暴行,让战争的残酷更能落地。电影没有以上帝视角带着必胜的信念,泛泛而谈战争,而是用平民百姓在战争中受到的伤害、屈辱、苦难、屠杀,把战时普通老百姓的无助和绝望展现给观众。这就让历史看得见、摸得着,感受得到。而且没有宏大的英雄主义叙事,没有无所不能的超人式的人物,而是聚焦在小人物的挣扎。

其表现手法精湛之处数不胜数,举几个让我印象深刻的例子:

人与非人
人与非人

「仁义礼智信」
「仁义礼智信」

「保护那个人的生命,那是仁。」

「在照相馆挂上了安全的牌子,那是义。」

「向他们提供食物和药品,那是礼。」

「借刀杀人,那是智。」

「遵守诺言,给他们通行证,那是信。」

「我的理解,没有错吧?」

那个军官一边用毛笔写着歪歪扭扭的汉字,一边自信地说着。每写一个字都穿插平民百姓被虐待凌辱杀害的镜头。

仁义礼智信,一个也不沾。

有一个小细节,图一的台词中,中英字幕的表述都是「那个人 / 那个男人」,而日语的台词中使用「もの」,意思是「物、东西」。这也回答了林毓秀问王广海的那个问题:「日本人会把我们当人看吗?」

人性都泯灭了,如何理解人权?


在电影结尾,苏柳昌对伊藤用日语说出的强有力的「私たちは友達じゃない。絶対。」(我们不是朋友,绝对不是。)把这条从苏给伊藤洗照片开始的虚伪的「朋友」暗线推向高潮。

选用对方的语言,不是因为认可,而是确保对方能明确自己的态度。这句话不仅是对伊藤说的,也是说给今天的观众听的。它扯碎了美化或淡化历史的人给罪行扣上的面具,更是对当今日本的军国主义残余势力说的,振聋发聩。

从角色塑造上,以王广海为例,能看到一条清晰的成长轨迹。

在最初,王是一个麻木、圆滑、对日军抱有不切实际的期望且极尽谄媚的汉奸形象,经典言论是:「日本人主持南京,我们的好日子就来了。」

但在拍照片时日军把婴儿(华华)摔死后、在现场亲眼目睹屠杀后,对日军的态度慢慢发生改变,在自己的妻子快要被日军羞辱后彻底觉醒反抗,但也死在了大梦初醒的恍惚时分,被伊藤枪杀。

王广海和伊藤都是电影中层次感塑造非常好的角色,前者从麻木中觉醒人性和反抗精神,后者则一步步泯灭人性,显现出野蛮的本质,尽显侵华日军的虚伪、狡诈、残忍。

应当这样落实爱国主义教育

谈起抗日题材的影视作品,「爱国」是不得不说的一环。《南京照相馆》证明了,大家并不是讨厌以爱国为主旋律的电影,只是反感低水平的卖弄爱国情怀,以圈钱为目的烂片炒作和道德绑架。

我作为一个学生,向来对所谓「爱国主义教育」嗤之以鼻,因为它是烈日炎炎下空洞枯燥的演讲,是手抄报,是观后感、读后感,是一项任务,一个形式,是考试的标准答案,是政治正确。如上的所谓「爱国主义教育」倒不如说成「形式主义驯服」和「仇恨教育」。

而看了《南京照相馆》,切实体会到历史伤疤的疼痛和战争的残酷,是一种更高级更有效的教育,能让人更深刻认识到「国」是如何来的、为什么要爱国,以及和平的珍贵。

当今中日关系形式紧张,由于最近国内的发展状况,反日情绪高涨,高市早苗屡次冒犯,反复在台湾问题上试探底线,在九三阅兵后,不少人对可能会发生的战争持乐观甚至戏谑轻敌的态度,而教员早就在抗日战争刚刚拉开帷幕时撰写《论持久战》批驳了速胜论和速亡论两种错误的观点,其精神内核在今天仍旧有指导意义,即使敌我实力差距悬殊,过度乐观和轻敌都不是好的信号。

我们不仅要防日本军国主义复辟,更要防极端民族主义思潮的侵袭。针对日本平民的复仇思想,希望南京的惨剧在东京重演,也是不切实际且残忍的想法。应当正视并铭记历史而不是延续仇恨,关心身边为祖国做出贡献的底层人民和劳动者而不是空喊爱国口号。爱「国」这个抽象的符号,一定要落到具体的人。

虽然这部电影在艺术上取得了成功,但在技术上仍有不足之处1、且结尾直接进入审判略显仓促,但总体来说是一部非常成功的电影,是一部很干净纯粹的电影,价值观导向正确、拍摄手法和思路水平高,反映真实的历史。它没有卖弄爱国情怀,也没有让侵略者怜悯的情节,而是用受害者的一腔悲愤和不屈为战争大背景下的小人物立碑作传。在惨烈的战争后,我们更应该珍爱和平,电影落幕后,窗外的安定与幸福就是最好的彩蛋。愿我们这一代人铭记历史,革命先烈安息,祖国繁荣昌盛,世界和平安定!


  1. 1:22:26演员双手没有被捆至背后,在被杀害后手从身后挣扎开倒地;1:22:26伊藤翻开的抽屉中有左至右书写的简体字「档案袋」,下方有拼音「DANG AN DAI」。 ↩︎

  •  

「创作者」们,用AI当开塞露

2025年11月22日 21:06

AI是一个躲都躲不掉的话题,无论在哪里都能看到。我个人对这个话题兴趣不大,但最近发生了一件让我很不舒服的事,就借着这次机会谈谈AI创作的事。


今天下午,我和我父亲聊天。他最近一直在看AI和自媒体有关的内容。比如Claude, 提示词优化等方面,想运营一个短视频帐号,用AI大量制作暴款视频带货盈利(主要聚焦个人成长、社交等方面)。这事跟我说主要是想找我提供所谓的「技术支持」,让我帮他部署模型、调试和维护。但有了今天这篇文章,就代表了我压根不想干。

虽然从理论上这么赚钱并非不可行,甚至已经有很多比较成熟的方案,你只要会打字,有一台能联网的设备就行。但仔细想想,还是能找出几个值得掰扯的点。

你能想到的为什么别人想不到?

AI大规模普及后,写作、编程、绘画、甚至是作曲的门槛已经变得相当低,只要有语言组织能力,或许加上一点点财力,就能轻松用人工智能帮你完成「创作」。而这种「创作」的流程又进一步优化,已经有了很多基于AI的「创作」工作流,教你调教各种AI,优化提示词、写文章、写代码……

上次让某些领域有颠覆性改变的发明还是社交媒体,让每一个人都可以轻松发表自己的看法。而AI的出现让每一个人都能「创作」。

仅举例用,无冒犯作者意
仅举例用,无冒犯作者意
仅举例用,无冒犯作者意
仅举例用,无冒犯作者意

既然每一个人都能做,为什么商单会找上你?千篇一律的文案风格、视频风格,甚至难以分辨彼此。内容同质化、低质化、模板化的大背景下怎样才能做到脱颖而出?内卷是永远不会停止的,借助AI做自媒体的门槛看似谁都能轻而易举地踏过去,实际上相当困难。

观众的被欺骗感

试着想象一下:你刷到的每一个视频背后,都是葛优躺在显示器前,复制粘贴大模型生成的文本,机械、重复、麻木地完成工作的那类人在制作,并且他们只需要两三分钟就可以生产出十分钟甚至更长的,看起来人模狗样的视频,而你要花费你宝贵的生命在大模型从互联网各处和语料拾来的牙慧上,你作何感受?

无论是二十分钟甚至更长的科普视频,还是用手机和烂梗素材拼贴的短视频,背后都有创作者付出了时间和精力。无论质量的高低,创作者真心是可触摸到的。每一字每一句,都闪耀着作者思想的光辉,而AI生成的文本,只是在数学上计算了每个字可能出现的概率,在用词里对用户加以谄媚,在结果上空有其表。他究竟代表着谁?你想让他代表谁,他就可以代表谁。一篇高中生的习作可以被AI捧到提名诺奖,而真正诺奖得主的作品,又可以被批判得一文不值。

使用AI批量生产内容,不仅是对观众的欺骗,更是对创作这一行为本身的背叛。AI背后的到底是作者,还是冷冰冰的数学与统计学程序?创作,最后不要沦为收手工「匠心费」的只能看,不能摸的工艺品了。

思考深度和逻辑能力缺失

在搜集资料时,我发现了这样的观点:

从自身出发,更科学、更理性地对待AI创作时代,树立对自我创作的价值的全新认识。

比如,从“我写的”转向“我发现的”。

比如,从“内容生产者”转型“内容想象者”。

比如,“表达自我”升级成“激发共鸣”。

……

第三种,我把它称作“伪人性崇拜”,它其实是一种人类社会长久依赖就存在的反智倾向。

但是他们却忘了:海明威用打字机写作,并坚称打字机比用笔书写更凝练、更高效,也被同时代用钢笔、甚至羽毛笔创作的同行和文艺界人士们,揶揄、嘲讽,甚至批评,说他的作品充满机械的臭味,批判他从根本上是一个作风粗野,毫无历史上伟大作家们那种深邃的精神格调,也毫无优雅气质的“文痞”。

当电脑出现后,这种对机器创作的偏见就更明显了,“键盘的机械触感隔断人类灵魂的流淌,完全比不上笔在纸上的流畅书写的情感自然深刻”,类似这样的言论在当时老一批作家和读者中,流行了很长时间。

其实,今天当我们在星巴克用MacBook甚至是智能手机码字时,当我们随时通过搜索引擎,大大摆脱对个人知识储备和数据资料积累的依赖时,对以前的人们来说,何尝不是另一种“技术作弊”?

—— 《为什么中国很多人见别人用AI的就崩了?AI写作歧视症:这个时代最挣扎的文化偏见》(后文简称《偏见》)1

郑永年认为短视频的崛起让中国进入了全民弱智的时代,那么AI的崛起,无疑是给这种形势火上浇油。如果短视频真的使全民弱智,那么滥用AI进行「创作」,并主张「树立对自我创作价值的全新认知」,就是让本就难以沉静的心更加浮躁:输入提示词、等待模型「思考」、获得输出。这个过程,从创作者自身的角度出发思考,他们得到了什么?打字速度和准确度的提升?

《偏见》中探讨的「我发现的」与「我写的」实际上是一种包含关系:我发现 => 我写 => 我有收获。而不是:我发现 => AI想、AI写 => 我坐享其成。

第二条也同理,想象 => 设计 => 实践。这是生产的大过程。

而「表达自我」与「激发共鸣」,一定是「升级」的关系吗?甚至无法从中找到逻辑联系。两者可以共存,而且没有谁高谁低。

在引用《偏见》的第二段文本中,讨论了创作工具的偏见:纸笔、打字机、电脑。不管使用何种工具,「创作」的过程都是作者独立思考、独立撰写。而不是让他「人」代替创作者思考与撰写。

在我看来,AI的「深度思考」功能最具讽刺意味。主动放弃深度思考的权利、丧失深度思考的能力、当指挥AI思考的皇帝。这正是走向自我堕落的道路。

郑的观点可以再一次得到验证:谣言、仇恨、戾气的生产会更加易如反掌;长期滥用AI,思考和逻辑能力的缺失让它们更能猖獗释放。

滥用AI与善用AI

既然如此,用AI就有罪么?技术本身是中性的,问题的根源在于使用技术的人和目的。

AI是搜索引擎的新形式,它有着人手无法匹敌的爬取信息能力;AI是学识渊博的良师,从文学问到物理,从心理学问到古汉语,在已经有丰富研究的非前沿领域有着强大的知识储备。将AI作为真正意义上的工具使用,而不是免费的外包员工,是有利于创作和创作者的明智行为。

例如,使用AI寻找灵感,讨论话题切入点、如何优化作品表现的手法。甚至写文章时,将AI作为对话式的词典使用、探讨几个近义词在同一语境下的表现效果;纠打字错误、校对文本等。所以,合理地使用AI能提高创作效率和质量,同时也能促进自己能力的提升,而非沦为八手文本的搬运工,在变现的利益诱惑下丧失了创作的本心。

使用技术的方式有很多种,但完全使用AI进行「创作」,还美其名曰「创作者」,究竟是当还是立,请自行明辩吧!


  1. 这篇文章从手法上说,存在来源不明的数据和案例、不当类比、偷换概念等诡辩行为,如「某平台数据显示」、「72%的人会优先批判AI生成的文章」、「来自AI研究机构的最新数据表明」、02中谬误2的两个案例、谬误3 偷换AI本身情感与给人带来的情感波动的概念等。 ↩︎

  •  

从四年前的夏天说起。

2025年11月15日 19:24

那时候还不懂人事,记忆似乎还没有形成一条流畅的线性结构,只是几个简陋的画面拼凑。大概是在二零二一年,我开始学习素描。

那时候机构就在家楼下,甚至从窗户就能望到那里落地窗后的人影,每周六下午两点,我带着电话手表去上课,明明就在小区里,到地方后还是要拍上一张自拍证明自己安全到达目的地。那里只有四五间教室,其它的教室都关着门,只有走廊尽头的那间时常开着。屋子里摆着一排笨重的木质画架,墙中央有一台挂壁电视,老师用一根HDMI线将自己的笔记本电脑和那台电视连接上,放着幻灯片。第一节课讲很基础的内容,比如坐姿、握笔方式。

老师看起来像刚毕业不久的大学生。只记得有一段时间她变着花样扎头发,最近几个月剪成短发了。

之后的一段时间,我每天都很盼望周六的素描课,源于什么呢?学习到新东西催生出的热情?还是三分钟热度的第一秒?无从得知。也许只是一种本能上的喜爱。我断断续续地学了两年,从基础的正方体、棱锥,到贯穿体,正十二面体、多种几何体组合,我画了两年的几何体。

除了几何体外,有些节假日也会组织外出写生。

2022年劳动节 极其稚嫩的笔触

写生,对线条的掌控能力远不如现在的三分之一的我,抱着画板坐在斑驳的树影里,画过远处的河湖楼房,画过近处的花草树木。每次地点都选在热闹的公园里僻静的角落,有一种偷偷摸摸的感觉。

那两年我对画画的热情极高涨,有时间也有精力去练习。当时我的造型能力在同龄人中比较出众,因此还获得了美术老师,也是我们的副班主任的青睐,有相关的任务都会布置给我。

我们在画了两年几何体之后开始学习简单的静物,从切面苹果开始。梨、洋葱、菠萝……能进嘴里的画了个遍后,开始画罐子杯子:陶瓷的罐子、不锈钢的壶、玻璃的酒瓶……

无论是学画画,还是学跳舞、钢琴、吉他,考级都是必不可少却没什么实际用途的工作,至少素描是这样的。我先后考取了素描二级、三级、四级、六级和七级证书,积分入团制度的有关文件明确表示不可以用考级证书,显而易见地,也没有任何一场考试会因为你有考级证书而加分。而考试的内容和难度堪称儿戏,交完报名费,在培训机构考完寄走,过几个月证书就会被寄回来。我没有经历过一次失败,这就使我不禁怀疑成功的含金量。或许下一次我应该尝试只画到明暗关系就交卷,如果这样也能拿到证书的话,就能完美地证明这场考试是骗小孩的。

但我还是一级一级地考下来了。

这是让我在人前能稍微抬得起头的为数不多的资本。或者说,这可能是我的特长。在一个身高特矮、样貌特丑、脾气特怪、脑子特笨的人身上找到特长是一件多么不容易的事!这是我在积极的方面与众不同的地方!

我感谢我的父母,没有阻止我踏上学习绘画这条路。我也感谢我的老师,如果没有她成熟且深刻的教育理念、方法和耐心,我绝对没有今天的技术。

今天写下这篇文章,就是因为我发现我唯一的特长似乎要被磨灭了。

素描是一切绘画的基础中的基础,如果没有素描经验,学习任何类别的绘画都是困难的,素描从思维上提供了几乎贯穿所有绘画类别的思考方式。在素描的基础之上,我开始发展板绘。以单色插画和漫画为主。

练习了一段时间后,老师说我的水平可以接稿赚些零用钱。能凭手艺赚钱是非常了不起的,也需要极其成熟的技术。我曾经在网络上见到很多线条都画不稳,结构更是一团糟的所谓「画师」在社交媒体发表自己的画作,表示自己要接稿。而评论区清一色都是夸赞。点开那些人的主页,同样的画风、同样的问题。

我不是好为人师的那种人,也知道自己是什么货色。但想也明白,这些一味的夸赞与被夸赞是不能促成进步的,因此他们才会一直停留在这样的水平。如果指出问题,不仅伤人家的心,也容易卷入骂战,恶臭缠身。这种小圈子自嗨的现象并不少见。在绘画教程视频的评论区能见到不少说「求评价」,但指出问题又怼人拉黑的。想获得夸赞,没有过硬的实力就是痴心妄想。我非常厌恶这种自以为是,只能听进去佞语的家伙。

一分钟,五分钟,十分钟,三十分钟,一小时……

周一,周二,周三,周四,周五,周六,周日,周一……

时间、精力、活力,都被这一轮又一轮的循环绞杀了。我的水平在急速下降。近些天一直保持绘画,只是为了证明些什么,也许是证明我还有擅长的事。我却发现我画出的东西和我讨厌的那类人几乎属于同一个水平了。看不到进步不可怕,看见退步也不可怕,看见自己的水平退步到于自己曾经最讨厌的一类人几乎齐平,这才是最令人生理性反胃的。一种熟悉的自我厌恶感在纸上的墨水里汇聚成了一股,贯穿我的眉心。这几个月,成绩平平、身体虚弱、心力矫情又拧巴的我,最终画画这件事也变成了这样。

热情的洪水决堤,淹没一切的行动力,溃散。

  •  

使用Emacs收发邮件

2025年11月12日 16:48

作为一个合格的操作系统,肯定少不了Email. 我的配置很简单,只要实现基础的收发功能即可,每天的邮件量不大。在这里记录一下配置。

收邮件

我尝试过 fetchmail,但不知道这个东西拿到的邮件都在哪,所以最后还是选择了 mbsync.

# ~/.mbsyncrc
# GlowIsle 账户配置
IMAPAccount GlowIsle
Host imap.qiye.aliyun.com
Port 993
User i@glowisle.me
Pass ******
TLSType IMAPS
AuthMechs LOGIN
CertificateFile /etc/ssl/certs/ca-certificates.crt

# 远程存储
IMAPStore glowisle-remote
Account GlowIsle

# 本地存储
MaildirStore glowisle-local
Path ~/mail/GlowIsle/
Inbox ~/mail/GlowIsle/Inbox
Subfolders Verbatim

# 同步通道
Channel glowisle
Far :glowisle-remote:
Near :glowisle-local:
Patterns *
Create Both
Sync All
Expunge Both
SyncState *

发邮件

# ~/.msmtprc
# glowisle
account glowisle 
host smtp.qiye.aliyun.com
from i@glowisle.me
auth login
port 465
user i@glowisle.me
password ******* 
auth on
tls on
tls_starttls off #使用465端口时不能开启
tls_certcheck  off 
tls_trust_file /etc/ssl/certs/ca-certificates.crt

account default : glowisle

Emacs 配置

在Doom Emacs的init.el中开启 mu4e

 :email
    (mu4e +org)
 
;; config.el
(after! mu4e
  ;; 基本设置
  (setq mu4e-maildir "~/mail"     ; 邮件目录
        mu4e-get-mail-command "mbsync -a"  ; 接收邮件命令
        mu4e-update-interval 300  ; 自动更新间隔(秒)
        mu4e-view-show-images t   ; 显示图片
        mu4e-compose-signature "Best regards.\nVerdant") ; 邮件签名

  ;; 使用 msmtp 发送邮件
  (setq message-send-mail-function 'message-send-mail-with-sendmail
        sendmail-program "/usr/bin/msmtp"
        sendmail-arguments '("--read-envelope-from" "--read-recipients"))


  (setq mu4e-contexts
        (list
         (make-mu4e-context
          :name "GlowIsle"
          :match-func (lambda (msg)
                        (when msg
                          (string-match-p "^/GlowIsle" (mu4e-message-field msg :maildir))))
          :vars '((user-mail-address . "i@glowisle.me")
                  (user-full-name    . "Verdant")
                  (smtpmail-smtp-server . "smtp.qiye.aliyun.com")
                  (smtpmail-smtp-service . 465)
                  (smtpmail-stream-type . starttls)))))

  )

基本使用

  • SPC o m 进入 mu4e 主页面
Basics

    * [J]ump to some maildir
    * enter a [s]earch query
    * [C]ompose a new message

Bookmarks

    * [bu] Unread messages      (0/0)
    * [bt] Today's messages     (0/14)
    * [bw] Last 7 days
    * [bp] Messages with images (0/0)
    * [bf] Flagged messages     (0/1)

Misc

    * [;]Switch focus
    * [u]pdate email & database

    * [N]ews
    * [A]bout mu4e
    * [H]elp
    * [q]uit

微软的Outlook邮箱使用OAuth2.0认证,我暂时没找到成功的解决方案能在Emacs上使用,如果有哪位路过的好哥们知道方法请留言或发个邮件探讨一下!

  •  

简单使用Graphviz绘制程序流程图

2025年11月12日 11:13

Graphviz

Graphviz 是一个开源的图形可视化软件,主要用于绘制有向图和无向图。

用途:

  1. 数据结构可视化:Graphviz 常用于显示数据结构,如抽象语法树或其他编程语言、工具或服务中的数据结构。

  2. 软件设计和架构:通过Graphviz,开发者可以可视化系统组件、依赖关系和交互。

  3. 网络拓扑图:用于显示网络设备和其连接的物理或逻辑视图。

  4. 业务流程和工作流程图:描述组织或系统中的工作流程。

  5. 其他任何需要图形表示的场景,例如状态机、决策树、组织结构图等。

优势:

  1. 声明性语言:Graphviz 使用一种称为 DOT 的声明性图形描述语言。用户只需描述图形的元素(如节点和边)及其关系,而无需指定其在屏幕上的确切位置。这使得创建和修改图形变得非常简单。

  2. 自动布局:Graphviz 的一个显著特点是其强大的自动布局工具,这意味着你不需要手动指定节点的位置;Graphviz 将自动为你找到一个有意义和易于阅读的布局。

  3. 可扩展性:Graphviz 支持多种输出格式,如 PNG、SVG、PDF 等,这意味着你可以轻松地将其图形集成到其他文档、网页或应用程序中。

  4. 灵活性:虽然 DOT 语言相对简单,但它提供了丰富的特性和属性,允许用户定制图形的外观,如颜色、形状、大小、标签、箭头样式等。

  5. 跨平台:Graphviz 可在多种操作系统上运行,如 Windows、Linux 和 macOS。

  6. 活跃的社区和广泛的应用:由于其开源性质,Graphviz 拥有一个活跃的社区,不断有新的工具和库被开发,以支持更多的用例和集成。

使用

Graphviz 使用 DOT 语言来描述图形。在 DOT 中,图分为有向图无向图,使用digraphgraph关键字。

安装:

sudo apt install dot
  • Digraph 有一个明确的起点和终点。

  • Graph 没有明确的起点和终点。

节点(Node)

节点表示图中的一个实体,每一个节点都有唯一标识符。

边连接两个节点。在有向图中显示为一个箭头,在无向图中显示为一条线段。

  • 有向图:nodeA -> nodeB;

  • 无向图:nodeA -- bodeB;

属性

  • color 元素颜色

  • label 附加到元素上的文本标签

  • shape 节点形状

  • style 元素样式

digraph G {
	A -> B;
	B -> C;
	C -> D;
	D -> A;
}

渲染为图片:

dot -Tpng ./test.dot -o ./test.png

示例

一个容易的用户登录验证逻辑

digraph UserLogin {
	登录 -> 验证用户名和密码;

	验证用户名和密码 -> 放行 [label="正确"];
	验证用户名和密码 -> 重试 [label="错误"];
	重试 -> 登录
}

参考

  •  

博客一周年:我的表达、自由与偏见 —— 当一个「反流行」写作者

2025年11月8日 22:18

搭建

探索时期

在2023年9月16日,我在腾讯云注册了第一个域名,使用一台轻量服务器搭建了WordPress博客,但也仅限于此,我只是搭建好了服务,并没有在上面写点什么,只是觉得有一个自己的网站很酷,这并不能作为我开始写博客的准确日期。实际上在这之前,我就用 Ksweb 尝试搭建过自己的网站,并且Typecho和WordPress都尝试过,但当时没有做内网穿透,所以也不能算作正式开始写博客。

严格意义上讲,我是从2025年11月3日使用 Gmeek正式搭建完第一个认真更新的博客,12月迁移到了Typecho,我当时发了一篇很短的文:

将会迁移到这里。我会把有价值的文章转过来 原因仅仅是gmeek有点太简陋了,虽然typecho也差不多,不过他可以折腾一下主题之类的,并且我每个月还多花出去九十大洋。但是总比gmeek逼格高点吧。 不得不说,Linux绝对是世界上最麻烦的玩意,解压下载文件都费劲。要不是Windows资源占用多我绝对不会去用这玩意。 这次可是孤军奋战,背后没有github服务器的靠山了。要是忘了续费服务器我会丢失所有的文章,又是一个负担和一个纠结的点

——网站迁移

之后回看连我自己都忍不住吐槽自己的无知:

2025.8.24二编:Gmeek简直太符合博客的定位了,不花里胡哨,完全够用,有网就能写文章……

Linux太好用了,目前Debian12养老中。

现在发现,自己以前做了很多不明智的决定,比如放弃使用Gmeek……

使用Typecho期间,我开始学习Java编程,早期有很多简陋的笔记文章充数,但那时候学习和写博客是一个相互促进的过程,我相信很多技术博主能体会到我说的这一点。

转型时期

在2025年3月3日,我 从Typecho迁移到了Hexo,在这之后博客的内容开始聚焦于骂人,对,就是骂人。骂老师,喷学校占用午休时间搞课桌舞,喷素质低下的同学等等,但只有情绪输出,写得很垃圾,大部分都删掉了。

在25年5月份到8月份是更新频率最高的一段时间,主要围绕折腾Linux, C, 数据结构与算法,一些技术内容为主,少部分是非技术类内容。7 月份到8月份写了一些很矫情的散文以及自以为是的书评,还有根本站不住脚的议论类文章,满满的黑历史。

其中,7 月7日我从Hexo转移到Hugo,我认为这是静态博客的最优选择了,高性能、易配置,如果一定要我挑出一个毛病,那也不是程序上的,而是中文文档的数量和质量略差,但无伤大雅,只要有翻译插件和基础的英语水平还是可以读得来英文文档的。

所见和所感

我加入了一些博客圈子,某些组织给我的印象并不是特别好——各种方面上。我最早加入的是博友圈,氛围很好,关于网站的Bug,维护者跟进非常积极,但我不常访问这个网站,它的随机博客功能总是有重复,没有什么新鲜感。

另一个常访问的是十年之约,主要是为虫洞功能,重复博客出现的次数很少。

我这么做,一是为了看看别人都在写点什么,找点有意思的博客订阅,二是看看别人网站的样式都是怎么设计的。前者老生常谈,我觉得样式设计问题可以仔细聊一聊。

某种意义上样式最重要

虽然博客确实应该最优先考虑内容质量,但是不能否认一个好的样式设计能更加分。而且在读者深度阅读前,先看到的是样式,这属于第一印象。每个人都有不同的审美倾向,但我个人不太喜欢的就是类似安知鱼Joe臃肿的设计风格(没有说用这两个主题的博客不好的意思,不要打我!!!)。

我的观点是,样式的设计始终是为内容服务的,而博客最主要的内容一定是文章,文章。所以一些组件就是非必要的,所谓 Less is more, 博客主题的设计应该始终放在博客的本质:「你想说什么」上,其他东西都是锦上添花,但把握不好就会成画蛇添足

非必要的组件

某个主题默认引用了大量外部资源,访问速度很不稳定,点进来需要看博主的大头照一分钟左右,难道这是什么展示开屏页面的手段吗?侧边栏还有公告、音乐、舔狗日记、最近回复等等,看上去一幅百家争鸣的场面。还有我最不理解的:Joe主题的人生倒计时。这让一个有时间焦虑的人非常难受啊!

以上所述,还不能算是拉低访问体验的,最让人难受的是封面图

有一些博客主题,专门给封面图很多存在感,而加载速度又极其慢,加载完成后又是和文章内容关联不大的通用插画,甚至有些博客的文章封面图干脆用通一张,个人认为该约一下分了!

其他的看板娘、背景特效、音乐播放器等不在此过多赘述,已经成一个梗了:

感觉你是那种博客一打开就bgm响个不停、樱花飘屏、瞅瞎眼看不清和背景色颜色一致的字体、鼠标屏蔽右键、顶部挂春节已经过时的灯笼、谷歌广告多余博客文章、底部20多个山寨备案号、加载5分钟才能出来的 猪腰子皮鞋 蕾丝小白袜 短裙 张开双臂拥抱的二次元幼女背景

我认为,个人作品集博客是有本质上的区别的。而且放上一堆根本不是自己写的东西,并不会觉得有多自豪。

一些热门的开源样式在一百个博客中应用的概率,就和你在火车站上喊上一嗓子张伟有一堆人答应的概率一样大。这里我要引用一个有些可悲的例子:考场作文怎样博阅卷人欢心?答案是打破他的审美疲劳。而寻求新鲜感的前提条件,也就是博客样式设计的基本理念是:服务于内容主次分明少即是多

话又说回来了,写博客不是上班,自己玩得开心最重要,但样式的选择和设计,更多的是审美和价值理念的双重体现。

为什么我还在写博客

这个问题一直被文字或图文创作者所津津乐道,大概理由会扯到短视频、思考、阅读的对比,并把短视频踩得一无是处,把文字和书籍捧上天,认为为那是通向成功的唯一途径。虽然我不刷短视频,但我认为搞拉踩不是好的行为,如果短视频真的一无是处它就不会存在。但在这里谈论短视频的问题,不如单独写成一篇文章。

我的理由是:自由和酷,以及习惯。

酷这词并不能准确表达那种状态,也许更多的是归属感和安全感共同作用所产生的自豪,「我有一片能自言自语的天地」的幼稚的优越感吧。

我讨厌平台的审查机制、推送算法和编辑方式。中文互联网的审查机制非常幽默,如果你在 Bing 国内版搜「谈笑风生」,就会有一幅非常诡异的画面——《新京报:领导人的漫画形象》《求是网:毛泽东耐人寻味的生日宴》《新民网:追忆江泽民同志在上海的日子》……

另外,在平台上,几乎不会有人关心「我」,创作始终是围绕观众喜爱来的,从中脱离出来想写什么就写什么,这也是自由的体现。

关于习惯,我这人有个毛病就是,一写东西就收不住,状态好了就能写好多,也许是与我说话罗嗦有关。但如果不多写几个字,怎么能准确地描述事件的起因、经过、结果等必不可少的东西呢?我在发朋友圈说什么事的时候经常写一大段字,和其他朋友上下几张图片的画风完全不相称,自己都觉得有些尴尬。

有人就不喜欢写字,也不喜欢看字,只喜欢图片和视频,我能理解这种心情,这只是习惯问题。我选择写博客,只是因为我认为比起坐在镜头前一边拉手风琴一边说话,又要关注打光和背景等前期工作,又要关注剪辑和配乐等后期工作,还是写字的成本更低。

总结

写了这么长时间博客,其实一开始只是抱着玩玩的心态,后来变得越来越认真了。表达和写作能力有提升吗?我感觉不到,但看到别人写得文章很好,一种奇妙的胜负欲和攀比心就会促使我学习得更多更深,继续写下去,既然做了,就做到底,做得更好吧!

  •  

聊聊文库本

2025年11月2日 17:40

本文将从我个人购买、阅读文库本的经验谈谈文库本的优缺点,以及文库本是否适合你。

什么是文库本

文库本,一是在日本明治时期作为全集或丛书的出版形态;二是特指昭和年代后形成的A6尺寸(105mm×148mm)平装小开本书籍,具有便于携带、低价普及的特性。其内容多为经典作品的再版,也包含直接以文库本形式发行的轻小说等新兴出版物。因应关东大地震后对低价书籍的需求,1927年岩波文库开始出版,随后改造社文库、春阳堂文库、新潮文库接连出版,引起了文库热潮。

我的书
我的书

我在今年八月份接触到了这种装帧,并且喜欢上了它,后续买了很多文库本。但这个东西,在国内比较少,大部分还是以16开尺寸出版,由于是日本传进来的,至少我的是以日本文学为主。这一摞只有卡夫卡的《变形记》不是日本文学。

它真的非常小巧方便携带,罗列数据不是一个直观的方式,把它和我的手机比较一下:

这本是一页文库出品的三岛由纪夫的《潮骚》,只比手机宽一点,可以放在口袋里。有一段时间,我的口袋里只有四样东西:手机、耳机、钥匙、书。——这是文库本的优点,非常方便携带,装帧精美,以及在国内不那么明显的价格优势(仅便宜3-4元)。说完了优点,接下来就该聊聊缺点了。

纸张和印刷问题

有不少读者反映,一页文库的书使用轻型纸,气味难闻且容易氧化发黄,不适合收藏。但这两个对于我个人来说都不是什么大问题,我见过真的呛得头晕的纸:东野圭吾《解忧杂货店》(新经典文化股份有限公司出品)。

为了确认出版社,我特意从书架上拿下来了这本书坐到电脑前。在敲上面那行字的时候,我甚至没有打开几秒书,劣质纸张的木臭味就直蹿我的鼻孔,头又开始痛起来了。

至于发黄问题,我个人倒还是挺喜欢泛黄的纸张的,比起氧化,我更在意破损。所以这个问题无关紧要。一本书的售价在十五元左右,使用轻型纸这种稍显「廉价」的纸张印刷也合理。

厚度失调与握持方式不适

我手头的《金阁寺》、《春雪》、《奔马》以及川端的四本书,握持感都比较舒适,但到了《晓寺》,体验上简直像是举着一本小词典。我上周在把一本牛津英汉小词典带到学校前和那本《晓寺》对比了一下,它仅仅比词典薄不到一厘米。

和《春雪》的对比
和《春雪》的对比

这样的厚度将它的便携性大打折扣,塞进口袋几乎不可能。而且由于装订方式的问题,摊在桌子上看并不舒服,举着的话就会因为太厚,手指疲劳。所以在比较厚的书中,文库本没有优势,除非分卷印刷。在某种程度上,这本《晓寺》是非常失败的,甚至不如买正常尺寸的书,在通勤的碎片时间我也只好转战电子版。

文库本适合什么人?

  • 通勤的碎片时间想看书的
  • 不太喜欢电子书
  • 想小成本读经典的
  • 喜欢便携小开本的
  • 不重收藏的

另外,一页文库的书是分内外封的,外封较薄,在口袋、书包里容易揉褶,如果在意这一点,也不太建议。

如果售价能长期控制在 15 至 18 元以下,那将非常实惠。希望国内做文库本的出版商不要拘泥于日本文学,其它经典书籍也多出点吧!

关于字体大小问题,原因在于文库本的字体大小和正常尺寸几乎无异,只是纸张尺寸减小,故没有重点讨论。

  •  

写在十一月的开头

2025年11月1日 19:54

十月的总结忘写了,原来现在已经十一月了吗!

我在九月总结的结尾,天真地以为开学后我也能保持那种心情或心态:

希望开学以后,依然能保持现在这种心态吧。

事实证明,开学后的精神状态比较差,也没有动力写东西,重要的是,可写的事也不多,所以这篇就当流水帐,想到什么就写什么吧。

新域名

我至今位置用过几个域名,里面都包含yingyu5658这个字眼,它的优点是很随意,不用花多少钱就能买到相应的域名,而它的缺点就是太随意了,容易和「英语」混淆,倒不如说实际上它就是英语的意思,因为这是我小时候玩游戏起 id 乱敲的。我不想再被别人叫「英语5658」了……

远古时期,我的博客叫「yingyu5658的博客」、「yingyu5658’s Blog」、「yingyu5658的万事屋」,但后来发现那样实在是太烂大街且随意了,在这三者中,我最不明白为什么我曾经用了最后一个名字,这就像中二时期发的朋友圈一样羞耻,但是我好像没有中二时期,或者说中二时期是十岁以前。

后来我强行给「yingyu」这个词安上了一个意义:「映屿」,当时的域名是yingyu5658.me,也对应上了。这下我要佩服我自己了,胡邹能力还真不错,能拼凑出一个这么有画面感和美感的词,就沿用下来了了。但一直觉得yingyu5658这个词太扎眼了,尤其是后面的无意义数字。大概在二十号,我整理 RSS 订阅源,发现大家的域名都真好看啊,于是就动了换域名的念头。

首先域名一定要简短,毕竟是给访客的第一印象。博友圈的群友帮我想了个「inyu」,短是短,但还是太随意了,如果翻译成英文可能会更好,所以定下了以下几个翻译:

  • HueIsle
  • ShineIsle
  • GlowIsle

首先是 Hue,这个单词更侧重于色彩、色调的意味,重点在传达「映照出色彩」,主题不是「映」而是「色」,Pass.

其次是 ShineIsle,太直白了,有一种强烈的向上的积极感,和风格不匹配,Pass.

综上,Glow 这个词更合适,它的意思是**「柔和的光」**,呈现光泽、微光之意,比 Shine 温柔,比 Hue 恰当。

后缀考虑过.zone.me.com,最终还选择了.me,更符合个人博客的定位。

经过了一系列域名解析和重定向的折腾,终于算是顺利更换了,只是在搜索引擎的收录和排名上急不来,只能多提交 Sitemap 了。

新主题

之前使用自己搓的仿 Typecho 默认主题,主要是喜欢双栏布局和简介风格,但后来我仔细思考了一下,我的侧边栏或许是一个非常糟糕的设计。

首先,我的站点并没有一套成体系的知识网络,所以分类的作用对读者来说并不大,不值得单独放在侧边栏。其次,最近文章是侧边栏最大的败笔,用户动动鼠标就能看到新文章,为什么要用侧边栏的宝贵空间?

我见到有一些博主喜欢把自己的介绍信息放在侧边栏,我也想尝试,直到我发现我并不会自我介绍,也很少拍照片,头像只能放 favicon 的图片,效果反而不如不放。而且我相信读者并不在意我是谁,而在意我想说什么。

所以我之前的侧边栏非常多余。由于长期加需求改需求,CSS 代码膨胀到了两千多行,其中包含了许多无用代码,重构难度极大,只好弃坑!我也看腻那个主题了。

我在寻找真正简介的单栏主题,比如 typo ,在尝试修改代码的时候,出现了一个非常诡异的问题:任何修改都不起作用。我随即想到是不是引入方式的问题?大概是git submodule导致的,但这个主题如果不如是引用,某些组件就无法渲染,只好作罢。

最后选择了 BearNeo,简单修改后投入了使用。它符合我对博客网站的思想理念 —— 简介、高效、主次分明。读者不是想来看我的大头照、樱花飘落、鼠标点击特效、背景图片、标签页离开特效、音乐播放器、各种网站的热搜和当地天气的。另一个方面,它很符合我目前理想中的博客的「质感」。

新闻组

十月二十一日,我在新闻组发布了停止维护的通知。我实在没有时间精力和财力去维护新闻组。一开始本来抱着搭着玩玩的心态,在知乎、Emacs China 宣传了一两次,没想到还有那么多对互联网文物技术感兴趣的同志,一起参与新闻组里的话题,帖子快突破两百条了。

现在在 Bing 搜索「新闻组」,往后翻一两页就能找到我在 Emacs China 发的帖子和博客里关于新闻组的文章,或许是由于近些年这个话题实在没有什么讨论,权重才会比较高吧。服务器里所有帖子都备份了下来,之后会重新启动,可能是几个月之后,也可能是几年之后……

新座位

在学校由于我的默默无闻,导致我看起来很像一个好学生,至少是老实的学生。常年坐在偏僻的角落。有两个同学不知道犯了什么错,班主任非常生气,把他们两个的座位调开,安排我坐到了其中一人的位置。那是倒数第三排。

这并不是对我的惩罚,这应该是提拔。我前面的三个人,还有右边一组的四个人,都是年级前列,学霸中的学霸,学习氛围相当好。但很显然,我无法融入他们,无论是社交还是成绩。虽然他们对我很友好。我能感觉到我与他们之间有一种微妙的距离。

他们越是完美,就越映照出我的瑕疵;越是强大,就越体现出我的弱小。哪怕他们身上有什么缺点或不良习惯,都可被视作一种风趣,而这种事发生在我身上,只能是毛病

我前面的两位都是数学课代表,数学是我最不擅长的学科。那次跑操请假在教室自习,本以为会度过安静的三十分钟,但那两人给老师帮忙回来了,有正当理由不用去跑操。他们抱着一叠数学卷子在班里讨论。其中一个人是女生,她高兴时说的每一句话的尾音都会上扬并且拉长,用「嗲」这个字不至于,但确实类似。

扎耳。

这让我想起换座位前身后的那个女生,她似乎永远保持着开心的状态,即使遇到了困难或不公的事情,也只是用如唱歌一般动听的语调,脸上挂着自信的微笑而说出:「哎呀!我不行啦!」

三个数学课代表都回来了,他们围在其中那个女生的桌子周围,也就是我的前桌讨论成绩。我只能低头写作业,因为我知道我和这群人没有任何共同话题可言,我不敢抬起头,他们也默契地就像班里不存在我这个人一样,自顾自地看大家的卷子。

三个阳光开朗、文化体育成绩都优秀的人,其中任何一个人的智力和体力都是不敢想象的程度,这样的人就在我面前谈笑风生。

最后

活下去吧!活着!像牲口一样活着!

  •  

Emacs,我又回来了!

2025年11月1日 12:01

前言

这大概已经是我第四次尝试入门 Emacs 了。

前几次尝试过自己重新配置 Emacs、Spacemacs。自己配置简直是在堆屎山, Spacemacs 的机制搞不明白而且很卡,听说Doom Emacs 对 Vi/Vim 用户很友好,那就尝试一下吧!

虽然我不能算是个老 Vimer,但是也深受 Vim 操作模式的荼毒,只想用 HJKL 走天下。之前也想玩 Obsidian 。但是它的 Vim mode 实在是太简陋了!!! C-d不是向下翻页,而是把整行都删掉!

不过手机上的 Ob 还是可以一用,比如 Banyan 插件,用来随时随地写一些碎碎念很方便。至于其他的功能,还是配 Emacs 更好玩吧。

安装

根据官方仓库的文档,使用以下命令安装:

git clone --depth 1 https://github.com/doomemacs/doomemacs ~/.config/emacs
~/.config/emacs/bin/doom install

速度比我想象中的要快得多,而且是交互式操作,感觉比 Spacemacs 友好一点?这个脚本的输出有一股 Cargo 味……

安装结束后给了一点提示:

But before you doom yourself, here are some things you should know:

1. Don't forget to run 'doom sync' and restart Emacs after modifying init.el or
   packages.el in ~/.config/doom. This is never necessary for config.el.

2. If something goes wrong, run `doom doctor` to diagnose common issues with
   your environment, setup, and config.

3. Use 'doom upgrade' to update Doom. Doing it any other way will require
   additional steps (see 'doom help upgrade').

4. Access Doom's documentation from within Emacs via 'SPC h d h' or 'C-h d h'
   (or 'M-x doom/help').

Have fun!

其中提到了一个叫doom的命令,这是一个在~/.emacs.d/bin/下的二进制文件,可以做个链接到/usr/bin以便在任何地方使用。

sudo ln -s ~/.emacs.d/bin/doom /usr/bin/doom

配置

启动时全屏:

(add-hook 'window-setup-hook #'toggle-frame-maximized)

安装 Eaf 插件:

git clone --depth=1 -b master https://github.com/emacs-eaf/emacs-application-framework.git ~/.emacs.d/site-lisp/emacs-application-framework/

cd emacs-application-framework
chmod +x ./install-eaf.py
./install-eaf.py

用用看吧,后续有什么需求再折腾。

  •  

市井漫步

2025年10月26日 22:10

我很喜欢随便坐上一路公交车,一边听歌一边看窗外的风景,想在哪站下就在哪站下,想往哪走就往哪走。这是自己出去玩最经济实惠的方案。

铁路
铁路

某地道入口上方的铁路,栏杆上锈迹斑斑,铁路边杂草丛生。

禁止游泳
禁止游泳

海河边,禁止游泳的告示牌上,「禁止」两个字被磨掉了。牌子后面不远处就是穿着泳衣的大爷。大爷没有游泳,只是在跳水呢。这么冷的天,我穿得里三层外三层手都冻僵了,大爷只穿着一条内裤光脚站在岸边,应该是刚上来。

海河
海河

正午阳光下的海河的阵阵波浪,把映进去的太阳的倒影打散了,耀眼的太阳分成无数片,又在水面炸裂了。细碎的太阳光从河水中央闪烁着飘来。星星点点的太阳光,没能到岸边就消散了,下一波又赶了上来,循环往复。水面上摇曳的楼影见证着这飞蛾扑火般的徒劳。

我与地坛
我与地坛

回家的路上经过书店,没经住诱惑。进去逛了逛,买了一本《我与地坛》,收录了史铁生的很多文章,装帧精美排版舒适,甚至侧面书页还有手绘风格的图案,本来我看书就非常珍惜刚拆封的脆弱的完美无损状态,这下更甚……

花未眠
花未眠

在网上买的《花未眠》也到了,同样是散文集,看了几篇后感觉川端的散文造诣比不上小说,那些是真正的「散」文,不过,好像还是我这篇文章更散。

晓寺
晓寺

读《晓寺》。快要放弃了,和前两部的风格转变太大,长句嵌套繁复,叙事节奏缓慢,大量景物描写和宗教哲学思辩,十分晦涩。如果把这本书和另一代表作《金阁寺》的语言做对比,《金阁寺》是恰到好处的精准,而《晓寺》则是华丽隆重的全感官盛宴。

还没进入十一月,夜晚就已经有冬天独特的气味了,具体什么味说不上来,只是一闻,先前在冬天的回忆就全部涌上来了。

  •  

红叶攀墙秋萧萧

2025年10月16日 22:40

学校操场的围栏上,长满了爬墙虎。自开学起,每次和它们见面,一回比一回红。是夏季烈日残留的一角把它们引燃了吧?

能见到它们,只有在体育课和做操的时间。上次运动会时还是绿绿的一簇,挂在操场大门上方,几支茎垂下来,稚嫩的绿叶在一阵微风吹过后,它娇妍地摆头。有几片叶子从格子缝隙里探出头,生锈的围栏高墙点缀着生机。

一次大课间,我们坐在操场上休息。围墙外远方的高楼在暮霭的包裹下,轮廓被细致地描摹,目之所及皆被染上了一抹颓黄,鸟群在几栋楼之间来回穿梭。

怎样才能将自己的思绪,融入这缥缈的夕阳、这喧闹、这最后的两百余天中呢?大门上的红叶在风中摇摆。

今日再见,那一抹令人惋惜的成熟的艳红,已经不由分说地映在它们昔日稚嫩的脸上。夏季的烈日将它们引燃了。纯粹的美,无暇的美,昂扬的美,低垂的美。它们为自己的美付出了代价。

我沿着围墙捡拾红叶。一些最艳的红叶,早早就掉落了,老成的携着腐朽的红叶,把它们可贵的纯粹、干净的艳红衬托得曼妙无比。成熟的深红,破裂与暗淡,在早逝的艳丽衬托下,快要被人唾弃了。已经干瘪发脆的叶子,轻轻一搓就能碎成齑粉,散落在地上,那是红叶,还是小虫的尸骸呢?美丽如此脆弱。

与枝干刚刚两断的红叶,周身有着让人悲悯的柔软和湿漉。叶脉纹路清晰可见,光滑的叶肉反射着阴天清冷的光,简直像一件精雕细琢的工艺品。

我坐在围栏下,望着大门上方缀着的那簇叶子。它们已经没有了先前的活力。暗红的枝叶,低垂着身姿,散发着淡淡的死和枯萎的幽香。来年的红叶还会等我吗?

  •  

韩愈《师说》

2025年10月8日 20:32

在视频【“你这是学生思维”】 中,有一个评论引用了《师说》中的一句话:「是故无贵无贱,无长无少,道之所存,师之所存也。」记一篇原文及翻译。用白话翻译出来就很浅显,甚至是老生常谈的大道理,可能这就是文言文的距离之美和留白之美吧。

古之学者必有师。师者,所以传道受业解惑也。人非生而知之者,孰能无惑?惑而不从师,其为惑也,终不解矣。生乎吾前,其闻道也固先乎吾,吾从而师之;生乎吾后,其闻道也亦先乎吾,吾从而师之。吾师道也,夫庸知其年之先后生于吾乎?是故无贵无贱,无长无少,道之所存,师之所存也。

古代求学的人必定有老师。老师,是靠他来传授道理、教授学业、解答问题的。人不是一生下来就懂得知识的,谁能没有疑惑?有了疑惑而不跟从老师学习,那些成为疑难的问题,就始终不能解开。出生在我之前的人,他知道道理本来比我早,我跟从他学习,把他当作老师;出生在我之后的人,如果他得知道理也比我早,我也跟从他学习,把他当作老师。我是学习道理的,哪关心他的年龄比我大还比我小呢?因此无论地位高低,年龄大小,道理存在的地方,就是老师存在的地方。

嗟乎!师道之不传也久矣!欲人之无惑也难矣!古之圣人,其出人也远矣,犹且从师而问焉;今之众人,其下圣人也亦远矣,而耻学于师。是故圣益圣,愚益愚。圣人之所以为圣,愚人之所以为愚,其皆出于此乎?爱其子,择师而教之;于其身也,则耻师焉,惑矣。彼童子之师,授之书而习其句读者,非吾所谓传其道解其惑者也。句读之不知,惑之不解,或师焉,或不焉,小学而大遗,吾未见其明也。巫医乐师百工之人,不耻相师。士大夫之族,曰师曰弟子云者,则群聚而笑之。问之,则曰:“彼与彼年相若也,道相似也,位卑则足羞,官盛则近谀。”呜呼!师道之不复,可知矣。巫医乐师百工之人,君子不齿,今其智乃反不能及,其可怪也欤!

唉!古代从师学习的风尚不流传已经很久了!想要人没有疑惑也难了!古代的圣人,他们超出一般人很远,尚且要跟从老师请教了;现在的一般人。他们的才智低于圣人很远,却以向老师学习为耻。因此,圣人就更加声明,愚人就更加愚昧。圣人之所以能成为圣人,愚人之所以成为愚人,大概都是由于这个原因吧?(有些人)疼爱自己的孩子,就选择老师来教他;(但是)对于他自己,却以跟从老师学习为耻,这真是太糊涂了!那些儿童的老师,是教他们读书、学习断句的,不是我所说的那种传授道理、解答疑难的老师。(一方面)不通晓句读,(另一方面)不能解决疑惑,有的(指句读)向老师学习,有的(指疑惑)却不向老师学习,小的方面学习了。大的方面却丢弃了,我看不出这种人是明白事理的!巫师、医生、乐师和各种工匠这些人,不以互相学习为耻。而士大夫这类人,一听到有人称“老师”、称“弟子”等等,就许多人聚集在一起讥笑人家。问他们为什么讥笑,就说:“他和他年龄差不多,懂得的道理也差不多。(以)地位低(的人为师),就足以感到羞耻;(以)官职高(的人为师),就近乎谄媚了。”唉!古代从师的风尚不能恢复,从这里就可以知道了。巫师、医生、乐师和各种工匠这些人,是士大夫们所看不起的,现在他们的见识竟反而比不上这些人,这真是很奇怪啊!

圣人无常师。孔子师郯子、苌弘、师襄、老聃。郯子之徒,其贤不及孔子。孔子曰:三人行,则必有我师。是故弟子不必不如师,师不必贤于弟子,闻道有先后,术业有专攻,如是而已。

圣人没有固定的老师。孔子曾以郯子、苌弘、师襄、老聃为师。郯子这些人,他们的贤能都比不上孔子。孔子说:“几个人一起走,其中就一定有可以做我老师的人。“因此学生不一定不如老师,老师也不一定比学生贤明,接受道理的时间有早有晚,学问技艺各有专长,不过是这样罢了。

李氏子蟠,年十七,好古文,六艺经传皆通习之,不拘于时,学于余。余嘉其能行古道,作《师说》以贻之。

李家孩子名叫蟠的,今年十七岁,喜爱古文,六经的经文和传文都已广泛学习,不受当时(耻于从师)风气的拘束,向我求学。我赞许他能够遵行古人(从师)的正道,写了这篇《师说》来赠给他。

  •  

《奔马》书评:刀刃突入腹部的瞬间,红日在眼睑内冉冉升起

2025年10月5日 11:35

今日凌晨读完了丰饶之海的第二卷:《奔马》,这是四部曲中最暴烈的一部。全书围绕着上一部的主人公松枝清显的转世 —— 饭沼勋的行动展开。讲述了一个阳刚强健的少年,因不忍政治腐败,天皇的实权丧失,忧国之心驱使他组织刺杀政府企业巨头,失败后,他雄心未泯,最终刺杀了藏原再切腹自尽的故事。重点展现了作者对武士道中「忠」与「勇」的极致追求。

本部书与上一部《春雪》比起来,又是另一个极端。上一部的主人公松枝清显沉溺在幻想中,优柔寡断;而转生后的饭沼勋则成了一个行动者。如果说松枝清显是作者孱弱一面的投射,那么饭沼勋则是作者暴烈极端的一面和其政治诉求的投射。清显沉溺幻想的虚无,饭沼勋用行动对抗虚无。作者塑造了一个让人印象深刻的少年形象:冲动的、理想的、认知是非黑即白的、尖锐的少年形象。

这股少年气是饭沼勋最闪耀的优点,也是他走向悲剧的重要原因之一。他受《神风连史话》的影响,组织成立了昭和神风连。而这是一个几乎注定失败的行为,其中贯穿全书的对自杀的理性规划与向往,让人不禁怀疑,他究竟是想要救国,还是想悲壮地自杀?

对于这一部分的不理解,主要源于文化差异,在日本文化,以及武士道文化中,自杀不被认为是消极的、逃避性质的寻死,而是一种以肉体的毁灭与极度痛苦,验证其精神纯洁性(如忠心、承担失败、洗刷侮辱)的最高仪式死是一个手段,而不是目的。 三岛一直有美化死亡、自杀的倾向,但在全书围绕展开的「日本精神」中,又是正常的。

而勋对天皇的病态的执着敬仰,也要结合文化背景来理解。日本的天皇在第二次世界大战结束前,不单单是一个政治上的领袖,而是日本神话体系中最高权威神的人间体,他是一种纯粹的权威和信仰 ,这源于其宗教信仰上对民众思想的控制和洗脑。

因此也就可以理解为什么勋对天皇有如此病态的情感。书中,勋自述了对天皇的忠义的认识:

“是。所谓忠义,对于我来说,就是手握滚烫的米饭做饭团,只顾一心一意做好饭团,献给陛下。其结果,要是陛下不饿,立即退了回来,或者说:‘这种难吃的东西,也敢呈献上来?’说着就把饭团砸到我的脸上。要是这样,我就会满脸粘着饭粒退下,怀着感动立即切腹。假如陛下饿了,高兴地吃了我的饭团,我也立即退下,怀着感动立即切腹。为什么呢?因为陛下吃了草莽小民做的饭团,这本来就罪该万死。要是做了饭团不献上来,一直捧在手上,又会怎样呢?饭团肯定会腐烂,这也不合忠义,我将此称作无勇之忠义。所谓有勇之忠义,就是冒死将一心一意做的饭团敬献上去。​”

那么,回到最初的问题,他究竟是想要救国,还是想要自杀?可以给出一个明确的回答:切腹是目的,也是手段。这是一个矛盾点。

他口口声声为了天皇与国家,但其行动逻辑却一步步指向了自我毁灭的必然结局。这不是勋的逻辑故障,而是三岛由纪夫「行动哲学」与「死亡美学」的内在缺陷。三岛追求的并非现实世界的改变,而是一种美学的、象征性的姿态。意义不在于救赎,而在于献祭。改变国家和震撼人心,重在后者。所以这种自杀是带有表演性质的,呼应其美学思想的行为,同时是目的也是手段。这是一种互相催生,又互相遏制生长的矛盾状态。但死亡是唯一确定的、必须发生的终点,行动只是为这个终点提供理由和仪式感。全书结尾,也是高潮的一句话,最能佐证此观点:

刀刃突入腹部的瞬间,红日在眼睑内冉冉升起。

切腹时极度的肉体痛苦被转化为精神上的快感体验,举事是否成功,对饭沼勋来说已经不重要了,红日的最核心的象征就是天皇、日本国体、纯粹的日本民族精神。这是勋毕生追求的终极信仰对象。

但同样需要思考的是,勋的自杀,除了在他个人的精神意义上的高潮,对外在的世界,对国家的影响又如何呢?如此极端的行动,执着和病态,又有什么意义呢?杀死了藏原(或其他暗杀名单中的人),国家就真的复兴了吗?军国主义和天皇掌权的失败已经证明了其荒谬和不可行性。因此勋的自杀,以及藏原之死,都如同从奔腾的洪流中取走一滴水,在宏观历史进程中的影响微乎其微。

饭沼勋的少年气,是对世界理想化、对动机单纯化、对结果美学化的自我陶醉的品质。他一生所追求的,正是这种「纯粹」。在勋眼中,现实世界已被污染,任何妥协或苟活都意味着对理想的背叛,是对「纯粹性」的玷污。只有通过壮烈的、仪式性的死亡(尤其是切腹),才能保持精神的绝对纯洁,避免被污浊的现实世界所腐蚀。死亡成为守卫纯粹精神的最后堡垒和唯一途径。所以从这个角度看作者本身,三岛的自杀并不能单纯定性为政治表演,也是一次知行合一的为美学殉教的实践。

本书虽尽显武士道精神的极端、对个体生命的漠视,以及日本军国主义和天皇绝对权威下的偏执与疯狂,但其文学和美学上的暴烈和阳刚的价值不可忽视,作者将日本文化中最纤美的一面在上一部发展到极致再毁灭,又在本部书中将日本文化中最刚烈的一面推向巅峰再毁灭,由衷钦佩作者笔下波谲云诡的文字氛围,期待下一卷《晓寺》带来的震撼。

  •  

逛逛西西弗,买两本书

2025年10月4日 11:16

昨天去了海信广场 B1 层的西西弗。

进门左手边有一些钥匙扣之类的小礼品,也有儿童玩具之类,感觉带小孩子来要很麻烦。

西西弗
西西弗

店里居然有卖漫画。说实话,我是第一次见到现在的实体漫画书,没怎么了解过,比想象中的小。大概跟一页文库出的一些文库本大小差不多,很便携。

葬送的芙莉莲
葬送的芙莉莲

药屋
药屋

这本《药屋少女的呢喃》,应该出过动画了,去年有一个朋友强力推荐我看。

本来是奔着三岛由纪夫的《太阳与铁》去的,但没货了,拿了一本《假面的告白》。结帐的时候柜台小姐姐建议我办会员,但由于不经常去,就拒绝了。她问我要不要买三岛的其他书,就拿了《爱的饥渴》。

唉,本来只想买《太阳与铁》的,正当我庆幸没有被忽悠着办会员的时候,才发现又多花了五十多冤枉钱!

两本
两本

在商场逛了一圈,想着刚才去书店只是匆匆地看了一眼三岛的书,又转回 B1 层,仔细看了看,在一个角落发现了《瓦尔登湖》,在刚刚拿《假面的告白》的地方又找到了卡夫卡的《变形记》。

共消费127元。唉,最期待的还是《瓦尔登湖》,希望自己能看完吧。

《瓦尔登湖》和《变形记》
《瓦尔登湖》和《变形记》

  •  

个人博客凭什么为你提供价值?

2025年9月30日 22:25

今天我在网上冲浪的时候,看见了一个收录博客的网站。收录的所有网站都是手动整理而来,并且对所谓博客的「价值」颇有一番见解,断章取义地引用了一段知乎用户的回答。原问题是回应关于个人博客的前途的,其中对博客的价值作出了一些判断。以下是原回答:

点击查看详细内容

我想来分析一下为什么很多个人博客

无疾而终,没“前途”。

对博客价值的根本性认识错误

以为个人博客是用来抒发“个人情感和认识”的,这是最常见的认识错误。这是我的博客,我写什么都可以,而且还假设自己写了东西别人就会来看。

没人在乎你情绪化的感情抒发,这对他们没多少用处。

个人博客更好的定义,是你以个人的名义发表对别人有价值的内容。所以个人博客内容创作的出发点不是让别人来关注自己,而是让自己为别人服务。

用博客内容为别人服务并不复杂,比如你写偏文章,介绍最近哪个店东西打折,只要你能把时间,地点,主体对象,促销力度等信息介绍清楚,就是一篇很有价值的博文。因为它对不少人有实际价值。

相反,你洋洋洒洒写一通美文,说得尽是些神神叨叨自怨自艾的个人情绪,除了你妈爱看以外,对别人没多少价值。你想开个博客靠抒发个人情感而不为别人的生活增值,却盘算着博客能有前途,这是无知,自以为是的痴人说梦。

没有质量的更新

很多个人博主的注意力,只有更新,不断更新,最好每天更新。只要能“保持更新”,就无所不用其极,完全失去内容建设。

需要的耐心。写文章就是随便胡诌两句,不用心,还让读者“随便看看,不喜勿爱”,甚至复制黏贴,采集抄袭,玩的都是些下三滥的手段。却还指望博客能有前途,真是消化1

更新是重要的,但有比更新更重要的事。是“价值”。

你写一篇优质的文章,哪怕是夏天室内防暑省电技巧大全,也会永远地存在于搜索引擎,会不断地有人访问,这篇文章会成为你的网站一个优质的lead。为你创造潜在的知名度,关注度,甚至带来物质利益。

中国的博主相对国外的博主,最大的缺点就是没有耐心,没有耐心,什么都做不成。除非你相信一个个人博客可以短时间内成功,不用积累。

不懂营销

酒香也怕巷子深,况且你真有好酒,为什么不多做一点,让更多人知道你有好酒?

太多博主以为自己写了东西,花了力气,回报自然回来。有的时候确实是这样,比如你写的东西正好是别人不怎么写的一个特别的领域,也就是说,竞争小,或者运气好,干脆就是一片蓝海。

但这种机缘哪是人人都有?大部分人写的话题,都是很多人反复了不知道多少遍的,你写同一个主题的优势,无非是那是你自己独特的角度和构思,或者你的文字比别人用得好,讲故事有自己的风格,文章的结构超过他们,内容超过他们。

但仅有这些是不够的。

你得发现可能对你写的东西感兴趣的人群,把他们吸引过来,给他们一个机会理解你,也给你自己一个机会更好更快地走向成功。你得把营销看成一件正经事来做,不是让你去骗人,而是把好东西告诉需要知道的人。

我举一个例子, 这是我自己的一个教别人学Javascript编程核心概念的小网站:http://itlr.cc。我确实花了一点时间去准备内容,主要是视频的,到目前卖了大概人民币4000块,几个月时间,其他收入加起来大概8000。这是不是很多钱,当然不是!

我是不是在每天更新?没有,其实很久不更新了,但是微信上几乎每天都有人加。这网站有前途吗,有的,虽然谈不上大前途,但是发挥点工作外余热,自己也能学到东西。

你也可以,但要用点心,真把它当件事情来做,要学习不骗人的营销。

你会发现让一个网站有前途,是一件并不是很难的事。如果你没有耐心,是不会成功的。


我今天挖一七年的坟,评判一下关于价值的观点。

对博客价值的根本性认识错误

我们来看看百度百科怎么描述「博客」:

许多博客专注在特定的课题上提供评论或新闻,其他则被作为个人性的日记。一个典型的博客结合了文字、图像、其他博客或网站的链接及其它与主题相关的媒体,能够让读者以互动的方式留下意见,是许多博客的重要要素。大部分的博客内容以文字为主,但仍有一些博客专注在艺术、摄影、视频、音乐、播客等各种主题

……

简言之,Blog就是以网络作为载体,简易迅速便捷地发布自己的心得,及时有效轻松地与他人进行交流,再集丰富多彩的个性化展示于一体的综合性平台。

……

它可以是个人纯粹的想法和心得,包括对时事新闻、国家大事的个人看法,或者对一日三餐、服饰打扮的精心料理等

绝不仅仅是纯粹个人思想的表达和日常琐事的记录,它所提供的内容可以用来进行交流为他人提供帮助,是可以包容整个互联网的,具有极高的共享精神和价值。

……

日记、照片、诗歌、散文,甚至科幻小说的发表或张贴都有

以此可以证明,博客的创作题材非常自由。

再来看回答的观点:

个人博客更好的定义,是你以个人的名义发表对别人有价值的内容。所以个人博客内容创作的出发点不是让别人来关注自己,而是让自己为别人服务。 …… 相反,你洋洋洒洒写一通美文,说得尽是些神神叨叨自怨自艾的个人情绪,除了你妈爱看以外,对别人没多少价值。你想开个博客靠抒发个人情感而不为别人的生活增值,却盘算着博客能有前途,这是无知,自以为是的痴人说梦。

认为个人博客只能为别人服务无法帮助他人的内容就是无价值。这是一个非常幽默的逻辑。个人博客为什么要着力于为他人提供价值?

那么谁有权定义价值?流量数据?工具性?创作者的主体性?你定义的价值,是情感价值还是存在价值?既然其存在,为什么会无价值?

按照博客导航站点的逻辑:「只收藏有价值的优秀博客」,其收录了以下这些情感类、个人生活类的博客,其观点就不攻自破了。

如果用知乎回答的观点:「谁想知道你头怎么样?谁想知道你跟虾米音乐有什么故事?除了你妈爱看以外,对别人没多少价值。

这显然功利无情,完全背离了博客的初衷,将博客完全定义成为他人服务的工具,拒绝了自身需要的情感表达,否认了生活类以及情感类博客的意义,偏激不可取。

情感类博客没有价值?

只有实用价值才配被称作价值吗?显然不可能。

所有人的声音都值得被听见,在博客这样一个如此纯粹的表达空间里,依然被所谓的价值捆绑,如果所谓的价值、前途就是「钱途」,那你大可去写那一种微信公众号——图文版抖音、吸引眼球博流量、话说一半的标题党、图文无关的封面党,并且在文章头部、正文里、结尾,甚至评论区都挂上广告,当「流量主」,稳定获取收益。

写一篇实用性的文章帮助读者,是作者和读者的双向链接,而写情感类文章找到共鸣者,同样是双向链接,且比前者更牢固。这就好比你家厕所水管漏水,在外面找了一个修水管的工人,他干完活拿钱走人,过两天你会记得他吗?你只会记得你家厕所冲水真顺畅。这是实用价值。

但如果当时你给他接了杯水,递了根烟,扯闲天的时候发现大家都是大老远从家跑过来,在外打拼的苦人,甚至有可能是老乡或同好,你们留了联系方式,卖命之余能一起抱怨身边的烂人烂事。共鸣共鸣,频率相同才有共鸣 —— 这就是情感共鸣带来的链接的牢固性,能让你觉得:「哦,原来不止我一个人这样。」这是情感价值。这也是除了「夏天室内防暑省电技巧大全」以外,有质量的更新。

我从早期结构一盘散沙的各种文章,到如今结构极其松散的各种文章;从痛恨Linux,到向往Linux,到沉迷Linux,对各种事物理解的转变……改变不大,但那是自己坚实的脚印,看到自我成长,这是博客的自我价值。

所以,不要被所谓的价值禁锢了,想写就写,不要不敢写。更不需要强行营销,重要的是保持博客的纯粹性。打这种功利主义者的脸,最好的方法就是坚持写下去,顽强地写下去,写他们认为没有价值的东西,笔耕不辍,生生不息。


  1. 未修改原文用词。可能是「笑话」。 ↩︎

  •  

《春雪》书评:任何美梦都会有结束的时候,没有什么永恒的东西

2025年9月28日 21:18

于今日正式结束了三岛由纪夫的绝笔之作《丰饶之海》四部曲的第一卷 —— 《春雪》的阅读。刚开始读,它给我一种「很不三岛」的感觉,语言风格细腻柔美,甚至有几分古典韵味,对景物的描写细致入微,但处处洋溢着一丝哀愁,我还以为自己在阅读川端康成的作品。可以理解为三岛对恩师的致敬吧?

故事围绕着松枝清显与绫仓聪子的爱情悲剧展开,互为对方青梅竹马的两人试探猜忌,始终没有发展。聪子始终深爱着清显,但清显一直维护着他的孤傲,给人一种非常「拧巴」的感觉。直到聪子与治典亲王订婚,清显才意识到自己的确深爱着聪子,于是一场短暂禁忌之恋开始,最终聪子怀孕,被迫堕胎后,面对皇室和家族的巨大压力,她削发为尼,遁入空门。清显相思成疾,因肺病夭折,令人哀惋。

令我感受最深的,还是聪子这个角色的遭遇。被迫堕胎,清显和她爱情的结晶被彻底的物理意义上的抹除,也没有任何回头路留给聪子,她才走投无路做了尼姑,世俗已经没有任何可以让她留恋的东西了,而在事情刚刚发生的时候,松枝和绫仓两家还在商量如何瞒天过海,提出了一个佩戴假发参加纳彩的主意。

纳彩时要戴垂形假发,而平时要戴束形假发。人眼无处不在,聪子即使入浴也不可随意摘掉。

人人心里都在描绘着聪子应该佩戴的假发,它比真发还要光洁、流丽,如射干果一般乌黑闪亮。它就是强加授予的王权。

聪子已经不是一个有着自我的「人」,而是一个与家族兴衰荣誉直接绑定的「物」,家族一手操办着婚事,丝毫不考虑聪子的感受。而那讽刺的假发,便成了一具假面,聪子要时时刻刻戴着假面生活,完全压抑隐藏自己。但聪子真的得到解脱了吗?还是进入了另一层禁锢?

而小说中纯粹的美的化身 —— 清显,又是纯粹的情绪的化身,感性的化身,他近乎自虐式回味着感情,反复咀嚼品尝痛苦,而且有着强烈的自我美化倾向,又极度渴望悲剧,而这种思想最终将他导向了毁灭,他是一个唯美主义的殉道者,他爱着的也许不是聪子,而是他心目中聪子的幻影,现实中的聪子只是幻想的承载和投射。

另一个让我非常震撼,也钦佩的点是本书的名字:「春雪」、「春の雪」。春天落下的雪。不合时宜,短暂易逝,是对主角二人爱情的完美隐喻,同时也体现日本文学的风格:对短暂之美的细腻感受,哀而不伤,以及对不完美的接纳甚至美化,而本书确实是一本将唯美推向巅峰之作,也是将三岛心目中对柔弱纤美风格追求的毁灭之作。也对日本文学中力图传达的美学意识 —— 物哀 、幽玄 、侘寂三者融合达到巅峰,读完却怅然若失,如同自己亲身经历了一场凄美的爱情。

而「春雪」与「丰饶之海」这两个词,都有一种虚无的意境美,想起「丰饶之海」这个词取自月球上的「丰富海」,并且作者解释有讽刺意味,是「干枯的谎言之海」,震撼之情难以言表,深入想想一种恐惧感袭上心头,又一股颤栗般的感动将它冲散,却余韵悠长。

任何美梦都会有结束的时候,没有什么永恒的东西。

  •  
❌