普通视图

发现新文章,点击刷新页面。
昨天以前费照君个人网站

树犹如此:连树都这样…究竟是哪样?

作者 mukti
2026年3月10日 22:54

“树犹如此”这个词你应该不陌生,现在请你先用三十秒回忆一下:“树犹如此”这个词在什么场景下会用到?是用来形容什么的呢?

这个词最早的记载出现在《世说新语》的故事里:东晋大将恒温领兵北征,路过金城(当时琅琊郡治所,现在南京和句容附近),见到当年自己在琅琊郡为官时所种的柳树都已经粗了好几圈,不禁感叹“木有如此,人何以堪”。所以树犹如此的“树”是柳树,根据原文“皆已十围”,说明不止一棵。这个典故又被称作“金城柳”,表示岁月易逝、世事变迁。

树犹如此这个典故被后人多次引用,当下最有名的应该就是白先勇《树犹如此》一文,作者在文中将他朋友生病去世与院子里的一棵树联系起来,抒发人生无常的慨叹。

辛弃疾在《登建康赏心亭》一词中也用了这个典故。这首词中所表达的半生漂泊身不由己的情感,远不输他的《北固亭怀古》:

楚天千里清秋,水随天去秋无际。遥岑远目,献愁供恨,玉簪螺髻。落日楼头,断鸿声里,江南游子。把吴钩看了,栏杆拍遍,无人会,登临意。
休说鲈鱼堪脍,尽西风,季鹰归未?求田问舍,怕应羞见,刘郎才气。可惜流年,忧愁风雨,树犹如此!倩何人唤取,红巾翠袖,揾英雄泪!

当时辛弃疾登上赏心亭,看到辽阔的风景却心生悲凉。很多地方把“吴钩”解释成兵器,我觉得辛弃疾是借指月亮,他从“落日楼头”呆到月牙升起,来回踱步把所有栏杆都拍了一遍。“无人会,登临意”:算了,你肯定觉得没意思。

休说鲈鱼堪脍,尽西风,季鹰归未?

西晋张季鹰在外做官,每到秋天西风起,他便想起家乡美味的鲈鱼,于是洒脱地辞官而去,只为回故乡吃一口记忆里的味道。然而,张季鹰真的能如此不为世事所累吗,即便张季鹰如此,人世间西风常有,又有几人能做到如心所往的生活?

求田问舍,怕应羞见,刘郎才气。

许汜与刘备聊起陈元龙,说他徒有盛名。有次许汜到陈元龙家里去,陈元龙对他爱搭不理,一点礼貌都没有。刘备呵呵一笑,说你作为天下名士,人都希望你忧国忧民,你却一心想着买田地买房子,换了我也瞧不起你。

我不知道辛弃疾在这里是什么意思,我理解他大概是想说:我也想忧国忧民,但是活成一个普通人的模样已经很不容易了,人到中年却胸无大志,但我身边的朋友,比方说刘备,都怀揣家国梦想,与我早已不是一个世界的人了。

可惜流年,忧愁风雨,树犹如此!倩何人唤取,红巾翠袖,揾英雄泪!

红巾翠袖是温柔女子的代表。可是我出走半生,披荆斩棘为生活奔波,归来时步履蹒跚,青丝白发,哪里有人能轻轻揾平我的伤痕?

树犹如此,人何以堪。这个词语借辛弃疾之口,讲出的是我们每一个曾经与天比高的少年,付出自己兢兢业业的一生,换来的不过是某天夜里你在阳台上回忆时的一声长叹:往前走,已经成不了国之栋梁,往后退,也吃不到记忆里那一口鲈鱼了。

乐观的未来:虽然AI让一些人失业,但我们可以给AI打工呀。

作者 mukti
2026年2月10日 15:36

AI 已经不是什么新鲜的话题了。2026年春节将近,除了AI类应用给全国人民发红包之外,可以偷偷背着你主动替你干活的AI助手openClaw就是当下热门了。

openClaw 一登场,被国内外的自媒体营销号吹上了天。大家都说,它已经不是那个只会和你对话、只有接到你的“提示词”才会响应的 AI 了,而是会在你睡觉时依然自己主动运行的个人工作助手!若是果真如此,那可太神了,这不比地主家的长工还牛嗶。

不过,现状似乎没有十分乐观。首先,openClaw 是一个吞金兽,需要大量AI世界的金币——tokens 才能正常的运行。我相信总还是有人在 AI 尝试上毫不吝啬,于是我分别去小红书、B 站,甚至 youtube 上,看看大家到底在用 openClaw 干了什么。

我很失望。

我看到有个小伙在在手机上通过telegram 发了一条消息,指挥 openClaw 在他的电脑桌面新建了一个 txt,然后在里面写了一些字。

我还看到一个网友让 openClaw 在他每天醒来之前抓取一下今天的新闻,然后使用 AI 总结后呈阅给他。

还有人使用它监控电脑系统指标、检查软件是否需要更新,更高级一点的,它还能去 Moltbook 论坛发帖,和其它 AI 讨论一些……话题。

如果一个工具的诞生,只是让我们换了个方式写个 hello world,或者花上一些 token 的钱去做一些原本就完全可以不做的事情。它存在的意义,仅仅是折腾人类吗?

你可能刷到,有些人每个月在 AI 上花大把的钱,然后又炫耀这个钱花的值。我身边也有很多在 AI、尤其是软件开发上氪金的同事,且不说他们自己觉得花的值不值,我总有一种驴子拉磨还自己主动买磨盘的感觉——大家都说这款磨盘出面率高出31.8%。

但是出面率高了之后,驴子的休息时间增加了吗?

科技的进步,一定是解放人类。这可能是人类自诞生以来最大的谎言。我们从茹毛饮血的时代一路走来,从最初驯化的小麦到后来发明的蒸汽机,每一次生产力巨大进步的同时,人类个体原本闲暇的时间都会被进一步卷入更高效的社会大生产。我们原始的祖先从每天出猎2小时,每年农忙季节白天耕种,再到现在一年到头……甚至晚上还要工作。

当我们再说回 openClaw,我希望它能分担的不是那些我们原本就不是非做不可的事,它被装到我的电脑上,就能不断的为我银行卡打入能跑赢一台电脑损耗的钱。

我不反对 AI,只是希望 AI 能给人类一个比“我去百货公司当了售货员”更加光明的未来。毕竟 AI 已经是一场势不可挡的洪水汹涌而来。

上面我们提到有个小伙让他的 openClaw 上 moltbook 论坛发帖讨论。Moltbook 是一个AI 论坛,但是人类不能发言,只有 openClaw 机器人才能发言,现在,已经有超过15万个机器人在上面聊得热火朝天。

Emm……比起 Moltbook,或许还有些事更加科幻:

因为这个世界上有些事情是 AI 无法完成的,但是人类可以做到,比如修剪草坪。于是就 AI 界顺理成章地诞生了“雇佣一个人类”网站。

这个网站将 AI 想做但做不到的任务,分配给人类注册用户。用户完成任务后,就会收到报酬。

这不正是我们乐观的未来吗,虽然 AI 取代了很多我们现在的工作岗位,但是我们还可以为 AI 打工呀。

互联网记忆-2026

作者 mukti
2025年12月31日 08:17

过去一年当中,我关注到的世界。

2025年1月10日

被诈骗到泰国的人口贩卖受害者、演员王星今日返回中国。

图片

不知道有多少人根本不会被救,也不会被关注。

1月15日

外国网友涌入小红书。

1月18日

重庆游客在吉林摔倒,吃半天瓜没明白。

1月26日

央视新闻画面出现表情包。“这是00后上岗了吗?”

图片

1月28日

“蛇年春晚”首次在B站直播,支持弹幕。

弹幕只能发“新年快乐”等几个固定词汇。

春节期间,DeepSeek 出圈。


2025年,“问问 AI”成了我们的日常。


1月29日

《哪吒2》上映。

图片

2月3日

大S去世。

2月14日

广东佛山一公司发布《如厕管理规范》,规定小便不能超过2分钟,违者罚款。 

2月17日

民营企业座谈会召开。

上次是2018年11月1日。

2月24日

海底捞遭遇“小便门”,17岁少年往锅里撒尿并拍下视频。

海底捞对即日起至3月8日在该门店用餐的消费者做10倍赔偿,引发新问题:请客的人该不该分赔偿金给被请客的人?

3月1日

方大同去世。

3月3日

第77届奥斯卡颁奖礼举行。

3月26日

河北廊坊永清县接连发生4.2级、2.9级地震,京津等地有震感。

4月7日

中美关税大战升温。

4月9日

河北隆化一养老公寓大火,20位老人丧命。

4月11日

何同学因分享自己处理网约车司机索要好评的经历引发网友热议。

4月21日

刘强东送外卖,开始持续几日的京东外卖营销秀。

图片

4月24日

辽宁铁道职业技术学院突发恶性事件。

4月25日

拉布布3.0系列线下发售。

4月27日

中日友好医院胸外科副主任被曝出轨多人。

4月29日

辽宁一饭店大火,致死22人,习作指示。

5月4日

贵州发生载人游船侧翻事故。

山东滕州突发恶性交通事故,多媒体称因司机午餐饮酒。

5月13日

北京冰雹。车主在桥下躲冰雹导致堵车引热议。

5月17日

朱媛媛去世。

5月21日

黄杨钿甜天价耳钉遭热议。

合法拥有巨额财产,就对吗?如果我比钟睒睒更努力,是不是就应该/一定比他更有钱?

5月27日

山东高密一工厂发生爆炸事故。

6月9日

高考作文北京卷,网友表示“说开去”一词很难懂。

6月10日

ios26发布,液态玻璃被吐槽。

6月20日

《长安的荔枝》热播,演员那尔那茜身陷高考造假。

6月27日 

蔡澜去世。

多家充电宝品牌3C认证证书也被暂停,民航局严格要求非3C 不能上飞机。

图片

我常常想,我们面临各式各样的决策,并没有人评判决策的好坏,包括上面的高考题目,某个题目出的好还是不好,有人关心吗?如果高考试卷出现了一个可能并不好(没有人能公正评判),会有人对此负责吗?

7月8日

甘肃天水幼儿血铅异常来源查明,系后厨违规添加彩绘颜料制作食品。

7月10日

杨少华去世。

7月11日

山东临沂饭店老板随手拍视频竟成“违法广告”,45万元“天价处罚”引争议。

7月15日

袁正进去世。

六部门联合公布《国家网络身份认证公共服务管理办法》,自2025年7月15日起施行。

国家网络身份认证公共服务平台以法定身份证件信息为基础,以网号、网证、网络身份应用标识为呈现方式,既能证明身份,又能避免个人信息泄露。

7月16日

南京红姐事件曝光。

7月17日

宗庆后塌房,网友支持大女儿。

7月19日

马云夜骑。

图片

7月22日

青岛大学宿管中暑死亡,校方辞退了所有65以上的大爷。

7月24日

东北大学6名学生参观矿厂溺亡。

7月28日

国家育儿补贴方案公布!3周岁前每娃每年3600元。

释永信被查。

一点都不意外,我很意外为什么今天才查?

8月2日

武汉大学杨景媛掀舆论风波,错误百出的论文下载量超前。

8月4日

9月1日起强制社保:《家门口的包子铺要关门了》

小企业主,是在为时代买单,还是在为某些失误的历史决策买单?

8月10日

多高校官微发布波伏娃语录。

自媒体时代,权威已经不是权威了。一个普通博主比知名高校小编更博识、更明理,并不是稀奇事。

8月18日

《报告,董小姐软着陆》

8月27日

Nano banana AI 3D 打印模型风靡。

图片

8月29日

寒武纪8月份涨幅超200%。

9月9日

