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
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.