有很多关于系统无法理解 2010 年的报告,但我不知道为什么。据我所知,我照顾的当前系统运行良好,但我想知道更好地搜索的实际问题是什么。
有人可以解释一下吗?
编辑:http ://www.rte.ie/business/2010/0105/bug.html - 有关它影响德国信用卡的信息
一种可能的解释在下面的文章中
http://www.theregister.co.uk/2010/01/05/symantec_y2k10_bug/
让我想起了你最近关于廉价和肮脏的 Y2K 错误修复的文章,其中一些不道德的程序员输入了一个简单的 if <10 = 20xx 否则日期是 19xx
银行和电信中使用的几种协议(包括 SMS 协议)将年份编码为单个字节中的BCD 。
从 2000 年到 2009 年,人们很容易犯错误,将年份解释为标准二进制数,因为编码是相同的:
Encoding Binary-interpreted BCD-interpreted
0x01 2001 2001
0x02 2002 2002
...
0x09 2009 2009
0x10 2016 2010
...
这很可能是 Windows Mobile 错误的原因。
SpamAssassin 有一条规则,可以将未来太远的日期标记为垃圾邮件:
/20[1-9][0-9]/
修复来得太晚了几天,但它很简单:
/20[2-9][0-9]/
十年后再见。
我有一个使用一位数字年份字段的系统在工作。是的。一位数。所以这个系统失败的原因是“2000”与“2010”的表达方式相同。
我听说的一个是人们为 Y2K 所做的快速修复,而没有经过深思熟虑。所以如果 xx < 10 那么 20xx 否则 19xx。
这可能是由于年轻的开发人员在 Y2K 之后开始了他们的职业生涯,并且使用 1 位来表示年份。
上周末我在一个网站上处理了一个 2010 年的小故障,但这只是编码疏忽的结果。
当列表仅包含 2009 年之前的项目时,有人认为将列表项的值设置为当前 dateTime.year.Now() 是个好主意。
ddlItem.findByText(DateTime.Now.Year.ToString())
这是诺顿赛门铁克端点保护的屏幕截图
替代文字 http://img695.imageshack.us/img695/4500/152010112800am.jpg
真的很好,没有人@symantec 通知他们的客户......直到文章发布:http ://www.theregister.co.uk/2010/01/05/symantec_y2k10_bug/
这是一个组件中的一个错误,将年份分为两部分。第二部分用于比较,因此数字 10 不在基数 10 中,而是在基数 16 中,这意味着它是 0x10 = 16(十六进制)。
我使用谷歌代码搜索来查找开源软件中的 y2010 错误。我寻找了一种表明存在错误的特定模式(使用“200%d”作为 printf 格式字符串),并发现了几个具有该错误的项目。搜索模式的创造性应用可能会出现更多不同类型的错误。