Tales from the Machine Room |
|
What's this??? Once upon a time, while I was really bored, I began writing down what's going on in my office in the it.comp.os.linux.sys newsgroup. Whitelding all the names, of course, to protect the guilty. The tales seems to be well accepted, so I decided to preserve them for posterity. All the tales are real. Jargon:
CL - Clueless Luser: tipical user, he doesn't really have
a clue but he thinks he knows better.
|
Code [re|ab]useTempo addietro, uno degli infelici clienti della mia societa' lamento' problemi nella gestione della lingua giapponese su uno dei siti Web sviluppati da noi. La cosa mi sfioro' relativamente, perche' l'UL che si occupa del cliente mi domando' cosa si potesse fare per risolvere il problema ed io gli risposi che l'unica era fare un po' di debug all'applicativo e vedere quale era il problema.Solo che il cliente si gestisce lui la manutenzione del sito, scrivendosi il codice per cavoli suoi, quindi il debug e' affare suo. Dopo di che non ne sentii piu' parlare per un bel po', fino a Lunedi', quando UL (il mio nuovo capo) arrivo' con questa bella notizia...
UL - Quindi lui viene qui' questo giovedi' con il computer di sviluppo
e noi dobbiamo dargli una mano a trovare il casino. Cosi' giovedi' mi arriva questo tizio, attacco il suo computer e, con l'ausilio di CB che ne sa' molto piu' di me di programmazione di questo cacchio di $applicationserver, ci mettiamo a guardare la cosa. Ovviamente UL ha voluto rendere chiaro che era molto interessato alla cosa, passando ogni 5 minuti a chiedere come andavano le cose... IO - Senti, qui' possiamo fare due cose: possiamo DIRTI che non stiamo facendo niente o possiamo FARE qualche cosa. Scegli. Dopo di che' UL ha deciso che poteva resistere senza un aggiornamento ogni 5 minuti. Abbiamo cominciato percio' con un bel controllo di quale e' il "problema". Questo cacchio di sito ha una parte relativa alla "vendita" di roba, ogni prodotto ha una descrizione ed altre cose. Apparentemente la descrizione viene memorizzata nel database o letta dal database in modo errato perche' i caratteri giapponesi risultano completamente sballati, mentre un altro campo sulla stessa maschera risulta perfetto. Se un campo funziona e l'altro no mi sembra ovvio che non e' un problema di configurazione. Ci mettiamo percio' a guardare il codice. E qui' incomincio a vedere delle cose abbastanza oscene. Per prima cosa la tabella del database contiene 127 campi...
Ok, vediamo cosa cavolo mette in quel campo Controllo meglio e scopro che quasi tutti i campi della tabella sono nulli... e da dove cavolo li piglia i dati allora?? Cosi' scopro che le informazioni che sono visualizzate a video vengono imballate in una unica hashtable che viene poi serializzata in un unico campo BLOB... lo stesso campo BLOB viene poi letto e deserializzato per ottenere le informazioni... per fare cio' l'accrocchio utilizza un Bean. Il campo che risulta corretto si trova in tale Blob, mentre quello scorretto e' letto dal corrispondente campo VARCHAR del database. Ok, mettiamo TUTTE le informazioni nel blob allora, modificando il Bean. Dopo un po' di hacking sembra che le informazioni vengano visualizzate e memorizzate correttamente. A questo punto facciamo qualche prova e... non funziona... cioe', nella parte di sito riservata al "back office" funziona tutto correttamente, mentre nella parte "utenti" continua a visualizzare le cose sbagliate... WTF??? E cosi' scopro che, per ogni singola pagina, c'e' un diverso Bean per recuperare le informazioni dal database, mentre qualche pagina addirittura non usa nessun Bean ma legge i dati direttamente... Inoltre non e' solo quel campo che viene gestito in modo diverso, ma sono molteplici... Ma chi cacchio ha scritto questa chiavica di codice??? /* Code By Mammalucco Yugoslavo mammalucco@yugoslavia.yu */ ...ci avrei giurato... A questo punto torna alla carica UL.
UL - Allora, trovato niente?
Davide
|
| Copyright | 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 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.
Last update: 15 Marzo 2004