NOTE: Questo Task mi aiuta a tracciare un bug nel dataset del MiSE sui prezzi delle stazioni di rifornimento italiane. Qui ulteriori informazioni.
== Premessa (perché ho trovato questo problema) ==
Nel 2015 ho sviluppato un altro comparatore di pompe di benzina italiane durante un hackaton di 24H promosso da una nota compagnia assicurativa italiana. Ecco il progetto: https://fuel.reyboz.it/. È fatto con colla e spaghetti e con poche ore di sonno ma ha funzionato bene e abbiamo vinto. Ma questo non è il punto.
Quel progetto è stato basato su un dataset fornito dal [[ https://en.wikipedia.org/wiki/Ministry_of_Economic_Development_(Italia) | MiSE - Ministero dello Sviluppo Economico ]]. Bene, quel dataset era corrotto dal 2015 ma ora (~~2021~~ 2022) è in qualche modo //ancora// più corrotto.
In breve, sono sicuro che in un mondo migliore il MiSE dovrebbe sistemare il suo dataset. Il problema è che non sono stato in grado di contattare il MISE in nessun modo. Ho provato dal sito ufficiale e ho provato via social, e ho provato via telefono, ma i bug nel loro dataset sono ancora lì.
Altre FAQ:
* No, non ho violato nessun sistema di sicurezza
* No, non ho manipolato un settore di memoria protetto
* No, non ho distrutto o danneggiato alcun sistema
* È solo un dataset corrotto e chiunque nel mondo può vedere che NON è colpa mia se è così
* Chi ha la capacità di riparare? Il MISE.
== Passi per riprodurre il problema ==
1. Scaricare il file [[ https://www.mise.gov.it/images/exportCSV/anagrafica_impianti_attivi.csv | anagrafica_impianti_attivi.csv ]] da https://www.mise.gov.it/index.php/it/open-data/elenco-dataset/2032336-carburanti-prezzi-praticati-e-anagrafica-degli-impianti
2. Aprire con LibreOffice (impostare il separatore sul punto e virgola - Sì, lo so, CSV significa letteralmente valori separati da //comma// (virgola) e invece loro usano usano il punto e virgola. Per favore non litigate per questo. Questo non è il nostro problema principale.
3. Notate che il dataset è corrotto almeno sull'ID `46593` (linea 29) su una riga relativa a `MEGA SERVICE S.A.S.`
Panoramica rapida (scorrere fino alla riga 29):
{P17, lines=40, highlight=29}
IMPORTANTE: Nota che non è chiuso `"`. Non ci vogliono ore di ispezione del file. È già alla linea 29 su svariate migliaia.
== Problema n. 1 ==
Il MiSE chiaramente non sta usando una libreria adatta per generare un CSV e questo causa un dataset malformato.
Soluzione:
Si prega di adottare un //vero// standard CSV. Per esempio, non usare un punto e virgola come collante per i tuoi dati grezzi.
Riferimento:
* https://en.wikipedia.org/wiki/Comma-separated_values su Wikipedia
* https://www.php.net/manual/en/function.fputcsv.php per PHP
* https://pythonspot.com/files-spreadsheets-csv/ per Python
* http://commons.apache.org/proper/commons-csv/ per Java
* ...
== Problema n. 2 ==
Il MiSE non sta ripulendo correttamente l'input dell'utente.
Per favore ripulite i valori dell'utente rimuovendo i doppi spazi. Rimuovendo le tabulazioni. Rimuovendo i newline. Rimuovendo tutto lo schifo dell'utente.
Esempio: evitate qualcuno chiamato "`Mario Rossi `" (notare gli spazi all'inizio e alla fine e nel mezzo). Di questi esempi il dataset è intasato. E non possiamo correggerlo noi perché viene sovrascritto ogni mattino e non si capisce come contribuire.
== Problema n. 3 ==
"CSV" significa "//comma//-separated values" ma MiSE genera //semicolon//-separated values.
Soluzione proposta: wontfix. È troppo tardi per cambiarlo ora.
Anche se è troppo tardi per risolvere la cosa, non è troppo tardi per informare la gente: per favore ricordate che la `C` in `CSV` significa `COMMA` e non `SEMICOLON`.
== Soluzione proposta per tutti questi 3 problemi ==
Adottare qualsiasi libreria CSV, invece di usare semplicemente ";" come collante tra qualsiasi valore grezzo.
Questo risolverà un approccio di programmazione non ideale che sta effettivamente compromettendo il dataset del MiSE ogni giorno, almeno dal 2015.
Inoltre, sarebbe carino spiegare alle persone come viene creato questo dataset e come segnalare un problema o come poterlo correggere.
== Nel frattempo ==
Qualcuno dovrebbe contattare la pompa di benzina `MEGA SERVICE S.A.S. DI TERMINI MICHELE &C 123 di Licata, Km. 15+500, LICATA 92023 AG` chiedendo loro di togliere gentilmente il `"` dal loro nome, dato che il MiSE non può gestire quel caso senza rompere tutto il dataset per anni.