中文圈程序员的碎碎念
509 subscribers
3.52K photos
21 videos
129 files
28.7K links
嘿!你也来看码农又在写啥BUG了吗
Download Telegram
20251126

今日网球课,教练说我已经到 Next Level 了,其实就是从胡乱击球到了可以相对稳定的阶段,好开心呀。

三点到的上海,今天打破习惯,订了一家没听过的酒店。尝试新鲜事物可能踩坑,也可能是惊喜。今天这家酒店完全超出期待,窗外正对黄浦江,看着落日与行船,晚上音乐会曲目需要的情绪也提前酝酿了。

到酒店坐下开始写代码,准备给 SnapVinyl 里黑胶的 Notes 增加翻译功能。八月让 ClaudeCode 写,怎么都写不对,这次 Codex 很快的就完成了任务,除了一些状态略有问题。

音乐会前在 Press 和 D 老师碰头,她说统计了一下,今年已经听了超过 100 场。

今晚的库伦奇斯没有去年帅了,西装加刚烫的头让他略显平庸,失去了往日的仙气。女高音情绪饱满,因为我在第三排最中间,一直观察她的表情,真怕她哭出来呀。柴五在预习的时候听的是小泽征尔的版本,第二章开头的圆号真是美。此刻今晚的圆号居然已经在我的记忆中消失了,实在回忆不起他的音色。拍舞台还是好喜欢黑白。

音乐会结束照例是居酒屋,今晚老板娘生日,吃上了她的生日蛋糕。付钱的时候她说“在这么重要的日子你来了,真开心”。

回酒店继续写代码。

via 61’s life
《麦田里的守望者》读后感

这是一本值得一读的好书。初看起来,男主人公满嘴脏话,抽烟喝酒,颓废,考试不及格被学校开除,是个十足的坏学生。可慢慢看下去会发现,他做事情很有原则,不愿做伪君子,讨厌虚伪,讨厌假模假式,讨厌不公平,讨厌上流社会。他与现实的世界格格不入,想逃避到森林里居住,但他爱自己的家人,在小妹妹的影响下放弃了离家出走的打算。

这本书没有引人入胜的情节,讲的是他被学校开除以后三天内发生的事情。时间线没有跳跃,是完全连贯的。书中讲了他做了什么事,遇到了什么人,故事散漫没有目的,但从中却能看出来主人公的人格与执着。我对他从一开始讨厌,到慢慢理解,再到慢慢喜欢。

作者有强大的语言能力,简单的故事讲述得很有条理,读起来不会让人生厌。他笔下的故事看似杂乱无章,实际上却是大智若愚的感觉,这种戏谑的不正经讲故事的风格有点像王小波,而且多了颓废的色彩。

看完小说我也不明白书名为什么叫作《麦田里的守望者》,书中仅有一段提到主人公想在悬崖边守护四处奔跑的孩子,但是我觉得这段描写很突兀,和前后的情节都不搭——可能是我没有读懂——不如起个俗气的书名,比如叫作「谁的青春不迷茫」反而会更贴切些吧 :)。

相关文章:

1. 无病呻吟的青春畅想曲——《挪威的森林》读后感
2. 《动物凶猛》读后感

via 静风说 (author: Hillway)
第 3 轮做完王垠计算机课程练习题后的体会

关于王垠以及课程的反思

我注意到一个现象,最近几年,王垠的知名度和影响力都在下降,逐渐淡出公众视野。这导致很多 “新一代” 的程序员可能都不知道王垠是谁。而我最近总是频繁提到王垠(默认别人知道王垠)。

王垠的这种淡出背后也许有两个原因:

王垠本人刻意删掉大量文章,主动隐藏有价值的内容
时代更替,AI 技术发展迅速,带来了很多改变

我们重点关注第二个原因。

在 AI 飞速发展的今天,短短几个月的时间,程序员的工作模式就发生了重大变化。现在的程序员,不再需要动手写代码,更不需要动手复制粘贴代码,只需要描述清楚需求,让 AI 来完成就可以。程序员需要做的,是验证功能点、审查代码、当 AI 遇到无法解决的问题时,给 AI 兜底。

这也就意味着,你不需要懂编程语言的语法,不需要知道王垠是谁,不需要知道王垠对编程语言的评价如何,不需要崇拜王垠对于编程语言设计的学术品位,依然可以很好地完成日常工作。

无论你是否愿意承认,事实上大多数日常工作都是平庸的脏活,不需要艺术级别的代码审美。“品位” 永远都是奢侈的东西,大多数人没必要在乎。

王垠是一种技术符号,代表着在 AI 出现以前,追求极致符号与抽象的最顶尖的一类人。那么在 AI 出现以后,我们的关注点,又该如何变化?

做练习题的过程