吴京塌房了:“坦克是没有后视镜的”。

雷军居然也要塌了。

9月10日

高德扫街榜发布。

9月12日 

罗永浩说西贝预制菜惹怒贾国龙。

图片

有网友很看不惯罗永浩,戳破皇帝新衣的小屁孩,也不必非得是根红苗正的少先队员。

9月16日

山东临沂农妇“辱骂”女法官于某某,被拘留15日并处罚款10万元。

9月17日

于朦胧坠楼死亡,引发热议和质疑。

9月20日

始祖鸟与蔡国强西藏炸山。

图片

9月25日

7岁的毛毛哭着要吃西贝。

这篇文章可以封神了。现代社会变幻万千,已经难有系统化的营销法则了。

10月2日

江苏东海饭店坍塌,当日正举办酒席。

10月2日

吕梁永聚煤业2023年火灾案件宣判。

10月16日

受中美贸易紧张局势升级以及美联储即将降息的预期升温的影响,金价继续创下新高。

10月18日

杨振宁去世。

10月29日

各省2024婚姻数据公布,“年内”离婚率57.5%,辽宁79.2%。

11月26日

香港大埔屋苑宏福苑发生五级火灾,至少161人死亡。

11月27日

华与华再惹罗永浩,罗永浩扬言放录音。

12月22日读客文化停牌,华氏兄弟已在之前大量减持。

11月28日

央视与美团联合发布短片“送外卖是能随时欣赏沿途风景的工作”。

年度最佳视频。

12月4日

台湾以资讯安全、诈骗案飙升、未在台设法律代表人为由,宣布封锁小红书一年,在两岸引发舆论哗然。

小红书在星期天12月7日登上台湾社交App热门下载榜第一。

12月18日

南京博物院受捐馆藏名画现身拍卖市场。

12月20日

真棒!

图片
10月29日
东部战区开展“正义使命-2025”演习

除了以上,我还关注到两件在海外火到没边、但在国内几乎听不到声音的事:

1、动画电影《猎魔舞团》热映,其主题曲《Golden》下半年霸榜海外音乐类 App,并成为海外小学生当中的《孤勇者》。

图片

2、“67”口头禅在青少年中流行。

图片
2025年度音乐

图片
图片


我的程序员同事去送外卖了

作者 mukti
2025年12月24日 10:51

今年夏天,我的同事阿辉注册了外卖骑手。从“众包”开始,逐渐成长。现在,他选择了离家不远的盒马生鲜,每周六、周日早九晚九点半,风雨无阻的送外卖。

程序员送外卖

其他同事觉得这有点意思,也纷纷加入,不过目前还停留在“众包”阶段,偶尔接接单。我还了解到以前的码农同事,也有在兼职跑外卖的。

程序员送外卖

8月底的时候,我跟拍了我同事阿辉送外卖的一天,还做了一个有模有样的采访。四个月过去了,我终于把完整的视频剪了出来。

程序员送外卖

徐峥电影《逆行人生》里面,讲了一个被裁员后出于生活所迫去送外卖的程序员。而现实中,阿辉送外卖可能更多的是一种解压方式,这种压力一方面来自于程序员工作本身的精神压力,另一方面可能也是对互联网行业随时裁员的焦虑。

我觉得幸运的一点是,送外卖对阿辉来说,是一种乐在其中的疲惫。而不幸的是,对多数外卖员来讲,他们很难乐在其中;对多数牛马人来讲,他们很难找到情绪释放的出口。

完整采访视频请移步 B 站:

https://www.bilibili.com/video/BV1jpqzBhEh8

北京程序员送外卖

三月碎片-2025:诡异的屏蔽词,以及“来自划痕”

作者 mukti
2025年6月13日 18:34

3月2日

痴迷于箱子的王崽崽

有时候它有点自欺欺人,总觉得自己不胖

3月9日

今日冲浪

紫竹院公园妙趣横生,秧歌队是那个的



14日

我发现了微信一个诡异的屏蔽词。

我在做公众号自动回复测试的时候,发现自己总是收不到消息,以为自己的程序有 bug,后来发现是命中了微信的消息屏蔽。

你在群聊发送“千古一帝皇上”这几个字,其他人是收不到的(私聊可以)。

而且,在“帝”和“皇”之间可以加任意字符,比如“千古一帝,X某皇上”也收不到。在“皇”和“上之间添加任意标点,如“千古一帝皇,上”也收不到,但是“千古一帝皇A上”就能收到。

我很好奇,按这个规律微信的屏蔽规则是怎么写的。

15日

北京突然下起大雪


上一次北京在三月份下雪是2006年,我印象深刻。那天我在宿舍水房洗衣服,整个楼突然狂叫起来,我还以为是有球赛。我从水房走出来的时候,透过宿舍楼长长的走廊,尽头的窗外雪花飞舞。

那时候我想在走廊里飞奔,冲破尽头的窗户,感觉自己能在空中定格起来。

17日

从摄影摄像对比华为、oppo、小米、vivo、iphone,各大厂牌引战已久,这个视频不吹不黑,做了相对客观的评测。

https://www.bilibili.com/video/BV1XHRVYqE4x

19日

微信公众号文章下方有几个交互按钮,其中“爱心”图标点击后会在发现页“在看”中展示给其他人,类似于“推荐功能”。我不明白为什么要用“爱心”图标,令我总是搞混,“点赞”和“爱心”究竟那个会别好友看到?每次点都小心翼翼。

20日

春天里努力的小狗

From scratch

一般英文的技术文档都会用“Start”开始指导你如何上手,或者“get start”、“quick start”等等。

今天我看到一个“Learn XXX from scratch”,查了一下 scratch 是划痕的意思。为什么要从划痕开始学习呢?

“From scratch”这个短语来源于20世纪初的体育场上,当时人们在赛前用棍子在泥沙跑道上划出一条直线,运动员就从这儿起步,所以“scratch”可以解释为“起跑线”,后来被人们引申到日常生活中,指“从头开始”。

学真特么无止境啊

21日

汉字中音旁相同的字,读音基本相同,比如“烺琅浪狼郎朗”,哪怕不完全相同,也会读音相近,比如饲词、近昕。但是同为“斤”声旁的“沂”字发音已经和“近”相去甚远,不知道经历了什么演化过程,有点意思。

25日

又见北京地铁不明所以的广告,不知道是北京地铁广告门槛实在不高,还是这些乱七八糟的行业实在赚钱。

30日

今天和我妈视频,她说村里加茂死了。随着年纪不断增长,我记忆中村里的人和事,都在不断远去。此时有感,作诗一首。

徒有凌云志,半生方自知。
寄宿二十载,陈玄未成诗。
故乡多白事,京城老儿痴。
瀚海欢喜梦,已挂东南枝。

二月碎片-2025

作者 mukti
2025年6月12日 15:56

1月31日

妈耶,可别再给我推 deepseek 了

2月1日 淄博抵债

刷到了淄博抵债的视频,非常精彩。

淄博赵女士开了一个服装厂,2022年与乾能铸造公司签供货合同,提供服装,货款近10万元,并且开了发票,但是一直没收到货款。

2023年1月赵女士上门要账,发现乾能铸造公司正在忙着破产,而且要账的不止她一个。乾能铸造公司说可以以物抵债。考虑到如果不同意以物抵债,等企业破产后可能也根本拿不到钱,赵女士无奈之下接受以物抵债。

但是,乾能铸造公司负责人也只能结算5万元的以物抵债,将价值5万元的乾能铸造公司产品(轴承、消防器材等)抵给赵女士,签了抵债协议并盖公章。

虽然拿到价值5万元的产品,但是赵女士根本卖不出去(能卖出去的话,铸造公司应该也不至于破产)。最后,只能将声称价值5万的产品按照废品价格出售,卖了不到4千,卖完已经是2024年4月。

到此为止,事情应该结束了,赵女士选择接受。这个故事不过是一个破产企业的辛酸,加上一个给破产企业供货的辛酸。

没想到,后面还有 VIP 剧情。

2024年11月,赵女士公司的对公账户被法院冻结,查了才知道是因为乾能铸造公司抵账不合法,有关部门要求赵女士将抵债产品原型号、原规格全部退回,如不退回,会从赵女士对公账户划走5万元抵债货款。

赵女士辗转1个多月,专门跑了国内较大轴承市场,花费1万多元,凑齐了当时抵债的价值5万的全部产品。

不幸中的幸运:赵女士保留了当时抵债的产品型号单。

赵女士说,以上发生这些事,她从没想过要发个视频出来,直到她看到,这家破产企业有100多家要债的供应商,至少十几家账户遭遇冻结。还有人的故事,比赵女士还要精彩。

我突然想起那个小学数学题,老王卖鞋,进价30甩卖20,顾客给50买一双,老王找不开跟邻居换了零钱,后来发现50是假币……问老王亏了多少。

原视频:https://www.youtube.com/watch?app=desktop&v=mJYOj_1uUIk

2月6日

摘抄

“痛金兰之奄契,悲红颜而逃年”
——北魏宫女刘阿素的闺蜜给她写的墓志铭

“魂兮永逝,名举风旋”
——罗新在《漫长的余生》的结尾,用这八个字收尾。

2月7日

2024年是地球历史上有记录以来最热的一年,下图中黄色是2024年的气温曲线。

17日

北京地铁上匪夷所思的广告,乍看以为是地产,还留了老板手机号。搜了一下像传销,更整不明白这个广告的意义了。

18日

看到网上说“大张伟”这个名字是因为他上学的时候,班上有两个张伟。

我想起我初中班上有两个焦秀梅,一个学号是27,一个是64(对,我们班那时候有60多个人)。于是我们就叫她们27号和64号。

毕业多年后,我和其他同学谈起她,还会叫她27号。

现在20多年过去了,我还记得她叫27号,但是初中同学疏于联系,已经很久未与人谈起了。

19日

B 站视频:你管这破玩意叫围棋??
https://b23.tv/ZavB5Na

博主飞天闪客用几分钟把围棋讲的很明白,他还做了其它的一系列科普视频。(他主业是个程序员,还曾出版过 Linux 源码解读的书,但是最近被M团裁掉了)

21日

你一定见过计算器,上面有一个 AC 键盘,有的还有 CE 键。你知道 AC/CE 是什么意思吗?

即便你不知道,也不会影响你使用计算器,因为你只要试一次,就知道这个键可以清除输入的内容。

但这个世界上有很多人,他们知道 AC 的意思。

22日

二月好短呀二月。

一月碎片-2025:人生的意义

作者 mukti
2025年5月30日 18:39

1月1日

年终总结好像不那么流行了

看到这一篇,我认为值得分享:

兽爷丨我当时太矫情了

1月6日

豆瓣用户18年。

注册豆瓣那年我21岁。21岁是生命中最好的年纪,我时不时还会记起《Forever 21》那首歌,哦,forerver 21还曾是一个服装品牌。

王小波也喜欢他的21岁,他说那是他的黄金时代。那时他想爱、想吃,还想在一瞬间变成天上半明半暗的云。

我已经开始为接纳自己的40岁做心理准备了,对于年纪已经麻木,只是偶尔半夜里在梦里醒来会觉得很难过,仿佛和我表弟在井台边上玩水还是昨天的事,怎么一下子就快要四十岁了。

1月6日

我觉得“比喻”有时候是一种偷懒的表达。

当一件事难以详尽、准确地形容,人们往往就喜欢引入一个类比。“就好像……”

有一首歌里面唱“我和你的爱情好像水晶,没有负担秘密干净又透明。”一种像是水晶的爱情,究竟是什么样的爱情,这个比喻能帮助你更好地理解目标对象本身吗?

1月9日

领驾照的时候会给一个实习贴纸。放在箱底十几年也没买上车,终于鼓起勇气丢掉了。

