Data uri scheme e base 64 nei fogli di stile e nell’html
Qualche tempo fa pubblicai un articolo su Italian Web Design dove veniva spiegato come validare il codice css incluso in Lightbox 2.0, la problematica era semplice, il codice css funziona ma presenta un errore nel css che viene riportato dal validatore w3c.
L’errore è dovuto ad un non corretto utilizzo del Data Uri Scheme in Base64.
background-image: url(data:image/gif;base64,AAAA);
La seguente proprietà andrebbe infatti scritta così:
background-image: url('data:image/gif;base64,AAAA');
Il seguente codice viene infatti validato senza problemi, la domanda che ci si potrebbe porre è perchè utilizzare questo metodo per inserire un’immagine di background?
Molto semplice, il Data Uri Scheme altro non è che uno schema di stringhe che definiscono una risorsa, in questo caso per esempio non abbiamo un URI tradizionale che richiede al server un’immagine, bensì abbiamo una stringa convertita in Base64 (che è l’encoding) interpretabile dal browser come immagine.
Al momento il Data Uri Scheme è supportato da tutti i browser basati su Gecko (firefox e derivati), Opera, Safari ed Internet Explorer 8 che però limita il peso della stringa a 32 kb.
Questa tecnica è molto appetibile per ridurre le chiamate al server ed applicabile nel css quanto nell’html.
Utilizzando la precedente stringa nell’url di un’immagine si può procede in questo modo:
<img src="data:image/gif;base64,AAAA" alt="Testo alternativo" />
La stringa in questione risulta vuota, esistono molti tool online che consentono di convertire un’immagine in una stringa in base64, un esempio reale di immagine convertita in base 64 è visibile a questo link.
Guardando il codice la stringa risulta molto lunga essendo un jpg complesso, di norma è consigliabile utilizzare questa tecnica in alternativa ad un’immagine nel caso di un tracking con javascript, per esempio per gestire le API di Google o per monitorare lo stato di una newsletter inviata agli utenti.
Per maggiori informazioni in merito consiglio questo articolo dedicato all’utilizzo del Data Uri Scheme nei fogli di stile.
Un mese di Howtoweb.it, considerazioni, risultati e ringraziamenti
Howtoweb.it giunge al suo primo mese di vita, un periodo breve senza dubbio ma che lascia spazio a qualche considerazione.
Come prima cosa un grande grazie alle 1000 e oltre persone che hanno visitato questo blog e hanno dedicato qualche secondo della loro vita per leggere ciò che scrivo.
Un altro grande grazie a tutti coloro che hanno commentato e che contribuiscono a darmi un feedback su quello che scrivo, sono contributi molto utili e sicuramente mi aiutano a scegliere con maggiore cura gli argomenti e a cercare di migliorare la qualità del blog.
Ancora un enorme grazie a tutti le persone che leggono questo blog tramite rss (abbonati o tramite altri siti) e a tutti i bloggers che conosco che mi forniscono un insostituibile supporto e spunti per migliorare.
Ringraziamenti a parte, il tempo passato è un breve periodo, spero di continuare a scrivere ancora a lungo su queste pagine, i risultati sono a mio parere ottimi, non mi ero prefissato un numero di visite o una determinata posizione nella serp per la fine di questo mese, i feedback sono ottimi e le visite giornaliere più di quante potessi sperare, questo è per me fonte di grande soddisfazione e stimolo per cercare di migliorare la qualità dei contenuti.
Per i prossimi tempi ho in cantiere qualche piccola modifica al blog per migliorare la condivisione degli articoli e riordinare la navigazione degli articoli più datati. Per ciò che riguarda i contenuti prossimamente si parlerà ancora molto di html, css, wordpress, google, jquery, SEO e tante altre novità del mondo web. Ci saranno nuovi articoli più orientati alla grafica per il web e php che credo siano di interesse comune. Gli argomenti di cui parlare sicuramente non mancano e la voglia di scrivere ancor meno, per consigli, critiche e commenti puoi scrivermi altrimenti torna domani su Howtoweb.it per le ultime novità sul mondo del web.
Tag: info
10 modi per ottimizzare i fogli di stile
Creare un buon foglio di stile richiede pazienza e precisione, anche una volta che tutto funziona, il test su più browser ha dato esito positivo e abbiamo validato il codice è possibile ottimizzare il css per ridurne il peso e in numero di richieste al server.
1) Sintassi contratta nelle regole
Per ridurre il peso di un foglio di stile la prima cosa a cui bisogna pensare è di ridurne il contenuto. Per fare questo possiamo come prima cosa valutare di utilizzare la sintassi contratta dove è possibile e dove è opportuno.
Ad esempio il seguente codice
margin-top:1px; margin-right:3px; margin-bottom:20px; margin-left:10px;
E’ facilmente sintetizzabile con una sintassi contratta come questa
margin:1px 3px 20px 10px;
La sintassi contratta è applicabile a molte proprietà, è bene conoscerle a fondo per capire quando poterle usare. Ecco un altro esempio per il background.
background-color:#ffffff; background-image:url(images/immagine.jpg); background-repeat:no-repeat; background-position:10px 20px;
che in forma contratta verrebbe così
background:#ffffff url(images/immagine.jpg) no-repeat 10px 20px
2) Evitare le unità di misura per valori negativi
Usare le unità di misura è utile per non confondere i vecchi browser e per non incorrere in problematiche di interpretazione errate se usiamo differenti unità di misura in un singolo css, esiste però un caso dove è possibile omettere l’unità di misura senza problemi, quando il valore è 0.
margin:0;
Essendo 0 ha poca importanza che l’unità di misua siano pixel, percentuali o punti perchè la proprietà sarà sempre nulla.
3) Regole scritte in linea
Un ulteriore modo per ridurre il peso dei css è quello di scrivere le regole inlinea piuttosto che a capo.
body{margin:0;padding:0;text-align:center;}
Questo sistema riduce notevolmente il peso del foglio di stile ma rende più difficoltosa la lettura per l’essere umano, è quindi consigliabile scrivere una regola in linea quando questa non ha più di tre proprietà al suo interno, per regole con più di tre proprietà si scriveranno a cascata.
div{
margin:0;
padding:0;
text-align:left;
color:#000;}
4) Valutare l’eredità di una regola
Abbiamo visto in un precedente articolo quanto sia importante valutare la priorità di una regola css, ma non bisogna esagerare con l’eccessiva specificità. Per esempio questa regola:
div#contenitore div#content div#main p#numerotelefono{}
E’ eccessivamente specifica essendo l’ultimo elemento comunque dotato di un id dovremmo trovare il modo di utilizzare la regola specificando meno elementi:
#numerotelefono{}
5) Evitare l’import
A differenza di <link> che collega un foglio di stile ad una pagina html, l’elemento @import presenta qualche lacuna a livello di performance di caricamento (in particolare per internet explorer) e andrebbe limitato il più possibile. Per approfondire l’argomento leggi questo articolo.
6) Ordinare le proprietà css in ordine alfabetico
Se questo consiglio vi suona come follia, l’unica cosa che può farvi cambiare idea è provare. Questa regola per esempio:
div.{
margin: 0 0 3em 0;
padding: 0.7em 0.2em;
font-size: 1em;
border-bottom: 1px solid #888;
border-top: 1px solid #888;
}
Può diventare molto più leggibile ordinando le regole per iniziale:
div.{
border-bottom: 1px solid #888;
border-top: 1px solid #888;
font-size: 1em;
margin: 0 0 3em 0;
padding: 0.7em 0.2em;
}
Con un sistema del genere in quale punto della regola guardereste per trovare le proprietà del background? Ovviamente in cima. E per trovare z-index? In fondo. E text-align? Poco più su.
Sembra assurdo ma un sistema del genere può far risparmiare molto tempo nel rintracciare le proprietà ed aiuta ad eveitare proprietà duplicate.
7) Non esagerare con i commenti
Aggiungere commenti nel css è sempre utile, soprattutto se lavoriamo su progetti con lunghi tempi di sviluppo o se non siamo i soli a dover modificare i files, aggiungere qualche commento è una forma di cortesia sempre gradita. E’ però utile cercare di limitare i commenti a dove siano realmente necessari, evitando sintassi simili.
/*inizio header*/
#header{}
/*fine header*/
/*inizio contenuto*/
#contenuto{}
/*fine contenuto*/
In questo caso gli id già rendono chiare le funzioni dell’elemento e sarebbe possibile omettere i commenti ma nel caso si desideri mantenere qualche suggerimento nel codice sarebbe opportuno evitare di segnalare la fine e l’inizio della regola.
/*inizio header*/
#header{}
/*inizio contenuto*/
#contenuto{}
8) Dividere le regole su più fogli di stile
Sembra una banalità ma non lo è, avere più files da caricare è sicuramente un carico maggiore in termini di richieste al server ma permette una navigazione più veloce all’utente il quale scaricherà e salverà nella cache i css delle pagine man mano che prosegue nella navigazione. Questo è positivo perchè permette di non scaricare fogli di stile per pagine che non vedremo (quindi non si utilizza banda per dati non necessari) e una volta completata la visita del sito i dati rimarranno nella cache rendendo le future visite più veloci.
9) Utilizzare le regole per internet explorer separatamente
Utilizzare i commenti condizionali è un buon modo per evitare che i comuni browser facciano una chiamata al server in più, la differenza a livello di peso è inesistente se il css è interno alla pagina ma con un css esterno è possibile risparmiare una richiesta al server e il peso del css dedicato ad internet explorer.
<!--[if IE 6]> <link rel="stylesheet" href="css/ie.css" /> <![endif]-->
10) Utilizzare meglio le classi
Le classi risultano oltremodo utile per ridurre il peso del css, questo perchè una classe definisce una regola applicabile su più elementi a differenza degli id è quindi utile se nella pagina html esistono molti elementi con proprietà comuni. Ovviamente occorre fare attenzione a non esagerare aumentando il numero di classi sugli elementi e di conseguenza il peso della pagina html, un modo utile per valutare se le regole sono ben bilanciate è vedere quante regole sono definite come id e quante come classi, nel caso le prime superino le seconde è utile valutare quante volte vengono ripetuta ogni proprietà nel css.
Tag: css
Visualizzare le statistiche di Google Analytics con Javascript Parte 3
Abbiamo visto nei precedenti articoli come iniziare ad usare le API di Google Analytics con javascript, nel primo articolo abbiamo visto come realizzare l’autenticazione da parte dell’utente e nel secondo come ricavare i dati relativi agli account.
Proseguendo sui nostri passi non ci resta che vedere come richiamare le singole statistiche relative ad ogni account, per fare questo occorre far autenticare l’utente ed ottenere l’id del profilo di cui si desidera mostrare le statistiche. A questo punto non ci resta che richiedere i dati a Google Analytics per mostrarli all’utente nella nostra pagina.
La procedura in realtà è molto simile ai passaggi effettuati per richiedere i dati dell’account utente, si richiedono i feed e si creano delle variabili che daranno come output le statistiche richieste. La vera differenza sta nel modo di richiedere i dati, in quanto è possibile specificare con precisione quali dati ottenere come nel caso di una query.
function getPageviewsByCityFeed(ProfileId) {
var myFeedUri = scope + '/data' +
'?start-date=2009-01-01' +
'&end-date=2009-05-08' +
'&dimensions=ga:country,ga:city' +
'&metrics=ga:visits' +
'&sort=-ga:visits' +
'&max-results=100' +
'&ids=ga:' + ProfileId;
myService.getDataFeed(myFeedUri, handleMyFeed, handleError);
}
La seguente funzione infatti richiama le API di Google Analytics tramite url passando i valori necessari e specificare quali dati vogliamo ottenere. Come si evince dalla funzione richiederemo lo stato e la città degli utenti che hanno visitato il sito tra il 1° gennaio 2009 e l’8 maggio 2009, ordinandoli per numero di visite e limitando i risultati a 100.
Notiamo anche alla fine della funzione, la variabile contente l’id del profilo, questo valore è sempre necessario per richiedere i dati di un determinato account. Oltre a questo è indispensabile indicare una data di partenza e una di fine per le statistiche da mostrare. Per maggiori informazioni sui parametri e possibili valori è consigliabile visualizzare il documento Dimensions & Metric reference fornito da Google.
I passaggi successivi sono destinati a gestire e impaginare i dati ricavati tramite il ciclo vengono mostrati i dati ricavati e attraverso la funzione tableize vengono inseriti nelle tabelle.
Per vedere il risultato prova l’esempio completo, una volta effettuato il login a google analytics verranno mostrti gli account disponibili e sarà possibile vedere gli stati e le città degli utenti che hanno visitato il sito.
L’esempio è a puro scopo dimostrativo, è utile pensare di utilizzare questo sistema per ottenere le statistiche di Google Analytics sul proprio spazio web per visionare le statistiche in tempo reale.
Prima di lanciarsi e ricreare totalmente Google Analytics sul proprio spazio web consiglio queste librerie per l’utilizzo delle API di Google Analytics che possono senza dubbio velocizzare la realizzazione di eventuali script da integrare nel proprio sito.
Tag: Google, seo, statistiche
Visualizzare le statistiche di Google Analytics con Javascript Parte 2
Abbiamo visto nel precedente articolo come è possibile far autenticare l’utente al proprio account di Google Analytics grazie alle API e a javascript in una pagina statica collocata in un qualsiasi spazio web. Oggi vedremo come richiedere i dati relativi all’account con cui si è effettuato l’accesso.
Tag: Google, seo, statistiche
