闰年虫、大小月虫、千年虫

昨天下午放学接儿子回家,堵车的路上看朋友们在微信群里都聊些啥,发现某群中一个美女在吐槽:“我恨闰年😡”。

image.png

晕,闰年把她怎么着啦?我首先想到的一种可能是她2月29日生日,因为闰年的闰年的缘故每4年才能过一次生日,少吃了很多蛋糕,所以对闰年有着深深的恨意?

我正准备继续发挥我的想象力,想象出N多种可能时,她在群里说了缘由:

吐个槽,DBA没给数据库加2.29导致了一堆问题,从早上处理到现在,我都快吐了😡😡😡

好吧,虽然不是我想象的生日的问题,但是也是和2月29日相关。不过话说回来,这要恨也应该恨DBA啊,闰年无辜躺枪啊。

我问她:“时间不都从系统中读取的嘛,咋还用创建?”她回复说:“他们是一次创建一年的”。擦,这是什么神仙操作,看来我真的落伍啦。

不过说到她遇到的这个闰年BUG,我倒是想起来昨天网络上看到的一条信息,说是某厂商的激光雷达没有处理2月29日的逻辑,导致2月29日激光雷达停摆。

而更惨的是,好多新能源汽车采用了这款激光雷达,然后导致这些新能源汽车在2月29日这天自动驾驶、辅助驾驶功能全部停摆。

好在没听说因此导致什么重要交通事故,这些新能源车以及这款激光雷达的厂商多说挨挨骂,不痛不痒,不然罪过就大了。

这两个和闰年相关的BUG,大概可以叫做闰年虫了,也就是说平时不会被触发,只有到闰年的2月29日才会被触发。

而写出这样BUG的,大概都是一些新程序员,程序大概也应该是最近4年以内写的,不然可能4年前的上个2月29日就被触发啦。

当然,凡事没有绝对,据我这个美女朋友后来在群里说,他们的程序仅在工作日处理数据,而上个闰年(2020年)的2月29日,是周六,所以这个BUG不会被触发。唉,隐藏的真深啊。


其实和时间相关的虫子可不止就闰年虫哦,我和客户往来的过程中,还遇到过一种大小月虫

这又是啥虫呢?听我细细道来。

话说我们从客户那里购买一些服务(咦,这样说起来,我们才算客户呢。不纠结这个事了),根据一些网络数据以及计算公式,每天花销不同。

客户为了便于我们付费,做了个Excel表格,包含当月每天的数据以及费用以及最终的月度总费用(本月每天费用求和)。

按说这是个很简单的事,很简单就可以搞定,可是坏就坏在他第一次弄这个表的时候是小月(当月30天),而他的求和公式只对这30天求和。

所以当他第二个月给我发送费用时,我一下子就发现他少算了一天的费用。(因为第二个月有31天,是个大月

为了长久地合作下去,我和他说了这个问题,他千恩万谢,但是之后的几个月内他还是弄错了好几次(估计没去修改求和公式),这大概就是大小月虫啦。


说到和时间有关的BUG,最著名的莫过于千年虫啦。这个名字是不是很吓人,颇有一些千年老妖的感觉。

名字虽然唬人,但是说起来很简单,无非就是千禧年之前,很多系统、程序中都用两位数字表示年份,比如49年、97年、99年,分别代表1949年、1997年、1999年。

在2000年之前,这样的年份表示并不会带来多大问题,但是到了2000年,麻烦来了。

举个简单的例子,假设有这样一个人口信息管理系统,97年一个小孩子出生,到了99年,计算小孩子的年龄很好办,99-97等两周岁,可是到2000年,该怎么算?总不会是00-97等于-97周岁吧?那岂不是成了笑话。

你还别笑,如果不做对应的修改,计算机还真的会去这样计算小孩子的生日。而这只是一个普通的例子,类似的情况比比皆是,一旦发生,人类社会将会陷入极大的混乱当中。

好在千年虫问题在当时引起了足够的重视,系统开发商、应用软件开发商、DBA、程序员等等都对自己负责的系统、软件、数据库、代码进行排虫操作,所以真到了2000年,对普通人而言,千年虫没掀起一丁点浪花呢。

image.png

所以,问题来了,你在生活和工作中,遇到过哪些和时间有关的虫子呢?是否给你造成一些重大的影响呢?

相关链接

Sort:  

貌似部分的手表上的日历遇到2月29日这天也需要手动调整一下,毕竟大部分的2月只有28天,不知道这个算不算。。。。😂

哈哈
必须算,不过那个一般是硬件BUG