1月12日

小叔种的葫芦。

1月17日

大概30年前,我爸在北沟承包了一片山坡,种上栗树。

这些栗树是我看着长大的,不久前爸爸伐了棵树,树干截断成板,每一块都很重,我放行李箱里千里迢迢背到北京当菜板。

(Update:干裂严重,扔了)

1月18日

橘子汽水的英文:mandarin soda

1月25日

新年快乐

1月31日

大年初三,逛了久仰多年的欧亚卖场,超市收银台都望不到头。

1月22日 “稳”字

为何“稳”字中有一个“急”字?着急忙慌的,能“稳”吗?

“急”字上面是一个“及”,下面是“心”,本应写作“㤂”。解释为“褊”,“褊”是“衣服小”的意思,衣服小,就显得很局促且紧迫,加上一个“心”表示心理上的着急、不能够从容。

“稳”的右边其实不是“急”,而是“㥯yǐn”字。“㥯”字上边是声旁,下面也是“心”。《说文》解释为谨慎,《玉篇》解释为忧伤,《集韵》解释为“抑郁症”。

“㥯”字后来衍生出“隐(隱)”,表示病痛。病痛是看不见摸不着的,可能因此“隐”字延伸出“隐蔽”之意。

“稳(穩)”的右边“㥯”是声旁,加上“禾”表示安稳,有解释说“禾”代表粮食,有了粮食,也就安稳了。我觉得牵强,因为《说文解字》和《康熙字典》都有说,“安稳”也写作“安隐”。

“稳”字本意是“蹂谷聚”,类似于舂米去壳。应该是先有了“稳”这个意思要表达,有 wěn 发音,但是没有文字,于是借了“稳”字过来。

“急”字上方的“⺈”也曾被误写成“爫”,和“㥯”相像,可能是“㥯”简化为“急”的一个因素。

1月28日

今年 B 站直播春晚,并且会有弹幕。

我心想,这不得把弹幕审核员给累死?

晚上恍然,原来春晚弹幕只能发“新年快乐”。

人生的意义

季承在新出版的季羡林文集《天竺心影》的序言《也谈人生》中说,“人生是有意义的,而人类则是没有意义的。”并且随后做了阐释,之所以说“人类没有意义”,是因为这是一个终极问题,问“人类的意义是什么”就像问“宇宙的尽头在哪里”一样,将永不会得到答案。

对于个人的一生而言,人生是有意义的。人生最大的意义就是劳作,因为人类社会的基本运行原理,就是通过付出来换取生存资源。

我觉得人类作为星球上的物种,它的意义仅仅是繁衍,而不是文明。整个人类的意义不在于建立高楼大厦,不在于新能源汽车,更不在于AI。

作为个体的意义,我十分同意季承的观点,而且在很多文学作品中,作者都表达了同样的观点,典型的就有《月亮和六便士》和《平凡的世界》,东方的路遥和西方的毛姆都把人类的劳动赋予了至高的意义。

世界上只有少数人能够最终达到自己的理想。我们的生活很单纯,很简朴,我们并不野心勃勃,如果说我们也有骄傲的话,那是因为在想到通过双手获得的劳动成果时的骄傲。我们对别人既不嫉妒,更不怀恨。我亲爱的先生,有人认为劳动的幸福是句空话,对我说来可不是这样。
——《月亮和六便士》

只能永远把艰辛的劳动看作是生命的必要;即使没有收获的指望,也心平气静地继续耕种。
——路遥《平凡的世界》

我在十几岁就翻开了《平凡的世界》,和书中开篇时孙少平一样的年纪。在我30岁彻读这本书之前,我一直以为孙少平和所有电视剧男主一样,会是一个披着主角光环的男人,他会和干部家的独生女、大学生、新闻记者、白富美田晓霞结婚,他会从一个农民家的苦孩子成为优秀的知识分子。

当然,看过书的朋友都知道,孙少平到最后“仅仅”是一个靠力气讨饭吃的旷工,和一个寡妇走到了一起。

我开始感叹,《平凡的世界》绝对算得上是时代当中最伟大的著作。故事完整、人物鲜明,又极具时代烙印,而这些都不是最重要的。它的伟大之处在于,这是一部中国土地上西西弗神话。我们拼尽全力的一生,可能一文不值,但从不气馁地勇敢生活,是我们活着的全部意义。

历史上所有伟大的人,都遵从着这个规律,无论是孔夫子、司马迁、牛顿、爱因斯坦……他们之所以伟大,就是因为在自己的岗位上不停地耕耘。

但是,我又有些不认同“人生的意义在于劳作”这个观点。

对于没有生命的物品而言,“意义”很好定义,就是它的用处。

一支笔不能写字,就失去了它的意义。

一个只能发“新年快乐”弹幕的 B 站毫无意义,一个只能发“新年快乐”的春晚也失去了它的意义。

我二姑家养了两只狗,一只狗会冲着来客卖力地汪汪叫,另一只狗则对于访客不问不顾。一只不会看门的狗,还有它的意义吗?

因此我想,对于有生命(或许是有思考)的生物来讲,他个体的意义,也不应该以外在的普世标准来定义。

一只看门狗不能看门,对于人类来说就没有意义。但我恰恰觉得,当一只狗成为了人类看门的工具,它的狗生就失去了意义。

人类更是如此,个体的意义往往被圈定在社会契约之中,但每一个个体有自己的思考,当一个画家按照自己的意志创作出满意之作却卖不上钱不被市场认可的时候,他的行为是否还有意义呢?

于是,我想升级一下季承所谓意义的探讨:不断地为了生存劳作是个人在人类群体中的意义,而一味工作成为打工机器,我们也像是看门狗一样,失去了自身的人生意义。所以,从这个角度讲,我更认同当年明月的那句:

成功只有一个——按照自己的方式,去度过人生。
——当年明月《明朝那些事儿》

说到这里,我想顺便提一下。有些人总是在不断的强调工作中的职业性,说员工不应该把情绪带到工作当中。这让我想起科幻剧《人生切割术》,这个公司的员工到了公司之后,就会删除与工作无关的记忆,而下班之后,就会只有自己私下的记忆,甚至不认识同事。

如果我们在工作中抽离自我的情感,那和 AI 有什么区别,工作的意义又在哪里呢?

附:季承《也谈人生》

谈论人生者多矣。然而究竟什么是人生?答案必定众说纷纭。以我之见,人生是人的生命的一个过程。有始有终,有头有尾,明确无误。对每个个人说来,人生只有一次,而且为时甚短。而对于人的集合体的人类说来则不同,它也有生命,也是有始有终。不过,它的周期要长得多。至于人类的生命是否只有一次,现在还不好说。

人生有没有意义?人类又有什么意义?我说,人生是有意义的,而人类则是没有意义的。询问人类的存在有没有意义,就等于询问地球或宇宙的存在有没有意义一样,是得不到答案的。人生的意义是什么呢?它的意义就在于为没有意义的人类工作、服务等等,其目的不外乎是使人类生活得更好并得以延续。我这样说,恐怕会遭到反对,可是你细想一下,或许就会同意我的这种说法。人生既有这样的意义,我们就要把它过好。如何过好一生,道理多了去了。几千年的人类文明史中探讨出来的人生之道也多了去了。我觉得,不管道理有千条万条,人生的最大意义是在于劳作,也就是劳动、工作。因为,只有每个人都劳作,个人才能生存,血脉才能延续,社会也才能生存、延续。所以,一个人既然获得了生命,活在世上,就要劳作,就要辛勤劳作,使自己得以生存,使家庭得以繁衍,使社会得以昌盛,使国家得以富强,使世界得以发展,也就是使人类得以存在并很好地延续。

所以说,劳作的人生意义大矣!至于说人类的存在是没有意义的,或许会有许多人不赞成这种说法。我们不必为此展开辩论,更不必给对方扣什么大帽子。因为有意义也好,没有意义也好,反正人类是现实的存在,你又是其中一员,你有义务使它发展延续。你只要这样做了,你的人生就具有了意义,或者说价值,并不一定要去理会人类存在的意义。如此而已。阿门!

12月碎片-2024:抓到了AI胡说八道的证据

作者 mukti
2025年5月16日 18:57

wildcard

万能福的英文是 wildcard,野卡,来自扑克牌术语,意思是这是一张“百搭牌”。b

在计算机领域, wildcard 翻译为“通配符”,意思是可以匹配任意字符,通常用“*”表示,在台湾叫“萬用字元”。

wildcard 还可以表示不确定的因素,翻译为“未知数”。比如你明天约了去爬山,但天气可能是个未知数,万一下雨就去不成了。The weather is a wildcard.

十二日

看了几集最近大火的电视剧《我是刑警》。

像是一个看过答案的老师在讲卷子,还是那种有领导旁听的课,特意安排了学习好的和学习差的答题。

十四日和十五日

日光很好,但是天气很冷

去海边看了日落

看了海上的月光

还看了日出

阿那亚圣诞树点亮仪式,年轻人太会玩了,无人机放烟花,还人工下起了雪。

二十二日

看了部分《房思琪的初恋乐园》,摘抄了俩句子:

“一个人能够经验过最好的感觉,就是明白自己只要付出努力就一定有所回报。这样来,无论努力不努力都很愉快。”

“怡婷发现自己从今以后,活在世界上,将永远像一个丧子的人逛游乐园。”

二十四日

王美丽:“AI识别不了AI,就像傻子识别不了傻子。”

三十一日

新年快乐,今日份买醉。

看到网友发的句子:

我想搜一下出处,于是抓到了 AI 胡说八道的证据:

首先,没有《荣根淖》这个玩意儿,洪应明的那应该是《菜根谭》。
其次,《菜根谭》里面没有这句。

这句话应该是网友拼凑,没有整句的古籍出处。

我其实非常好奇,“知了爱学”是怎么把“菜根谭”学成“荣根淖”的。

我还非常好奇,现在 AI 在大家日常中的渗透究竟到了什么程度。作为一个程序员(包括我身边的程序员),大家几乎都会借用 AI 工具。AI 可以直接生成代码,但是这些代码也不一定就是100%可用,在 AI 之前,我们其实也可以百度一些现成的代码。AI 让这个过程更方便了,但是并没有变得更高级。我还没见身边人有谁能完全用 AI 写代码来产出一个完整的功能。

在文章生成上,我接触的不多,但我觉得 AI 文章应该空洞得很。因为它的原理就是借助海量的文章拼凑。

我常去汉堡王吃午饭,每次我都会在当日有效的优惠中挑一挑。我非常希望有一款 AI 能够帮助我自动下单:如果鸡腿皇堡有优惠就帮我选个薯条可乐套餐,或者选择鸡翅可乐套餐,如果没有优惠,希望帮我选一个更便宜的脆鸡堡套餐。不知道我的有生之年能不能有 ai 帮我下单。

当然,如果有一天我月入百万,我也不需要 AI 帮我挑了,点最贵的就好了。

还有一件最近发生的事,我的床搭子王美丽有一天突发奇想,希望 AI 能够帮她把正在收听的小宇宙播客整理成文字。

我不太相信 AI 能这么方便。随后,王美丽打开了小红书,搜到一个方法,在通义千问中有一个“音视频速读”智能体可以做到。

我看到了 AI 发展的方向,希望可以帮人类把“小红书搜一下”这个操作跳过去。

我还听说有公司开发了一款 AI 办公,如果员工上班打卡,只需要跟 AI 助手说“我要打卡”就可以了。呃……按照人类进化的理想状态难道不应该是,当我开始工作了就自动算作已打卡吗,非得要一个“我要开动了”的仪式感吗?

我们除了要忍受 AI 的无能,还要忍受制造 AI 的产品经理的无能。