王垠的计算机课程中,练习题是重要的组成部分,每一节课都有课后练习题。我为了更好的掌握课程内容,就反复的去做这些练习题。第 3 轮做完的意思是,已经第 3 遍从头到尾做完了。

第 1 轮是在学习课程的过程中,因为每个人都至少需要完成一遍练习题,才算是可以毕业。对应时间点 5月21日~6月24日。
第 2 轮是在课程结束后大概一个月的时间内完成的,对应时间点 6月25日~7月20日。
第 3 轮比较慢一点,因为按照一天一道题的计划,想要在放缓练习频率的同时,能够有时间好好消化这些课程的内容。经过整 4 个月的时间,从 7月24日~11月28日,终于完成了。

在第 3 轮做练习题的过程中,大致是按照一天一道题的节奏,除了偶尔比较忙会跳票一两天,以及最后跳过了一点点 Rust 语法的练习题(实在是不太喜欢研究 Rust 的指针和内存),基本上没有大的偏差。

那么这一轮做练习题的过程中,对于练习题本身的改进有:

修复一些 typo、整理一些代码模板、补充少量的用于测试边界条件的测试
第 5 课关于 BST 的练习题,很多因为视频里讲过了,所以练习题直接给出答案作为复习。我改进了这个部分,让第 5 课的练习中,关于 table 和 BST 的题目,都类似其他练习题一样,可以按部就班、循序渐进地练习
还是第 5 课的练习题,我自己扩展出了自动平衡二叉树的题目。这个题目本是第 5 课的隐藏练习题,但是我当时上课的时候,为了能尽快学完,就没有做这个隐藏练习,包括正版的自动平衡二叉树的题目,也是没有拿到的。我根据课上提供的基础内容,自己补充出了这部分的练习题
第 6 课,类似的,很多语义的实现因为视频里讲过,所以练习题是直接给出的。而我改进后的练习题,可以在脱离视频,也就是不需要再重复看视频的情况下,仅根据逐步的练习题,就回忆起全部内容

大概就是一些修修补补、文本整理类型的改进,核心知识没有丝毫变化。毕竟确实题目本身就已经很精简了。

做练习题后的体会

对于王垠的计算机课程,倒是也不用非拔高到 “改变人生的神课” 这种高度,但是描述为包含计算机理论核心知识、不带有杂质、循序渐进的高质量课程,肯定没有问题。一门课程就是一所大学,也毫不夸张。

做练习题的过程中,印象深的点有两个:

1. 第 4 课隐藏练习,是实现一个简单的 parser,可以执行计算器的基本运算。这一次写出来的代码,和上一次,不太一样。而且稍微有点看不懂之前的代码了,感觉现在写出来的思路才是对的。因为 parser 这种东西的写法,可能本身就没那么严谨,所以这里出现分歧也没在意,直接按照新写出来的版本为准。核心思路肯定是没错的。
2. 第 10 课的隐藏练习,涉及到用 Rust 实现解释器中的多级作用域的管理,让解释器能正确处理嵌套的闭包环境。与前 2 轮做练习题的时候不太一样,前两次遇到了同样的问题,然后按照同样的思路去解决问题。但是这一次,因为知道正确的答案,所以直接跳过了之前踩的坑,一开始就在用正确的方式实现,所以没有花费那么多心思。

总体来说,第 3 轮完成练习题肯定是巩固了对于课程知识的掌握。至于后续的计划,还在考虑中。

via smallyu的博客
2025 Bishop Ranch Turkey Trot 5K 竞赛

感恩节火鸡主题的 5K 跑步竞赛

via Lei Mao's Log Book
血谜拼图

报复暴力拆迁的连环杀人犯罪悬疑韩剧

via Lei Mao's Log Book
我关注的项目这周更新了什么-20251128

简介

每周五更新,所有的更新也会发送到我的频道

https://t.me/bboyapp

规则

pre release的不记录
只记录重要的更新
上一版本版本的bugfix不记录,比如某一个项目最新版本是7.0.0 上一个版本6.0.0发布了一个bugfix 6.0.1 那么不会记录
比如lens发布了一个新版本,那么openlens也会发布一个新版本,此时只会记录lens发布的信息,不会记录openlens发布的信息

via Bboysoul's Blog
欧陆风云5的游玩笔记

最近一个月共玩了 270 小时的欧陆风云5 ,这两天打算停下来。最近在游戏后期打大战役时,交互已经卡得不行。我已经是 i9-14900K 的 CPU ,估计升级硬件已经无法解决这个问题,只能等版本更新优化了。

ps. 其实只要把游戏暂停下来立刻就不卡了。虽然我直到这个游戏需要的计算量非常大,但是卡交互操作肯定是实现的不对。因为这并不是因为渲染负荷造成的卡顿,可以让游戏时间流逝更慢一些,也不应该让鼠标点击后的界面弹出时间变长。

