Free Site Validator: HTML valido su un intero sito

Un nuovo servizio permette di controllare la validità del codice HTML di un intero sito e di ricevere il resoconto via email.

Fino ad ora per controllare la validità del codice HTML di un sito l’unico strumento disponibile era il validatore del W3C. Sicuramente efficiente per effettuare verifiche su singoli documenti, ma inutilizzabile su siti con centinaia di pagine.

Grazie alla segnalazione del sempre eccellente Roger Johansson ho scoperto Free Site Validator: come si può intuire dal nome questo servizio permette di validare il codice di un intero sito dopo essersi registrati ed avere inserito l’URL. In questo momento proprio a causa della segnalazione di 456 Berea Street il sito ha subito un deciso rallentamento ed i report non sono immediati, ma poterli ricevere via email evita ogni problema: l’attesa è comunque accettabile.

Free Site Validator permette di:

  • Controllare la validità di tutte le pagine di un sito partendo da un indirizzo: il report mostra un link alle pagine con errori, identificandoli.
  • Verificare la presenza di link a pagine inesistenti: vengono evidenziati i link errati e la pagina dove sono stati inseriti.
  • Installare su Ubiquity il comando validate per controllare al volo qualsiasi pagina con il validatore del W3C (per sapere cos’è Ubiquity ti consiglio questo post).

Il servizio è veramente buono ed al momento insostituibile, l’unico dubbio è se sia in grado di sopportare il gran traffico che sarà generato col passare dei giorni e con l’aumento della sua popolarità.

Finchè la velocità del sito è accettabile approfittatene: io ho ricevuto il report di TomStardust.com (quasi 600 pagine) dopo qualche ora.

Falso Posizionamento Assoluto

Alla scoperta di un nuovo modo di costruire layout CSS, senza float e posizionamenti assoluti.

A List Apart ha pubblicato un articolo che propone una nuova tecnica di posizionamento con i CSS, chiamata Faux Absolute Positioning. In pratica è un’alternativa ai due metodi più diffusi, il posizionamento con i float e quello assoluto.

Le ragioni della ricerca di un nuovo metodo per la realizzazione di layout CSS sono nella necessità di risolvere problematiche complesse e non così frequenti: si parla di siti dinamici, dove gli utenti possono magari decidere la posizione degli elementi nella pagina, con tutte le difficoltà che ne derivano.

Proprio per questo la tecnica del Falso Posizionamento Assoluto cerca di unire i pregi dei metodi conosciuti, eliminandone i difetti. In realtà non esattamente così, ma approfondiamo l’analisi per capire meglio.

La tecnica

Il codice HTML utilizzato deve servire a costruire una struttura a griglia, con linee orizzontali ed item (che rappresentano le colonne), in questo modo:

<div class="line">
<div class="item" id="item1">
<p>contenuto</p>
</div>
<div class="item" id="item2">
<p>contenuto</p>
</div>
<div class="item" id="item3">
<p>contenuto</p>
</div>
</div>

Sulla tecnica originale è presente un altro div intorno al contenuto, ma ai fini del layout non è rilevante.

Il CSS relativo invece è il seguente:

.line {
float: left;
width: 100%;
display: block;
position: relative;
}
.item {
position: relative;
float: left;
left: 100%;
}

Infine per posizionare ogni item, serve una dichiarazione come questa:

#item1 {
margin-left: -100%;
width: 20%;
}

In pratica per ogni item la posizione viene assegnata tramite un margin-left negativo. Per chiarirvi le idee, ho realizzato un esempio di layout a 3 colonne costruito in questo modo.

Considerazioni

Il vantaggio della tecnica è che ogni elemento viene posizionato facendo riferimento ad un punto ben preciso, cioè il margine destro del layout. Questo è un punto di forza preso direttamente dal posizionamento assoluto, con il vantaggio che gli elementi non vengono estratti dal normale flusso del codice, ed inoltre il contenuto continua a definirne l’altezza, cosa che non succede utilizzando i float.

Il risultato è stabile, rimane valido sia ingrandendo il testo che ridimensionando la finestra, e funziona su tutti i browser senza richiedere nessun hack, nemmeno per IE6.

Sembrerebbe un’ottima soluzione quindi, ma i difetti non mancano. Il più evidente è il gran numero di div utilizzati: se dovete realizzare un layout semplice a 2 o 3 colonne, non usate questo metodo e magari seguite gli esempi di Layout Gala di Alessandro Fulciniti.

Un altro problema riguarda le unità di misura, che devono essere sempre le stesse per posizionare gli elementi. Non potrete combinare percentuali, em, e pixel.

In conclusione, non vedo molte applicazioni per questa tecnica nel lavoro di tutti i giorni, ma per particolari esigenze potrebbe essere un’alternativa da considerare. Tenetela presente per i momenti di difficoltà, almeno finchè non arriveranno i CSS3 con il modulo per i layout a colonne.

