var mysite = {
    'url': "http://www.ajaxweb20.net",
    'author': "Giuseppe Raso",
    'xhtmlValid': true,
    'cssValid': true
}
Home > Blog

Archive for Febbraio, 2008

WebCanvas: l’apoteosi del tag canvas e di javascript.

Venerdì, Febbraio 29th, 2008

WebCanvasL’elemento html canvas è sicuramente uno dei più innovativi, non a caso esso permette al browser di giocare con la grafica 2D/3D e ad ottenere risultati piuttosto sorprendenti.
A dimostrazione delle potenzialità offerte da canvas in combinazione con Javascript è stata lanciata una web application di nome WebCanvas che permette di disegnare su un muro virtuale utilizzando pennelli, gomme e matite, proprio come in paint.
La novità non stà tanto in quello che permette di fare l’applicazione ( un pò inutile in fondo visto che il muro è condiviso ) tanto nel fatto che essa è realizzata interamente in Javascript senza l’ausilio di Flash.

Starordinario, vero? :o

Ovviamente con IE il discorso è totalmente diverso, tale browser non supporta canvas e quindi l’applicazione sarà fruibile solo nella versione Flash ( di certo non è il problema principale a cui devono pensare a Redmond :D )

Missione umanitaria: portare il porno in Nigeria.

Giovedì, Febbraio 28th, 2008

Nigerian childVi ricordate dei laptop destinati agli africani dal costo di circa 100 euro caduno?
Quelli che avrebbero dovuto portare la nuova frontiera della comunicazione anche nei paesi più sperduti del continente nero?
A quanto pare i bambini nigeriani ne stanno facendo un uso molto intelligente: farsi le seghe :D
Ebbene si, questa è la cruda verità, secondo la Agency of Nigeria una buona parte dei bambini nigeriani a cui è stato donato il laptop lo utilizza per andare su siti pornografici, sebbene i suddetti fossero stati destinati ovviamente ad un uso completamente diverso…

Che non sia questo ciò che si intenda per globalizzazione?

Via : Napolux

Sono incappato in un virus… Indovinate in che genere di sito?

Mercoledì, Febbraio 27th, 2008

Per la prima volta da quando uso Firefox sono incappato in un virus.
Un sito porno? Magari:D
Al giorno d’oggi non ci si può andare a fidare nemmeno dei blog inerenti ajax :(
h t t p : / / w w w . a j a x l i n e s . c o m /
Mi raccomando NON CI ANDATE!!!
Anche se a dire la verità gli articoli erano piuttosto interessanti :D

Arriva DOMAssistant 2.6: la sfida ai maggiori framework è lanciata.

Venerdì, Febbraio 22nd, 2008

DOMAssistant è un framework ( libreria? ) javascript di Robert Nyman. Pur essendo un progetto abbastanza maturo finora, a causa della poca pubblicità, aveva sempre trovato poco spazio tra gli sviluppatori.

Detto fatto: Robert ha pubblicato un sito dedicato al progetto e soprattutto ha creato una pagina di testing che mostra chiaramente come i selettori css siano enormemente più veloci in DOMAssistant che in altri framework più blasonati come jQuery ed Ext.

C’è da dire che le API di DOMAssistant sono parecchio più limitate se paragonate a quelle degli “avversari”, oltre a ciò nonostante il codice sia velocissimo alcune parti mi lasciano del tutto perplesso, come ad esempio una regex di 40-50 caratteri ripetuta due volte all’interno del codice…
Tali miei dubbi vengono confermati dal fatto che a parità di peso jQuery fa molte più cose.

Mi sa che Robert ci deve lavorare ancora un pò :D Comunque resta sempre un’ottima scelta se volete qualcosa di leggero e veloce.

Uno strano ( il + strano ) comportamento di Internet Explorer.

Sabato, Febbraio 16th, 2008

Questo è sicuramente uno dei comportamenti più strani che abbia mai visto in un browser. Guardate il seguente codice:

setInterval(function() {
  alert("test");
}, -1)

Esso invoca il setInterval con un intervallo negativo.
Come si comportano i browser in questo caso?
Firefox, Opera, Safari e i browser aderenti al W3C si comportano nel modo più logico eseguendo la funzione con l’intervallo di tempo più piccolo possibile.
In Internet Explorer tale codice si comporta in maniera assolutamente incredibile: la funzione viene eseguita ogni qual volta si clicca col tasto sinistro in un qualsiasi punto! :o
Io mi chiedo se dietro questi misteri ci sia una specie di logica perversa, ma onestamente preferisco non saperlo :)