在暂置游戏前,我先把一些关于游戏设计上的理解先记录下来。也是对上一篇的补充

在最初几十小时的游戏时间里,我一直想确认游戏经济系统的基础逻辑。和很多类似策略游戏不同,欧陆风云5 在游戏一开始,展现给玩家的是一个发展过(或者说是设定出来)的经济系统版图。玩家更需要了解的是他选择扮演的国家在当下到底面临什么问题,该怎样解决。这不只是经济,也包括政治、文化和军事。而很多游戏则是设定好规则,让玩家从零开始建设,找到合适的发展路径。

大多数情况下,EU5 玩家一开始考虑的并不是从头发展,所以在游戏新手期也没有强烈的理解游戏底层设计细节的动机。不过游戏也有开荒玩法,在游戏中后期势必会在远方殖民、开拓新大陆;甚至游戏还设计了让玩家直接转换视角以新殖民地为核心来继续游戏。但即使的重新殖民,在四周鸟无人烟的地方开荒,和在已有部分发展的区域附近拓展也完全不同。

我十分好奇这样一个复杂的经济系统是怎样启动起来的,所以仔细做了一点归纳笔记。不一定全对,但很多信息在游戏内的说明和目前的官方 wiki 都不完整,只能自己探索。

----------------------

游戏中的一切来源于“原产”,官方称为 ROG ,比较类似异星工厂里的矿石。上层的一切都是从原产直接或间接获得。版图上的任何一个最小单位的地块,只要上面有人口,就会不断生产出唯一品种的原材料进入这个世界。它和国家控制力、市场接入度都无关系。比原材料更高级的产品都是由原产直接或间接转换而来。

货币本身在世界中不以资源形式存在,货币本身也没有价值。货币的存在在于推动包括原产在内的原材料和产品等在世界中的流动。所以,世界中即使不存在经济活动、没有货币,亦或是货币急剧膨胀,这些因为国家破产而债务消失等让货币总值急剧变化的行为也不会直接影响这个世界中的物资变化。即没有很多游戏中直接用钱凭空兑换成物资的途径。

换句话说,如果整个世界缺铁,那么只能通过生产手段慢慢的产出,再多的钱也无法变出铁来。但分配更多的人力去生产、更高的科技水平可以获得铁产量的提升、使用更高效的配方、各种提升生产率的增益等等都可以加快铁的产出速度。

从一个世界的局部看(这是一般玩家的视野),获得原材料的方式有三种:

1. 养活更多的劳工或奴隶开发对应原产。
2. 在合适的地理位置上用劳动或奴隶生产。
3. 从附近的市场进口。

第一种方式,玩家拥有对应原产地,然后在地皮上增加人口。但新增人口是农民,还需要从农民升级成劳工。国家 buf 中,默认只有原住民满意度对产量有轻微的增益。

第二种方式,玩家有更大的自主性。以铁为例,只要是湿地地形或者地皮邻接湖泊,就可以主动产铁。这种生产除同样需要劳工外,还有原料开销:把炭转换为铁。这种生产方式直接被市场接入率打折,即离市场越远的地方单位人口的生产效率越低,但同时有更多增加生产率的增益途径:最基本的就有当地劳工识字率和市民满意度。和虽然和第一种方式一样需要劳工,但游戏似乎会先满足原产需求的劳工,多出部分才进行建筑生产。所以在劳工不足时,若需进行建筑生产,需要主动减少原产等级。因为生产建筑可以由玩家主动关闭,但原产似乎不行。

第三种方式,通常需要在本地市场拥有一定的市场容量。在不考虑成本时,甚至可以亏本进货。对开荒来说,进口原料比进口成品的优势就在于占用更少的贸易容量。

为什么上面以铁举例,因为铁是开荒时最重要的资源。虽然木头和石头也很重要,但游戏把木材、粘土、沙、石头设定为一般物资,所有地块都有一个很低的默认产能,从市场角度看,根据市场规模,每个市场总有一定量的供给。但铁不属于这种物资。

建造建筑需要的基本材料是砖头,砖头可以通过基础建筑,从粘土或石头转换。

开发原产需要的基本材料是木头或工具。大多数基础建筑的生产配方里都需要工具。而工具在非城市生产建筑中,只有乡村市场可以把铁转换为工具。所以、如果开荒时的市场中缺铁,就只能通过进口。进口制造工具的铁比进口工具更能利用上贸易容量(铁和工具的单位贸易容量相同,但铁到工具以 4:5 转换)。

铁矿在版图上相对其它资源更少,所以一般开荒需更关注市场覆盖下有无湿地地形或有无湖泊,同时需要用充足的木材供应,可以把木材转换为炭再转换为铁。

