laboratorio caffeina

in few words, just developing

 

Vita da Developer

che ogni tanto c’è anche bisogno di svago

 
 

DNS dinamico con TopHost

Per oscuri motivi che non indagheremo, il mio server ha un IP dinamico. Ovvero, l’internet provider che lo collega ad internet ne cambia l’indirizzo IP ad intervalli che vanno da alcune ore a pochi giorni. Per raggiungere la macchina da remoto, o per permettere ad altri di collegarvisi, ho dovuto perciò configurare un DNS dinamico: un nome cui corrisponda l’IP attuale frequentemente aggiornato.

Esistono molte soluzioni gratuite che permettono di scegliere un sottodominio ed aggiornarne automaticamente l’indirizzo IP. Una di queste, cui mi sono appoggiato per alcuni anni, è DynDNS: sul sito internet dell’azienda si registra un sottodominio, come daniele.homelinux.org, dove “daniele” è la parte scelta da me, e “homelinux.org” è il dominio principale scelto da una lista predeterminata di nomi (piuttosto bruttini). Un programma installato sul server (ddclient) si occuperà di mantenere aggiornati i registri DNS di DynDNS. Il client controlla periodicamente l’IP della macchina e quello registrato presso DynDNS: qualora i due differiscano, richiede un aggiornamento.

Quando ho acquistato un dominio mio con gestione DNS su TopHost (modena1.it), ho dovuto redirigere sottodomini come “www” al mio server con IP dinamico. La prima soluzione è stata inserire un registro DNS di tipo CNAME, ovvero che fa corrispondere ad un nome un altro nome, come:

www CNAME daniele.homelinux.org

Ho sempre pensato che questa soluzione fosse antiestetica, sebbene invisibile all’utente finale (che si collega comunque a www.modena1.it e vede solo quel nome). Se ho un dominio mio, perché dovrei usare queste parolacce? Del resto l’alternativa era visitare il pannello di controllo di TopHost ogni volta che il mio IP cambiava ed aggiornarlo manualmente… decisamente impraticabile! Allora mi sono rassegnato - temporaneamente, s’intende.

La questione è tornata fuori quando ho avuto bisogno di un gran numero di sottodomini per la gestione della posta e che fossero di tipo A, e scontrandomi inoltre con una limitazione tecnica di DynDNS. L’unica via d’uscita sembrava essere comprare un nuovo dominio, o un account pro su DynDNS.

Invece mi sono scritto un client per il pannello di controllo DNS di TopHost: thdns. Praticamente, un clone ddclient ma adattato per TopHost.

Il programma esegue i seguenti passaggi:

  1. Confronta l’ip memorizzato all’ultima esecuzione e quello attuale o fornito come argomento. Se sono uguali, esce.
  2. Si autentica sul pannello DNS e controlla che anche l’IP sul pannello sia diverso da quello verso cui è richiesto l’aggiornamento. Se non lo è, esce specificando che l’IP è stato mantenuto.
  3. Aggiorna l’ip per il nome richiesto, stampando l’IP precedente e quello nuovo.

Quindi sul pannello ho registrato diversi sottodomini e li ho inseriti nel programma come nomi da aggiornare:

www IN A …ip a caso…

daniele IN A …ip a caso…

etc…

Infine ho inserito una linea in /etc/crontab per chiamare il client ad ogni quarto d’ora:

0,15,30,45 * * * * daniele thdns

Ora la mia macchina è quasi sempre raggiungibile al suo vero ip, grazie a questa piccola magia python: ogni15 minuti infatti il campo IP di tutti i miei record DNS viene sincronizzato con l’indirizzo corrente.

Il programma naturalmente può essere utile anche per chi ha ip statici da amministrare : ad esempio per redirigere rapidamente i propri sottodomini verso server di backup, in caso di emergenza.

Risorse, Vita da Developer mythsmith 29 November 2007 16:46 1 Commento , Popularity: 73% No related posts

 
 
 

Come gestire timeout multipli

