Pergunta

Há uma série de relatórios de sistemas de não compreender o ano de 2010 mas não tenho idéia do porquê. Os sistemas atuais que cuidam estão funcionando bem, tanto quanto eu poderia dizer, mas eu gostaria de saber qual é o problema real é a busca melhor.

Alguém poderia lançar alguma luz sobre isso, por favor?

Edit: http://www.rte.ie/business/2010 /0105/bug.html - Informações sobre isso afeta cartões de crédito na Alemanha

Foi útil?

Solução

Vários protocolos utilizados na banca e telecomunicações - incluindo o protocolo SMS - codificar o ano como BCD em um único byte.

De 2000-2009 um poderia facilmente cometer o erro de interpretar o ano como um número binário padrão desde a codificação seria a mesma:

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

Esta é provavelmente a causa do bug do Windows Mobile.

Outras dicas

Uma possível explicação é no artigo abaixo

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

Lembra-me do seu recente artigo sobre barato e sujos correções Y2K bug onde alguns programadores inescrupulosos colocar de forma simples, se <10 = 20xx caso contrário, a data é 19xx

SpamAssassin tinha uma regra para datas marca muito longe no futuro como spam:

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

A correção veio alguns dias atrasado, mas é bastante simples:

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

Vê-lo novamente em dez anos.

Eu tenho um sistema de trabalho que usa um campo ano um dígito. Sim. Um dígito. Assim, a razão pela qual este sistema está falhando é que "2000" é expresso o mesmo que "2010".

O que eu ouvi falar foi rápido correções de pessoas fizeram para Y2K sem pensar. Então, se xx <10, então 20xx 19xx outra pessoa.

Pode ser devido aos jovens desenvolvedores que começaram suas carreiras após Y2K e estão usando 1 dígito para representar o ano.

Eu cuidei de um pouco de 2010 falhar em um site na semana passada, foi apenas o resultado de um descuido na codificação embora.

Alguém pensou que seria uma boa idéia para definir o valor de um item da lista para o dateTime.year.Now atual () quando a lista continha apenas itens até 2009.

ddlItem.findByText(DateTime.Now.Year.ToString())

Aqui está uma captura de tela do Norton Protection endpoint Symantec

alt texto http://img695.imageshack.us/img695/4500/152010112800am .jpg

realmente agradável que ninguém @ Symantec informaram os seus clientes ... Até que o artigo foi publicado: http://www.theregister.co.uk / 2010/01/05 / symantec_y2k10_bug /

É que há um bug em um componente que divide o ano em duas partes. A segunda parte é usada em uma comparação de modo a que o dígito 10 não está na base 10, que é na base 16 significado que é 0x10 = 16 (hex).

Eu usei o Google Code Search para encontrar y2010 bugs no software open source . Olhei para um determinado padrão que indicasse um bug (uso de "200% d", como uma seqüência de formato printf), e encontrou vários projetos com esse erro. aplicação criativa de padrões de pesquisa provavelmente poderia transformar-se mais diferentes tipos de bugs.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top