Oct
08
Posted on 08-10-2006
Filed Under (pixzone) by Federico Feroldi on 08-10-2006

Brutta la rete-dipendenza, specialmente quando ti prende nel weekend, fortunatamente non è il mio caso (per la dipendenza) e sono quindi sopravvissuto, ma cosa sarebbe successo a chi, con la rete dovrebbe lavorarci?
Sono stato a Londra tutta la settimana e come al solito quando vado via stacco la corrente ai vari apparati tra cui l’HAG di FB, non si sa mai, già una volta è esploso e hanno dovuto cambiarlo.
Venerdì torno a casa, accendo tutto e non vanno più telefono e rete, sull’HAG le lucine rosse lampeggiano come fosse Natale.
Chiamo l’assistenza, prossimo slot libero per un uscita Domenica mattina dalle 10 alle 11, attendo fiducioso e finalmente il tecnico arriva alle 11.45. Fortunatamente mi sembra uno in gamba, non uno dei soliti ragazzotti rasta pieni di piercing, in pochi secondi capisce già dove sta il problema… in cantina! Molto probabilmente, dice, altri “tecnici” hanno visto la luce spenta del mio link sullo switch ed hanno ben pensato di “staccare la spina”.
Scendiamo in cantina e guarda un po’, aveva ragione! Dopo una breve investigazione scopriamo che proprio lunedì è stato attivato un nuovo collegamento nel palazzo ed i “tecnici” di Fastweb, vedendo il mio link spento, hanno ben pensato di staccare i cavi e di riutilizzare la porta per il nuovo appartamento!!! GENIALE!
Quello che mi scandalizza di più è che, facendo due chiacchere con questo tecnico in gamba, scopro che non è la prima volta, questa pare essere una prassi “standard” per certi tecnici installatori, infatti lui provvederà a denunciare a Fastweb il tutto in modo che i colpevoli vengano giustiziati nel piazzale di FB!
Consiglio: NON SPEGNETE MAI L’HAG! SPERATE SOLTANTO CHE NON ESPLODA MANDANDOVI A FUOCO LA CASA! :)

(0) Comments    Read More   
Oct
04
Posted on 04-10-2006
Filed Under (pixzone) by Federico Feroldi on 04-10-2006

In nome del movimento Agile ho deciso di adottare la metodologia del Test-Driven development anche per il progettino Javascript a cui sto lavorando.
In realtà le motivazioni sono molto più barbare, infatti ho scoperto mio malgrado che l’affare non funziona più con explorer (scritto minuscolo in segno di disprezzo) e, poichè sono un affecionados di FireFox (dove tutto funziona egregiamente), me ne sono accorto troppo tardi e non riesco a trovare dove sta il problema.
Così ho deciso di scrivere una valanga di test per verificare tutte le funzionalità del sistema sperando di scoprire cosa non funziona sul maledetto browser di Microsoft.

Mi serviva naturalmente un framework di testing, quindi dopo un po’ di ricerca su Google sono arrivato a due contendenti, JSUnit e J3Unit. Inizialmente ero indirizzato verso quest’ultimo per le numerose funzioni di assert ma ho dovuto scartarlo poichè si basa su prototype e va quindi in conflitto con JQuery.

Il vincitore è stato quindi JSUnit e devo dire che sono soddisfatto della scelta, anche le le funzioni di assertion sono un po’ pochine si riesce comunque a fare tutto il necessario senza scrivere troppo codice.

La procedura d’installazione è veramente semplice, basta estrarre il contenuto dell’archivio all’interno del progetto (magari sutto una directory tests) e creare una Test Unit basata sull’esempio fornito col pacchetto.

Infine non resta che scrivere i vari test e lanciare la Test Unit tramite il Test Runner, una semplice pagina HTML che esegue tutti i test e mostra un colorato report.

Per la cronaca ho appena finito di scrivere una trentina di test ma non ho ancora trovato il problema, tutti passano senza problemi sia su FireFox che explorer ma su quest’ultimo non funziona nulla! Arghhh!!!