Spesso lavorando in Javascript ci si ritrova a lavorare con i timeouts. Generare eventi temporizzati in Javascript è abbastanza banale, si ricorre all'uso di due funzioni:

  • setTimeout() - che esegue una porzione di codice dopo lo scadere di x millisecondi
  • clearTimeout() - cancella il setTimeout()

Notare la sintassi dei comandi:

JavaScript:
  1. /* richiama la funzione alert allo scadere dei 5000 ms */
  2. var timeout = setTimeout( "alert('5 secondi!')",5000);
  3.  
  4. /* cancella l'evento associato alla variabile timeout*/
  5. clearTimeout(timeout);

Ma se si devono gestire più eventi temporizzati contemporaneamente? Una possibile soluzione è creare una variabile globale in cui gestire la coda di timeout, e una funzione che ripulisca la coda.

JavaScript:
  1. //dichiaro variabile globale
  2. var timeoutsQueue = new Array();
  3.  
  4. //aggiungo evento
  5. timeoutQueue[n] = setTimeout("ritardaFunction("+parametro+")",250);
  6.  
  7. //interrompo un singolo evento
  8. clearTimeout(timeoutQueue[n]);
  9.  
  10. //interrompo tutti gli eventi della coda
  11. for(i=0;i<timeoutQueue.length;i++){
  12.         clearTimeout(timeoutQueue[i]);
  13. }

Programmazione, Vita da Developer davide 23 October 2007 21:08 4 Commenti Popularity: 72% Free icon set

 
 
 

Usability: false banalità e navigazione

Per chi è già ampiamente convinto della utilità delle linee guida salti la premessa.

Premessa sociodemopolitica

Spesso leggendo le linee guida proposte nei testi di usability, viene da pensare che siano banalità pensate per agevolare gli utenti disabili. Evitando ogni discorso etico/morale ma parlando in maniera volutamente politicamente scorretta, non conosco disabili e perciò non li considero possibili utenti del mio "business". Generalmente sviluppo siti rivolti per un pubblico di professionisti, ma il nostro popolo è uno dei più vecchi, anche i manger delle aziende italiane e così il nostro parlamento.

Per esperienza personale la maggior parte delle persone oltre i 40/45 anni, pur usando il computer quotidianamente, fatica sia a capirne i concetti base come icone e utilizzo delle finestre, sia ha notevoli problemi con i sistemi di puntamento, insomma muovere il mouse e il doppio click sembrano metterli in difficoltà. Questa mia premessa non vuole essere una campagna per l'adozione di un anziano, ma è una aperta riflessione sul fatto che i nostri potenziali clienti sono informaticamente parlando, per la maggior parte disabili.


1. Inibire il tasto "Indietro"

Ancora oggi molti siti in maniera volontaria o involontaria inibiscono il funzionamento del tasto "Indietro":

  • aprendo i documenti in nuove finestre
  • siti a tutto schermo
  • reindirizzamento forzato
  • utilizzo del tag META di "refresh"

Mediamente il tasto "Indietro" è percepito dall'utente come un "Undo/Annulla", insomma un'ancora di salvezza. Oltretutto mi sembra evidente che bloccare una qualsiasi funzionalità del browser sia una violazione della libertà dell'utente che proverà solo una grande frustrazione.

2. Aprire nuove finestre

Finalmente mi tolgo questo sassolino dalla scarpa, anche io un tempo, per i link che puntavano all'esterno preferivo aprire nuove finestre, pensando di mantenere l'utente rilegato al mio sito.

HTML:
  1. <a target="_blank"></a>

Questo è un errore grave: poichè deludiamo le aspettative dell'utente che si attende di vedere aperto il documento nella medesima finestra, come accade normalmente per ogni link. Anche se fosse un utente esperto saprebbe aprire da solo il documento in una nuova finestra o tab, perchè rischiare di contraddirlo? In questo modo inoltre si vanifica l'utilizzo del tasto "Indietro", oltre ad incrementare il prolificare delle finestre sullo schermo dell'utente.

3. I link che non cambiano colore

