海的信徒

我生在海边 但一生只见过一次大海 我的母亲提醒我 “不要开口” 推开车门海边的喧嚣闯入我被匆匆挤出 海浪扑打瞳孔中蓝色沸腾我匆忙捂住嘴巴 不要 开口 堤坝空荡没有过客 世界很大,呼啸的海风将每个人隔绝 海在轰鸣 我松开双手,向海吼叫 海风带走我发出的每一句声响

January 7, 2024 · 1 min

最近遇到的一些比较坑的bug

Bug:读取两个文件,然后输出这两个文件的内容。第一个文件输出始终为空,第二个文件可以正常输出。 解决:第一个文件损坏了(具体是什么原因未知),我将第一个文件的内容复制到一个文件中就可以正常使用了。 教训:永远要质疑输入的合法性 Bug:使用Gradio,按钮绑定了一个回调方法,这个方法内部调用了OpenAI做了对输入的两个文件进行处理。结果总是第一个文件处理完之后就停止了。 解决:实际上不是在第一个文件处理完之后停止,而是LLM处理第一个文件花费了大约1分钟,而Gradio默认一分钟回调方法没返回结果就超时失败。所以,设置Gradio应用启动为queue模式,取消超时等待。 教训:任何一个方法执行时间很长就得考虑是否存在超时失败 Bug:测试人员测试我写的的一套上传下载照片逻辑时,同时在测试环境测试了我的上传和下载接口,结果是下载下来的照片无法识别。 解决-1:这里有一个关键点,下载下来的照片无法识别这个问题,我一开始以为是加解密错误导致照片出现问题。但是加解密如果异常应该在程序中就报错。最后发现,下载下来的图片大小是0kb,但是Windows自带的照片预览会直接说无法识别该类型。 教训-1: 对于存储在磁盘上的文件一定首先检查文件大小(这让我想起来实习期的一个问题是因为文件本质是个软连接,如果第一时间查看大小就能看出问题) 解决-2: 代码中的上传下载逻辑我都有详细覆盖性很强的单元测试,本地都上传下载过,不应该出问题。遂回滚代码尝试,发现旧的代码也下载不了,经排查发现是测试环境的host配置错误了。 教训-2: 涉及到这种代码改造(不修改旧逻辑)的测试,在测试之前应该第一步先校验旧代码的可用性,我给它取个名字叫基准测试。 解决-3: 测试过程中,测试使用了另一个服务的接口间接调用了本服务的上传接口,结果走不通。在一开始,下意识认为是本服务的问题,因为另一个服务被使用的接口没有被改造。但排查后发现是另一个服务挂了(挂的原因是我在该服务上做了其他修改,导致服务没启动的了) 教训-3: 间接调用优先确保服务可用性 解决-4: 另一个服务挂掉的原因,是外部依赖更换了服务地址,所以代码中需要修改,而修改的点是另一位同事在改,今天上线并没有合并到master分支,导致我合并master分支时没有合到这部分代码。 教训-4: 如果代码有意料之外的问题,第一时间先看一下其他同事的开发分支有没有一些关键操作没有合并到master。同时也知道了合并master,以及branch命名,commit规范的重要性(要是都糊写一通,根本就没法快速排查)

July 11, 2023 · 1 min

钢铁之躯(片段)