Via: John resig

I misteri dell’UTF-8… Come evitare i mal di testa nell’utilizzo di questo character-set.

Venerdì, Febbraio 15th, 2008

L’UTF-8 è sicuramente il migliore dei character set in cui salvare le proprie pagine web. L’UTF-8 è un sottogruppo dell’unicode e in quanto tale permette di utilizzare una moltitudine di caratteri che la codifica ISO al contrario non supporta.
Non si può però mettere in dubbio che la conversione da una codifica all’altra spesso spiazzi i meno esperti, e a dirla tutta, anche quelli più smaliziati. Il fatto è che finche si lascia la codifica ISO è difficile incorrere in problemi, non a caso questa è la codifica standard delle connessioni http.
Perciò per quelli che sono entrati da poco a contatto con i misteri dell’UTF-8 ho preparato un tutorial passo per passo per convertire delle pagine ISO in pagine UTF-8.

Come faccio a convertire/creare una pagina in UTF-8?
Per avere una pagina in UTF-8 è necessario prima di tutto salvare il file della pagina in UTF-8. In Notepad++ ad esempio basta mettere il segno di spunta su “Formato/Codifica in UTF-8″.
Dopodichè è necessario mettere almeno il meta tag in head che specifica quale character set si sta usando:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Come faccio in PHP a forzare l’utilizzo della codifica UTF-8?
L’espediente di prima potrebbe anche non funzionare se il server è settato male. Per fortuna in php è possibile modificare gli header in modo da forzare il server a restituire la pagina in UTF-8 ( ricordo che gli header possono essere modificati solo prima di mandare dell’output al client ):

<?php header (‘Content-type: text/html; charset=utf-8′); ?>

E’ possibile in PHP convertire un testo da una codifica qualsiasi ad UTF-8?
In php è disponibile la funzione utf8_encode che fa proprio questo. Bisogna stare attenti a utf8_encode: se la stringa passata è già codificata in UTF-8 il risultato potrebbe essere molto diverso da quello che ci si aspetta…

<?php utf8_encode("ààà⌂ǰ°°ùùùùùéééèèèèè"); ?>

Se i dati del mio database sono in un formato diverso dall’UTF-8, come faccio a visualizzarli?
Un modo è ovviamente quello di utilizzare la funzione utf8_encode sulle stringhe che riceviamo dal database. Ma se il database utilizzato è MySql ( sicuramente si può fare anche con Postgree e Oracle ) esiste la possilità di settare una variabile che forza la codifica dei dati passati tra server e client. L’istruzione SET NAMES va usata subito dopo aver selezionato il database.

<?php
mysql_select_db("mydb");
mysql_query("SET NAMES ‘utf8′;");
?>

Esiste un modo per automatizzare l’utilizzo dell’UTF-8?
Si, nel file di configurazione di Apache o nel file .htaccess basta inserire la seguente riga:

AddDefaultCharset UTF-8

Per evitare invece di dover utilizzare ogni volta che ci si collega ad un database SET NAMES basta modificare il file di configurazione di mysql e inserire questa riga:

default-character-set=utf8

E Javascript?
Se dovesse essere necessario passare dei parametri nell’url ( ad esempio in richieste ajax ) è possibile ( necessario ) utilizzare encodeURIComponent. Tale funzione ( purtroppo non compatibile con IE 5 se non usando delle librerie apposite ) codifica correttamente i caratteri speciali in UTF-8. Non fate l’errore di usare escape.

location.href = "http://www.google.it/search?q=" + encodeURIComponent(mySearch);

Plugin di wordpress per visualizzare un listato di un qualsiasi linguaggio di programmazione.

Giovedì, Febbraio 7th, 2008

Dato che dopo qualche test pare funzionare bene voglio proporvi un plugin che personalmente trovo molto utile: questo permette di visualizzare un listato di un qualsiasi linguaggio di programmazione ( beh, quasi :) ) semplicemente mettendo il listato all’interno di un tag pre:

<pre lang="javascript">var js = new Object({
  ‘key’: "fdfds",
  ‘fn’: function() {
    alert(this.key);
  }
});</pre>

lang è l’attributo che specifica il linguaggio di programmazione del listato.
L’installazione è uguale per tutti i plugin: dopo aver scaricato lo .zip e copiata la cartella nel percorso wp-content/plugins basta andare in amministrazione/plugin per attivarlo.

Creare elementi: DOM o innerHTML?