我觉得真正的 AI 应该是让我们干的活更少,跳过浪费时间的事,而不是找一个三天两头让我大无语的智障助理。

其它

B 站视频下载,用:

https://cobalt.tools

支持 B 站、fb、x、youtube、xhs 等等。

分享几个有趣的定律

作者 mukti
2025年3月18日 22:26

英国程序员 Dave Kerr 整理了一些软件开发行业的现象,比如你害怕某个地方出 bug 就真的会出 bug (墨菲定律)。这些现象其实不止存在于软件开发中,而且有些非常有趣,我挑了几个跟大家分享一下。

坎宁汉姆定律 (Cunningham's Law)

在网络上想得到正确答案的最好方法不是提问题,而是发布一个错误的答案。

这个大概类似于,你在网上问“200以下最好的耳机是什么”没人理你,而当你说“某某绝对是200以下最好的耳机”反而会得到更多优秀的耳机推荐。

邓宁-克鲁格效应 (The Dunning-Kruger Effect)

无能的人往往不会意识到自己的无能。而得出正确答案所需要的技能,正是你认识到何为正确答案所需要的技能。 —— David Dunning

研究表明,在一项任务中能力水平较低的人会更容易高估自己的能力。我觉得这个也可以解释为“初生牛犊不怕虎”。能力差的人相比之下更难以考虑做事当中的难度。

与此类似的现象,那些不了解的人往往把事情想的很简单。比如你是做设计的,朋友就会觉得你画个简单的 logo 就赚1000块也太容易了。比如你在北京,外地朋友就会觉得你去个天安门广场是个捎带手的事儿。

布鲁克斯法则 (Brooks's Law)

软件开发后期,添加人力只会使项目开发得更慢

英国有句谚语“Nine women can't make a baby in one month”,有些工作量是不能拆分的。有的领导总以为1个人干2周的活,2个人1周就能完成,事实上2个人可能2周也完成不了。

古德哈特定律 (Goodhart's Law)

当压力施于其上以进行控制时,任何观测到的统计恒性都倾向消散。 —— Charles Goodhart

另见:

当一个措施本身成为目标时,它就不再是一个好的措施。 —— Marilyn Strathern

这个定律最好的解释就是 KPI。KPI 本来只是一种手段,但是渐渐地变成了目标,当员工过度地在意 KPI 量化的数值,这个公司肯定在走下坡路了。

健身是健康的手段、户外是放松的手段、旅行是快乐的手段,当你过分在意健身要不要穿 lululemon、户外要不要发朋友圈、旅行只是为了打卡拍照,那这些事情都已经失去了原本的意义。

汉隆的剃刀 (Hanlon's Razor)

能解释为愚蠢的,就不要解释为恶意的。 —— Robert J. Hanlon

这个大家大概早听说过,重要的是,已经有研究结果证实,如果把一些不好的结果解释为恶意,会比“解释为愚蠢”带来更为糟糕的结果。

还有一个剃刀叫奥卡姆剃刀,在此不解释了。

侯世达定律 (Hofstadter's Law)

即使考虑到侯世达定律,它也总是比你预期的要长。 —— Douglas Hofstadter

这句话可能比较难理解。在软件开发当中,程序员其实很难预估完成一个版本开发具体需要多长时间,所以在预估工期的时候往往会多预留一些时间,以防止一些没考虑到的情况发生。但是,即便考虑到了会有一些意外情况,依旧很难准时完成任务。——即便你知道了“侯世达定律”,预留一些时间,实际工作依然要比预估的要长。

帕金森定理 (Parkinson's Law)

在工作能够完成的时限内,工作量会一直增加,直到所有可用时间都被填满为止。

这个和上面的侯世达定律有些相像。我相信很多人都有过这种经历,你本来计划下班前2小时就把活干完,然后摸鱼2小时下班,结果发现,要么你干活过程中不断有新的工作量产生,要么干完了又来了新的任务,摸鱼时间一点都没有给你留下。

得墨忒耳定律 (The Law of Demeter)

别和陌生人讲话。

得墨忒耳定律又称最少知识原则,是一条与面向对象语言有关的软件设计原则。

得墨忒耳定律可以这么解释:你在你职责范围内把你专业的事情做好就可以了,不要去别人的工作范围里瞎哔哔。

举个简单的例子,菜农每天早上把蔬菜给菜贩子,菜贩子负责从地头运输给饭馆。有一天菜农正好要进城,他想顺带替菜贩子把菜给饭馆,这样菜贩子省事,自己也不用在地头等菜贩子来,可以提早出发。(菜农只是偶尔进城,不会因为直接联系饭馆而抢了菜贩子的生意)。

乍一看是一件很合理的事情,但是如果这件事放大来看,菜农进城第一次和饭馆接头,需要确认对方身份、商定时间,还要考虑支付、结算方式,如何和菜贩子保证自己供应了足额的蔬菜……问题可太多了,这仅仅是一个“菜农进城”的简单例子,如果在一个复杂系统中,最高效的运作方式就是各司其职,如果有一方擅自越权,哪怕是好心好意,也会带来更大的运作成本。

帕金森琐碎定理 (The Law of Triviality)

该定理显示,群体将给予更多的时间和注意力来处理琐碎的问题,而不是用来处理严肃而实质性的问题。

很多人已经觉察到,这世界就是一个草台班子。大家可以留意观察下,当一群人开会讨论一个议题的时候,话题很容易跑偏,大家总是会花大量时间去讨论一些看起来与议题确实有关,但其实没有那么重要的或者不需要浪费所有人时间去讨论的小细节。

死海效应 (The Dead Sea Effect)

Bruce F. Webster 的博客文章
"... 那些更有才华,更有效率的 IT 工程师最有可能离开——消失 ... (而那些倾向于)留下来的“剩下的人”——是最没有才华和效率的 IT 工程师。"

死海效应表明,在任何一个组织中,工程师的技能、才华和效能往往与他们在公司的时间呈反比。换句话说,有能力的人在哪儿都有饭吃。

放在生活哲学当中,家底厚实的人往往有恃无恐、勇往直前从而获得更大的成功。身负生活重担的人总是患得患失,愈加难以翻身。

不需要会编程,不用写代码,四步教会你从零基础用 Hexo 建立自己的网站!(一)

作者 mukti
2025年3月12日 16:03

本系列文章整理自我之前的课程,受众是毫无编程经验的高中生,只要跟着做,肯定能成功!

我们的最终目标是建立自己的网站,主要使用 Hexo 这个程序,你可以理解为它是一个软件,帮助你生成网站。Hexo 被定性为一个博客网站,你或许接触过一些博客网站,比如新浪微博,注册一个账号,发布一些内容,打开你的主页之后,其实,这就是你的网站。

但是新浪微博的样式只有一种,我们自己搭建的网站可以自定义样式,因为我们自己不写代码,所以我们要用“现成”的样式,不过我们有几百个样式可以选择,这里 https://hexo.io/themes 列出了所有 Hexo 可以免费使用的模板,只要跟着做,就可以建一个上面网址所列的任意一个样子的网站。


本次需要完成4个软件的安装,就是开始建站的准备工作,过程中如果有任何困难可以随时联系我。

1. 安装 git

使用 git,可以更方便从 github 或者 gitee 下载代码,也可以方便地将我们写好的代码上传到 gitee 的“仓库”中。

下载地址:https://git-scm.com/downloads

选择与自己的操作系统对应的版本下载安装。

git 安装之后,并不是像其他的桌面软件一样,它不是一个界面化的软件,而是需要可以在命令行使用的,可以用以下方式看看是否安装成功。

检查是否安装成功

Windows 系统中打开 PowerShell。
MacOS 打开“终端”。

输入以下代码,然后按回车键:

git --version

如果能看到“git version ……”代表安装成功。

git

2. 安装编辑器 VSCode

VSCode 是前端程序员比较青睐的代码编辑器,其他编辑器也可以。

https://code.visualstudio.com/

下载与你电脑系统对应的版本。

3. 安装 Node

因为我们使用了 Hexo 这个建站程序。Hexo 需要在 Node 环境中运行,所以我们要在电脑上安装后 Node 做前提,才能使用 Hexo。

下载链接:https://nodejs.org/zh-cn (选择长期维护版(LTS)下载即可)或者 https://dev.nodejs.cn

安装完了 Node 之后,我们就可以在“命令行”中使用 node 命令。使用方法:

Windows 系统打开 PowerShell。MacOS 打开 “终端”。输入:

node --version

和上文中我们检验 git 安装类似,可以看到屏幕显示 Node 的版本信息,表示已经安装成功。

Node 安装成功的同时,还为我们捆绑安装了另一个命令 npm,也是同样的方式输入:

npm --verson

只要 node 安装成功了,npm 一定也会一起安装成功。以后我们可能会经常用到以这个 npm 开头的命令代码。

4. 安装 Hexo

前面提到过,我们要借助 Hexo 这个建站程序,所以我们需要在电脑里安装。

与一般的软件安装不同,Hexo 需要通过命令行安装,而不是一般的下载一个安装包去安装。

具体方法如下:

打开命令行工具,前面我们用过几次了(Windows 打开 PowerShell,MacOS 打开终端):

输入以下代码,这个就是我们前面提到的 npm 命令:

npm i hexo -g

(i 是 install 的缩写,就是安装的意思,-g 是 global 的缩写,全局的意思,不需要记住)

输入上方的安装命令之后,可能需要等待一段时间。

安装成功大概显示如下:

上面步骤都完成后,准备工作就完成了。下次课我们将学习如何使用 Hexo,你也可以自己浏览 Hexo 的文档,看不太懂也没关系,不要着急,下节我们过一遍很快就能掌握。

下一节:https://feizhaojun.com/?p=4126

以Ant Design Pro为例详解Redux、redux-saga、dva

作者 mukti
2025年3月7日 10:07

原文链接:https://www.cnblogs.com/colorful-coco/p/9454315.html

Ant Design Pro 是一个企业级中后台前端/设计解决方案。本地环境需要安装 node 和 git,技术栈基于 ES2015+、React、dva、g2 和 antd。

参考:

1 预备知识

1.1 Redux

Redux 是 JavaScript 状态容器,提供可预测化的状态管理。Redux 除了和 React 一起用外,还支持其它界面库。

1.1.1 connect()

connect([mapStateToProps], [mapDispatchToProps], [mergeProps], [options])

连接 React 组件与 Redux store。

[mapStateToProps(state, [ownProps]): stateProps](Function)

如果定义该参数,组件将会监听 Redux store 的变化。只要 Redux store 发生改变,mapStateToProps 函数就会被调用,该回调函数必须返回一个纯对象,这个对象会与组件的 props 合并。

  • 函数将被调用两次。第一次是设置参数,第二次是组件与 Redux store 连接:connect(mapStateToProps, mapDispatchToProps, mergeProps)(MyComponent)
  • connect 函数不会修改传入的 React 组件,返回的是一个新的已与 Redux store 连接的组件,而且你应该使用这个新组件。
  • mapStateToProps 函数接收整个 Redux store 的 state 作为 props,然后返回一个传入到组件 props 的对象。

注入 dispatchtodos

function mapStateToProps(state) {
  return { todos: state.todos }
}
export default connect(mapStateToProps)(TodoApp)

// 注入 dispatch 和全局 state
export default connect(state => state)(TodoApp)
// 不要这样做!这会导致每次 action 都触发整个 TodoApp 重新渲染
// 最好在多个组件上使用 connect(),每个组件只监听它所关联的部分 state。

1.1.2 Action

Action 是把数据从应用(这里之所以不叫 view 是因为这些数据有可能是服务器响应,用户输入或其它非 view 的数据 )传到 store 的有效载荷。它是 store 数据的唯一来源。一般来说你会通过 store.dispatch() 将 action 传到 store。

Action 本质上是 JavaScript 普通对象。我们约定,action 内必须使用一个字符串类型的 type 字段来表示将要执行的动作。

1.2 redux-saga

redux-saga 是一个 redux 中间件,意味着这个线程可以通过正常的 redux action 从主应用程序启动,暂停和取消,它能访问完整的 redux state,也可以 dispatch redux action。

redux-saga 使用了 ES6 的 Generator 功能,让异步的流程更易于读取,写入和测试。通过这样的方式,这些异步的流程看起来就像是标准同步的 Javascript 代码。

effects: {
  *create({ payload: values }, { call, put }) {
    yield call(usersService.create, values);
    yield put({ type: 'reload' });
  },
  *reload(action, { put, select }) {
    const page = yield select(state => state.users.page);
    yield put({ type: 'fetch', payload: { page } });
  },
}

1.2.1 call(fn, ...args)

创建一个 Effect 描述信息,用来命令 middleware 以参数 args 调用函数 fn

  • fn: Function:一个 Generator 函数, 也可以是一个返回 Promise 或任意其它值的普通函数。
  • args: Array<any>:传递给 fn 的参数数组。

1.2.2 put(action)

创建一个 Effect 描述信息,用来命令 middleware 向 Store 发起一个 action。 这个 effect 是非阻塞型的,并且所有向下游抛出的错误(例如在 reducer 中),都不会冒泡回到 saga 当中。

1.2.3 select(selector, ...args)

创建一个 Effect,用来命令 middleware 在当前 Store 的 state 上调用指定的选择器。

  • selector: Function:一个 (state, ...args) => args 的函数。它接受当前 state 和一些可选参数,并返回当前 Store state 上的一部分数据。

2 dva

dva 首先是一个基于 redux 和 redux-saga 的数据流方案,然后为了简化开发体验,dva 还额外内置了 react-router 和 fetch,所以也可以理解为一个轻量级的应用框架。

dva 是基于现有应用架构 (redux + react-router + redux-saga 等)的一层轻量封装,没有引入任何新概念。dva 帮你自动化了Redux 架构一些繁琐的步骤,比如redux store 的创建,中间件的配置,路由的初始化等等,只需写几行代码就可以实现上述步骤。

2.1 使用 antd

通过 npm 安装 antdbabel-plugin-importbabel-plugin-import 是用来按需加载 antd 的脚本和样式的。编辑 .webpackrc,使 babel-plugin-import 插件生效。

// .webpackrc.js
extraBabelPlugins: [['import', { libraryName: 'antd', libraryDirectory: 'es', style: true }]]

2.2 dva 应用

// src/index.js 入口js
import dva from 'dva';
import browserHistory from 'history/createBrowserHistory';
import createLoading from 'dva-loading';

// 1. Initialize
const app = dva({
    history: browserHistory(),
});
// 2. Plugins
app.use(createLoading());
// 3. Model
app.model(require('./models/global').default);
app.model(require('./models/menu').default);
// 4. Router
app.router(require('./router').default);
// 5. Start
app.start('#root'); // 启动应用

dva(opts) 创建应用,返回 dva 实例。(注:dva 支持多实例)

opts 包含:

  • history:指定给路由用的 history,默认是 hashHistory

2.3 定义路由

app.router(({ history, app }) => RouterConfig)

注册路由表,推荐把路由信息抽成一个单独的文件,这样结合 babel-plugin-dva-hmr 可实现路由和组件的热加载(只更新页面修改的部分,不会刷新整个页面)。

// .webpackrc.js
env: {
  development: {
    extraBabelPlugins: ['dva-hmr'],
  },
},

2.4 定义 Model(处理数据和逻辑)

dva 通过 model 的概念把一个领域的模型管理起来,包含同步更新 state 的 reducers,处理异步逻辑的 effects,订阅数据源的 subscriptions 。

import * as usersService from '../services/users';

export default {
  namespace: 'users',
  state: {
    list: [],
    total: null,
    page: null,
  },
  reducers: {
    save(state, { payload: { data: list, total, page } }) {
      return { ...state, list, total, page };
    },
  },
  effects: {
    *fetch({ payload: { page = 1 } }, { call, put }) {
      const { data, headers } = yield call(usersService.fetch, { page });
      yield put({
        type: 'save',
        payload: {
          data,
          total: parseInt(headers['x-total-count'], 10),
          page: parseInt(page, 10),
        },
      });
    },
    *remove({ payload: id }, { call, put }) {
      yield call(usersService.remove, id);
      yield put({ type: 'reload' });
    },*reload(action, { put, select }) {
      const page = yield select(state => state.users.page);
      yield put({ type: 'fetch', payload: { page } });
    },
  },
  subscriptions: {
    setup({ dispatch, history }) {
      return history.listen(({ pathname, query }) => {
        if (pathname === '/users') {
          dispatch({ type: 'fetch', payload: query });
        }
      });
    },
  },
};

namespace:model 的命名空间,同时也是他在全局 state 上的属性

state:初始值

reducers:以 key/value 格式定义 reducer。用于处理同步操作,唯一可以修改 state 的地方。由 action 触发

effects:以 key/value 格式定义 effect。用于处理异步操作和业务逻辑,不直接修改 state。由 action 触发,可以触发 action,可以和服务器交互,可以获取全局 state 的数据等等。

subscriptions:以 key/value 格式定义 subscription。subscription 是订阅,用于订阅一个数据源,然后根据需要 dispatch 相应的 action。在 app.start() 时被执行,数据源可以是当前的时间、服务器的 websocket 连接、keyboard 输入、geolocation 变化、history 路由变化等等。

app.model(model):注册 model

2.5 编写UI:Component 并 connect 起来

import React from 'react';
import { connect } from 'dva';
import { Table, Pagination, Popconfirm, Button } from 'antd';
import { routerRedux } from 'dva/router';
import styles from './Users.css';
import { PAGE_SIZE } from '../../../../constants';
import UserModal from './UserModal';

function Users({ dispatch, list: dataSource, loading, total, page: current }) {
  function deleteHandler(id) {
    dispatch({
      type: 'users/remove',
      payload: id,
    });
  }

  function pageChangeHandler(page) {
    dispatch(
      routerRedux.push({
        pathname: '/users',
        query: { page },
      })
    );
  }

  const columns = [
    {
      title: 'Username',
      dataIndex: 'username',
      key: 'username',
      render: text => <a href="">{text}</a>,
    },
    {
      title: 'Street',
      dataIndex: 'address.street',
      key: 'street',
    },
    {
      title: 'Website',
      dataIndex: 'website',
      key: 'website',
    },
    {
      title: 'Operation',
      key: 'operation',
      render: (text, record) => (
        <span className={styles.operation}>
          <Popconfirm title="Confirm to delete?" onConfirm={deleteHandler.bind(null, record.id)}>
            <a href="">Delete</a>
          </Popconfirm>
        </span>
      ),
    },
  ];

  return (
    <div className={styles.normal}>
      <div>
        <Table
          columns={columns}
          dataSource={dataSource}
          loading={loading}
          rowKey={record => record.id}
          pagination={false}
        />
        <Pagination
          className="ant-table-pagination"
          total={total}
          current={current}
          pageSize={PAGE_SIZE}
          onChange={pageChangeHandler}
        />
      </div>
    </div>
  );
}

function mapStateToProps(state) {
  const { list, total, page } = state.users;
  return {
    loading: state.loading.models.users,
    list,
    total,
    page,
  };
}

export default connect(mapStateToProps)(Users);

2.6 相关概念

dva 提供了 connect 方法

这个 connect 就是 react-redux 的 connect 。 connect 方法返回的也是一个 React 组件,通常称为容器组件。因为它是原始 UI 组件的容器,即在外面包了一层 State。connect 方法传入的第一个参数是 mapStateToProps 函数,mapStateToProps 函数会返回一个对象,用于建立 State 到 Props 的映射关系。

数据的改变发生通常是通过用户交互行为或者浏览器行为(如路由跳转等)触发的,当此类行为会改变数据的时候可以通过 dispatch 发起一个 action,如果是同步行为会直接通过 Reducers 改变 State ,如果是异步行为(副作用)会先触发 Effects 然后流向 Reducers 最终改变 State

Model 对象的属性

  • namespace: 当前 Model 的名称。整个应用的 State,由多个小的 Model 的 State 以 namespace 为 key 合成
  • state: 该 Model 当前的状态。数据保存在这里,直接决定了视图层的输出
  • reducers: Action 处理器,处理同步动作,用来算出最新的 State
  • effects:Action 处理器,处理异步动作

Action 是一个普通 javascript 对象

它是改变 State 的唯一途径。无论是从 UI 事件、网络回调,还是 WebSocket 等数据源所获得的数据,最终都会通过 dispatch 函数调用一个 action,从而改变对应的数据。action 必须带有 type 属性指明具体的行为,其它字段可以自定义,如果要发起一个 action 需要使用 dispatch 函数;需要注意的是 dispatch 是在组件 connect Models以后,通过 props 传入的。在 dva 中,connect Model 的组件通过 props 可以访问到 dispatch,可以调用 Model 中的 Reducer 或者 Effects。

dispatch({
  type: 'user/add', // 如果在 model 外调用,需要添加 namespace
  payload: {}, // 需要传递的信息
});

Reducer函数接受两个参数

之前已经累积运算的结果和当前要被累积的值,返回的是一个新的累积结果。在 dva 中,reducers 聚合积累的结果是当前 model 的 state 对象。通过 actions 中传入的值,与当前 reducers 中的值进行运算获得新的值(也就是新的 state)。

state: {
  list: [],
  total: null,
  page: null,
},
reducers: {
  save(state, { payload: { data: list, total, page } }) {
    return { ...state, list, total, page };
  },
}

Effect

Action 处理器,处理异步动作,基于 Redux-saga 实现。Effect 指的是副作用。根据函数式编程,计算以外的操作都属于 Effect,典型的就是 I/O 操作、数据库读写。

dva 提供多个 effect 函数内部的处理函数,比较常用的是 callput

  • call:执行异步函数
  • put:发出一个 Action,类似于 dispatch
effects: {
  *create({ payload: values }, { call, put }) {
    yield call(usersService.create, values);
    yield put({ type: 'reload' });
  },
  *reload(action, { put, select }) {
    const page = yield select(state => state.users.page);
    yield put({ type: 'fetch', payload: { page } });
  },
}

Router

这里的路由通常指的是前端路由,由于我们的应用现在通常是单页应用,所以需要前端代码来控制路由逻辑,通过浏览器提供的 History API 可以监听浏览器url的变化,从而控制路由相关操作。

dva 实例提供了 router 方法来控制路由,使用的是react-router。

在组件设计方法中,我们提到过 Container Components,在 dva 中我们通常将其约束为 Route Components,因为在 dva 中我们通常以页面维度来设计 Container Components。

所以在 dva 中,通常需要 connect Model的组件都是 Route Components,组织在 /routes/ 目录下,而 /components/ 目录下则是纯组件。

组件设计

React 应用是由一个个独立的 Component 组成的,我们在拆分 Component 的过程中要尽量让每个 Component 专注做自己的事。

一般来说,我们的组件有两种设计:Container Component、Presentational Component

Container Component

Container Component 一般指的是具有监听数据行为的组件,一般来说它们的职责是绑定相关联的 model 数据,以数据容器的角色包含其它子组件。

Presentational Component

它不会关联订阅 model 上的数据,而所需数据的传递则是通过 props 传递到组件内部。

对组件分类,主要有两个好处:让项目的数据处理更加集中;让组件高内聚低耦合,更加聚焦;

试想如果每个组件都去订阅数据 model,那么一方面组件本身跟 model 耦合太多,另一方面代码过于零散,到处都在操作数据,会带来后期维护的烦恼。

除了写法上订阅数据的区别以外,在设计思路上两个组件也有很大不同。 Presentational Component是独立的纯粹的,可以参考 ant.design UI组件的React实现 ,每个组件跟业务数据并没有耦合关系,只是完成自己独立的任务,需要的数据通过 props 传递进来,需要操作的行为通过接口暴露出去。 而 Container Component 更像是状态管理器,它表现为一个容器,订阅子组件需要的数据,组织子组件的交互逻辑和展示。

3 其它

3.1 roadhog

roadhog 是和 webpack 相似的库,起的是 webpack 自动打包和热更替的作用

roadhog 是一个 cli 工具,提供 devbuildtest 三个命令,分别用于本地调试、构建和测试,并且提供了特别易用的 mock 功能。在体验上,保持了和 create-react-app一致(如 redbox 显示出错信息、HMR、ESLint 出错提示等等),并且提供了 JSON 格式的配置方式。如果 create-react-app 的默认配置不能满足需求,而他又不提供定制的功能,于是基于他实现了一个可配置版。所以如果既要 create-react-app 的优雅体验,又想定制配置,那么可以试试 roadhog。

## Install globally or locally 
$ npm i roadhog -g

## Local development 
$ roadhog dev

## Build 
$ roadhog build

## Test 
$ roadhog test

roadhog dev 支持 mock, 在.roadhogrc.mock.js 里配置

export default {
  // Support type as Object and Array
  'GET /api/users': { users: [1,2] },
  // Method like GET or POST can be omitted(省略)
  '/api/users/1': { id: 1 },
  // Support for custom functions, the API is the same as express@4
  'POST /api/users/create': (req, res) => { res.end('OK'); },
};

roadhog 的 webpack 部分是基于 af-webpack 的实现。在项目根目录创建 .webpackrc 进行配置,格式是 JSON。

3.2 react-router-redux 和 dva

redux 是状态管理的库,router 是(唯一)控制页面跳转的库。两者都很美好,但是不美好的是两者无法协同工作。换句话说,当路由变化以后,store 无法感知到。于是便有了 react-router-redux

react-router-redux 是 redux 的一个中间件,主要作用是:加强了React Router库中history这个实例,以允许将history中接受到的变化反应到state中去。

从代码上讲,主要是监听了 history 的变化。dva 在此基础上又进行了一层代理,把代理后的对象当作初始值传递给了 dva-core,方便其在 model 的 subscriptions 中监听 router 变化。

3.3 dva/fetch

异步请求库,输出 isomorphic-fetch 的接口。

3.4 dva-loading

dva 有一个管理 effects 执行的 hook,并基于此封装了 dva-loading 插件。通过这个插件,我们可以不必一遍遍地写 showLoading 和 hideLoading,当发起请求时,插件会自动设置数据里的 loading 状态为 true 或 false 。然后我们在渲染 components 时绑定并根据这个数据进行渲染。

// 1、注册 dva-loading 插件
import dva from 'dva';
import createLoading from 'dva-loading';
const app = dva();
app.use(createLoading());

// 2、从store中获取loading状态
import React from 'react';
import { connect } from 'dva';
import { Table } from 'antd';

function Users({ dispatch, list: dataSource, loading }) {
  const columns = [
    {
      title: 'Username',
      dataIndex: 'username',
      key: 'username',
      render: text => <a href="">{text}</a>,
    },
    {
      title: 'Street',
      dataIndex: 'address.street',
      key: 'street',
    },
    {
      title: 'Website',
      dataIndex: 'website',
      key: 'website',
    }
  ];

  return (
    <div className={styles.normal}>
      <Table
        columns={columns}
        dataSource={dataSource}
        loading={loading}
        rowKey={record => record.id}
        pagination={false}
      />
    </div>
  );
}

function mapStateToProps(state) {
  const { list } = state.users;
  return {
    loading: state.loading.models.users,
    list,
  };
}

export default connect(mapStateToProps)(Users);

3.5 Fragment

React 中常见模式是为一个组件返回多个元素。为了包裹多个元素我们写过很多的 div 和 span,进行不必要的嵌套,无形中增加了浏览器的渲染压力。

react15版以前,render 函数的返回必须有一个根节点,否则报错,为满足这一原则我会使用一个没有任何样式的 div 包裹一下。

import React from 'react';
export default function () {
    return (
        <div>
            <div>一步 01</div>
            <div>一步 02</div>
            <div>一步 03</div>
        </div>
    );
}

react 16版开始, render支持返回数组,这一特性已经可以减少不必要节点嵌套

import React from 'react';
export default function () {
    return [
        <div>一步 01</div>,
        <div>一步 02</div>,
        <div>一步 03</div>
    ];
}

而且React 16为我们提供了Fragment。Fragment与Vue.js的 <template> 功能类似,可做不可见的包裹元素。

import React from 'react';
export default function () {
    return (
        <React.Fragment>
            <div>一步 01</div>
            <div>一步 02</div>
            <div>一步 03</div>
        </React.Fragment>
    );
}

参考:https://segmentfault.com/a/1190000013220508

4 附录:ES6 相关知识点

4.1 Generator 函数

Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同。

形式上,Generator 函数是一个普通函数,但是有两个特征。一是,function 关键字与函数名之间有一个星号;二是,函数体内部使用yield表达式,定义不同的内部状态。

Generator 函数有多种理解角度。语法上,首先可以把它理解成,Generator 函数是一个状态机,封装了多个内部状态。执行 Generator 函数会返回一个遍历器对象,也就是说,Generator 函数除了状态机,还是一个遍历器对象生成函数。返回的遍历器对象,可以依次遍历 Generator 函数内部的每一个状态。

function* helloWorldGenerator() {
  yield 'hello';
  yield 'world';
  return 'ending';
}
var hw = helloWorldGenerator();

上面代码定义了一个 Generator 函数helloWorldGenerator,它内部有两个yield表达式(helloworld),即该函数有三个状态:hello,world 和 return 语句(结束执行)。

然后,Generator 函数的调用方法与普通函数一样,也是在函数名后面加上一对圆括号。不同的是,调用 Generator 函数后,该函数并不执行,返回的也不是函数运行结果,而是一个指向内部状态的指针对象—遍历器对象。

下一步,必须调用遍历器对象的next方法,使得指针移向下一个状态。也就是说,每次调用next方法,内部指针就从函数头部或上一次停下来的地方开始执行,直到遇到下一个yield表达式(或return语句)为止。换言之,Generator 函数是分段执行的,yield表达式是暂停执行的标记,而next方法可以恢复执行。

hw.next() // { value: 'hello', done: false }
hw.next() // { value: 'world', done: false }
hw.next() // { value: 'ending', done: true }
hw.next() // { value: undefined, done: true }

遍历器对象的next方法的运行逻辑如下。

(1)遇到yield表达式,就暂停执行后面的操作,并将紧跟在yield后面的那个表达式的值,作为返回的对象的value属性值。

(2)下一次调用next方法时,再继续往下执行,直到遇到下一个yield表达式。

(3)如果没有再遇到新的yield表达式,就一直运行到函数结束,直到return语句为止,并将return语句后面的表达式的值,作为返回的对象的value属性值。

(4)如果该函数没有return语句,则返回的对象的value属性值为undefined

总结一下,调用 Generator 函数,返回一个遍历器对象,代表 Generator 函数的内部指针。以后,每次调用遍历器对象的next方法,就会返回一个有着valuedone两个属性的对象。value属性表示当前的内部状态的值,是yield表达式后面那个表达式的值;done属性是一个布尔值,表示是否遍历结束。另外需要注意,yield表达式只能用在 Generator 函数里面,用在其他地方都会报错。

4.2 Generator 函数的异步应用

ES6 诞生以前,异步编程的方法,大概有四种:回调函数、事件监听、发布/订阅、Promise 对象。Generator 函数将 JavaScript 异步编程带入了一个全新的阶段。

11月碎片-2024

作者 mukti
2025年3月1日 14:40

11月2日

去了欢乐谷,有东方和西方的鬼,各种次元的帅哥以及各种性别的美女,太欢乐了。

image

11月4日

一年当中只有几天,阳光会照在我工位旁的玻璃墙上。

image

11月6日

我之前分享说,松塔像是这个世界的bug,大熊猫也像bug。

“熊猫”这个词本来单指“小熊猫”,因为它是长的像熊的“猫”,1869年法国传教士在四川发现“大熊猫”时,“大熊猫”还没有名字,给它起名字叫“黑白熊”,当地人叫“花熊”。不久之后动物学家觉得它和小熊猫相近,正式定名Ailuropoda melanoleuca,意思是“类似小猫熊的兽”,并称呼为giant panda(大熊猫)。

因为“大熊猫”知名度骤增,“熊猫”开始更多的指“大熊猫”,而提到“小熊猫”,反而要加上“小”字。

在台湾,熊猫被称作”猫熊“,据说是马英九推行的,因为”熊猫“不是”猫“。在现代汉语中,主名词应该放在后面强调其属性,例如竹鼠是鼠不是竹,糯米酒是酒不是糯米。当然,汉语当中也有很多古汉语词法的遗迹,比如蜗牛不是牛。

11月8日

10月10日,美国一个程序员发现了最新的最大质数,这个数光位数就有4100多万,比上次2018年发现的最大质数多了1600万位。

虽然这个最大质数刚刚被发现,但是它的计算方式在几百年前就已经被提出了,得益于当下强大的 GPU 算力,搭上一些时间,似乎是一个名垂青史的捷径。

不过人类社会有一个规律,越容易达成的事情价值就越小。

我们看似处在一个科技进步的时代,但核心理论很久之前就已经被提出来了,牛顿虽然没有造出人造卫星,但是他完全知道怎么做。就好像几万年前的原始人就已经知道怎么制作一把刀,在历史进程中我们只不过是不断地把一把刀做的更加精致耐用或者成本更低。

这个社会学现象非常有趣。最近 AI 技术站到浪尖,但人工智能的理论在一百年前就存在了。十几年前,就曾经有一个叫 iGod 的网站,可以实现 AI 会话,当时这个 AI 程序自称他是 God,聊天非常的丝滑且自洽。可为什么近几年 AI 才如此突飞猛进呢?

我有一个阴谋论的想法,资本在操作这个世界——或许资本不是决定性因素,但一定是助推因素——每段时间,资本就要找到一个信仰,让工厂加足马力,这样才能持续性的榨取剩余价值。从这个角度讲,“AI改变世界”只是一场让所有工人阶级忙碌起来的骗局罢了。

AI并不能随心所欲,更别说改变世界了。

AI 科学界有一句名言“Functions describe the world”,只要接触过神经网络理论就一定听过。AI 的本质不过是公式,比如我们知道了走路速度,就能知道1小时走多远(推理),而我们通过收集很多人1小时走多远,就能知道人类的走路速度(训练)。AI 的公式更加复杂,不仅只有速度一个参数,可能有几十亿个参数。

虽然 AI 现在已经做到了一些惊人的效果,但是这个世界是 AI 程序远远不能描述的。

就像在微积分里面,一个拥有几十万条边的等边多边形已经非常接近一个圆了,而且完全可以解决生活中很多与圆形有关的问题,但是它和一个真正的圆形有本质的区别,小数 3.14159265 的位数足够用了,但它和π之间永远是一个约等号。

11月10日

到了银杏金黄的季节,今年天气暖和,没有突然的降温,银杏叶也格外的完美。

11月12日

百度发布App“妙哒”,声称不用写代码就能实现想法。我看评论有人说,请妙哒先做一个妙哒出来。哈哈,有一种“以子之矛攻子之盾”的感觉。

image

我想起网上说:苹果手机只能用苹果充电线,华为充电线什么手机都能充。哈哈哈

11月15日

雾好大

image

飞机晚点,旁边座位的一个小姐姐拦住空姐开始抱怨,我觉得这是浪费自己的时间,且徒增空姐烦恼。我们天真地以为问题会反馈到一个地方,有一个人或者机构能够改善。

很多时候都是如此,就像公交车因为堵车晚点,地铁因为天气故障,谁能为乘客的时间买单?乌克兰战争中的亡魂去找谁索命?

个体会被卷入集体的洪流,身处社会之中,就会被他人影响,你自己也会参与到“熵增”当中。

《北国之恋》看到了草太结婚。

image

《北国之恋》是日本1981年播出的24集连续剧,并且每隔两三年就会拍一个剧场版,一共8部,原班人马一直拍到了2001年,演员和剧中角色都从小孩子长成大人。豆瓣评分高达9.5。

草太结婚的场景是这部剧中我最喜欢的情节,语言难于形容,推荐大家去看,不过要花上不少时间。

北国之恋整个故事的基调比较悲情,如果你的内心过于柔软,很容易陷入这个场景里,从而深度迷恋上这个故事。不过,成年人迷恋于某件事已不容易,也是难得的人生体验。

11月16日

去了黄龙。

image

11月17日

去了乐山。

image

几年前来乐山的时候,拍到一张旧建筑:

image

这次又看到了它,“邓强饭店”还在,就是以后可能没有人知道这里曾经是“乐一乐饭店”了。

image

在抖音看到一条评论,说在求助视频下面多说一些无关内容,多说一些其他领域关键词,就会更容易被传播到其它领域的标签受众,并且防止被限流。不知道真假。

image

11月20日

据说在珠海,一个老人乘坐公交不肯坐在座位上,但因为公交公司要求司机在乘客都落座后才能起步,所以车子迟迟不走。因为这个有个小伙和老人打起来了。这是一个典型的《屌丝男士》剧情。

image

11月18日

1972年,马王堆出土了一件重要的文物——素纱褝衣,这件两千多年前的蚕丝制品只有49克重,堪称丝织奇迹,列入首批禁止出国文物,研究人员经过十几年努力,也仅仅复刻出了一个49.5克的复制品。

其实素纱褝衣有两件,另一件更轻,只有48克。

1983年,一位叫许反帝的17岁少年潜入湖南博物馆,将38件文物盗走。他的母亲知道后,将31件文物偷偷送回、将剩余7件焚毁。据说,这件48克的素纱褝衣就在焚毁的文物中。于是这件在地下沉睡了两千余年的稀世珍宝将永不存世。

鉴于素纱褝衣的考古地位,又加上两件留存一件的故事性,在后世提起素纱褝衣时,这次失窃也会是不得不提的历史事件,许反帝用一种不甚光彩的方式做到了千古留名。

不过,后来湖南博物馆辟谣,失窃的素纱褝衣是49克那件,并已追回,48克那件从未失窃。

我觉得再过几百年,或许又有一个故事版本说,那件48克的当时确已焚毁,留世的这件48克只是各方为规避责任的仿品,这件事终将难辨真假。

优秀的是被大众接受的,更优秀的是小众接受的。

我一直有一个观点,从宏观上看,多数人是愚蠢的。(当然,从微观上看,一个人并不是绝对的,他会比有些人聪明,也会比有些人愚蠢。)

多数人对于物质和精神的追求并不高,平时菜市场卖什么菜就吃什么菜,周围有什么外卖就点什么外卖,劣质的网剧和短视频就可以满足娱乐。大多数人并不会真正在意蔬菜的农药残留,不会想什么是柏拉图的理想国。

所以,如果你自己觉得你属于聪明人群,那你在产出产品或内容的时候就要小心,备受欢迎的可能并不是你认可的东西,而是多数人愿意接受的东西。

如果你还在质疑我说的,想想拼多多是怎么火的。

11月23日

1669年,乐显扬创办同仁堂,坚挺了300年没有换过主人。300年后突然就不是乐家产业了。

历史滔滔,谁会在意一个药店呢?

11月24日

2022年底,全世界的总财富是454.3万亿美元,每个成年人拥有财富8.47万美元(约60万RMB)。

美国人均财富55.1万美元,中国7.57万美元。中国人均50多万并不高,因为这个数字包括房、车,甚至手机、锅碗瓢盆等可变现的资产,而且还要参与平均社会、企事业单位的公共资产。

即便美国人口少,他们的有钱程度也是我们目前难以企及的。据我所知美国平民也没有很有钱,要是真这样,资本主义世界的贫富差距确实更为可怕。

互联网记忆-2024

作者 mukti
2024年12月30日 13:30

我记录了过去一年当中,我关注到的事情。

2023年12月25,假日办公布24年放假安排,除夕正常上班。次日上交所公告除夕休市。假日办回应,放假安排仅作指导,最终放不放各单位自己说了算。

2024年1月10日

网友:逛无印良品说的最多的一句话:你猜这个多少钱?

1月18日

人民日报:初步核算,2023年 GDP 增长5.2%。

1月19日

北京日报:2023年,北京市居民人均可支配收入突破8万元,工资性收入增长8.1%。

1月26日

12306申请防止抢票专利。

净整些没用的。建议把搞专利的钱省下来,从法律上制裁抢票软件,发现就罚钱,还能搞点创收。自己没本事还硬要上,不是勇气是资源浪费。

1月30日

贵阳一居民家中失火,楼中消防栓因水带接口缺失无法使用,火灾致1人死亡。

1月31日

东三省2023年旅游数据:黑龙江接待游客2.1亿人次,旅游收入2215.3亿元,辽宁5.1亿人次,5022.6亿元,吉林3.14亿人次,5277亿元。

人均差异很大,可能统计方式不同,可能有的是瞎编的。

1月31日

贵州毕节一户人家办酒席,被一些“挂工作证人员”在食物中撒盐。

据说此行为目的源于当地禁止铺张浪费大办酒席,结果造成更大浪费。以恶习制止恶习,魔法打败魔法。

1月31日

G1956次列车旅客过多,触发超载警报,导致无法运行,无座无票旅客被请下车补票。

中国铁路一点都不吃亏,我为了回家多买了7站正常,少买1站就是犯罪。按说,没来得及补票的乘客被请下车,是服务业中卖方的权利,但央国企和个体户不一样,身负为老百姓想办法的使命。

2月5日

湖北高速堵车,孝感一大学生用寒假兼职工资给滞留旅客买物资,还将自家买的年货搬了过来,被核心媒体报道。

高速公路虽然收费但是费用不包括铲雪?该做事的人做不好,全网靠一个大学生。

2月10日

春晚魔术尼格买提跟着做整砸了,以一己之力挽救了没热度的春晚。

刘谦魔术震撼程度:100%
尼格买提穿帮搞笑程度:100000%
尼格买提亲自回应穿帮搞笑程度:1000000000000%

2月11日

春节期间日照莒县为博士之家挂牌。

除夕夜这里还发生了另一件说出来就会被封号的事情。

山东人是尊师重道的典范,但儒文化中,尊重的尽头就是不尊重,有崇拜的地方就容易萌生阶级和特权,无视甚至嘲笑弱者。莒县在这个新年很好的阐释了这个理论。

2月19日

徐汇区一32岁女教师出轨一高中生。

2月20日

去年11月一汉服博主在佛罗伦萨街头穿着华丽汉服,被一位路人大姐说:这多难为情,为什么穿这种衣服?该大姐被全网唾骂。

该博主原视频文案是希望这个世界宽容。所以她把这个不会说话的人报给了全网判官。宽容给宽容他妈开门——宽容你妈到家了。

2月22日

央新:我国科研人员利用“国际首创的双光束调控聚集诱导发光超分辨光存储技术”实现一张光盘存储容量约1.6PB。

2月25日

宗庆后去世。

2月26日

路透:一名美国军人25日下午在位于首都华盛顿的以色列大使馆外自焚。

不管出于什么原因和立场,值得敬佩。

3月4日

人民日报:北大教授认为,社会转型会带来学科的变化,要用全面、辩证、长远的眼光看待文科专业,进行人生选择,文科专业受热议,表明大众对其不断优化的期待。随着新技术的发展,人文思考愈发重要,人文学科的作用将不断显现。

3月8日

人大代表:未来一两年,电动汽车充一次电就能跑一千公里。

3月12日

泰安华通集团跑路,老百姓投资打水漂。

3月19日

GTC2024,英伟达 CEO 带两个萌机器人亮相。

3月21日

民航局通告 MU57225 飞行事故调查进展,概括:没什么异常。

3月24日

朝鲜“祖国统一民主主义战线中央委员会”开会决定解散自己。

3月24日

三联:养老金并轨进入倒计时。

3月28日

小米 su7 价格公布。

4月1日

31日南昌突发强对流天气,有的窗户被毁,多人坠楼。

4月3日

花莲大地震。

4月3日

“我想当中国农业发展银行的行长,继承我的爸爸,因为我的爷爷是中国农业发展银行的行长,我的妈妈是中国农业发展银行副行长,所以我想继承我家财产。”

4月3日

财新:日照购房补贴20%。

4月6日

马英九游西安。

4月10日

习近平会见马英九一行。

4月19日

北京地铁5号线故障,大量行人滞留。

因地铁停运迟到,我自己买单。三年疫情春节不让回家,我自己买单。失业,我自己买单。不然呢,谁替我买。我能知道地铁为什么停运吗。有人论证过政策真正的合理性吗。既然别人能找到工作我找不到能怨谁。

4月22日

迪拜大雨,沙漠国家难以应对。

4月24日

新浪:据经济日报,近日,关于“未到退休年龄,社保已缴满15年,是不是可以不再交钱坐等退休了?”的相关话题引发热议。人资社保部官微回应,社保法第十六条规定,参加基本养老保险的个人,达到法定退休年龄时累计缴费满15年的,按月领取基本养老金。在职职工社保缴费满15年后,在未达到法定退休年龄之前,用人单位应当按照规定继续为职工参保缴费,达到待遇领取条件后办理退休手续,按月领取基本养老金。

问题是最近并经济日报没有相关新闻、也没有什么官方回应,这个话题突然就成了新浪热搜第一。

4月25日

闪电新闻:29年前的今天,山东台播报一则新闻:1995年5月开始,全国实行双休。

有网友说他们单位落后30年现在还没实现,有人问他说,你们单位要大学生吗,我还没有工作。哈哈哈哈哈哈。 世界上人均年工时2千小时以上的国家不多了,我们大概2300。

4月29日

美国务卿访华。28日,马斯克抵达北京。

之后听说,此行目的是商谈关于 Tesra 不能进某些单位,我方条件是要求拿到 Tesra 的数据。

4月29日

26日运城一问界撞上养护车后着火,车上3人遇难。

4月30日

上海等多地取消酒店刷脸。

不解有二:一是当初为什么花这么大代价推行刷脸,二是现在不刷了是如何决定的,难道真的是因为侵犯老百姓隐私?

5月2日

梅大高速塌方,已致48人死亡。

这48个人变成鬼,都不知道该上谁家索命。

5月4日

“胖猫”坠江身亡,网友点外卖悼念,据传多家外卖出现“空包”。

5月5日

近日一女子称在杭州河坊街买的2只叫花鸡里面没有鸡,敲开泥巴里面只有泥,又买了2只依旧如此。

5月5日

爸爸才四十多岁就不工作
![image]()

5月5日

习近平出访欧洲三国,正下飞机,央新直播暂停了。

5月6日

5月4日,香飘飘旗下产品包装嘲讽日本核污水事件,引发网友热议。网传是员工个人行为,香飘飘官方回应称员工是好样的。5日凌晨,香飘飘董事长为赴日回国员工举牌接机。

5月14日

国家电网辟谣6月1日电费涨价。

不知道谣言谁传的,反正一波热点之后,股票市值保住了。

5月18日

普京访问北京。

5月18日

15日斯洛伐克总理遭到枪击受伤。

5月18日

郭有才爆火,央媒力挺,政府连夜修路加基站,打造直播基地,还免费提供充电、水和大锅菜。牛鬼蛇神齐聚原本废弃的菏泽南站。网友:千万别搬石头砸了自己的脚。

果然砸脚了,可以写入社会学案例。

5月18日

16日下午华为发布会大模型生成图片疑人工操控。

正方辩友:华为太优秀了所以才有人挑毛病。
反方辩友:优秀还能有错误?
都是逻辑鬼才。

5月18日

冰岛总统选举,总统候选人需要在政府网站注册并获得支持,但是因为网站有歧义,有人直接注册成为了总统候选人,产生了82个总统候选人。

5月23日

习近平在山东日照考察调研。

5月30日

北京突降大雨,蜘蛛人被吊在了央视大楼。

6月1日

30日,国防部长出席21届香格里拉对话并访问新加坡。

6月8日

网友建议取消35岁考公门槛。

他们之所以招年轻人,就是已经熬到决策者的人想招些不躺平的人。事实也是如此,新人进去也不会躺平,遗憾的是风气没变,工作效率低得可笑。但是,如果不解决35岁失业的程序员,把这些高智商的人逼急了,他们的局面可能更可笑。经济已经养不活他们了,弼马温变相下岗也是迟早的事。

6月9日

农发行前儿媳举报审计科长的公公买千万别墅。

评论有人说,上千万的别墅不能说明很有钱,因为首付可能也就500万,这个是普通打工人的逻辑。买一百万刚需房,全家可能只能凑出五十万。但是买一千万别墅的人,家里至少能拿出两千万。

6月11日

石家庄某中学毕业典礼,女生唱《离别开出花》出圈。媒体点评,这就是青春的样子。

多数学生青春的样子是石家庄高温天气烈日下的分母。

6月15日

数学竞赛姜萍被热议,网友问浙大能否破格录取,浙大回应要走流程被网友调侃。

浙大回复可以写入公关失败案例了。不能录取很正常,拒绝录取也是学校的权利。但是你得带上一句“浙大会为人才敞开大门”,这是姿态。但你来一句要走流程无法解答…这也太像官老爷了。

6月19日

杨殿钟《办公厅工作常见的160个问题与114个失误事例》。

6月20日

甘肃烟草局指控商户无证倒卖香烟,为了证明已经收回“零售许可证”,工作人员伪造证据被街边摄像头拍到。

6月22日

余承东称鸿蒙生态拥有了9亿多台设备、超过254万开发者。

254万开发者…是打开过开发者网站就算吗…

6月28日

27日,河南新乡胖东来擀面皮1000元补偿退款现场:贴心到现场帮忙复印身份证。

6月28日

魏凤和、李尚福被开除党籍。俩人新闻通告一模一样。

6月29日

《喜人奇妙夜》开播,开场尬死。

6月30日

复旦院长评掼蛋之风盛行。

据说是:上好击鞠,通俗相尚。

7月1日

有网友扒出王星越17年视频说自己17岁。

妈耶耶,这世界上居然有人在意这个…

7月3日

中金公司一员工因公司降薪,导致房贷压力过大而跳楼。

7月14日

特朗普被枪击右耳。特朗普在国旗下举起拳头的照片火了。

7月18日

媒体曝光罐车化工油食用油混装。

7月22日

网友热议90后退休时间延长到65岁以后。

澎湃:所谓“90后无论男女都得65岁以后退休”,仅仅是网友根据部分专家预测做出的推演,并无任何官方信源。

7月26日

江西万年县委书记被举报性侵下属。

8月1日

苏州商务局马翔宇视频举报。网友对此看法不一。

祝福大家,身边的人与你提起这个无情商的傻子时,都会说他是个英雄而不是当个笑话。他的伟大之处在于,他可能自己也知道葬送了自己也扭转不了什么,为了主义即便没有希望依旧选择奔赴。即便马翔宇是错的我也盲目支持。当年邱少云在战场赴死,你说他能保持不动是因为已经死了而已,又能体现你自身什么优越性?

8月2日

徐峥新电影《逆行人生》被骂。

我觉得被骂是因为宣发和社会脱节了,什么年代了还走煽情路。最该错的就是这张海报,不是说穷人不能被扮演,而是网友从海报透穿了结局,你讲完了苦难还要微笑着积极面对,这就离大谱了。

后来我看了电影,前半段勉勉强强,后半段就是主角开挂的老套路童话故事了。

8月2日

广电总局称下半年全面实现一个遥控器看电视。

电视用户等了20年。不知道是真的有好领导想起用户体验了,还是机顶盒利益所得者发现再不搞就没人用机顶盒了。

8月3日

山东人力社保厅等10部门印发《关于省属事业单位转制为企业有关问题的处理意见》的通知。

第一,这个刀到底会动到什么程度。第二,当下经济现状,财政马上就要发钱了,把搞基建的转企业分了钱捂在自己口袋,这其中有高人啊。不知道是真想赌一把还是真的养不起了?不过这个包子不一定有肉啊。

8月6日

唐山烧烤店打人案,民警陈志伟因为放走主犯被判刑。陈志伟举报强定罪名,唐山回应陈志伟所说不属实。

违反常识逻辑的事情又出现了。我愿相信这个民警罪有应得,如果他翻案成功,意味着这个世界更加可怕。如果翻案不成功,或许更更可怕,但是我们不需要做这无意义的假设了,因为没有规则可以纠正这个更更可怕了。

8月6日

某人爆罗永浩五宗罪为俞敏洪正身。

瞎姬八掺和,这个辟谣只会让俞老师善良的部分和罗老师真实的部分变得更被动。

8月7日

网曝儿慈会9958项目河南负责人雷克要求患儿妈妈陪睡。雷克曾荣登河南“中国好人榜”,2019年新华社客户端的报道中,称赞雷克为“出彩河南人”。

我不关心怎么处理这个雷克,毕竟坏人还是有。谁给他评的中国好人榜请给我揪出来击毙。

8月7日

青岛地铁老人殴打小伙。

青岛从来没有正面新闻。

8月13日

广东新增1万余新冠病例。有网友怀疑某社交媒体将“坚决不防疫”的评论置前引导舆论。

最难抵御的,是历史的洪流和领导的决策。

8月17日

婚姻登记草案公布,不再需要户口本。

我把话放这,自由交配是人类历史的趋势,但是人均寿命很难再延长。

8月20日

相声演员杨议被热议,老婆“五婶”也跟着火了。

三天不上网就变天了。观摩了一下五婶账号,真是把中老年妇女拿捏死死地。

8月21日

《黑神话·悟空》产生了我认知以外的热度。

8月21日

.com 域名9月再次涨价。

8月22日

曾因给储户赋红码被处分的女官员张琳琳已任郑州文旅局一把手。

8月22日

河南一家长反映给女儿买的360儿童手表提问:中国人是世界上最聪明的人吗?回答诋毁中国人。

百度搜索的罪你们还没整明白呢,新闻联播以外都是假的。

8月24日

网友去费大厨吃饭,被服务员弄脏了背心。服务员说可以赔,一看价格3700。

8月26日

蒋友青回奉化,连个新闻都不算,微博都搜不到。

8月26日

食安办通报油罐车事件:在全国范围内组织开展全链条清理排查,从各地清查情况看,截至目前,未发现其他同类问题。

8月29日

葫芦岛暴雨,多地受灾,未见媒体报道。

8月30日

青岛崂山逆行路虎司机下车打人。

我前面有说,青岛没有正面新闻

8月31日

一女子的长发被卷入重庆西站的按摩椅内,站管委:按摩椅公司已取得旅客谅解。

9月3日

山东东平发生一起道路交通事故,接送学生的车辆失控造成路边家长和学生多人死亡。

9月3日

央新报道葫芦岛降雨已至10人遇难。

我抖音上已经刷到4个具体遇难者。

9月13日

延迟退休公布。

7月22号那个新闻是怎么回事,试水的吗?
网友:新冠偷走的那三年还回来了

9月16日

31岁王某从浙江宁波划橡皮艇到达台湾。

找有关部门介入查一下皮划艇厂家,尽快在市场上向普通民众禁售此款甚至其他皮划艇。

9月18日

山东成武官网公报《2023年国民经济和社会发展统计公报》中养老金发放数据:2023年机关事业单位退休人员8778人,发放养老待遇7.85亿元;企业单位离退休人员13220人,发放养老待遇3.69亿元;城乡居民养老保险待遇领取人员11.94万人,发放养老待遇2.51亿元。

9月20日

湖南财政厅长刘文杰意外身亡。

9月22日

18日内蒙古乌兰浩特一店家发视频称,在自家店铺玻璃上贴了一张用A4纸打印的招聘信息,被城管部门告知“带身份证前去接受罚款”,“不去就封了手机号”。

城管可以封手机号,这个细想很吓人

9月25日

一网友在石家庄某酒店探测到偷拍设备被围堵。新华分局称15日已接到举报并前往调查。

15号就去处理,24号摄像头还在。网友:摄像头这都是小事,没有正规的派出所才是大事啊

9月26日

商丘水灾。没有媒体报道,导致有网友怀疑是造谣。

9月27日

央行降准,网友按照经验,猜到股市该涨了。

没错,史上最短大牛市随即爆发了,上次身边有这么多人聊股票还是2015年。

9月27日

上交所系统崩溃。

9月28日

全球华人国学盛典在北京雁栖湖举行。

一个莫名其妙的盛典,所有蹭热度的不知名网红和营销讲师都去了。

10月1日

上海一男子超市内持刀伤人被当场抓获,3人抢救无效死亡。

10月1日

雁荡山景区一游客从缆车上不慎坠落,目前无生命危险。

10月6日

“黑神话”带火了山西隰县旅游。

10月6日

国新办将于8日上午10时举行发布会。

10月7日

济南解放阁少年集体炸街遭警方抓捕制止。

10月9日

吴邦国去世。

10月16日

国家空间科学中长期发展规划(2024—2050年)发布,提出了我国有望取得突破的5大科学主题和17个优先发展方向。

10月25日

网友发现山西一家“大同啪啪宾馆”名称不雅,店家回复系合法注册,改名成本15万。

10月29日

一女子发布“西安下雪”不实视频被拘留。

11月10日

十万学生军夜骑开封。

11月11日

珠海发生司机驾车冲撞市民事件,已致35人死亡,43人受伤。

11月16日

多个律师帐号声援许双军涉黑案律师。

11月17日

16日无锡工艺职业技术学院发生一起持刀伤人案件,共造成8人死亡、17人受伤,犯罪嫌疑人被当场抓获。

12月4日

琼瑶去世。

12月13日

“时代楷模”单杏花,“科技创新赋能交通强国建设的铁路先锋”。

你们收到短信了吗

12月22日

上海地铁11号线列车撞上塔吊,旁边公路上一个路过的汽车副驾驶位乘客正好录下撞击一瞬间。

12月22日

4日,美联合健康集团CEO在纽约曼哈顿遭枪击身亡。据说该 CEO 被前同事评价为“和蔼可亲”的好领导。而凶手曼吉奥尼被捕后被部分网友称为罗宾汉式的英雄。

12月29日

韩国济州航空一航班降落时冲出跑道,撞上混凝土护栏起火爆炸,179人遇难。

❌
❌