Il tag the_excerpt di WordPress

Suggerimenti per la personalizzazione del template tag di Wordpress, con alcuni plugin.

Se avete a che fare con la realizzazione di temi WordPress, vi sarete imbattuti nel template tag the_excerpt. E’ una funzione che richiama le prime 55 parole dei post pubblicati, a meno che non sia stato inserito il riassunto opzionale: in tal caso sarà quest’ultimo a venire recuperato.

Ho utilizzato questo tag soprattutto nell’ultima modifica del mio tema, e mi sono trovato ad affrontare un problema su tutti: l’inserimento automatico del testo estratto all’interno di un paragrafo.

Per evitarlo, la soluzione è incredibilmente semplice, infatti esiste un plugin che consente di eliminare i tag html <p></p> intorno a the_excerpt per poter gestire tutto dal template. Il plugin si chiama No Excerpt P, e non fa altro che eliminare la funzione wpautop. In questo modo è possibile inserire il testo dentro dei tag di tipo <h3></h3> o simili, oppure usarlo nel meta tag description.

Se invece volete modificare la lunghezza, esiste un plugin chiamato the_excerpt Reloaded che permette di personalizzare la funzione con diversi parametri. Oltre al numero di parole visualizzate è possibile ad esempio includere elementi html che normalmente sarebbero eliminati, come immagini e link.

Infine se queste modifiche vi servono, ma non volete aggiungere altri plugin alla vostra installazione di WordPress, ricordate che potete sempre includere nel file functions.php del vostro tema gli script che desiderate.

Nuovo sito TIM: analisi generale

Uno sguardo tecnico al nuovo portale TIM, con particolare attenzione rivolta a grafica, accessibilità, SEO e codice delle pagine.

In questi giorni è stato lanciato il nuovo sito TIM, con nuove funzionalità ed una grafica più curata. Come ho fatto in passato con il sito Feltrinelli, voglio addentrarmi in una veloce analisi per evidenziare pregi e difetti di questa realizzazione.

Faccio notare che questo esame è incentrato soprattutto sull’homepage del sito e non pretende di essere dettagliato: per quello ci sono le analisi tecniche e gli studi di accessibilità, che hanno ben altre modalità.

Grafica: voto 7

Il sito TIM in questa nuova veste appare sufficientemente curato e apprezzabile. Non si è osato molto con i colori, l’unico elemento grafico che emerge sulla home è il banner Flash. Nel complesso comunque la prima impressione è stata positiva.

Accessibilità: voto 5

Al contrario di quello che molti potrebbero pensare, è stata rivolta una discreta attenzione all’accessibilità del sito, ma il lato dolente sono soprattutto le animazioni in flash.

Note positive:

  • Lo slider Javascript in homepage è accessibile anche con js disabilitato
  • Il sito è navigabile anche con le immagini disabilitate

Note negative:

  • Il flash principale sulla home non ha testo alternativo. Al momento appare il testo “Flash top testo sostitutivo”
  • Anche il flash della pagina 119 Area Clienti non ha contenuto alternativo, stessa cosa per altre sezioni
  • I link per ridimensionare il testo si basano su javascript, la funzione non è accessibile con js disabilitato

SEO: voto 3

Questo il punto dolente, ma per i siti famosi è un comportamento diffuso non curarsi del posizionamento: a molti basta puntare sul nome già conosciuto.
Ovviamente non sono d’accordo su questa pratica, perchè i vantaggi di avere un buon posizionamento sarebbero innumerevoli, soprattutto per le pagine diverse dalla home.

  • Gli url sono incomprensibili, la stessa home ha come indirizzo http://www.tim.it/consumer/homepage.do
  • Il title delle pagine è male utilizzato, ed alcune lo hanno uguale
  • Nessuna attenzione è stata rivolta all’ottimizzazione del codice HTML per i motori di ricerca, h1 e altri tag sono inesistenti
  • I meta tag keyword e description sono assenti

Codice XHTML e CSS: voto 4

  • Il div dei contenuti della pagina è successivo al div della sidebar destra
  • Sono presenti troppi CSS inline
  • Il codice XHTML non è semantico, in home non esiste h1, gli h2 sono solo alcuni titoli della sidebar, mentre i titoli dei contenuti principali sono semplici link a dentro dei div.
  • Sono presenti alcuni errori di validazione. Sono però pochi, e nel panorama italiano è cosa quasi da segnalare positivamente.

Conclusione: voto 5.5

Il nuovo sito TIM presenta pregi e difetti. Se meritano una nota positiva l’attenzione ad alcuni dettagli e la grafica, molti altri aspetti potevano essere curati meglio.

Fa piacere comunque vedere che per certi elementi l’accessibilità è stata tutelata, anche se ancora non è sufficiente.