“砰”,远处庭院中,泳池边,遮阳伞旁。在亚那州海滨的繁星下,复制器在完成最后的制造工作,打印一位计算机科学家的头颅。身体已经打印完成,挂在复制器三面体的一面上。 “如果我死去,不要打印我的头颅。”科里的旧语再一次在张博士脑中闪过。 “你知道对科学家来说,最大的耻辱是什么吗?”张博士询问身边一起前来的智宇,智宇被复制器的制造过程震惊到了,并没有留意张博士的提问。 “保存他的头颅。”博士自顾自地回答起来。 复制器最后的打印步骤完成,钢铁制的头颅上反射出星空璀璨。复制器的三面体开始旋转,将头颅扭转到躯体之上,随后发出一声闷响,头颅与躯体拼接完成。 复制器复制出的人低垂着头,复制器托着他双臂的支架唰地收起,复制人猛然落下,发出重重的落地声。 复制器的产物在诞生后的最初五分钟会重复主人生命中最后一天早上的行为,这个时候他们是记忆模糊的,或许是威本科技的技术限制导致,这五分钟威本科技并不能完全控制复制人。这五分钟或许也算是本体生命的延续。智宇这样想着,庭院中的复制人身体亮出隐隐的蓝光,缓缓抬起了头颅。 复制人向前走了几步,走到了一张吊床前,俯下身亲吻空气。接着他转身向另一处方桌走去,他在桌子上盘弄着空气,打翻了方桌上本来摆放的各类实验试剂以及子弹。盘弄了一两分钟,他左手托着一枚TR86杀人蜂微型导弹走到吊床旁,把托盘递了出去后,他松手,托盘摔碎,他坐在空气上,望着空空的吊床谈笑着。而后,他走到泳池边,对着博士和智宇的位置,开始梳妆打扮。 刷牙,洗脸,似乎摸了一些护肤品,最后当他开始梳理头发时,已经过了四分钟了。复制人的手在摸到自己的金属制头发时停顿了下,随后开始上下摸索。几秒钟后,他伸出双手,狠狠的掰断了自己的小拇指,他伸出手看向自己的手,似乎是在判断自己没有疼痛感,这也能解释为什么在宾西州的另一个科里也没有小拇指了。复制人望向泳池中的自己,突然崩溃的吼叫了一声,然后他的目光转向远处的博士和智宇。 远处的红色亮光闪过,智宇知道大事不好了,双眼的红光代表复制人进入了战斗模式。但没等他躲开,空中一个庞然大物已经落地,冲击波将智宇直接整飞到一旁的花圃中,尘土弥散过后,博士已经被复制人科里卡住脖子举了起来。 博士的紧紧抓住复制人科里的手,给自己争取一点点呼吸空间,他努力转头看向一旁落在地上的手机,屏幕碎裂,但是计时器的数字还在不断跳跃。 “5月18日,5月18。”复制人科里听到这个时间,扣住博士的手稍松了些劲。 “2034年5月18日16点08分,你认识梓萌,现在距离你们认识过去了68天,你们单独相处15天。” “梓。。。萌”,复制人科里缓缓地说出这个名字,抬起了头,松开了博士,跪倒下去,红色消失,复制人垂下了头。 五分钟到了,复制人科里身体冒出绿光,“威本科技为您服务,正在启动中。。。”复制人科里说到。

June 23, 2023 · 1 min

博客版面更新

今天,把博客的版面更新了一版本。最早的时候,我只想在此博客写技术文章。生活感想之类的还是在QQ空间里面写,而微信主要就发事业上相关的事情。在屡次被QQ空间删除说说,照片被屏蔽之后,我还是决定彻底放弃国内的社交平台。将日常的所思所想也搬运到本博客。加上之前写的散文,诗,小说等都散落在各个平台不方便管理,遂也统一搬运到本博客。这样一来一回,博客里的文章就不单单是技术文章了,以至于到此时,技术文章的占比已经成为很小的一部分内容了。博客的内容杂乱,各种分类混杂在一起,十分不好阅读。 因为我的原始资料使用的是Notion,通过notablog这个工具,将Notion的文章生成静态网页在部署在github上,所以版面功能限制于notablog这个工具以及notion的能力。没有自动分类,没有索引,没有数据统计功能。文章的管理,分类都得我手工做,之前一直没有好好梳理博客,最近终于抽出时间,将凌乱的博客梳理清楚。将首页做成内容分流,标签栏只放几个重点标签。 倒是有一种杂志社编辑的感觉,本身极度推崇自动化工作的我,在手动梳理了整个博客之后,放弃了自动化管理博客的想法,这种个人报刊式的博客,倒是让我非常享受,嗯,看来是可以再创办一个栏目叫做《读者投稿》了。

