Tales from the Machine Room


Home Page | Comments | Articles | Faq | Documents | Search | Archive | Tales from the Machine Room | Contribute | Login/Register

Garbage In, Trash Out

CL - Ma guarda questi valori: sono completamente sballati!
IO - Si, che sono sballati siamo daccordo, ma io vorrei capire come li hai ottenuti!

Che succede? Piccola storiella: tempo addietro per gestire il budget di alcuni progetti specifici per $sottodivisione, qualcuno ha avuto la bella (si fa per dire) pensata di creare un software specializzato di gestione progetti. Software che e' poi passato attraverso una serie di estensioni, espansioni, aggiornamenti, rimaneggiamenti, spupazzamenti e cosi' via, fino a divenire una cosa tipo mostro blob da film dell'orrore di serie C2.

Dopo essere passato attraverso le (in)capaci mani di un numero vario di programmatori e sedicenti tali, l'intero mascarpone e' stato mollato a me che dovrei 1) espanderlo e 2) mantenerlo.

Lo scopo ultimo del programma dovrebbe essere di ruzzgrubl, fruzz fruzz rompr@&*! lulalulalula snick snack e quindi ottenere delle stampe con totalizzazioni varie.

Come dite? Non ci si capisce niente? Ecco, appunto.

Dopo un certo tempo passato a ravanare nel codice di questo coso ed essermi fatto una certa idea di come dovrebbe e non dovrebbe funzionare sono stato pure capace di produrre una mini-documentazione tecnica, che tanto nessuno legge ne' leggera' mai, che dovrebbe (nei miei sogni) consentire agli utonti di risolvere i miliardi di casini che questo coso genera quotidianamente senza dover necessariamente attaccarsi al telefono e rompere le scatole a me ogni 2 secondi.

Ovviamente io ho ignorato due fattori essenziali: 1) gli utonti non leggono mai la documentazione e 2) l'effetto "fnord". Cosa e' l'effetto "fnord"? In sostanza si tratta di una parola o frase che, una volta letta dall'utonto in questione, provoca un completo blocco (stile BSOD) del cervello dell'utonto stesso, cosicche' il resto del messaggio, documento o quel che e' rimane completamente ignorato (per ulteriori info vedere gli Illuminatus).

Nel mio caso la frasetta in questione e' "hai provato a...". Non appena processate le 3 paroline di cui sopra il cervello dell'utonto va' in blocco assoluto e niente pare riuscire a sbloccarlo salvo un'hard-reboot (mazzata sul capo).

Cosi' stamani, quando ho ricevuto la mail di CL che mi segnalava un baco in una qualche funzione di reportistica di quel coso, la prima cosa che gli ho chiesto e' se aveva provato questo-e-quello. E lui ovviamente mi ha risposto che "certo che lo aveva provato ma continuava a non funzionare". Eccomi quindi al capezzale di CL a vedere questo fantomatico 'baco'.

CL - Quello che voglio fare io e' ricalcolare il budget del progetto tal-de-tali basandomi sulla schedulazione aggiornata di questo-e- quest'altro ed applicando un'aggiornamento sulla fattorializzazione...

Sorvolo sul resto che tanto e' uguale.

IO - Hemmm... hummm... ok... quindi?
CL - Ecco (manovrando il mouse)... questi sono i risultati che ottengo, ma sono sbagliati.
IO - E come fai a dire che sono sbagliati?
CL - Perche' se faccio i calcoli a mano basandomi sulla tabella di coefficientazione...

Ed e' andato avanti per una ventina di minuti con calcolatrice e penna, ed il risultato che otteneva lui era diverso da quello ottenuto dalla procedura. Parecchio diverso. Talmente diverso da far pensare che il calcolo dell'uno o dell'altro e' completamente sballato.

Cosi', mi sono tuffato nel codice ed ho cercato di capire dove diavolo potrebbe annidarsi questo fantomatico baco. Dopo aver seguito le peripezie dei dati di questo coso dentro e fuori un centinaio di funzioni circa, un paio di smaneggiamenti tra due diversi database ed una mezza dozzina di maschere di input/output, sono arrivato alla conclusione che... non c'e' nessun baco. Una dozzina di prove (e parecchi caffe') dopo, ritorno da CL a chiedere spiegazioni.

IO - Allora, spiegami un po' come fai ad ottenere questi valori.
CL - Dunque, io vado qui', di la', di su', di giu', clicco li', seleziono la', punzono di qui' e lui calcola.
IO - Hemmm... (scrivendo sul blocco)... momento... come diavolo fai a selezionare quel progetto?
CL - Passando di qui e di li.
IO - Okkey... fammi prendere il codice del progetto che ci riprovo.

Cosi' me ne ritorno al mio posto e riprovo a fare quello che CL ha appena fatto. Nada. Non funziona. Il maledetto coso mi dice che il progetto e' in fase operativa e non consente di fare quello che CL ha appena fatto.

Un paio di controllini sul codice dopo mi rendo conto che l'unico modo per cui il programma potrebbe sbagliare e' se passasse da una certa funzione, che pero' non ci si puo' passare perche', date le informazioni di base, di li' non ci si passa. Pero' io ho appena visto CL farlo. Ritorno da CL.

IO - Rifammi un po' vedere come accidenti fai...
CL - Di qui', di li', di la', punzono di su'...
IO - Momento! Non puoi fare cosi' e cosa'! Non su questo progetto almeno!
CL - (ci pensa su un momento) No, di solito no.

Io rimango un po' insospettito da quel "di solito".

IO - E quindi?
CL - Be', volevo fare questo calcolo, quindi ho chiesto a CL2 di modificare lo stato del progetto per permettermi di selezionarlo.
IO - E come diavolo lo ha cambiato lo stato del progetto lui?
CL - Be'... credo che abbia semplicemente modificato il campettino nel database... sai, lui ha l'accesso da superutente...

Non devo stare a dire che un certo CL adesso non e' piu' superutente sul database vero?

Davide
17/01/2009 14:39

Previous Next

Comments are added when and more important if I have the time to review them and after removing Spam, Crap, Phishing and the like. So don't hold your breath. And if your comment doesn't appear, is probably becuase it wasn't worth it.

No messages this document does not accept new posts

Previous Next


This site is made by me with blood, sweat and gunpowder, if you want to republish or redistribute any part of it, please drop me (or the author of the article if is not me) a mail.


This site was composed with VIM, now is composed with VIM and the (in)famous CMS FdT.

This site isn't optimized for vision with any specific browser, nor it requires special fonts or resolution.
You're free to see it as you wish.

Web Interoperability Pleadge Support This Project
Powered By Gojira