一旦单一地块上的人口超过 5000 ,就可以升级为城镇,这种生产就有更多选择。以工具制造来说,城镇里就多出了用石头或铜转换为工具的配方。尤其是石制工具的途径,虽然效率很低,通常利润也很低,但贵在石头有保底产出。城镇的升级需要砖头和玻璃,玻璃可通过沙子转换,而沙子有保底产出或通过工具加木材转换。

开荒期间,解决了木头、砖头、玻璃、工具这四种基本货物(前三种是各种基础建筑建设需求,最后是大部分生产转换配方的必须)后,就要考虑提高产能的问题,这里的核心之一是纸。因为劳工识字率影响着生产率。纸是印书的原料、书是图书馆的维持品,而图书馆以及更多提高识字率相关的建筑都需要书。

造纸术需要纤维作物或皮革或布匹。纤维作物的基本生产方法是在对应农场通过牲畜木材工具制造;而牲畜则在耕种村落通过工具加粘土转换;皮革则可以在森林村落通过沙加焦油和野味转换,其中焦油在一般木材产区都可以通过木材转换得到。

另一个重要的资源是人口。它在游戏中和钱一样重要、甚至更重要。因为一切的生产行为都需要人。对开荒而言,升级到城市对效率影响最大,这里的硬性要求就是 5000 基础人口。除了主动殖民,就是本地土著转换、周边迁移(集中)以及自然生长率。这些都可以通过内阁行为略微加速,同样关键是修定居点(同时加移民吸引度和自然生长率)。定居点除了 250 农民外的维持成本是石头、木头、羊毛、野味。前两个一定有保底产出,后两个不是必须,缺少只会让效率打折,但供应充足可以发挥全部性能。定居点和乡村市场都占用农民,在最初阶段,我感觉乡村市场更重要一些,毕竟可以制造工具,还能提供宝贵的贸易容量。

不同阶层人口除了产生固定需求(吃掉本地市场的部分产出)外,更基本的需求是食物。EU5 中的食物系统设计,我觉得也是很巧妙的。

食物并不是货物的一种,而是和钱一样,表示为一个单一值。最主要的食物来源是生产带食物属性的货物(被称为食物原料)的副产品。属于食物原料的货物,被设定了不同的食物倍率,这就让有些食物原料产生食物的效率更高。不工作的劳工默认会以一个较低的产能生产食物,所以不必担心多出来的劳动力被浪费。另外,农民在森林村落里,虽然产品皮革并非食物原料,但生产行为本身被设定了食物产能。另外,农村相对城市有额外的食物产能的乘数增益。

食物的仓储按省份为单位计算,省份归属的若干地块共享一个食物仓库。在每个省份会优先填满仓亏,多出的部分卖给了所属市场,这里是不计市场接入度的。而一旦仓库有空间,就会从所属市场购买。战争是影响它的一个变数。因为军队也会从这个仓库中获取食物,围攻会阻止市场上的食物交易。

食物在本地市场上的交易行为会影响到本地食物价格,购买食物的开销和销售食物的收入是分开计算的,全部通过国库完成。市场间并不能单独交易食物,但通过对有食物原料属性的商品的交易,会产生附带的食物流通(但并不会产生额外的货币流动)。我觉得理论上会出现市场仓库中的食物储量为 0 ,但依然出口食物原料的情况,但实际玩的时候并没有发现,所以不清楚游戏怎样处理。但我猜测,食物流通是在单独层面计算的。既然超出市场食物容量的食物似乎就消失了,那么也可以接受万一食物储量为 0 却继续出口的情况,把储量设为 0 即可。

----------------------

最后,写写我对税收的看法。

简单说,游戏里的经济活动产生了税基。税基中按王室影响力直接把钱进入国库,另外的钱按阶层影响力分到了各阶层。但玩家可以对阶层分得的钱征税,让这些钱进入国库。

看起来,在不造成阶层不满的前提下,税率越高,国库收入就越高。但实际我玩的感觉是,其实税基才是整个国家的收入,国库仅仅是玩家可以主动调配的部分。阶层保留更多的收入,也会投入到国家发展中去,只不过有时不是玩家想要的方向,甚至是负方向。例如当玩家想削弱某个阶层的影响力时,阶层把钱投入都修建扩大本阶层影响力的建筑上。但总的来说,如果国库钱够用,更低的税收更好。因为税基相同时,税收影响的是分配。低税收必定增加阶层满意度,带来的正面增益是额外的。正所谓藏富于民。

而影响税基最重要的是地区控制度。当然地区控制度不仅仅影响税基,还影响了更多建筑的效率。从这个意义上来说,地方分权比中央集权更有利于经济发展。分封属国,尤其是朝贡国,比大一统国家会获得更好的经济局面。