Giovedì, Febbraio 7th, 2008

Una delle dispute più frequenti nel mondo di Javascript è quella tra chi sostiene che il DOM sia il modo più sicuro per creare e appendere nuovi elementi e chi invece crede che la velocità di innerHTML sia un buon motivo per non utilizzare gli standard.

Chi ha ragione quindi? Il vero problema è proprio questo: tutti e due.

I metodi standard come createElement e cloneNode hanno il pregio di funzionare sempre e comunque senza dare particolari errori ( al contrario ci sono casi in cui innerHTML non funziona come ci si aspetterebbe ).
Ed essendo standard è pressoché certo che tutti i browser li supporteranno anche in futuro.

Il rovescio della medaglia è che i metodi del DOM sono il doppio se non il triplo più lenti di innerHTML.

Cosa scegliere quindi? Purtroppo non si può dare una risposta precisa; in teoria sarebbe bello poter usare sempre i metodi DOM, ma mettiamo il caso in cui riceviamo del markup html da una chiamata ajax. Visto che questo viene ricevuto sotto forma di testo è molto più pratico ed enormemente più performante utilizzare innerHTML invece che fare il parsing della stringa ricevuta. Persino le librerie e i framework più famosi infatti utilizzano innerHTML.

Ove sia possibile utilizzare il DOM è bene tenere a mente tre principi base per velocizzare lo script:

  1. Possiamo appendere elementi anche a elementi che ancora non sono ancora stati appesi nel documento.
  2. Ogni volta che si appendono uno o più elementi il browser è costretto a ricalcolare la visualizzazzione della pagina. Per questo motivo è molto meglio appendere più elementi in una volta sola piuttosto che appenderli ad uno ad uno.
  3. La funzione cloneNode è più veloce di createElement.

Giusto per fare un esempio vediamo uno script che non segue questi tre principi e uno che invece li mette in pratica.

Script meno performante:

var tbody = document.getElementById("tb1"), //tb1 e’ un tbody
    tr,
    td;
    for(var i = 0; i!=10; i++) {
        tr = document.createElement("tr");
        tbody.appendChild(tr);
        for(var g = 0; g!=100; g++) {
            td = document.createElement("td");
            tr.appendChild(td);
            td.appendChild(document.createTextNode("A"));
        }
    }

Script più performante:

var tbody = document.getElementById("tb2"), //tb2 e’ un tbody
    parent = tbody.parentNode,
    trbase = document.createElement("tr"),
    tdbase = document.createElement("td");
    tdbase.appendChild(document.createTextNode("A"));
    parent.removeChild(tbody);
for(var i = 0; i!=10; i++) {
    tr = trbase.cloneNode(false);
    for(var g = 0; g!=100; g++)
         tr.appendChild(tdbase.cloneNode(false));
         tbody.appendChild(tr);
}
parent.appendChild(tbody);

Facendo un pò di esperimenti ho potuto constatare come il secondo script sia circa 6 volte più veloce del primo, forse addirittura più veloce dello stesso innerHTML.
Da notare che a ciò contribuisce il fatto di avere rimosso il tbody dal documento prima di avergli appeso elementi.

Plugin per spostarsi da Splinder a Wordpress; ora funziona!

Martedì, Febbraio 5th, 2008

Stanco di Splinder ho deciso di farmi un blog qui su wordpress. Però sarebbe stato un peccato perdere post, commenti e tutto il resto…

In aiuto mi è venuto questo plugin di Terenzani, ma per farlo funzionare è stata necessaria qualche modifica.

Fondamentalmente il plugin di Terenzani non funzionava per due motivi:

  1. I tag contenuti nei commenti non vengono interpretati.
  2. I link per passare alle pagine successive hanno il rel=”nofollow” e per questo motivo non venivano “matchati”.

Il plugin funzionante può essere scaricato da qui.

Le istruzioni per farlo funzionare sono esattamente le stesse, cambia solo il template ( che trovate nel file splinder.php ).

PS: Non l’ho provato ( l’avessi visto prima :D ) ma in alternativa potete sempre usare il plugin di Fullo, che per altro gode di molte altre opzioni.

Ajax Web 2.0!!!

Sabato, Febbraio 2nd, 2008

E’ arrivato ajaxweb20.net ( dominio figo, vero :D ). Con la scusa nel giro di uno o due giorni questo blog verrà spostato su quel dominio…
EDIT: Come potete vedere finalmente ci sono riuscito! Non è stato molto facile ma onestamente mi aspettavo peggio :)