Search:

Twitter:

Ultimi commenti:

Tags:

Archivi:

Febbraio 2010 ( 6 )
Gennaio 2010 ( 12 )
Dicembre 2009 ( 10 )
Novembre 2009 ( 8 )
Ottobre 2009 ( 15 )
Settembre 2009 ( 12 )
Agosto 2009 ( 7 )
Luglio 2009 ( 23 )
Giugno 2009 ( 20 )
Maggio 2009 ( 17 )
Aprile 2009 ( 23 )
Marzo 2009 ( 20 )
Febbraio 2009 ( 15 )
Gennaio 2009 ( 15 )
Dicembre 2008 ( 24 )
Novembre 2008 ( 25 )
Ottobre 2008 ( 23 )
Settembre 2008 ( 13 )
Agosto 2008 ( 18 )
Luglio 2008 ( 16 )
Giugno 2008 ( 18 )
Maggio 2008 ( 18 )
Aprile 2008 ( 20 )
Marzo 2008 ( 10 )
Febbraio 2008 ( 20 )
Gennaio 2008 ( 20 )
Dicembre 2007 ( 27 )
Novembre 2007 ( 19 )
Ottobre 2007 ( 19 )
Settembre 2007 ( 22 )
Agosto 2007 ( 7 )
Luglio 2007 ( 35 )
Giugno 2007 ( 30 )
Maggio 2007 ( 33 )
Aprile 2007 ( 37 )
Marzo 2007 ( 34 )
Febbraio 2007 ( 32 )
Gennaio 2007 ( 22 )
Dicembre 2006 ( 9 )
Novembre 2006 ( 17 )
Ottobre 2006 ( 14 )
Settembre 2006 ( 13 )
Agosto 2006 ( 22 )
Luglio 2006 ( 3 )
Giugno 2006 ( 10 )
Maggio 2006 ( 11 )
Aprile 2006 ( 24 )
Marzo 2006 ( 15 )
Febbraio 2006 ( 41 )
Gennaio 2006 ( 19 )

Standard e trasparenza

Ieri giochicchiavo con una piccola feature da inserire in Blogoo che avevo stimato in mezz’ora di research and development (ma poi è andata a finire in leggera contro-tendenza). Volevo fare in modo che nel momento in cui si invia un commento comparisse una finestra trasparente con una ruota che gira stile boot loader di OS X. La parte più difficile dell’impresa è stata trovare la gif animata: l’avevo vista in giro usata come avatar in diversi forum, ma non ne ho mai annotato la URL e ritrovarla è stata una missione quasi impossibile. Come vuole Murphy oggi ho notato una GIF molto simile e a tratti meglio indicata navigando per caso.

Trovata la GIF è stato abbastanza semplice generare il codice JavaScript che implementasse la funzionalità voluta: un bel DIV in primo piano ma nascosto che diventa visibile con il click del pulsante, roba che si trova in giro al primo secondo colpo ravanando su stackoverflow.com.

Le ultime difficoltà le ho trovate implementando il livello di trasparenza in maniera tale che funzionasse con i tre motori di rendering principali e le varie sub-version. Il browser più problematico è stato – manco a dirlo – IE8, che nella modalità di rendering di default non ne voleva proprio sapere di gestire la direttiva. Bingolando tra i forum si trova solo gente incazzata e poca razionalità: se ci penso mi sono incazzato anche io pensando quanto fosse stupido scegliere di non supportare l’opacità così come era disponibile in IE7. La realtà invece è molto più pragmatica: la vecchia sintassi non è “conforme” e lo standard dice chiaramente cosa fare in presenza di tag non conformi e cioè vanno ignorati. I dettagli sono racchiusi in questo post. La cosa che mi ha fatto più riflettere è che la totalità delle lamentele di cui ho letto era critica nei confronti di tale scelta giustificando l’astio con qualche pregiudizio. E mi son reso conto che quanto avevo letto in passato e cioè che molti hanno chiesto a gran voce il supporto agli standard non sapendo neanche quanto di ciò che usassero lo fosse davvero; chi scriveva faceva l’esempio dei bordi arrotondati che “tutti gli altri browser” supportano tranne IE. Esempi che poi sono alla base di test suites come gli (in)famosi Acid Test v. 3.