June 18, 2023 · 1 min

写给树先生的信

这是一篇旧文,迁移到本博客 hello,树先生: 我十二岁左右时,很喜欢在村子里骑自行车。路边的树会不停地掠过身边,有的时候,在很多很多树的残影中,会站着一个人。穿着臃肿肥硕的灰裤子,皱巴肮脏的灰衣裳,手指上都是泥和油渍。也许他的衣裳是有颜色的,但已经脏的结了垢。我没有见过他哭,他永远是很开心的样子。有的时候,还会有一个女人站在他旁边,一样的裤子和衣裳,一样的呆笑。 他的人是几乎不会变样子的,能变化的是他手中拿的东西。有的时候是邻居施舍的饼干,有的时候是不知道哪里来的橘子。 没见到他时我是不会想起他的。 今年回家,我在路边又见到了他,和几年前,一模一样,我惊讶于他这么多年居然没有一点点变化。哪怕是时间的流逝也没有在他身上有一点体现。 我的表姐跟我说,我小时候见到的是他的哥哥,这个是弟弟。 “那他哥哥呢?” “好几年前就死了,他妈妈是个呆子,生了两个儿子也都是呆子,他爸爸也不知道在哪里。” 我想起来,是从某个时间开始,我再也没有见到和他站一块的女人了。 没见到她的时候我是不会想起她的。 我骑电动车回家时,我已经很久没有骑自行车了。他手里拿的是橘子,橘黄,是他浑身上下最透亮的颜色。 时代抛弃了多少人,忘记了多少人。 我们在没有见到他们的时候,是不会想起他们的。

June 12, 2023 · 1 min

这是一篇旧文,迁移到本博客 昨天大奶奶去世了,被装在冰柜里面, 不是可以制冷的棺材,就是装冰棍的冰柜, 冰柜上还印着“xx电器”。 大奶奶生前有诸多艳情,在场的各位没有一个落泪。 烧千纸的时候,跪着的儿孙们都尝试用着各种方式调整跪姿,极度渴望千张纸早点烧完。 丧事办的很草率,没有敲锣打鼓,没有和尚念经,大家都好像是松了一口气。 如释重负,是最好的形容。 冰柜上铺了一块红布,放在大奶奶的脸正上方。我没有去看一眼大奶奶,已经很久没有见过她了。她病重时我也没有见过她一面,对于我来说,大奶奶似乎只是一个故事里的人物,一个和我有着关系但我却又不曾真实接触过的人物。倒是我的侄女,马上上小学的小孩子,好奇地垫着脚去看冰柜里面是什么。她垫着脚攀着冰柜边缘,向里面探望时,眼神由好奇转为惊讶。随后被我妈妈拉开了。 我的北边爷爷去世时,我也是这样往冰柜里看去。不过,我的北边爷爷的冰柜是很精致的冰棺材,里面还有一圈霓虹灯,至于周身有没有广告我就记不清了。 我记得那是周五的下午,刚放学,一个朋友的母亲很急切地从人群中找着我。她似乎是很想当第一个把这件事透露给我的人,这样以后可以把我的反应当做她独一无二的谈资。事实也是这样,当我表现出震惊,茫然,伤心的时候。我是从她的脸上读出了心满意足和同情这两种含义的,这二者并不矛盾。 回到北边爷爷家时,我看到他躺在冰柜里面,双手交叉放在胸前,身边有一圈霓虹灯。鼻孔里结了冰霜。我不知道我是被吓哭的,还是因为失去亲人难受。我跑出堂屋,在路边哭泣。这便成了大人们的谈资——这孩子真孝顺。似乎是很难得的事情。 小时候我以为我的哭是人之常情,慢慢地发现是难得可贵。 不过那时的我是上初中了,再往前,我和我的侄女一样大时,我也有个亲戚去世了。我不记得那是什么亲戚,我只记得送她去火化的前一天晚上,我的父亲那一辈门在堂屋打了一晚上斗地主。我和我的表哥,拿着两副扑克,打了一晚上的小猫钓鱼。最后也没分出胜负,就被拉上了车。车子后面会拖着长长的竹子,车里面是已经离去的人儿。 不知道大奶奶送去火化的时候,车尾会不会拖一根长长的竹子。但我敢肯定,大奶奶前几个月在路口种的那棵树应该要被人偷偷砍了,之前她的邻居和大奶奶就这棵树吵了好几天。 其实我奇怪的是大奶奶的孙女们也都没有哭,可能是都哭过了吧。

