<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
> <channel><title>.::  Maurizio Pelizzone ::. &#187; sviluppo</title> <atom:link href="http://maurizio.mavida.com/categorie/sviluppo/feed/" rel="self" type="application/rss+xml" /><link>http://maurizio.mavida.com</link> <description># yet another WordPress Specialist</description> <lastBuildDate>Sat, 17 Dec 2011 11:14:16 +0000</lastBuildDate> <language>it</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /> <item><title>WordPress e qualità: sistemi di cache manuali</title><link>http://maurizio.mavida.com/2010/12/28/wordpress-e-qualita-sistemi-di-cache-manuali/</link> <comments>http://maurizio.mavida.com/2010/12/28/wordpress-e-qualita-sistemi-di-cache-manuali/#comments</comments> <pubDate>Tue, 28 Dec 2010 14:50:39 +0000</pubDate> <dc:creator>Maurizio Pelizzone</dc:creator> <category><![CDATA[featured]]></category> <category><![CDATA[sviluppo]]></category> <category><![CDATA[tutorial]]></category> <category><![CDATA[wordpress]]></category> <category><![CDATA[cache]]></category> <category><![CDATA[cache_template_part]]></category> <category><![CDATA[nginx]]></category> <category><![CDATA[qualità]]></category> <category><![CDATA[Transients API]]></category> <category><![CDATA[wordpress plugin]]></category> <category><![CDATA[wp_cache_set]]></category> <guid
isPermaLink="false">http://maurizio.mavida.com/?p=2660</guid> <description><![CDATA[Leggi l'orginale su http://maurizio.mavida.comPer parlare di qualità, tra le tante cose, si devono definire requisiti ed obiettivi e poi trovare degli indicatori per poterli misurare. Io sto cercando di intrudurre una serie di linee quida nel mio modo di sviluppare ad una di queste si riferisce alla velocità ed al numero di query con cui [...]]]></description> <content:encoded><![CDATA[<p>Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><p><br
/><p>Per parlare di <strong>qualità</strong>, tra le tante cose, si devono definire <strong>requisiti</strong> ed <strong>obiettivi</strong> e poi trovare degli <strong>indicatori</strong> per poterli <em>misurare</em>.<br
/> Io sto cercando di intrudurre una serie di <strong>linee quida</strong> nel mio modo di sviluppare ad una di queste si riferisce alla velocità ed al numero di <em>query</em> con cui vengono generate le pagine.</p><p><img
src="http://maurizio.mavida.com/wp-content/uploads/2010/12/cache_template_part.jpg" alt="" /></p><p>Gli indicatori che mi danno la misura e mi permettono di capire se sto rispettando i miei requisiti sono di tre tipi:</p><ol><li><strong>Lato browser</strong>: <a
href="http://developer.yahoo.com/yslow/">YSlow</a>, <a
href="http://code.google.com/intl/it-IT/speed/page-speed/">Page Speed</a> ma anche il pannello &#8220;Net &#8221; di <a
href="http://getfirebug.com/">Firebug</a>. Con questi verifico i tempi di caricamento dei singoli componenti della pagina ed eventuali colli di bottiglia nel caricamento di js.</li><li><strong>Lato server</strong>: <strong><a
href="http://mirror.facebook.net/facebook/xhprof/doc.html">XHProf</a></strong> . Si tratta di un profiler gerarchico per verificare i tempi di esecuzione di ogni singola funzione.</li><li><strong>Lato WordPress</strong>: <a
href="http://wordpress.org/extend/plugins/debug-queries/">Debug Query</a> e <a
href="http://wordpress.org/extend/plugins/debug-objects/">Debug Object</a>. Tramite questi plugin ho sotto controllo il numero di query ed un dettaglio dei singoli oggetti interni a <strong><a
href="http://maurizio.mavida.com/categorie/wordpress/">WordPress</a></strong>.</li></ol><p>E&#8217; ovvio che uno dei primi livelli di ottimizzazione sia l&#8217;intruduzione dei sistemi di <strong><a
href="http://it.wikipedia.org/wiki/Cache">cache</a></strong>.<br
/> Un uso appropriato può farci risparmiare diverse <em>query</em> e parecchi ciclo di CPU ma dato che in molti hanno <a
href="http://wordpress.org/extend/plugins/wp-widget-cache/">già</a> <a
href="http://wordpress.org/extend/plugins/w3-total-cache/">parlato</a> dei plugin che possono aiutarci nella gestione &#8220;semiautomatica&#8221; della <strong>cache</strong> vado oltre e vi segnalo solo un <a
href="http://supersoju.com/articles/wordpress-caching-comparision-w3-total-cache-vs-wp-super-cache-vs-wp-cache/">articolo</a> fatto da qualcuno che si è anche preoccupato di andare un po&#8217; più a fondo preparando qualche test.</p><p><span
id="more-2660"></span></p><p>Dalla versione 2.0 nel core di <strong>WordPress</strong> è presente un sistema di <a
href="http://codex.wordpress.org/Function_Reference/WP_Cache">caching non permanente</a> (nel senso che i dati sono residenti in memoria e solo per la durata della singola sessione).</p><p>Qui un breve esempio:</p><div
class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table
cellspacing="0" cellpadding="0"><tbody><tr><td
style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br
/>2<br
/>3<br
/>4<br
/>5<br
/>6<br
/></div></td><td><div
class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$last5 = wp_cache_get( 'elenco_ultimi_5_post' );<br
/> if ( false == $last5 ) {<br
/> $sql_last5 = &quot;select ID from $wpdb-&amp;gt;posts where post_type = 'post' and post_status = 'publish' order by post_date desc limit 5&quot;;<br
/> $last5 = $wpdb-&amp;gt;get_results( $sql_last5 );<br
/> wp_cache_set( 'elenco_ultimi_5_post', $last5 );<br
/> }</div></td></tr></tbody></table></div><p>Io spesso lo uso anche per salvarmi anche pezzi di html</p><div
class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table
cellspacing="0" cellpadding="0"><tbody><tr><td
style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br
/>2<br
/>3<br
/>4<br
/>5<br
/>6<br
/>7<br
/></div></td><td><div
class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$last5 = wp_cache_get( 'elenco_ultimi_5_post' );<br
/> if ( false == $last5 ) {<br
/> $sql_last5 = &quot;select ID, post_title &nbsp;from $wpdb-&amp;gt;posts where post_type = 'post' and post_status = 'publish' order by post_date desc limit 5&quot;;<br
/> $last5_data = $wpdb-&amp;gt;get_results( $sql_last5 );<br
/> if ($last5) :<br
/> foreach ($fivesdrafts as $post) :<br
/> $last5 .= &quot;</div></td></tr></tbody></table></div><li><a
href="&quot; . get_permalink( $post-&gt;ID) . &quot;">&#8221; . $post-&gt;post_title. &#8220;</a></li><p>&#8220;;<br
/> endforeach;<br
/> wp_cache_set( &#8216;elenco_ultimi_5_post&#8217;, $last5 );<br
/> endif;<br
/> }</p><p>Usando un sistema di questo tipo se volessi visualizzare l&#8217;elenco degli ultimi 5 post pubblicati nella mia sidebar eviterei di chiedere al database la stessa informazione per ogni pagina visualizzata ma dopo la prima richiesta verrebbe messo in memoria il risultato e reso subito pronto e disponibile per la volte successive.</p><p>Dal rilascio della 2.8 le cose sono anche migliorate con l&#8217;introduzione delle <a
href="http://codex.wordpress.org/Transients_API"><strong>Transients API</strong></a> che offrono sistema &#8220;<em>standardizzato</em>&#8221; per il salvataggio della <strong>cache</strong> su database.<br
/> Questo ci permette di salvare le informazioni &#8220;<em>cross-sessione</em>&#8221; rendendo riutilizzabile la <strong>cache</strong> anche per utenti diversi.</p><p>Questo è il codice con l&#8217;esempio di prima riadattato con le <strong>Transients API</strong></p><div
class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table
cellspacing="0" cellpadding="0"><tbody><tr><td
style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br
/>2<br
/>3<br
/>4<br
/>5<br
/>6<br
/>7<br
/></div></td><td><div
class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$last5 = get_transient( 'elenco_ultimi_5_post' );<br
/> if ( !$last5 ) {<br
/> $sql_last5 = &quot;select ID, post_title &nbsp;from $wpdb-&amp;gt;posts where post_type = 'post' and post_status = 'publish' order by post_date desc limit 5&quot;;<br
/> $last5_data = $wpdb-&amp;gt;get_results( $sql_last5 );<br
/> if ($last5) :<br
/> foreach ($fivesdrafts as $post) :<br
/> $last5 .= &quot;</div></td></tr></tbody></table></div><li><a
href="&quot; . get_permalink( $post-&gt;ID) . &quot;">&#8221; . $post-&gt;post_title. &#8220;</a></li><p>&#8220;;<br
/> endforeach;<br
/> set_transient( &#8216;elenco_ultimi_5_post&#8217;, $last5,3600 );<br
/> endif;<br
/> }</p><p>Questo piccolo cambiamento rende persistente la mia cache per un ora (3600 secondi) ed accessibile per ogni visitatore.</p><p>Il sistema potrebbe però avere ancora un limite in quanto nel caso venisse modificato o pubblicato un nuovo post questo non verrebbe visualizzato nell&#8217;elenco sino al momento in cui la <strong>cache</strong> non risultasse <em>invalidata</em> e quindi ricreata.<br
/> Tramite un semplice <strong>hook</strong> possiamo pero risolvere il problema&#8230;</p><p>add_action(&#8216;save_post&#8217;, &#8216;delete_last5_cache&#8217;);<br
/> function delete_last5_cache( $post_id  ) {<br
/> global $post;<br
/> if ( $post-&gt;post_status == &#8220;publish&#8221;) {<br
/> // cancello la cache<br
/> delete_transient(&#8216;elenco_ultimi_5_post&#8217;);<br
/> }<br
/> }</p><p>In alcune situazioni però questo non mi bastava ancora in quanto avrei voluto rendere persistente una porzione ancora più grossa (es. tutta la sidebar e/o tutto il footer). Quello che cercavo era qualcosa di simile a <a
href="http://codex.wordpress.org/Function_Reference/get_template_part">get_template_part</a> ma con un salvataggio su <strong>cache</strong>.</p><p>Ho quindi scritto io una funzione che ho chiamato <strong>cache_template_part</strong>.<br
/> Questo il sorgente:</p><p>/*<br
/> * 2010 | maurizio | http:maurizio.mavida.com<br
/> * versione 1.2<br
/> * viene effettuata una cache su disco di una porzione di codice<br
/> *  @param string $file &#8211; nome del template da caricare<br
/> *  @param bool always &#8211; visualizza sempre la cache (anche all&#8217;amministratore)<br
/> *  @param bool rewrite &#8211; ricrea sempre la cache anche se ancora valida<br
/> *  @param int cachetime &#8211; numero di secondi dopo il quale viene invalidata<br
/> *  @param string cachepath &#8211; percorso per il salvataggio della cache<br
/> *<br
/> * es. cache_template_parts(&#8220;sidebar.php&#8221;);<br
/> * es. cache_template_parts(&#8220;sidebar.php&#8221; , array( &#8216;cachetime &#8216; =&gt; 14400 )  );<br
/> */<br
/> function cache_template_part( $file , $args = null  ) {</p><p>$defaults = array(<br
/> &#8216;always&#8217; =&gt; false,<br
/> &#8216;rewrite&#8217; =&gt; false,<br
/> &#8216;cachetime&#8217; =&gt; 3600,<br
/> &#8216;cachepath&#8217; =&gt; &#8216;wp-content/cache/&#8217;,</p><p>);</p><p>$args = wp_parse_args( $args, $defaults );<br
/> extract( $args, EXTR_SKIP );</p><p>$cachefile = $cachepath . str_replace( &#8220;/&#8221;, &#8220;-&#8221;, $file);<br
/> $cachefile_created = ((@file_exists($cachefile))  ) ? @filemtime($cachefile) : 0;</p><p>if ( !$rewrite and ( time() &#8211; $cachetime &lt; $cachefile_created ) and ( $always || !is_user_logged_in())  ) {<br
/> echo  file_get_contents( $cachefile );<br
/> } else {<br
/> //ob_start(ob_gzhandler);<br
/> ob_start();</p><p>include($file);</p><p>if ( $always || !is_user_logged_in() ) {<br
/> // in caso di utente loggato manda subito l&#8217;output<br
/> $b = ob_get_clean();<br
/> //$b = trim(preg_replace(&#8216;/\s+/&#8217;, &#8216; &#8216;, $b));<br
/> $b = preg_replace(&#8216;/[ ]+/&#8217;, &#8216; &#8216;, $b);<br
/> $b = str_replace( array(&#8220;\r\n&#8221;, &#8220;\r&#8221;, &#8220;\n&#8221;, &#8220;\t&#8221; ), &#8221;, $b);</p><p>if ( strlen($b) &gt; 1 ) {<br
/> // controllo che il buffer sia valorizzato<br
/> $b = &#8220;&#8221; . $b;<br
/> file_put_contents( $cachefile , $b);<br
/> }</p><p>echo $b;</p><p>}<br
/> ob_end_flush(); //<br
/> }<br
/> }</p><p>L&#8217;unico argomento obbligatorio è il nome della file da caricare con una serie di argomenti opzionali (che devono essere passati come array).</p><p>Al momento, a differenza delle <strong>Transients API</strong>, ho deciso di salvare la cache su disco sequendo l&#8217;appoccio suggerito anche da altri plugin che in caso di problemi permette un debug più semplice e veloce (una semplice eliminazione dei file forze la rigenerazione della cache )</p><p>Se qualcuno volesse usarla, <strong>debuggarla</strong> e/o suggerirmi come migliorarla la può scaricare da qui sotto.</p> <a
href="http://maurizio.mavida.com/download/cache_template_part.txt"><img
src="http://maurizio.mavida.com/wp-content/plugins/download-monitor/img/download.gif" alt="cache_template_part" /></a><p>Questo vuole essere un&#8217;esempio di quello che intendo per qualità che può essere riassunto in un uso consapevole delle funzionalità core di <strong>WordPress</strong> e la realizzazione di &#8220;utility&#8221; che possano aiutare al raggiungimento dei requisiti.</p><p><strong>Ultima nota finale</strong>:<br
/> Il fatto di usare sistemi di cache manuale non vuol dire che si debbano usare solo quelli.<br
/> Un bella spinta la può dare l&#8217;utilizzo dell&#8217;<strong><a
href="http://wordpress.org/extend/plugins/apc/">APC Object Cache Backend</a></strong> (se il server lo supporta).<br
/> Se siete tra i fortunati ad avere <strong><a
href="http://nginx.org/en/">nginx</a></strong> come web server vi suggerisco <strong><a
href="http://wordpress.org/extend/plugins/nginx-proxy-cache-integrator/">Nginx proxy cache integrator</a></strong>.<br
/> E poi per tutti il forse poco conosciuto <strong><a
href="http://wordpress.org/extend/plugins/wp-widget-cache/">Widget Cache</a></strong></p><hr
style="border-top:black solid 1px" />Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><br
/><a
href="http://maurizio.mavida.com/2010/12/28/wordpress-e-qualita-sistemi-di-cache-manuali/">WordPress e qualità: sistemi di cache manuali</a> was first posted on dicembre 28, 2010 at 3:50 pm.<br
/>]]></content:encoded> <wfw:commentRss>http://maurizio.mavida.com/2010/12/28/wordpress-e-qualita-sistemi-di-cache-manuali/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>DrupalCamp Torino 2010 ed il modulo Solr</title><link>http://maurizio.mavida.com/2010/10/06/drupalcamp-torino-2010-ed-il-modulo-solr/</link> <comments>http://maurizio.mavida.com/2010/10/06/drupalcamp-torino-2010-ed-il-modulo-solr/#comments</comments> <pubDate>Wed, 06 Oct 2010 13:02:18 +0000</pubDate> <dc:creator>Maurizio Pelizzone</dc:creator> <category><![CDATA[software]]></category> <category><![CDATA[sviluppo]]></category> <category><![CDATA[drupal]]></category> <category><![CDATA[full-text search]]></category> <category><![CDATA[solr]]></category> <guid
isPermaLink="false">http://maurizio.mavida.com/?p=2034</guid> <description><![CDATA[Leggi l'orginale su http://maurizio.mavida.comChe sabato scorso sia andato a sentirmi qualche speech al DrupalCamp l&#8217;ho già detto, ma voglio ancora appuntarmi un paio di cose interssanti che ho sentito a che mi piacerebbe approfondire. Bello il talk di presentazione fatto da horncologne che mi ha dato una visione più completa sulle caratteristiche e funzionalità di [...]]]></description> <content:encoded><![CDATA[<p>Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><p><br
/><p>Che sabato scorso sia <a
href="http://www.cascinaroccafranca.it/">andato</a> a <a
href="http://maurizio.mavida.com/2010/09/03/drupalcamp-torino-2-ottobre-2010/">sentirmi</a> qualche <strong>speech</strong> al <a
href="http://torino2010.drupalcamp.it/"><strong>DrupalCamp</strong></a> l&#8217;ho già <a
href="http://maurizio.mavida.com/2010/10/04/wordpress-e-meglio-di-drupal/">detto</a>, ma voglio ancora appuntarmi un paio di cose interssanti che ho sentito a che mi piacerebbe approfondire.</p><p><img
src="http://maurizio.mavida.com/wp-content/uploads/2010/10/drupalcamp-torino-2010.jpg" alt="" title="drupalcamp-torino-2010" width="480" height="220" class="alignnone size-full wp-image-2183" /></p><p>Bello il talk di <a
href="http://torino2010.drupalcamp.it/sessions/welcome-drupalcamp">presentazione</a> fatto da <a
href="http://horncologne.com/">horncologne</a> che mi ha dato una visione più completa sulle caratteristiche e funzionalità di Drupal (di cui spero di poter recuparere le slide) ed interessante l&#8217;approccio al <a
href="http://torino2010.drupalcamp.it/sessions/sviluppo-code-driven-come-lavorare-con-features-e-dire-addio-ai-dump">salvataggio delle configurazione su file</a>, ma quello che mi ha &#8220;illuminato&#8221; è stato il <a
href="http://torino2010.drupalcamp.it/sessions/advanced-apache-solr">talk</a> su <a
href="http://lucene.apache.org/solr/">Solr</a>. (In verità il talk era sul modulo per drupal che ne permette l&#8217;interfacciamento questo è un dettaglio&#8230; )</p><p>Di <strong>Solr</strong> ne avevo solo sentito parlare ma a suo tempo non ne avevo capito le potenzionalità ed in quali contesti poterlo sfruttare.</p><p>Penso che il progetto <strong>Apache Solr</strong> possa essere definito come un &#8220;<em>motore di ricerca</em>&#8221; al quale dare in pasto dei dati e che dopo averlo messo nelle condizioni di <em>indicizzarle</em> è in grado di poter restituire i risultati con delle logiche complesse che nulla hanno a vedere con una serie di &#8220;select from where&#8221;.</p><p>Oggi, dopo aver letto qualche documento, ho le idee decisamente più chiare e spero a breve di poterlo utilizzare in un progetto che è in fase di definizione e che potrebbe essere un&#8217;ottima occasione per approfondere le problematiche relative alla sua <strong>installazione</strong> ed alla sua <strong>configurazione</strong>.</p><p>L&#8217;interfacciamento in questo caso andrebbe fatto con un applicazione custom che viene valorizzata tramite un plugin per <strong><a
href="http://maurizio.mavida.com/categorie/wordpress/">WordPress</a></strong> presente lato amministrazione ma le logiche di <strong>hook</strong> per l&#8217;invio dei dati sarebbero simili a quelle presenti nel modulo <strong>Drupal</strong>.</p><p>Se qualcuno avesse avuto esperienze simili e volesse aiutarmi a fare un plugin &#8220;<strong>wp-solr</strong>&#8221; sappia che è il benvenuto&#8230;</p><hr
style="border-top:black solid 1px" />Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><br
/><a
href="http://maurizio.mavida.com/2010/10/06/drupalcamp-torino-2010-ed-il-modulo-solr/">DrupalCamp Torino 2010 ed il modulo Solr</a> was first posted on ottobre 6, 2010 at 2:02 pm.<br
/>]]></content:encoded> <wfw:commentRss>http://maurizio.mavida.com/2010/10/06/drupalcamp-torino-2010-ed-il-modulo-solr/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>WordPress è meglio di Drupal</title><link>http://maurizio.mavida.com/2010/10/04/wordpress-e-meglio-di-drupal/</link> <comments>http://maurizio.mavida.com/2010/10/04/wordpress-e-meglio-di-drupal/#comments</comments> <pubDate>Mon, 04 Oct 2010 08:41:24 +0000</pubDate> <dc:creator>Maurizio Pelizzone</dc:creator> <category><![CDATA[featured]]></category> <category><![CDATA[sviluppo]]></category> <category><![CDATA[wordpress]]></category> <category><![CDATA[barcamp]]></category> <category><![CDATA[drupal]]></category> <category><![CDATA[slide]]></category> <category><![CDATA[torino]]></category> <guid
isPermaLink="false">http://maurizio.mavida.com/?p=1983</guid> <description><![CDATA[Leggi l'orginale su http://maurizio.mavida.comA dirlo non sono io ma Jennifer Lea Lampton durante la DrupalCon di Copenaghen lo scorso 23 Agosto. Ma andiamo con ordine: Sabato scorso sono stato al DrupalCamp di Torino (spendida location) e durante il talk di Jeffrey McGuire è stato segnalato un intervento molto &#8220;provocatorio&#8221; preparato da questa Jennifer che come [...]]]></description> <content:encoded><![CDATA[<p>Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><p><br
/><p>A dirlo non sono io ma <a
href="http://www.jenlampton.com/">Jennifer Lea Lampton</a> durante la <a
href="http://cph2010.drupal.org/sessions/wordpress-better-drupal-developers-take-note">DrupalCon</a> di Copenaghen lo scorso 23 Agosto.</p><p><a
href="http://cph2010.drupal.org/sessions/wordpress-better-drupal-developers-take-note"><img
src="http://maurizio.mavida.com/wp-content/uploads/2010/10/wordpress-is-better-than-drupal.jpg" alt="" title="wordpress-is-better-than-drupal" width="480" height="220" class="alignnone size-full wp-image-1990" /><br
/> </a></p><p>Ma andiamo con ordine:<br
/> Sabato scorso sono stato al <a
href="http://torino2010.drupalcamp.it/">DrupalCamp di Torino</a> (<a
href="http://www.cascinaroccafranca.it/">spendida location</a>) e durante  il <a
href="http://torino2010.drupalcamp.it/sessions/welcome-drupalcamp">talk</a> di <a
href="http://horncologne.com/">Jeffrey McGuire</a> è stato segnalato un intervento molto &#8220;provocatorio&#8221; preparato da questa <a
href="http://www.slideshare.net/jenlampton">Jennifer</a> che come potete vedere dalle sue esperienze non credo possa considerarsi una &#8220;<a
href="http://en.wikipedia.org/wiki/Fan_%28person%29">fanboy</a>&#8221; di <a
href="http://maurizio.mavida.com/categorie/wordpress/">WordPress</a>.</p><p>Qui sotto le slide che danno una chiara idea del suo talk:</p><p><object
id="__sse4830309" width="425" height="355"><param
name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=wordpress-100724163221-phpapp02&#038;stripped_title=wordpress-is-better-than-drupal-developers-take-note-4830309&#038;userName=jenlampton" /><param
name="allowFullScreen" value="true"/><param
name="allowScriptAccess" value="always"/><embed
name="__sse4830309" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=wordpress-100724163221-phpapp02&#038;stripped_title=wordpress-is-better-than-drupal-developers-take-note-4830309&#038;userName=jenlampton" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></p><p>Sono convito che il tutto vada letto con spirito critico e come diceva anche Mizi in un <a
href="http://friendfeed.com/miziomon/ab5173b5/di-wordpress-e-professionalita">commento su FriendFeed</a> sono prodotti diversi con target diversi.</p><p><strong>WordPress</strong> è una piattaforma che ha sicuramente molti margini di miglioramento sopratutto nell&#8217;implementazione del suo <em>core</em> e nell&#8217;<strong>ottimizzazione delle performance</strong> ma penso che a questo punto non sia più giusto considerarlo come un giocattolo ad uso esclusivo dei <strong>webdesigner</strong>.</p><p><strong>update</strong>:<br
/> per chi vuole partecipare è partita un&#8217;interessante <a
href="http://friendfeed.com/miziomon/088ea2ee/wordpress-e-meglio-di-drupal">discussione</a> su <strong>FriendFeed</strong></p><hr
style="border-top:black solid 1px" />Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><br
/><a
href="http://maurizio.mavida.com/2010/10/04/wordpress-e-meglio-di-drupal/">WordPress è meglio di Drupal</a> was first posted on ottobre 4, 2010 at 9:41 am.<br
/>]]></content:encoded> <wfw:commentRss>http://maurizio.mavida.com/2010/10/04/wordpress-e-meglio-di-drupal/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>Di WordPress e di professionalità</title><link>http://maurizio.mavida.com/2010/09/28/di-wordpress-e-di-professionalita/</link> <comments>http://maurizio.mavida.com/2010/09/28/di-wordpress-e-di-professionalita/#comments</comments> <pubDate>Tue, 28 Sep 2010 14:24:11 +0000</pubDate> <dc:creator>Maurizio Pelizzone</dc:creator> <category><![CDATA[sviluppo]]></category> <category><![CDATA[wordpress]]></category> <category><![CDATA[automatic]]></category> <category><![CDATA[microsoft]]></category> <category><![CDATA[sondaggi]]></category> <category><![CDATA[statistiche]]></category> <category><![CDATA[windows live]]></category> <guid
isPermaLink="false">http://maurizio.mavida.com/?p=1792</guid> <description><![CDATA[Leggi l'orginale su http://maurizio.mavida.comCon il tempo ho deciso di smettere di reinventare l&#8217;acqua calda e di riscrivere pezzi di codice che sicuramente altri hanno scritto meglio di me e dopo essermi guardato un po&#8217; attorno sperimentando diverse soluzioni ho scelto di concentrarmi e di specializzarmi su WordPress Questo cappello per dirvi che leggendo alcuni commenti [...]]]></description> <content:encoded><![CDATA[<p>Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><p><br
/><p>Con il tempo ho deciso di smettere di <strong>reinventare l&#8217;acqua calda</strong> e di riscrivere pezzi di codice che sicuramente altri hanno scritto meglio di me e dopo essermi guardato un po&#8217; attorno sperimentando diverse soluzioni ho scelto di concentrarmi e di specializzarmi su <strong><a
href="http://maurizio.mavida.com/categorie/wordpress/">WordPress</a></strong></p><p>Questo cappello per dirvi che leggendo alcuni commenti a questo <a
href="http://www.juliusdesign.net/quale-cms-usi-per-i-tuoi-clienti-sondaggio/">sondaggio</a> mi sono un po&#8217; &#8220;stupito&#8221;&#8230;</p><ul><li>Stupito di aver trovato <em>web-designers</em> che preferiscono scrivere codice &#8220;<strong>from scratch</strong>&#8221; piuttosto che usare framework sviluppati, debuggati e mantenuti da solide community</li><li>Stupito di aver letto di gente che &#8220;a prescidere dal contesto&#8221; pensa che a far tutto da se ci sia più libertà di movimento</li><li>Stupito di aver constatato l&#8217;esistenza di &#8220;<em>sviluppatori</em>&#8221; in grado di affermare che usare un <strong>CMS</strong> non basta per un sito professionale</li></ul><p>Ora io sicuamente sarei <a
href="http://www.ilpost.it/">di</a> <a
href="http://www.ilfattoquotidiano.it/">parte</a> <a
href="http://www.spinoza.it/">se</a> <a
href="http://mashable.com/">vi</a> <a
href="http://techcrunch.com">elencassi</a> <a
href="http://gigaom.com">una</a> serie di siti che potrebbero essere presi come esempio e che usano <strong><a
href="../categorie/wordpress/">WordPress</a></strong>, quindi vi lascerò analizzare <a
href="http://w3techs.com/technologies/overview/content_management/all">questi dati</a> senza commetarli.</p><p><a
href="http://w3techs.com/technologies/overview/content_management/all"><img
class="alignnone size-full wp-image-1935" title="statistiche-uso-wordpress" src="http://maurizio.mavida.com/wp-content/uploads/2010/09/statistiche-uso-wordpress.jpg" alt="" width="480" height="220" /></a></p><p>Se poi vi state chiedendo come sia riuscito un <em>semplice</em> &#8220;<strong>blog engine</strong>&#8221; ad essere il primo in questo elenco potete dare un&#8217;occhiata a questa <a
href="http://maurizio.mavida.com/2010/09/10/la-proliferazione-di-wordpress/">infografica sulla diffusione di <strong>WordPress</strong></a>.</p><p>Per quanto mi riguarda ci sono poi anche delle motivazioni che accrescono la stima che ho nelle persone che fanno parte di <a
href="http://automattic.com/">Automatic</a> come ad esempio il fatto che abbiano <a
href="http://ma.tt/2010/09/wordpress-trademark/">trasferito il marchio</a> &#8220;<strong>WordPress</strong>&#8221; alla <a
href="http://wordpressfoundation.org/">fondazione no-profit</a>, mentre altre mi riempiono di soddisfazione come quella in cui <a
href="http://en.blog.wordpress.com/2010/09/27/welcome-windows-live-spaces-bloggers/">Microsoft decide di adottare <strong>WordPress</strong> come piattaforma di blog predefiniata per <strong>Windows Live</strong></a></p><p>Chiudo con una cosa che ultimamente mi capita di dire pittosto spesso: &#8220;<strong>WordPress</strong> è uno strumento molto semplice da usare ma è altrettanto semplice usarlo male (plugin e template compresi).&#8221;<br
/> Questo per dire che sta al singolo webdesign e/o sviluppatore fare le cose al meglio.</p><hr
style="border-top:black solid 1px" />Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><br
/><a
href="http://maurizio.mavida.com/2010/09/28/di-wordpress-e-di-professionalita/">Di WordPress e di professionalità</a> was first posted on settembre 28, 2010 at 3:24 pm.<br
/>]]></content:encoded> <wfw:commentRss>http://maurizio.mavida.com/2010/09/28/di-wordpress-e-di-professionalita/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>La mia Checklist prima di andare online</title><link>http://maurizio.mavida.com/2010/09/20/la-mia-checklist-prima-di-andare-online/</link> <comments>http://maurizio.mavida.com/2010/09/20/la-mia-checklist-prima-di-andare-online/#comments</comments> <pubDate>Mon, 20 Sep 2010 11:27:45 +0000</pubDate> <dc:creator>Maurizio Pelizzone</dc:creator> <category><![CDATA[featured]]></category> <category><![CDATA[sviluppo]]></category> <category><![CDATA[tutorial]]></category> <category><![CDATA[checklist]]></category> <guid
isPermaLink="false">http://maurizio.mavida.com/?p=1549</guid> <description><![CDATA[Leggi l'orginale su http://maurizio.mavida.comPrima di andare &#8220;definitiviamente&#8221; online con un sito, indipendentemente dallo strumento usato (sia questo WordPress o codice &#8220;from scratch&#8221;),  è mia abitudine fare una serie di operazioni che in genere mi aiutano ad evitare problemi. Con il tempo ho preparato questa Checklist in cui potrete trovare attività che vanno da quelle di [...]]]></description> <content:encoded><![CDATA[<p>Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><p><br
/><p>Prima di andare &#8220;definitiviamente&#8221; online con un sito, indipendentemente dallo strumento usato (sia questo <a
href="../categorie/wordpress/"><strong>WordPress</strong></a> o codice &#8220;from scratch&#8221;),  è mia abitudine fare una serie di operazioni che in genere mi aiutano ad evitare problemi.</p><p><img
class="alignnone size-full wp-image-1828" title="checklist-prima-di-andare-online" src="http://maurizio.mavida.com/wp-content/uploads/2010/09/checklist-prima-di-andare-online.jpg" alt="" width="480" height="220" /></p><p>Con il tempo ho preparato questa <strong>Checklist</strong> in cui potrete trovare attività che vanno da quelle di competenze più  &#8220;<em>seo</em>&#8221; a quelle che sono operazioni puramente <em>sistemistiche</em>.</p><p>Come qualsiasi altra <strong>Checklist</strong> non va applicata &#8220;bovinamente&#8221;, ma adattata in base ella proprie competente ed agli accordi presi con il cliente.</p><ol><li>Preparazione profilo <a
href="http://maurizio.mavida.com/2010/09/14/strumenti-e-risorse-per-google-analytics/"><strong>Google Analytics</strong></a> e condivisione accesso con email cliente</li><li>Configurazione script tracciamento sul sito e configurazione custom_var (<a
href="http://wordpress.org/extend/plugins/google-analytics-for-wordpress/">Google Analytics for WordPress</a>)</li><li>Preparazione sitemap (<a
href="http://wordpress.org/extend/plugins/google-sitemap-generator/">Google XML Sitemaps</a>)</li><li>Registrazione <a
href="http://www.google.com/webmasters/tools?hl=it">Google WebMaster Tools</a> e segnalazione sitemap</li><li>Registrazione <a
href="http://www.bing.com/toolbox/webmasters/">Bing WebMaster</a> Tools e segnalazione sitemap</li><li>Verifica file Robots.txt con escusione aree riserate (<a
href="http://wordpress.org/extend/plugins/irobotstxt-seo/">iRobots.txt</a>)</li><li>Configurazione servizio di monitoraggio con segnalazione mail in caso di down (es <a
href="http://www.montastic.com/">Monastic</a>)</li><li>Configurazione backup <a
href="http://maurizio.mavida.com/2005/08/09/backup-con-rsync-e-crontab/">file</a> e <a
href="http://maurizio.mavida.com/2007/03/19/mysql-backup-via-mail/">database</a> (<a
href="http://wordpress.org/extend/plugins/wordpress-backup/">WordPress Backup</a> / <a
href="http://wordpress.org/extend/plugins/wp-db-backup/">WordPress database backup</a>)</li><li>Controllo funzionamento Form contatti</li><li>Preparazione .htaccess per compressione gzip, configurazione cache ecc&#8230; (vedi <a
href="http://oreilly.com/catalog/9780596529307">High Performance Web Sites</a>)</li></ol><p>Qui sotto il <strong>download</strong> con il pdf della <strong>Checklist</strong>&#8230;</p> <a
href="http://maurizio.mavida.com/download/Checklist-cosa-fare-prima-della-pubblicazione-di-un-sito.pdf"><img
src="http://maurizio.mavida.com/wp-content/plugins/download-monitor/img/download.gif" alt="Checklist cosa fare prima della pubblicazione di unsito" /></a><p>Se pensate ci siano altre cose da aggiungere fatemelo sapere&#8230;</p><hr
style="border-top:black solid 1px" />Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><br
/><a
href="http://maurizio.mavida.com/2010/09/20/la-mia-checklist-prima-di-andare-online/">La mia Checklist prima di andare online</a> was first posted on settembre 20, 2010 at 12:27 pm.<br
/>]]></content:encoded> <wfw:commentRss>http://maurizio.mavida.com/2010/09/20/la-mia-checklist-prima-di-andare-online/feed/</wfw:commentRss> <slash:comments>10</slash:comments> </item> <item><title>WordPress: Usare &#8220;bene&#8221; i Custom Post Types</title><link>http://maurizio.mavida.com/2010/08/25/wordpress-usare-meglio-i-custom-post-types/</link> <comments>http://maurizio.mavida.com/2010/08/25/wordpress-usare-meglio-i-custom-post-types/#comments</comments> <pubDate>Wed, 25 Aug 2010 15:34:55 +0000</pubDate> <dc:creator>Maurizio Pelizzone</dc:creator> <category><![CDATA[segnalazioni]]></category> <category><![CDATA[sviluppo]]></category> <category><![CDATA[wordpress]]></category> <category><![CDATA[custom post type]]></category> <guid
isPermaLink="false">http://maurizio.mavida.com/?p=1633</guid> <description><![CDATA[Leggi l'orginale su http://maurizio.mavida.comIl 17 Giugno è stata rilasciata ufficialmente questa nuova release di WordPress e se ancora non conoscete quali sono le novità introdotte fareste bene a documentarvi velocemente. Per quanto mi riguarda in questi mesi ho avuto modo di usare sul campo molte di queste nuove caratteristiche ed in particolare i &#8220;tipi&#8221; mi [...]]]></description> <content:encoded><![CDATA[<p>Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><p><br
/><p>Il 17 Giugno è stata rilasciata ufficialmente questa nuova release di <strong>WordPress</strong> e se ancora non conoscete quali sono le <a
href="http://codex.wordpress.org/Version_3.0">novità</a> introdotte fareste bene a <a
href="http://sixrevisions.com/wordpress/wordpress-3-0-guide/">documentarvi</a> <a
href="http://mashable.com/2010/05/10/new-features-wordpress-3/">velocemente</a>.</p><p>Per quanto mi riguarda in questi mesi ho avuto modo di usare sul campo molte di queste nuove caratteristiche ed in particolare i &#8220;<a
href="http://codex.wordpress.org/Custom_Post_Types"><em>tipi</em></a>&#8221; mi hanno risolto parecchi problemi.</p><p><img
src="http://maurizio.mavida.com/wp-content/uploads/2010/08/custom_post_type.jpg" alt="" title="custom_post_type" width="480" height="220" class="alignnone size-full wp-image-1758" /></p><p>Partendo dalla <a
href="http://www.slideshare.net/miziomon/custom-taxonomies-custom-post-type">presentazione</a> che avevo fatto in occasione del <a
href="http://wordcamp.it/milano2010/">WordCamp</a> ed approfondendo ulteriormente l&#8217;<em>argomento</em> ho raccolto una serie di <em><strong>cosine</strong></em> utili che è bene che metta da parte per quando ne avrò nuovamente bisogno.</p><p>Partiamo da un breve elenco di plugin per chi non vuole sporcarsi le mani con il codice:</p><ul><li><a
href="http://wordpress.org/extend/plugins/custom-post-type-ui/"><strong>Custom Post Type UI</strong></a>: Tramite un comoda interfaccia vi consente di creare rapidamente nuovi tipi, nuove tassonomie e sopratutto di gestirne l&#8217;associazione.</li><li><a
href="http://wordpress.org/extend/plugins/post-type-switcher/"><strong>Post Type Switcher</strong></a>: Aggiunge una voce al box &#8220;pubblica&#8221; nella pagina di edit che ci permette di selezionare e/o cambiare il tipo. Utilissimo se vogliamo riorganizzare contenuti già pubblicati</li><li><a
href="http://wordpress.org/extend/plugins/simple-custom-post-type-archives/"><strong>Simple Custom Post Type Archives</strong></a>: Questo plugin sopperisce ad una &#8220;mancanza&#8221; del core di WordPress che non rendeva di facile gestione il listing dei singoli tipi. Una volta attivato sarà possibile avere un archivio diverso in base al tipo. (es. http://nomeblog.com/nometipo/ ). Inoltre aggiunge alla gerarchia delle pagine &#8220;type.php&#8221; per personalizzarne la presentazione</li><li><a
href="http://wordpress.org/extend/plugins/featured-post-type-widget/"><strong>Featured Post Type</strong></a>: Widget molto comodo per visualizzare nella sidebar gli ultimi post filtrandoli per tipo.</li><li><a
href="http://wordpress.org/extend/plugins/custom-field-template/"><strong>Custom Field Template</strong></a>: Se creiamo tipo diversi probabilmente avremo bisongno anche &#8220;custom filed&#8221; diversi. Questo plugin ci permette di creare box personalizzati con campi varibili in base al tipo</li></ul><p>A seguire invece qualche <strong><em>snippets</em></strong> preso dal <a
href="http://codex.wordpress.org/Main_Page">codex</a>:</p><ul><li>In questo modo è possibile associare le tassonomi &#8220;base&#8221; di wordpress (categorie e tag) al nostro nuovo tipo<div
class='code'> register_post_type(&#8216;nome_tipo&#8217;, array(<br
/> &#8216;taxonomies&#8217; => array(&#8216;category&#8217;, &#8216;post_tag&#8217;),<br
/> ));</div></li><li>Per aggiungere un metabox personalizzato ed associarlo ad un particolare tipo (se volessimo associarlo ad un tipo buildin ci basterebbe usare &#8216;post&#8217; o &#8216;page&#8217; al posto di &#8216;nome_tipo&#8217;)<div
class='code'> add_meta_box(  &#8216;html_id&#8217;, &#8216;Titolo del box&#8217;, &#8216;callback_function&#8217;,<br
/> &#8216;nome_tipo&#8217;, &#8216;{normal|side}&#8217;		);  </div></li><li>Per capire il tipo di post del post corrente<div
class='code'> $tipo = get_post_type()</div></li><li>Per capire il tipo di post del post corrente<div
class='code'> $tipo = get_post_type()</div></li><li>Per avere un elenco di tutti i tipi (restituisce un array)<div
class='code'> $post_types= get_post_types()</div></li><li>Per sapere se un tipo esiste (restituisce un boolean)<div
class='code'> post_type_exists( $nome_tipo );</div></li></ul><p>Per il momento mi fermo ed anche se le cose da dire sui tipi e le tassonomie sarebbero ancora tante spero che quanto detto posso esservi utile.</p><hr
style="border-top:black solid 1px" />Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><br
/><a
href="http://maurizio.mavida.com/2010/08/25/wordpress-usare-meglio-i-custom-post-types/">WordPress: Usare &#8220;bene&#8221; i Custom Post Types</a> was first posted on agosto 25, 2010 at 4:34 pm.<br
/>]]></content:encoded> <wfw:commentRss>http://maurizio.mavida.com/2010/08/25/wordpress-usare-meglio-i-custom-post-types/feed/</wfw:commentRss> <slash:comments>13</slash:comments> </item> <item><title>Cariamento dinamico di risorse con JavaScript</title><link>http://maurizio.mavida.com/2010/08/23/cariamento-dinamico-di-risorse-con-javascript/</link> <comments>http://maurizio.mavida.com/2010/08/23/cariamento-dinamico-di-risorse-con-javascript/#comments</comments> <pubDate>Mon, 23 Aug 2010 18:10:47 +0000</pubDate> <dc:creator>Maurizio Pelizzone</dc:creator> <category><![CDATA[segnalazioni]]></category> <category><![CDATA[sviluppo]]></category> <category><![CDATA[web e tecnologia]]></category> <category><![CDATA[javascript]]></category> <guid
isPermaLink="false">http://maurizio.mavida.com/?p=1724</guid> <description><![CDATA[Leggi l'orginale su http://maurizio.mavida.comMi segno qui i link di due librerie JavaScript che permettono il caricamento a runtime di risorse tramite ajax. Il loro utilizzo, in alcune situazioni, dovrebbe migliorare i tempi di risposta ed esecuzione delle pagine web sfuttando la velocità del caricamento parallelo offerta orma dalla maggiorparte dei browser. Si tratta di  Labjs [...]]]></description> <content:encoded><![CDATA[<p>Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><p><br
/><p>Mi segno qui i link di due librerie <strong>JavaScript</strong> che permettono il caricamento a <em>runtime</em> di risorse tramite <strong>ajax</strong>.</p><p>Il loro utilizzo, in alcune situazioni, dovrebbe migliorare i tempi di risposta ed esecuzione delle pagine web sfuttando la velocità del caricamento parallelo offerta orma dalla maggiorparte dei browser.</p><p><a
rel="attachment wp-att-1725" href="http://maurizio.mavida.com/2010/08/23/cariamento-dinamico-di-risorse-con-javascript/sexyjs/"><img
class="alignnone size-full wp-image-1725" title="sexyjs" src="http://maurizio.mavida.com/wp-content/uploads/2010/08/sexyjs.jpg" alt="" width="480" height="220" /></a></p><p>Si tratta di  <a
href="http://labjs.com/">Labjs</a> e <a
href="http://sexyjs.com/api.php">Sexy.js</a> che a dirla in breve permettono di effettuare caricameni asincroni e sequenziali con una sintassi molto molto pulita.</p><p>Qui <a
href="http://labjs.com/documentation.php">qualche</a> <a
href="http://sexyjs.com/api.php">esempio</a> che spero rendano il concetto&#8230;</p><hr
style="border-top:black solid 1px" />Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><br
/><a
href="http://maurizio.mavida.com/2010/08/23/cariamento-dinamico-di-risorse-con-javascript/">Cariamento dinamico di risorse con JavaScript</a> was first posted on agosto 23, 2010 at 7:10 pm.<br
/>]]></content:encoded> <wfw:commentRss>http://maurizio.mavida.com/2010/08/23/cariamento-dinamico-di-risorse-con-javascript/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>12 Plugin per sviluppatori</title><link>http://maurizio.mavida.com/2010/06/08/12-plugin-per-sviluppatori/</link> <comments>http://maurizio.mavida.com/2010/06/08/12-plugin-per-sviluppatori/#comments</comments> <pubDate>Tue, 08 Jun 2010 21:22:51 +0000</pubDate> <dc:creator>Maurizio Pelizzone</dc:creator> <category><![CDATA[featured]]></category> <category><![CDATA[sviluppo]]></category> <category><![CDATA[wordpress]]></category> <category><![CDATA[develop]]></category> <category><![CDATA[wordpress plugin]]></category> <guid
isPermaLink="false">http://maurizio.mavida.com/?p=1678</guid> <description><![CDATA[Leggi l'orginale su http://maurizio.mavida.comPer chi sviluppa template e plugin per wordpress a volte mancano gli strumenti per capire dove sono i problemi o dove poter lavorare per miglioare le perfomace. Io per risolvere questi dilemmi, con il tempo, ho trovato alcuni plugin che a seconda delle necesità mi hanno dato un mano. Giusto per fare [...]]]></description> <content:encoded><![CDATA[<p>Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><p><br
/><p>Per chi sviluppa <em>template</em> e <em>plugin</em> per <strong>wordpress</strong> a volte mancano gli strumenti per capire dove sono i problemi o dove poter lavorare per miglioare le perfomace.</p><p>Io per risolvere questi dilemmi, con il tempo, ho trovato alcuni <strong>plugin</strong> che a seconda delle necesità mi hanno dato un mano.</p><p><a
href="http://wordpress.org/extend/plugins/"><img
class="alignnone   size-full wp-image-1684" title="wordpress-plugin-directory" src="http://maurizio.mavida.com/wp-content/uploads/2010/06/wordpress-plugin-directory.jpg" alt="" width="480" height="220" /></a></p><p>Giusto per fare un esempio vi dico che ne <a
href="http://wordpress.org/extend/plugins/debug-queries/">potete trovare uno</a> in grado di visualizzare le query eseguite dal front-end (solo se loggati come admin)  evidenziando query eccessivamente lente, oppure <a
href="http://wordpress.org/extend/plugins/debug-objects/">altri</a> <a
href="http://wordpress.org/extend/plugins/wp-developer-assistan/">che </a>danno un quadro delle informazioni della piattafoma.</p><p><span
id="more-1678"></span></p><p>Il mio consiglio è quello studiarli e di provarli un po&#8217; tutti cercando di capire cosa potrebbe essere meglio usare a seconda della situzione.</p><ol><li><a
href="http://wordpress.org/extend/plugins/debug-queries/">http://wordpress.org/extend/plugins/debug-queries/</a></li><li><a
href="http://wordpress.org/extend/plugins/debug-objects/">http://wordpress.org/extend/plugins/debug-objects/</a></li><li><a
href="http://wordpress.org/extend/plugins/core-control/">http://wordpress.org/extend/plugins/core-control/</a></li><li><a
href="http://wordpress.org/extend/plugins/wp-dbmanager/">http://wordpress.org/extend/plugins/wp-dbmanager/</a></li><li><a
href="http://wordpress.org/extend/plugins/wp-developer-assistan/">http://wordpress.org/extend/plugins/wp-developer-assistan/</a></li><li><a
href="http://wordpress.org/extend/plugins/wp-development-utilities/">http://wordpress.org/extend/plugins/wp-development-utilities/</a></li><li><a
href="http://wordpress.org/extend/plugins/wp-debug/">http://wordpress.org/extend/plugins/wp-debug/</a></li><li><a
href="http://wordpress.org/extend/plugins/query-debug-info/">http://wordpress.org/extend/plugins/query-debug-info/</a></li><li><a
href="http://wordpress.org/extend/plugins/wordpress-hook-sniffe/">http://wordpress.org/extend/plugins/wordpress-hook-sniffe/</a></li><li><a
href="http://wordpress.org/extend/plugins/sqlmon/">http://wordpress.org/extend/plugins/sqlmon/</a></li><li><a
href="http://wordpress.org/extend/plugins/wp-migrate-db/">http://wordpress.org/extend/plugins/wp-migrate-db/</a></li><li><a
href="http://wordpress.org/extend/plugins/wp-crontrol/">http://wordpress.org/extend/plugins/wp-crontrol/</a></li></ol><p>Ovviamente prima di andare in produzione ricordatevi di eliminarli&#8230;</p><p>Se ne avete altri da aggiungere alla lista ringrazio anticipatamente chi vorra segnalarlo nei commenti.</p><hr
style="border-top:black solid 1px" />Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><br
/><a
href="http://maurizio.mavida.com/2010/06/08/12-plugin-per-sviluppatori/">12 Plugin per sviluppatori</a> was first posted on giugno 8, 2010 at 10:22 pm.<br
/>]]></content:encoded> <wfw:commentRss>http://maurizio.mavida.com/2010/06/08/12-plugin-per-sviluppatori/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>Localizzazione dei file javascript</title><link>http://maurizio.mavida.com/2010/03/09/localizzazione-dei-file-javascript/</link> <comments>http://maurizio.mavida.com/2010/03/09/localizzazione-dei-file-javascript/#comments</comments> <pubDate>Tue, 09 Mar 2010 11:29:49 +0000</pubDate> <dc:creator>Maurizio Pelizzone</dc:creator> <category><![CDATA[featured]]></category> <category><![CDATA[sviluppo]]></category> <category><![CDATA[javascript]]></category> <category><![CDATA[json]]></category> <guid
isPermaLink="false">http://maurizio.mavida.com/?p=1592</guid> <description><![CDATA[Leggi l'orginale su http://maurizio.mavida.comPer la validazione di alcuni form ho avuto la necessità di localizzare le stringhe di errore gestite all&#8217;interno di un file Javascript. Volevo un sistema che non fosse eccessivamente invasivo, simile al gettext che uso con php ma che fosse indipendante da codice serverside e che mi permettesse di caricare e cambiare [...]]]></description> <content:encoded><![CDATA[<p>Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><p><br
/><p>Per la validazione di alcuni form ho avuto la necessità di <strong>localizzare</strong> le stringhe di errore gestite all&#8217;interno di un file <strong>Javascript</strong>.<br
/> Volevo un sistema che non fosse eccessivamente <em>invasivo</em>, simile al <a
href="http://php.net/manual/en/book.gettext.php"><strong>gettext</strong></a> che uso con <strong>php</strong> ma che fosse <em>indipendante</em> da codice <em>serverside</em> e che mi permettesse di caricare e cambiare il file con le riserse localizzate anche a <em>runtime</em>.</p><p><img
src="http://maurizio.mavida.com/wp-content/uploads/2010/03/javascipt-localization.jpg" alt="" title="javascipt-localization" width="480" height="271" class="alignnone size-full wp-image-1603" /></p><p>Quello che ne è uscito mi piace molto e penso che sia anche sufficentemente <strong>scalabile</strong> pur avendo come limite il fatto di lavorare su <del>array di stringhe</del> un oggetto <strong>json</strong> piuttosto che su file compilati.</p><p>In pratica dopo aver dichiarato l&#8217;oggetto in cui &#8220;<em>cercare</em>&#8221; le traduzioni, ho preparato una funzione che verifica la presenza della stringa localizzata e nel caso non venga trovata mi restituisse quella &#8220;non localizzata&#8221;.</p><div
class="code"> var Localization =  {};<br
/> function _e( s ){<br
/> if(Localization &#038;&#038; (v=Localization[s]) ) return v;<br
/> return s;<br
/> }</div><p>Usando questa funzione all&#8217;interno dei miei file js sono in grado di separare (ed eventualmente rimandare) le problematiche relatavie alla <strong>localizzazione</strong> rimanendo concentrato sul codice.<br
/> Nell&#8217;esempio qui sotto viene visualizzato un alert con un bel &#8220;ciao&#8221; sino a quando non viene caricata una risorsa in lingua</p><div
class="code"> alert( _e(&#8220;ciao&#8221;) );</div><p>Per caricare il file con le risorse localizzate includo lo script a runtime con &#8220;<strong><a
href="http://api.jquery.com/jQuery.getScript/">getScript</a></strong>&#8221; (magari dopo aver letto un cookies&#8230;)</p><div
class="code"> function LoadLocale( locale ){<br
/> /* es. LoadLoacale(&#8220;en_EN&#8221;); 	*/<br
/> var Localization_path =  &#8220;languages/&#8221;;<br
/> Localization = {};<br
/> try {<br
/> jQuery.getScript( Localization_path + locale + &#8220;.js&#8221;);<br
/> } catch(e) {}<br
/> }</div><p>Questa la struttura del file di risorse (en_EN.js) che nel momento in cui viene richiamata ridefinisce completamente l&#8217;oggetto &#8220;Localization&#8221;</p><div
class="code"> // en_EN &#8211; javascript localization file<br
/> var Localization =  {<br
/> &#8220;errore&#8221; : &#8220;error&#8221;,<br
/> &#8220;ciao&#8221;  : &#8220;hello&#8221;,<br
/> &#8220;nome&#8221; : &#8220;name&#8221;,<br
/> &#8220;sito web&#8221; : &#8220;website&#8221;<br
/> }</div><p>Uno dei vantaggi di questo sistema è che andrò a <strong>localizzare</strong> solo ciò che mi serve con un approccio non <em>intrusivo</em>.<br
/> In atre parole se la stringa o il file non vengono trovati viene restituita la stringa non localizzata.<br
/> Ancora una nota per chi volesse usarlo: dentro LoadLocale c&#8217;è una chiamata a jQuery che quindi va considerato tra i requisiti necessari.</p><p>Per migliore le performance, indipendentamente dalla dimensione del file della localizzazione, sarebbe consigliabile minimizzare i file javascript con strumenti tipo <a
href="http://www.crockford.com/javascript/jsmin.html">questo</a>.</p><p><a
href="http://kallesaas.com/2009/09/29/javascript-localization.html">Questi</a> <a
href="http://www.jspwiki.org/wiki/JavascriptLocalization">alcuni</a> <a
href="http://stackoverflow.com/questions/104022/localize-strings-in-javascript">link</a> da cui ho preso ispirazione.</p><hr
style="border-top:black solid 1px" />Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><br
/><a
href="http://maurizio.mavida.com/2010/03/09/localizzazione-dei-file-javascript/">Localizzazione dei file javascript</a> was first posted on marzo 9, 2010 at 12:29 pm.<br
/>]]></content:encoded> <wfw:commentRss>http://maurizio.mavida.com/2010/03/09/localizzazione-dei-file-javascript/feed/</wfw:commentRss> <slash:comments>6</slash:comments> </item> <item><title>10 Searchbox stilosi + howto</title><link>http://maurizio.mavida.com/2009/01/28/10-searchbox-stilosi-howto/</link> <comments>http://maurizio.mavida.com/2009/01/28/10-searchbox-stilosi-howto/#comments</comments> <pubDate>Wed, 28 Jan 2009 08:04:15 +0000</pubDate> <dc:creator>Maurizio Pelizzone</dc:creator> <category><![CDATA[featured]]></category> <category><![CDATA[sviluppo]]></category> <category><![CDATA[tutorial]]></category> <category><![CDATA[css]]></category> <category><![CDATA[design]]></category> <category><![CDATA[inspiration]]></category> <category><![CDATA[searchbox]]></category> <guid
isPermaLink="false">http://maurizio.mavida.com/?p=1179</guid> <description><![CDATA[Leggi l'orginale su http://maurizio.mavida.comUno degli elementi tipici di un blog è il box per la ricerca e qualche giorno fa mi sono messo in mente di cambiare quello presente su questa pagine. Ho quindi iniziato a guardarmi un giro cercando di trovare qualcosa che mi piacesse e dallo screening effettuato sono venute fuori diverse cose [...]]]></description> <content:encoded><![CDATA[<p>Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><p><br
/><p>Uno degli elementi tipici di un blog è il <strong>box per la ricerca</strong> e qualche giorno fa mi sono messo in mente di <em>cambiare</em> quello presente su questa pagine.</p><p>Ho quindi iniziato a guardarmi un giro cercando di trovare qualcosa che mi piacesse e dallo <em>screening</em> effettuato sono venute fuori diverse cose interessanti.</p><p>Quello che non ho trovato sono state le popolarissime &#8220;<em>inspiration list</em>&#8221; ed ho quindi deciso di presentarvene 10 che, secondo il mio gusto, ritengo siano decisamente &#8220;<strong>stilose</strong>&#8220;.</p><h3>Sohtanaka: Web development &#038; design</h3><p><a
href="http://www.sohtanaka.com/web-design-blog/"><img
src="http://maurizio.mavida.com/wp-content/uploads/2009/01/sohtanaka.jpg" alt="sohtanaka" title="sohtanaka" width="480" height="200" class="alignnone size-full wp-image-1322" /></a></p><h3>Michael Tyson: Life, tech, Cocoa development, Mac</h3><p><a
href="http://michael.tyson.id.au/"><img
src="http://maurizio.mavida.com/wp-content/uploads/2009/01/michaeltyson.jpg" alt="michaeltyson" title="michaeltyson" width="480" height="200" class="alignnone size-full wp-image-1318" /></a></p><p><span
id="more-1179"></span></p><h3>Alex Buga: Webdesigner superstar</h3><p><a
href="http://www.alexbuga.com/"><img
src="http://maurizio.mavida.com/wp-content/uploads/2009/01/alexbuga.jpg" alt="alexbuga" title="alexbuga" width="480" height="200" class="alignnone size-full wp-image-1342" /></a></p><h3>College Park Church</h3><p><a
href="http://www.yourchurch.com/"><img
src="http://maurizio.mavida.com/wp-content/uploads/2009/01/yourchurch.jpg" alt="yourchurch" title="yourchurch" width="480" height="200" class="alignnone size-full wp-image-1323" /></a></p><h3>Janko at warp speed</h3><p><a
href="http://www.jankoatwarpspeed.com/"><img
src="http://maurizio.mavida.com/wp-content/uploads/2009/01/jankoatwarpspeed.jpg" alt="jankoatwarpspeed" title="jankoatwarpspeed" width="480" height="200" class="alignnone size-full wp-image-1317" /></a></p><h3>WordPress theme: Review</h3><p><a
href="http://wtheme.com/review/"><img
src="http://maurizio.mavida.com/wp-content/uploads/2009/01/review-480x200.jpg" alt="review" title="review" width="480" height="200" class="alignnone size-medium wp-image-1321" /></a></p><h3>WordPress theme: Personal</h3><p><a
href="http://www.wpdesigner.com/demo/index.php?preview=Personal"><img
src="http://maurizio.mavida.com/wp-content/uploads/2009/01/personal.jpg" alt="personal" title="personal" width="480" height="200" class="alignnone size-full wp-image-1320" /></a></p><h3>WordPress theme: Clearpress</h3><p><a
href="http://wpthemes.blogohblog.net/index.php?wptheme=clearpress"><img
src="http://maurizio.mavida.com/wp-content/uploads/2009/01/clearpress.jpg" alt="clearpress" title="clearpress" width="480" height="200" class="alignnone size-full wp-image-1315" /></a></p><h3>WordPress theme: Industry</h3><p><a
href="http://www.premiumthemes.com/preview/?theme=industry"><img
src="http://maurizio.mavida.com/wp-content/uploads/2009/01/industry.jpg" alt="industry" title="industry" width="480" height="200" class="alignnone size-full wp-image-1316" /></a></p><h3>WordPress theme: Chrome</h3><p><a
href="http://ericulous.com/2008/09/09/wp-theme-google-chrome/"><img
src="http://maurizio.mavida.com/wp-content/uploads/2009/01/chrome.jpg" alt="chrome" title="chrome" width="480" height="200" class="alignnone size-full wp-image-1314" /></a></p><p>Finiti gli esempi affrontiamo adesso la <strong>realizzazione</strong>.<br
/> Dal punto di vista <em>tecnico</em> ho visto usare diversi approcci ma uno in particolare mi è piaciuto per la sua semplità.</p><p>Questa è la struttura semantica:</p><div
class="code"> &lt;div id=&quot;searchbox&quot;&gt;<br
/> &lt;form method=&quot;post&quot; action=&quot;searchpage.php&quot;&gt;<br
/> &lt;input id=&quot;searchfield&quot; name=&quot;searchfield&quot; type=&quot;text&quot; &gt;<br
/> &lt;input id=&quot;searchbutton&quot; type=&quot;image&quot; src=&quot;searchbutton.gif&quot;&gt;<br
/> &lt;/form&gt;<br
/> &lt;/div&gt;</div><p>Il box è tenuto insieme da un <strong>div</strong> dalle dimensione fisse che si occuperà di gestire lo sfondo. Al form form vengono impostati <em>margin</em> e <em>padding</em> a zero, mentro sui tag <strong>input</strong> vanno eliminati i bordi e definito un posizionamento <em>float</em>.</p><div
class="code"> #searchbox {<br
/> background: url(searchbg.gif) no-repeat;<br
/> height: 30px;<br
/> width: 300px;<br
/> }<br
/> #searchbox form { margin: 0px; padding: 0px;  }<br
/> #searchbox input { border: 0px; float: left; }<br
/> #searchbox #searchfield {<br
/> margin: 6px 0px 6px 10px;<br
/> font-size: 15px;<br
/> }<br
/> #searchbox #searchbutton { height: 30px; }</div><p>L&#8217;elemento più &#8220;<strong>complicato</strong>&#8221; da gestire è il campo di ricerca &#8220;<em>searchfield</em>&#8221; al quale non daremo un altezza fissa ma utilizzeremo dimensione del font, padding e margin.<br
/> Infine il <strong>submit</strong> che va preparato in modo tale da far coincidere l&#8217;altezza con quella del <strong>div</strong> che lo contiene. In alcuni casi ho visto usare un segnaposto completamente trasparente in modo che sia l&#8217;immagine di sfondo a gestire tutto.</p><p>Questa soluzione non rappresenta l&#8217;unico modo di affrontare il problema e nei 10 link presentati è possibile trovare altre <strong>tecniche</strong> altrettanto <em>interessanti</em>.</p><p>Concludo segnalandovi questo <a
href="http://www.sohtanaka.com/web-design/styling-input-search-form-css/">articolo</a> che è l&#8217;unico che ho trovato sull&#8217;argomento.</p><hr
style="border-top:black solid 1px" />Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><br
/><a
href="http://maurizio.mavida.com/2009/01/28/10-searchbox-stilosi-howto/">10 Searchbox stilosi + howto</a> was first posted on gennaio 28, 2009 at 9:04 am.<br
/>]]></content:encoded> <wfw:commentRss>http://maurizio.mavida.com/2009/01/28/10-searchbox-stilosi-howto/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