Morale della favola: non sempre quello che si desidera è quello che si dice di voler desiderare. Si è desiderato a gran voce il pieno supporto degli standard quando in realtà si voleva “un rendering che fosse compatibile quanto più possibile tra i vari browser”.

L’ultimo ostacolo era la mancata animazione della GIF in IE8 su Win7/RC; ho notato subito che era un problema legato al caching delle GIF ed è bastato aggiungere un parametro casuale fasullo alla fine della URL per risolverlo. Questo ad ulteriore supporto del fatto che non ritengo che questo sia il miglior mondo possibile dal punto di vista dell’HTML e dintorni bachi inclusi. Come ci si muove da questo al prossimo (HTML 5? Flash/Gears/SL vNext?) è un problema per niente banale.

-quack

P.S. funziona?

Commenti (89): [ Pagina 1 di 3  - più vecchi ]
60. Gabriele
mercoledì 3 giugno 2009 alle 8:15 PM - firefox 2009042523 Ubuntu 9.04
   

Prior to Mozilla 1.7 (Firefox 0.9) the -moz-opacity property was implemented in a non-standard (inherited) way. With Firefox 0.9 the behavior changed and the property was renamed to opacity. Since then -moz-opacity was supported just as an alias for opacity.

In realtà, l'idea di decorare le proprietà non standard con un prefisso legato al vendor (-moz-qualcosa, -ms-qualcosa) non è malissimo.

Ma secondo me va fatto solo quando non esiste all'orizzonte nulla di simile.

Allora è giusto che esistano -moz-bottoni_a_pallini e -ms-bottoni_a_pallini e che siano due cose molto diverse. Con l'idea che tali proprietà siano deprecate e poi eliminate quando esisterà una proprietà standard (o standard in corso di approvazione) "bottoni_a_pallini". Come ha fatto Mozilla con l'opacity.

Questo tra l'altro serve anche a non "tirare per la giacchetta" chi deve promulgare lo standard. Che non deve vedersi costretto a rompere molto codice perché ha definito una proprietà che si chiama come una proprietaria di un vendor.

Nell'opacity del CSS3 non direi che serva una proprietà -ms, visto che CSS3 è in discussione da diverso tempo (e siamo al livello di Last Call Working Draft, che non precede di molto quello di Recommendation).

La cosa migliore sarebbe stata supportare la sintassi CSS3 e deprecare (pur continuando a supportarla) quella di IE7. La peggiore definirne una del tutto nuova e non supportare nè quella CSS3 nè quella di IE7. Ci deve essere senz'altro un motivo valido, oltre al tentativo di battere il record di accidenti ricevuti. Se sai qualcosa, ovviamente facci sapere.

Un ossimoro. Se è futuro, non è standard

Hmm sarà standard nel prossimo futuro, come HTML5. Non vedo dove stia il problema.

Il rispetto della direttiva di caching in questo caso non c'entra niente. A me sembra un baco bell'e buono

È vero. Fare un buon algoritmo di caching è difficile, ogni tanto anche FF non è perfetto. Comunque spero che almeno che in questo IE8 sia migliore di IE7.

   
61. Paperino
mercoledì 3 giugno 2009 alle 8:34 PM - firefox 2009042316 Windows Seven
   

@LOL:

mitico il tuo link!!

