« Come IE fa impazzire un webmaster (la variabile keywords) »

13 luglio 2010 @ 11:06

Vi racconto la storia di un piccolo pezzo di codice javascript, che funzionava felice su tutti i browser del mondo creato.

Purtroppo arrivò il brutto IE, che invece lo gradiva su una pagina mentre su un’altra, identico, non gli andava  proprio giù.

Il codice potrebbe essere, più o meno, questo:

<script type="text/javascript">
<!--
function print_something(prefix){
	// assegno keywords
	keywords = "!";

	// scrivo le keywords
	document.write( prefix + keywords );

}

// chiedo la stampa
print_something("world");

// -->
</script>

Ora, perchè un codice del genere ad IE piace moltissimo in questo file e non funziona del tutto in quest’altro?

Non vi farò giocare alle 10 differenze, nel secondo file ci sono i meta tag nell’header ed IE decide di instanziare un oggetto keywords per accedervi. Quindi non si può riutilizzare la parola keywords come variabile nella funzione perchè IE l’ha già istanziata e ogni operazione porta ad un errore.

Da notare che questo simpatico comportamento  avviene solo all’interno di funzioni (all’esterno keywords risulta undefined) e solo se keywords non è dichiarata propriamente (cioè dichiarando var keywords = “!”; il codice funziona perfettamente).
Chiaramente IE non ritorna un messaggio di errore coerente, tipo questa variabile è già dichiarata,  ma si lamenta su operazioni non valide o proprietà inesistenti.

Cosa si impara da questa esperienza?

  1. dichiarare propriamente le variabili con var nomevar = valore; non è una perdita di tempo inutile
  2. dare dei nomi troppo comuni alle variabili non è una buona idea
  3. i bug più sono stupidi più sono difficili da trovare
  4. ie sucks.  Ma in fondo questa non è un novità

« Life’s complicated »

1 luglio 2010 @ 17:05

Delle volte potete chiedervi com’è lavorare in una pubblica amministrazione.

E’ così:

Schema delle immatricolazioni dell'università

Cos’è questo? E’ lo schema delle pagine per le immatricolazioni in una pubblica  università italiana di medio-grandi dimensioni.

Pensavate mica vengo-saluto-mi-iscrivo?

Come fa ad essere così complicato? Beh, è facile:

  • i corsi a numero programmato viaggiano su un binario a parte perchè hanno un test di accesso, per cui hanno il sacro bando che dice tutto
  • i corsi di laurea sono stati riformati due volte da quando io sono qui (leggi 590 e 270), questo produce tutta una serie di eccezioni. C’è un corso di laurea che, non si sa come, è riuscito a non essere riformato nemmeno una volta, in pratica è rimasto a prima del 1998.
    Questa pletora di norme entra a gamba tesa e trasversalmente in tutti i corsi di laurea, soprattutto se si parla di trasferimenti
  • le università hanno la cosiddetta autonomia didattica, il che da diritto ad introdurre modifiche a livello locale.
    Questo non sarebbe un gran problema, senonchè in realtà le modalità non vengono decise dall’università ma dalle singole facoltà che in pratica operano ognuna-per-se.
    Qui ci sono otto facoltà, immaginatevi cosa può uscire da questa combo.
    Per esempio adesso va di moda fare un test agli studenti per valutare se ne sanno abbastanza per fare l’università. solo che:
    – il test a volte lo puoi fare dopo esserti iscritto mentre a volte lo devi fare prima
    – il test può essere obbligatorio o no
    – se fallisci il test puoi essere obbligato a seguire un corso di recupero oppure no
    – se fallisci il test ti possono essere bloccati gli esami oppure no
    Chiaramente ogni facoltà ha deciso per se adottando una combinazione casuale di questi elementi

E’ chiaro che a queste condizioni non esiste una procedura semplice ed intuitiva per spiegare a un povero niubbo come ci si iscrive all’università.

E’ impossibile perchè non è possibile semplificare più di tanto quello che in realtà è estremamente complesso.

Quel che si può fare è cercare  di costruire una strada a prova di errore che guidi il massimo numero di persone sulla retta via, ma è dura…