<?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>Redsend Blog &#124; Programmazione, web, open source, linux e apple &#187; Appunti</title>
	<atom:link href="http://www.redsend.org/category/appunti/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.redsend.org</link>
	<description></description>
	<lastBuildDate>Mon, 30 Jan 2012 20:10:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Gestire utenti con timezone differenti in PHP e MySQL</title>
		<link>http://www.redsend.org/2011/12/06/gestire-utenti-con-timezone-differenti-in-php-e-mysql/</link>
		<comments>http://www.redsend.org/2011/12/06/gestire-utenti-con-timezone-differenti-in-php-e-mysql/#comments</comments>
		<pubDate>Tue, 06 Dec 2011 20:09:39 +0000</pubDate>
		<dc:creator>redsend</dc:creator>
				<category><![CDATA[Appunti]]></category>
		<category><![CDATA[date]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[time]]></category>
		<category><![CDATA[timestamp]]></category>
		<category><![CDATA[timezone]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=2132</guid>
		<description><![CDATA[Quando si sviluppano progetti dove sono coinvolti utenti proveniente da tutto il mondo, nasce l'esigenza di gestire date e timestamp per i differenti fusi orari, memorizzarli e visualizzarli senza creare "salti temporali".]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Quando si sviluppano progetti dove sono coinvolti utenti proveniente da tutto il mondo, nasce l&#8217;esigenza di gestire date e timestamp per i differenti fusi orari, memorizzarli e visualizzarli senza creare &#8220;salti temporali&#8221;.</p>
<h3></h3>
<h3>Un esempio: commenti</h3>
<p>Il più classico degli esempi nel quale si trovano coinvolte informazioni riguardati il tempo potrebbe essere un sistema di commenti: se un utente da New York lascia un commento alle 10:00 AM Estern Standard Time, un minuto dopo in Italia, l&#8217;utente che sta leggendo il commento appena lasciato deve visualizzare 16:01 GMT+1 (Europe/Rome).</p>
<p>Quel&#8217;è il modo migliore per memorizzare le informazioni? Con quale fuso orario? Come facciamo ad effettuare la conversione?</p>
<h3></h3>
<h3>PHP e DateTime Functions</h3>
<p>In realtà la cosa potrebbe essere realizzata in diversi modi: <strong>PHP</strong> mette a disposizione una serie di funzioni per gestire <strong>date e time</strong> con relative conversioni di <strong>fusi orari</strong> (<a href="http://it2.php.net/manual/en/ref.datetime.php" target="_blank">Date &amp; Time Functions</a>), in particolare mette a disposizione una funzione <strong>date_default_timezone_set</strong> con la quale è possibile impostare il timezone della sessione attuale e quindi tutte le funzioni (compatibili con timezone, ad esempio <strong>date</strong>) effettueranno una conversione automatica tra il timezone del sistema sul quale è in esecuzione lo script PHP e quello impostato in precedenze.</p>
<p>Queste funzioni possono essere molto utili in tanti casi, ma se vi trovate in uno scenario simile a quello precedente, nel quale c&#8217;è anche MySQL coinvolto, allora esiste una soluzione migliore.</p>
<h2></h2>
<h3>MySQL e TIMESTAMP</h3>
<p>Sicuramente la data del commento dovrà essere memorizzata all&#8217;interno del <strong>DB</strong>. In questi casi possiamo evitare di inserire noi la data ma sfruttare la funzione <strong>CURRENT_TIMESTAMP</strong> di MySQL disponibile solo per il tipo di dato <strong>TIMESTAMP</strong>. Se non sapete di cosa sto parlando vi conviene dare un&#8217;occhiata alla documentazione (<a href="http://dev.mysql.com/doc/refman/5.0/en/timestamp.html" target="_blank">TIMESTAMP Properties</a>).</p>
<p>Il tipo di dato TIMESTAMP risulta molto comodo in questo caso perché viene sempre memorizzato secondo il fuso orario <a href="http://it.wikipedia.org/wiki/Tempo_coordinato_universale" target="_blank">UTC (<em>Coordinated Universal Time</em>)</a> e convertito automaticamente quando il fuso orario del sistema è diverso.</p>
<h3></h3>
<h3>MySQL time_zone</h3>
<p>Come impostazione di default MySQL restituisce tutti i dati TIMESTAMP secondo il fuso orario di sistema, questo perché la variabile time_zone è impostata su &#8220;<strong>SYSTEM</strong>&#8220;. Questa variabile può essere cambiata a livello globale (<a href="http://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html" target="_blank">MySQL Server Time Zone Support</a>) oppure a livello di connessione. Il secondo caso è quello che più ci interessa.</p>
<p>Per ottenere la data del commento nel fuso orario GMT+1 (Europe/Rome), quindi, basterà impostare la variabile <strong>time_zone</strong> su &#8220;+1:00&#8243; e automaticamente tutte le query effettuate su questa connessione conterranno il timestamp convertito.</p>
<pre class="brush: sql; title: ; notranslate"> SET time_zone=&quot;GMT+1&quot;; </pre>
<p>E&#8217; possibile specificare anche time_zone più user friedly come ad esempio &#8220;Europe/Rome&#8221;, ma questo necessita di aver creato e configurato un tabella speciale sul server MySQL, a questo indirizzo (<a href="http://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html" target="_blank">MySQL Server Time Zone Support</a>), fine pagina, spiega come fare.</p>
<div class="shr-publisher-2132"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2011/12/06/gestire-utenti-con-timezone-differenti-in-php-e-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perché non comprerò ebook (per ora)</title>
		<link>http://www.redsend.org/2011/04/20/perche-non-comprero-ebook-per-ora/</link>
		<comments>http://www.redsend.org/2011/04/20/perche-non-comprero-ebook-per-ora/#comments</comments>
		<pubDate>Wed, 20 Apr 2011 21:10:28 +0000</pubDate>
		<dc:creator>duplikey</dc:creator>
				<category><![CDATA[Appunti]]></category>
		<category><![CDATA[Oggi ho letto]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[libri]]></category>
		<category><![CDATA[prezzi]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=1674</guid>
		<description><![CDATA[In questi giorni su twitter si sta sviluppando una discussione intorno agli ebook molto interessante. Un episodio degno di nota, che mi ha spinto a scrivere questo post, è stato il post pubblicato da Luca Conti sul suo blog riguardo al prezzo degli ebook. In particolare si parlava dell&#8217;ultimo libro di Luca De Biase e del fatto che la versione cartacea costasse meno di quella elettronica. Su twitter ho dato qualche risposta veloce e poi [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>In questi giorni su twitter si sta sviluppando una discussione intorno agli ebook molto interessante.<br />
Un episodio degno di nota, che mi ha spinto a scrivere questo post, è stato <a href="http://www.pandemia.info/2011/04/18/sul-prezzo-degli-ebook.html" target="_blank">il post pubblicato da Luca Conti</a> sul suo blog riguardo al <strong>prezzo degli ebook</strong>. In particolare si parlava dell&#8217;<a href="http://blog.debiase.com/2011/04/prezzi-di-libri-carta-e-ebook.html" target="_blank">ultimo libro di Luca De Biase</a> e del fatto che la versione cartacea costasse meno di quella elettronica.</p>
<p>Su twitter ho dato <a href="http://www.twitter.com/duplikey" target="_blank">qualche risposta veloce</a> e poi ho pensato di approfondire un attimo la questione e scrivere qualche considerazione più ragionata.</p>
<p>Penso che ci siano almeno <strong>7 fattori</strong> che, ora come ora, mi spingono a <strong>non comprare un ebook</strong>. Ci sono sicuramente fattori più importanti di altri e l&#8217;elenco che segue non è in ordine di importanza. Cercherò, quando possibile, di fare anche esempi pratici a supporto dei vari punti.</p>
<h3><span id="more-1674"></span>1) Fattore prezzo</h3>
<p>Questo l&#8217;ho messo per primo perché, inevitabilmente, <strong>quando penso agli ebook penso al loro costo</strong>. Girando spesso tra i negozi online mi capita di confrontare prezzi di libri con le loro versioni elettroniche, soprattutto nel campo della manualistica. La differenza tra i prezzi è, a volte, irrisoria e, senza voler considerare il caso estremo di Luca De Biase, su manuali da 40/50 euro, il relativo ebook costa circa 30/40 euro! Stiamo scherzando?!<br />
Perché mai dovrei comprare un FILE quando con 10 euro in più posso avere la versione cartacea??<br />
Lo stesso vale per libri più economici: se un volume costa 20 euro e il relativo ebook ne costa 17,50 mi viene automatico aggiungere due &#8220;miseri&#8221; euro e comprare il cartaceo.<br />
Visto che ritengo la versione cartacea molto più interessante (per i motivi che elencherò sotto) non riesco proprio a prendere in considerazione l&#8217;alternativa elettronica.<br />
Discorso diverso sarebbe se gli ebook costassero di meno. Dove per &#8220;di meno&#8221; intendo <strong>molto di meno</strong>.<br />
Le cifre di riferimento dovrebbero essere quelle della musica.<br />
<strong>Un ebook può diventare interessante e competitivo sotto i 5 euro</strong>. Se la versione elettronica di un libro da 15/20 euro costasse 2/3 euro allora sarei molto più invogliato ad acquistarlo. Soprattutto perché, in questo modo, si attiva il ragionamento di &#8220;<strong>lo scarico, lo leggo e se mi piace spendo i 20 euro per la versione cartacea</strong>&#8220;. Cosa che faccio abitualmente utilizzando google libri.</p>
<h3>2) Fattore libreria</h3>
<p>Strettamente legato al &#8220;fattore emozione&#8221;, il fattore libreria ha varie componenti. Il poter conservare, classificare e ordinare i propri volumi secondo i criteri più assurdi, al limite del feticismo in alcuni casi, è sicuramente un elemento da non sottovalutare. E, vi prego, non ditemi che con iBooks o la vostra cartella PDF è la stessa cosa!<br />
Passo davanti alla libreria, do uno sguardo veloce e trovo, direttamente dal colore della copertina, quel libro a cui sono tanto affezionato. Colloco i volumi di una collana uno vicino all&#8217;altro in modo che, sempre a colpo d&#8217;occhio, individuo subito quali sono e dove si trovano. Posiziono quelli che leggo più spesso sulle mensole in basso e gli altri li relego sulle mensole alte.<br />
<strong>Insomma la libreria ha un forte valore estetico ma anche un valore organizzativo non da poco</strong>.</p>
<h3>3) Fattore prestito</h3>
<p>Il fattore prestito si divide in due: il lato tecnologico e il lato emozionale. Il lato emozionale è comune a molti di questi punti (penso, infatti, che sia uno dei più importanti) ed è, semplicemente, la praticità di prendere un libro da uno scaffale e darlo all&#8217;amico con cui si sta colloquiando.<br />
Ti trovi li che fai il figo citando a memoria tutti i libri di Umberto Eco, alla fine lo convinci a leggere &#8220;Il pendolo di Foucault&#8221; e un minuto dopo lui ha il libro in mano e lo porta a casa.<br />
Il lato tecnologico è invece legato alla <strong>questione DRM</strong>. L&#8217;argomento è lungo e complesso e sarebbe da discutere in un post a parte ma, indipendentemente da cosa penso riguardo ai DRM, questa tecnologia in se rende difficile se non impossibile, in certi casi, alcune operazioni sui libri come, ad esempio, il prestito.<strong><br />
Non sono libero di fare quello che voglio con un libro che è MIO</strong>.</p>
<h3>4) Fattore emozione</h3>
<p>Qui dovrei scrivere un libro!<br />
Cerco di essere breve conscio del fatto che i discorsi emotivi riguardo ai libri sono più o meno sempre gli stessi.<br />
<strong>Ogni libro è un&#8217;emozione</strong>.<br />
E&#8217; un&#8217;emozione il momento dell&#8217;acquisto, con le ore passate alla Feltrinelli a spulciare tra gli scaffali.<br />
E&#8217; un&#8217;emozione il ritorno a casa e il primo capitolo letto subito, al volo, sul divano.<br />
E&#8217; un&#8217;emozione tirarlo fuori dallo zaino mentre sei in treno.<br />
E&#8217; un&#8217;emozione il tocco delle dita sulla carta.<br />
E&#8217; un&#8217;emozione il fruscio della carta ad ogni cambio pagina.<br />
E&#8217; un&#8217;emozione poter vedere quante pagine ti mancano alla fine.<br />
E&#8217; un&#8217;emozione quando un amico ti porta a casa un libro che gli avevi prestato anni prima e nemmeno te ne ricordavi.<br />
E&#8217; un&#8217;emozione quando a casa di un amico vedi un libro nella sua libreria e poi te lo presta.<br />
Devo aggiungere altro?<br />
L&#8217;equivalente in un ebook sarebbe qualcosa tipo: scrolla, scrolla, click, click, salva con nome, sposta nella cartella.<br />
<strong>Perché dovremmo rinunciare a tutto questo?</strong></p>
<h3>5) Fattore comodità</h3>
<p><strong>I libri sono comodi</strong> e i vari iPad, iPhone, kindle e altri non potranno riprodurre la stessa comodità.<br />
Qualcosa a riguardo si evince già dai punti 2 e 3 ma, oltre a quelle elencate sopra, ci sono altre comodità come: poter tirare fuori un libro in qualsiasi momento e in qualsiasi luogo, tenerlo in una sola mano, muoversi comodamente in poco spazio, non avere la preoccupazione per la batteria o che rubino l&#8217;iPad in metropolitana.<br />
<strong>Il libro lo butti nello zaino e scappi</strong>. Scendi dal treno, passi sul bus, hai altri 5 minuti e lo tiri di nuovo fuori. Non devi accendere o spegnere niente, non devi avviare programmi, non devi caricare file. Apri al volo con il tuo bel segnalibro, o la classica &#8220;orecchia&#8221;, e riprendi da dove eri rimasto.<br />
In ufficio ne metti un paio sulla scrivania per il tempo libero, in bagno ne metti qualcuno più &#8220;easy&#8221; per i momenti di relax, mentre sei alla Mondadori ne sfogli decine senza accorgertene, ne lasci uno di quelli tascabili nel cruscotto della macchina per quando aspetti nei parcheggi, e cosi via.</p>
<h3>6) Fattore appunti</h3>
<p>Più in generale, qui mi riferisco ad <strong>appunti, note, segnalibri, pieghe e tutto quello che si può fare con un libro cartaceo</strong>. Certo, molte di queste operazioni hanno un equivalente nelle loro versioni elettroniche ma ci sono alcuni casi, come quello dei libri scolastici/universitari, dove determinati meccanismi non sono riproducibili. Pensate alla quantità di note scarabocchiate in giro, la velocità di scrivere poi cancellare e poi riscrivere qualcosa, i fogli  lasciati in mezzo alle pagine, i segnalibri adesivi colorati per individuare gli argomenti.<br />
Negli ebook i vantaggi sono sul lato della ricerca: mi ricordo quella parola chiave oppure quella citazione o quel determinato autore e allora cerco direttamente nel file e in un secondo arrivo alla pagina desiderata. Questo un libro non lo avrà mai, ma per quanto riguarda la praticità e la velocità delle operazioni descritte sopra non ci sono eguali in un ebook.</p>
<h3>7) Fattore stanchezza</h3>
<p>Quando leggo qualcosa da un dispositivo elettronico (che sia pc o altro) mi stanco e mi distraggo più facilmente. Con i libri no.<br />
<strong>Dopo un po&#8217; di tempo gli occhi si affaticano molto, la concentrazione non è la stessa e perdo più frequentemente il filo</strong>. Con i libri riesco a leggere per ore senza sentire la stanchezza e faccio più attenzione a quello che leggo.<br />
Inoltre, con le &#8220;letture elettroniche&#8221;, ho la tendenza a saltare i  paragrafi, cercare di velocizzare la lettura e terminare prima.<br />
Non so se capita lo stesso anche ad altri ma, dal mio punto di vista, questo mi fa sempre prediligere un libro cartaceo, soprattutto per argomenti dove l&#8217;attenzione è fondamentale.<br />
In particolare con le letture da lavoro (manuali per lo più) uso per versioni elettroniche per cercare velocemente gli argomenti e poi i libri per studiarli e approfondirli.</p>
<p>Credo di aver detto tutto, queste sono i miei fattori pro-libri. Sarebbe interessante conoscere anche le vostre opinioni.<br />
Che ne pensate? Comprate ebook? Se si o no, perché?</p>
<div class="shr-publisher-1674"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2011/04/20/perche-non-comprero-ebook-per-ora/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Punto Informatico Libri</title>
		<link>http://www.redsend.org/2011/04/14/punto-informatico-libri/</link>
		<comments>http://www.redsend.org/2011/04/14/punto-informatico-libri/#comments</comments>
		<pubDate>Thu, 14 Apr 2011 13:46:57 +0000</pubDate>
		<dc:creator>robyb</dc:creator>
				<category><![CDATA[Appunti]]></category>
		<category><![CDATA[Nel web]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[libri]]></category>
		<category><![CDATA[PuntoInformatico]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=1636</guid>
		<description><![CDATA[Ero alla ricerca di un pò di informazioni e materiale su Android. Mi sono imbattuto nel sito di Punto Informatico. Per chi non lo sapesse Punto Informatico è una testata giornalistica online gratuita in lingua italiana, specializzata in nuove tecnologie, Internet e comunicazione, con rubriche e forum di discussione. Ho trovato la sezione libri dove sono presenti anche altri testi oltre a quello che ho ricercato io. Sottolineo che per poter scaricare questi testi occorre [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Ero alla ricerca di un pò di informazioni e materiale su Android. Mi sono imbattuto nel sito di <a href="http://punto-informatico.it/">Punto Informatico</a>. Per chi non lo sapesse Punto Informatico è una testata giornalistica online gratuita in lingua italiana, specializzata in nuove tecnologie, Internet e comunicazione, con rubriche e forum di discussione.<br />
Ho trovato la sezione <a href="http://punto-informatico.it/PILibri/Home.aspx">libri</a> dove sono presenti anche altri testi oltre a quello che ho ricercato io. Sottolineo che per poter scaricare questi testi occorre registrarsi al sito. Buona lettura<br />
<a href="http://www.punto-informatico.it" title="fb6x_r1z77"><img class="aligncenter size-medium wp-image-1644" title="fb6x_r1z77" src="http://www.redsend.org/wp-content/uploads/2011/04/fb6x_r1z77-580x290.jpg" alt="" width="580" height="290" /></a></p>
<div class="shr-publisher-1636"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2011/04/14/punto-informatico-libri/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mobile UI Patterns</title>
		<link>http://www.redsend.org/2011/03/07/mobile-ui-patterns/</link>
		<comments>http://www.redsend.org/2011/03/07/mobile-ui-patterns/#comments</comments>
		<pubDate>Mon, 07 Mar 2011 00:00:43 +0000</pubDate>
		<dc:creator>redsend</dc:creator>
				<category><![CDATA[Appunti]]></category>
		<category><![CDATA[Nel web]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[patterns]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=1609</guid>
		<description><![CDATA[Ecco due siti da cui prendere ispirazione per il design di interfacce mobile. Utili soprattuto per confrontare i diversi approcci che hanno avuto applicazioni molto famose come facebook, twitter, groupon ecc a problematiche tipiche dei dispositivi mobili. http://mobile-patterns.com/ &#160; http://pttrns.com/]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Ecco due siti da cui prendere ispirazione per il design di interfacce mobile. Utili soprattuto per confrontare i diversi approcci che hanno avuto applicazioni molto famose come facebook, twitter, groupon ecc a problematiche tipiche dei dispositivi mobili.</p>
<p><strong>http://mobile-patterns.com/</strong></p>
<p><strong><a href="http://mobile-patterns.com" title="mobile-patterns"><img class="aligncenter size-medium wp-image-1611" title="mobile-patterns" src="http://www.redsend.org/wp-content/uploads/2011/03/mobile-patterns-580x378.png" alt="" width="580" height="378" /></a></strong></p>
<p>&nbsp;</p>
<p><strong>http://pttrns.com/</strong></p>
<p><strong><a href="http://pttrns.com/" title="pttrns140"><img class="aligncenter size-medium wp-image-1610" title="pttrns140" src="http://www.redsend.org/wp-content/uploads/2011/03/pttrns140-580x537.png" alt="" width="580" height="537" /></a><br />
</strong></p>
<p><strong><br />
</strong></p>
<div class="shr-publisher-1609"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2011/03/07/mobile-ui-patterns/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>7 plugin indispensabili di jQuery</title>
		<link>http://www.redsend.org/2011/02/02/7-plugin-indispensabili-di-jquery/</link>
		<comments>http://www.redsend.org/2011/02/02/7-plugin-indispensabili-di-jquery/#comments</comments>
		<pubDate>Wed, 02 Feb 2011 20:49:46 +0000</pubDate>
		<dc:creator>duplikey</dc:creator>
				<category><![CDATA[Appunti]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[scroll]]></category>
		<category><![CDATA[shadowbox]]></category>
		<category><![CDATA[splashscreen]]></category>
		<category><![CDATA[tipsy]]></category>
		<category><![CDATA[validate]]></category>
		<category><![CDATA[vticker]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=1567</guid>
		<description><![CDATA[Sulla falsariga del post sui plugin indispensabili per WordPress, vorrei segnalare quelli che sono i plugin indispensabili per jQuery. Quelli che ad ogni nuovo lavoro scarico, installo e configuro subito. In questa raccolta ce ne sono sette, se avete proposte e suggerimenti, fate pure! Validation Ogni volta che avviamo a che fare con un form web c&#8217;è il solito problema di validare e filtrare i dati che l&#8217;utente inserisce! Fare questa operazione a mano è [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Sulla falsariga del post sui <a href="http://www.redsend.org/2011/01/27/i-10-plugin-indispensabili-per-wordpress/" target="_blank">plugin indispensabili per WordPress</a>, vorrei segnalare quelli che sono i plugin indispensabili per jQuery. Quelli che ad ogni nuovo lavoro scarico, installo e configuro subito. In questa raccolta ce ne sono sette, se avete proposte e suggerimenti, fate pure!</p>
<p><strong>Validation<br />
</strong>Ogni volta che avviamo a che fare con un form web c&#8217;è il solito problema di validare e filtrare i dati che l&#8217;utente inserisce! Fare questa operazione a mano è noiosissimo, soprattutto quando le esigenze sono le classiche &#8220;questa è una mail&#8221;, &#8220;questo campo è di 5 caratteri&#8221;, ecc. Automatizzate questo processo con <a href="http://docs.jquery.com/Plugins/Validation" target="_blank">il plugin Validation</a> che utilizza una sua sintassi di definizione delle &#8220;regole&#8221; per ogni campo e offre tantissimi metodi di controllo. E&#8217; quasi certo che ogni vostra esigenza possa essere rappresentata con alcune delle opzioni di questo plugin. Una volta iniziato ad utilizzare non potrete più farne a meno! E&#8217; altamente configurabile e permette anche la personalizzazione dei messaggi di errore e del modo in cui vengono mostrati.</p>
<p><strong>ajaxForm</strong><br />
Questo plugin in coppia con il precedente trasformerà il vostro modo di utilizzare i form. In questo caso parliamo di un <a href="http://jquery.malsup.com/form/" target="_blank">plugin</a> per inviare un form tramite ajax senza, quindi, ricaricare la pagina. Potete fare questa operazione a mano ogni volta che le funzioni di jQuery ($.ajax, $.get, $.post) oppure scrivere due righe di codice con le quali definite il form da sottomettere tramite ajax. Anche in questo caso molte sono le opzioni a disposizione tra cui la possibilità di definire le callback, il  tipo di dati da ricevere in risposta, ecc. Un notevole risparmio di lavoro, anche in questo caso, per un&#8217;operazione spesso noiosa e ripetitiva.</p>
<p><span id="more-1567"></span></p>
<p><strong>ScrollTo</strong><br />
Se volete realizzare un qualsiasi tipo di box scrollabile questo è il <a href="http://flesler.blogspot.com/2007/10/jqueryscrollto.html" target="_blank">plugin</a> che fa per voi. Utile in caso di gallerie di immagini, per la realizzazione di news ticker o anche semplicemente per effettuare scroll armonico all&#8217;interno di lunghe pagine web. Una quantità elevatissima di opzioni e tantissimi tipi di scroll diversi: dai valori assoluti in px alle percentuali, da valori incrementali a specifici selettori jQuery. Date un&#8217;occhiata alla <a href="http://demos.flesler.com/jquery/scrollTo/" target="_blank">demo</a> per capirne la potenza.</p>
<p><strong>Splashscreen</strong><br />
Da qualche tempo, grazie alla apple, sono tornati di moda gli splashscreen: immagini a schermo intero che introducono un sito e che vengono mostrate nell&#8217;attesa che il sito venga completamente caricato. Il <a href="http://tutorialzine.com/2010/11/apple-style-splash-screen-jquery/" target="_blank">plugin</a> in questione non è presente sul sito di jQuery o come file js scaricabile direttamente ma potete trovarlo come codice di esempio in <a href="http://tutorialzine.com/2010/11/apple-style-splash-screen-jquery/" target="_blank">questo tutorial</a>. L&#8217;effetto finale è davvero notevole e può essere utile in caso di siti un po&#8217; pesantucci, nell&#8217;attesa che tutto il necessario sia caricato.</p>
<p><strong>vTicker</strong><br />
I news ticker sono diffusissimi. Piccoli box nei quali ci sono notizie che &#8220;ruotano&#8221; ad intervalli regolari, come si possono trovare sui maggiori siti di informazioni. Allo stesso modo esistono decine e decine di plugin che fanno questo lavoro ma, quello che preferisco e sicuramente <a href="http://plugins.jquery.com/project/vTicker" target="_blank">vTicker</a> perché molto leggero, configurabile e non invadente: basta infatti creare un elenco puntato e darlo in pasto a questo plugin per ricavarne fuori un ticker verticale.</p>
<p><strong>Shadowbox</strong><br />
Ha bisogno di presentazioni? Anche sull&#8217;<a href="http://www.redsend.org/2011/01/27/i-10-plugin-indispensabili-per-wordpress/" target="_blank">articolo riguardante i plugin di wordpress</a> ho segnalato come integrarlo nel proprio blog. In questo caso invece parlo del <a href="http://www.shadowbox-js.com/" target="_blank">plugin jQuery</a> vero e proprio. Shadowbox è probabilmente uno dei migliori sistemi di finestre modali presenti in giro. Anche in questo campo ci sono decine (se non centinaia) di plugin che fanno lo stesso lavoro. Shadowbox si distingue per la leggerezza, la compatibilità con i maggiori framework javascript (potete utilizzarlo anche con mootools, prototype, ecc)e la possibilità di inglobare diversi tipi di file e non solo html.</p>
<p><strong>Tipsy</strong><br />
Con le pagine super colorate, i mille gradienti e i tanti effetti fade presenti sui siti moderni, non possiamo accontentarci del tag<em> &lt;title&gt;</em> per dare suggerimenti ai nostri utenti. Ecco che arrivano in aiuto i tips: al passaggio del mouse su determinate parole, immagini, ecc., apparirà un box colorato e più accattivante, nel quale mostrare il vostro suggerimento (che non deve essere per forza solo testo). Il miglior plugin in circolazione a riguardo è <a href="http://onehackoranother.com/projects/jquery/tipsy/" target="_blank">tipsy</a>. Anche in questo caso tantissime opzioni configurabili: dalle solite callback ai tempi di fadeIn/fadeOut ma, più importante di tutte è sicuramente il sistema automatico di gravità che posiziona il suggerimento in maniera intelligente rispetto alla posizione del box.</p>
<p>Spero di aggiornare la lista in futuro se mi capiterà di utilizzare altri plugin che ritengo indispensabili. Nel frattempo invito voi a contribuire con suggerimenti nei commenti.</p>
<div class="shr-publisher-1567"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2011/02/02/7-plugin-indispensabili-di-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I 10 plugin indispensabili per wordpress</title>
		<link>http://www.redsend.org/2011/01/27/i-10-plugin-indispensabili-per-wordpress/</link>
		<comments>http://www.redsend.org/2011/01/27/i-10-plugin-indispensabili-per-wordpress/#comments</comments>
		<pubDate>Thu, 27 Jan 2011 21:19:47 +0000</pubDate>
		<dc:creator>duplikey</dc:creator>
				<category><![CDATA[Appunti]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[captcha]]></category>
		<category><![CDATA[chap]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[shadowbox]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=1534</guid>
		<description><![CDATA[Volevo condividere con voi quelli che, secondo me, sono i plugin di wordpress indispensabili per ogni blog. Ovviamente la lista è dettata dalla mia personale esperienza: sono quei plugin che installo ogni qual volta mi trovo di fronte ad una versione &#8220;vergine&#8221; di wordpress. Chap Secure Login Non potevo non iniziare col plugin del mio &#8220;compare&#8221; redsend. Lo trovate su questo blog o potete scaricarlo direttamente dal sito di wordpress. Indispensabile per la sicurezza della [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Volevo condividere con voi quelli che, secondo me, sono i plugin di wordpress indispensabili per ogni blog. Ovviamente la lista è dettata dalla mia personale esperienza: sono quei plugin che installo ogni qual volta mi trovo di fronte ad una versione &#8220;vergine&#8221; di wordpress.</p>
<p><strong>Chap Secure Login<br />
</strong>Non potevo non iniziare col plugin del mio &#8220;compare&#8221; redsend. Lo trovate <a href="http://www.redsend.org/chapsecurelogin/" target="_blank">su questo blog</a> o potete scaricarlo direttamente dal <a href="http://wordpress.org/extend/plugins/chap-secure-login/" target="_blank">sito di wordpress</a>.<br />
Indispensabile per la sicurezza della vostra password. Attraverso di esso la vostra password di accesso (e quella di tutti gli utenti iscritti al vostro blog) non viaggia in chiaro su canali non protetti. La comunicazione avviene, infatti, attraverso il protocollo <a href="http://it.wikipedia.org/wiki/CHAP" target="_blank">CHAP</a>. E&#8217; uno dei primi plugin che installo!</p>
<p><strong>Shadowbox JS<br />
</strong>Nel 2011 le foto che si aprono in una nuova pagina o, peggio ancora, nella pagina stessa del blog, sono inguardabili. Le finestre modali sono obbligatorie su ogni blog secondo me. Questo plugin è uno dei migliori in termini di leggerezza e compatibilità. Potete dare un&#8217;occhiata e scaricarlo <a href="http://sivel.net/wordpress/shadowbox-js/" target="_blank">dalla pagina ufficiale</a>.</p>
<p><span id="more-1534"></span><strong>Autoptimize<br />
</strong>L&#8217;ottimizzazione del proprio codice html, css e js è essenziale per velocizzare il caricamento delle pagine del proprio blog o sito web. A riguardo esistono decine di plugin. Uno dei migliori, secondo me, è <a href="http://wordpress.org/extend/plugins/autoptimize/" target="_blank">autoptimize</a>. La facilità di configurazione è il suo grande punto di forza. Pochissime opzioni tra cui scegliere e potete decidere cosa ottimizzare, se comprimere il codice, se metterlo su una sola riga, ecc. La differenza la noterete subito!</p>
<p><strong>Viper&#8217;s Video Quicktags</strong><br />
Con questo plugin avrete una barra aggiuntiva, nella pagina di scrittura dei post, attraverso la quale inserire facilmente i video da youtube, vimeo, google video e gli altri maggiori servizi di video streaming. Il tutto senza dover includere codice HTML o fare strani settaggi. Basta incollare il link del video e al resto pensa il plugin. Si scarica <a href="http://www.viper007bond.com/wordpress-plugins/vipers-video-quicktags/" target="_blank">qui</a>.</p>
<p><strong>WPtouch</strong><br />
Il miglior modo di avere una versione mobile del vostro blog è attraverso <a href="http://wordpress.org/extend/plugins/wptouch/" target="_blank">WPtouch</a>. Una volta installato non dovrete fare nient&#8217;altro. Appena visiterete il vostro blog da un dispositivo mobile, il plugin si occuperà di formattare la pagina in un formato diverso, pensato per il mobile. Oltre al cambio &#8220;estetico&#8221; vengono apportati anche alcuni cambi &#8220;funzionali&#8221; per permettere un accesso più facile ai contenuti.</p>
<p><strong>WP-Stats</strong><br />
Se siete amanti delle statistiche questo plugin non può mancare nella vostra installazione di wordpress. Potrete avere sottomano tutti i numeri del vostro blog: quantità di post, quantità di commenti, utenti più attivi, orari, numero di post per categoria, quantità di link pubblicati, ecc. Questo è il <a href="http://lesterchan.net/portfolio/programming/php/" target="_blank">sito ufficiale dell&#8217;autore</a>, dove trovate tanta altra roba interessante.</p>
<p><strong>WordPress Database Backup</strong><br />
Altro plugin indispensabile! Automatizzate il backup del database del vostro blog attraverso <a href="http://austinmatzko.com/wordpress-plugins/wp-db-backup/" target="_blank">WordPress Database Backup</a>. Potete decidere come e quando effettuare il backup, se salvarlo in locale o farvelo inviare via email, ecc. Indispensabile.</p>
<p><strong>SI CAPTCHA Anti-Spam</strong><br />
Se sul vostro blog permettete i commenti agli utenti non registrati allora avrete di sicuro affrontato il problema dello spam. Io di solito lascio perdere <a href="http://akismet.com/" target="_blank">akismet</a> e punto su un sistema di <a href="http://it.wikipedia.org/wiki/CAPTCHA" target="_blank">captcha</a>. Mentre con il primo, alcuni commenti di spam passano e, c&#8217;è sempre la necessità di un intervento manuale, con il captcha vi assicurate di evitare tutti i commenti automatici di BOT che trovano il vostro blog. Nel caso in cui stiamo parlando di un sito molto visitato allora la combinazione dei due plugin può essere l&#8217;ideale. Per scaricare SI CAPTCHA andate <a href="http://www.642weather.com/weather/scripts-wordpress-captcha.php" target="_blank">qui</a>.</p>
<p><strong>Google XML Sitemaps</strong><br />
Non penso ci sia da dire molto: per una migliore indicizzazione del vostro blog su google (e gli altri motori di ricerca) avete bisogno di realizzare una mappa XML di esso, una cosiddetta <a href="http://it.wikipedia.org/wiki/Sitemap" target="_blank">sitemap</a>. Con <a href="http://www.arnebrachhold.de/projects/wordpress-plugins/google-xml-sitemaps-generator/" target="_blank">questo plugin</a> la cosa avviene in automatico. Essenziale per il SEO.</p>
<p><strong>WP Super Cache</strong><br />
In accoppiata con Autoptimize, questo plugin renderà notevolmente più veloce il vostro blog. In particolare se utilizzate molte immagini, video e una struttura grafica molto pensate. Attraverso <a href="http://ocaoimh.ie/wp-super-cache/" target="_blank">WP Super Cache</a> potete decidere cosa cachare e avete una quantità elevata di opzioni per ottimizzare al meglio la vostra cache. Vi consiglio di usarlo con cautela e di fare molte prove per trovare la configurazione più adatta a voi.</p>
<p>Spero di non averne dimenticato nessuno. Ogni tanto magari aggiornerò l&#8217;articolo con qualche altro plugin interessante scovato in rete.</p>
<div class="shr-publisher-1534"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2011/01/27/i-10-plugin-indispensabili-per-wordpress/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>10 suggerimenti per programmatori PHP esperti (e non solo)</title>
		<link>http://www.redsend.org/2010/11/05/10-suggerimenti-per-programmatori-php-esperti-e-non-solo/</link>
		<comments>http://www.redsend.org/2010/11/05/10-suggerimenti-per-programmatori-php-esperti-e-non-solo/#comments</comments>
		<pubDate>Fri, 05 Nov 2010 11:17:40 +0000</pubDate>
		<dc:creator>duplikey</dc:creator>
				<category><![CDATA[Appunti]]></category>
		<category><![CDATA[Oggi ho letto]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[suggerimenti]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=1383</guid>
		<description><![CDATA[Oggi ho letto l&#8217;articolo &#8220;10 Intermediate and Advanced Tips from PHP Masters&#8220;. All&#8217;inizio avevo pensato semplicemente di segnalarlo sulla bacheca qui a lato, poi mi son reso conto che probabilmente sarebbe più utile una versione italiana dello stesso articolo. Questa non è una traduzione vera e propria. Ho preso spunto dall&#8217;articolo in questione mettendoci qualcoa di mio per far si che un elenco del genere possa essere utile non solo ai programmatori php ma a [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Oggi ho letto l&#8217;articolo &#8220;<a href="http://mashable.com/2010/11/03/advanced-php-tips/" target="_blank">10 Intermediate and Advanced Tips from PHP Masters</a>&#8220;. All&#8217;inizio avevo pensato semplicemente di segnalarlo sulla bacheca qui a lato, poi mi son reso conto che probabilmente sarebbe più utile una versione italiana dello stesso articolo.</p>
<p style="text-align: center;"><a href="http://www.redsend.org/wp-content/uploads/2010/11/php.jpeg" rel="shadowbox[sbpost-1383];player=img;" title="php"><img class="size-full wp-image-1408  aligncenter" title="php" src="http://www.redsend.org/wp-content/uploads/2010/11/php.jpeg" alt="" width="278" height="181" /></a></p>
<p>Questa non è una traduzione vera e propria. Ho preso spunto dall&#8217;articolo in questione mettendoci qualcoa di mio per far si che un elenco del genere possa essere utile non solo ai programmatori php ma a tutti coloro che fanno codice.</p>
<p><span id="more-1383"></span></p>
<h3>1. Tieniti aggiornato</h3>
<p>Essere aggiornati su cosa avviene nel mondo PHP può aiutarti ad essere uno sviluppatore migliore.<br />
Se continui a programmare allo stesso modo di sempre e non ti aggiorni sulle ultime release, cambi e news importanti, stai portando un disservizio a te e al tuo capo. Prenditi del tempo per testare nuove features e vedere cosa c&#8217;è di nuovo in giro. Abbonati ai podcast del settore, segui assiduamente i blog e, se hai tempo, contribuisci attivamente ad alcuni progetti opesource.<br />
Il programmatore, e più in generale l&#8217;informatico, deve essere sempre spinto dalla voglia di conoscere, di apprendere e di migliorarsi. Quando questo non avviene c&#8217;è qualcosa che non va. Se non riesci a mettere passione nel tuo lavoro, cambia lavoro.</p>
<h3>2. Interagisci col codice altrui</h3>
<p>Scarica progetti del quale è possibile vedere il sorgente e leggi, leggi, leggi tanto codice altrui. In questo modo puoi vedere come gli altri affrontano determinati problemi e trovare nuove idee per approcciarli.<br />
Ancora meglio se trovi qualcosa che non conosci e lo impari direttamente dal codice. Possono succedere due cose: o trovi nuove idee da applicare oppure vedi quali sono le tue idee che non funzionano. In entrambi i casi hai solo da guadagnare.<br />
Può essere utile utilizzare framework o cms esistenti e dare un&#8217;occhiata alla loro struttura. Si possono trovare interessanti idee anche su cose semplicissime come la nomenclatura dei file, la struttura delle cartelle, ecc. Altra cosa che aiuta molto è scaricare classi/librerie che risolvono in parte un proprio problema e provare ad adattare il codice alle proprie esigenze.</p>
<h3>3. Restituisci</h3>
<p>Quando eri un utente alle prime armi frequentavi blog, forum e community nei quali ponevi domande, leggevi documentazione e seguivi consigli. Se sei un utente più smaliziato passa dall&#8217;altro lato della barricata e contribuisci ad aiutare chi è alle prime armi. Puoi farlo in maniera più avanzata come partecipare alle conferenze del settore o, più semplicemente, scrivendo articoli per blog.<br />
Ci sono posti che fanno al caso tuo se non possiedi un blog, sistemi come <a href="http://www.stackoverflow.com" target="_blank">StackOverflow</a> sono il posto ideale sia per imparare che per aiutare gli altri. Prenditi un po&#8217; di tempo libero e rispondi a un paio di domande. Col passare del tempo ti accorgerai di come questo sta aiutando anche te.</p>
<h3>4. Chiedi</h3>
<p>Non vergognarti di chiedere. Il web, e non solo, è pieno di posti nei quali ci sono persone pronte a rispondere alle tue domande. Anche quando pensi che un quesito possa essere stupido. Questo è il modo col quale riuscirai di sicuro a imparare sempre cose nuove.<br />
Esempi di posti dove si possono fare domande e trovare interessanti soluzioni sono ad esempio: le stesse pagine di php.net (sotto ogni funzione ci sono decine di commenti degli utenti); i commenti sui blog del settore (dove a volte partono accese discussioni); i forum dei più importanti cms/framework; sistemi di Q&amp;A come StackOverflow; ecc.</p>
<h3>5. Aiuta chi è alle prime armi</h3>
<p>Gli sviluppatori che sono al primo, secondo progetto sono quelli che più hanno bisogno di aiuto. Se conosci persone del genere aiutale a compiere i primi passi. Gli utenti &#8220;intermedi&#8221; sono quelli che invece stanno iniziando ad approfondire il linguaggio, sono quelli che riescono a memorizzare meglio quello che imparano e il tuo apporto può essere fondamentale in questa fase.<br />
Puoi fare una cosa del genere non solo sul web ma anche nella vita reale: se hai amici che sviluppano in PHP e sono all&#8217;inizio mettiti accanto a loro durante lo sviluppo dei loro progetti. Guarda cosa fanno e aiutali a farlo meglio. Questo ti permette di non adagliarti sugli allori e diventare uno sviluppatore pigro.<br />
Suggerimento fondamentale, che non piace a molti, è questo: documenta sempre il tuo codice! Aiuterà te nel mantenimento del codice e chiunque dovrà leggerlo/modificarlo.<br />
Due suggerimenti miei personali sui commenti. Scrivi una riga di commento per ogni riga di codice tranne, ovviamente, nei casi in cui la sola riga di codice non è un&#8217;operazione finita. Scrivi prima il commento e poi il codice. Troppo spesso ci si ripete la frase &#8220;ora finisco questa classe e dopo, quando ho tempo, mi commento tutto&#8221;. Il tempo dopo non ci sarà! All&#8217;inizio obbligati a scrivere i commenti in questo modo. Dopo due mesi non ne potrai fare a meno.</p>
<h3>6. Semplifica</h3>
<p>Il codice deve sempre essere pulito, modulare e semplice. Attenzione a non astrarre troppo il proprio codice e renderlo ingestibile. Fai si che ogni classe (o funzione o pagina) sia facilmente testabile.<br />
Un consiglio che è sempre utile è quello di ricordare che una funzione dovrebbe fare una sola operazione. Se ti accorgi che all&#8217;interno di essa ci sono troppe operazioni, probabilmente dovresti dividerla in diverse funzioni.<br />
Scrivi le funzioni in modo che possano ricevere un input facilmente e che diano un output controllabile per far si che possano essere testate singolarmente anche fuori dal loro contesto.</p>
<h3>7. Usa dei tool</h3>
<p>La scelta dei tool da utilizzare è fondamentale. Innanzitutto un buon IDE permette di velocizzare una serie di operazioni ricorrenti come il testing, l&#8217;analisi del codice, il debug, ecc. Alcuni buoni IDE per PHP sono Eclipse, Netbeans, Aptana. Io personalmente consiglio quest&#8217;ultimo: gratuito e completo come nessuno dei concorrenti in giro, nemmeno quelli a pagamento.<br />
Non aver paura di fare <a href="http://it.wikipedia.org/wiki/Unit_test" target="_blank">unit test</a>. Non rimandare il test alla fine, effettualo man mano che le singole funzionalità sono pronte. Scrivi della documentazione ogni volta che conduci un test. Alla fine ti troverai del lavoro svolto e avrai risparmiato un sacco di tempo.</p>
<h3>8. Mantieni il tuo codice</h3>
<p>Mantenere il proprio codice permette di imparare dai propri errori. Fai piccole fasi di refactoring ma falle spesso.<br />
Periodicamente riapri i tuoi vecchi progetti. Ti accorgerai che sono pieni di errore e che hai usato 15 righe di codice per fare una cosa che si poteva fare in 2 righe. Riscrivi funzioni, riprogetta classi, migliora le prestazioni. Solo in questo modo riuscirai a renderti conto di quanto sei migliorato.</p>
<h3>9. Monitorizza il tuo codice</h3>
<p>Usa strumenti come <a href="http://getfirebug.com/" target="_blank">FireBug</a>, <a href="http://www.firephp.org/" target="_blank">FirePHP</a>, <a href="http://code.google.com/intl/it/speed/page-speed/" target="_blank">PageSpeed</a>. Sono degli addon di firefox che ti permettono di: controllare il tuo codice; trovare errori, analizzarne le prestazioni.<br />
Effettua il profiling del tuo codice attraverso strumenti come <a href="http://xdebug.org/" target="_blank">xdebug</a>. Controlla quali funzioni vengono chiamate più spesso e, se puoi, ottimizzale. Controlla chi chiama chi e controlla che il flusso sia corretto.<br />
(A breve un articolo su questo blog parlerò del profiling in php)<br />
Utilizza un sistema di log sulle tue applicazioni. Controlla cosa succede durante l&#8217;esecuzione di una tua applicazione e risolvi gli eventuali problemi segnalati. Scrivi i log in maniera facilmente comprensibile: in questo modo velocizzerai la fase di debug.<br />
Non ignorare gli altri linguaggi solo perché sei un fan di PHP. Ogni tanto prova un linguaggio diverso, un diverso database, un nuovo IDE. A volte le nuove tecnologie ti possono essere d&#8217;aiuto li dove php non lo è.</p>
<h3>10. Lavora con altri</h3>
<p>Non lavorare da solo. Osserva quello che fanno gli altri, sia sul web che da vivo. Se ci sono conferenze dalle tue parti, partecipa e discuti con altri. In questo modo potrai essere aggiornato su ciò che succede e vedere cosa c&#8217;è di interessante nei progetti altrui.<br />
Mantieni il tuo &#8220;hacker state of mind&#8221;. Quello che abbiamo detto al punto 1: devi essere curioso, devi avere voglia di imparare, di migliorare, di capire. Non usare alcuno strumento (framework, cms, libreria, ecc) senza averne capito prima il funzionamento.</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 497px; width: 1px; height: 1px; overflow: hidden;"><a href="http://www.stackoverflow.com/" target="_blank">StackOverflow</a></div>
<div class="shr-publisher-1383"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2010/11/05/10-suggerimenti-per-programmatori-php-esperti-e-non-solo/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Se Linux non supporta la vostra stampante&#8230;</title>
		<link>http://www.redsend.org/2010/10/10/se-linux-non-supporta-la-vostra-stampante/</link>
		<comments>http://www.redsend.org/2010/10/10/se-linux-non-supporta-la-vostra-stampante/#comments</comments>
		<pubDate>Sun, 10 Oct 2010 16:10:50 +0000</pubDate>
		<dc:creator>deepred</dc:creator>
				<category><![CDATA[Appunti]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[printer]]></category>
		<category><![CDATA[winp]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=1363</guid>
		<description><![CDATA[Considerate il seguente problema: avete una stampante non supportata da linux, ma nella vostra rete locale avete un sistema windows su cui la stampante può essere installata. Se tentate di condividere la stampante attraverso Samba, essa risulterà comunque non utilizzabile, dato che saranno necessari gli inesistenti driver linux. È proprio impossibile usare la stampante dalla vostra macchina Linux? La risposta è no e all&#8217;indirizzo http://justin.yackoski.name/winp/ trovate una veramente ottima guida (in inglese) per riuscire nel [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Considerate il seguente problema: avete una stampante non supportata da linux, ma nella vostra rete locale avete un sistema windows su cui la stampante può essere installata. Se tentate di condividere la stampante attraverso Samba, essa risulterà comunque non utilizzabile, dato che saranno necessari gli inesistenti driver linux. È proprio impossibile usare la stampante dalla vostra macchina Linux?</p>
<p>La risposta è no e all&#8217;indirizzo <a href="http://justin.yackoski.name/winp/" target="_blank">http://justin.yackoski.name/winp/</a> trovate una veramente ottima guida (in inglese) per riuscire nel vostro intento.</p>
<div class="shr-publisher-1363"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2010/10/10/se-linux-non-supporta-la-vostra-stampante/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Per ricordarmi di Lost</title>
		<link>http://www.redsend.org/2010/05/24/per-ricordarmi-di-lost/</link>
		<comments>http://www.redsend.org/2010/05/24/per-ricordarmi-di-lost/#comments</comments>
		<pubDate>Mon, 24 May 2010 17:30:32 +0000</pubDate>
		<dc:creator>redsend</dc:creator>
				<category><![CDATA[Appunti]]></category>
		<category><![CDATA[lost]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=1201</guid>
		<description><![CDATA[Un inutile post per ricordare la fine del Telefilm più bello di tutti i tempi: Grazie agli autori e a tutti quelli che hanno lavorato per produrre questo capolavoro. Mi mancherà&#8230;]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Un inutile post per ricordare la fine del Telefilm più bello di tutti i tempi:</p>
<p style="text-align: center;"><a href="http://www.redsend.org/wp-content/uploads/2010/05/Eyes_-_JackPilot.jpg" rel="shadowbox[sbpost-1201];player=img;" title="Eyes_-_JackPilot"><img class="alignnone size-medium wp-image-1202" title="Eyes_-_JackPilot" src="http://www.redsend.org/wp-content/uploads/2010/05/Eyes_-_JackPilot-580x319.jpg" alt="" width="580" height="319" /></a></p>
<p>Grazie agli autori e a tutti quelli che hanno lavorato per produrre questo capolavoro. Mi mancherà&#8230;</p>
<div class="shr-publisher-1201"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2010/05/24/per-ricordarmi-di-lost/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unire i PDF con Anteprima in Leopard</title>
		<link>http://www.redsend.org/2010/05/19/unire-i-pdf-con-anteprima-in-leopard/</link>
		<comments>http://www.redsend.org/2010/05/19/unire-i-pdf-con-anteprima-in-leopard/#comments</comments>
		<pubDate>Wed, 19 May 2010 11:36:18 +0000</pubDate>
		<dc:creator>redsend</dc:creator>
				<category><![CDATA[Appunti]]></category>
		<category><![CDATA[macOS]]></category>
		<category><![CDATA[pdf]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=1167</guid>
		<description><![CDATA[Un piccolo appunto preso e copiato da quì :) Con la nuova versione di Anteprima inclusa in Mac OS X Leopard è possibile unire più PDF in un singolo file con un semplice drag and drop. E’ sufficiente seguire questa procedura: aprire i due, o più, file PDF con Anteprima per ciascun PDF, selezionare Vista/Barra laterale, quindi scegliere Miniature dal menu a comparsa nella parte inferiore della barra laterale. selezionare una o più pagina da un PDF (anche tutte, cliccando [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Un piccolo appunto preso e copiato da <a href="http://blog.computime.it/2007/11/09/tip-unire-piu-pdf-con-anteprima-di-leopard/" target="_blank">quì</a> :)</p>
<p>Con la nuova versione di <strong>Anteprima</strong> inclusa in Mac OS X Leopard è possibile unire più <em><strong>PDF</strong></em> in un singolo file con un semplice <em>drag and drop</em>. E’ sufficiente seguire questa procedura:</p>
<ol>
<li>aprire i due, o più, file PDF con Anteprima</li>
<li>per ciascun PDF, selezionare Vista/Barra laterale, quindi scegliere Miniature dal menu a comparsa nella parte inferiore della barra laterale.</li>
<li>selezionare una o più pagina da un PDF (anche tutte, cliccando su una pagina e premendo mela+A)</li>
<li>trascinare le pagine selezionate nell’altro PDF</li>
</ol>
<p>Le pagine verranno copiate dal primo PDF al secondo, senza rimuoverle.</p>
<div class="shr-publisher-1167"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2010/05/19/unire-i-pdf-con-anteprima-in-leopard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Identità multiple in Mail</title>
		<link>http://www.redsend.org/2010/05/13/identita-multiple-in-mail/</link>
		<comments>http://www.redsend.org/2010/05/13/identita-multiple-in-mail/#comments</comments>
		<pubDate>Thu, 13 May 2010 13:15:52 +0000</pubDate>
		<dc:creator>redsend</dc:creator>
				<category><![CDATA[Appunti]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[macOS]]></category>
		<category><![CDATA[mail]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=1154</guid>
		<description><![CDATA[Senza inutili introduzioni ecco come configurare Mail per poter inviare, dallo stesso account smtp, messaggi con un mittente differente da quello collegato direttamente all&#8217;account utilizzato. Mi rendo conto che forse ho fatto un giro di parole non si capisce niente, mi spiego con un esempio: account Gmail pippo@gmail.com (mi scusi il signor pippo se diffondo il suo indirizzo in giro per il web ma non è colpa mia se è sfortunato come il Sig. Mario [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Senza inutili introduzioni ecco come configurare Mail per poter inviare, dallo stesso account smtp, messaggi con un mittente differente da quello collegato direttamente all&#8217;account utilizzato. Mi rendo conto che forse ho fatto un giro di parole  non si capisce niente, mi spiego con un esempio: account Gmail pippo@gmail.com (mi scusi il signor pippo se diffondo il suo indirizzo in giro per il web ma non è colpa mia se è sfortunato come il Sig. Mario Rossi), tra le diverse mail in mio possesso c&#8217;è quella della società per cui lavoro, pippo@apple.com, confluisce tutto su gmail per non dover controllare mille account ma voglio rispondere alle mail che arrivano a pippo@apple.com da Mail, tramite l&#8217;smtp di gmail, e voglio che le email che invio abbiano come indirizzo mittente pippo@apple.com.</p>
<p>Bene dopo esservi annoiati e aver constatato che non avete capito niente guardate le figure&#8230;</p>
<p><span id="more-1154"></span></p>
<p>Ecco cosa comparirà magicamente:</p>
<p style="text-align: center;"><a href="http://www.redsend.org/wp-content/uploads/2010/05/indentita-multiple-mail-1.png" rel="shadowbox[sbpost-1154];player=img;" title="indentita multiple="><img class="alignnone size-medium wp-image-1158" title="indentita multiple=" src="http://www.redsend.org/wp-content/uploads/2010/05/indentita-multiple-mail-1-580x323.png" alt="" width="580" height="323" /></a></p>
<p style="text-align: center;">
<p>da qui potete specificare l&#8217;indirizzo da far comparire come mittente dell&#8217;email:</p>
<p style="text-align: center;"><a href="http://www.redsend.org/wp-content/uploads/2010/05/indentita-multiple-mail-2.png" rel="shadowbox[sbpost-1154];player=img;" title="indentita multiple="><img class="alignnone size-full wp-image-1159" title="indentita multiple=" src="http://www.redsend.org/wp-content/uploads/2010/05/indentita-multiple-mail-2.png" alt="" width="393" height="206" /></a></p>
<p style="text-align: center;">
<p style="text-align: center;">
<p>il tutto si ottiene inserendo nelle impostazioni dell&#8217;account configurato più indirizzi email separati da virgola. Ricordatevi che il vostro server smtp potrebbe impedirvi di inviare email da un altro indirizzo diverso da quello dell&#8217;account, come nel caso di gmail. Fortunatamente gmail offre un modo per aggiungere diversi indirizzi email con cui inviare la posta. Altrimenti dovete cercarvi qualche server che non effettua questo controllo.</p>
<p style="text-align: center;"><a href="http://www.redsend.org/wp-content/uploads/2010/05/indentita-multiple-mail-config.png" rel="shadowbox[sbpost-1154];player=img;" title="indentita multiple="><img class="alignnone size-medium wp-image-1160" title="indentita multiple=" src="http://www.redsend.org/wp-content/uploads/2010/05/indentita-multiple-mail-config-580x507.png" alt="" width="580" height="507" /></a></p>
<p style="text-align: center;">
<div class="shr-publisher-1154"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2010/05/13/identita-multiple-in-mail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eliminare l&#8217;outline sui bottoni in Firefox</title>
		<link>http://www.redsend.org/2010/04/20/eliminare-loutline-sui-bottoni-in-firefox/</link>
		<comments>http://www.redsend.org/2010/04/20/eliminare-loutline-sui-bottoni-in-firefox/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 15:12:08 +0000</pubDate>
		<dc:creator>redsend</dc:creator>
				<category><![CDATA[Appunti]]></category>
		<category><![CDATA[border]]></category>
		<category><![CDATA[bordo]]></category>
		<category><![CDATA[bottone]]></category>
		<category><![CDATA[button]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[outline]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=1124</guid>
		<description><![CDATA[Cos&#8217;è l&#8217;outline su un bottone? Me lo sono chiesto anche io appena ho letto la parola &#8220;outline&#8221;. L&#8217;outline è quel bordo che il browser aggiunge quando viene fatto il focus di un elemento. In particolare viene utilizzato per evidenziare gli elementi di una pagina quando si naviga con il con la tastiera, utilizzando il tab per spostarsi sui vari link. L&#8217;outline viene utilizzato per l&#8217;accessibilità di un sito ed è molto importante per chi usa [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><strong>Cos&#8217;è l&#8217;outline su un bottone?</strong></p>
<p>Me lo sono chiesto anche io appena ho letto la parola &#8220;outline&#8221;. L&#8217;outline è quel bordo che il browser aggiunge quando viene fatto il focus di un elemento. In particolare viene utilizzato per evidenziare gli elementi di una pagina quando si naviga con il con la tastiera, utilizzando il tab per spostarsi sui vari link.</p>
<p>L&#8217;outline viene utilizzato per l&#8217;accessibilità di un sito ed è molto importante per chi usa navigare nella pagina tramite tastiera (con il TAB ad esempio). Se qualcuno ancora non ha capito cosa sia ecco vi un esempio:</p>
<p style="text-align: center;"><a href="http://www.redsend.org/wp-content/uploads/2010/04/outline-border.png" rel="shadowbox[sbpost-1124];player=img;" title="outline border"><img class="alignnone size-full wp-image-1125" title="outline border" src="http://www.redsend.org/wp-content/uploads/2010/04/outline-border.png" alt="" width="259" height="83" /></a></p>
<p style="text-align: left;">lo vedete quel bordino attorno? Io l&#8217;ho odiato per tanto tempo, finché non sono riuscito ad eliminarlo :)</p>
<p style="text-align: left;"><span id="more-1124"></span></p>
<p style="text-align: left;">Senza perderci in chiacchiere inutili, a volte potrebbe esserci l&#8217;esigenza di personalizzarlo, come nel mio caso. Se provando a cercare su internet e avete trovato questa riga di css da inserire:</p>
<p style="text-align: left;"><strong>*:focus,*:active,*:hover { outline:none; }</strong></p>
<p style="text-align: left;">sappiate che su Firefox non funzionerà, o almeno verrete ignorati. Non so&#8217; per quale motivo, ma fino ad ora ho sempre cercato di evitare di utilizzare bottoni proprio per questo motivo. Oggi scopro che una soluzione c&#8217;è! Inserendo questa magica riga il problema si risolverà:</p>
<p style="text-align: left;"><strong>button::-moz-focus-inner { border: 0; }</strong></p>
<p style="text-align: left;">Sto ancora chiedendomi che selettore è i due due punti, fino ad ora non lo avevo mai visto. Intuitivamente sembra un selettore come &#8220;:before&#8221; o &#8220;:hover&#8221; ma viene utilizzata una funzione offerta dal browser che sembra definire il CSS da applicare nel momento in cui viene effettuato il focus su un elemento. Sto cercando maggiori informazioni a riguardo.</p>
<p style="text-align: left;">In tutti i casi con la riga CSS di cui sopra risolviamo il problema del fastidiosissimo bordo quando un bottone viene selezionato. E&#8217; inutile dirvi che potete selezionare in maniera più accurata gli elementi a cui applicare la regola (ad esempio sostituedo a button una classe specifica) e quindi continuare a mantenere l&#8217;accessibilità della pagina sugli altri elementi.</p>
<div class="shr-publisher-1124"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2010/04/20/eliminare-loutline-sui-bottoni-in-firefox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pulire una directory dalle informazioni del repository SVN</title>
		<link>http://www.redsend.org/2010/04/19/pulire-una-directory-dalle-informazioni-del-repository-svn/</link>
		<comments>http://www.redsend.org/2010/04/19/pulire-una-directory-dalle-informazioni-del-repository-svn/#comments</comments>
		<pubDate>Mon, 19 Apr 2010 19:15:09 +0000</pubDate>
		<dc:creator>redsend</dc:creator>
				<category><![CDATA[Appunti]]></category>
		<category><![CDATA[find]]></category>
		<category><![CDATA[pulire]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=1122</guid>
		<description><![CDATA[Scrivo questo piccolo articolo per appuntarmi un semplicissimo comando bash, ma che puntualmente ogni volta che mi serve me lo dimentico. Questa volta però non mi farò fregare, prima di dimenticarlo è meglio che lo scrivo&#8230; Se vi state chiedendo quando è necessario pulire una directory dalle informazioni del repository SVN, la risposta è MAI. Solo nel caso in cui dovete giocherellare con la struttura tra diversi repository, perché state cambiando server o state spostando [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Scrivo questo piccolo articolo per appuntarmi un semplicissimo comando bash, ma che puntualmente ogni volta che mi serve me lo dimentico. Questa volta però non mi farò fregare, prima di dimenticarlo è meglio che lo scrivo&#8230;</p>
<p>Se vi state chiedendo quando è necessario pulire una directory dalle informazioni del repository SVN, la risposta è <strong>MAI.</strong> Solo nel caso in cui dovete giocherellare con la struttura tra diversi repository, perché state cambiando server o state spostando il vecchio repository ad un nuovo indirizzo, allora avete la necessità di ripulire il vostro progetto da tutti i file che il vecchio repository ha inserito. Questa operazione è necessaria perché se dovete spostare, ad esempio, la cartella &#8220;trunk&#8221; del vostro progetto, il nuovo repository storcerà il naso trovando già delle informazioni all&#8217;interno che non provengono da lui.</p>
<p>Attenzione però, questa operazione vi farà perdere tutta la vostra history del progetto e quindi partirete da zero, niente più vecchie versioni, commenti, ecc&#8230; andrà tutto perso!</p>
<p>Ora che siete coscienti di quello che state per fare, posizionatevi nella directory da pulire ed eseguite (nella shell ovviamente) questo comando:</p>
<pre class="python" name="code">find . -iname ".svn" -type d -exec rm -rf {} \;</pre>
<p>ecco fatto! Sono sicuro che la prossima volta che mi servirà lo ricorderò e renderà questo appunto inutile, spero che possa servire a qualcun&#8217;altro.</p>
<div class="shr-publisher-1122"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2010/04/19/pulire-una-directory-dalle-informazioni-del-repository-svn/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Il processo creativo delle meraviglie apple</title>
		<link>http://www.redsend.org/2010/03/07/il-processo-creativo-delle-meraviglie-apple/</link>
		<comments>http://www.redsend.org/2010/03/07/il-processo-creativo-delle-meraviglie-apple/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 17:04:09 +0000</pubDate>
		<dc:creator>redsend</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Appunti]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=1105</guid>
		<description><![CDATA[Non so&#8217; se sarà un articolo vecchio e quindi già noto a tutti, ma proprio oggi mi è capitato di leggerlo e lo trovo molto interessante. Perché i programmi Apple sono meglio disegnati della media e spesso offrono una soluzione originale ai problemi? Un esperto programmatore di Cupertino svela alcuni segreti su sviluppo e progettazione secondo Steve. Michael Lopp, Senior Engineering Manager di Apple svela alcune procedure interne al team di sviluppo che gettano un [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Non so&#8217; se sarà un articolo vecchio e quindi già noto a tutti, ma proprio oggi mi è capitato di leggerlo e lo trovo molto interessante.</p>
<p>Perché i programmi Apple sono meglio disegnati della media e spesso offrono una soluzione originale ai problemi? Un esperto programmatore di Cupertino svela alcuni segreti su sviluppo e progettazione secondo Steve.</p>
<p style="text-align: center;"><a href="http://www.redsend.org/wp-content/uploads/2010/03/apple.jpg" rel="shadowbox[sbpost-1105];player=img;" title="apple"><img class="alignnone size-full wp-image-1106" title="apple" src="http://www.redsend.org/wp-content/uploads/2010/03/apple.jpg" alt="" width="264" height="264" /></a></p>
<p><span id="more-1105"></span></p>
<div id="_mcePaste">Michael Lopp, Senior Engineering Manager di Apple svela alcune procedure interne al team di sviluppo che gettano un po&#8217; di luce sui segreti di Cupertino. Le interessanti dichiarazioni di Lopp sono state raccolte da Business Week durante la conferenza SXSW dove partecipanti e relatori discutono di sviluppo software senza formalità e in tono amichevole Il primo dettaglio curioso che emerge è la spiegazione tecnica dell&#8217;effetto Apple che si genera ogni qual volta un cliente ha per le mani un nuovo prodotto di Cupertino.</div>
<div id="_mcePaste">Inizialmente Lopp descrive la procedura come una sequenza di regali o sorprese offerte al consumatore finale, dopo di che il manager di Apple spiega il procedimento come: &#8220;Ottime idee impacchettate all&#8217;interno di altre ottime idee&#8221; che tradotto in termini pratici significa grandi programmi che funzionano in un hardware favoloso consegnato in una confezione bellissima. Questa spiegazione illustra in termini via a via più precisi l&#8217;effetto dell&#8217;unboxing che ormai è diventato una consuetudine tra gli utenti Apple che per primi riescono a mattere le mani sui nuovi prodotti.</div>
<div id="_mcePaste">Il rito dello spacchettamento, dell&#8217;apertura della confezione e del centellinare uno a uno tutto il contenuto della scatola. Non è finita. Michael Lopp è un esperto di sviluppo software e durante il suo intervento alla conferenza si è concentrato sulle procedure e i metodi di lavoro seguiti da Apple. Prima 10, poi 3 e alla fine una sola valida Il primo aspetto che emerge è la creazione di mockup perfetti in ogni minimo dettaglio: si tratta di modellini che rappresentano l&#8217;aspetto dell&#8217;interfaccia e le sue meccaniche di funzionamento.</div>
<div>A differenza della maggior parte delle altre aziende in cui vengono creati numerosi modellini diversi ma tutti elementari, Apple ne crea soltanto 10 ma perfetti in ogni loro parte. Lopp afferma che si tratta di una procedura che inizialmente richiede una quantità enorme di tempo ma in grado di eliminare qualsiasi ambiguità successivamente. Nelle fasi seguenti infatti non occorre correggere errori.</div>
<div>I designer di Apple costruiscono così 10 soluzioni diverse in modelli perfetti e completi per ogni nuova caratteristica, diversamente dalle altre società in cui solitamente si parte da 7 mockup per selezionarne poi 3. A Cupertino si parte da 10 modelli senza nessun limite per lo sviluppo e la progettazione, dopo di che ne vengono selezionati 3 su cui vengono investiti altri mesi di sviluppo. Alla fine emerge una unica forte decisione Le riunioni agli antipodi Ogni settimana i gruppi di sviluppo fanno due riunioni diverse. Durante la prima tutti dimenticano i limiti delle tecnologie e progettazione, pensano in assoluta libertà ai progetti che potrebbero funzionare, non importa se all&#8217;inizio possano sembrare impratici o infattibili. Nella seconda riunione invece gli stessi gruppi di lavoro devono determinare come un progetto preciso possa essere trasformato in prodotto: a tutti è richiesto di concentrarsi sullo sviluppo concreto. Questa procedura di riunioni antitetiche continua attraverso tutte le fasi dello sviluppo per qualsiasi applicazione, anche se le parti &#8220;serie e pratiche&#8221; prendono il sopravvento man mano che il progetto avanza. Le pony-riunioni In questi altri incontri la dirigenza evidenzia i desideri e gli obiettivi per un determinato prodotto, non importa quanto siano realizzabili da parte degli sviluppatori. Lopp descrive con toni affabili la procedura: in queste riunioni i dirigenti sembrano richiedere l&#8217;impossibile agli sviluppatori così l&#8217;esperto programmatore di Apple ci scherza su: &#8220;Voglio WYSIWYG&#8230; voglio il supporto dei principali browser&#8230;. voglio che rifletta lo spirito della compagnia&#8230;o&#8230;io voglio un pony! Perché no? Un pony è bellissimo! &#8221; Si tratta dei responsabili che alla fine firmano gli assegni quindi, se non fosse per altre ragioni, Lopp ritiene che meritano di essere ascoltati o per lo meno non ignorati. Nonostante i toni scherzosi e informali di Lopp, la procedura e le pony riunioni sembrano avere un certa utilità. Durante gli incontri i responsabili di alto livello possono apprendere cosa è possibile realizzare in ogni fase dello sviluppo. In questo modo i dirigenti evitano qualsiasi disastro di lungo termine inoltre riescono a ottenere le funzioni o le caratteristiche che tanto desideravano, i pony appunto. Il concetto delle sorprese e dei regali confezionati uno dentro all&#8217;altro, la modalità di sviluppo dei modelli, infine le riunioni antitetiche e gli incontri pony. Questa procedura di lavoro sembra riuscire nell&#8217;intento di Apple: includere sempre il fattore fantasia, l&#8217;aspetto creativo da cui in molti casi nascono i prodotti innovativi di Cupertino.</div>
<div></div>
<div></div>
<div><strong>Fonte</strong>: <a href="http://www.macitynet.it/macity/aA31476/processo_creativo_delle_meraviglie_apple_come_lavora_cupertino.shtml" target="_blank">Macity</a></div>
<div class="shr-publisher-1105"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2010/03/07/il-processo-creativo-delle-meraviglie-apple/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Come fare caching di immagini con jquery</title>
		<link>http://www.redsend.org/2010/01/13/come-fare-caching-di-immagini-con-jquery/</link>
		<comments>http://www.redsend.org/2010/01/13/come-fare-caching-di-immagini-con-jquery/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 08:49:38 +0000</pubDate>
		<dc:creator>duplikey</dc:creator>
				<category><![CDATA[Appunti]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[immagini]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[load]]></category>

		<guid isPermaLink="false">http://www.redsend.org/?p=1092</guid>
		<description><![CDATA[In giro per la rete è pieno di tutorial su come si possano cachare le immagini utilizzando javascript. Nessuno dei tutorial che ho letto in questi giorni però prende in considerazione il fatto che nel frattempo javascript e il web si siano evoluti e che quindi, con l&#8217;utilizzo di ajax, spesso si visualizzano porzioni di pagina, precedentemente visualizzate, senza effettuare il reload della pagina. Perché questa introduzione? Perché proprio il caso sopra citato manda a [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>In giro per la rete è pieno di tutorial su come si possano cachare le immagini utilizzando javascript. Nessuno dei tutorial che ho letto in questi giorni però prende in considerazione il fatto che nel frattempo javascript e il web si siano evoluti e che quindi, con l&#8217;utilizzo di ajax, spesso si visualizzano porzioni di pagina, precedentemente visualizzate, senza effettuare il reload della pagina.</p>
<p>Perché questa introduzione? Perché proprio il caso sopra citato manda a farsi friggere tutti i metodi di caching classici.</p>
<p>Vediamo quindi come sfruttare jquery e il metodo load per generare un evento <strong>ogni</strong> volta che una immagine viene visualizzata.</p>
<pre name="code" class="javascript">
(function($) {
var cache = [];
$.preLoadImages = function() {
var args_len = arguments.length;
for (var i = args_len; i--;) {
var cacheImage = document.createElement('img');
cacheImage.src = arguments[i];
cache.push(cacheImage);
}
}
})(jQuery)</pre>
<p>Con questa prima funzione iniziamo la procedura di cache delle immagini. E&#8217; importante notare che la variabile cache sia globale, questo permette che il garbage collection di alcuni browser non cancellino le variabili non utilizzate.</p>
<pre name="code" class="javascript">
$("#loader").fadeIn();
var imgsNumber = 0;
$("#container img").each(function(){
jQuery.preLoadImages(this.src);
var img = new Image();
$(img).load(function(){
imgsNumber++;
if(imgsNumber == $("#container img").length){
imgsNumber = 0;
$("#loader").fadeOut("slow", function(){
$("#container").css("visibility", "visible").fadeIn();
});
}
}).attr("src",this.src);
});</pre>
<p>Questa funzione è un po&#8217; più complessa e funziona in questo modo:</p>
<ul>
<li>mostra un loader (ovviamente il div #loader va sostituito con il vostro div);</li>
<li>imgsNumber conta il numero di immagini caricate (è essenziale per sapere quando sono tutte caricate);</li>
<li>il pezzo di codice successivo invece scorre tutte le immagini nel blocco #container e per ognuna di esse creiamo un oggeto img al quale assegniamo l&#8217;immagine. Questo è il <strong>passo essenziale</strong> per risolvere il problema di cui sopra visto che, in questo modo l&#8217;evento load verrà generato anche se l&#8217;immagine è già in cache. In questo modo si riesce a contare il numero di immagini caricate e mostrarle quando sono tutte pronte;</li>
<li>la parte finale (fadeOut e css) si occupano proprio di nascondere il loader e mostrare il div in questione;</li>
<li>la chiamata alla funzione attr si occupa infine di assegnare il path dell&#8217;immagine all&#8217;oggetto img temporaneamente creato.</li>
</ul>
<p>Questo è quanto. Se avete dubbi chiedete nei commenti.</p>
<div class="shr-publisher-1092"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.redsend.org/2010/01/13/come-fare-caching-di-immagini-con-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

