2025-06-02 13:58:00
世说新语不是一本正经史书, 别太认真.
安石不出, 如苍生何?
先别激动, 这儿说的不是你家的王安石. 此处安石是字, 此人的姓名是谢安, 来自王谢堂前燕的里的谢家, 东晋人.
世说新语里全是这些豪门高阀的传说和故事, 多到齁多到腻的那种. 其中王谢两家子弟的戏份更是足. 王家当官的那些早已掩埋在历史长河中, 但是王羲之的作品是超越时代的. 而王羲之的好友, 谢家的谢安, 既是是东山再起这个成语的主人公, 也会在一场改变中国命运的大战里出现. 至于东山, 是当时的会稽, 现在绍兴附近的某个地方, 也是当时所有人趋之若鹜的居停. 罢官了? 没事, 早就想回东山了. 窃以为当时朝廷里日常寒暄少不了对东山房地产市场的讨论, 如果你家在那儿没个小院子供三五同僚来探索哲理和一起磕五石散, 都会阻碍你的仕途进步.
说回书本身, 这本笔记体的故事集很多时候是立观点站队大于一切. 事实不支持观点? 没关系, 摆上去; 没有事实依据? 也没关系, 王谢们金口一开就是事实, 谁稀罕真正的事实啊? 而说实在的, 人民大众的受教育水平和自身欣赏水平决定了他们要的就是这种, 要不抖音之流在当代为何如此流行? 比如说, 在世说新语里, 我们先像在欧几里得几何里定义公设一样, 定义了泰山崩于前而色不变是一种美德, 是能够胜任重任的必要条件, 然后在这个基础上衍发出了一系列故事(雅量篇). 但是我总觉得这儿的雅量就是矫揉造作. 比如有人下雨天靠着柱子写东西, 一道天雷打中柱子, 衣服都烧焦了, 还在继续写。这得是把人自身的动物性如何压抑才能不惊惧啊! 又比如东床快婿兼书圣王羲之, 当时听说有太傅要嫁女, 上门来选女婿, 其他兄弟都会有些拘谨, 只有他躺在那儿, 还露着肚皮. 我觉得王羲之这儿是不想结婚, 于是上网找了如何破坏相亲活动的帖子, 照本宣科后弄巧成拙了.
说回开篇的谢安, 这种雅量的事情肯定少不了他, 原著不难, 谨录如下:
谢公与人围棋, 俄而谢玄淮上信至, 看书竟, 默然无言, 徐向局. 客问淮上利害, 答曰: “小儿辈大破贼.” 意色举止, 不异于常.
顺便的, 请别把这儿淮上利害当成土匪闹事或者地方叛乱, 这儿谢安收到的消息是淝水之战的结果. 往少了说, 这一战确定了东晋不被灭国的命运; 往多了说, 确立了南北朝并立的态势. 当然, 据晋书记载, 谢安在脱离了客人的视线之后还是挺激动的, 踉踉跄跄, 鞋都磕坏了. 我就觉得, 有必要吗? 表现得像个人不好吗?
山涛和王戎算是竹林七贤里的两个异类. 王戎这个官n代不提, 即使没有竹林七贤的名头, 也注定会踱往权力的巅峰. 但是山涛就更像是靠着自我奋斗了. 虽说也是县令之子, 但是出身是明明白白的寒门. 能够最后位列三公, 绝大部分靠的是超人一等的学识和远见. 看他的事迹, 总有看穿越者的感觉, 因为他的每一步都是能正确地趋利避害, 已经到了无法让人理解的程度了.
山涛在通俗视野里出现, 大都是因为嵇康的与山巨源绝交书, 这篇不少人小时候都学过的古文里, 嵇康洋洋洒洒地自抒胸臆. 大意是, 我就是受不了当官你还想推荐我, 那我就不是你的朋友了. 但是, 仔细看行文可以发现, 他第一没有说山涛本人品性的坏话, 第二没有说山涛是故意陷害他才推荐了他. 要知道作为曹家子弟, 在司马氏的手下为官, 绝对是如履薄冰. 换一个不熟悉山涛的人, 绝对有理由往这个方面想. 但是嵇康知道自己之前的金兰兄弟的胸襟, 绝对不会做这样的事情. 所以, 我的理解是, 这篇更多是一个公开信, 而不是一个私下的绝交书. 一方面拒绝了来自司马氏的不那么确定的善意, 另一方面也给山涛竹林七贤的历史而补了一手, 让当权者对山涛更加信赖. 至于这两位的君子之交我不相信受到了这封绝交书的影响, 嵇康临刑前还嘱托自己的后辈, 有问题可以找山涛. 历史上也记载着, 嵇康的儿子也是受山涛的推荐而入朝为官.
但是说起这儿的为官, 我总觉得山涛为官的历史有点不太对劲:
山司徒前后选, 殆周遍百官, 举无失才. 凡所题目, 皆如其言. 唯用陆亮, 是诏所用, 与公意异, 争之, 不从. 亮亦寻为贿败.
这段是说, 当时晋武帝的吏部由山涛负责, 推荐了很多很多人, 从来没有任何问题, 物尽其用人尽其才, 只有对于陆亮, 来自上意, 后面陆亮也因为受贿而被拿下. 我知道晋武帝前期更会励精图治一些, 后面承平日久会懈怠很多, 但是作为一个基本的制衡机制, 山涛在朝堂上隐隐一呼百应, 总归是一个问题. 皇上点名要用的陆亮后面因为受贿出问题我相信是确有其事, 但是在那个政治黑暗的年代, 卖官鬻爵算是日常, 山涛自己都有收受贿赂(虽然没使用). 所以我很难因为一个人因为受贿而被法办就信服. 另外一个角度来讲:
晋武帝每饷山涛恒少. 谢太傅以问子弟, 车骑答曰: “当由欲者不多,而使与者忘少.”
赏赐也不会多给, 这让我觉得晋武帝和山涛之间有点什么. 还有另外一个佐证是:
山公大儿著短帢, 车中倚. 武帝欲见之, 山公不敢辞, 问儿, 儿不肯行. 时论乃云胜山公.
武帝想要看看山涛的儿子, 结果被山涛儿子拒绝了. 但是但是, 山涛的儿子凭什么能认为拒绝皇帝是一个选项的?
整个世说新语里我最喜欢的一个故事是这样的:
桓宣武少家贫, 戏大输, 债主敦求甚切. 思自振之方, 莫知所出. 陈郡袁耽俊迈多能, 宣武欲求救于耽. 耽时居艰, 恐致疑, 试以告焉, 应声便许, 略无嫌吝. 遂变服, 怀布帽, 随温去与债主戏. 耽素有艺名, 债主就局, 曰: “汝故当不办作袁彦道邪?”遂共戏. 十万一掷, 直上百万数, 投马绝叫, 傍若无人, 探布帽掷对人曰: “汝竟识袁彦道不?”
简单翻译就是, 桓温小时候赌博欠了债, 被催的紧. 于是想起了袁耽的主意, 那个时候, 袁耽正在居丧, 但是听到请求就毫不犹豫地换下丧服, 戴上帽子, 和桓温一起赴局. 袁耽在这个圈子里很有名气, 债主来的时候还问, 你不会是袁耽吧? 赌完大胜后, 赌神袁耽把帽子往对面一扔: “你认识袁耽不?”
这个小小说的起承转合都很顺畅, 戏剧冲突很足, 最后甩掉帽子的那一刻是整个故事的高潮, 而且故事就戛然而止, 很有力.
2025-05-24 07:38:00
读完了几本书, 还有一本长的在读. 首先是月初时读完了郭强生的寻琴者, 没让我喜欢, 视角的转换让我有点接受不了. 我的意思是我能感受到他想表达什么, 但是我不太欣赏这种方式. 接下来是池井户润的陆王, 这本小说很日本, 和半泽直树的手法, 说不好听一点, 雷同. 不过还不算太反感, 毕竟写作时的细节挺多, 背景也都铺到位了. 最后一本是川端康成的美丽与哀愁, 描写很厉害很妖艳, 但是剧情和主人公实在让人很难接受(当然如果老先生写主人公的目的就是招恨的话, 他达到目的了).
经朋友推荐, 看完了Netflix上的Adolescence, 这是一个四集短剧, 说的是一个案件, 但是每一集的主视角都不同, 让我猜测原著小说里面是不是和教父里一样, 像列传一样通过不同人的故事拼出整个故事轮廓来. 剧本身和剧情本身都乏善可陈, 有点炫技地无实际意义地使用长镜头. 不过这个剧里的学校是真乱, 完全就是Paul Graham的黑客与画家里提到的, 一个大型的托儿所而已, 没人对任何知识的传授/接收感兴趣. 另外, 爱死机4也更新了, 看完了, 没有一集我是想重看的. 到时候第五季出来我估计还是会看, 但是不再会有期待了.
玩游戏来说, 这个月主要花时间在重玩黑神话上. 不是二周目三周目, 而单纯是从零开始, 大部分的boss都打了, 包括二郎神. 感受是自己多少还记得怎么玩, 对于难度不高的第一关火照黑云, 我每个boss都是最多两次就过了. 我很欣喜地继续推, 直到我遇到了一生之敌虎先锋才第一次三连败. 后面我发现虽然自己已经有第一次游玩的经验, 但是游戏中人物的属性如果没上去, 那么还是挺容易死的, 于是在碎玉池刷了一下, 后面就都轻松多了. 整个这次游玩过程中, 死得最多的是毒敌大王. 另外, 我在手机上捡起了饥荒, 先用Wilson后用wx-78, 过了几许寒冬, 但是后面开始有点索然无味, 就没继续了. 另外, 继续在Gran Turismo里开车, 现在又有一个买车的邀约, 一个月要攒200万, 头疼.
最近对买鞋的事情有点在意, 原因是脚上的两双鞋, 一双AJ一双New Balance都有点旧了. 回国前买了一双Under Armor的复刻Curry, 替下了New Balance那双, 但是实话说不是那么满意. 所以四月份回国时仍是很审慎地继续搜寻. 首选的仍是AJ, 但是最近市面上的AJ的鞋底防滑都让我很不满意, 感觉都是为了内场打球而设计, 不是为了日常活动. Nike的其他几双鞋外观上可以接收, 不过可惜当时没好好试穿, 比如VaporMax的鞋底设计很出彩, 还有一双React InfinityRN的某一个配色很喜欢. 但是前一双在国内没试穿, 价格一千三人民币也觉得有点肉疼, 后一双在线下店里没试穿, 不敢不清楚大小就盲目上马. 在Nike里面试穿了其他一些跑鞋, 包括天足, 都没有下手, 因为觉得性价比不是那么好. 最后, 在一个李宁专卖店里试穿了超轻22, 觉得上脚的回弹的确很不错, 而且价格也挺便宜, 于是就下手了.
回到墨尔本之后仍是对那两双没买的Nike念兹在兹, 于是找到footlocker的线下店, 试穿了以后却大失所望. VaporMax可能对于体重更大的人会有比较明显的回弹, 但是不到150体重的我, 踩上去感觉太硬.
本科时记得在南京参加过一次区人大代表投票, 年级辅导员把我们带到某一个教室, 简单宣讲之后让我们投票, 有三个选项, 其中一个是大学的党委书记, 所以我也就是快速填上相关信息, 交差了事. 这个月初却是在澳大利亚履行公民义务(而且不履行要罚款), 投票选择国家的命运.
选前, 我所在的Menzie选区似乎都是被工党放弃了, 没在这儿投放多少宣传物料, 因为这儿一直是自由党的票仓. 我自己对Dutton的言行很不满意, 所以一门心思就是要反向操作. 投票是早上八点开始, 我早上七点四十洗漱完毕, 没吃早饭就出门了. 步行两三分钟就到了家附近的一个教堂里的投票点. 我到的时候投票还没开始, 前面只有一位年长的女士在等待. 我排着队, 低头读书. 八点再抬起头的时候, 发现后面已经排了大概二十个人. 八点整, 工作人员打开门, 把我们放进去. 拿到选票后就按着计划, 将工党候选人的名字排第一, 自由党候选人的名字排最后, 中间就是看着谁顺眼就选哪个. 一番操作后, 将大得离谱的选票折叠后扔进了票箱.
选举结果当天就出来了, 所有的结果都是公开透明的, 具体到每个投票点有多少人是怎么投票的, 都可以在选举委员会官网上查到.
2025-04-29 15:22:00
这个月整个比较混乱, 没太多时间读书, 旅途中读完了夜谭十记, 没觉得特别出色的地方, 开头实在是十日谈的味道太重. 后面的故事也没让我耳目一新, 很有三言二拍的水准. 对于让子弹飞本身的那个故事盗官记, 我也没觉得好到哪儿去, 姜文改编完之后的本子倒是冲突更多一些, 交待得更清楚一些, 结局也更合理一些.
玩的游戏大多数是在手机上, 首先是玩了Supercell的新作mo.co, 完全没找到任何游戏意义, 就是和一群人一起没头没脑地rush, 拿到经验/货币也做不了什么事情. 整个游戏部分让我想起了玩暗黑4时的不适, 于是捡起尘封已久的Nitendo Switch, 开始重新玩D3. 猎魔人玩到了130级大秘境后懒得继续了, 毕竟之前通关过150. 另一个游戏是用Save & Load大法在模拟器上通关了小时候玩过的一个[雪人兄弟]的游戏.
在武汉的一个杜比影院里看了Minecraft电影, 挺无聊的一个电影,剧情人物塑造等等通通不在线, 看着影院效果可以勉强给个及格分.
这个月大部分时间是在中国旅游, 四五年没回中国了, 感觉还是挺不一样的. 很多地方变了, 但是感觉卷的程度和氛围还是没怎么变.
首先说吃喝吧, 这也是吸引我回武汉的重要原因了. 心心念念的豆皮吃了, 湖北的排骨藕汤和糍粑鱼吃了, 国内的可口青菜吃了不少. 零食来说吃了老四川的牛肉干, 有汪玉霞的绿豆糕, 麦当劳的麦辣鸡翅, 西北的烤羊排, 甚至看到了龙须酥(虽然不是熟识的品牌所以没买), 不过季节不对所以没吃到新鲜莲蓬. 后来去上海南京旅游, 吃了腌笃鲜, 也吃了徐州的羊肉汤. 吃东西而言, 如果完全不顾及食品卫生, 国内的好吃的东西实在不少, 性价比也不错.
玩乐来说, 我们在武汉去了木兰湖, 不过不值一提. 后面上海去了迪斯尼, 中华艺术宫和上海自然历史博物馆. 南京去了玄武湖附近的明城墙, 红山动物园和南大. 迪斯尼下面单独说, 中华艺术宫完全是共产主义的那种建筑风格和审美, 恕我无法接受. 上海自然历史博物馆倒是出乎意料地好, 我们和娃都看到了一些不错的东西. 里面的卖萌也挺有节制, 不过分夸耀. 不像我们在南京去的红山动物园, 完全是和小红书的宣传绑定, 都不知道若干年后没有小红书了, 这个动物园该怎么转型吸引游客. 玄武湖的城墙让我家娃以为来到了长城, 所以也算是不虚此行. 回南大看了下, 逢老同学推荐, 刷校友卡进门, 看了看北大楼, 主教学楼, 科技馆. 然后就穿过南园去了珠江路. 南园北园的主干道上满眼的红色, 三舍四舍之间的篮球场也早已作古.
接下来记一些碎碎念吧:
上海迪斯尼值得拿出来专门做一节来说, 毕竟算是此次中国之行的高光时刻.
首先在准备阶段, 除了找去过上海和香港迪斯尼的老同学答疑外, 还早早下载了它们家的app, 在各个时间段截屏了队列长度. 另外也让娃自己选了自己想要去的项目. 在经过考虑后, 我给自己买了一张入园票, 给娃和她娘买了一张优先票, 尽量cover了娃想玩的内容. 运气比较好的是, 我们在入园时过山车正在维护, 而当我们玩完了过山车附近的一个项目后, 过山车开放了, 我们赶紧赶过去, 没排什么队就都坐了一轮创战记的过山车. 后面也是优先玩娃想玩的项目和优先票覆盖过的项目. 印象比较深的是下午的一个演出, 我们在那儿站了约四十分钟, 百无聊赖. 晚上在园内卖汉堡的一个地方坐下来吃了顿饭, 虽然人民币看着比较贵, 但是除以澳币汇率后我们觉得还是可以接受. 晚饭休息好之后去迪斯尼城堡看了美轮美奂的演出, 造梦满分. 略有一点点后悔没去迪斯尼城堡里面的餐厅吃晚饭(每客740元), 毕竟享用了晚餐后能够经特殊通道来更近距离地感受晚上的灯光秀.
另外一点点感悟是, 造梦在于细节, 沉浸感也来自于细节. 相比其他主题公园里往往是木架子糊一层布, 迪斯尼的细节是很到位的, 各个能让人看到的建筑也好布景也好, 都是当艺术品在做. 所以不会有穿帮后的尴尬和让人出戏. 我们日常写代码或者写系统的时候也是应该抱有这样的心态, 仔细研讨用户可能使用产品的方式, 不管是成功路径还是失败路径, 输入输出或是屏幕提示, 都不能有穿帮和让人出戏的感觉.
2025-03-29 18:38:00
This article documents my experience installing Chimera Linux on a decade-old MacBook Air.
Why Chimera Linux? While I’ve used many Linux distributions over the years, most carry significant historical baggage. I wanted to see what a more modern distribution could achieve. Chimera Linux’s technical approach is quite appealing—it doesn’t use systemd and incorporates userland components from FreeBSD.
The initial setup went surprisingly smoothly. I downloaded the image(x86-64, plasma), flashed it to a USB drive, and booted the MacBook Air from it—all in one go, which felt almost too good to be true. Upon closer inspection, however, I discovered that the hard drive hadn’t loaded properly. Additionally, while Bluetooth worked, the wireless network card wasn’t recognized. Not a perfect start, but still acceptable—certainly smoother than my previous adventures with FreeBSD.
I began by addressing the hard drive problem. After researching the error, I found that it was related to a kernel parameter. The solution was to add intel_iommu=off
to the kernel boot parameters. Nothing too complex—just a matter of rebooting and remembering to modify the GRUB settings before each boot, otherwise the hard drive wouldn’t be recognized. The proper way to make this change permanent would be editing /etc/default/grub
, but this approach doesn’t work on a LiveCD.
Next came the more challenging wireless network card issue. The symptom was a lack of device files in /dev/net
. Using lspci
, I identified the card as a BCM4360. The default b43
and bcma
modules loaded in the LiveCD couldn’t drive this card. After finding some documentation, specifically this one, I realized I needed to compile a kernel module. I initially wanted to compile it in the LiveCD environment to minimize unknowns, but since kernel version in the apk repository is newer than the LiveCD version, I decided to install the system first and then tackle the driver issue.
Following the official documentation, I created the necessary partitions (ZFS+EFI+boot), mounted them, and executed chimera-bootstrap -l /media/root
to copy the LiveCD contents to the new partition. This step produced an error at the end—something about being unable to create hard links across devices. I suspected the script/command hadn’t handled this edge case properly, so I ignored it. When I ran apk upgrade --available
, the process was painfully slow because the network connection was going through my phone’s hotspot via Bluetooth, resulting in limited bandwidth. After upgrading several packages, I simply hit Ctrl-C to interrupt the process. I then installed GRUB and rebooted without issues, but couldn’t get into X, and the Bluetooth service wasn’t running either. This presented a challenge since I had never dealt with fixing Bluetooth from the command line without network access, and even if I got Bluetooth working, I’d still need to connect to my phone to access the internet. I took the easy way out: rebooted, booted from the LiveCD again, mounted the ZFS partition, and fixed the issue. If I recall correctly, either sddm
or sddm-dinit
wasn’t installed; once installed, everything worked normally.
Of course, I still needed to compile the network card driver. I referenced this SlackBuild and modified this script slightly to get it to compile properly(gist here).
In reality, it wasn’t that straightforward. I first needed to install clang
and gmake
, then install/update linux-stable{,-dev}
. The most frustrating part was discovering I also needed to install the wireless-regdb
package. The original script was designed to use gcc
for compilation, while Chimera Linux uses clang
. Rather than hunting for environment variables, I simply created a symlink from clang
to gcc
, which worked fine for the compilation.
After successful compilation, I had the wl.ko
kernel module file and could load it with modprobe
. Whether using modprobe -r
or adding to the blacklist, I could drive the network card with my newly compiled wl.ko
(visible in the PCI information), but /dev/net
still showed only the tun
device from my phone’s shared hotspot. As a last resort, I looked up the dmesg
error (about loading regulatory.db
) and discovered it was indeed due to a missing database. After installing the corresponding package with apk, everything worked properly.
My final thoughts:
wireless-regdb
/sddm-dinit
. On the other hand, many things require manual configuration (for instance, Chinese input methods need to be compiled from source, as they’re not available in the software repository or cports).I’ll continue to follow this distribution’s development. It shows potential, and the developer updates are quite frequent.
2025-03-29 14:16:00
这篇文章记录一下自己是如何在一台十年前的MacBook Air上折腾Chimera Linux的.
先说一下为什么, 主要是我自己用过的发行版虽然很多, 但是都有了很多很多的历史包袱. 我想看看现代一点的发行版能够做到什么程度. 从介绍来看, Chimera Linux的技术路线比较讨喜. 比如没有使用systemd, 比如使用了FreeBSD里面的userland.
具体的折腾算是一波三折. 首先比较顺利地下载镜像刷到U盘然后在这台MacBook Air上U盘启动进系统一气呵成, 让人感觉有点不现实. 不过再仔细一看, 发现硬盘没成功加载, 蓝牙虽然能用但是无线网卡却没识别. 不算太圆满的开局, 不过还能接受, 至少比我之前折腾FreeBSD要顺利得多了.
然后开始解决硬盘的问题, 拿着报错查了下, 发现是一个内核参数的问题, 需要在内核启动时加上intel_iommu=off
, 不算什么特别的, 需要重启电脑而已, 而且每次进系统之前都要记得去grub里面改, 否则硬盘就不能识别. 正确的修改方式是编辑/etc/default/grub
, 不过对于LiveCD, 这种做法是无效的.
然后就是更纠结的无线网卡的问题. 症状是/dev/net
下面没设备文件. lspci
看了下, 是BCM4360, LiveCD中默认加载的b43
和bcma
模块都没法带动这个卡. 查到一些文档, 比如这个, 于是要编译内核模块了. 本想在Live CD环境中编译, 这样unknown会少很多, 不过repository里面的内核版本和Live CD里的内核版本有区别, 于是我就打算先安装系统, 然后再去解决驱动的问题.
我按照官方文档分好了区(ZFS+EFI+boot), 挂载, 然后执行chimera-bootstrap -l /media/root
来将LiveCD中的内容复制到新分区中去. 这一步最后会有报错, 记得好像是说无法跨设备来创建硬链接. 我猜是这个脚本/命令没有处理好这种细节, 于是就忽略了. 后面开始执行apk upgrade --available
时速度很慢, 因为网络走的是手机热点通过蓝牙来传递数据, 所以带宽很小. 我升级了一群包后直接Ctrl-C了, 后面正常安装grub后重启没问题, 但是进不了X, 这个时候蓝牙服务也没打开. 这个比较麻烦, 因为之前从来没有处理过命令行下没网络修蓝牙的情况, 而且即使蓝牙修好了还需要通过蓝牙连接到手机才能上网. 于是重启, 再次祭出LiveCD后挂载zfs进去修了. 记得不错的话, 要么是sddm
没安装, 要么是sddm-dinit
没安装, 安装后就都能正常工作了.
当然当然还要继续编译网卡驱动呢. 参考了这个SlackBuild, 把这个脚本稍稍改了下(gist), 就能正常编译了.
当然现实中才没这么简单呢, 先要装clang
和gmake
, 然后要去装/更新linux-stable{,dev}
, 最坑的是还要安装wireless-regdb
这个包. 原始脚本中应该是使用gcc来编译的, 而Chimera Linux是clang. 我懒得去找环境变量, 直接将clang软链接成了gcc, 编译也没啥问题. 编译成功后可以得到wl.ko
这个内核模块文件, 用modprobe
就能正常加载, 不管是modprobe -r
还是加黑名单, 都能让这个网卡用我们刚编译的wl.ko
来启动(PCI信息里也能看到), 但是我的/dev/net
里仍是只有一个手机共享热点的tun
设备. 最后是死马当活马医似的将dmesg
的报错(加载regulatory.db
出错)查了下, 发现真是缺少数据库的缘故. apk安装对应的这个软件包后就好了.
最后加上一点小杂感:
我自己会继续跟进这个发行版, 目前来看还是有一定潜力的, 作者的更新也很勤快.
2025-03-26 08:08:00
这个月不太想写码, 所以就读了不少书. 先说三本我觉得挺普通的, 其一张爱玲的华丽缘, 读了之后愈发不喜欢张爱玲了. 我还是更欣赏作者用白描的方法写故事, 像写史一样, 可以春秋笔法, 但是我不希望作者亲自下场, 事必躬亲地评论一些细枝末节的东西. 是的, 描写很细致, 是的, 比喻挺绝, 但是我就是喜欢不起来, 就好像不会欣赏一个喜欢碎嘴的聪明伶利的小厮一样. 其二是莫言的鳄鱼, 这本我是欣赏不来, 很像没好好写的命题作文. 整个剧本看不到什么创造力, 文笔也是莫言那种土了掉渣的那种, 不对我的胃口. 其三是我们的老北京, 挺一般的. 作者没啥文化, 更多是附庸风雅, 没啥高论. 接下来是两本中规中矩的, 先读的是Cat on a hot tin roof. 去年十二月看过电影, 这个月继续读原著剧本, 发现第三幕有两个版本, 而且都和电影不一样. 电影虽然说教成分更重, 但更自然. 作者初版里Big Daddy第三幕完全消失, 按剧场版导演要求的编辑版里也只是出来露脸, 但是个性和其之前的塑造有明显的出入, 我还是更喜欢电影的版本, 人物塑造更成功, 更立得住. 后读的是Everyday Shakespeare. 语录体的集子, 比较有亲和力, 除了解释这些古话的意思, 还贴心的给出了使用的场合. 一天翻完, 记了一些笔记, 不过已经单独成文了. 最后是喜出望外的一本熊逸的春秋大义, 旁征博引得让我羡慕, 之前对中国古代史的一些疑问也被解答了. 收获不能说太多, 但是能在国内这种舆论环境下将这本偏自由派的书出版, 已经很了不起了.
书读了不少, 影视也看了不少, 首先是为了下个月回国而预热的向着宵夜的方向, 里面的广告让人有点受不了, 这种经济环境下去诱导人借钱, 总觉得有点作恶. 吃食来说, 都是苍蝇馆子, 没啥印象深刻的. 其他城市我也许不熟悉, 但是我从小在武汉长大, 不觉得生烫牛杂能够代表武汉的饮食文化. 在Netflix上看完了鱿鱼游戏2, 不如1那么有冲击力, 剧情也有不少不太合理的地方, 不过还是等3吧, 一切终将有一个尽头. 最后是被我翻译成小龙虾在唱歌的Where the Crawdads Sing, 剧情上的有些gaps, 辩护律师很抢戏, 很喜欢这个老先生的抑扬顿挫, 最后那段结案陈词写得很棒. 里面女主在凶案前夜说的”I don’t know if there is a dark side to nature, just inventive ways to endure.” 让我有点感慨, 总感觉整个故事有点中国武侠小说里的善恶因果. 大家都可以承认杀人是不对的, 但是从ways to endure的视角出发, 总会让人愿意去原谅一个以武犯禁的人物.
当然, 游戏也玩了不少. 手机上主要在玩暖雪和文明6. 前者普通难度通关, 装备和技能系统不错, 不过怪物多样性是一个很大的遗憾, 很多时候就是在割草. 可重玩性不佳. 地图的多样性也是一个问题, 场景的随机性很不足. 文明6通关了标准的王子难度. 没什么特别的感谢, 中规中矩的一个文明游戏. 通关了之后就删除了, 因为实在是太花时间了! 最后是趁打折在PS上买的Gran Turismo 7, 画质相对于Gran Turismo Sports的确有一些变化, 但是不太明显. 目前仍然在做咖啡馆的主线任务以及刷驾照的全金杯.
这个月AI继续玩了不少, 写了一个MCP服务器, 也对目前AI的可用程度有一些自己的看法. 不过遗憾的是dashed没什么时间去继续推进.
先说自己写的这个MCP服务器. 用途是能够通过Claude来创建和修改Jira tickets. 这样可以省很多时间. 除了这个之外, 我还做了一个小的功能, 就是能够通过口述来更新Jira ticket. 大概的实现原理是用OpenAI的whisper来解析语音, 然后交给Claude来分析意图, 然后解析出一个结构化的请求, 调用Jira的API来完成请求. 这个过程中我踩了一个小坑, 因为自己对MCP的定位不是特别清楚, 所以还在想既要写一个MCP client又要写一个MCP server. 后来想清楚了, 语音控制这个场景下, 我们完全不需要MCP的参与. 因为我们可以控制Claude的输出, 要求它就是输出我们请求所需要的json payload, 然后我们调用API的时候直接用Claude的输出就好了.
另外, 之前认为AI会很快改变我们的工作, 现在看来还是有点太早下结论了. 对于一些固定场景的任务, 比如同样逻辑从一种编程语言翻译到另外一种, 或是给已知代码编写单元测试, 的确现在的LLM能够做得很出色. 但是对于更开放的问题, 或者更长的代码, 或者是更少见的技术, 那么AI的帮助很有限, 甚至有时候是在帮倒忙. 我们得寄希望于技术的进步, 让LLM更优秀更全面, context上的阻碍更小, 另外得看到, LLM在提升上已经越来越小, 悲观一点说, 也许不太会有巨大的跃进.
又开始在旧电脑上折腾Linux, 这次的目标是Chimera Linux, 技术选型很讨喜, 我在一台2015年的MBA上LiveCD启动后能正常看到桌面, 声音/触摸板/蓝牙也都没问题, 不过网卡驱动得自己编译. 在这个上面已经花了两个晚上, 不过乐在其中.