June 12, 2023 · 1 min

大坟茔

这是一篇旧文,迁移到本博客 村里有个大坟茔,我爷爷说里面埋了一个抗日时期的官,在那个大坟茔不远的地方有个万人坑。是埋抗战时期新四军的。 “那个万人坑就是埋新四军的,那时候当兵的人脑袋上戴的帽子,黄的那种,像日本鬼子那种帽子,还有绿色的,蓝色的,上面有五角星,就把他们帽子理好。人死了身上有那种血,就整理干净,然后用大白布把人一裹,挖个大坑,往里面一个一个堆,就跟埋得了流感的鸡一样。” 那个大坟茔里埋的人,大家都不知道他是谁,只知道官很大,也不知道什么时候,是谁把他埋在这里的。大家都说这个大坟茔很灵,据说有的晚上这里面的官还会把万人坑里的兵带出来练操。 文化大革命的时候,我爷爷是学校里的红卫兵,扛国旗的那种。那时候镇上要铲坟,挖坟,镇里的书记拎着铁锹,带着我爷爷他们那帮小红卫兵去挖坟。书记亲自挖这个大坟茔,一共挖了三锹,第四锹还没下去,人就仰了。后来就没人敢碰这个大坟茔了,当时还是我爷爷那群小红卫兵把坟给填好的。 我爷爷说,那个坟不是普通的坟,它不是挖个坑把棺材埋进去,而是直接把棺材放在地上,然后往上盖土盖出一个坟的。里面的棺材也和普通的不一样,是一个红色的大箱子,两头下面有小支架支起来,箱子方方正正的。 每年都会有人给大坟茔扫墓,要从旁边的地里挖一个圆台形的土堆,然后把小的那一面朝下摆在坟茔上,在大的那一面上的边缘插满嵌这红色纸的干芦苇。清明节风吹过的时候很好看。

June 12, 2023 · 1 min

安全头盔

这是一篇旧文,迁移到本博客 安全头盔 像黄色小太阳 骑着电动车 一辆又一辆 穿过小轿车 车窗被摇下 一声又一声 熟悉的咒骂 安全头盔 匆忙地回家 儿子在澡盆 洗澡月亮下 安全头盔 摆在酒瓶旁 绿色的玻璃 华丽的琉璃 远处的高楼 酒碗中倒影 安全头盔 摆在小桌旁 贪婪,自私,愚蠢 同情,怜悯,善良 一遍又一遍 回荡在耳旁 重复的故事 重复的诉说 重复的酒菜 重复的小桌 安全头盔 摆在小桌旁 鼾声轰隆如雷响 一直到天亮 安全头盔 来到高楼上 踩着脚手架 头上是梦想 脚下是希望 希望一落空 抓不着梦想 安全头盔 摔在大地上 融化的夕阳 像历史的洪流 顺着柏油路 爬行并挣扎 安全头盔 摆在了小桌上 红色的药丸 一粒又一粒 慢慢不见啦 黄色的药水 一滴又一滴 慢慢不见啦 天上的星星 一颗又一颗 慢慢不见啦 地上的人儿 一个又一个 慢慢不见啦 安全头盔 一只小蜘蛛 钻进缝隙里 织起了小网

June 12, 2023 · 1 min

纸箱(一)