但权力分配在游戏中也相当重要,因为它直接影响调配价值观的能力。价值观在一盘游戏进程中必须配合时代发展而演变才能更好的发展经济。而集权以及王室影响力是权利分配能力的来源。

所以说,最终玩整个游戏的体验还是在和面,只是多出了一份历史感。有了真实历史这种后验知识,才更为有趣。

via 云风的 BLOG
欧陆风云5的游玩笔记

最近一个月共玩了 270 小时的欧陆风云5 ,这两天打算停下来。最近在游戏后期打大战役时,交互已经卡得不行。我已经是 i9-14900K 的 CPU ,估计升级硬件已经无法解决这个问题,只能等版本更新优化了。

ps. 其实只要把游戏暂停下来立刻就不卡了。虽然我直到这个游戏需要的计算量非常大,但是卡交互操作肯定是实现的不对。因为这并不是因为渲染负荷造成的卡顿,可以让游戏时间流逝更慢一些,也不应该让鼠标点击后的界面弹出时间变长。

在暂置游戏前,我先把一些关于游戏设计上的理解先记录下来。也是对上一篇的补充

在最初几十小时的游戏时间里,我一直想确认游戏经济系统的基础逻辑。和很多类似策略游戏不同,欧陆风云5 在游戏一开始,展现给玩家的是一个发展过(或者说是设定出来)的经济系统版图。玩家更需要了解的是他选择扮演的国家在当下到底面临什么问题,该怎样解决。这不只是经济,也包括政治、文化和军事。而很多游戏则是设定好规则,让玩家从零开始建设,找到合适的发展路径。

大多数情况下,EU5 玩家一开始考虑的并不是从头发展,所以在游戏新手期也没有强烈的理解游戏底层设计细节的动机。不过游戏也有开荒玩法,在游戏中后期势必会在远方殖民、开拓新大陆;甚至游戏还设计了让玩家直接转换视角以新殖民地为核心来继续游戏。但即使的重新殖民,在四周鸟无人烟的地方开荒,和在已有部分发展的区域附近拓展也完全不同。

我十分好奇这样一个复杂的经济系统是怎样启动起来的,所以仔细做了一点归纳笔记。不一定全对,但很多信息在游戏内的说明和目前的官方 wiki 都不完整,只能自己探索。

----------------------

游戏中的一切来源于“原产”,官方称为 ROG ,比较类似异星工厂里的矿石。上层的一切都是从原产直接或间接获得。版图上的任何一个最小单位的地块,只要上面有人口,就会不断生产出唯一品种的原材料进入这个世界。它和国家控制力、市场接入度都无关系。比原材料更高级的产品都是由原产直接或间接转换而来。

货币本身在世界中不以资源形式存在,货币本身也没有价值。货币的存在在于推动包括原产在内的原材料和产品等在世界中的流动。所以,世界中即使不存在经济活动、没有货币,亦或是货币急剧膨胀,这些因为国家破产而债务消失等让货币总值急剧变化的行为也不会直接影响这个世界中的物资变化。即没有很多游戏中直接用钱凭空兑换成物资的途径。

换句话说,如果整个世界缺铁,那么只能通过生产手段慢慢的产出,再多的钱也无法变出铁来。但分配更多的人力去生产、更高的科技水平可以获得铁产量的提升、使用更高效的配方、各种提升生产率的增益等等都可以加快铁的产出速度。

从一个世界的局部看(这是一般玩家的视野),获得原材料的方式有三种:

1. 养活更多的劳工或奴隶开发对应原产。
2. 在合适的地理位置上用劳动或奴隶生产。
3. 从附近的市场进口。

第一种方式,玩家拥有对应原产地,然后在地皮上增加人口。但新增人口是农民,还需要从农民升级成劳工。国家 buf 中,默认只有原住民满意度对产量有轻微的增益。

第二种方式,玩家有更大的自主性。以铁为例,只要是湿地地形或者地皮邻接湖泊,就可以主动产铁。这种生产除同样需要劳工外,还有原料开销:把炭转换为铁。这种生产方式直接被市场接入率打折,即离市场越远的地方单位人口的生产效率越低,但同时有更多增加生产率的增益途径:最基本的就有当地劳工识字率和市民满意度。和虽然和第一种方式一样需要劳工,但游戏似乎会先满足原产需求的劳工,多出部分才进行建筑生产。所以在劳工不足时,若需进行建筑生产,需要主动减少原产等级。因为生产建筑可以由玩家主动关闭,但原产似乎不行。

第三种方式,通常需要在本地市场拥有一定的市场容量。在不考虑成本时,甚至可以亏本进货。对开荒来说,进口原料比进口成品的优势就在于占用更少的贸易容量。

为什么上面以铁举例,因为铁是开荒时最重要的资源。虽然木头和石头也很重要,但游戏把木材、粘土、沙、石头设定为一般物资,所有地块都有一个很低的默认产能,从市场角度看,根据市场规模,每个市场总有一定量的供给。但铁不属于这种物资。

