{"id":5603,"date":"2009-03-30T09:20:54","date_gmt":"2009-03-30T07:20:54","guid":{"rendered":"https:\/\/www.dreamsworld.it\/emanuele\/?p=5603"},"modified":"2016-05-17T12:34:51","modified_gmt":"2016-05-17T10:34:51","slug":"costruire-un-tema-gli-effetti-speciali","status":"publish","type":"post","link":"https:\/\/www.dreamsworld.it\/emanuele\/2009-03-30\/costruire-un-tema-gli-effetti-speciali\/","title":{"rendered":"Costruire un tema: gli effetti speciali."},"content":{"rendered":"<p>Le pagine web, negli ultimi anni,<strong> sono cambiate<\/strong> considerevolmente. Se negli anni &#8217;90 la <em>magia<\/em> consisteva nel realizzare <strong>pagine divise in frame<\/strong> e tramite questi aggiornare solo alcune porzioni di pagina, adesso pensare a cose simili metterebbe <strong>i brividi<\/strong> a chiunque.<\/p>\n<p>Le persone pi\u00f9 attente avranno sentito sicuramente parlare di <em>parole<\/em> come <a title=\"Wikipedia - Document Object Model\" href=\"https:\/\/it.wikipedia.org\/wiki\/Document_Object_Model\" target=\"_blank\">DOM<\/a>, <a title=\"Wikipedia - AJAX\" href=\"https:\/\/it.wikipedia.org\/wiki\/AJAX\" target=\"_blank\">AJAX<\/a>, <a title=\"Wikipedia - Javascript\" href=\"https:\/\/it.wikipedia.org\/wiki\/JavaScript\" target=\"_blank\">JavaScript<\/a>, <a title=\"Wikipedia - XML\" href=\"https:\/\/it.wikipedia.org\/wiki\/XML\" target=\"_blank\">XML<\/a> e cos\u00ec via.<\/p>\n<p>Nuove <strong>forme e linguaggi<\/strong> usati per presentare una pagina all&#8217;utente finale. Le informazioni sono sempre pi\u00f9 spesso <strong>svincolate dal documento finale<\/strong> vero e proprio (il <em>file.html\/php\/asp<\/em> che verr\u00e0 generato) e vengono servite <strong>in base a ci\u00f2 che richiede l&#8217;utente<\/strong> in maniera sempre pi\u00f9 &#8220;trasparente&#8221;.<\/p>\n<p>A farla da padrona in tutto questo \u00e8 l&#8217;<em>AJAX<\/em>, che riesce a recuperare <strong>in background<\/strong> informazioni dal server senza necessariamente dover aggiornare l&#8217;intera pagina (un esempio eccellente \u00e8 il frontend web di <em>GMail<\/em>, il servizio di posta elettronica di <em>Google<\/em>).<\/p>\n<p>Su un blog, le potenzialit\u00e0 di questa tecnica sono <strong>infinite<\/strong>. Dall&#8217;inserimento dinamico dei commenti, alla visita dei post del blog in maniera pi\u00f9 rapida a tante altre <em>diavolerie<\/em> che ci si pu\u00f2 inventare.<\/p>\n<p>Quando iniziai lo <strong>sviluppo del template<\/strong>, in realt\u00e0, avevo pensato di rendere <strong>tutto<\/strong> il pi\u00f9 &#8220;interattivo&#8221; possibile. Pian piano per\u00f2, sia per mancanza di tempo, sia per mancanza di <em>capacit\u00e0<\/em> ho dovuto rivedere la scelta. Non ho mai scritto nulla in AJAX e usarlo comporta delle difficolt\u00e0 da superare e problemi con cui scontrarsi che non sapevo gestire. E&#8217; possibile fare <em>caching<\/em> di pagine in <em>AJAX<\/em>? E la gestione delle statistiche come avviene? Molti software di statistiche, infatti, non riescono a monitorare le richieste di pagine in <em>AJAX<\/em> perch\u00e9 risultano trasparenti. Cos\u00ec, per non rinviare ad oltranza la stesura del template, ho ridimensionato la scelta <strong>senza<\/strong> comunque eliminare del tutto ci\u00f2 che avevo in mente. Ero pi\u00f9 che <strong>consapevole<\/strong> che la famigerata <em>user-experience<\/em> di cui parlo sempre passava anche da qui e non dai tecnicismi (o sofismi) quali la <a title=\"Costruire un tema: il layout.\" href=\"\/\/www.dreamsworld.it\/emanuele\/2009-03-16\/costruire-un-tema-il-layout\/\" target=\"_blank\">disposizione del testo<\/a> o la <a title=\"Costruire un tema: lunghezza e dimensione testo.\" href=\"\/\/www.dreamsworld.it\/emanuele\/2009-03-26\/costruire-un-tema-lunghezza-e-dimensione-testo\/\" target=\"_blank\">grandezza dei caratteri<\/a>.<\/p>\n<p>Vediamo dunque come si pu\u00f2 inserire qualche &#8220;effetto speciale&#8221; in maniera <strong>semplice e rapida<\/strong>.<\/p>\n<p>Innanzitutto ho iniziato a <strong>cercare<\/strong> il miglior <a title=\"Wikipedia - Framework\" href=\"https:\/\/it.wikipedia.org\/wiki\/Framework\" target=\"_blank\">framework<\/a> (la &#8220;base di appoggio&#8221;) per le mie necessit\u00e0. Volevo inserire qualche elemento dinamico e sapevo che erano gi\u00e0 state implementate tantissime funzioni <strong>pronte all&#8217;uso<\/strong>.<\/p>\n<p>Non sapendo valutare il <em>framework<\/em> in s\u00e9 (<em>non ne avevo mai utilizzato nessuno fin ora e ne esistono <a title=\"Panoramica dei framework Javascript\" href=\"http:\/\/www.html.it\/articoli\/panoramica-dei-framework-javascript-1\/\" target=\"_blank\">sia di gratuiti che a pagamento<\/a><\/em>) ho orientato la mia scelta seguendo quella &#8220;del popolo della rete&#8221;, <strong>privilegiando i <em>framework<\/em> secondo due fattori<\/strong>: velocit\u00e0 d&#8217;esecuzione nel browser e diffusione.<\/p>\n<p>La prima caratteristica, nella scelta di un framework rappresenta infatti &#8211; secondo me &#8211; <strong>uno degli aspetti che fanno la differenza<\/strong>. E&#8217; vero che il framework pu\u00f2 risultare pi\u00f9 o meno potente, pi\u00f9 o meno facile da sfruttare, pi\u00f9 o meno leggero da caricare, pi\u00f9 o meno elegante nella stesura del codice ma&#8230; alla fine ci\u00f2 che importa all&#8217;utente finale \u00e8 sicuramente <strong>la rapidit\u00e0<\/strong> con cui il sistema funziona, la velocit\u00e0 con cui riesce a caricare la pagina e ricevere le informazioni che stava cercando.<\/p>\n<p>Quante\u00a0 volte d&#8217;altronde siete <strong>scappati<\/strong> da una pagina che perdeva ore per caricarsi? Io da questo punto di vista ho una pazienza di <strong>pochissimi secondi<\/strong>. Diciamo che non arrivo neanche a 30.<\/p>\n<p>Ecco perch\u00e9 ho cercato <a title=\"MooTools vs JQuery vs Prototype vs YUI vs Dojo Comparison Revised\" href=\"http:\/\/blog.creonfx.com\/javascript\/mootools-vs-jquery-vs-prototype-vs-yui-vs-dojo-comparison-revised\" target=\"_blank\">qualche benchmark<\/a> che potesse darmi una risposta. E&#8217; pur vero che per piccole funzioni la differenza di tempo d&#8217;esecuzione risulta quasi infima ma, come dico sempre, sono le sfumature a dare vita ai colori e l&#8217;attenzione verso le piccole cose rende un&#8217;esperienza piacevole, un&#8217;esperienza <strong>da riprovare<\/strong>.<\/p>\n<p>L&#8217;efficienza del framework \u00e8 <strong>strettamente legata<\/strong> all&#8217;interprete javascript integrato nel browser, cos\u00ec anche in questo caso sar\u00e0 bene dare un&#8217;occhiata alle <strong>statistiche<\/strong> per capire quali browser siano quelli pi\u00f9 diffusi tra i nostri lettori. Se qualche settimana mi ero concentrato sulla <a title=\"Costruire un tema: scelta delle dimensioni.\" href=\"\/\/www.dreamsworld.it\/emanuele\/2009-03-19\/costruire-un-tema-scelta-delle-dimensioni\/\" target=\"_blank\">risoluzione del monitor<\/a>, questa volta il software usato ha una rilevanza fondamentale.<\/p>\n<p>Con un sorprendente 49%, <strong>Firefox risulta il browser maggiormente utilizzato<\/strong> per accedere al mio blog (a seguirlo c&#8217;\u00e8 IE &#8211; 41%, Safari &#8211; 3,5%, Chrome &#8211; 2,43%, Opera &#8211; 2,20%) e questo dato fa tanto piacere considerati in vantaggi in sicurezza e <strong>aderenza agli standard<\/strong> che caratterizzano questo browser opensource.<\/p>\n<p>Potete testare l&#8217;efficienza di 5 framework (<a title=\"MooTools\" href=\"http:\/\/mootools.net\/\" target=\"_blank\">MooTools 1.2<\/a>, <a title=\"jQuery\" href=\"http:\/\/jquery.com\/\" target=\"_blank\">JQuery 1.2.6<\/a>, <a title=\"Prototype\" href=\"http:\/\/prototypejs.org\/\" target=\"_blank\">Prototype 1.6.0.2<\/a>, <a title=\"Yahoo! UI Library: Selector Utility\" href=\"http:\/\/yui.github.io\/yui2\/\" target=\"_blank\">YUI 2.5.2 Selector beta<\/a>, <a title=\"The Dojo Toolkit\" href=\"http:\/\/dojotoolkit.org\/\" target=\"_blank\">Dojo 1.1.1<\/a>) direttamente <strong>sul vostro browser<\/strong> effettuando <a title=\"SlickSpeed\" href=\"http:\/\/mootools.net\/slickspeed\/\" target=\"_blank\">questo test<\/a>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"attachment wp-att-5851 alignleft\" src=\"\/\/www.dreamsworld.it\/emanuele\/wp-content\/uploads\/2009\/03\/2009-03-30_jquery_logo.jpg\" alt=\"Logo jQuery\" width=\"159\" height=\"145\" \/>Personalmente, dopo aver provato <a title=\"MooTools\" href=\"http:\/\/mootools.net\/\" target=\"_blank\">Mootools<\/a>, son tornato sui miei passi (<em>e perso qualche giorno di lavoro<\/em>) <strong>preferendo<\/strong> <a title=\"jQuery\" href=\"http:\/\/jquery.com\/\" target=\"_blank\">jQuery<\/a> (che \u00e8 anche il <em>framework<\/em> scelto da <em>WordPress<\/em> per gli effetti usati <strong>nel pannello di amministrazione<\/strong>) per la sua diffusione e per l&#8217;innumerevole presenza di <strong>guide e script pronti<\/strong>: volendo fare un paragone, <em>JQuery<\/em> mi \u00e8 sembrato <em>il Firefox<\/em> dei framework javascript.<\/p>\n<p>Ecco dunque la seconda chiave di scelta: <strong>la diffusione<\/strong>. Il grande utilizzo di uno strumento comporta la possibilit\u00e0 di confronto con <strong>un maggior numero di utenti<\/strong> che, nel vero spirito di <em>condivisione<\/em> avr\u00e0 sicuramente incontrato o chiesto aiuto per problemi simili ai nostri.<\/p>\n<p>Infine, quando vi cimentate nella costruzione di un template <strong>non dimenticate mai<\/strong> di testare ci\u00f2 che create <strong>su pi\u00f9 browser<\/strong>. Sono stato fermo un paio di giorni nel tentare di risolvere un conflitto tra un plugin di <em>WordPress<\/em> per l&#8217;highlight del codice scritto nei post e il javascript che si occupa dell&#8217;<strong>effetto di zoom delle immagini<\/strong>: funzionava su tutti i browser (provato Firefox, Chrome, Opera, Safari) ma non su IE 6\/7. Se inserivo l&#8217;uno, non andava l&#8217;altro e viceversa.<\/p>\n<p>Questo post in realt\u00e0 ha ben poco di pratico (<em>che per ovvi motivi dipende da ci\u00f2 che si vuol creare<\/em>) ma <strong>racconta la mia esperienza<\/strong> e le scelte effettuate durante i mesi precedenti l&#8217;arrivo di questo nuovo template che han portato alla realizzazione delle barre dell&#8217;header e del footer a scomparsa e dell&#8217;animazione presente nelle voci della sidebar. \ud83d\ude42<\/p>\n<p>Si continua Gioved\u00ec&#8230;<\/p>\n<p><strong>Emanuele<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Le pagine web, negli ultimi anni, sono cambiate considerevolmente. Se negli anni &#8217;90 la magia consisteva nel realizzare pagine divise in frame e tramite questi aggiornare solo alcune porzioni di pagina, adesso pensare a cose simili metterebbe i brividi a &hellip; <a href=\"https:\/\/www.dreamsworld.it\/emanuele\/2009-03-30\/costruire-un-tema-gli-effetti-speciali\/\">Leggi ancora &rarr;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[4],"tags":[524,725,726,84,758,756,724,87,497,753,752,754,529,490,491,757,526,23,528,493,727,755],"class_list":["post-5603","post","type-post","status-publish","format-standard","hentry","category-internet","tag-accessibilita","tag-ajax","tag-benchmark","tag-browser","tag-debug","tag-dojo","tag-dom","tag-firefox","tag-javascript","tag-jquery","tag-mootools","tag-prototype","tag-siti-web","tag-tema","tag-template","tag-testing","tag-user-experience","tag-web","tag-web-design","tag-wordpress","tag-xml","tag-yui"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.dreamsworld.it\/emanuele\/wp-json\/wp\/v2\/posts\/5603","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dreamsworld.it\/emanuele\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dreamsworld.it\/emanuele\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dreamsworld.it\/emanuele\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dreamsworld.it\/emanuele\/wp-json\/wp\/v2\/comments?post=5603"}],"version-history":[{"count":0,"href":"https:\/\/www.dreamsworld.it\/emanuele\/wp-json\/wp\/v2\/posts\/5603\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dreamsworld.it\/emanuele\/wp-json\/wp\/v2\/media?parent=5603"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dreamsworld.it\/emanuele\/wp-json\/wp\/v2\/categories?post=5603"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dreamsworld.it\/emanuele\/wp-json\/wp\/v2\/tags?post=5603"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}