(0) Comments    Read More   
Oct
04
Posted on 04-10-2006
Filed Under (pixzone) by Federico Feroldi on 04-10-2006

Diamo a Cesare quel che di Cesare, anche JQuery ha le sue pecche e dovrebbe imparare qualcosa dalle YUI soprattutto per quanto riguarda il supporto AJAX che in JQuery viene gestito dal modulo AJAX (integrato nel core) e nelle YUI dal componente Connection Manager.

Vediamo come le due librerie permettono di implementare una semplice richiesta AHAH:

JavaScript:

  1. $.ajax({
  2. url: ‘/article/view/1′,
  3. type: ‘GET’,
  4. success: function() {
  5. document.getElementById(‘mydiv’).innerHTML = this;
  6. },
  7. error: function() {
  8. alert(‘Failed!’);
  9. }
  10. });

JQuery se la cava con una sintassi estremamente compatta e funzionale a discapito per delle funzionalit. Infatti non abbiamo molto controllo sul tempo di timeout o sul tipo di errore in caso il trasferimento fallisca. Vediamo come se la cava YUI Connection Manager:

JavaScript:

  1. var tx = YAHOO.util.Connect.asyncRequest(‘GET’, ‘/article/view/1′, {
  2. success: function(o) {
  3. document.getElementById(‘mydiv’).innerHTML = o.responseText;
  4. },
  5. failure: function(o) {
  6. alert(o.statusText);
  7. },
  8. timeout: 5000
  9. });

Una sintassi sicuramente pi estesa ma che ci offre due vantaggi: impostare il timeout e gestire gli errori di connessione, infatti alla callback failure viene passato un oggetto che permette di sapere se la connessione andata in timeout o se stata bloccata dall’applicazione (altra caratteristica disponibile nella YUI ma non in JQuery).

(0) Comments    Read More   
Oct
03
Posted on 03-10-2006
Filed Under (pixzone) by Federico Feroldi on 03-10-2006

JQuery una libreria, anzi lo chiamerei framwork Javascript che estende le API standard implementate nei browser.

Il metodo principale

$(el)

dove el pu essere un oggetto DOM o una stringa.

$(document).ready(function() {
alert(‘Document loaded!’);
});

In questo modo quando l’oggetto document sar pronto (ovvero la pagina sar caricata completamente) verr lanciata la funzione agganciata all’evento ready, in questo caso una funziona anonima che apre un alert.

Selectors

Nel caso il parametro el sia una stringa, questa verr interpretata come selector CSS o XPath che andr a generare un array di oggetti DOM ai quali verr poi applicato il metodo successivo nella catena.

$(‘a’).click(function() {
alert(“Hello world!”);
});

Il primo metodo $() seleziona tutti i link presenti nella pagina, su di essi il metodo click() associa una funzione anonima all’evento onClick. Il risultato sar che cliccando sui link si aprir l’alert, il tutto senza modificare nemmeno un tag HTML.

Per i selector JQuery supporta le sintassi CSS1-3 e XPath (non completamente), questo ne fa a mio avviso la caratteristica pi potente. Vediamo qualche esempio preso dalla documentazione.

Nasconde tutti i paragrafi che contengono un link:

$(“p[a]”).hide();

Mostra il primo paragrafo presente nella pagina:

$(“p:eq(0)”).show();

Nascondi tutti i DIV che vengono visualizzati sulla pagina:

$(“div:visible”).hide();

Seleziona tutti gli elementi appartenenti a liste ordinate:

$(“ul/li”); /* sintassi XPath */
$(“ul> li”); /* sintassi CSS */

Seleziona tutti i paragrafi con classe “foo” che includono un link al loro interno:

$(“p.foo[a]”);

Legge i valori dei campi INPUT con nome “bar“:

$(“input[@name=bar]”).val();

Seleziona tutti i radio buttons attivi:

$(“input[@type=radio][@checked]”);
(1) Comment    Read More