Posizionamento sui motori di ricerca: qualche consiglio

Ogni tanto mi vengono chiesti consigli per il posizionamento sui motori di ricerca: a volte si tratta di siti amatoriali, in altri casi sono vetrine sul web di attività commerciali, ma sono comunque ben pochi i casi in cui si trova svolto un buon lavoro di ottimizzazione per Google ed affini.

Per chiunque abbia voglia di interessarsi all’argomento SEO, i punti fondamentali da cui partire sono senza dubbio:

  • validità del codice e rispetto degli standard descritti dal W3C
  • contenuti ben organizzati e strutturati, utilizzando codice semanticamente corretto

Iniziando da questa base è possibile ottenere buoni risultati, ma la cosa più importante da tenere presente è che un sito per essere trovato ha bisogno di contenuti da offrire. Molti contenuti. E’ per questo motivo che i blog sono così ben visti dai motori di ricerca: sono una fonte continua di notizie in continuo aggiornamento, ed il patrimonio che mettono a disposizione degli utenti aumenta continuamente, ad ogni post.

Non è però tutto così facile. Ci sono diverse tipologie di contenuti completamente invisibili ai motori di ricerca, inutili ai fini del posizionamento e controproducenti se usate su larga scala.

Vengono descritte benissimo nel post SEU, Search Engine Useless su Standardzilla, che riassumo in breve:

Iframes

Gli Iframe non sono validi usando doctype XHTML. Inoltre visualizzare dei contenuti in questo modo significa non sfruttarli pienamente, perchè gli spider dei motori di ricerca non leggeranno ciò che si trova all’interno della finestra dell’Iframe.

Flash

Il tanto discusso flash è spesso inutile ed impossibile da leggere per i motori di ricerca. Il bello è che il modo per far indicizzare comunque i contenuti ci sarebbe, ad esempio fornendo delle alternative accessibili. Inutile dire che non viene quasi mai usato in maniera corretta.

AJAX

Spesso sinonimo di Web 2.0, AJAX è una tecnologia da usare con cautela. Ne ho parlato anche in passato, riempire un sito di javascript per generare i contenuti è una pessima idea ai fini del posizionamento.

Video e Audio

Come immaginerete, tutto ciò che è video e audio non può essere indicizzato da Google (almeno per ora..). Per risolvere il problema basterebbe rispettare i requisiti per un sito accessibile, ovvero affiancare delle trascrizioni.

Cosa fare se un sito ha tutti questi elementi che non verranno mai letti da un motore di ricerca? Lavorare a posteriori non è mai facile, ma inizialmente puntare sulla pulizia del codice può aiutare molto. Utilizzare il corretto title sulle proprie pagine, eliminare i meta tag obsoleti, fare attenzione ai titoli e magari passare ad una doctype di tipo XHTML sono i primi passi da compiere.

E poi? Dopo questo sarà necessario iniziare a correggere gli errori commessi, sostituendo gli elementi incriminati o fornendo le alternative testuali adeguate, tenendo presente che considerare problemi del genere nelle prime fasi della progettazione avrebbe evitato molti problemi.

HTML5 ed il futuro di internet

Dopo aver parlato di standard web e della contrapposizione tra W3C e WCAG Samurai, è indispensabile fare chiarezza anche sul futuro dell’HTML.

Da tempo è avviata una discussione sulla specifica migliore per internet, e la strada sembra dividersi su due possibilità: HTML5 e XHTML2.

Da un determinato punto di vista sembrerebbe più logico passare da XHTML 1.0 alla specifica 2.0, non è però detto che le cose seguano questa direzione, anzi. I produttori di browser sembrano preferire una nuova versione dell’HTML, e molte discussioni degli ultimi mesi indicano la stessa strada, tanto che il W3C è tornato sui suoi passi.

Per capire qualcosa di più sulla questione, consiglio a tutti gli interessati la lettura di un ottimo articolo di Maurizio Boscarol, commenti compresi. E’ una serie di domande e risposte che permette di comprendere meglio lo scenario futuro del web. Il post è stato creato a Maggio, ma viene aggiornato ogni tanto con nuovi elementi.

Stiamo parlando dello sviluppo di un linguaggio che occuperà molti dei prossimi anni, ma è fondamentale che si individui fin da ora la direzione giusta per non cadere in inutili perdite di tempo.

Se volete inoltrarvi nella disputa tra HTML5 e XHTML2, vi segnalo anche un articolo di HTML.it, traduzione di un ormai famoso intervento di David Andersson su Digital Web Magazine.

Il codice valido non basta

Spesso chi realizza un sito ed inizia a prestare attenzione agli standard del W3C commette un errore comprensibile ma difficilmente giustificabile: cerca esclusivamente di validare il codice di una pagina. Questo è importante, ma non deve essere l’unica preoccupazione, e forse nemmeno la principale.

