Что вызывает ошибки 2010 года? - PullRequest
18 голосов
/ 05 января 2010

Есть много сообщений о системах, которые не понимают 2010 год, но я понятия не имею, почему. Насколько я могу судить, современные системы, за которыми я ухаживаю, работают нормально, но я хотел бы знать, в чём заключается настоящая проблема - лучше искать.

Может ли кто-нибудь пролить свет на это, пожалуйста?

Редактировать: http://www.rte.ie/business/2010/0105/bug.html - Информация о том, как это влияет на кредитные карты в Германии

Ответы [ 10 ]

13 голосов
/ 05 января 2010

Одно из возможных объяснений в статье ниже

http://www.theregister.co.uk/2010/01/05/symantec_y2k10_bug/

Напоминает мне о вашей недавней статье о дешевых и грязных исправлениях ошибок 2000 года, когда некоторые недобросовестные программисты вставляют простое, если <10 = 20xx, в противном случае дата 19xx </p>

13 голосов
/ 06 января 2010

Несколько протоколов, используемых в банковской и телекоммуникационной сфере - включая протокол SMS - кодируют год как BCD в одном байте.

С 2000-2009 гг. Можно легко ошибиться, интерпретировав год как стандартное двоичное число, поскольку кодировка будет такой же:

Encoding  Binary-interpreted  BCD-interpreted
0x01      2001                2001
0x02      2002                2002
...
0x09      2009                2009
0x10      2016                2010
...

Это, скорее всего, причина ошибки Windows Mobile.

11 голосов
/ 05 января 2010

У SpamAssassin было правило помечать даты в будущем как спам:

/20[1-9][0-9]/

Исправление пришло на несколько дней позже, но все довольно просто:

/20[2-9][0-9]/

Увидимся через десять лет.

4 голосов
/ 05 января 2010

Я позаботился о небольшом сбое 2010 года на сайте в прошлые выходные, хотя это было всего лишь результатом недосмотра в кодировании.

Кто-то подумал, что было бы неплохо установить значение элемента списка на текущий dateTime.year.Now (), если список содержал только элементы до 2009 года.

ddlItem.findByText(DateTime.Now.Year.ToString())
4 голосов
/ 05 января 2010

Это может быть связано с молодыми разработчиками, которые начали свою карьеру после 2000 года и используют 1 цифру для представления года.

4 голосов
/ 05 января 2010

Я услышал о быстрых исправлениях, которые люди сделали для Y2K, даже не подумав. Так что, если xx <10, то 20xx, иначе 19xx. </p>

4 голосов
/ 05 января 2010

У меня есть система, которая использует однозначное поле года. Да. Одна цифра Поэтому причина сбоя этой системы в том, что «2000» выражается так же, как и «2010».

2 голосов
/ 07 января 2010

Я использовал Google Code Search, чтобы найти ошибки y2010 в программном обеспечении с открытым исходным кодом . Я искал один конкретный шаблон, который будет указывать на ошибку (использование «200% d» в качестве строки формата printf), и нашел несколько проектов с этой ошибкой. Творческое применение шаблонов поиска может привести к появлению более разных ошибок.

2 голосов
/ 05 января 2010

Дело в том, что в компоненте есть ошибка, которая разбивает год на две части. Вторая часть используется в сравнении, так что цифра 10 находится не в базе 10, а в базе 16, что означает, что она равна 0x10 = 16 (шестнадцатеричное).

2 голосов
/ 05 января 2010

Вот снимок экрана защиты конечной точки Norton Symantec

альтернативный текст http://img695.imageshack.us/img695/4500/152010112800am.jpg

Действительно приятно, что никто @ symantec не сообщил своим клиентам ... До публикации статьи: http://www.theregister.co.uk/2010/01/05/symantec_y2k10_bug/

...