Mi sveglio di prima mattina, un po’ rincoglionito, perché non sono abituato al rumore nuovo che c’è in camera. Ad un certo punto penso che il mio nuovo progetto che, con ogni speranza, dovrà economicamente confluire nella tassa universitaria non è perfetto senza un nuovo frontend. Vada per il frontend, non sono un grafico ma vabbé… programmo.

Ad una primissima analisi la cosa sembra fattibile, qualche migliaio di linee di codice da scrivere e sistemare in due o tre ore (Dio benedica il copia ed incolla) e qualche ora di testing. Per prima cosa si scrive il codice… Ora, per chi non lo sapesse, la programmazione di portali web necessita quattro conoscenze:

1) HTML. Ovvero quel complicato codice di tag, attributi, riferimenti.

2) CSS.  Che fanno la grafica del portale.

3) Linguaggio.  Che in pratica traduce dei comandi più o meno complessi in grafica (CSS) e HTML.

4) Database. Per l’interazione con i dati più vari (username, password, email, ordini etc).

Scrivo un centinaio di linee di codice e mi accorgo di una cosa. Una query, ovvero una “interazione” con il database non funziona come dovrebbe. Vedrò di essere semplice. Attraverso la query si scrive un dato in una tabella. Se immaginiamo la tabella come una rubrica telefonica possiamo immaginare la query come l’atto di scrivere nome e numero di telefono. Così:

INSERT INTO rubrica (nome, telefono) VALUES (‘Andrea’,’320-xxxxxxx’);

Si traduce nell’inserimento di Andrea con il suo numero. In modo analogo, per ritrovare il numero di Andrea la query è la seguente:

 SELECT telefono FROM rubrica WHERE nome = ‘ANDREA’ LIMIT 1;

Se prima scrivo il numero di telefono di Andrea e, subito dopo, lo richiedo mi aspetto di ritrovare il famoso 320-xxxxxx. Invece nel mio script qualcosa non funzionava perché il numero non rimaneva inserito. Inizia il debugging, ovvero quella operazione di ricerca degli errori. Spendo oltre un’ora a ricercare e a rifare il codice ma il risultato è sempre quello. Il numero di Andrea non viene inserito. Panico.

Con un po’ di orgoglio ferito penso che non è colpa mia ma del webserver (Apache) o del server SQL (MySQL). Vado nei rispettivi siti e da perfetto Geek mi sfoglio migliaia di bug scritti in ogni possibile lingua. Niente… Sarà un bug non segnalato?

Mi ricordo, improvvisamente, che Microsoft Windows fa schifo e che devo decidermi a usare di più il mio box GNU/Linux. Trasferisco il progetto sul pinguino e… nulla! Sto cavolo di Andrea, lo sto odiando!

Nel frattempo è già pomeriggio inoltrato.

La decisione estrema: ricompilare Apache e MySQL. A colpi di wget, make, make install ho le ultimissime versioni funzionanti che girano una bellezza. Provo e…nulla!

A questo punto non so che fare. Ho escluso il database, ho escluso il webserver deve essere per forza un errore mio! Ma dal debugger non c’è traccia di errore, tutto fila liscio. In pratica, però, scopro che il numero di Andrea viene inserito correttamente ma cancellato nel giro di un microsecondo.

I trigger di MySQL! Certo!  Archimede mi chiede il copyright per aver gridato “EUREKA!” ma penso che spenderò soldi inutilmente. Nessun trigger su MySQL. A questo punt o che diavolo è? Sposto il tutto nel server di produzione e, ovviamente, nulla! Non ci speravo, ma tentar non nuoce.

Inizio a ricordarmi di non essere cattolico, con buona pace di chi mi sta accanto e che mi vede lanciare occhiatacce contro il mio computer. Nella mia scrivania ho tre DVD di svariate distrubizioni GNU/Linux, i datasheet ed i log delle operazioni… Già i LOG.

Sto scrivendo su un BLOG che fa rima con LOG. LOG che è il diminutivo di logger, ovvero “diario”. Apache ha un suo log, vediamo che mi dice! Scorro tre o quattromila linee e noto una cosa: due linee

http://servertest/cp/updatefrontend/serie_di_valori_del_frontend
http://servertest/cp/updatefrontend/niftycorner. css

Da dove spunta quel niftycorner.css? È una libreria che ho installato dagli albori del mio progetto ma perché viene richiamata in quel modo? Vuoi vedere che… viene richiamata per qualche ragione la pagina e mi azzera il frontend?

Sostituendo in un file niftycorner.css con /niftycorner.css ho risolto tutto.

Brutta la vita del programmatore.

Leave a Reply