Domanda

Ci sono un sacco di segnalazioni di sistemi che non riescono a capire l'anno 2010 ma non ho idea del perché. I sistemi attuali mi occupo stanno lavorando bene per quanto ho potuto dire, ma mi piacerebbe sapere qual è il vero problema è quello di cercare meglio.

Qualcuno potrebbe far luce su di esso per favore?

Modifica: http://www.rte.ie/business/2010 /0105/bug.html - informazioni su di esso che colpisce le carte di credito in Germania

È stato utile?

Soluzione

Diversi protocolli utilizzati nel settore bancario e delle telecomunicazioni - tra cui il protocollo SMS - codificare il anno come BCD in un singolo byte.

Da 2000-2009 si potrebbe facilmente fare l'errore di interpretare l'anno come numero binario di serie in quanto la codifica sarebbe la stessa:

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

Questa è probabilmente la causa del bug di Windows Mobile.

Altri suggerimenti

Una possibile spiegazione è nell'articolo seguente

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

  

Mi ricorda del vostro recente articolo sulle correzioni di bug Y2K a buon mercato e sporchi in cui alcuni programmatori senza scrupoli mettono in una semplice, se <10 = 20xx altrimenti la data è 19xx

SpamAssassin aveva una regola per contrassegnare le date troppo lontano nel futuro come spam:

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

La correzione è venuto un paio di giorni di ritardo, ma è abbastanza semplice:

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

Ci vediamo di nuovo in dieci anni.

Ho un sistema sul posto di lavoro che utilizza un campo anno una cifra. Sì. Una cifra. Quindi la ragione di questo sistema sta fallendo è che "2000" è espresso lo stesso di "2010".

Quello che ho sentito parlare è stato correzioni rapide gente ha fatto per Y2K senza pensare attraverso. Quindi, se xx <10 poi 20xx 19xx altro.

Potrebbe essere dovuto ai giovani sviluppatori che hanno iniziato la loro carriera dopo Y2K e utilizzano 1 cifra per rappresentare l'anno.

Ho preso cura di un po 'di 2.010 fallire in un sito lo scorso fine settimana, è stato solo il frutto di una svista nella codifica però.

Qualcuno ha pensato che sarebbe stata una buona idea per impostare il valore di un elemento dell'elenco alla dateTime.year.Now corrente () quando la lista elementi conteneva solo fino al 2009.

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

Ecco una schermata del norton protezione degli endpoint di Symantec

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

Davvero bello che nessuno @ Symantec informato i propri clienti ... Fino l'articolo è stato pubblicato: http://www.theregister.co.uk / 2010/01/05 / symantec_y2k10_bug /

E 'che ci sia un bug in un componente che divide l'anno in due parti. La seconda parte è utilizzato in un confronto in modo che la cifra 10 non è in base 10, è in base 16 senso che è 0x10 = 16 (esadecimale).

Ho usato Google Code Search trovare bug y2010 a software open source . Ho guardato per un particolare modello che possa indicare un bug (uso di "200% d" come una stringa di formato printf), e trovato diversi progetti con il bug. applicazione creativa di modelli di ricerca potrebbe probabilmente alzare più diversi tipi di insetti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top