Per noi designer è prevalentemente una questione estetica, quel blu elettrico o quel color prugna secca sono proprio un pugno in un occhio! Ma per gli utenti è una questione di praticità, cercano qualcosa e la vogliono trovare senza perdersi, quindi diventa indispensabile che sia evidente dove un utente si trova, dove può andare dal punto in cui si trova e dove è già stato.

Conclusioni

I libri e le linee guida sull'usabilità sembrano sempre delle acide paternali, quindi superflue e irritanti ma osservate questo sito in cui sono incappatto l'altra sera. Un layout davvero attraente, per di più i link sottolineati rispettando le linee guida e la leggera discontinuità l'originalità del layout. Peccato che persone tanto illuminate abbiano tralasciato un dettaglio, secondo me grave, ovvero :

  • v-card02
  • v-card03
  • v-card04
  • v-card05
    • Informazioni fondamentali come numeri di telefono, indirizzo ed email dovrebbero sempre essere scritte con testo, in modo che l'utente possa fare copia-incolla agilmente annotandosi queste informazioni. L'argomento immagini al posto del testo è molto delicato in quanto ad accessibilità ma questo è un altro discorso.

 
 
 

Usability: la teoria.

Usability, ecco uno di quei termini che nel Web spesso scatena polemiche e discussioni, eppure si tratta di una disciplina nemmeno tanto giovane che affonda le sue radici nell'interazione uomo-macchina e che in generale, concettualmente parlando, non ha apportato grandi novità.

Il mondo reale
Donald Norman1 nei suoi numerosi saggi ha trattato gli orrori di usabilità applicata al design di oggetti comuni, pensiamo alle porte a vetri dei grandi edifici pubblici, migliaia di persone le attraversano ogni giorno, ma spesso non sono progettate in modo che giunti in prossimità si intuisca se si debba spingere o tirare per aprirle, anche quando ci fosse la classica etichetta adesiva a suggerirci la soluzione si puo' porre un ulteriore problema, sono a doppia "anta" e l'una blocca l'altra, quale delle due devo scegliere? La grossa differenza nel Web è che gli utenti se non riescono a capire come funziona "la porta" di un sito volgono altrove, nel mondo reale solitamente hanno più pazienza perchè non hanno questa rapida via di uscita.

Definizione
È doveroso cercare una definizione rigorosa dell'oggetto di studio, e per prima cosa rivolgo la mia attenzione al lavoro di Jakob Nielsen2.

L'usabilità è un indicatore di qualità che ci dice quanto una determinata cosa è semplice da usare. Più precisamente ci dice quanto è necessario per imparare a usare quella cosa, con quanta efficienza la si usa poi, quanto si riesce a tenerne a mente il funzionamento, quanto alta è la probabilità di fare errori quando la si usa, e quanto è piacevole usarla.

Qualcosa stride in questa definizione, quindi nell'ottica in cui si pone Nielsen, per questo concordo con la critica mossa da Franco Carlini3 che non digerisce la riduzione ad un valore numerico, un punteggio, del concetto di soddisfacibilità dell'utente. Questa definizione sottende l'esistenza di un algoritmo per il calcolo di questo punteggio, ma leggendo l'opera di Nielsen non si trova la ricetta miracolosa ma un insieme di linee guida da seguire basate su

osservazioni empiriche provenienti da test compiuti su 716 siti web e 2136 utenti di tutto il mondo.

Contando che a stessa detta di Nielsen il web conta più di 80 milioni di siti e che almeno potenzialmente gli utenti del Web sono qualche miliardo, possiamo dire che l'ingrediente segreto proposto da Nielsen in realtà è tanta attenzione verso ilcliente ed esperienza nel conoscere le sue esigenze.

Inoltre come evidenzia Michele Visciola4 non si tratta solo di semplicità d'uso, nel caso del web un elemento fondante è l'informazione, quindi il bisogno dell'utente di reperire un informazione coerente alla sua richiesta.

