Leap Year: a fine mese la prima scadenza

Il 2016 è un anno bisestile (leap year) e porta con sè una serie di eventuali problematiche in ambito software da tenere in considerazione.

 

Leap Year (2016)

Il blog ufficiale di Azure, la nota piattaforma cloud Microsoft, ha pubblicato recentemente un utile post dedicato al leap year (anno bisestile, per usare invece un termine più familiare).

Così come era accaduto in occasione del leap second del 30 Giugno 2015, anche in questo caso si tratta di “aggiungere” del tempo all’imperfetto sistema inaugurato nel 1582 da Papa Gregorio VIII, il calendario gregoriano, in base al quale equipariamo l’orbita completa della Terra intorno al Sole a 365 giorni (un anno).

In realtà il Pianeta conclude il suo iter in 365.242199 giorni e non 365, una differenza che ogni 125 anni, se non “corretta”, porterebbe ad uno sfasamento di circa 1 mese. Per sincronizzare il tutto, ogni 4 anni si è stabilito di inserire un giorno extra, il 29 Febbraio: se per buona parte delle persone quest’ultimo verrà considerato come un semplice “giorno in più”, per gli sviluppatori di software potrebbe invece riservare diversi problemi, aggiunge Matt Johnson (Senior Software Engineer presso Microsoft).

La “data speciale” può infatti portare ad una serie di spiacevoli conseguenze (blocchi improvvisi, crash, behaviour non previsti etc.), come ben ricorda la stessa compagnia:

  • (2012) downtime di 12 ore per Microsoft Azure causato da un errato calcolo di una scadenza certificato;
  • (2012) bug di navigazione per i GPS TomTom – impossibile stabilire la posizione corrente;
  • (2008) downtime di PlayStation Network provocato dall’errata identificazione del 2008 come leap year;
  • (2008) bug di Micosoft Exchange che il 29 Febbraio rese impossibile agli amministratori l’esecuzione di qualsiasi task.

Leap Year, alcune indicazioni generali

E sempre in riferimento a quanto riportato nel post, per non essere impreparati alla scadenze del leap year, occorre tenere in considerazione quanto segue:

  • come anticipato poco prima, il 29 Febbraio 2016 è una delle due scadenze del leap year. L’altra è il 31 Dicembre 2016, ovvero il 366imo giorno dell’anno – variabile non contemplata da diversi programmi;
  • per quanto riguarda le applicazioni cloud, è bene tenere a mente che la maggior parte di esse si basa sul tempo coordinato universale o UTC. L’appuntamento per l’Italia è ad esempio alla 1 di notte di lunedì 29 Febbraio 2016;
  • per chi volesse monitorare in tempo reale i sistemi si consiglia di estendere la finestra temporale a tre giorni (dal 28/2 all’1/3 e dal 30/12 all’1/1/2017);
  • imprevisti provocati dal leap year possono verificarsi in qualsiasi linguaggio di programmazione anche se C/C++ è quello esposto a problematiche più serie come crash e buffer overflow (condizione di errore che comporta vari rischi per la sicurezza).

In chiusura ricordiamo che il post Microsoft affronta in maniera dettagliata i bug più comuni causati dal leap year, coloro che volessero approfondire possono consultare direttamente la seconda parte del contributo di Matt Johnson.

 

Facci sapere cosa ne pensi!

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *