Luca Annunziata

Azure soffre l'anno bisestile

Problema diffuso a livello planetario. Colpa del 29 febbraio. Microsoft si scusa e appronta la patch

Roma - Tutta colpa dell'anno bisestile: le difficoltà incontrate per alcune ore dai sistemi di Windows Azure, la piattaforma cloud di Microsoft, erano dovute a una rara ma prevedibile circostanza che si verifica ogni quattro anni. Ovvero, la comparsa sui calendari del 29 febbraio. Difficoltà che Mary Jo Foley ha praticamente raccontato minuto per minuto su ZDNet.

╚ stata la stessa BigM ad ammettere il problema: "Alle 17:45 ora del Pacifico del 28 febbraio - recita un post sul blog ufficiale di Azure, a firma di Bill Laing - Microsoft ha rilevato un problema che affligeva i servizi Windows Azure in diverse regioni. Il problema è stato analizzato rapidamente ed è stato attribuito a un bug software. Sebbene le origini effettive siano oggetto di indagine, il problema sembra fosse causato da un calcolo del tempo errato nell'anno bisestile".

Stando alle comunicazioni Microsoft, il problema sarebbe stato risolto per la maggioranza degli utenti nel corso delle 7 ore successive: "Alle 2:57 del 29 febbraio abbiamo ripristinato i servizi Windows Azure per la maggioranza dei nostri clienti". Ma soprattutto le zone del Nordamerica e dell'Europa avrebbero registrato ancora qualche disservizio sotto forma di "ridotta funzionalità delle applicazioni" nella giornata di ieri. Il problema non coinvolgerebbe lo storage, ma Redmond ribadisce di essere al lavoro per arginare anche le ultime difficoltà.
Nella giornata del 1 marzo, oggi, i sistemi paiono essere tornati alla sostaniale normalità stando a quanto comunicato dal Dashboard di Azure. In mancanza di un'altra spiegazione, la causa scatenante del disservizio parrebbe proprio essere stato il giorno in più nel mese di febbraio di un anno bisestile: roba da millennium bug, verrebbe da dire, non fosse altro che sono trascorsi parecchi anni dal fatidico anno 2000.

Microsoft, comunque, è in buona compagnia. In passato anche Apple ha avuto il suo da fare con date e cambi di orario, in particolare per quanto riguarda la fine dell'anno e le sveglie impostate su iPhone. Il problema, almeno per quanto riguarda iOS, parrebbe comunque essere ormai stato archiviato.

