Pregunta

Hay una gran cantidad de informes de los sistemas que no comprender el año 2010, pero no tengo idea de por qué. Los sistemas actuales que cuido están trabajando muy bien en lo que pude pero me gustaría saber cuál es el problema real es para buscar una mejor.

¿Alguien podría arrojar algo de luz sobre ella, por favor?

Editar: http://www.rte.ie/business/2010 /0105/bug.html - Información sobre lo que afecta a las tarjetas de crédito en Alemania

¿Fue útil?

Solución

Varios protocolos utilizados en la banca y telecomunicaciones - incluyendo el protocolo SMS - codificar la años como BCD en un solo byte.

A partir de 2000-2009 uno fácilmente podría cometer el error de interpretar el año como un número binario estándar ya que la codificación sería el mismo:

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

Esto es muy probablemente la causa del error de Windows Mobile.

Otros consejos

Una posible explicación es en el artículo siguiente

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

  

Me recuerda a su reciente artículo sobre correcciones de errores Y2K baratos y sucios, donde algunos programadores sin escrúpulos ponen en un simple si <10 = 20xx de lo contrario la fecha es 19xx

SpamAssasin tenía una regla para marcar fechas demasiado lejos en el futuro como spam:

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

La solución llegó unos días de retraso, pero es bastante simple:

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

Nos vemos de nuevo en diez años.

Tengo un sistema de trabajo que utiliza un campo de año de un dígito. Si. Un dígito. Así que la razón de este sistema está fallando es que "2000" se expresa lo mismo que "2010".

El único que oí hablar fue correcciones rápidas personas hicieron por Y2K sin pensarlo bien. Así que si xx <10, entonces 20xx 19xx otra cosa.

Puede deberse a los jóvenes desarrolladores que empezaron sus carreras después de Y2K y están utilizando 1 dígitos para representar el año.

Me ocupé de un poco de 2010 fracasan en un sitio fin de semana pasado, era sólo el resultado de un descuido en la codificación sin embargo.

Alguien pensó que sería una buena idea para establecer el valor de un elemento de la lista a la dateTime.year.Now actual () cuando la lista sólo contenía objetos de hasta 2009.

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

Aquí hay una captura de pantalla del Norton Symantec protección de puntos finales

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

Realmente bonito que nadie @ Symantec informó a sus clientes ... Hasta que el artículo fue publicado: http://www.theregister.co.uk / 2010/01/05 / symantec_y2k10_bug /

Es que hay un error en un componente que divide el año en dos partes. La segunda parte se utiliza en una comparación de modo que el dígito 10 no está en la base 10, está en base 16 significado que es 0x10 = 16 (hex).

He utilizado Google Code Search encontrar errores en y2010 abierta software de código. Busqué un patrón particular que indicaría un error (uso de "200% d", como una cadena de formato printf), y encontré varios proyectos con ese error. aplicación creativa de patrones de búsqueda probablemente podría subir más tipos diferentes de insectos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top