Question

Il y a beaucoup de rapports des systèmes défaillants à comprendre l'année 2010, mais je n'ai aucune idée pourquoi. Les systèmes actuels dont je me occupe fonctionnent très bien pour autant que je pouvais dire, mais je voudrais savoir ce que le problème réel est de rechercher une meilleure.

Quelqu'un pourrait-il faire la lumière là-dessus s'il vous plaît?

Edit: http://www.rte.ie/business/2010 /0105/bug.html - Informations sur ce qui affecte les cartes de crédit en Allemagne

Était-ce utile?

La solution

Plusieurs protocoles utilisés dans le secteur bancaire et les télécommunications - y compris le protocole SMS - encoder la année BCD dans un seul octet.

De 2000-2009, on pouvait facilement faire l'erreur d'interpréter l'année comme un nombre binaire standard puisque le codage serait le même:

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

C'est très probablement la cause du bug Windows Mobile.

Autres conseils

Une explication possible est dans l'article ci-dessous

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

  

Ca me rappelle de votre article récent sur bug Y2K bon marché et sale fixe où certains programmeurs peu scrupuleux mettent dans un simple si <10 = 20xx sinon la date est 19xx

SpamAssassin avait une règle pour marquer les dates trop loin dans l'avenir comme spam:

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

Le correctif est venu quelques jours trop tard, mais il est assez simple:

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

Rendez-vous encore une fois en dix ans.

J'ai un système de travail qui utilise un champ d'année à un chiffre. Oui. Un chiffre. La raison pour laquelle ce système échoue est que « 2000 » est exprimé le même que « 2010 ».

Celui que j'ai entendu parler était de solutions rapides les gens ont fait pour Y2K sans penser à travers. Donc, si xx <10 puis 20xx autre 19xx.

Il est peut-être dû aux jeunes développeurs qui ont commencé leur carrière après Y2K et utilisent 1 chiffres pour représenter l'année.

Je me suis occupé d'un peu 2010 échouent dans un site week-end dernier, il était le résultat d'un oubli dans le codage bien.

Quelqu'un a pensé que ce serait une bonne idée de définir la valeur d'un élément de la liste à la dateTime.year.Now () courant lorsque la liste ne contient que des articles jusqu'à 2009.

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

Voici une capture d'écran de la protection norton point final symantec

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

Vraiment sympa que personne ne @ symantec ont informé leurs clients ... Jusqu'à ce que l'article a été publié: http://www.theregister.co.uk / 2010/01/05 / symantec_y2k10_bug /

Il est qu'il ya un bogue dans un composant qui divise l'année en deux parties. La deuxième partie est utilisée dans une comparaison de telle sorte que le chiffre 10 se trouve pas dans la base 10, il est dans la base 16 qui signifie qu'il est 0x10 = 16 (hex).

J'utilisé Google Recherche de code trouver des bogues Y2010 dans les logiciels open source . Je cherchais un modèle particulier qui indiquerait un bug (utilisation de « 200% d » en tant que chaîne de format printf), et a trouvé plusieurs projets avec ce bogue. application créative des modèles de recherche pourrait probablement se présenter types de bugs plus différents.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top