Luca Annunziata
22 Commenti alla Notizia Azure soffre l'anno bisestile
Ordina
  • ...Il calcolo corretto dell'anno bisestile è il primo esercizio/test che si richiede ad un giovane programmatore che sta iniziando a programmare.
  • Che si richiedeva, oggi non so se si chiede ancora

    Quando ho fatto le superiori io si calcolava anche lo spazio occupato dalle variabili. Non dico che bisogna ancora farlo, ormai di memoria ce ne e' talment tanta che a meno che non scrivi programmi per dispositivi dedicati e con hw minimo (ma minimo) non ha piu' senso, ma le routine classiche come calcolo del bisestile, bubble sort, insertion sort ecc... andrebbero ancora studiate per benino. Non servono praticamente piu' perche' qualsiasi linguaggio oggi implementa tutte queste funzioni di base, ma formano la mentalita' ed e' la cosa piu' importante. Quando si ha di fronte un problema (anche non ai livelli di Panda Rossa Occhiolino -small arrow- ) se uno ha la mentalita' giusta riesce a capire con un po' di ragionamento come fare a risolverlo bilanciando costi/benefici altrimenti si rischia di perdere giorni e scrivere tonnellate di codice inutile (ne ho avute di esperienze del genere, giovani programmatori che scrivevano pagine asp (si, il vecchio asp 2.0) da 200KB... che puntualmente buttavo nel secchio e riscrivevo da zero, un esempio, una ragazza che non conosceva neanche l'esistenza del for e aveva ripeturo un blocco di codice decine di volte cambiando l'indice... non sto scherzando).
    non+autenticato
  • Che poi MS a volte e' ridicola e' vero, il mio non era un commento per giustificare la MS e'?....

    Uno dei loro prodotti di punta per il presente ed il futuro che soffre di questo bug.... assurdo, non ci sono altre parole
    non+autenticato
  • - Scritto da: ...
    > Uno dei loro prodotti di punta per il presente ed
    > il futuro che soffre di questo bug.... assurdo,
    > non ci sono altre parole

    tecnicamente dovevi dire "ha sofferto di questo bug", aggiungendo se vuoi che ne risoffrirà tra 4 anni, ma adesso mica sta soffrendo di alcun bug legato al 29 febbraio!

    (ovviamente sono ironico)

    Jack
    non+autenticato
  • E non è neppure un gran test, visto che il caso è semplice, anzi elementare. Si tratta di 3 condizioni in sequenza.
    non+autenticato
  • Provate questo:
    Public Function CreaData(strData As String) As Date
        'Dim strData As String
        Dim dteData As Date
        'strData = "20091231"
        strYYYY = Left(strData, 4)
        strMM = Right(Left(strData, 6), 2)
        strDD = Right(strData, 2)
        dteData = CDate("01/01/1900")
        
        If strDD <> "01" Then
            dteData = DateAdd("d", strDD - 1, dteData)
        End If
        If strMM <> "01" Then
            dteData = DateAdd("m", strMM - 1, dteData)
        End If
        dteData = DateAdd("yyyy", strYYYY - 1900, dteData)
        CreaData = dteData
    End Function

    Funziona per qualsiasi giorno, tranne per il 29 febbraio.
    non+autenticato
  • Perchè è fatta con i piedi!

    Non ho sottomano un Office per provare, ma vedo subito che se imposti prima l'anno, poi il mese e per ultimo il giorno forse il problema si risolve.
    Ovvio che se si sommano 28 giorni al primo febbraio 1900 (che non e' bisestile) si finisce al primo marzo...
    non+autenticato
  • - Scritto da: Ris
    > Provate questo:
    > Public Function CreaData(strData As String) As
    > Date
    >     'Dim strData As String
    >     Dim dteData As Date
    >     'strData = "20091231"
    >     strYYYY = Left(strData, 4)
    >     strMM = Right(Left(strData, 6), 2)
    >     strDD = Right(strData, 2)
    >     dteData = CDate("01/01/1900")
    >    
    >     If strDD <> "01" Then
    >         dteData = DateAdd("d", strDD - 1, dteData)
    >     End If
    >     If strMM <> "01" Then
    >         dteData = DateAdd("m", strMM - 1, dteData)
    >     End If
    >     dteData = DateAdd("yyyy", strYYYY - 1900,
    > dteData)
    >     CreaData = dteData
    > End Function
    >
    > Funziona per qualsiasi giorno, tranne per il 29
    > febbraio.


    Non riesco a capire che cosa vorresti fare con questa funzione: restituire una data a partire da una stringa?
    Perche' non usi la funzione DateSerial() che e' fatta apposta?
  • Non è la prima volta che cascano sull'anno bisestile:

    http://www.cellularmagazine.it/blog/4167/microsoft.../

    Non hanno imparato nulla dagli errori passati.


    (Non che apple abbia fatto meglio: http://www.iphoneitalia.com/apple-conferma-il-bug-... )
    non+autenticato
  • Annunziata, dilla giusta: Tutta colpa di programmatori dementi.
    La terra gira nel tempo che le serve che e' "giusto" per definizione: tocca a chi lo conta saperlo contare bene.
    non+autenticato
  • - Scritto da: iome
    > Annunziata, dilla giusta: Tutta colpa di
    > programmatori
    > dementi.

    Annunziata, da buon giornalista, riferisce le notizie (ed in questo caso, ha riferito le "scuse" usate dai programmatori dementi)
    non+autenticato
  • - Scritto da: uno qualsiasi
    > - Scritto da: iome
    > > Annunziata, dilla giusta: Tutta colpa di
    > > programmatori
    > > dementi.
    >
    > Annunziata, da buon giornalista, riferisce le
    > notizie (ed in questo caso, ha riferito le
    > "scuse" usate dai programmatori dementi)

    e' un professionista flessibile: quando serve "riporta", quando serve "interpreta", quando serve "interpola".
    non+autenticato
  • - Scritto da: iome
    > Annunziata, dilla giusta: Tutta colpa di
    > programmatori dementi.

    Una volta esistevano programmatori seri che facevano le cose per bene, meditate e analizzate con cura. Il "millennium bug", il "2000 bisestile" o la "mancata gestione del minuto di 61 secondi" erano difetti conosciuti, lasciati nel codice solo come compromesso perchè la loro risoluzione sarebbe costata troppo in termini di prestazioni.
    Poi ci si è resi conto di come i programmi risultanti fossero fatti troppo bene, tanto da essere usati ancora quando i problemi sono saltati fuori (perchè i "nuovi programmatori" degli anni 90 non si sono premurati di capire che una libreria scritta negli anni 70 poteva avere problemi dopo il 1999, o un'architettura per computer che faticava a contare i secondi di un anno potesse procurare guai a chi la interfacciava ad un orologio atomico...)

    Ricordo ancora un commento trovato nel 1984 nel codice di una libreria per la gestione delle date:

    /* Questa libreria permette di gestire date del calendario gregoriano
    * fino al 31 dicembre 214748. Poi si vedra`...
    */
    non+autenticato
  • E dopo il millennium bug, ecco il bissextile bug!
    non+autenticato
  • - Scritto da: Quel Tipo
    > E dopo il millennium bug, ecco il bissextile bug!

    SUPER-MEGA-GALATTICO-LOL-:D
CONTINUA A LEGGERE I COMMENTI
Successiva
(pagina 1/2 - 6 discussioni)