建造建筑需要的基本材料是砖头,砖头可以通过基础建筑,从粘土或石头转换。

开发原产需要的基本材料是木头或工具。大多数基础建筑的生产配方里都需要工具。而工具在非城市生产建筑中,只有乡村市场可以把铁转换为工具。所以、如果开荒时的市场中缺铁,就只能通过进口。进口制造工具的铁比进口工具更能利用上贸易容量(铁和工具的单位贸易容量相同,但铁到工具以 4:5 转换)。

铁矿在版图上相对其它资源更少,所以一般开荒需更关注市场覆盖下有无湿地地形或有无湖泊,同时需要用充足的木材供应,可以把木材转换为炭再转换为铁。

一旦单一地块上的人口超过 5000 ,就可以升级为城镇,这种生产就有更多选择。以工具制造来说,城镇里就多出了用石头或铜转换为工具的配方。尤其是石制工具的途径,虽然效率很低,通常利润也很低,但贵在石头有保底产出。城镇的升级需要砖头和玻璃,玻璃可通过沙子转换,而沙子有保底产出或通过工具加木材转换。

开荒期间,解决了木头、砖头、玻璃、工具这四种基本货物(前三种是各种基础建筑建设需求,最后是大部分生产转换配方的必须)后,就要考虑提高产能的问题,这里的核心之一是纸。因为劳工识字率影响着生产率。纸是印书的原料、书是图书馆的维持品,而图书馆以及更多提高识字率相关的建筑都需要书。

造纸术需要纤维作物或皮革或布匹。纤维作物的基本生产方法是在对应农场通过牲畜木材工具制造;而牲畜则在耕种村落通过工具加粘土转换;皮革则可以在森林村落通过沙加焦油和野味转换,其中焦油在一般木材产区都可以通过木材转换得到。

另一个重要的资源是人口。它在游戏中和钱一样重要、甚至更重要。因为一切的生产行为都需要人。对开荒而言,升级到城市对效率影响最大,这里的硬性要求就是 5000 基础人口。除了主动殖民,就是本地土著转换、周边迁移(集中)以及自然生长率。这些都可以通过内阁行为略微加速,同样关键是修定居点(同时加移民吸引度和自然生长率)。定居点除了 250 农民外的维持成本是石头、木头、羊毛、野味。前两个一定有保底产出,后两个不是必须,缺少只会让效率打折,但供应充足可以发挥全部性能。定居点和乡村市场都占用农民,在最初阶段,我感觉乡村市场更重要一些,毕竟可以制造工具,还能提供宝贵的贸易容量。

不同阶层人口除了产生固定需求(吃掉本地市场的部分产出)外,更基本的需求是食物。EU5 中的食物系统设计,我觉得也是很巧妙的。

食物并不是货物的一种,而是和钱一样,表示为一个单一值。最主要的食物来源是生产带食物属性的货物(被称为食物原料)的副产品。属于食物原料的货物,被设定了不同的食物倍率,这就让有些食物原料产生食物的效率更高。不工作的劳工默认会以一个较低的产能生产食物,所以不必担心多出来的劳动力被浪费。另外,农民在森林村落里,虽然产品皮革并非食物原料,但生产行为本身被设定了食物产能。另外,农村相对城市有额外的食物产能的乘数增益。

食物的仓储按省份为单位计算,省份归属的若干地块共享一个食物仓库。在每个省份会优先填满仓亏,多出的部分卖给了所属市场,这里是不计市场接入度的。而一旦仓库有空间,就会从所属市场购买。战争是影响它的一个变数。因为军队也会从这个仓库中获取食物,围攻会阻止市场上的食物交易。

食物在本地市场上的交易行为会影响到本地食物价格,购买食物的开销和销售食物的收入是分开计算的,全部通过国库完成。市场间并不能单独交易食物,但通过对有食物原料属性的商品的交易,会产生附带的食物流通(但并不会产生额外的货币流动)。我觉得理论上会出现市场仓库中的食物储量为 0 ,但依然出口食物原料的情况,但实际玩的时候并没有发现,所以不清楚游戏怎样处理。但我猜测,食物流通是在单独层面计算的。既然超出市场食物容量的食物似乎就消失了,那么也可以接受万一食物储量为 0 却继续出口的情况,把储量设为 0 即可。

----------------------

最后,写写我对税收的看法。

简单说,游戏里的经济活动产生了税基。税基中按王室影响力直接把钱进入国库,另外的钱按阶层影响力分到了各阶层。但玩家可以对阶层分得的钱征税,让这些钱进入国库。