Mi è capitato di conoscere persone che una volta raggiunto l’obiettivo di realizzare una pagina valida XHTML 1.1 Strict si ritenevano soddisfatte. E’ un ottimo esercizio, questo nessuno può negarlo, ma va inteso come tale e non bisogna limitarsi solo a quello. L’accessibilità di un sito va ben oltre i controlli automatici.

Parlando anche di CMS, ce ne sono alcuni che generano codice valido e vengono fatti passare per accessibili, ma quando poi si va ad analizzare l’HTML ci si trova davanti una doctype magari di tipo 4.01 Transitional, con layout a tabelle.

Creare un sito e preoccuparsi esclusivamente della validazione automatica del codice rischia quindi di diventare controproducente, se poi i risultati sono simili a quelli citati sopra.

Nella maggior parte dei casi è molto più importante avere markup semantico, layout ben organizzato, oltre a nessun CSS e Javascript inline, separando sempre i contenuti dalla presentazione. Un sito accessibile è il risultato di un insieme di procedure e controlli, impossibile limitare il tutto ad una semplice validazione automatica.

Colore di sfondo del body: mai dimenticarlo

Non tutti lo sanno, ma ogni browser consente di impostare un colore predefinito per lo sfondo ed il testo delle pagine web. Queste impostazioni vengono utilizzate quando il sito visitato non ha un colore già stabilito: di solito sono rispettivamente bianco e nero, ma un utente potrebbe preferire altre combinazioni.

Questo comporta possibili problemi quando in un sito il body non ha un colore di sfondo. Poniamo ad esempio che un utente abbia il rosso come background predefinito; questo è quello che vedrà andando sul sito bloggers.com:

Un altro esempio si trova stavolta su Modern Life is Rubbish che recentemente è stato anche ridisegnato.

Il problema si aggira facilmente ricordandosi sempre di dare al body un colore di sfondo:

body { background: #fff }

I due siti che ho fornito come esempio sono stati i primi che ho scoperto, ma se fate una ricerca non sarà troppo difficile trovare qualche altro caso clamoroso. Ricordatevi di questo particolare quando realizzate un sito, vi eviterà le lamentele dei clienti (e dei visitatori) che hanno dei colori preimpostati sul loro browser.

Background sfumati con una sola immagine

Il 13 Novembre è stato pubblicato su A List Apart un articolo su come creare sfondi sfumati tramite i CSS, utilizzando un’unica immagine di sfondo.

L’idea è interessante, ma si basa su un presupposto: è necessario utilizzare un png trasparente per ottenere l’effetto desiderato. Ho già parlato in passato dei problemi che esistono attualmente con questo tipo di immagini, ed infatti la trasparenza non è supportata da Internet Explorer 6.

L’autore dell’articolo presenta una soluzione al problema basata sul filtro AlphaImageLoader, ma si dimentica di dire un particolare importante: in questo modo il CSS non sarà valido.

Discutibile anche la scelta di inserire l’immagine trasparente direttamente nel codice per poterla ridimensionare. In questo modo l’html prodotto ha un elemento presentazionale al suo interno che non ha senso di trovarsi lì. Io avrei fatto tutto dal foglio di stile, ripetendo l’immagine in orizzontale con un semplice repeat-x:
background: url(grad_white.png) repeat-x;
Riassumendo, l’idea è molto interessante e sarà valida con IE6 fuori circolazione, ma non mi sentirei di consigliare questa tecnica così com’è, applicando almeno le modifiche citate.

Come far riconoscere i feed RSS a Firefox 2.0 e IE7

Feed RSSSe avete installato l’ultima versione di Firefox o di Internet Explorer, avrete notato che è possibile iscriversi ai feed RSS della pagina che state navigando con un semplice clic sull’ormai famosa icona.

Non tutti i siti però forniscono questo servizio, è necessaria la presenza di poche righe di codice nella sezione head della pagina. I temi di WordPress ben realizzati, per fare un esempio, non hanno bisogno di modifiche, ma ci sono anche quelli che necessitano di correzioni.

Visto che non è mai troppo tardi, controllate il vostro sito; se il browser non riconosce la presenza di feed RSS siete ancora in tempo per rimediare.

Tutto quello che serve è includere l’indirizzo del vostro feed (potete linkarne anche più di uno in modo che l’utente possa scegliere a quale registrarsi) nel modo seguente:

<link rel="alternate" type="application/rss+xml" title="Titolo del primo feed" />
<link rel="alternate" type="application/rss+xml" title="Titolo del secondo feed" />

Potete vedere un esempio pratico direttamente su questo sito. Se sono presenti più feed, al clic sull’icona appariranno tutti quelli disponibili e l’utente sarà libero di scegliere a quale iscriversi.