Conclusione
La mia conclusione è che dall'esperienza altrui c'è sempre da imparare quindi un buon designer deve tenere ben a mente le linee guida frutto delle ricerche di Nielsen e i maggiori studi in materia di usabilità (guardate la bibliografia), per poi saperle rielaborare grazie alla propria esperienza e conoscenza degli utenti del sito che si sta progettando.
Quindi se l'esperienza verrà con il tempo agevoliamola in ogni modo stimolando gli utenti dei nostri lavori a fornirci un continuo feedback e quando possibile provando a reclutare utenti per sottoporli a test.

Mi riprometto entro fine settembre di sottoporvi qualche interessante linea guida e approfondire l'argomento dei test di usabilità

Bibliografia

  1. "Emotional Design: Why we love (or hate) everyday things" di Donald Norman (2004).
  2. "Web Usability 2.0. L'usabilità che conta" di Jakob Nielsen (2006).
  3. "Parole di carta e di web. Ecologia della comunicazione" di Franco Carlini (2004).
  4. "Usabilità dei siti web" di Michele Visciola (2000).
 
 
 

Il non-senso del rel=”nofollow”

Sempre più siti/blog hanno incominciato ad usare il rel="nofollow" nei link esterni al proprio spazio. Ogni owner è libero di fare le proprie scelte. Ma, per onestà, occorre ricordare che internet è un enorme ipertesto (che muta rapidamente) e che se tutti i siti web avessero usato dal principio l'attributo rel="nofollow" il web stesso non sarebbe mai cresciuto e il web 2.0 mai nato.

Quali sono i motivi che spingono ad inserire questo attributo?

I principali sono due: Spam e Rank. In realtà sono collegate strettamente le due cose.

I link determinano una buona misura del ranking dei siti sui motori di ricerca (Google per intenderci), evitare che utenti possano auto-linkarsi (nei commenti dei post per esempio) principalmente ha lo scopo di ridurre lo spam sui blog. In realtà, anche Wikipedia ha deciso di inserire il nofollow per lo stesso motivo. Questo spam ha come obiettivo quello di migliorare il ranking dei siti linkati. Inserire il "nofollow" dovrebbe avere come scopo quello di ridurre lo spam, cosa che si è dimostrata essere falsa.

Il "nofollow" è un non-senso perché spinge all'autarchia. L'autoreferenzialità e la verticalità del flusso di informazioni rappresentano il primo passo verso una nuova "agenda setting" per il web... occorre imparare a distinguere tra le fonti, ma occorre ancor prima averle.

Vi segnalo questo interessante post su questo stesso argomento: "Un anno senza nofollow".

Buona lettura...

 
 
 

Safari 3 Public beta di Apple ora anche per Windows XP e Vista

Dopo che la Microsoft aveva annunciato che non avrebbe più sviluppato il suo IE per Mac consigliando di usare Safari, quelli della Mela devono aver pensato che fosse il momento giusto per lanciare il loro browser per aggredire quote di mercato a Microsoft. Da qualche giorno direttamente dal sito della Apple potrete trovare la versione oltre che per Mac anche per Windows XP e Vista del browser della casa di Cupertino.
È un browser in pieno stile Mac con tanto di antialiasing per i font e stondamenti... non vi resta che scaricarlo e provarlo...

viva il crossbrowsing...

 
 
 

Buongiorno, mi presento

bigliardBuongiorno a tutti, mi presento. Sono Gaetano Bigliardi ma qui mi farò chiamare semplicemente "bigliard".

Approfitto dello spazio che mi viene offerto per far sentire la mia voce. E non posso far altro che ringraziare Diego che mi ha invitato a scrivere su queste pagine.

Di cosa mi occuperò quindi nei miei "post" del Laboratorio Caffeina? Be' il nome stesso del sito vuole far intendere che una delle bevande più apprezzate dagli sviluppatori sia proprio il caffè, anzi il Java... io però preferisco che non sia troppo concentrato. E lo ingentilirò con un po' di Script. Chi vuole intendere...

Vita da Developer bigliard 5 June 2007 0:10 2 Commenti Popularity: 35% No related posts

 
 
 
Chiudi
E-mail It