看起来,在不造成阶层不满的前提下,税率越高,国库收入就越高。但实际我玩的感觉是,其实税基才是整个国家的收入,国库仅仅是玩家可以主动调配的部分。阶层保留更多的收入,也会投入到国家发展中去,只不过有时不是玩家想要的方向,甚至是负方向。例如当玩家想削弱某个阶层的影响力时,阶层把钱投入都修建扩大本阶层影响力的建筑上。但总的来说,如果国库钱够用,更低的税收更好。因为税基相同时,税收影响的是分配。低税收必定增加阶层满意度,带来的正面增益是额外的。正所谓藏富于民。

而影响税基最重要的是地区控制度。当然地区控制度不仅仅影响税基,还影响了更多建筑的效率。从这个意义上来说,地方分权比中央集权更有利于经济发展。分封属国,尤其是朝贡国,比大一统国家会获得更好的经济局面。

但权力分配在游戏中也相当重要,因为它直接影响调配价值观的能力。价值观在一盘游戏进程中必须配合时代发展而演变才能更好的发展经济。而集权以及王室影响力是权利分配能力的来源。

所以说,最终玩整个游戏的体验还是在和面,只是多出了一份历史感。有了真实历史这种后验知识,才更为有趣。

via 云风的 BLOG
Free for Dev Updates on Nov 26, 2025

Generative AI

Arize AX - AI engineering platform that helps AI eng/PMs, evaluate, and observe AI applications and agents with built-in Alyx agent. Free product inlcudes 25k spans and ingestion volume of 1gb per month.

Phoenix (7.8k) - Open source platform for tracing, model evaluators, experiments for AI agents from the team at Arize AI. All features open source under elastic License 2.0 (ELv2).

via Track Free for Dev Updates Daily
20251127

起床吃早餐,发现新荣记就在酒店里面。这次住宿体验挺好,准备把它作为我以后在东艺听音乐会的首选,和老旧的洲际和丽晶说拜拜啦。这里就推荐一下吧,陆家嘴禧玥酒店,当然这次给我升了三级,下次不知有没有这样的好运。

中午约了微信经常讨论小组件技术的工程师吃饭,吃完就一起在星巴克聊天写代码。他给我展示了自己最近在做的项目,我问了他很多问题,学到了不少小技巧。话语间能感受到这是一个理想主义者。没想到小组件都能聊一下午。

音乐会前,L 大哥约我和 W 阿姨一起在东艺楼下的 Press 晚餐。刚认识的时候我给他微信备注是 150 场,这个数字当时让我震惊。而今天,我就要把它改为 200,现在我对他充满好奇,就像 Youtube 有博主经常随机采访法拉利车主,问他们从事什么职业一样,我也特别想问问他,是什么样的职业,可以让他今年在全球听上二百场音乐会。W 阿姨上次是 70,还有和她一起的伙伴 H 阿姨今年已经超过 100。

H 阿姨是老上海,已经听了三十年古典音乐,只要在上海的演出,除非出差,她基本都听。最好笑的是,她说她看着门口的黄牛从青年慢慢变成了中年人,真是看着一个人成长呀。听她娓娓道来每个自己喜欢的指挥,一边说还一边模仿他们独特的指挥动作。能感受到真的是热爱。我真的是特别擅长交比我年纪大很多很多的朋友,和他们聊天我也挺开心的。

今晚的无词指环很精彩,演出九点就结束了。刘师傅已经在门口等我,这个点出发到家还早呢。

via 61’s life
How to imporve english

via Informal's blog
如何降级 cursor-agent /cursor-cli

背景

遇到了新版 cursor-agent(2025.11.06-8fe8a63) 的奇怪 bug:光标总是自动滑到最后一行,导致输入混乱,而且长任务还会卡住。论坛已有反馈:https://forum.cursor.com/t/cursor-cli-input-field-throws-cursor-at-end-of-line-at-every-character-and-freeze-on-long-running-script-task/142385

光标总是自动滑到最后一行这个不能忍,为了恢复可用,只能先降级。折腾了很久,总结出了几条可行路径,分享给同样被坑的老铁们。

0. 官方安装脚本到底干了什么?

日常安装命令是:

curl https://cursor.com/install -fsS | bash

把脚本拉下来可以看到,里面写死了一个版本号,例如:

TEMP_EXTRACT_DIR="$HOME/.local/share/cursor-agent/versions/.tmp-2025.10.28-0a91dc2-$(date +%s)"
DOWNLOAD_URL="https://downloads.cursor.com/lab/2025.10.28-0a91dc2/${OS}/${ARCH}/agent-cli-package.tar.gz"
FINAL_DIR="$HOME/.local/share/cursor-agent/versions/2025.10.28-0a91dc2"
ln -s ~/.local/share/cursor-agent/versions/2025.10.28-0a91dc2/cursor-agent ~/.local/bin/cursor-agent

核心信息:

