用 Python 手搓 268 字节 / 387 字节的 PE EXE—— 顺便彻底搞懂《到底能多小》关键词：PE 格式、最小可执行文件、i386 / AMD64、Windows 11、逐字节构造、加载器实证 实测环境：Windows 11（x64, build 10.0.26100.0） 所有生成器与测试脚本均为纯 Python，不依赖任何汇编器/编译器/链接器TL;DR（太长不看版）在 Windows 11 (x64, 26100) 上，我最终做出了两个“最小可运行”的 PE EXE：口径位宽文件大小内容验证结果32 位 i386 (PE32)32-bit268 字节xor eax,eax; ret运行退出码 0，且这是当前加载器硬性长度下限64 位 AMD64 (PE32+)64-bit387 字节同上运行退出码 0关键结论：“最小”不是玄学，而是当前加载器划死的硬边界：32 位：267 字节被拒、268 字节通过 —— 差一个字节都不行。64 位：受 FileAlignment ≥ 0x80、可选头 ≥ 0x88、必须有可执行区段三条硬约束锁定在 387。为什么把 268 字节的 32 位方案“翻译”到 64 位，反而膨胀到 387？因为 64 位加载器把三条让 32 位变小的“历史宽松行为”全部堵死了。本文将把来龙去脉、每一个字节、每一组实验都讲清楚。目录缘起：我想知道最小的 EXE 到底多大前置知识：PE 文件到底长什么样一次“正经”的最小化：先写出 387 字节的 64 位 EXE差点翻车：387 不是全局最小第二次最小化：268 字节的 32 位 EXE（一个字节也不能再少）为什么 32 位能更小，而 64 位不能？逐条对照字节级拆解：268 与 387 到底都有什么完整实验方法（可直接复现）代码清单结论与展望参考与延伸阅读1. 缘起：我想知道最小的 EXE 到底多大“一个能跑的 Windows 可执行文件，理论上最小能到多少字节？”这个问题一直很吸引我。网上最著名的答案之一是 TinyPE-on-Win10 那个 268 字节、还能弹消息框的 PE。于是我也想在自己这台 Windows 11 上复现一次，亲手做出“最小”的 EXE。但“最小”有个麻烦的定义问题：如果只用 64 位 AMD64、并走“标准一区段”路线，你会得到 387 字节。如果切到 32 位 i386、并复用头部字节当代码，你能压到 268 字节。而“还能不能再小”，取决于当前加载器到底接受多小的空洞——这无法从规格书中直接推导，必须靠实验验证。这篇博客的核心，就是用实验而非脑补，把这几个数字的边界一一敲实。2. 前置知识：PE 文件到底长什么样Windows 可执行文件（EXE / DLL）遵循 PE（Portable Executable） 格式。逐字节手工构造时，我们主要关心这几块（按文件中的先后顺序）：+------------------+-------------------------------------------+ | DOS 头/存根 | 开头必须是 'MZ'；文件偏移 0x3C 处是 e_lfanew | | | 它告诉加载器“PE 头开始于文件哪个偏移” | +------------------+-------------------------------------------+ | PE 签名 | 4 字节 'PE\0\0' | +------------------+-------------------------------------------+ | COFF 头 (20B) | 机器类型（i386/AMD64）、区段数量、可选头长度等| +------------------+-------------------------------------------+ | 可选头 | PE32 (0x10B) 或 PE32+ (0x20B)；入口点、基址、| | | 对齐、子系统和目录指针都在这里 | +------------------+-------------------------------------------+ | 区段头(们) 40B/个| 每个区段（.text/.data/...）的虚拟地址、文件偏移| +------------------+-------------------------------------------+ | 区段数据 | 真正的机器码 / 数据 | +------------------+-------------------------------------------+关键点（也是后面全部“最小化手段”的抓手）：DOS 头不必是完整的 64 字节。加载器只要能在 0x3C 读到 e_lfanew、从那里找到 PE\0\0 就行。若能想办法让 0x3C 处的 4 个字节“恰好”等于某个小数值，就能让 DOS 头变得极短。e_lfanew 字段可以“重叠”进别的字段。因为加载器只关心 0x3C 这个偏移，而那个偏移在文件里同时也是其他结构的字节——巧妙设计可以让两者自洽。机器码可以由“非代码的头部字节”充当。入口点 (AddressOfEntryPoint) 只要指向一个被映射成可执行、且字节恰好解译成合法指令的位置即可，不必单独有 .text 区段（至少 32 位时代允许）。记住这三点，后面的 268 字节就水到渠成。想深入了解 PE 结构，可参考微软的 PE/COFF 规范，或 Stack Overflow 上的 “最小可能的 Windows PE” 讨论。3. 一次“正经”的最小化：先写出 387 字节的 64 位 EXE我第一个尝试的是最“正经”的路子：64 位 AMD64、单 .text 区段、零导入。目标是只保留“必然得存在的”东西，其余全砍。3.1 哪些能砍，哪些不能砍程序本体：我只想做“什么都不干、正常退出”，那代码只需两条指令：xor eax, eax ; 33 C0 清空 eax，作为退出码来源 ret ; C3 返回加载器在入口压栈的返回地址，触发进程终止设计洞见：x64 Windows 在跳入入口点之前，会在栈上压一个返回地址，它指向加载器的“终止路径”。我们 ret 回去时，EAX 的值就是进程退出码。所以 xor eax,eax; ret 就能以退出码 0 干净退出，完全不需要调用 ExitProcess、不需要导入表、不需要任何 kernel32 符号。可以砍掉的经典部件：DOS 存根代码、全部数据目录、导入表、重定位表、资源、TLS、调试信息、以及除 .text 外的所有区段。砍不掉、且决定下限的硬约束（后面用实验逐一验证）：64 位加载器要求 至少 1 个可执行区段；可选头（PE32+）长度必须 ≥ 0x88 字节；FileAlignment（文件对齐）必须 ≥ 0x80。3.2 387 是怎么凑出来的0x000 64 DOS 头 (MZ + e_lfanew=0x40，无存根) 0x040 4 'PE\0\0' 0x044 20 COFF 头 (machine=0x8664, 1 区段, optional=0x88) 0x058 136 可选头 PE32+ (0x88 字节)，入口点 = 0x180 0x0E0 40 区段头 .text ---- 以上头部共 0x108 = 264 字节 ---- 0x108 120 对齐空隙（因为 FileAlignment=0x80，代码起点被推到 0x180） 0x180 3 '33 C0 C3' (xor eax,eax; ret) ---- 总计 0x180 + 3 = 0x183 = 387 字节 ----注意那个 120 字节的“对齐空隙” 吗？头部明明只要 264 字节，却因为 FileAlignment=0x80 必须把代码起点对齐到 0x180，于是白白多了 120 字节的零填充。要想做得更小，要么让 FileAlignment 更小（64 位加载器不允许），要么换路子——这就是第 5 节 32 位方案的出发点。3.3 那 7 个“再小一档”的尝试，全被加载器拒了我逐项改了 64 位布局里的常量，用 CreateProcess 逐个实测：尝试结果含义FileAlignment 降到 0x40 / 0x20 / … / 0x01REJECT(216)ERROR_EXE_MACHINE_TYPE_MISMATCH可选头降到 0x84ERROR 193镜像异常可选头降到 0x80 及以下REJECT(216)同上SectionAlignment 提为 0x100 / 0x200ERROR 193必须等于 FileAlignment入口点指到任意区段之外RUN 0xC000007BSTATUS_INVALID_IMAGE_FORMAT，入口必须落在可执行区段内区段与头重叠 / 入口指向头部ERROR 193 或 0xC000007B64 位禁止“零区段入口”于是 64 位就被锁死在 387。4. 差点翻车：387 不是全局最小讲到这里，如果我就此下结论说“最小是 387”，那就错了，而且错得很有代表性。问题在于：我在“最小化”时默认只走 64 位这条路。但问题从来是“Windows 上最小的 EXE”，并没有限定必须是 64 位。后来我拿到一个别人做的 268 字节 32 位 PE，在我同一台 Win11 上直接就能跑——这立刻推翻了我“387 是全局最小”的判断。教训：“理论最小”必须显式声明你的约束空间（几位、要不要真实功能、要不要可复现）。否则“最小”这个词是会骗人的。于是我把问题拆成两个独立的、都同样有趣的问题：64 位 AMD64 的最小是多少？ → 387（标准一区段）。32 位 i386 的最小是多少？ → 268（复用头部字节当代码）。5. 第二次最小化：268 字节的 32 位 EXE（一个字节也不能再少）5.1 它能更小的两个“杀手锏”与 64 位不同，i386 加载器保留了相对宽松的历史行为，让两条压缩手法成立：(A) e_lfanew=4：把 DOS 头压到 4 个字节正常 DOS 头是 64 字节，加载器在 0x3C 读 e_lfanew。如果我们能让 0x3C 这 4 个字节的数值恰好等于 4，那么：加载器在这读到 e_lfanew=4，就去文件偏移 4 找 PE\0\0；于是 DOS 头只需要 MZ 两个字节 + 2 个 00 就够，省掉 60 字节；而那个“恰好 =4”的字节，同时是 PE32 可选头里 SectionAlignment 的值（我设成 4）。一个字节承担两个职责——这就是“重叠”。(B) 零区段 + 头部当代码：不需要单独的 .texti386 加载器允许入口点直接落在“文件被完整映射出来的头部区”里执行。于是我把 xor eax,eax; ret（33 C0 C3）直接放到可选头之后的位置（偏移 0x7C），AddressOfEntryPoint=0x7C 指向它即可，完全不需要区段头。5.2 268 字节的布局0x00 4 'MZ\0\0' 0x04 4 'PE\0\0' <- 加载器从 0x3C 读到 e_lfanew=4，来这里找 PE 0x08 20 COFF 头 (machine=0x014C i386, sections=0, optional=0x60) 0x1C 96 可选头 PE32 (0x60 字节)，SectionAlignment=FileAlignment=4，入口点=0x7C 0x7C 3 '33 C0 C3' <- xor eax,eax ; ret 0x7F ... 零填充到 0x10C ---- 总计 0x10C = 268 字节 ----注意：整个文件没有区段头、没有数据目录（NumberOfRvaAndSizes=0）、没有任何 ExitProcess 调用。5.3 268 是“硬下限”：差一个字节都跑不起来为了确认“268 是不是还能再压”，我对这个布局做了最干净的实验——逐字节裁剪文件尾部：文件长度结果266REJECT(216) ERROR_EXE_MACHINE_TYPE_MISMATCH267REJECT(216)268✅ 运行，退出码 0269✅ 运行也就是说，哪怕我把尾巴上全是零的字节一个个删掉，只要总长少于 0x10C=268，当前 i386 加载器就直接拒绝。这个 268 与“代码多精简”无关——它是加载器自己划死的最小允许文件长度。这正是“硬下限”和“我还没压到位”的区别：前者是物理边界，后者是还能努力的空间。换句话说：如果你在网上看到“更小的 32 位 PE”，要么它跑在更老的 Windows 上（当时加载器没有这个 268 长度下限），要么它并不是一个能被当前加载器正常装入的镜像。6. 为什么 32 位能更小，而 64 位不能？逐条对照把两边放在一张表里，差异一目了然：维度32 位 i386 (268)64 位 AMD64 (387)为什么可选头PE32 最小 0x60 (96B)PE32+ 最小 0x88 (136B)64 位可选头里 ImageBase 是 8 字节、字段更多FileAlignment可以 = 4必须 ≥ 0x8064 位加载器对文件对齐要求更严DOS 头可用 e_lfanew=4 压到 4 字节需标准 64 字节 DOS 头32 位保留的历史兼容行为区段0 个（头部即代码）必须 ≥1 个64 位加载器禁“零区段入口”最终大小268387上面 4 条累加一句话：64 位保留下来每一项构造要求（有可执行区段、更严对齐、更严可选头、更严 DOS 头）都比 32 位苛刻，所以同样的“最小”，64 位更做不到 32 位那么小。换句话说，268 这个数字其实是 32 位“历史宽松”的遗产；一旦去掉这些兼容性，（在只能保留这些硬约束的前提下）体积就回到了 387 这个量级。7. 字节级拆解：268 与 387 到底都有什么7.1 32 位 268 字节：完整字段偏移 字节 说明 00 MZ DOS 签名 02 00 00 （与 e_lfanew=4 重叠相关的占用） 04 PE 00 00 PE 签名 08 4C 01 machine=0x014C (i386) 0A 00 00 sections = 0 18 60 00 size of optional header = 0x60 1A 03 01 characteristics = 0x0103 (RELOCS_STRIPPED | 32BIT_MACHINE | EXEC) 1C 0B 01 optional magic = 0x10B (PE32) 2C 7C 00 00 00 AddressOfEntryPoint = 0x7C ... 3C 04 00 00 00 SectionAlignment = 4 <- （e_lfanew 也正好是 4） 40 04 00 00 00 FileAlignment = 4 ... 68 02 00 subsystem = 2 (WINDOWS_GUI) ... 7C 33 C0 C3 xor eax,eax ; ret7.2 64 位 387 字节：完整字段偏移 字节 说明 00 MZ DOS 签名 + e_lfanew=0x40 40 PE 00 00 PE 签名 44 64 86 machine=0x8664 (AMD64) 46 01 00 sections = 1 58 0B 02 optional magic = 0x20B (PE32+) ... 68 00 18 ... AddressOfEntryPoint = 0x180 ... 74 00 00 40 00 ... ImageBase = 0x400000 ... 8A 03 00 subsystem = 3 (WINDOWS_CUI) E0 .text 区段头 (VA=0x180, 可读可执行) 180 33 C0 C3 xor eax,eax ; ret代码本体在两种情况下是一模一样的 3 个字节（33 C0 C3），差价全部来自格式层面的硬开销，而不是程序逻辑。8. 完整实验方法（可直接复现）所有结论都来自对真实加载器的直接询问，而非规格书背诵。这里给出可复现的骨架。8.1 探测一个文件当前加载器是否接受 + 退出码import subprocess, os def probe(path): try: r = subprocess.run([os.path.abspath(path)], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, timeout=4) return f"RUN exit=0x{r.returncode & 0xffffffff:X}" except subprocess.TimeoutExpired: return "TIMEOUT" except OSError as e: return f"REJECT winerror={e.winerror}" # 216/193 等8.2 找“硬长度下限”（以你的 generate 函数为例）def hard_floor(make_bytes): # make_bytes(want_len) 生成指定长度、其余字段保持一致的镜像 lo, hi = 0, 4096 # ... 二分或线性扫描，用 probe() 找“拒绝->通过”的分界线实测分界：32 位 267 REJECT / 268 RUN；64 位基线 387，截到 380 会 0xC0000005（因为不小心把只读/映射区域弄失效或破坏了某字段）。8.3 跑通这两个交付物# 32 位最小 (268 字节) python make_tiny32.py -o min32.exe & .\min32.exe # exit 0 # 64 位最小 (387 字节) python make_pe_win64.py -o min64.exe & .\min64.exe # exit 09. 代码清单文件作用make_tiny32.py生成 268 字节的 32 位 i386 PE（主交付）make_pe_win64.py生成 387 字节的 64 位 AMD64 PEpe_inspect.py解析 PE 结构 / hexdump 诊断工具9.1 make_tiny32.py（核心，逐字节）关键逻辑：f = bytearray(268) # 加载器下限 0x10C = 268 f[0:2] = b'MZ' f[0x04:8] = b'PE\x00\x00' # 让偏移 0x3C 的 e_lfanew==4 指向这里 p32(0x3C, 0x04) # e_lfanew -> 找偏移4的PE签名 p16(0x08, 0x014C) # machine = i386 p16(0x0A, 0) # sections = 0 p16(0x18, 0x60) # size of optional header p16(0x1A, 0x0103) # characteristics # 可选头 @0x1C： p16(o, 0x10B) # PE32 magic p32(o+16, 0x7C) # entry -> 33 C0 C3 p32(o+32, 4); p32(o+36, 4) # SectionAlignment=FileAlignment=4 p16(o+68, 2) # subsystem = GUI # 入口代码 f[0x7C:0x7F] = b'\x33\xC0\xC3' # xor eax,eax ; ret9.2 make_pe_win64.py（核心）# DOS头(64) + PE32+可选头(0x88) + 一个 .text 区段 # 代码起点被 FileAlignment=0x80 对齐到 0x180 code_off = align_up(header_len, 0x80) # -> 0x180 f += code_bytes # 33 C0 C310. 结论与展望在当前 Windows 11 (26100) 上：32 位 i386 PE 的最小可运行文件 = 268 字节，这是加载器硬性长度下限（267 拒 / 268 过）。64 位 AMD64 PE 的最小可运行文件 = 387 字节，由“有可执行区段 + FileAlignment≥0x80 + 可选头≥0x88”三条硬约束锁定。“最小”必须有约束空间的定义：换位宽、换 OS 版本、换“要不要真功能”，答案都会变。这也正是这类最小黑客题最好玩的地方。用实验逼近边界很重要：规格书不会告诉你 267 和 268 的界线，加载器会。展望：如果把“真功能”（比如弹 MessageBox）考虑进来，268 那种能弹窗的版本已经有人做到；但必然因为引入 user32 导入而显著变大。若换一台更老的 32 位 Windows，长度下限可能更低（旧加载器没有 268 这个门）。是否能在 64 位找到非常规手段绕过“必须有可执行区段/严格对齐”——我目前的多次尝试都被 216/193/0xC000007B 拒绝，尚未找到突破口，但也未穷尽。11. 参考与延伸阅读TinyPE-on-Win10 — 268 字节 Win10 消息框（ayaka14732）What is the smallest possible Windows (PE) executable? — Stack OverflowWhy does the Windows PE format have separate tables for import names and addresses? — The Old New Thing如果你喜欢这类“把格式压到物理极限”的逆向/底层内容，欢迎交流。
致所有向终点前行的人——NiKo正在向你招手
2026年6月22日凌晨，德国科隆朗盛竞技场。举起科隆的奖杯当终场哨声响起的那一刻，Falcons战队以3-0横扫巴西战队FURIA，捧起了队史首座Major冠军奖杯。舞台的聚光灯下，NiKo终于站上了那个他追逐了整整8年的位置。"It's been 11 years of competing and I started playing 20 years ago, and it was all for this moment."赛后采访中，NiKo面对HLTV的镜头，说出了这句憋了8年的话："我已经打了11年职业，从第一次接触CS到现在已经20年了。一切，都是为了这一刻。""I said it many times that I wanna leave my name in the game, I wanna create legacy, and it wasn't possible without a Major. I hope this is just the beginning.""我说过很多次，我想在游戏里留下我的名字，我想创造属于我的传奇。没有Major，这一切都谈不上完整。我希望这只是开始。"当记者问他这次Major的心态与以往有什么不同时，他这样回答："For some reason, I was very confident for this Major from the beginning to the end. I just decided not to care about losing. I constantly focused on winning, on the solutions, on how I can be there for the team no matter if I play good or bad.""不知为何，这次Major我从头到尾都充满信心。我只是决定不再害怕失败。我始终专注于赢，专注于解决问题，专注于无论自己打得好还是不好，都能为团队做出贡献。"这番话从NiKo口中说出来，分量格外重。因为"害怕失败"曾经是他身上最深的烙印——波士顿空枪、斯德哥尔摩折戟、无数次淘汰赛出局，每一次都在告诉他自己"你不行"。而这一次，他亲手把这些全部翻了过去。从波士顿到科隆2018年，波士顿Major决赛。那支FaZe阵容豪华，纸面实力强到让冠军显得触手可及。可决赛的故事没有按预想发展，Cloud9在主场完成了北美CS的神话。2021年，斯德哥尔摩Major决赛。他再一次站上那个舞台，却因一次关键空枪而功亏一篑。然后是一次又一次。14次、15次、16次……淘汰赛都没进过，半决赛折戟，四强止步。观众骂他是"软脚虾"，调侃"男人一生只哭十八次"，说他"关键战隐身""Major命硬"——这些声音他全部听过。但他从来没有离开过赛场。他依然坐在那里，看着屏幕，拉出、急停，或者是架枪，无不例外。多么高价值的夺冠啊！Falcons本次的夺冠之路，堪称Major历史上最艰难的征程之一。八强赛，先以2-1击败世界排名第二、力争三连冠的Vitality。四强赛，与世界第一的Team Spirit血战，历经两度加时后以2-1险胜。一路击败了NAVI、Vitality、Spirit、FURIA四支顶级强队。而NiKo自己，在总决赛中交出了52-32的战绩、1.43的rating，位列赛事第二EVP。他用行动回应了所有质疑——那个被嘲笑了8年的"软脚虾"标签，在这一刻被彻底撕碎。当然，这离不开karrigan的指挥、kyousuke的勇猛、TeSeS的迂回、m0NESY的狙击。但NiKo的履历无疑是其中最鲜明、最引人注目的那一个。为什么？因为一个人能在8年的失败中始终不转身离开，这本身就是一种罕见的品质。不只是电竞，不只是冠军NiKo的故事早已超越了CS本身。他是来自波黑的选手，效力过MOUZ、FaZe、G2等顶级俱乐部，是过去十年CS职业赛场最具代表性的步枪手之一。"像NiKo"本身就是对一名步枪手最高级别的称赞。可也正因为他太强，命运才显得格外残酷。他有天赋、数据、名场面、顶级俱乐部履历和漫长巅峰——唯独没有Major。于是"最强无冠选手"成了他名字后面最刺耳的标签。这个标签跟了他8年。8年。足够在人生中谱写无数光辉的历史。而他，在这8年里一次又一次地坐回那个屏幕前，一次又一次地扣动扳机。那首歌，和那一句"活下去"在NiKo夺冠之后，全球各地的CS社区里，有一段音乐被反复剪辑进他的夺冠视频中。那是《SINOS DE NATAL》——"站起来，活下去"。这首歌的歌词，仿佛就是为NiKo量身定制的：O chão tremeu, o céu fechou大地在震动，天空已关闭O que restou de mim, ninguém notou剩下的那个我，没人注意Dias pesados, sombras no olhar日子沉重，眼里藏着阴影Parecia o fim, mas era o começar看似是终点，却是开启这不是在说NiKo吗？波士顿的颤抖，斯德哥尔摩的阴霾，8年来无数次站在悬崖边上——每一次都像是"终点"，每一次他都把它变成了新的"开始"。Eu respirei fundo我深深地吸了一口气O medo não me quis恐惧已离我远去Fui encontrando o mundo我渐渐找到了世界Dentro de um país feliz就在一片幸福的土地当NiKo说"I just decided not to care about losing"的时候，他做的正是这件事——深深吸一口气，让恐惧离自己远去，在一片"幸福之地"里找到自己。Se a noite foi longa, mais forte é o dia如果黑夜漫长，黎明就更强Se perdi o chão, ganhei a rebeldia如果失去了地面，我得到了反抗Ser eu mesma é o meu lugar做我自己，就是我的地方Ninguém me tira o meu cantar没人能夺走我的歌唱这首歌的副歌只有三个短语，却像是对NiKo整个职业生涯最精准的注脚：Levantar e viver…站起来，活下去……respirar e viver…呼吸着，活下去……Agora é só viver.现在，只管活下去8年。输过十八次Major决赛，无数次淘汰赛出局，被骂"软脚虾"，被嘲"命硬"。每一次看起来都像是终点——每一次他都选择"站起来，活下去"。"现在，只管活下去。"不是"只管赢"，而是"只管活下去"。因为只要你还在，你就还有机会。正在努力的人们！我知道你在看这篇文章的时候，可能正在经历一些什么——也许是考试失利，也许是项目卡壳，也许是觉得自己拼了命却看不到结果。NiKo坚持了8年。8年间，他输过十八次Major决赛，经历过无数次淘汰赛出局，被骂过"软脚虾""关键战隐身"。他完全有理由在某一次失败后选择"算了"。但他没有。2026年6月22日，当他终于捧起那座奖杯的时候——所有曾经的失败、所有的谩骂、所有的不甘，都变成了这座奖杯的一部分。8年无冠，他用坚持把最疼的梗，变成了最燃的传承。而你呢？你正在追逐的东西，值得你付出多久？致所有向终点前行的人——NiKo正在向你招手。别停。Agora é só viver.现在，只管活下去。
好久不见。又是一段忙碌的日子，但有些话堵在胸口，我想把它们写下来。回望过去很长一段时间，我发现自己做的大多数事情，最终都可以归结为一个念头：我想证明自己不普通，总有什么地方在发光。我减肥瘦身——虽然我本来也不算胖；我做外貌管理，希望自己能有资格站上一些更正式的场合。我参与Minecraft生存组织的工作，像母亲一样观察着每一个角落，尽力安排妥当每一件事。我参与服务器管理，时常巡检后台，依然像母亲一样操心日常。我玩CS2，希望在固定队伍的长期磨合中稳定发挥，即便状态不佳，也总想多分担一些，让队内的大哥能打得舒服——还是像母亲一样。在学校社团，我时刻关注动态，生怕哪个环节出了纰漏。我好像总是这样的人。不算什么好队友吧——我也有拖累团队的时候——可我真的很想多长一双眼睛，把一切都看住、安排好。回想起来，初中时我就已经开始这样了。只不过那时候，我脾气很爆。说起来，我的心智好像一直比别人慢半拍。幼儿园时在教室里闹腾；小学时四处惹事；初中时还会像小学生一样发火哭鼻子；到了高中，又像个初中生一样单纯、直来直去……从初中开始，我参与Minecraft生存组织的工作。那时的组织规模不大，刚好够我一人应付过来，我便把所有事情都揽了下来。我当时真觉得，我就是干这个的料。后来，了解我的人也知道，我被卷入过组织冲突，被不明所以的人骂过，受过不公的对待（不是服务器管理组——管理组一向待我很好），甚至经历过组织内讧和分裂。我不止一次陷入自我怀疑。如果没有当时组织高层的陪伴——他们现在依然是我最亲密的挚友——我现在的状态，恐怕很难说。人们常说，经历挫折就会愈挫愈勇。表面上，我确实更勇了，但内心里，我对这些事情开始变得偏执，过度感性。我总觉得自己能处理好，或者说，我觉得自己总要经历这样的考验，于是忽略了同伴的感受，也忽略了一些关键的问题。虽然问题最后大多能解决，可过程总是不漂亮。后来的Minecraft服务器管理工作，更是如此。少了生存组织那一层“服务器筛选”的屏障，公关和其他问题变得更加突出，而我也总是会留下一些小瑕疵。我一直都是这样——太要强，却又不真的足够强，然后被自己的期待折磨得怀疑自己。我总是认为，我已经全神贯注、拼尽全力了，可总有人认为我没有。这一点，我绝不认可。如果哪一天，我对待一件应该专注的事情态度出了问题，那我就不配叫川崎星夕——我就该把我的真名也改掉，让这个世界上从此没有我。只要我还在这里，我就一定会为我的事情负责。我可以保证自己的态度，但不能保证自己的判断永远正确。我希望与我同行的人都能明白这一点。只要我仍然要强，仍然负责任，在主观态度上，你永远可以相信我。虽然结果可能不太漂亮，但我始终觉得——一个可能会伤害你的高手，和一个永远信守承诺的普通人，你会选择后者。学校社团那边，我刚当选社长的时候，就立下了一个目标：一定要让计算机社登上社团节的舞台。这个愿望我想了一整年，筹备花了半年，最后，我们真的做到了。过程并不顺利——因为是两个社团合作，我不仅要管好自己的部分，还要操心另一个社团的节奏——我又像妈妈一样了。我还要兼顾社团本身的运转，何况我本身只是一个高中生，要操心的事情实在太多了。CS2也是一样。即便我个人的数据不出彩，我也想让整个团队打得舒服。突破、补枪、道具、自由人，每一个位置我都补过。我认真复盘，努力避免重复犯错——但说实话，有些错我还在犯。很多人说我模仿能力强，换种说法就是：我随机应变能力差。第一次遇到问题，我大概率会出错；第二次之后，错误率才会降下来。我只是不想犯错，不想拖累团队。对很多人来说，这只是一场游戏。但对我来说，这是一面镜子——照出我的沟通配合、默契程度，也照出我的基本功。我几乎不生气，可一旦队伍里出现不好的情绪，我往往会滋生出数倍的紧张和不安。我的共情能力很强，我真的会安慰一个人，在任何时候。所以我总是爱察言观色，生怕队伍里出问题——大多数时候，我也确实能看出问题，但我无能为力。因为我说过，我的应急处理能力很差。所以我往往承受着五份压力——全都来自团队。我总是不自觉地关注队友的架枪方向、道具储备、经济情况、控图进度。我就是没办法不看这些，除非我自己正在专注对枪——那个时候，我连头顶的HUD都看不见，甚至不知道队伍里只剩我一个人存活。我的脑子确实不太擅长随机应变。它跑得很慢。我只希望在需要做出决策的时候，能给出一个漂亮的答案，不给团队添麻烦。我想照顾每一个人，因为我一直都是这样的人。我总是想证明自己。我不是普通人，更不是孬种。我就是川崎星夕。我关心每一个人，关心团队的每一个角落，为每一粒灰尘的起落负责。我不只是想赢，我更是想赢得大家的认可。我或许太感性了，以至于理性思考的部分发挥得没有以前好——连断后站位都能选错，甚至连Rush B的假门闪都能丢错。但于我而言，我的存在，就是为了稳住每一个人，稳住整个团队，稳住整个局势。因为我在这里，我不会允许任何意外发生——尽管我有时确实会搞砸。探照灯下，只有我自己知道，这束光有多重。写完后，我的自我思绪对我说：“你想要稳住所有人，但谁来稳住你呢？”我想了很久，决定把这句话也留下来，作为给自己的提醒。
久违了。我是星夕，川崎星夕，也可以叫我“嘻嘻”——这是和我一起打CS的朋友们给的名字。转眼已经是2026年，距离上一次好好写点东西，似乎已经过去了好一阵子。今天想聊聊我最近沉迷的一件事：Counter-Strike 2。2025年彻底翻篇了，2026年也已过去了大半，我很怀念它。在Steam个人资料里，CS2占据了绝对的主导地位。200多个小时的游戏时间，我用M4A4，用AK-47，用MP7，打空了无数弹匣，从完美C一路爬到C+，到精英C，再杀上B段，如今正向着B+拼命迈进。匹配系统和段位数字有着一种纯粹的魔力——它不问你是谁，只关心你这一局打得怎么样。赢了一起狂，输了一起扛，下把继续干，这种简单直接的竞技快感，比任何精心设计的新手保护期，以及促进娱乐的ELO机制，都令人着迷。爱玩游戏的人，多半也爱看比赛。我也不例外，从绿龙（Team Spirit）到猎鹰（Team Falcons）再到小蜜蜂（Vitality），donk、sh1ro、magixx这些ID逐渐变得比生活中的许多名字还要熟悉。本来只是谁打得好就看谁，但看着看着，绿龙这几个选手身上那种充满热情的执着，让我彻底被吸引了。真正让我成为Team Spirit铁粉的，不只是他们在IEM里约、PGL阿斯塔纳和科隆Major上的卓越发挥，更是sh1ro和zont1x这两个名字背后的故事。由于众所周知的政治原因，俄罗斯选手的签证之路变得越来越艰难，欧盟停止向俄罗斯公民发放多次入境签证，美国签证更是只有通过波兰和哈萨克斯坦才有可能拿到，而哈萨克斯坦拒签率极高，波兰更是难上加难。sh1ro顶着这样的政治不公，在赛场上打出了2025年平均Rating 1.20、六次EVP提名、年度TOP5的统治级数据——面对世界TOP20队伍时有1.17 rating，每回合AWP击杀数高居世界第二，开局对枪成功率68.8%更是冠绝全球。可就是这样一份成绩单，在很多人眼里却不如donk的一波五杀来得耀眼。zont1x的故事更是让人心疼。这个2005年出生于乌克兰卢甘斯克州的少年，在2022年俄乌冲突爆发后家乡沦为战场，被迫远赴两千多公里外的爱沙尼亚避难。更令人唏嘘的是，2023年8月，乌克兰电子竞技联合会以“与俄罗斯选手组队”为由，将他从国家队除名，禁止他代表乌克兰参加任何由乌电竞联盟主办的比赛。一个尚未满18岁的少年，在战火中流亡异国，还要承受来自自己祖国的除名和网络暴力，在无力购置训练设备的窘迫中被爱沙尼亚传奇选手rope援助了一台电脑，才得以延续职业生涯。在这样的绝境中，他在Team Spirit拿到了2024上海Major冠军，两年间随队捧起了九座线下大赛的奖杯。可即便是这样的功勋选手，中国CS社区的弹幕和评论区里，那些“跪着看donk杀完了”“sh1ro只会在后点架枪”“zont1x纯纯短板”的论调依然不绝于耳。我不认可，也完全不理解。首先，sh1ro和zont1x不是半路空降到donk身边的雇佣兵，他们和donk一起从Spirit青训队杀上来的，2023年7月三人同时被提拔至主队。他们不是“队友”，他们是青训队友。他们是一起在训练室里熬过大夜的兄弟，是一起从无名小卒打到世界之巅的战魂。他们的成功是绑定的，冠军是所有人一起挣来的，从来不存在什么“donk一个人在C”。其次，他们的数据真的差吗？2025年全年sh1ro仅有两场赛事rating低于1.12，其余全部稳定在高水准。zont1x在为Spirit主队出战的405张地图中交出rating 1.08的稳定答卷，对阵TOP5队伍时更是有着1.06-1.07的优秀表现。在T1级别赛事中，1.1的rating意味着什么？意味着你可以光明正大地告诉全世界，我是世界顶级的职业选手。那些扣着“短板”“拖后腿”帽子的人，有几个能在自己所在的段位打出这个水平的贡献？而我最无法接受的，是这些人根本不尊重竞技的底层逻辑。电子竞技最迷人的地方是什么？是有人冲锋陷阵，就有人断后架枪；有人光芒万丈，就必须有人在阴影里为他挡住侧翼的冷枪。sh1ro的“后点架狙”“高保枪率”，是团队赋予他的战术角色。他做的从来不是无关紧要的事——他在用狙击枪的威慑力控制关键区域，用极高的生存率为团队保留经济火种，在世界最高的开局对枪成功率68.8%中守住队伍的防线。zont1x更是放弃了华丽的数据，主动承担脏活累活：廉价枪械守点、道具开路、战术执行，donk自己都说过“有他在身后，我才能放心冲在前头”。没有sh1ro的狙击架点，donk的每一次前压都可能变成白给；没有zont1x的道具和阵地控制，donk的突破空间将被压缩到窒息。把团队运动的胜利归于个人，然后反过来指责其他队友，这既不懂CS，也不尊重竞技。我后来特意去看了这些肆意诋毁者的游戏档案，结果毫不意外——口嗨最凶的，要么是卡在C+段位的守门员，要么是突然“顿悟”上了S的开挂佬。他们不是真正热爱CS的人，他们只是需要情绪出口的麻辣仙人。对他们来说，喷一个选手不需要理由，donk的数据够亮眼，那就说队友是“拴狗冠”；sh1ro的风格不够华丽，那就说他“缺乏血性”；zont1x的乌克兰身份在政治敏感时期成了一个天然的靶子，那就尽情输出。竞技精神是什么？尊重是什么？他们不在乎。他们只在乎键盘敲下去的那一瞬间，能不能在评论区收获几个赞。但我坚信一个朴素的道理——你看到的每一场精彩的比赛，背后都是五个人拼尽全力。sh1ro和zont1x对CS的热爱和执着，和我这个在大洋彼岸的B段玩家没有任何本质区别。我们都是被同一款游戏感动的人，都愿意为了一颗小小的炸弹、一次关键的击杀、一场漂亮的胜利拼尽全力。竞技的精神，从来不在段位框里，不在MVP奖杯上，它在每一个愿意为了胜利而战斗的灵魂中。我仰慕sh1ro和zont1x的坚韧，也被他们在政治偏见和网络暴力的双重夹击中依然坚守热爱的精神所感染。他们值得的不只是冠军，更是所有人的尊重。因为纯粹的热爱本身，就值得所有的尊重。——嘻嘻，一个在B段挣扎但永远热爱CS的普通玩家，2026年
出于偶然的灵感、自我挑战的冲动，以及对从C++转向C语言后底层运用能力的巩固需求，我最近开始尝试学习UEFI程序开发。UEFI通常作为操作系统内核的引导环境，其编程与常见的应用开发截然不同——它涉及大量UEFI规范中的库函数与驱动交互，且由于处于硬件初始化阶段，几乎无法依赖成熟的第三方库，本质上是使用C语言进行裸机级别的开发。UEFI本身是一套标准规范，而EDK II是其最著名的开源实现。它基于C语言编写，依赖NASM（汇编器）、IASL（ACPI编译工具）等工具，并使用Python作为构建系统的组织语言。本文便将记录我搭建EDK II开发环境的完整历程，希望能为各位提供一些避坑指南。初生牛犊：在Windows上的探索与受挫我偏好实践出真知，有时“撞南墙”反而能让思路更清晰。最初，我尝试在Windows 11上按照某篇中文教程部署EDK II。准备工作如下：已安装 Python 3.11、Visual Studio 2022及VC++ v143构建工具。从 NASM官网 下载便携版NASM。从 ACPICA项目发布页下载IASL编译器。将两者解压至合适目录，并设置环境变量 NASM_PREFIX 和 IASL_PREFIX（注意：路径末尾需包含反斜杠）。使用Git克隆EDK II主仓库：git clone https://github.com/tianocore/edk2递归更新所有子模块：git submodule update --init --recursive设置 EDK_TOOLS_BIN 环境变量指向 \<EDK II目录\>\BaseTools\Bin\Win32至此，理论上所有依赖（VC++、Python、EDK II源码、NASM、IASL）已就位。我满怀信心地进入EDK II根目录，执行：edksetup.bat迎接我的却是连绵不绝的MSVC编译错误。耗费近两小时与各种路径、工具链版本和权限问题搏斗后，问题依然无解。切换至Clang编译器尝试，同样失败。最终，我决定暂时从Windows战场“撤退”。柳暗花明：在Linux上成功构建我将环境转移至Kali Linux（任何Debian系发行版步骤类似）。系统详情：Linux kali 6.16.8+kali-amd64 #1 SMP PREEMPT_DYNAMIC Kali 6.16.8-1kali1 (2025-09-24) x86_64 GNU/Linux这次，我决定使用系统原生的GCC工具链。第一步：安装系统依赖sudo apt update sudo apt install -y git python3 python3-pip nasm iasl build-essential uuid-dev libssl-dev第二步：获取EDK II源码mkdir -p ~/edk2 && cd ~/edk2 git clone https://github.com/tianocore/edk2.git . git submodule update --init --recursive使用 git submodule status 可验证所有子模块状态正常。第三步：编译EDK II基础工具cd ~/edk2/BaseTools make这里有一个插曲：我首次错误地使用了clang，导致编译报错；切换回gcc后便顺利通过。原因尚待深究，但gcc的兼容性显然更好。第四步：设置开发环境cd ~/edk2 source edksetup.sh第五步：配置目标平台编辑 Conf/target.txt 文件，主要修改两项：TOOL_CHAIN_TAG = GCC （指定使用GCC编译器）TARGET_ARCH = X64 （指定64位架构）最后：执行编译在根目录下，直接运行：build随着终端滚过如江河奔流般的编译信息，最终构建成功。默认编译的 EmulatorPkg 项目中，便生成了我们期待的 HelloWorld.efi。验证：在虚拟机中运行第一个UEFI程序我没有额外配置QEMU，而是选择了一个更直观的方式验证：将 HelloWorld.efi 文件放入一个Windows 10安装ISO的根目录。在VMware中创建一个空的、固件类型为UEFI的虚拟机，并挂载上述ISO。启动虚拟机，进入UEFI Shell环境。在Shell中定位到包含文件的卷（例如 fs0:），并执行：HelloWorld.efi屏幕上如期打印出了 “UEFI Hello World!” —— 那一刻，标志着通往底层系统开发的大门，已被叩开。结语这仅仅是一个开始，却是我深入理解计算机启动链条和底层硬件交互的一个重要里程碑。UEFI编程世界深邃而复杂，但此番环境搭建的成功，无疑是一个至关重要的航标。未来，我将继续探索UEFI应用的开发，或许，终能以此为基础，创造出一些切实可观的项目。
“妈妈，快看！流星落地了！”“好孩子，那是大飞机哦，不是流星。”厦门湾的晚风，带着咸涩的海汽与跑道尽头残余的夕照，穿过集美学村的榕树，最后温柔地抚过我的脸颊。落在高崎机场的那颗“流星”，是国航的波音客机；天际划过的那道银光，大概是飞往远方的国际航班。这一切，构成了一幅动人的画卷。思绪飘回少年时代。二十年前的集美海边，我第一次认识了会降落的“流星”。“妈妈，那是什么？”我指着海平面尽头闪烁的光点。“那是流星。现在许愿的话，等到它落地时，愿望就会实现。”我面向大海，在脑海中描绘着自己的梦想。那时，我许愿要成为一名“流星魔法师”——掌控流星的轨迹，谋划梦想的轨迹。这个念头酷极了，我要当，且一定要当。于是，童年的流星，停落在跑道上。我知道，那天在高崎机场上，有我许过愿的流星。时光飞逝，高中生活如期而至。职业规划课上，当同学们认真阐述自己的理想时，我却不敢说出“流星魔法师”这个称呼——它听起来太不成熟了。流星魔法师这个职业，从唇边滑落，碎成一地尴尬。我抛去流星，把自己装进标准的轨道，像一列按图运行的夜车，在题海与分数间往复。直到高三那次，模拟考的失利，让列车滑入断轨。是啊，我只知道要埋头学习。可是然后呢？我不知道。我感觉自己正从流星上滑落，不断下坠，沉入深海。某个黄昏，我蜷缩在飘窗边。房间本就狭小，而我枯萎的内心更加渺小；暮色已然昏暗，而我绝望的心更加黯淡。天边只有望不到尽头的云层，夕阳完全隐没在地平线下。远处的大海一片沉寂，深蓝的色调令人沉沦。夕阳的余晖映照在湖面的高楼间，也洒在川流不息的街道上，但很快，厦门岛便会被黑暗笼罩。走出去，不知为何，但必须走。集美学村的风景永远动人。从这里看海，与在湖里看海是两种完全不同的体验。说实话，整个高中阶段我几乎没有任何娱乐，但那个傍晚，在集美学村，我见证了一场终生难忘的“流星秀”。厦门海峡上空，暮色渐浓。一架客机划破天际，喷气在蓝橙交织的画卷上留下一道白色长痕；接着是第二架、第三架，不同方向，不同轨迹，我的思绪也随之向着各个方向延展。客机飞远，但天空长卷留痕。引擎的轰鸣渐远，但天空的画卷已然定格，那声音久久萦绕耳畔，为迷途的梦想指引方向。凭栏远眺，我注视着这些飞机，又低头望向厦门岛。天地辽阔，路途宽广，怎能不让人心生向往？在那一刻，我下定决心：我一定要成为“流星魔法师”。集美大桥上川流不息的车灯，带走了我的愁绪；机场跑道上降落的客机，承载着我重新落地的理想。潜心学习，高考拼搏，钻研民航，成为一名飞行员——我在规划属于自己的星图。“妈，对着流星许愿，梦想真的会实现。晚些时候，你会在高崎机场，看到流星魔法师正在操控流星。”我握着电话，“而这颗流星，即将再次启航，去为更多人划过梦想的轨迹。”挂断电话，我整理好制服，前往机场，进入驾驶舱。我仔细执行检查单，唤醒了这颗“流星”。调整无线电耳机，清晰的指令脱口而出：“高崎出发，国航2007，高度1000，航向076，向你问好。”向左望去，集美学村在夕阳下格外清晰——那里是观赏“流星”的最佳地点。不知此刻，是否也有人正在对着我的航班许愿。或许，有一名又一名的孩子，正在指着这颗流星，对着他们的妈妈惊呼。想到这里，我关掉麦克风，对那些许愿者们，也是对二十年前的自己，轻声说道：“梦想出发，流星1987，高度5000，航向020，向你问好。”
最近状态极为不佳，还是捋一捋思绪吧。人总是有低谷时刻的，这也正常，但人总是要迈过那道槛。这篇文章就随便聊聊，因为本来我心思就挺乱的，咱们就说一说上进心、爱情、事业和文学著作阅读的事情吧。上进心——是朋友，也是敌人上进心某种程度上也是野心的一部分。《道德经》有一句话说得很好：“知足者富，强行者有志。”有上进心的人，是有志向的。比如这件事就要提到我认识的一个朋友。他大学只是一个普通一本，但他抓住了很多机遇，人生如同开挂，做到了很多C9院校硕士生都难以做到的事情。我打心里是非常敬佩他的，因为他才大三，却用不到两个月的时间就实现了爱情事业双丰收。咱们可以算一笔账：正常一个人追求另一半要多久？一般都得要半年乃至一年甚至更久。找工作呢？现在行情不好，社会可不好找到一个“体面”的工作，可能得碰壁几个月才能搞定。所以他的经历是非常传奇的。那我的上进心就开始作祟了啊——因为我看到别人好，我就有一股非常强劲的动力去做出新的改变。当然，起初这并不是坏事，那个时候我只想强化自己，闭门苦修，最后靠自己的努力与头脑赢得他人的认可。但我除了上进心，还有偏执心。很遗憾，苦心学习文化课与技术知识，它的回报产出是要过几年才能显现出来的，太熬人了。再加上这种自身的忙碌，以及我需要管理多个团队的负担，我开始力不从心。长久以来，这导致我的上进心逐渐发展成了嫉妒心。有时候，我大半夜熬夜忙完事情，看到朋友在高兴地晒日常，往常的祝福心完全消失了，转而是“凭什么啊，凭什么他过得好啊”“为什么我的付出与回报不成正比啊”“为什么就从来没有人认可我的贡献呢”。理智最终战胜了情绪：我明白我最近已经忙过头了，以至于我开始展现人性中不那么光明的一面——见不得别人好。那就很危险了，再发展下去就是怨恨别人了。所以我只能防御性地切断与他们的联系，以防止伤害朋友关系。所以，上进心在你状态好的时候，绝对是推动你进步的强势动力；但如果你状况不好，它恐怕就要成为你心中的恶魔了。爱情——重要，但切不可强求事实上，我并不对爱情方面的事情很敏感。虽然你看我博客“关于”页面写着“我想要一个大姐姐陪伴我”，但我必须说明，现阶段，我已经习惯自己一个人了。身边连个交心朋友都没有，还谈什么女朋友呢，真是搞笑。所以我根本不在意。如果说为什么我那几天看到这些消息会应激，无非还是归结到一个原因——过度劳累把我变成了“鬼”，暴露了人的本性。现阶段，作为一个17岁的青少年，我必须说，这东西完全不重要。而且我可以百分之百负责任地说，这不是“吃不着葡萄嫌葡萄酸”。我不是没见过失恋案例，当然也看到很多有稳定恋爱关系的人——这个一会儿再说。恋爱关系本身是不稳定的，青少年不好把持，如果你这个阶段有很重要的事业，建议你以事业为先，不要涉足危险的关系，因为这些关系真的有可能影响你的事业。你为什么找对象？除了为了填补心中空缺的另一半之外，最重要的是，你要成家，才真正算立了业。家庭也算一门事业。所以爱情是一项需要理性的“事业”，心急吃不了热豆腐。如果没找到合适的就草草结果，那绝对会出问题。当然，如果你真遇到合适的了，那未必不是件好事，只是这真的很难。记住，男性就算25岁再找都不算晚，但最重要的一定是她能不能爱你、能不能负责任、能不能养家——这绝对是一门事业。事业——固守本心，不要受外界影响我这话不是说不能学习别人，而是你自己定好的事业规划，就不要被别人三言两语随意修改。记住，最后办这些事业的是你自己，不是他们。他们会帮你完成事业吗？显然不会。所以凡事要自己做主，不要乱被影响。人是要有事业规划的，这样人生才过得有意义，才能对自己、对他人有所贡献。记下来，事业才是你真正的人生主干。当然，也不要因为事业受挫而萎靡不振，跌倒了总是能爬起来的。拿我举例子，我以后应该会去学习电子信息，然后从事固件工作（比如航空器飞行固件）；副业上我可能会加入心理援助组织，做一些奉献工作。像这样的主要事业规划是要想好的，事实上这也算是职业规划吧，反正是得想一想。注意，不要看别人怎么怎么样，自己就贸然修改事业规划。我那朋友做Web的，现在飞黄腾达了，我就要去做Web吗？绝对不是。如果你这样做了，那连功利主义都不算，只能算生搬硬套。所以事业要固守本心，不要胡乱套用，也不要受他人影响。最后说一点重要的：别人事业干得好，那是他们的事。路是要你自己走的，不是让他们走。所以自己的事业自己做，不要影响自己的事业心态。文学阅读——我有话说总有些奇怪的人质问我为什么光读技术书籍，不读文学书籍，说我没有感性。那可太好笑了，如果你认为我没有感性的话。中国四大名著我也就略读一二，我主要读的是外国名著，比如《绿野仙踪》《八十天环游地球》《格列佛游记》《鲁滨逊漂流记》《海底两万里》。这些书有一个特征，不知道你们有没有注意到，那就是它们的情节都没有那么曲折过度或者黑暗。事实上，我读书的时候会高度代入情感，例如我在读《八十天环游地球》的时候，我真的有踏上旅途的兴奋感。这就是为什么我读不下去《老人与海》《悲惨世界》《钢铁是怎样炼成的》这些书。《悲惨世界》读不下去你们应该能理解，毕竟这本书字里行间写着的就是“悲惨”。但《老人与海》不一样，它更想表达“硬汉精神”，赞扬这种与世界顽强抗争的精神。我反正第一次读的时候没有读出来，我读得很浅，但却能把情感深入到这浅的剧情中去。我一看到老人筋疲力尽，命都快丢了，结果就带回来个鱼骨头，我立马感觉到一丝窒息感——因为我映照到了自己：我曾经为了我所热爱的事物殊死拼搏，但最后没能保住。最终，我决定把这本书封存起来。同理，保尔悲惨的经历也让我感到窒息，我最后也没看完《钢铁是怎样炼成的》。你可以说我读书读得浅，但如果你说我读书没有感性，那我百分之百会反驳你。思绪理正，继续出发吧嗯，先避避风头吧。先把一些危险的因素封存起来，这既是在保护我自己，也是在保护他们。我不想伤害任何人，无论何时。还有，人生总是计划赶不上变化。人要有计划性，也要有应变性，要不然真的会被压垮。加油吧，为了自己的事业，付诸努力，不必看他人的目光。正如我前文所说：“这些事业也好，日常活动也好，不要看外人怎么看待，记住，只要你认为值得，你就去做——只要你始终认为这值得。”规划我的星辰，让他人在仰望星空的时候，也能看到闪闪发光的自己。
什么是人生的意义？——记录自己的心理援助经历
思绪难理最近事情很多，感觉都快要忙出走马灯了——或者说已经走马灯了，我竟然在回忆以前我在干什么，那就想想吧。这一想不要紧，我的思绪如同长江水一般飞溅，结果它流到了一个QQ群里（一个还是两个？我不太记得了），弄得别人一头雾水。这样影响不好，我决定把思绪整理起来，发在博客上。当然时间跨度长达3年，我也只记得个大概，所以有的内容可能不是很准确。以前有人问我，当然我自己也有类似的问题，那就是：我们一些长期坚持的“事业”，是否是有意义的？很多时候，我们在道心破碎的时候，或者忙得焦头烂额的时候，往往会这样想。我觉得吧，这些事业也好，日常活动也好，不要看外人怎么看待，更不要看它对社会有什么所谓贡献。记住，只要你认为值得，你就去做——只要你始终认为这值得。如果不是这样的，我为什么要帮助那么多小伙伴呢？在写这篇文章的时候，我正在读高二。我从初二开始就已经接触心理援助工作了，当然并不是专职的。2022年7月，我开始在一个Minecraft网络社团担任社长，这一当就是两年。大家都知道，在团队当领袖是不好当的，团队的事情实在太多了，再加上当时社团所处环境很乱，所以冲突和心理问题层出不穷，我不止一次开展疏导工作。不过这些可能并不算什么心理援助吧，应该。伊始2023年1月，我接触了第一个患者，他应该是抑郁症和孤独症。他的父母远在两广地区打工，留他一个人在内蒙古，偶尔有爷爷奶奶能陪他。在初中的时候没有人喜欢他，甚至欺负他，导致他的心灵越来越闭锁。所幸，他来到了我们社团。他当时用一个“福瑞戴着护士帽”的头像，起初我们没怎么注意，但后来我们就知道怎么回事了——这个可怜的孩子（或许不该叫孩子，因为他比我大一岁）原来是这样的情况。我从来没接触过心理疾病患者，所以当时是我们一群社团管理层聚在一起讨论要怎么处理，最后勉强定好了一个方案，对他做出必要的关照工作，这是我们能做到的了。我们都很关心他，经常陪他聊天，跟他一起玩游戏，看他直播。他还比较好，没有很强的自杀倾向，所以我们没有太慌张，正常处理就好了。虽然他还是有一些孤独，后来在2025年左右的时候建了一个群互相聊天，我也在里面，看他已经差不多没大问题了。嗯，我认为这些援助工作很值得。长期帮助其实我还有一个朋友，我们是2019年认识的，现在算来也6年了。他是抑郁症、焦虑症和孤独症，童年回忆不是很好，可能原生家庭也有一些PUA的行为，所以他有一些偏执、钻牛角尖，甚至出现非常极端的行为。我把他放在第二个说，是因为我是2023年3月多才逐渐意识到这个问题的。他的问题难处理得多，自杀倾向很强，而且心理落差极大，需要随时监视的那种。我作为他的老朋友，一直在陪伴他，给他做开导工作。我当时信奉的一套就是，死亡是认输，只要还活着人生就不算失败，所以不要过度悲观。他往往不是这样想的，因为什么？因为他当时高三，成绩不是很好，我当时初二下学期，成绩非常好，这样一来，他就认为成功者说的话不适用于“失败者”，于是就不听我的了。5月，我因为关心他，所以在他生日当天在Minecraft给他办了18岁生日会（是的，他的父母没给他办）。结果当时跟隔壁组织闹了个乌龙，场地冲突了，我还做了一些协调工作。但是这个朋友非常愧疚，认为是他麻烦了我，并表示他非常不愿意麻烦别人，我想这可能是PUA的结果吧。然后当天半夜，生日会结束了，我睡觉去了，他发了个消息，内容是“一了百了”，这意思已经很明显了，而且这还是他的18岁生日，谁知道是不是要做“18岁闭环”。所以我立即关注他，好在没事。但毕竟生日会是我办的，他这么一发，我确实有点生气。然后到了2024年9月，他仍然有这些问题。当时他早就高考完一年，上大二了，但是他对未来的事业有很大的恐惧，因为他的学校不好，专业也不对口，所以他怕找不到好的工作。我当时对这个问题很明确，这有什么大问题，现代人怎么可能找不到工作，就是想不想的问题，所以我就是这么跟他说的。事实上这里要有一个铺垫，我当时刚升入高一，存在一个“高中适应期”，所以非常累，再加上我已经心理援助他长达一年半了，对于他一直固守的问题我表示非常不满。结果当时我就以我自己现在的状态举例来劝服他，比如什么我上重点高中很累什么什么的，我也不知道我为什么要举这些例子，反正我当时快要被气炸了，没说很极端的话已经很好了，我意识上仍然是想心理援助他的。他当然是不买账的，最后直接开始“捧”我了，我当时可没什么心思，我看到这个我只觉得他全然不尊重我，直接结束了话题跑去睡觉了。事实上这一点也不好，他难受了一晚上。这样的问题在我后来的反思后有所改善，后来一直到2025年10月，他都比较稳定。再加上写文章前几周，我们有一个工作会议，因为我们是一个工作团队的，开会的时候在一起，我们当时是讨论为什么团队内有这么多冲突，我就把几个高层的心理上的问题都说了，包括我和他，现在他基本正常了。你说，这长达接近三年的援助，是否有意义呢？当然有啊！如果没有我，他可能已经不在人世了，我完全不后悔做出这些行为。常在河边走，哪有不湿鞋其实2023年7月到2024年6月这段时间，事情又要说到我身上了。首先是初二下学期，我当时学习压力大，因为我非常担心成绩下滑，结果期末考试我真的从年排2掉到17了，我难受了一整个暑假。2023年10月，因为一些家庭冲突，我更加心理扭曲。最后我都发展成什么了？2023年12月，前面的这些事情加上网络上的影响，我竟然买了一套女装，我想当伪娘！从2024年4月开始，临近中考的这两个月，学习压力加上家庭冲突，弄得我对生活的挫折完全没有任何抵抗力，任由其摧残我。那一段时间，我被检查出来双相情感障碍，这算不算近朱者赤近墨者黑呢？结果一直到中考的这段时间，我一直在服药。我来说一下抗抑郁药是什么感觉，吃了之后你的难受劲会被一种奇妙的力量拉住，你就是不容易难受起来了；抗狂躁药是什么感觉呢，吃了之后你确实不容易冲动易怒了。好在中考之后，在我网上的一些朋友的共同帮助下，我走了出来。顺便一提，点名感谢一下轩某，这个忠实的伙伴。事实上这一段经历对我并不完全是坏的，我现在的心灵已经非常坚不可摧了，而且非常的释然。究极考验2024年4月到8月，我接触了一个药娘，她是中度抑郁，当时远居日本。这个可能不算什么心理援助，但可能也算，前文提到，这段时间我心理也有问题，所以我们当时更像是互相帮助，这样还是很好的。她的自杀倾向很强，而且很神经质，更难办的是，她把我当作她的情侣，我费了很大心思处理她的事情。现在，她走出来了（可能是因为停止不当服用雌性激素了），我也走出来了，我们现在仍然在联系——作为普通朋友。对她开展心理援助的经历是比前面大多数经历都更为宝贵的，这绝对是我所见过的最难开展心理援助的患者。据统计，我完成了4次自杀干预，并且有1次我是通过联系室友才解决的（因为当时她把我好友删了）。这一切，真的有意义吗？哈哈，多么惨痛但丰富的经历啊，其实这些还算好，这些算是我的付出。不过要问是什么让我开始思考我做这些有没有意义，那就是最近一年的这些事情了。在升入高中的这一年，我发现我身边的这些朋友对我的关心都变少了。九州有了女朋友，开始陪他女朋友了，而且他有了自己的社团，开始给自己社团做事了（为了这个甚至快忘了我在社团里给他帮忙了，上次闹了个乌龙）。神羽等人倒是前后区别不大，不过他们也是有了自己的事业，有的还有了伴侣，挺好的。最重要的是同学，同学好像对我的这些行为不买账，他们看不到我为这些事情焦头烂额，只看见了我在学校的时候偶尔会狂躁。事实上，升入高中后，我已经做足了情绪控制了，但是处理这些事情还是不免得让我狂躁。不过这些狂躁看起来使得我不容易被人理解了，导致我身边基本上没有同学是朋友。所以上述的这些经历，我在思考我的这些奉献行为，是否值得。柳暗花明又一村我最终想明白了，正如开头所说，只要你认为值得，你就去做——只要你始终认为这值得。所以，在上述我的心路历程后，我更加坚定了我的信念。明年我应该会考心理咨询师证书，以后真正去志愿参与这些心理援助工作。除了心理援助，此外，我希望高中的这三年，我可以闭门造车，在高考取得好的成绩，并且在这三年研究技术，惊艳我身边的人。我有一句话是这样说的：A starlight in heart, and in that light, a starset to plot. 我想我也要默默谋划属于我的星辰吧。
北京~欢迎你~你是否曾到过北京？作为中华人民共和国的首都，这座城市值得每一个人亲身感受。早在2012年，我就第一次踏上了北京的土地。后来，由于种种机缘——比如带天津的朋友进京游玩等等——我又多次造访。如今我已能够独立出行，北京自然成为我出行的优选之一（当然，天津也是一座非常有魅力的城市，两座城市风格不同：天津在大城市基础上更具人文气息，北京则专精独显大都市风范）。根据中国铁路的通知，自2025年10月1日起，全国铁路将全面停止纸质报销凭证的打印服务，在电子客票基础上全面推行电子发票。这意味着，“限乘当日当次车”和“仅限报销使用”的蓝色和红色纸质车票将正式退出历史。我决定趁政策落地之前，最后打几张这样的票作为纪念。于是，2025年9月21日，我带着身份证和一些必备物品，凌晨五点就赶到塘沽轻轨站，乘坐直达快车前往天津站（此过程固定时刻表5:57-6:33）。我搭乘的K28次列车（丹东-北京）于6:54从天津站2站台出发，一路非常顺利。清晨还有些冷，我一度担心衣服穿得不够，没想到8:40抵达北京站时，天气已经暖和起来，只能说不愧是华北的初秋吗。北京站翻新了！两年前它还带有些许岁月的痕迹，如今却焕然一新，北京的发展速度是没得说的。正好在我出站时，时钟指向九点，站内响起了《东方红》的报时曲——就像天津的世纪钟一样，充满了北京的特色。中午之前我一直在东直门一带活动。偶然看到一家瑞幸咖啡，想起最近瑞幸正与《崩坏：星穹铁道》进行联动，便特意买了一杯。我并不玩这款游戏，但却热衷于收集各种周边——无论是登机牌、火车票、联名商品，还是航空公司和铁路局的清洁袋、纪念车票等等，都是我收藏的一部分。在东直门地铁站，我特别留意了枢纽内的导视系统。北京地铁的指示标识绝对是国内数一数二的：信息全面、设计美观、识别度高，值得其他正在发展轨道交通的城市借鉴。此外，我也非常喜爱那些带有旧北京风格、隐约流露苏式美学的线路设计。最后我抵达北京丰台站，为这一天的旅程画上句点。回到天津的那一刻，仍感受到一种熟悉的归属感。相比于天津站，我还是更喜欢天津西站一分，哈哈。即使你已经去过上海、广州、深圳，我依然推荐你来一次北京。中国四大一线城市——始终是这四座，所谓“新一线”不过是噱头而已——每一座都独具魅力，值得细细体会。北京的城市吸引力，源于它厚重的历史底蕴、庄严的政治氛围和严谨的城市规划。在这里，你能真正感受到华北城市的精粹。
谈到旅途，我们会想起美好的风景，我们会享受难忘的时光，我们会收获愉悦的回忆。在星星点点的光点之中，我却不止收获了回忆。夏日，本应是青春燃烧的时候，我的挚友却在日夜奔赴之下永别了世间。那晚，整屋静得如一潭死水，只剩下我和手机坐在床上，麻木着，僵硬着，直至黎明将我吞噬，刺眼的光芒直射脸庞。辗转反侧之下，我毅然决定前去上海，这是我最后能见到他的一面。火车彻夜的轰鸣声此起彼伏，与我的思绪一同共振。游走于车厢之间，呆滞于车窗之前，行走于站台之沿，我来到了挚友的葬礼。当我注视着挚友的画像随棺材缓缓下落时，手不禁紧紧攥住一串钥匙链——那是我们之间的信物。现在，人去楼空，我还有何必要再拿着它呢？忽然，我感到一只纤细的手轻拍了我的肩膀，蓦然回首，一眼便认出了挚友的姐姐。我快速打量着，亚麻色的长发，深棕色的眼瞳，浅白色的衬衫，同他们漫步在街头巷尾的回忆又一次涌入脑海，我的眼眶又一次湿润了。无意间，我瞥见她的眼眶也笼罩在红晕之下，作为逝者的姐姐，想必她也沉浸在忧伤之中。“姐姐……怎么了？”“我们……出去走走吧？”她那本是哽咽的语气突然变得温柔清朗起来，“好久没有见面了，去我弟弟最爱去的那条街道吧。”我微颔首，相与步于江岸。黄浦江平静如镜，映照出了我们两人的思绪。高云点点，夕阳纤纤，对岸的陆家嘴在夕日照耀之下炯炯闪亮。“弟弟以前，最喜欢来到这里的，你还经常和他在这里合影。”她翻阅着旧时的相片，忽然全部塞到了我的手中，“拿着吧，不要忘却那段时光。”我接过相片，觉着相片沉甸甸的，不足以让我的手负担得下。夕阳西下，天色渐暗，繁星点点，东方明珠亮起了缤纷的灯光。我眺望着这些高塔，就仿佛现在挚友在与我一同注视一样。“对了，你是今晚的火车吧，我送你去火车站。”那位姐姐突然开口道，转身拿上大衣披在我的身上，“上海的夜晚很冷，保重好自己的身体。”“好，送我到进站口吧，谢谢你。”火车站尽是人来人往的景象，我却一点也不想离去，但我咬了咬牙，蹒跚着走进了进站口。“等下！”她突然拉住我，拿着一串钥匙链塞到我的手中，“现在弟弟已然不在，替他保管好这个钥匙链吧。他生前一直都在说，希望你考上复旦大学——现在也依旧如此。带着他的遗愿，继续努力吧，我会一直看着的。”我端详着这两条钥匙链，视线又一次模糊了。她见状，将我拉入怀中，紧紧地抱住了我。我不想离开上海，也更不想离开我的挚友，我希望这一刻是永恒的。“谢谢你，再见，我会回来的。”穿过熙熙攘攘的人流，走过拥堵的检票口，我踏上了列车。行李很轻，但是我携带着的留恋与怀念是沉重的；列车很慢，但是与挚友的那段难忘的时光是飞快的。每当我坐在窗前，我便会举起这对钥匙链，它们映着日光，格外耀眼，我的思绪便又会回到过去。当意识回到现实时，我便愈加知晓，要继承他的愿景，重新踏上旅途——毕竟，我的旅途是永远不会迄止的。