“叔叔,你有孩子吗?你可以买一个暴龙吗?”路边一群小孩簇拥过来,在傍晚的小区中像一个到处捕捉灵魂的怪物。 三儿当然没有理会,只是口罩下嘴角控制不住上扬,已经到了被问有没有孩子的年纪。三儿踢开石子,肚子里刚刚狼吞虎咽进入的螺蛳粉还是温热的,转动一下身子,感觉肚子中的粉似乎团结在一起互相交织组成了一艘小船,酸笋作为木头,腐竹就成为船帆,在汤水中乘风破浪。突然一阵反胃,脑海里闪过故意被遗忘的场景。那已经是三周前的事情了,原本用来自动压扁纸箱的机器不凑巧的压扁了李元的手,鲜血和一些碎肉骨屑溅到了三儿的脸上。 三儿擦了擦脸,到了电梯门口,里面站着一个推着巨大推车的大汉,大汉按着电梯的开门键等着三儿上来。三儿沿着推车旁留下的狭小通道了电梯角落的一点空间,拘谨着身子。电梯门口陆陆续续站满了人。一位年轻的女士带着一位有些瘦弱的老头,一位挎着小包穿着老上海式旗袍的老妇人,一个拖着小单车的小孩子,一个拿着最新款苹果手机的初中生。大家看到电梯里的大推车,显然在纠结是否要上这一班电梯。推车大汉带着很重的家乡口音向电梯外招手,“看啥捏,来站着这个车子上。” 年轻女士身边的瘦弱老头非常有积极性地站了上来,笑笑嘻嘻的,在小踩了一下推车确定稳定性后,乐呵呵地对着女子招手。年轻的女士脸上带着不愿意,还是小心地站了上去。初中生和小孩带着年轻人的活力自然也踩上了推车。挎着小包的老妇人,理了一下小包的链子,并没有了选择站在小推车上,而是沿着本就拥挤的推车旁过道挤了进去。三儿很瘦,所以能双脚站着,但是老妇人显然有一些丰腴美,只能前后各一只脚扶着电梯才能站牢。三儿能闻到老妇人身上的洗衣粉味道,是薰衣草味儿的,中等阶级常买的牌子。 推车大汉似乎和瘦老头认识,聊得热火朝天,小孩挨在自己的单车旁发着呆,初中生一直高举着自己的苹果手机,嘴巴不停发出奇怪的声响。老妇人和年轻女生始终盯着电梯不断向上显示的数字。 7楼到了,年轻女士门开到一半就已经到了门口,对着老头小声催促到,“快下来”。老头还有点念念不舍大推车,女士几次催促他才下去。电梯关上了门。推车大汉对着三儿说,“他们是山西的是吧,听着口音很像。”三儿嗯了一声,没有继续回答。没有了推车大汉和老头的交谈,电梯变得安静了不少,只有苹果初中生还在不停地发出奇怪的声音。 9楼到了,三儿小声说着,“借过”,从老妇人还有苹果初中生中间挤了出去。电梯门关上的瞬间,薰衣草的洗衣粉味道与苹果初中生的嘀咕声都消失了,只留下了空荡的走廊。很有意思的一点,虽然三儿只租了自己的一间一居室,但是觉得走廊也是自己的,因为自己从来没有在走廊遇到过邻居,已进入走廊就差不多已经到了个人领地。白天被世界推着走了一天的身子,在这一瞬间疲劳从脚底如闪电般窜到头顶。 三儿不清楚自己是什么时候睡着的,阳光隔着劣质窗帘和眼皮刺激着视网膜。昨晚并没有做梦,倘若做了,今天可以回味一天。煮两个鸡蛋,去洗手间,吃两个鸡蛋,刷牙洗脸。照一下镜子,胡子已经两天还是三天没剪了?一个个冒出了小尖。眼球里的血丝依然很多,每天都在抗议睡眠不足。三儿闭上眼睛,转动着眼球,以期待它还能再用几年,转动的时候,眼球的根部非常的酸痛,像眼球在吃腌黄瓜。 三儿从上往下像擦桌子搬抹了一把脸,李元的血肉总是觉得还在脸上,希望李元安康,但是三儿今天要去约会。

