2025-12-30 14:03:41
本年度读书36本,比去年少了17本,倒是跟前年持平。
读的少主要还是时间原因。上半年臭宝冲刺中考,周末的补课不由我来陪,而是改成她妈直接开车接送,美其名曰节省时间。下半年臭宝高中入学后,作息时间大幅度调整,而且每天晚上要拿出近一个小时时间散步。阅读时间就这样大幅度缩水了。
另一个是选书的原因。电子书在《古船》身上卡壳了,啃不动。这事说来挺奇怪的 —— 实体书日拱一卒,哪怕是几十页十几页,都能感受到进度带来的正向激励;而电子书往往陷入点开–切走的死循环。
《世说新语》直接读古文,有大量生词和人名要查,进度也慢。
以及《白鹿原》,读完一遍觉得劲头太大,翻回去趁热又来了一遍。
实体书15部,没达成20本的预期,倒也还好,毕竟有《两晋悲歌》这样一本顶好几本的大部头存在。
今年读过最好的作品是《世说新语》。主要胜在文体。精炼的古文小段子,准确,少废话,稍有余味,堪称三上极品。
另外《金锁记》、《白鹿原》、《妻妾成群》也很好。也都是声名赫赫的名家名作,也没必要过多褒扬。
今年读过最差的书是《大连南部海域底栖生物图谱》。本来满心欢喜地买来打算去市场指点江山一番。没想到图片又小又模糊,还全都是泡在福尔马林里的,完全不符合对于“图谱”二字的心理预期。文字部分也千篇一律,分部习性什么的写了还不如不写,完全对不起198元的售价!
另外一本《居家风水大全》的凑单实体书,是一坨缝合怪,同样买了后悔。
一本名为《罪案现场:你所不知道的刑侦》的电子书也挺差的,干巴巴的缺少新鲜感。按分类搜电子书容易踩坑。
今年的最后一本《这个世界,没那么简单》也是非常的恶心,打着高维思维的旗号胡扯洗脑。如果把生拉硬扯叫做高维思维的话,那我宁可一路低级到底。
《翦商》、《古船》、《食南之徒》、《江湖异闻录》、《长尾理论》、《海边的卡夫卡》、《少数派的感受》、《喧哗的大多数》、《猫城记》、《狂飙》、《五号屠场》、《游戏的人》均未达到预期。这种蔓延的失望情绪某种程度也影响了读书的动力。
《伤风败俗文化史》是唯一超出预期的书。作者花样作死的精神令人钦佩。
今年读的最长的作品是渤海小吏的《两晋悲歌》,感觉写的有点虎头蛇尾,西晋贾南风八王之乱还好,但到了东晋之后就失去了节奏。不知是水平问题还是东晋十六国本身就乱导致的。有机会再观察他一次吧。
今年读的最短的作品是《喧哗的大多数》。书中的内容完全不像封面那么透彻具体,有用,不多。
明年的目标仍旧是实体最低20本、最高40本。并且要攻克茅、曹!谨记!
下面是书目和个人简评:
女作者,小确丧风格,文风比较对胃口。
环境和氛围感很棒,情节也不错,只是人物读多了略有雷同。
喜欢中间的两篇《没有星星的岛屿》和《送你一颗陨石》。作者以女性的角度对女性消费主义进行了批判,当然男性也一样。
最不喜欢的反倒是同名篇目《去屠宰场谈恋爱好吗》,有些跳脱。
非常普通的科普读物,把不熟悉的元素符号过一遍,也算有收获。
优点是对初高中化学接触范围外的元素有个概要的了解,像稀土啊,镧系之类。再有是每个元素名都写出了来历,纪念科学家或是发明地或是元素特性或是神话传说,确实挺有意思。
缺点是过于日本化了。比如焰色反应的那套口诀,变成中文后一点儿谐音都没有,想必翻译也很尴尬吧。
从101号开始的人工合成元素,介绍只有一行:XX是人工合成的元素。唯一的例外是113号“鿭”,详细介绍了发现的过程和认证的艰辛,嗯,这玩意儿是日本人搞出来的,谁说外国不重视爱国主义教育、不夹带私货的?
总之不值49块8。
作者基本上写了两件事:商朝血腥的人殉和人祭风俗,和周朝的创立者与这种风俗的斗争。
说故事和脑补的本事不错,这书平易近人。但是推理的过程瑕疵有点多。
说个最大的问题。周文王被囚禁在朝歌的时候,作者推测他的四个比较大的儿子:伯邑考、发、鲜、旦,都在他身边。由此推出三个弟弟不仅目睹了伯邑考被做成肉酱,甚至可能被迫也一起吃了兄长的肉。进一步地,推导出姬发因此而做噩梦,周公吐哺是因为觉得肉恶心。更进一步地,再次推导姬发因此迷信延续商朝的人祭制度,而周公下决心要彻底把这一习俗从历史上抹去。作者在进行第一个推测的时候没用任何依据,第二次推测的时候就把姬发和姬旦就在朝歌当成了事实,导出二人就在剁肉馅现场,导出二人吃了肉,再导出后面的系列不良反应。这个推导若不成立,本书后面大半关于姬发和姬旦的行为分析就根本无从谈起。
针尖上盖了座大秋裤。基础太薄弱了。
还有同样的臆想,让人觉得作者就不像是位严谨的学者:作者说武王的王后邑姜的邑,就是伯邑考的邑,因此武王从大哥那里继承了老婆和老丈人。可是,主流的观点,【伯】【邑】【考】这三个字都是敬称,“伯”是老大,“邑”是国,“考”是先人,伯邑考是个名字不详的人。如果这样人家王后的前缀加个“国”,这有什么问题?当然也有看法,说“邑”是私名。您要采取这种观点,可以,但需要论证,而不是简简单单的“伯和考都是敬称,所以周昌的长子名字是周邑。”
本书的优点也很明显。对我来说,作者对于周易爻辞的新解令我眼前大亮,抓俘虏、砍人、填坑什么的,可比孔老二的解释有趣得多了。
总之不当正史看是相当有趣的书。
选取的标准更迷了。
相对来讲柴静和刀尔登更舒服一些。
不喜冯唐。
饕餮那两篇太造作了,拉低了全书的水准。
普通。
主角性格不鲜明,倒是搭档和老婆轮廓清晰。
案件的复杂程度也不咋高。
鲁迅提出一口抽象的酱缸,张爱玲夹出一块具体的酱菜。
所谓传统,就是这样一辈一辈一层一层压将下来,直到人们喘不过气。曹七巧并不讨喜,却很真实。人啊,活着活着就死了。
张爱玲的十年转场只用了百字,非常惊艳!
风从窗子里进来,对面挂着的回文雕漆长镜被吹得摇摇晃晃,嗑托嗑托敲着墙。七巧双手按住了镜子。镜子里反映着翠竹帘子和一副金绿山水屏条依旧在风中来回荡漾着,望久了,便有一种晕船的感觉。再定睛看时,翠竹帘子已经褪了色,金绿山水换了一张她丈夫的遗像,镜子里的人也老了十年。
有趣的书。探究XXX是怎么来的,古人是怎么用的。
作者对于音乐、个人崇拜、性爱这些东西的研究,并未有什么爆点。但进入抽烟喝酒,尤其是药物和致幻剂的部分之后,异军突起,深入浅出生动有趣。最棒的部分就是作者依照古法做的那些复古嗑药实验,以第一人称视角描述了什么是high。对,翻译的也好。
我这可怕的好奇心啊,读完本书竟然产生了去云南吃蘑菇的冲动。
资源是宝岛出版的繁体版。果然繁体这件事是完全不影响阅读体验的,竖版才是。期间还能因为两岸的学术名词不同而学到了一些奇怪而无用的知识。
比如,【醯】字。书中出现的地方是“麥角酸二乙醯胺”[1],乍一看都不知道这个字是不是繁体字、对应的简体字是啥。查过之后方知,化学领域【醯】就是【酰】的旧称,大陆改了,台湾没改。顺手又复习了一下什么是【酰】。既学语文又学化学,还增长历史知识,读书真好。
老阎笔下的梦,是欲望放大器。梦里的人有另一副面孔。梦里想干啥干啥,梦里啥都有。
结合创作年代,这样的题材不啻于贴脸开大,钩直饵咸,纯找罐子拔。
阎连科的写法比较少弯弯绕绕,过瘾但不够巧妙,所以稍显后劲不足。最后的高潮部分想体现出天下大乱,但场景跟开始雷同度比较高,所以没达到那个兴奋点。另外整体故事也有点像脱胎于《人类清除计划》。
书中的第三人称的阎连科,过于给自己脸上贴金了。
舅舅的形象塑造得很生动。
结局太平庸。
李诞强调这是他所认为的脱口秀的样子,所以坚持要在书名的开头加上“李诞”二字。确实这是李诞的个人理解。他强调这是一份工作,强调普适性而不是独特性,强调要坚持,要像生产线一样模式化地制造然后去芜存菁。
完成比完美更重要。张博洋赵晓卉可能就是他眼里那种每年只能产出20分钟的段子手,在蛋总眼里,不能称之为职业脱口秀演员的那种人。可见根本就没有黑幕,而是从一开始理念就不合。
很多人怀念的狂野的脱口秀大会前二季,在蛋总眼里是摸索阶段的失败产物,而被诟病的脱三才是他眼中真正的节目。
他是一个脱口秀工作者,为大家带来快乐是附带的。
这本书比他的小说要真诚的多,前半部分的内容紧实凝练富有活力。但是后半部分的问答却是对前面观点的凑字数的补充,反刍一般,意义真不大。
语言匮乏情节老套,不适合12岁以上人士阅读。什么“我所不知道的刑侦”啊,我每个故事看开头1000字就能把后面全猜出来好嘛!
即使是这样,最后一部分也是乐色中的乐色,给两个反派BOSS强行降智收尾,实在不是成熟作家的表现。
人物性格复杂,叙事手法老套。细节尚可。
三兄妹的性格都挺窝囊的,没什么爆发。老大成天读共产党宣言,啥事不干,读了个粑粑;老二看似阴险实际没脑子,被人当枪使;老三隐忍缺少弧光。
反派四爷爷和赵多多倒是写得不错。
遗憾的是象征意义的船,最终也没出海。缺少长风破浪的快感。
插叙的使用是柄双刃剑,前两次对人物的塑造,故事的延申很有好处;但是后面仍旧插插插,未见得有什么变化,令人疲惫。
魂穿成嫌疑人,以当事人视角查案,手法上还算比较新颖。
案件的曲折程度一般,办案什么的也是种没太大的亮点。
结局所有姐妹联合起来,流俗,略失望。
关键写侦破就侦破好了,夹杂着腐臭的恋爱算啥。
看门的孙老头也没起到什么作用,废步嘛。
西游同人都被写烂了,太白金星作为主角的也不鲜见。甚至天庭公务员系统也不是新系统了。马伯庸选择这个主角,就注定了不会太出彩。
同人小说本来根本不用动脑子构思主轴,就跟着取经的流程往里填空就行。
然而马伯庸还是厉害的,他把六耳的命运作为抓手,到宝象国猛然跳出桎梏,是相当厉害的。
结局的转向非常猛烈,不说大圆满但也还不赖。
最重要的是没有抱着主线水字数,值得表扬。
悬疑的部分比较浅显,不过文笔很好,后半部分情绪到位。
以篇幅体量来说,写得非常好。
但是主线其实有点牵强,赵佗是怎么死的并没有那么重要。而从这个角度来说,主使庄大夫有些过于不称职了。
但甘蔗和黄同的刻画都还不赖。
可能是因为南美都是些部落没有统一的原因,传说故事的分布太散,没有什么体系。部落和部落间传说也都不挨着。所以就挺累。
再就是这些传说很大程度上并不纯粹,无法把白人来之前的部分与白人来之后割裂开。像是仙女偷土豆被少年把衣服偷了,不得不下嫁的故事,怎么看也是从欧亚大陆传过去的。
想想白人到达美洲也500多年了,嘉靖年代瓷器要是能传下来也是老古董了,就很正常。
缺点是各个神祗的名字没有原文,无法对照进行更深一步的了解。
加勒比竟然是食人族的意思,怎么不见加勒比海诸国抗议呢?
插图不错。
仿笔记小说白话文翻译的写法很独特,可以把一些评论的东西直白地写出来。
人物塑造有些流俗,部分人物雷同。
缺点是电子版不友好,后续出现前面出现过的名字,往回查找十分不便。
最后的长篇番外差评。
Web2.0时代的圭臬,现在看来更像反讽。
几句话就能说明白的观点,啰里巴唆像在倒嚼一样。
现在的厂商更多信奉的是重头理论,也就是乌合之众占据了上风。它们能从80%的用户身上赚到90%的钱,剩下的那点残羹冷炙,就不在乎了。而且用“热搜”这种粪水浇灌出来的用户,喂啥吃啥,逐渐失去思考能力,就更不会在乎长尾了。
跟作者的愿景正相反,这年头冷门资源是越来越难找了。
TIKTOK的全球范围的流行,似乎证实了作者的失败。
作者没考虑到,维护那长长的尾,其实也是需要成本的,而且成本还不低。什么人力啊、算法啊、存储啊、电费啊、版权啊。不知是疏忽还是故意。
非常感性的书。
不知道亚裔+女性的身份给这本书的流行带来了多少政治正确的加成。
跟书名挺符合的,确实是在说她是怎么想的。还有一丢丢自吹。
但是我发现自己并不关心她是怎么想的。无法共情一点儿。
一切都没有发生。一个十五岁少年内心的成长。
并没有多少感同身受,因为我早已告别了十五岁的自己。
非常失望,图片既小又模糊,根本没有细节。而且不是动物的活体状态,而是福尔马林泡过的,发白变形,没多少指导赶海的意义。
这样的书还要198,怎么不去抢!
封面上的宣传词基本是在夸大其词,那些东西涉及了,但不是直接的。
这本书基本在讨论如何独立思考。涉及了个体与群体的关系,文字与语言的关系,是非标准等话题,进而讨论应该如何独立思考。
书中大篇幅的讨论内容,是作者认为人的思考是受群体影响的,故而要求在思考时一定要考虑到你自己是否真的属于那个群体,你是否把群体中的个体意志当成了集体意志,甚至于,必要的时候要脱离那个群体。
这部分对于我就挺没用的,因为我一直就啥也看不上。
有用的部分也是有的。
有时你可以不说实话,但那不叫说谎。你可以大肆强调某些你并不那么信服,但内心深处也觉得确实有些道理的东西;你可以稍微避开那些容易引起争议的话题。
简而言之:忍住。
配得上名声的好书。
好就好在人物生动而又复杂。白孝文和黑娃这一黑一白,鹿兆鹏和鹿兆海这一兵一匪,白嘉轩和鹿子霖这一正一邪,对比之下都非常有味道。
革命只是冲动和盲目,各方都是扯虎皮拉大旗,为自己谋利益,铲除异己才是“正义”。哪怕是白嘉轩,也在白孝文的问题上低声做小,并且成了既得利益者,甚至在最后默认了借种的事。可能作者在暗示,所有的封建家长,难免步入说一套做一套的桎梏之中。
唯一的微光来自朱先生。他那句遗言好哇:
折腾到何日为止!
非常喜欢对于鹿子霖的老阴逼的塑造,符合地主老财恶劣乡绅的刻板印象。
缺点是某些分支剧情不太有必要,比如大拇指。
不在老舍的舒适区,对话直白,味道很冲。而且后半部分非常仓促,就更加没有味道了。
因为《猫城记》风格独特,所以跟后面几个短篇也不怎么搭调。当然质量是高的。
只是很难分辨当时的老舍究竟在骂谁:
大家本来不懂什么是政治,大家夫斯基没有走通,也只好请出皇上;有皇上到底是省得大家分心。到如今,我们还有皇上,皇上还是“万哄之主”,大家夫斯基也在这万哄之内。
吃不了一点儿细糠。
这非线性叙事也太跳了,而且很多篇幅就像精神病在呓语,接受不了。翻一页之后经常会怀疑自己是不是翻错页了,幸亏是实体书,还可以对照页码,如果是电子书早就给出漏章节的差评了。
说好的黑色幽默也体会不到。大头兵是挺傻的,但全世界所有的年轻人不都一样吗?
剧本改的小说。在没看过剧的我看来,小说不及格。
优点是节奏流畅,剧情一气呵成,没有多余的废话。
缺点是人物塑造上,除了高启强高启盛兄弟和老默以外的人物,包括主角安欣在内,都是薄薄的纸片工具人,一眼看到头。作者尤其不擅长女性角色的塑造,无论是陈书婷、孟钰、程程还是黄瑶,都是为了完成某种使命,用完既扔,没有铺垫也缺乏尾韵。
后期某种程度崩坏了,蒋天和过山峰纯属没有困难制造困难。徐忠的出现也是一种机械降神。
腐败止于副职,跨越三个历史时期市委书记竟然都没出现过,也是够恶心的。
有点相信张艺谋的好作品原著成色要足的说法了。读过小说之后,发现小说比电影更扎实。
电影中巩俐是被挂灯笼和捏脚这样的小细节侵蚀之后,逐渐开始黑化宫斗的,而原著的颂莲一进门就言行合一,有着极强的的战斗力,只是缺少经验罢了。从这个角度上说,捏脚有些画蛇添足。
电影中为了营造压抑的氛围,把院子里弄得很压抑,人也少,男主故意不给正面镜头;而原著是平和的,你甚至会觉得陈佐千前半部分通情达理,对于妻妾管理缺乏手段甚至有些窝囊,直到梅珊沉井,忽然闪现出狰狞面目,如此下来反转的冲击力特别强烈。在几个女人与老爷的相处的日常逢迎中,潜移默化的显示出家里的女人是附庸这一主题,比电影高明不少。电影关于颂莲和雁儿的冲突也没拍好。
《红粉》则是一曲独立女性的赞歌。秋仪和小萼对比强烈,吃汉子不如靠自己。另外明里暗里攻击大改造运动,怪不得当年电影难产了那么久。换现在怕根本都没人敢立项。
《园艺》名气最小,却很有意思。故事比较普通,但是苏童把人物弄得很活,读起来有味道。傻儿子折进去之后,宅女闺女继续查,有一种莫名的无奈和好笑。闺女不爱出门是因为有狐臭,意料之外,情理之中。可惜结局有点潦草。
苏童成名的时候才二十六七,这人也太牛了。
名士风流。以前以为重点是“风流”,读过之后才得知,重点在于“仕”,换句不好听的说法,名仕放个屁都是香的。
像什么“死便埋我”的刘伶,就是个酒蒙子嘛;什么“卿可赎我”的温峤,就是个烂赌狗嘛!若不是他们有名,这狗屁倒灶的算啥事啊?
其实现今也一样。涛哥爱打乒乓球,涛哥跟福原爱打乒乓球的事,后人做传时势必要作为轶事写进去的。我同事老李也爱打乒乓球,有人在意么?更不要说福原爱陪打、王楠笑嘻嘻当裁判了。
坏事也一样,福原爱搞婚外情是新闻,老李也搞婚外情,同样连个水花都冇啊。
世说对我来说非常好读,因为其中的古文简单直接,语法清晰,不求甚解地读起来甚好,极具古文之美。
除了事实还有言论,且不论其是否基于史实吧,明显就算是说过那也是商业吹捧。尤其是各种谶语预测,什么这个人以后一定有出息,或者什么我早看出你厉害,所以还是我更厉害。要不是你们都是高门大阀,说过的话鬼才记得啊。
缺点是主要人物大多时候敬称官职,少部分是表字,而书中只有人物在第一次出场的时候才给注释,往后就不加了,看到后面疲惫期完全不知道说的是谁。电子书不便往前翻的缺点此时被放大了。
这一版注释除了人名一点以外,很满意,完美适配我的水平。
明显是想复刻当年当年明月成功的道路。到八王之乱的部分还算有趣,后面这片大陆更乱了,作者写作的节奏也乱了。
评论忒多了,而且说教味道太重。司马懿洛水之誓确实不厚道,但你也不必隔个三五章就拿出来说一次吧。
目录似乎想以战争作为脉络,但是渤海小吏写战争的水平不行,写人倒还可以。
再就是真的写到东晋灭亡就戛然而止,对于刘裕来说太不公平了。然后一直是南人正统视角,一边说胡人没文化,另一方面却并没有写出南人比北方文化高明在哪里。
知识不能说没有,但真心不多。章节间缺少统筹,仿佛是个野鸡教授把每个章节分给学生写,然后不经审核地攒到一起。就一个简单的貔貅,提及4次便罢了,每次都要从头介绍,都要说这两个字叫皮休,咋了,老师要检查作业么?
部分章节明显地抄百科水字数,庭院里种啥花啊?跨几把中国十大名花列一遍,艹,要编辑何用!
蔡澜的东西,精炼朴素,蜻蜓点水。典型的专栏味儿。
换句话说,就是干货不太多。
我的文章愈写愈好,读者有十亿人。真的,反正不要钱嘛,说多一点有什么关系?写啊写啊,又骗多一篇稿费,何乐不为?
三本集子当中,《去看世界的热闹》是游记,《人生唯有美食不可辜负》写食物,《何妨慢生活》是写人和小品。
蔡先生最擅长的还是写吃食,哪怕是游记中也是写吃的部分最精彩。
什么东西最好吃?妈妈的菜最好吃。这是肯定的。你从小吃过什么,这个印象就深深地烙在你脑里,永远是最好的,也永远是找不回来的。老家前面有棵树,好大。长大了再回去看,不是那么高嘛,道理是一样的。
有一篇篇幅颇长写了大连。比较中肯,包括对于环境的失望。他表扬的吃食,是海胆和河豚熬粥,确实识货。提及了海菜包子。但他弄混了吸(xǔ)波螺和香波螺,也是马有失蹄啊。
文采嘛,其实也就那么回事,说东西硬就说像鞋垫,说没味道就说像发泡胶,看起来老蔡其实也没吃过几样塑胶产品嘛。
有意思的是,蔡澜称呼金庸一直是用金庸先生,尊敬而又疏远;称呼倪匡是倪兄,黄霑是霑兄,但倪兄出场次数可远远多于霑兄,甚至亦舒周华健出现的都比黄霑要多。也许好朋友是不必挂在嘴上的吧。
这套书只是简单按照题材分了个类,并没用附上具体的发表时间,是个败笔。毕竟他当时是那么想的,不等于永远是那么想的不是?何况有好几篇“重游”“再游”之类,完全对不上茬口,扫兴。
世说新语的排列是离散的,而本书以人为线索,把这个人在世说中都说了些啥一一罗列,这样对于历史人物和历史事件对于读者来说就很清晰。
于是世说新语中的重点人物,让阮籍、山涛、嵇康、潘岳、王羲之、庾亮、桓温、谢安这些人物活龙活现起来。
关键这位作者很实在,评论中往往出现“我觉得这一条不真,这俩人A此时在哪,B此时在哪,所以他们碰不上”,“我觉得这一条是夸大”,“我觉得这一条是编的”之类,读起来就觉得踏实。
这说的不能叫细啊,只能叫零碎。
内容非常杂乱,一点点东西颠而倒之倒而颠之来来回回。
故事会体。最多的是一个又一个再一个妓女的故事,还都差不多的苦大仇深,不是被爹妈卖了就是被丈夫卖了,有点像小时候看过的忆苦思甜材料。
再夹杂些个嫖客的故事,偶尔还要强行上价值观:
随着环境恶变,日本人称工人为苦力,并以棍棒相待。他心中恨透了日本侵略者。下班后,他再也不在寮里看书了。便到处看戏,在经过“新德里”妓院门前时,北一个叫桂舫的妓女给他拉近了堂院,终于开了“盘子”。桂舫要求他明日再来,并答应为他留铺,他守信赴约,按时入院,从此忘掉了仇恨,失去了理想,陷入淫情孽海之中。不到百日,他把所有的积蓄全部扔进妓院。
哦,哦,哦,哦,然后呢?
“打完就跑”这种写法令人挺郁闷的。很多时候游戏的概念被作者夸大了,比如战争,当所谓的战争法则被“兵者诡道也”替代之后,你还能以游戏的角度取看待战争么?这波我站马克思,生产力决定游戏规则。
站作者倒也是可以的。我可以替作者总结一下他的观点:人类为了满足生物生存本能以外的活动,都是玩。
强行捏合核心价值观与自然科学。像极了高中写作文的我。
所谓的高维,就是用利用物理和数学公式玩托物言志那一套。举个栗子:
把这段话说得通俗一些就是:铁、镍等质量很大的原子,并不能脱离于环境而产生。并不会有哪个原子,从一个小小的氢原子开始,一路通过不断聚变而独自成为铁、镍等原子,一骑绝尘、独孤求败,这样的事是不合天理的。再高级的原子也需要等待,等周围的环境升温,自己才能继续升级,并且还能保持生命的活力。同理,一个富裕的人,要等待周围的人也富裕起来,自己的能量级才有望继续提升;先富的人带动后富起来的人,事实上也是为自己进一步升级创造条件。
哥们,您这前后挨得着吗?原子有个毛线的生命活力啊!氢原子变成铁原子怎么就升级了?同你妈个逼的理啊?恶心!
下面是本年度补完的漫画。只为弥补少年时代的遗憾,不评价。有兴趣的单独讨论。加这项只是为了显着多……
2025-12-25 15:18:20
客户要求给原有Socket 通信增加QoS 功能,包括了Server 端和Client 端。示例代码似乎平平无奇,实装却花了三周半。尤其是最后的那个问题,困扰了我半个月。今天终于解决了,简单记录一下,希望能帮到需要的人。
现象:CreateQosHandle() 失败,GetLastError() = ERROR_NOT_SUPPORTED(50)
原因:CreateQosHandle()只有两个参数,出现这个错误是因为有的例子太老了,给第一个参传了{1, 1}。实际上进入Win10 时代之后第一个参就只能传{1, 0}。
解决办法:CreateQosHandle()第一个参传{1, 0}。
现象:QoSAddSocketToFlow() 失败,GetLastError() = WSA_INVALID_PARAMETER(87)
原因:
1)某些例子太老,第5个参传了0。新版本函数只能传两个定义好的宏:QOS_NON_ADAPTIVE_FLOW 和QOS_QUERYFLOW_FRESH,不能传0。本例的使用场景实际只能传QOS_NON_ADAPTIVE_FLOW。
2)我的PC上有两块网卡,连接内网环境的是第二块网卡。因此第2个参不能传NULL,而要通过给一个SOCKADDR结构体赋值IP 地址和Port 的方式,指定使用的网卡。
解决办法:第2个参在握手成功后过CAsyncSocket 的 GetPeerName() 取得连接用的IP地址和端口号,第5个参固定传QOS_NON_ADAPTIVE_FLOW。
现象:同时启动Server 和Client,Client 调用QoSAddSocketToFlow() 失败,GetLastError() = ERROR_NOT_FOUND(1168)
原因:添加QoS 的Socket 不支持用自己的Client 连接自己的Server。
解决办法:再找一台开发器。
P.S: 这个就是我上次吐槽AI的事件。
现象:在确定Socket握手成功的回调函数中添加QoS,Client 调用QoSAddSocketToFlow() 失败,GetLastError() = ERROR_ACCESS_DENIED(5)
原因:添加了QoS 的Server 需要管理员权限运行。
解决办法:调试时Server 端用管理员执行Visual Studio,或者给工程属性–Linker–Manifest File–UAC level 改成【requireAdministrator(/level=’requireAdministrator’)】。
现象:Client 的OnConnect(int nErrorCode) 回调中,有时nErrorCode = WSAEWOULDBLOCK(10035)
原因:这不是问题。只是Socket握手过程发生了延时。
解决办法:点两滴眼药水。
现象:Socket 连接建立后,Server 端立刻收到OnClose() 回调,并且传入的参数 = WSAECONNABORTED(10053)。
原因:既存的工程在Client创建socket的时候,立刻调用了SetSockOpt()设置了SO_LINGER,并且设定的值是{1, 0},目地是Socket Close 时不等待缓存,直接进行硬关闭。但是这个属性如果在socket握手成功前被设定,那么在调用QoSAddSocketToFlow() 的同时就会产生这样的关闭。
解决办法:将SetSockOpt 的调用时机改到socket 连接建立之后,亦即,Client 端在OnConnect(0)后调用,Server 端在OnAccept(0) 后调用。
10035本身不用管,但是跟10053长得太像了。
Server 端也不能用127.0.0.1,不知是否跟多网卡有关。
问题③、④和问题⑥干扰的选项太多,一度非常怀疑杀毒软件、防火墙、域策略,非常混乱。
问题①、②都是通过比较不同的例子找到的破绽。
问题③靠的是CSDN上的一句吐槽。
问题④最终解决靠的是在Git上广搜例子,在一个示例的说明里看到Server侧需要在管理员权限下运行的提示,方解决。
问题⑥最后是用了排除法编程,逐行注代码的笨办法筛出来的。全网没有人遇到同样的问题。可能就没有人提前设SO_LINGER 吧……
共通类,继承CAsyncSocket:
#pragma once
#include <afxsock.h>
#include <qossp.h>
#include <winsock2.h>
#include <qos2.h>
#include <iostream>
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "qwave.lib")
class CCommonQosSocket : public CAsyncSocket
{
public:
CCommonQosSocket()
: m_hQos(NULL)
, m_dwFlowId(0)
, m_ver({1, 0}){}
virtual ~CCommonQosSocket() {
CloseWithQos();
}
BOOL CreateQosHandle() {
if (m_hQos) {
QOSCloseHandle(m_hQos);
m_hQos = NULL;
}
if (!QOSCreateHandle(&m_ver, &m_hQos)) {
int nLastError = GetLastError();
return FALSE;
}
return TRUE;
}
BOOL GetPeerAddr(SOCKADDR_IN& peerAddr) {
int len = sizeof(peerAddr);
if (!GetPeerName((SOCKADDR*)&peerAddr, &len)) {
int n = GetLastError();
return FALSE;
}
return TRUE;
}
BOOL AddQosFlow(QOS_TRAFFIC_TYPE trafficType, SOCKADDR* pAddr) {
if (!m_hQos || !m_dwFlowId) {
return FALSE;
}
SOCKADDR* pTgtAddr(pAddr);
SOCKADDR_IN peerAddr{};
if (!pTgtAddr) {
if (!GetPeerAddr(peerAddr)) {
return FALSE;
}
pTgtAddr = static_cast<SOCKADDR*>(&peerAddr);
}
BOOL bRet = QOSAddSocketToFlow(m_hQos,
static_cast<SOCKET>(*this),
pTgtAddr,
trafficType,
QOS_NON_ADAPTIVE_FLOW,
&m_dwFlowId);
int nLastError = GetLastError();
return bRet;
}
void CloseWithQos() {
if (m_dwFlowId && m_hQos) {
QOSRemoveSocketFromFlow(m_hQos,
static_cast<SOCKET>(*this),
m_dwFlowId,
0);
}
if (m_hQos) {
QOSCloseHandle(m_hQos);
m_hQos = NULL;
}
m_dwFlowId = 0;
__super::Close();
}
private:
HANDLE m_hQos;
DWORD m_dwFlowId;
QOS_VERSION m_ver;
};
Server端部分代码:
#include "CommonQosSocket.h"
class CClientSocket: public CCommonQoSSocket {
};
class CListenSockt : public CCommonQoSSocket {
public:
virtual void OnAccept(int nErrorCode) override {
CAsyncSocket::OnAccept(nErrorCode);
CClientSocket* pNewClient = new CClientSocket;
sockaddr addr;
int iAddrLen = sizeof(addr);
if (Accept(*pNewClient, &addr, &iAddrLen)) {
pNewClient->CreateQosHandle();
if (pNewClient->AddQosFlow(QOSTrafficTypeBestEffort, &addr))
//sccess;
linger closeLinger{1,0};
(void)pNewClient->SetSockOpt(SO_LINGER, (const void*)&closeLinger, sizeof linger);
else {
//failed
}
}
};
};
void CQoSServerDlg::OnBnClickedButtonStart()
{
CClientSocket* pListen = new CClientSocket;
CString csLocalIP(L"192.168.8.4");
int nListenPort(32000);
if (!pListen->Create(nListenPort,
SOCK_STREAM, FD_READ | FD_WRITE | FD_ACCEPT | FD_CLOSE,
csLocalIP)) {
int nError = GetLastError();
AfxMessageBox(L"Listen Failed.");
return;
}
if (!m_ListenSock.Listen()) {
AfxMessageBox(L"Listen Failed.");
return;
}
}
Client端部分代码:
#include "CommonQosSocket.h"
class CClientSocket: public CCommonQoSSocket {
public:
virtual void OnConnect(int nErrorCode) overwride {
CAsyncSocket::OnConnect(nErrorCode);
if (nErrorCode) {
return;
}
CreateQosHandle();
if (this->AddQosFlow(QOSTrafficTypeBestEffort, nullptr)) {
//success
linger closeLinger{1,0};
(void)this->SetSockOpt(SO_LINGER, (const void*)&closeLinger, sizeof linger);
}
else {
//failed
}
}
};
void CQoSClientDlg::OnBnClickedButtonConnect()
{
CClientSocket* pClient = new CClientSocket;
pClient->CreateQosHandle();
CString csLocal(L"192.168.8.11");
CString csServer(L"192.168.8.4");
int nPort(32000);
pClient->Create(0, SOCK_STREAM, FD_READ | FD_WRITE | FD_CONNECT | FD_CLOSE,
csLocal);
if (m_sock.Connect(csServer, nPort)) {
}
else {
}
}
就酱紫,找到问题⑥的原因花了13天,改掉只需要5分钟。
2025-12-20 12:07:20
上一个的姊妹问卷(https://gamegrid.shatranj.space/zh-CN)。这个就反复斟酌了好久。不作详细解释。
2025-12-17 13:17:13
昨日青山(yinji.org)邀我填写“电影生涯喜好表”(https://moviegrid.dsdev.ink/),正好是我喜欢的话题。填完之后分享之。

数个条目需要额外补充说明一下。
最佳导演
没理解题意。是指像评奖那样,某部片子成功全靠导演,还是某个导演一直牛逼?我给理解成了后者。导演这个职业很容易晚节不保拉坨大的,昆汀和曹保平都因为这样的原因被排除了。邵艺辉样本太少。只能填目前即使最下限我也能接受的老姜。
最爱演员
我觉得演员最高的境界是演什么像什么。这样其实只有梁家辉和香川两个选项。本来梁家辉占优,因为香川不够帅,还是存在盲区的。但是梁家辉近几年有点不爱惜羽毛了。
最佳剧情
这个没要求原创剧情是吧?
最佳服化
有点为难,我看片不重视这个。
最佳配乐
我的理解先排除了音乐片。
最浪漫
这题不会。爱情片不是我的菜,选了部心目中最好的爱情片,但好像一起坐小巴不算什么浪漫的事。
最恐怖
这题本来想空着。选了心目中最好的恐怖片,但不是最恐怖。
最性感
这题好几个答案。是问穿衣服最性感还是不穿衣服最性感啊?是某个角色最性感还是拍摄得最性感啊?最后选了穿和不穿都好看的伊娃。
最有趣
这种问法不是问最佳喜剧片吧?
最看不懂
其实好多。涉及宗教、哲学、硬科幻、没接触过的历史的题材好多看不懂。挑了个最有名的。
最多遍
录像带时代我们家经常用《飞鹰计划》招待客人。
启蒙之作
想问的是这个吧?这是我看的第三部三级片。前两部30多年过去了,我至今还没找到,无法确定名字。
最具特殊意义
跟我老婆第一次见面看的。
2025-12-11 16:58:14
上次说的大事件延期了一个月,于是又有了时间写点儿。
臭宝这个期末考完就要分班了。学校特意为此开了一个家长会,找了一个某机构的网红专家给家长提供专业意见。
专家在会议室讲,我们在班级教室里听,用的是教育局提供的全套直播系统,从软件到硬件。
开始不到10分钟就开始卡。班主任喊来负责技术的老师,又是重启,又是切网关,又是换IP的,统统无效。现象就是3分钟卡死。
更搞笑的是,半小时之后,直播间内的摄像机没电了,直接黑屏。
为什么我会知道呢?因为现场有两个后勤老师互相推诿应该由对方保管充电器。没关麦。
几分钟之后,有解决方案了:教导主任把各个班的班主任拉了个微信群,用手机怼脸专家;各班主任登录PC版微信,然后全屏到投影仪。
切换屏幕的时候,看到群里有某位老师在吐槽:“三天两头坏,咱们还好意思叫私立学校吗?”
专家和学校浪费半天口水,什么文科基本只有一种选择,什么地理看着好考但是没有赋分其实并不占便宜,什么理科不学化学专业选择少——意图无非是劝家长选科的时候不要搞出奇葩组合。(近一二年有人觉得地理和生物好学,所以想搞物生地或者史生地这样的组合)
前天图穷匕见,班级统计分科意向,给出的选项只有五个:物化生、政史地、物化政、物化地、其他。
换句话说就是:“好话已经说尽了,别给脸不要脸。”
×××××
大连地铁1号线运营时间调整。我们单位这站,下班时间班次比之前晚了2分钟。
这下苦了小木头同学。
之前她卡点冲出开发间,赶第一趟电梯进地铁站,能坐上1号线;之后在西安路45秒之内赶到2号线换乘,刚好能赶上车,18:10出地铁站,她对象下班正好开车路过,接上一起回家。
时间调整之后,虽然她赶1号线时间更充裕了,但在换乘站无论如何也赶不上没调整时间的2号线。偏偏她家地铁那站不是每趟车都停,而是分奇偶车次的,错过第一辆的话,第二辆也不能上,要等第三辆。这样她出站就变成18:25了。对象接她的时间也理不顺,某日停在地铁口险些被帽子叔叔贴条。
于是,挺好的孩子,就这么忽然开始加班了。
×××××
老婆大人整理厨房,一堆东西要扔。我发现里面有个电子秤,问:“这秤咋了?”
老婆答:“没电了。这电池一看就挺贵的,我琢磨不如买个新的。”
我说:“要扔的东西有点多,我先扔一趟。”随手把秤捡了出来。
跑到楼下小店:“来块9V电池。”
店主:“你要啥?”
我:“来块方电池。”
店主:“你不能光告诉我形状,你得告诉我型号,对不对,大小还不一样呢,买错了咋整?”
我:“PP3、6F22!”
店主:“你说啥?”
我:“就在那挂的、方形的、9V的、学名PP3的,就是!”
“哦。4块钱。”
我就纳了闷了,9V电池至于那么罕见吗?
×××××
周五调一个CAsyncSocket加QoS功能的BUG。
我一般用16进制查看,直接把错误码0x490扔给AI,好家伙,这又是防火墙又是注册表又是策略组的,一时半会儿搞不定。而且关杀软和偷搞注册表这事儿犯忌,周六加班弄吧。
周六加班,跟AI有来有回,改了网卡属性、策略组;偷了注册表权限,改了;进安全模式强杀了杀毒软件服务;命令行改了网卡什么权限。全套做下来,终于把网卡搞得不识别了。
这题我会,把网卡删了重启就行。
再次进入debug,因为调试环境重置了,所以这次监视窗口变成了10进制显示。
错误码变成(?)了1168。
不对啊,我啥都没改,错误码怎么可能变呢?打开计算器,气得我想去爆马斯克的菊花。
好在我们周末加班可以调休。
×××××
家里的旧茶几,老婆大人在咸鱼上挂了2个多月之后,终于认清了这玩意儿没人要的事实。
要我找个收破烂的处理掉。
我真找了一个,人家真不要。
问扫楼梯的大姐。这位平日里天天盯着我家纸壳子的大姐也表示不要。
老婆大人怒槽全满,下了最后通牒:不管你用什么办法,周一以前必须给弄走。
害能咋办,扔呗。
PU下面全是木头,太沉,拆成4份扔到了楼下。
没想到在楼下摆了一周,直到群里有人嫌碍事跟物业提意见,物业才特意让垃圾工给清走。
木头和玻璃,是真的没人要。
注:夫=大姨夫。
2025-11-26 11:42:03
本来说好了整数年不搞,但是想想又怕一旦不玩了,别人会以为我出了意外,所以还是搞一篇吧。
这一年更新频率很低。主要原因是倦了。也不是烦,也不是懒,是“激情退去后的那一点点倦”的那种“倦”。
常年大姨夫不调,终于迎来了更年期。
除了主观疲软,客观原因也有几项。
首当其冲的就是素材没那么多。现在组里10/15个女人,年龄从83年到1999年,既有性别隔阂又有代沟。老娘们儿唠嗑咱能插上嘴的机会就不多,再严选掉大部分没营养的话题,能记下来的素材更少。男的……TA们不是男的,是90后。
其次是这一年多以来,组里的小项目增加了,我一个人要给6个小工程做技术支持。本来岁数大了,切换思路就没那么麻利。即使摸鱼时间不少,也架不住这里面有4、5个勤奋的笨蛋,一个简单的10行代码就能实现的功能讲两个钟头都说不明白。有这时间都足够我把整个工程写完然后去厕所带薪拉屎半小时的了!
你孜孜不倦,我渴了。
本来愉快地码字呢,被打断了激情和思路不说,还要大口喘气大碗喝茶大泡撒尿对抗厌蠢症。
第三要怪自己没事找事,搞了个愉快而没有意义的项目——让WordPress4.9在php8.2下正常运行。这事本身本来也花不了太多时间,但是代码读的越多就越想干掉没用的功能,越删越上瘾,到现在3个多月了,也看不到头。
每年到了这个时候本来是我对博客关注度最高的时候。今年终于是把字号调大了。至于换字体的事只是顺带,哪天心血来潮就又换了。
主题就这样了,底子不好不值得修了,至少还得凑合一年。
因为年底有大事发生,所以2026之前都不会有机会更太多。
依着我物尽其用的性子,明年10月服务器到期前自戕的可能性不大。
一旦在2026年10月之前嘎了,亦属正常。Words告罄,Press的欲望也冇,每次按下【Publish】都可能是拔管。
比如去岁前年,今朝差觉门庭静。玉轴锦标无一首,知道先生还佞。假使文殊,携诸菩萨,来问维摩病。无花堪散,亦无香积斋衬。
回首雪浪惊心,黄茅过顶,瘴毒如炊甑。山鬼海神俱长者,饶得书生穷命。不慕飞仙,不贪成佛,不要钻天令。年年今日,白头母子家庆。
【宋】刘克庄·念奴娇·壬寅生日