Per ora sto usando quella di Apple che devo ammettere è molto carina. Fonte: http://idisk.mac.com/js/web/images/Spinner.gif
Stavo pensando di sostituirla con quella del più autorevole WSJ ( http://s.wsj.net/img/article_loading2.gif ) ma il tuo sito ha aggiunto una punta di indecisione.

Probabilmente finirò per usare quella più grande e visibile. Certo se potessi centrarla anche verticalmente... Any help? (hint: Gabrieleeeee )

P.S. ho scelto quella del tuo link. Se solo si potessero stabilire più parametri.

   
62. Gabriele
mercoledì 3 giugno 2009 alle 9:07 PM - firefox 2009042523 Ubuntu 9.04
   

Probabilmente finirò per usare quella più grande e visibile. Certo se potessi centrarla anche verticalmente... Any help? (hint: Gabrieleeeee )

Mi pare lo sia già centrata sia orizzontalmente che verticalmente rispetto alla pagina (almeno su FF3) e vertical-align è supportata bene persino da IE6! Te la sei cavata bene

   
63. Paperino
mercoledì 3 giugno 2009 alle 9:12 PM - firefox 2009042316 Windows Seven
   

Ho dovuto impostare:

line-height:600px;
font-size:600px;

che non è il massimo della vita.

   
64. Giuseppe
mercoledì 3 giugno 2009 alle 9:34 PM - IE 8.0 Windows Seven
   

@ Paperino

quando si dice "forza bruta"

   
65. Paperino
mercoledì 3 giugno 2009 alle 9:35 PM - firefox 2009042316 Windows Seven
   

Sull'allineamento verticale delle immagini sono stati scritti fiumi e fiumi di parole...

   
66. vik
giovedì 4 giugno 2009 alle 1:17 AM - firefox 2009040820 OS X 10
   

@Paperino

Ah... se fosse per me, IE6 lo farei esplodere. Il punto è: quanti visitatori raggiungono il tuo sito con questo browser? Immagino pochi, visto i contenuti del blog. Ma sempre meglio dare un occhio prima alle statistiche (io ho sempre un buon 20% sul mio blog, ad esempio).

   
67. zakk
giovedì 4 giugno 2009 alle 2:10 AM - safari 525.28. OS X 10.5.7
   

Scusate per il commento inutile ma voglio vedere se funziona

   
68. zakk
giovedì 4 giugno 2009 alle 2:11 AM - safari 525.28. OS X 10.5.7
   

OK funziona anche su Safari! Forse un po' più lento di un commento regolare, ma cmq sui 3-4 secondi...

   
69. Paperino
giovedì 4 giugno 2009 alle 2:34 AM - firefox 2009042316 Windows Seven
   

@vik:

per il mese ho controllato e siamo a circa 2.54% (ovvero l'8.76% degli utenti di IE che sono in tutto il 30%). Che facciano l'upgrade.

   
70. Paperino
giovedì 4 giugno 2009 alle 2:46 AM - firefox 2009042316 Windows Seven
   

@zakk:

in realtà non ci dovrebbero essere rallentamenti visto che il tutto avviente client side. Credo che sia una questione legata più alle performance generali del sito che ogni tanto si appisola. Però generalmente parlando aggiungere un commento è un'operazione complessa:

  • validazione e parsing
  • ulteriore parsing per l'indicizzazione
  • scrittura nel database
  • svuotamento della cache
  • rigenerazione della pagina

Mi interessava implementare la cosa perché aldilà di dare un feedback immediato "sto lavorando", impedisce l'effetto di cliccare sul tasto pubblica due volte in successione: può sembrare impossibile ma siccome il posting è lento le chance che succeda non sono nulle. Poi mi è capitato che il focus si spostasse per sbaglio anche sul Pulsante per cui ogni spazio inserito generava un nuovo commento differente dal primo per una sola parola... insomma, prevenire vs. curare.

P.S. ho scoperto che l'affarino che gira ha un nome: Throbber

   
71. 0verture
giovedì 4 giugno 2009 alle 3:18 AM - firefox 2009042316 Windows XP
   

E non esiste un modo per confrontare due commenti in modo da capire se il secondo è uguale al primo tranne che per pochi caratteri ?

Ad esempio se ogni commento generasse una chiave md5, lo stesso commento + 1 spazio avrebbe una chiave simile che permetterebbe di capire che sono quasi la stessa cosa o no ?

   
72. Paperino
giovedì 4 giugno 2009 alle 5:53 AM - firefox 2009042316 Windows Vista
   

Le funzioni di HASHING hanno lo scopo opposto. Generare una chiave completamente diversa anche se cambia un solo bit. Facendo i dovuti trade-off posso ritenermi soddisfatto della soluzione adottata.

   
73. lol
giovedì 4 giugno 2009 alle 1:57 PM - Opera 9.64 Windows XP
   

Paperino sono contento che ti piaccia il sito

   
74. lol
giovedì 4 giugno 2009 alle 1:59 PM - Opera 9.64 Windows XP
   

vabè lascia stare l'italiano, ovviamente ci andava un *piace al posto di *piaccia.

   
75. il nonno
giovedì 4 giugno 2009 alle 2:58 PM - chrome 2.0.172.28 Windows Vista
   

No no, e' giusto "piaccia"

   
76. Paperino
giovedì 4 giugno 2009 alle 3:53 PM - firefox 2009042316 Windows Vista
   

Sono giusti entrambi

   
77. Shance
giovedì 4 giugno 2009 alle 4:10 PM - IE 7.0 Windows XP
   
   
78. Shance
giovedì 4 giugno 2009 alle 4:11 PM - IE 7.0 Windows XP
   

Ie7, dopo aver postato non ho visto nulla... solo ingrigirsi qualche cosa.

   
79. Shance
giovedì 4 giugno 2009 alle 4:12 PM - IE 7.0 Windows XP
   

Adesso va, non lo caricava subito. Hai messo un preloader o sprite?

   
80. Paperino
giovedì 4 giugno 2009 alle 4:38 PM - chrome 2.0.172.28 Windows Vista
   

Yes, mi si sta aprendo un mondo. Sto ancora cercando un sistema più affidabile per mostrarlo....

   
81. Pinco
giovedì 4 giugno 2009 alle 6:58 PM - IE 8.0 Windows Vista
   

A proposito di browser... Sapete mica se c'è un'installer di Google Chrome SENZA il maledetto servizio googleupdater perennemente avviato? ODIO sti servizi messi di straforo... Voglio controllare io se c'è una nuova versione!

Lo so che potrei toglierlo dall'avvio in mille modi (segarlo con regedit, togliendo la spunta da msconfig etc) ma spero sempre un'installer bonificato!

   
82. Dovella Win 98
giovedì 4 giugno 2009 alle 7:49 PM - firefox 20081217 Windows 98
   

Pinco

hai ragione, tuttosommato è l'unico Update che ho attivo perché apparentemente non infastidisce l'avvio.

Quindi ogni tanto facciamolo sto strappo alle regole

   
83. Paperino
giovedì 4 giugno 2009 alle 7:54 PM - IE 8.0 Windows Seven
   

 Sto ancora cercando un sistema più affidabile per mostrarlo....

Questo sistema sembra funzionare alla grandissima anche su IE8.

   
84. Edward
giovedì 4 giugno 2009 alle 7:54 PM - firefox 2009042316 Windows Seven
   

@ Pinco:

Forse Iron? E' Chrome "ripulito" e, a memoria, non usa googleupdater per gli aggiornamenti.

 

Edward

   
85. Pinco
giovedì 4 giugno 2009 alle 11:09 PM - IE 8.0 Windows Vista
   

Grazie Edward!

 

Come si può vedere qui:

 

www.srware.net/.../...ware_iron_chrome_vs_iron.php

 

 
Google Updater

  
Chrome installs a updater, which loads at every Windows in background.

  
does not exist in Iron

 

Niente updater e niente altre cosette ficcanaso...

 

Domani lo provo!

   
86. Snake
giovedì 4 giugno 2009 alle 11:35 PM - firefox 2009042316 Windows Vista
   

@Edward: non conoscevo la versione "epurata", davvero ottimo, grazie per la segnalazione!

   
87. Edward
giovedì 4 giugno 2009 alle 11:39 PM - firefox 2009042316 Windows Seven
   

@ Pinco, Snake:

Ringraziate Enrico FOLBlog: l'ho scoperto sul suo blog

 

Edward

   
88. Shance
venerdì 5 giugno 2009 alle 5:16 PM - firefox 2009042316 Windows XP
   

Bè, il mitico Enrico quando si tratta di programmi installati non richiesti è formidabile! Credo sia la sua ragione di vita!

Continua così!

   
89. Snake
venerdì 5 giugno 2009 alle 10:13 PM - firefox 2009042316 Windows Vista
   

Uh, allora grazie ad Enrico (ed un buon motivo in più per averlo nel feedreader )

   
[ Pagina 1 di 3  - più vecchi ]
Lascia un commento:
Commento: (clicca su questo link per gli smiley supportati; regole di ingaggio per i commenti)
(opzionale, per il Gravatar)