June 3, 2023 · 1 min

三十岁死在北京

今年我23岁,诚然,我不认为我的前23岁过得很出彩。我的童年算是苦中作乐,拥有回忆点。我的小学是被自卑塞满的时间段。我的初中是暗恋与自大的时间段。我的高中是天才陨落的时间段。我的大学是颓废荒唐的时间段。 我现在23岁,是我目前觉得我最好的时间段。科学没有骗我,23岁到25岁是人最清醒的时间。我的18岁到22岁,每天脑子都是糊的,我不知道我每天都在做什么。过得稀烂。现在的我目标很明确,行动很果断,拥有一个相对正常可用的身体,我每天都有新想法产生,我也会将它实现。我隔一段时间就会爱上一个人,我也勇敢去爱,也勇敢去放手。 我懂得如何去爱,懂得如何工作,懂得如何平衡生活,懂得微笑,懂得观望,懂得潜伏。我像一头训练有素的猎豹,潜藏在北京的高楼大厦中,伺机而动。 我才23岁,但我的寿命只剩下7年。 25岁之后,我的身体一定会走向衰老。我会慢慢有皱纹,我的发际线会开始后退,我的父母也要正式进入老年。我的爷爷奶奶会在某个时间点跟我告别。我需要做好准备,不只是物质上的。 我见过很多30岁的人。我的父母30岁时我在读小学,我的家境不富有,我曾在电话中向妈妈哭诉没有钱买新裤子。我的母亲说当时她放下电话后就不停地哭。那时她也才30岁。是这个社会中最底层人民中的一份子。有人30岁已经成为了机构负责人,有人30岁在考虑换掉一份工作,有人30岁有了自己的孩子,有人30岁还在勾搭比自己小5岁的异性。 不少人和我说过,在我这么大年纪的时候他们也很有冲劲,但随着时间,到了快30岁时就都慢慢地停了下来。还有7年,我就30岁,而7年前我16岁。 16岁的那年,我在玩儿守望先锋,我去网吧被班主任逮到,在其他“队友”都供出“同伙”时,我直到最后都说自己是一个人去的网吧。班主任于是在学期末给我评了“很讲义气”四个大字。16岁,我的目标是考上苏州大学,我爱慕一个学姐,每天升旗我从来没有看过国旗,一直在远远看着她。我没有伟大的目标,我只想每一次考试都可以考得很好,以及每天可以看到学姐。我也没有想过我会在北京工作。 还有7年我就30岁,现在的我不想留在北京,我想回去上海。我不想找北方的姑娘,我怕在北方留下念想,再也回不去南方的家。我想在30岁前财务自由,我想25岁做到架构师,30岁做到机构负责人。我想30岁前去上海。于是我每天起床后,就在掐着秒表盘算离30岁还有多久。也许会觉得很累吧,但是死亡迫使我不断前进。 但是有一位30岁的人告诉我,她在我这么大的时候也是想在北京打拼几年再回家,但是资源人脉慢慢的都在北京建立,回家后先前的朋友们都各奔东西。留在北京是因为没法不留在北京。 倘若30岁,我仍然只是一个普普通通打工人,我找了一个没有那么爱的伴侣,生了一个应该生的小孩。我的肉体在北京,但是我的灵魂已经在30岁死在北京了。 北京对我而言是一个坟墓,我在这个坟墓中向下不断挖着试图挖到宝藏,如果我不注意,那在下一次抬头的时候相比已经陷入自己的坟墓而无法挣脱了。 我当然也会那样认为,大部分奉劝我的人都是失败的奔跑者罢了,起点枪声响起,所有的人一股脑冲出去,哪些没有坚持跑到终点的人总喜欢对后来者说是风太大。希望如此,希望我能够跑到终点。 不管怎么说,在30岁死在北京之前,我不能在北京留太多的念想。也许是找一个南方的姑娘,也许……,我想只能找一个南方的姑娘。

June 1, 2023 · 1 min