二进制下载地址格式:https://downloads.cursor.com/lab/<版本号>/&LTOS>/&LTARCH>/agent-cli-package.tar.gz
安装后存放目录:~/.local/share/cursor-agent/versions/<版本号>/
~/.local/bin/cursor-agent 只是指向该版本的 symlink

降级的本质就是:换用旧版本号、重新解压,并把 symlink 指向旧版本。

1️⃣ 方案一:本地已有旧版本时最简单

如果之前装过旧版,它很可能还在本地:

ls ~/.local/share/cursor-agent/versions

若能看到类似:

2025.08.15-dbc8d73
2025.09.18-7ae6800
2025.10.20-f1b214f
2025.10.22-f894c20
2025.10.28-0a91dc2
2025.11.06-8fe8a63

直接把 symlink 指回旧版本即可:

rm ~/.local/bin/cursor-agent
ln -s ~/.local/share/cursor-agent/versions/2025.10.28-0a91dc2/cursor-agent ~/.local/bin/cursor-agent
cursor-agent --version

这是最干净、最不折腾的方式。

2️⃣ 方案二:手工下载旧版本并“仿造安装”

2.1 一些已知可用的旧版本号

社区帖子里还能找到不少历史版本,例如:

2025.10.20-f1b214f
2025.10.22-f894c20
2025.10.28-0a91dc2

下载 URL 模板:

https://downloads.cursor.com/lab/<版本号>/&LTOS>/&LTARCH>/agent-cli-package.tar.gz

&LTOS>linuxdarwin&LTARCH>x64arm64。例如下载 2025.09.18-7ae6800 的 macOS ARM64 包:

curl -fSL "https://downloads.cursor.com/lab/2025.10.28-0a91dc2/darwin/arm64/agent-cli-package.tar.gz" -o /tmp/cursor-agent.tar.gz

提醒:部分很旧或特殊 hash 的版本可能已被下架,可能直接 403 / AccessDenied。


2.2 手动“仿造安装流程”

下载成功后,可以用下列精简版安装脚本(支持自定义版本号):

VER="2025.10.28-0a91dc2"
OS="darwin" # 或 linux
ARCH="arm64" # 或 x64

mkdir -p "$HOME/.local/share/cursor-agent/versions"
TEMP_EXTRACT_DIR="$HOME/.local/share/cursor-agent/versions/.tmp-$VER-$(date +%s)"

mkdir -p "$TEMP_EXTRACT_DIR"
curl -fSL "https://downloads.cursor.com/lab/$VER/$OS/$ARCH/agent-cli-package.tar.gz" \
| tar --strip-components=1 -xzf - -C "$TEMP_EXTRACT_DIR"

FINAL_DIR="$HOME/.local/share/cursor-agent/versions/$VER"
rm -rf "$FINAL_DIR"
mv "$TEMP_EXTRACT_DIR" "$FINAL_DIR"

mkdir -p "$HOME/.local/bin"
rm -f "$HOME/.local/bin/cursor-agent"
ln -s "$FINAL_DIR/cursor-agent" "$HOME/.local/bin/cursor-agent"

cursor-agent --version

这基本就是官方脚本的精简可配版。

3️⃣ 方案三:保存官方脚本到本地,改版本号再执行

如果不想手写命令,可以把官方脚本下载到本地、替换版本号后执行:

curl https://cursor.com/install -fsS -o cursor-install.sh

把脚本里所有的 2025.11.06-8fe8a63 改成想降级到的版本号,例如 2025.10.28-0a91dc2,然后:

chmod +x cursor-install.sh
./cursor-install.sh

脚本会自动完成 OS/ARCH 检测与 PATH 提示,但若该版本的 tar.gz 被官方下架,依旧会下载失败。更换版本时也需要重新编辑脚本。

自动更新如何避免?

降级后,cursor-agent 仍可能后台自动下载新版,创建新的 versions/<新版本>/ 目录并重写 ~/.local/bin/cursor-agent。可以通过额外 alias 固定旧版本,例如:

alias cu2="$HOME/.local/share/cursor-agent/versions/2025.10.28-0a91dc2/cursor-agent --force"
echo "alias cu2=\"$HOME/.local/share/cursor-agent/versions/2025.10.28-0a91dc2/cursor-agent --force\"" >> ~/.zshrc
source ~/.zshrc

cu2 --version

cu 继续跟随官方的自动更新(或你手动更新的 symlink)
cu2 永远指向指定旧版本,互不冲突

这样即使自动更新覆盖了默认 symlink,也可以用 cu2 启动稳定的旧版继续干活。

后续

这个 bug 后续有很多人在论坛了讨论,过了几周官方才确认,又过了几个版本,在11月底的版本(2025.11.25-e276529),终于修复了。

via 明明如月成长笔记 (author: lmm333)