<?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>Simone Carletti&#039;s Blog &#187; Programmazione</title>
	<atom:link href="http://www.simonecarletti.it/blog/categories/programmazione/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.simonecarletti.it/blog</link>
	<description>Un piccolo spazio nel web con approfondimenti su programmazione, feed, motori di ricerca e marketing.</description>
	<lastBuildDate>Mon, 03 Oct 2011 14:40:00 +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>Libri Ruby on Rails in italiano</title>
		<link>http://www.simonecarletti.it/blog/2011/02/libri-ruby-on-rails-in-italiano/</link>
		<comments>http://www.simonecarletti.it/blog/2011/02/libri-ruby-on-rails-in-italiano/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 14:46:30 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Libri]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.it/blog/?p=3391</guid>
		<description><![CDATA[Alcuni suggerimenti per chi sta cercando un libro in italiano per imparare Ruby on Rails.]]></description>
			<content:encoded><![CDATA[<p>Analizzando le statistiche di accesso a questo blog ho scoperto che moltissimi utenti sono alla ricerca di <strong>libri su Ruby e Ruby on Rails in italiano</strong>.</p>
<p>Non è quindi un caso che tra le pagine più viste ci sia la recensione del libro <a href="http://www.simonecarletti.it/blog/2009/02/libro-ruby-cookbook/">Ruby Cookbook con elementi di Rails</a>. Tuttavia, come scritto nel mio post, <strong>quel libro non è un libro per imparare Rails</strong>, bensì una collezione di ricette per alcuni problemi comuni.</p>
<p>In realtà, cari utenti, mettetevi il cuore in pace: <strong>non esiste un libro in italiano completo ed aggiornato per imparare Ruby on Rails</strong>. Il framework è in continuo e costante sviluppo ed i libri italiani sono spesso traduzioni datate di edizioni in inglese.</p>
<p>Se volete imparare Ruby on Rails, vi consiglio il libro <a href="http://www.simonecarletti.it/blog/2007/11/libro-agile-web-development-with-rails/">Agile Development with Rails</a> — di cui è uscito da poco una nuova edizione aggiornata all&#8217;ultima versione di Rails — oppure <a href="http://www.simonecarletti.it/blog/out/amzit-railsway">The Rails Way</a> — se preferite un approccio meno learn by example.</p>
<p class="textcenter"><a href="http://www.simonecarletti.it/blog/out/amzit-railsway"><img class="size-medium" title="Libro The Rails 3 Way" src="http://share.weppos.net/simonecarletti/book-addison-rails3way-20110817-213302.png" alt="Libro The Rails 3 Way" height="250" /></a> <a href="http://www.simonecarletti.it/blog/out/amzit-pragrails"><img class="size-medium" title="Libro Agile Development with Rails 4" src="http://share.weppos.net/simonecarletti/book-pragprog-rails4-20110817-213625.png" alt="Libro Agile Development with Rails 4" height="250" /></a></p>
<p>Entrambi i libri sono in inglese ma avrete la certezza di studiare con un&#8217;edizione aggiornata all&#8217;ultima versione di Rails.<span id="more-3391"></span></p>
<div id="kindle-reader">
<h3>Kindle Preview</h3>
</div>
<p><script type="text/javascript" src="http://kindleweb.s3.amazonaws.com/app/KindleReader-min.js"></script><script type="text/javascript">// <![CDATA[
                         KindleReader.LoadSample({containerID: 'kindle-reader', asin: 'B004G606IK', width: '600', height: '606', assoctag: 'simonecarletti-20'});
// ]]&gt;</script></p>
<p>Related posts:<ol>
<li><a href='http://www.simonecarletti.it/blog/2009/02/libro-ruby-cookbook/' rel='bookmark' title='Libro Ruby Cookbook con elementi di Rails'>Libro Ruby Cookbook con elementi di Rails</a></li>
<li><a href='http://www.simonecarletti.it/blog/2007/11/libro-agile-web-development-with-rails/' rel='bookmark' title='Libro Agile Web Development with Rails 3'>Libro Agile Web Development with Rails 3</a></li>
<li><a href='http://www.simonecarletti.it/blog/2006/09/hosting-gratuito-per-ruby-on-rails/' rel='bookmark' title='Hosting gratuito per Ruby on Rails'>Hosting gratuito per Ruby on Rails</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.it/blog/2011/02/libri-ruby-on-rails-in-italiano/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Le novità di Ruby 1.9 (screencast)</title>
		<link>http://www.simonecarletti.it/blog/2010/02/le-novita-di-ruby-1-9-screencast/</link>
		<comments>http://www.simonecarletti.it/blog/2010/02/le-novita-di-ruby-1-9-screencast/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 11:59:57 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby1.9]]></category>
		<category><![CDATA[screencasts]]></category>
		<category><![CDATA[thinkcode]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.it/blog/?p=3132</guid>
		<description><![CDATA[E' disponibile nel catalogo italiano di ThinkCode.tv uno screencast dedicato alle novità introdotte con Ruby 1.9.]]></description>
			<content:encoded><![CDATA[<p><a href="http://it.thinkcode.tv/"><img class="alignleft size-full wp-image-3133" title="thinkcode-logo" src="http://www.simonecarletti.it/blog/wp-content/uploads/2010/02/thinkcode-logo.png" alt="" width="100" height="35" /></a>Da qualche giorno è disponibile nel catalogo italiano di ThinkCode.tv uno screencast dedicato alle <a title="Le novità di Ruby 1.9 - Screencast e video corsi di programmazione" href="http://it.thinkcode.tv/catalogo/novita-ruby19/">novità introdotte con Ruby 1.9</a>.</p>
<p>Il formato dello screencast è &#8220;pillola&#8221;. Questo significa che si tratta di un video a lunghezza ridotta, da una ventina di minuti.<br />
Nel video, realizzato a due mani da Antonio Cangiano e Carlo Pecchia, sono riportati i principali cambiamenti introdotti in Ruby 1.9 rispetto a Ruby 1.8.</p>
<p><span id="more-3132"></span>Questi i capitoli.</p>
<ul>
<li>Introduzione</li>
<li>Agenda</li>
<li>Introduzione a Ruby 1.9</li>
<li>La classe BasicObject</li>
<li>Il metodo public_send</li>
<li>RubyGems, Rake e altre librerie</li>
<li>La classe Fiber</li>
<li>La classe Hash</li>
<li>I simboli</li>
<li>La classe Array</li>
<li>I blocchi</li>
<li>La sintassi di lambda</li>
<li>La classe String</li>
<li>Enumerator e Enumerable</li>
</ul>
<p>Ho avuto modo di assaporare un&#8217;anteprima e posso quindi assicurare sulla qualità del contenuto.</p>
<p>Il video è particolarmente consigliato a chi desidera avvicinarsi a Ruby 1.9 arrivando da Ruby 1.8. Non è richiesta una competenza avanzata di Ruby per apprezzare il video e questo rende lo screencast ancora più appetibile.</p>
<p>Screencast: <a href="http://it.thinkcode.tv/catalogo/novita-ruby19/">Le novità di Ruby 1.9</a>.</p>
<p>Related posts:<ol>
<li><a href='http://www.simonecarletti.it/blog/2005/11/google-reader-screencast/' rel='bookmark' title='Google Reader Screencast'>Google Reader Screencast</a></li>
<li><a href='http://www.simonecarletti.it/blog/2006/09/hosting-gratuito-per-ruby-on-rails/' rel='bookmark' title='Hosting gratuito per Ruby on Rails'>Hosting gratuito per Ruby on Rails</a></li>
<li><a href='http://www.simonecarletti.it/blog/2008/05/benvenuto-rubyhtmlit/' rel='bookmark' title='Benvenuto Ruby.HTML.it'>Benvenuto Ruby.HTML.it</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.it/blog/2010/02/le-novita-di-ruby-1-9-screencast/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Termina lo sviluppo di ASP Stats Generator</title>
		<link>http://www.simonecarletti.it/blog/2009/11/termina-lo-sviluppo-di-asp-stats-generator/</link>
		<comments>http://www.simonecarletti.it/blog/2009/11/termina-lo-sviluppo-di-asp-stats-generator/#comments</comments>
		<pubDate>Sat, 28 Nov 2009 10:05:52 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[asp]]></category>
		<category><![CDATA[asp stats generator]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.it/blog/?p=3100</guid>
		<description><![CDATA[Per chi non seguisse il mio blog inglese segnalo che da oggi termina ufficialmente lo sviluppo di ASP Stats Generator.]]></description>
			<content:encoded><![CDATA[<p>Per chi non seguisse il mio blog inglese: <a href="http://www.simonecarletti.com/blog/2009/11/goodbye-asp-stats-generator/">da oggi termina ufficialmente lo sviluppo di ASP Stats Generator</a>.</p>
<p>Vi invito a leggere i dettagli e le motivazioni alla base della scelta. Vorrei ringraziare tutti gli utenti che hanno supportato e dimostrato affetto in questi anni.</p>
<p>Approfitto per ricordarvi di <a href="http://www.simonecarletti.com/blog/feed">iscrivervi al feed del blog in inglese</a>, se non l&#8217;avete ancora fatto. E&#8217; probabile che anche la versione italiana di questo sito verrà dismessa nel prossimo futuro.</p>
<p>Related posts:<ol>
<li><a href='http://www.simonecarletti.it/blog/2008/06/nuovo-sito-per-asp-stats-generator/' rel='bookmark' title='Nuovo sito per ASP Stats Generator'>Nuovo sito per ASP Stats Generator</a></li>
<li><a href='http://www.simonecarletti.it/blog/2006/04/asp-stats-generator-blog/' rel='bookmark' title='ASP Stats Generator Blog'>ASP Stats Generator Blog</a></li>
<li><a href='http://www.simonecarletti.it/blog/2007/08/violazione-licenza-asp-stats-generator-capitolo-2/' rel='bookmark' title='Violazione licenza ASP Stats Generator &#8211; Capitolo 2'>Violazione licenza ASP Stats Generator &#8211; Capitolo 2</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.it/blog/2009/11/termina-lo-sviluppo-di-asp-stats-generator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Anteprima Ruby Whois 0.8.0</title>
		<link>http://www.simonecarletti.it/blog/2009/09/anteprima-ruby-whois-0-8-0/</link>
		<comments>http://www.simonecarletti.it/blog/2009/09/anteprima-ruby-whois-0-8-0/#comments</comments>
		<pubDate>Sun, 27 Sep 2009 11:21:18 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Hosting / Domini]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[domini]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[whois]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.it/blog/?p=2952</guid>
		<description><![CDATA[Anteprima della libreria Ruby Whois 0.8.0: installazione ed utilizzo delle funzionalità principali.]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-2953" title="Whois" src="http://www.simonecarletti.it/blog/wp-content/uploads/2009/09/whois-150x150.png" alt="Whois" width="150" height="150" />I lettori italiani che seguono anche la <a href="http://www.simonecarletti.com/blog/">versione inglese</a> del blog spero non si offenderanno per questo <a href="http://www.simonecarletti.com/blog/2009/09/ruby-whois-preview-answer-and-parser/">crossposting</a>. Ci tengo però a segnalare che è da qualche giorno disponibile l&#8217;anteprima della nuova versione della <a href="http://code.simonecarletti.com/whois">libreria Whois per Ruby</a>.</p>
<p>Per chi non lo conoscesse, <a href="http://code.simonecarletti.com/whois">Whois</a> è una libreria per Ruby che offre la possibilità di eseguire <strong>query WHOIS</strong> per tutti i domini attualmente disponibili, così come indirizzi IPv4 e IPv6. La libreria è multipiattaforma, dunque compatibile con Linux, MacOsX e Microsoft Windows.</p>
<p>E&#8217; possibile utilizzarla sia attraverso Ruby sia via command line. Una volta installata la gem, infatti, viene messo a disposizione un eseguibile chiamato <code>ruby-whois</code>. Il suo utilizzo è molto semplice:</p>
<pre class="code-bash">$ ruby-whois "google.com"</pre>
<p>Se per gli utenti di Linux e MacOsX questo si somma ad altri clienti disponibili come il famossissimo whois client scritto in C per Debian, per gli utenti Microsoft Windows questa libreria rappresenta una delle soluzioni più potenti disponibili.<span id="more-2952"></span></p>
<p>Ma le vere potenzialità di <a href="http://whois.rubyforge.org/">Whois</a> non stanno nella command line bensì nelle API offerte attraverso Ruby. In particolare, la nuova versione permette di accedere con una sintassi object oriented alle singole proprietà di una risposta WHOIS.</p>
<pre class="code-ruby">a = Whois.query "simonecarletti.it"

# informazioni sul server
a.server.allocation
# =&gt; ".it"
a.server.host
# =&gt; "whois.nic.it"

# informazioni sul dominio
&gt;&gt; a.created_on
=&gt; Mon Aug 27 09:32:27 +0200 2007
&gt;&gt; a.expires_on
=&gt; Fri Aug 27 00:00:00 +0200 2010

# aggregazione di informazioni complesse
&gt;&gt; c = a.registrant
=&gt; #&lt;struct Whois::Answer::Contact id="SC19264-ITNIC", name="Simone Carletti", organization=nil, address=nil, city=nil, zip=nil, state=nil, country=nil, country_code=nil, phone=nil, fax=nil, email=nil, created_on=nil, updated_on=nil&gt;
&gt;&gt; c.name
=&gt; "Simone Carletti"
&gt;&gt; c.email
=&gt; nil</pre>
<p>La libreria è disponibile come gem per Ruby. La nuova versione sarà rilasciata a giorni. E&#8217; possibile provare l&#8217;anteprima scaricando la gem <a href="http://ruby-whois.googlegroups.com/web/whois-0.8.0.20090927103917.gem">da qui</a> ed installandola con il comando</p>
<pre class="code-bash">gem install whois-0.8.0.20090927103917.gem</pre>
<p>Per utilizzare efficacemente <a href="http://whois.rubyforge.org/">Whois</a> è necessaria una conoscenza base di Ruby. Se ancora non lo conoscete, <a href="http://twitter.com/srinzivillo/status/4081018676">non è mai troppo tardi</a>.</p>
<p>Related posts:<ol>
<li><a href='http://www.simonecarletti.it/blog/2008/05/ruby-wwwdelicious/' rel='bookmark' title='Ruby WWW::Delicious'>Ruby WWW::Delicious</a></li>
<li><a href='http://www.simonecarletti.it/blog/2007/09/php-vs-ruby/' rel='bookmark' title='PHP vs Ruby'>PHP vs Ruby</a></li>
<li><a href='http://www.simonecarletti.it/blog/2006/09/hosting-gratuito-per-ruby-on-rails/' rel='bookmark' title='Hosting gratuito per Ruby on Rails'>Hosting gratuito per Ruby on Rails</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.it/blog/2009/09/anteprima-ruby-whois-0-8-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Weekend in salsa Ruby il 4-5 luglio</title>
		<link>http://www.simonecarletti.it/blog/2009/06/weekend-in-salsa-ruby/</link>
		<comments>http://www.simonecarletti.it/blog/2009/06/weekend-in-salsa-ruby/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 12:15:15 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Eventi]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[firenze]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.it/blog/?p=2753</guid>
		<description><![CDATA[Per chi fosse interessato a Ruby e Rails segnalo un evento a Firenze il prossimo 4-5 luglio.]]></description>
			<content:encoded><![CDATA[<p>Per chi non seguisse la mailing list Ruby ma fosse comunque interessato a Ruby e Rails, <a href="http://www.ruby-forum.com/topic/190299">ripubblico la segnalazione</a>. 4-5 luglio vicino a Firenze, weekend dedicato all&#8217;enogastronomia in salsa Ruby.<span id="more-2753"></span></p>
<blockquote><p>Buongiorno a tutti,<br />
a maggio a Barcellona c&#8217;è stato l&#8217;<a href="http://euruko2009.org/" target="_blank">EuRuKo</a>, l&#8217;annuale conferenza europea su Ruby.</p>
<p>E&#8217; stata una bella esperienza, nonché l&#8217;occasione di incontrare vecchi contatti (non parlo di età! :D) e nuove conoscenze.<br />
In particolare, noi italiani eravamo circa in 8 e tra una birra ed una paella qualcuno ha partorito l&#8217;idea di <strong>organizzare un nuovo mini-incontro in Italia</strong>.</p>
<p>Eccoci qui! L&#8217;idea è incontrarci il primo weekend di <strong>luglio (04-05)</strong> nello splendido paesaggio delle <strong>colline toscane.</strong><br />
Grazie al supporto di <strong>Jules</strong>, avremo modo di approfittare di una location d&#8217;eccezione come l&#8217;<span>Istituto Universitario Europeo.</span></p>
<p>Così come lo avevamo pensato in Spagna e brevemente discusso in seguito, non si tratta di nulla di particolarmente formale, pomposo o ambizioso. Non una conferenza, bensì un incontro di sviluppatori ed amici che hanno piacere di condividere un weekend approfittando dell&#8217;occasione per parlare anche un po&#8217; di Ruby e derivati. :D<br />
Avremo a disposizione una sala ed un proiettore. Chi partecipa è invitato (non obbligato, ma invitato) a preparare qualche cosa&#8230;. vero <strong>Sandro</strong>? :P<br />
Il format è libero: talk, presentazione, tutorial, showcase nonché eventuali argomenti di discussione.</p>
<p>Passando ai dettagli organizzativi:</p>
<ul>
<li>la location sarà l&#8217;Istituto Universitario Europeo. Jules mi diceva che è facilmente raggiungibile dalla <strong>stazione dei treni di Firenze, con 20 minuti di autobus</strong>.</li>
<li>le date sabato 04 e domenica 05 luglio, orientativamente dal primo pomeriggio di sabato al pomeriggio di domenica.</li>
<li>Jules sta già stilando la mappa dei ristoranti dove andare a soddisfare i nostri istinti animali, nel frattempo ha gentilmente fornito una mappa di 3 alberghi in zona: <a href="http://maps.google.it/maps/ms?ie=UTF8&amp;hl=it&amp;vps=1&amp;jsv=160h&amp;oe=UTF8&amp;msa=0&amp;msid=106409732705824794050.00046c26bb074d8bf2841" target="_blank">link a Google Maps</a>.</li>
</ul>
<p>L&#8217;invito è aperto a chiunque. Vi chiedo solo di inviare conferma (al mio indirizzo email o postando qui) entro l&#8217;inizio della prossima settimana così da poterci organizzare almeno logisticamente con il numero e se ci fossero necessità di trasporto.</p></blockquote>
<p>Related posts:<ol>
<li><a href='http://www.simonecarletti.it/blog/2006/10/weekend-milanese-parte-1-bzaarcamp/' rel='bookmark' title='Weekend milanese parte 1: BzaarCamp'>Weekend milanese parte 1: BzaarCamp</a></li>
<li><a href='http://www.simonecarletti.it/blog/2007/09/php-vs-ruby/' rel='bookmark' title='PHP vs Ruby'>PHP vs Ruby</a></li>
<li><a href='http://www.simonecarletti.it/blog/2006/09/hosting-gratuito-per-ruby-on-rails/' rel='bookmark' title='Hosting gratuito per Ruby on Rails'>Hosting gratuito per Ruby on Rails</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.it/blog/2009/06/weekend-in-salsa-ruby/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Utilizzare jQuery con Rails</title>
		<link>http://www.simonecarletti.it/blog/2009/06/utilizzare-jquery-con-rails/</link>
		<comments>http://www.simonecarletti.it/blog/2009/06/utilizzare-jquery-con-rails/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 12:42:03 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.it/blog/?p=2659</guid>
		<description><![CDATA[Per verificare il corretto funzionamento di Rails e jQuery proviamo a creare un semplice guestbook composto da una sola pagina con la possibilità di inserire messaggi via AJAX.]]></description>
			<content:encoded><![CDATA[<p>Nell&#8217;articolo precedente abbiamo visto come <a href="http://www.simonecarletti.it/blog/2009/05/rails-e-jquery/">è possibile usare jQuery con Rails</a>. Sebbene l&#8217;utilizzo di Rails per creare applicazioni dinamiche in AJAX vada oltre lo scopo dell&#8217;articolo originale, per verificare il corretto funzionamento di jQuery proviamo a creare un semplice guestbook composto da una sola pagina con la possibilità di inserire messaggi via AJAX.</p>
<p>Partiamo da zero, creando un nuovo progetto chiamato <code>jguestbook</code>. Il sorgente dell&#8217;applicazione, a scopo didattivo, è allegato a questo articolo.<span id="more-2659"></span></p>
<pre lang="bash">$ rails jguestbook

create
create  app/controllers
create  app/helpers
create  app/models
create  app/views/layouts
...
create  doc/README_FOR_APP
create  log/server.log
create  log/production.log
create  log/development.log
create  log/test.log

$ cd jguestbook</pre>
<p>Creiamo il modello <code>Message</code> ed il rispettivo controller che si occuperà dell&#8217;inserimento e del salvataggio dei messaggi. Per comodità, utilizziamo il generator <code>scaffold</code>.</p>
<pre lang="bash">$ ruby script/generate scaffold message username:string subject:string body:text

exists  app/models/
exists  app/controllers/
exists  app/helpers/
create  app/views/messages
exists  app/views/layouts/
...
create    db/migrate
create    db/migrate/20090202232010_create_messages.rb

$ rake db:migrate

==  CreateMessages: migrating =================================================
-- create_table(:messages)
   -&gt; 0.0027s
==  CreateMessages: migrated (0.0028s) ========================================</pre>
<p>Apriamo il file <code>routes.rb</code> e mappiamo la root del sito all&#8217;azione <code>MessageController#index</code>. Assicuriamoci di rimuovere la pagina <code>public/index.html</code> o Rails continuerà a mostrare come homepage la pagina di default anche se è configurata un&#8217;azione specifica. Avviando il server dovremmo vedere una pagina simile allo screenshot seguente.</p>
<div id="attachment_3516" class="wp-caption aligncenter" style="width: 510px"><img class="size-medium wp-image-3516" title="Homepage di jGuestbook" src="http://www.simonecarletti.it/blog/wp-content/uploads/2009/06/2009-02-03_0028-500x361.png" alt="Homepage di jGuestbook" width="500" height="361" /><p class="wp-caption-text">Homepage di jGuestbook.</p></div>
<p>Anche se pressoché priva di appeal, l&#8217;applicazione è perfettamente funzionante. Possiamo inserire nuovi messaggi, modificarli e rimuoverli. Provare per credere.</p>
<div id="attachment_3518" class="wp-caption aligncenter" style="width: 510px"><img class="size-medium wp-image-3518" title="Pagina elenco Messaggi" src="http://www.simonecarletti.it/blog/wp-content/uploads/2009/06/2009-02-03_0031-500x361.png" alt="Pagina elenco Messaggi" width="500" height="361" /><p class="wp-caption-text">Pagina elenco Messaggi.</p></div>
<div id="attachment_3519" class="wp-caption aligncenter" style="width: 510px"><img class="size-medium wp-image-3519" title="Pagina di visualizzazione Messaggio" src="http://www.simonecarletti.it/blog/wp-content/uploads/2009/06/2009-02-03_0030-500x361.png" alt="Pagina di visualizzazione Messaggio" width="500" height="361" /><p class="wp-caption-text">Pagina di visualizzazione Messaggio.</p></div>
<p>E&#8217; arrivato il momento di integrare jQuery e qualche funzionalità AJAX all&#8217;interno della nostra applicazione. Come prima cosa installiamo il plugin ed includiamo jQuery all&#8217;interno file di layout nella cartella  <code>/app/views/layouts/messages.html.erb</code>.</p>
<pre lang="html">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;

&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"&gt;
&lt;head&gt;
  &lt;meta http-equiv="content-type" content="text/html;charset=UTF-8" /&gt;
  &lt;title&gt;Messages: &lt;%= controller.action_name %&gt;&lt;/title&gt;
  &lt;%= stylesheet_link_tag 'scaffold' %&gt;
  &lt;%= javascript_include_tag :defaults %&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;p style="color: green"&gt;&lt;%= flash[:notice] %&gt;&lt;/p&gt;

&lt;%= yield  %&gt;

&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Ora modifichiamo la vista dell&#8217;azione <code class="methodname">#index</code> per consentire l&#8217;inserimento di un nuovo messaggio via AJAX.</p>
<div id="attachment_3517" class="wp-caption aligncenter" style="width: 510px"><img class="size-medium wp-image-3517" title="Pagina di inserimento Messaggio" src="http://www.simonecarletti.it/blog/wp-content/uploads/2009/06/2009-02-03_0029-500x361.png" alt="Pagina di inserimento Messaggio" width="500" height="361" /><p class="wp-caption-text">Pagina di inserimento Messaggio.</p></div>
<p>L&#8217;esempio finale completo è <a href="http://www.simonecarletti.it/blog/wp-content/uploads/2009/05/jguestbook.zip">allegato a questo articolo</a>. E&#8217; bene sottolineare che l&#8217;applicazione ha uno <strong>scopo puramente dimostrativo</strong> e non include nessun controllo sulla validità dei dati in ingresso. Il suo obiettivo è semplicemente dimostrare l&#8217;integrazione di jQuery in un&#8217;applicazione Rails.</p>
<p>Related posts:<ol>
<li><a href='http://www.simonecarletti.it/blog/2009/05/rails-e-jquery/' rel='bookmark' title='Rails e jQuery'>Rails e jQuery</a></li>
<li><a href='http://www.simonecarletti.it/blog/2005/10/feedburner-calcola-i-visitatori-in-tempo-reale/' rel='bookmark' title='FeedBurner calcola i visitatori in tempo reale'>FeedBurner calcola i visitatori in tempo reale</a></li>
<li><a href='http://www.simonecarletti.it/blog/2011/02/libri-ruby-on-rails-in-italiano/' rel='bookmark' title='Libri Ruby on Rails in italiano'>Libri Ruby on Rails in italiano</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.it/blog/2009/06/utilizzare-jquery-con-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rails e jQuery</title>
		<link>http://www.simonecarletti.it/blog/2009/05/rails-e-jquery/</link>
		<comments>http://www.simonecarletti.it/blog/2009/05/rails-e-jquery/#comments</comments>
		<pubDate>Sun, 31 May 2009 13:22:38 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.it/blog/?p=2643</guid>
		<description><![CDATA[Come integrare il framework JavaScript jQuery in un'applicazione Ruby on Rails.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.simonecarletti.it/blog/wp-content/uploads/2009/05/jrails.png"><img class="alignleft size-full wp-image-2671" title="Rails + jQuery" src="http://www.simonecarletti.it/blog/wp-content/uploads/2009/05/jrails.png" alt="Rails + jQuery" width="206" height="97" /></a>Fin dal suo esordio, Ruby on Rails ha sempre integrato <strong>Prototype</strong> come framework JavaScript predefinito per la creazione di un nuovo progetto e <strong>Scriptaculous</strong> come libreria JavaScript per la gestione degli effetti. Rails è stato uno dei primi framework a fondere un linguaggio di programmazione server side come Ruby con uno di scripting come JavaScript, in un modo così elegante da sembrare un tutt&#8217;uno. Questo aspetto, impossibile negarlo, è stato <strong>uno degli elementi chiave che in passato ha saputo raccogliere l&#8217;interesse di molti sviluppatori</strong> portandoli a provare il framework.</p>
<p>L&#8217;evoluzione dell&#8217;uso di JavaScript all&#8217;interno di applicazioni web ha portato alla nascita di numerosi <strong>framework JavaScript alternativi a Prototype</strong> come Dojo, MooTols e jQuery. Proprio quest&#8217;ultimo è il protagonista di questo articolo dove vedremo <strong>come integrare jQuery all&#8217;interno di un progetto Rails</strong>.</p>
<p><span id="more-2643"></span></p>
<h2>Cosa vuol dire sostituire jQuery a Prototype?</h2>
<p>Prototype non è semplicemente distribuito in bundle con un&#8217;applicazione Rails. Rails infatti mette a disposizione numerosi helper che si preoccupano di <strong>convertire in JavaScript il nostro codice Ruby,</strong> agevolando il compito del programmatore. Questi helper sono contenuti in diversi moduli, uno fra tutti <a href="http://api.rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper.html">ActionView::Helpers::PrototypeHelper</a>.</p>
<p>Prendiamo ad esempio l&#8217;helper <code>link_to_remote</code>. Questo metodo costituisce la versione ajaxificata dell&#8217;helper <code>link_to</code> e consente di inserire un link che, una volta selezionato, esegue una chiamata ajax con i parametri specificati.</p>
<pre>&lt;!-- link alla pagina di creazione di un nuovo post --&gt;
&lt;%= link_to 'New post', new_post_path %&gt;

&lt;!-- link ajax alla pagina di creazione di un nuovo post --&gt;
&lt;%= link_to_remote "New post",
  :url =&gt; new_post_path,
  :update =&gt; { :success =&gt; "form", :failure =&gt; "error" }
%&gt;</pre>
<p>Sebbene l&#8217;uso sia molto simile, il risultato è decisamente diverso. Nel secondo caso, infatti, Rails si preoccupa di convertire in automatico il nostro codice Ruby nel codice HTML e JavaScript necessario per eseguire l&#8217;azione con Prototype, interpretare la risposta ed aggiornare la pagina corrente.</p>
<pre>&lt;!-- link alla pagina di creazione di un nuovo post --&gt;
&lt;a href="/posts/new"&gt;New post&lt;/a&gt;

&lt;!-- link ajax alla pagina di creazione di un nuovo post --&gt;
&lt;a href="#" onclick="new Ajax.Updater({success:'form',failure:'error'}, '/posts/new', {asynchronous:true, evalScripts:true, parameters:'authenticity_token=' + encodeURIComponent('cc33153cbe90fcce6ba4a0de069a2b925969721b')}); return false;"&gt;New post&lt;/a&gt;</pre>
<p>Poiché le API di jQuery differiscono da quelle di Prototype, per integrare con successo jQuery all&#8217;interno di un progetto Rails è necessario riscrivere gli helper per la conversione del codice Ruby in istruzioni JavaScript.</p>
<h3>jQuery o Prototype: non entrambi!</h3>
<p>A qualcuno potrebbe venire in mente di utilizzare jQuery includendo il file sorgente ed usandolo all&#8217;occorrenza, mantenendo in parallelo Prototype per tutte le interazioni con Rails. Esistono almeno due buoni motivi per non farlo.</p>
<ol>
<li>Prototype e jQuery non possono essere utilizzati in contemporanea su una pagina web. Entrambi i framework utilizzano alcuni nomi di metodo convenzionali, come ad esempio il comando $, entrando così in conflitto se inclusi in parallelo.</li>
<li>Entrambi i framework comportano un certo carico di elaborazione sul computer dell&#8217;utente che, in alcuni casì, è percepibile anche con un solo framework. Includerli entrambi potrebbe causare visibili rallentamenti in fase di caricamento ed interpretazione di una pagina da parte del browser.</li>
</ol>
<h2>Come integrare jQuery con Rails</h2>
<p>Esistono almeno due modi per integrare jQuery in un progetto Rails.</p>
<h3>Integrazione manuale</h3>
<p>Il primo modo consiste nell&#8217;includerlo come un normale framework JavaScript, non prima di aver rimosso ogni traccia di Prototype. Così facendo si rinuncia però a tutti i metodi per scrivere JavaScript direttamente attraverso Rails.</p>
<p>Scarichiamo dal sito <a href="http://jquery.com/">jquery.com</a> la versione che desideriamo utilizzare e salviamola nella cartella <code class="filename">/public/javascripts</code>. Poi richiamiamo il file <code class="filename">jquery.js</code> ed il consueto file <code class="filename">application.js</code> all&#8217;interno del nostro layout.</p>
<pre>&lt;!-- app/views/layouts/application.html.erb --&gt;
&lt;%= javascript_include_tag 'jquery', 'application' %&gt;</pre>
<p>Questa soluzione può andare bene per progetti di piccole dimensioni con limitato uso di AJAX ed effetti. Nella maggior parte dei casi, rinunciare agli helper è una scelta controproducente.</p>
<h3>Integrazione con jRails</h3>
<p>L&#8217;alternativa al metodo precedente consiste nel <strong>sostituire trasparentemente Prototype con jQuery</strong> mappando i vecchi metodi su quest&#8217;ultimo framework. La soluzione si chiama <a href="http://ennerchi.com/projects/jrails">jRails</a>, un plugin sviluppato appositamente con questo obiettivo. E&#8217; sufficiente installare il plugin per avere a disposizione tutti i principali helper rimappati su jQuery.</p>
<pre>$ ruby script/plugin install http://ennerchi.googlecode.com/svn/trunk/plugins/jrails

+ ./CHANGELOG
+ ./README
+ ./init.rb
+ ./install.rb
+ ./javascripts/jquery-ui.js
+ ./javascripts/jquery.js
+ ./javascripts/jrails.js
+ ./javascripts/sources/jrails.js
+ ./lib/jrails.rb
+ ./tasks/jrails.rake
Copying files...
Files copied - Installation complete!</pre>
<p>Una volta installato, jRails copia all&#8217;interno della cartella <code class="filename">/public/javascrips</code> tre file:</p>
<ol>
<li>Il file di jQuery</li>
<li>Il file di jQuery UI</li>
<li>Un file con alcune funzioni personalizzate utili all&#8217;integrazione</li>
</ol>
<p>E&#8217; possibile di includere l&#8217;espansione <code class="code">:default</code> contenente tutti i file o selezionare i file singolarmente.</p>
<pre>&lt;!-- inclusione standard del gruppo :default --&gt;
&lt;%= javascript_include_tag :defaults %&gt;

&lt;!-- automaticamente verranno inclusi i seguenti file --&gt;
&lt;script src="/javascripts/jquery.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;script src="/javascripts/jquery-ui.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;script src="/javascripts/jrails.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;script src="/javascripts/application.js" type="text/javascript"&gt;&lt;/script&gt;

&lt;!-- inclusione dei singoli file --&gt;
&lt;%= javascript_include_tag 'jquery', 'jquery-ui', 'jrails', 'application' %&gt;</pre>
<p>Nel caso abbiate esigenza di usare una versione di jQuery differente da quella inclusa con il plugin, è possibile sostituire i singoli file all&#8217;interno della cartella <code class="filename">/public/javascripts</code> con quelli corrispondenti.</p>
<p>jRails è un progetto giovane che purtroppo non garantisce ancora una compatibilà al 100% con tutti i comportamenti originali previsti per Prototype. E&#8217; comunque abbastanza stabile da consentirne l&#8217;utilizzo in produttività. Tutti gli esempi seguenti faranno riferimento unicamente a questa modalità di integrazione.</p>
<h3>Modalità mista</h3>
<p>In alcuni casi potreste voler utilizzare le funzionalità offerte da jRails senza includere fisicamente il sorgente di jQuery all&#8217;interno della vostra applicazione. Chi si è interessato almeno una volta di performance avrà senz&#8217;altro sentito parlare dell&#8217;acronimo CDN, meglio conosciuto come <strong>Content Delivery Network</strong>.</p>
<p>Da qualche tempo sia Google sia Yahoo! offrono la possibilità di includere le principali librerie javascript direttamente dai loro server, con numerosi vantaggi.</p>
<ol>
<li>I browser possono riutilizzare la versione in cache della libreria anche su siti raggiungibili su domini completamente differenti.</li>
<li>Le richieste dei file JavaScript non sono servite dai vostri server con un risparmio in termini di elaborazione e CPU.</li>
<li>Google e Yahoo! dispongono di numerosi server in diverse collocazioni geografiche. Normalmente, quando un utente richiede un file, il file viene servito dal server più vicino alla collocazione geografica dell&#8217;utente che potrà così beneficiare di un tempo di caricamento minore.</li>
</ol>
<p>Esistono diversi plugin che permettono di includere con pochissimo sforzo un framework JavaScript da Google o Yahoo! Il mio preferito si chiama <a href="http://github.com/rpheath/google_ajax_libraries_api">Google Ajax Libraries</a>. Basta installarlo ed includere la chiamata al metodo all&#8217;interno del proprio layout. Il plugin è perfettamente compatibile con jRails ed è possibile utilizzarli in contemporanea per disporre sia dell&#8217;integrazione di jQuery sia di una versione personalizzata di jQuery senza dipendere da quelle distribuite con jRails.</p>
<h2>Utilizzare jQuery con Rails</h2>
<p>Nel prossimo articolo vedremo un esempio pratico di come utilizzare jQuery all&#8217;interno di un progetto Rails grazie a jRails.</p>
<p>Stay tuned!</p>
<p>Related posts:<ol>
<li><a href='http://www.simonecarletti.it/blog/2009/06/utilizzare-jquery-con-rails/' rel='bookmark' title='Utilizzare jQuery con Rails'>Utilizzare jQuery con Rails</a></li>
<li><a href='http://www.simonecarletti.it/blog/2011/02/libri-ruby-on-rails-in-italiano/' rel='bookmark' title='Libri Ruby on Rails in italiano'>Libri Ruby on Rails in italiano</a></li>
<li><a href='http://www.simonecarletti.it/blog/2007/11/libro-agile-web-development-with-rails/' rel='bookmark' title='Libro Agile Web Development with Rails 3'>Libro Agile Web Development with Rails 3</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.it/blog/2009/05/rails-e-jquery/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Design Pattern in PHP (Slide)</title>
		<link>http://www.simonecarletti.it/blog/2009/03/design-pattern-in-php-slide/</link>
		<comments>http://www.simonecarletti.it/blog/2009/03/design-pattern-in-php-slide/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 20:44:03 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[design pattern]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php5]]></category>
		<category><![CDATA[phpcon]]></category>
		<category><![CDATA[phpcon italia]]></category>
		<category><![CDATA[presentazioni]]></category>
		<category><![CDATA[slideshare]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.it/blog/?p=2596</guid>
		<description><![CDATA[Le slide dei miei due interventi dedicati all'implementazione dei Design Pattern in PHP.]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-2603" title="Logo PHPCon Italia 2009" src="http://www.simonecarletti.it/blog/wp-content/uploads/2009/03/phpcon-logo.png" alt="Logo PHPCon Italia 2009" width="173" height="96" />Un breve crossposting, per quanti non seguissero il mio blog in inglese. Come promesso a chi ha partecipato all&#8217;evento <a href="http://www.simonecarletti.it/blog/2009/03/interventi-alla-phpcon-italia-2009/">PHPCon Italia</a>, le slide dei miei due interventi dedicati all&#8217;implementazione dei <strong>Design Pattern in PHP</strong> sono <a href="http://www.slideshare.net/weppos/design-patterns-in-php-phpcon-italia">disponibili su Slideshare</a>.</p>
<p>Rispetto alla versione originale, ho corretto alcuni errori individuati nelle sessioni ed ho riscritto tutti gli esempi passando da screenshot a testo. In questo modo la resa degli script è decisamente migliore, sia su Slideshare sia sulla versione scaricabile.</p>
<p>Per problemi di tempo, nelle due sessioni non sono riuscito a trattare alcuni Design Pattern che ho comunque incluso nelle slide, come ad esempio <strong>Observer</strong> e <strong>Iterator</strong>. Sono ovviamente disponibili tutti i Design Patter trattati: <strong>MVC</strong>, <strong>Singleton</strong>, <strong>Factory</strong>, <strong>Template Method</strong>, <strong>Strategy</strong>&#8230;<span id="more-2596"></span></p>
<p class="centered"><iframe src="http://www.slideshare.net/slideshow/embed_code/1180261" width="425" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe><br/><br/></p>
<p>Sempre su Slideshare altri relatori hanno già pubblicato le loro slide. Ecco alcuni link utili</p>
<ul>
<li><a href="http://www.slideshare.net/tag/phpcon">http://www.slideshare.net/tag/phpcon</a></li>
<li><a href="http://www.slideshare.net/group/php">http://www.slideshare.net/group/php</a></li>
</ul>
<p>Related posts:<ol>
<li><a href='http://www.simonecarletti.it/blog/2009/03/interventi-alla-phpcon-italia-2009/' rel='bookmark' title='I miei interventi alla PHPCon Italia 2009'>I miei interventi alla PHPCon Italia 2009</a></li>
<li><a href='http://www.simonecarletti.it/blog/2008/11/libro-design-patterns-in-ruby/' rel='bookmark' title='Libro Design Patterns in Ruby'>Libro Design Patterns in Ruby</a></li>
<li><a href='http://www.simonecarletti.it/blog/2008/05/zend-framework-ed-i-web-service/' rel='bookmark' title='Zend Framework ed i Web Service'>Zend Framework ed i Web Service</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.it/blog/2009/03/design-pattern-in-php-slide/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>I miei interventi alla PHPCon Italia 2009</title>
		<link>http://www.simonecarletti.it/blog/2009/03/interventi-alla-phpcon-italia-2009/</link>
		<comments>http://www.simonecarletti.it/blog/2009/03/interventi-alla-phpcon-italia-2009/#comments</comments>
		<pubDate>Thu, 05 Mar 2009 21:47:17 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[design pattern]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.it/blog/?p=2576</guid>
		<description><![CDATA[Una breve panoramica delle mie due sessioni sui Design Pattern alla prossima PHPCon Italia 2009.]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-2603" title="Logo PHPCon Italia 2009" src="http://www.simonecarletti.it/blog/wp-content/uploads/2009/03/phpcon-logo.png" alt="Logo PHPCon Italia 2009" width="173" height="96" /> Come qualcuno di voi già saprà, dal 18 al 20 Marzo si terrà a Roma la <a href="http://phpcon.it/">PHPCon Italia 2009</a>. La PHPCon è un&#8217;evento internazionale dedicato allo sviluppo in PHP.</p>
<p>All&#8217;evento parteciperò in qualità di relatore con due sessioni entrambe dedicate ai design patterns:</p>
<ol>
<li>Design Patterns in PHP &#8211; Parte I</li>
<li>Design Patterns in PHP &#8211; Parte II</li>
</ol>
<p>Confesso di non aver ancora preparato le slide, ma posso comunque fornire qualche anticipazione dei contenuti trattati.<span id="more-2576"></span></p>
<p>La prima sessione è un&#8217;<strong>introduzione ai design pattern</strong>. Vedremo di che cosa si tratta, perché sono importanti ed una breve storia dalla loro nascita alla loro evoluzione. Trovo affascinante pensare che, nonostante i Design Pattern siano stati ufficializzati nel 1995, non sono mai stati così attuali come ora anche grazie al proliferare di linguaggi di programmazione object oriented.</p>
<p>Già nella prima sessione ci sarà modo di <strong>analizzare qualche design pattern</strong>. Non ho ancora deciso esattamente quali, probabilmente mi soffermerò su quelli più semplici come ad esempio Singleton, Template e Strategy. Per ogni pattern presenterò, oltre ad una descrizione, l&#8217;implementazione in PHP 5 ed alcuni esempi estratti dal mondo reale, ovvero librerie PHP di comune uso che contengono il pattern in esame.</p>
<p>La seconda sessione è di carattere più avanzato, tendenzialmente rivolta a chi ha già una nozione base di design pattern perché ha seguito la sessione precedente o approfondito il discorso per conto suo. In questo caso <strong>analizzeremo pattern più complessi </strong>come <strong>Observer</strong>, <strong>Strategy</strong> e <strong>Factory</strong>. Anche in questo caso la sessione sarà supportata da esempi reali ed implementazione in PHP 5.</p>
<p>I design pattern sono un aspetto importante della programmazione object oriented e dello sviluppo agile. Queste due sessioni vi daranno modo di approfondire questo argomento in modo efficace e specifico per PHP 5.</p>
<p>Related posts:<ol>
<li><a href='http://www.simonecarletti.it/blog/2006/04/i-miei-interventi-al-search-engine-strategies/' rel='bookmark' title='I miei interventi al Search Engine Strategies'>I miei interventi al Search Engine Strategies</a></li>
<li><a href='http://www.simonecarletti.it/blog/2009/03/design-pattern-in-php-slide/' rel='bookmark' title='Design Pattern in PHP (Slide)'>Design Pattern in PHP (Slide)</a></li>
<li><a href='http://www.simonecarletti.it/blog/2008/11/libro-design-patterns-in-ruby/' rel='bookmark' title='Libro Design Patterns in Ruby'>Libro Design Patterns in Ruby</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.it/blog/2009/03/interventi-alla-phpcon-italia-2009/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Libro Ruby Cookbook con elementi di Rails</title>
		<link>http://www.simonecarletti.it/blog/2009/02/libro-ruby-cookbook/</link>
		<comments>http://www.simonecarletti.it/blog/2009/02/libro-ruby-cookbook/#comments</comments>
		<pubDate>Mon, 23 Feb 2009 08:10:50 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Libri]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[oreilly]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[recensioni]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[tecniche nuove]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.it/blog/?p=2540</guid>
		<description><![CDATA[Recensione del libro Ruby Cookbook con elementi di Rails, una raccolta di soluzioni pronte all'uso per programmare in Ruby.]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-2542" title="Ruby Cookbook con elementi di Rails" src="http://www.simonecarletti.it/blog/wp-content/uploads/2009/02/978-88-481-1981-8-150x150.jpg" alt="Ruby Cookbook con elementi di Rails" width="150" height="150" /><strong><a href="http://www.simonecarletti.it/blog/out/amzit-rubycook">Ruby Cookbook con elementi di Rails</a></strong> è una raccolta di ricette, soluzioni a problemi comuni e frammenti di codice per la programmazione in Ruby. Il libro, scritto da Lucas Carlson e Leonard Richardson, è edito da <em>O&#8217;Reilly</em> e disponibile in italiano in un&#8217;edizione distribuita da <em>Tecniche Nuove</em>.</p>
<p>Il libro contiene <strong>soluzioni a problemi comuni nello sviluppo Ruby</strong>, suddivise in 17 capitoli a seconda dell&#8217;argomento. Per ogni soluzione è descritto il problema, la soluzione immediata completa di codice sorgente copia incolla ed una spiegazione dettagliata molto utile a chi desidera imparare invece di copiare pedestremente. <em>Ruby Cookbook</em> prende in esame tutti i principali temi di Ruby ed include un intero capitolo dedicato al framework Rails.</p>
<p><span id="more-2540"></span><em>Ruby Cookbook con elementi di Rails</em> è uno dei pochi libri di programmazione in italiano presenti nella mia biblioteca personale. Nessun motivo in particolare, in realtà, non ricordo neppure quando acquistai questo libro o dove. Credo sia uno dei primi libri comprati su Ruby, senza dubbio almeno 3 anni fa prima che cominciassi a lavorarci quotidianamente.</p>
<p>Le mie considerazioni seguenti sono quindi squisitamente riferite alla versione italiana, anche se quella inglese è pressoché identica. Anzi, devo dire che <strong>la traduzione italiana è decisamente accurata e fedele all&#8217;originale</strong>. Un lavoro di qualità, considerato che spesso si leggono certi adattamenti che farebbero drizzare anche i peli sulle unghie.</p>
<h2>Struttura del Libro</h2>
<p>Come anticipato, il libro si suddivide in ben 17 capitoli. Eccoli nel dettaglio:</p>
<ol>
<li>Le stringhe di testo</li>
<li>I numeri</li>
<li>Data e ora</li>
<li>Array</li>
<li>Hash</li>
<li>File e directory</li>
<li>Blocchi di codice ed iterazione</li>
<li>Oggetti e classi</li>
<li>Moduli e spazi dei nomi</li>
<li>Riflessione e metaprogrammazione</li>
<li>XML e HTML</li>
<li>Immagini ed altri formati di file</li>
<li>Database e persistenza</li>
<li>Servizi internet</li>
<li>Sviluppo Web: Ruby on Rails</li>
<li>Servizi Web e programmazione distribuita</li>
<li>Amministrazione del sistema</li>
</ol>
<p>Ciascun capitolo si concentra su un aspetto specifico della programmazione in Ruby. I capitoli a mio avviso più interessanti sono contenuti nella seconda metà del libro. Credo che temi come riflessione e metaprogrammazione, formati di file e servizi internet possano essere più appropriati ad un libro di ricette rispetto ad argomenti base come stringhe ed array.</p>
<h2>Impressioni sul libro</h2>
<p><strong>Non amo i libri di ricette</strong>, a meno che non siano di cucina: ritengo sia un modo poco efficace per imparare un linguaggio o affrontarne i problemi. Inoltre, credo che i libri di questo genere siano oramai del tutto superati da internet. Difficile trovare qualcuno che, di fronte ad un improvviso problema con un algoritmo, preferisca sfogliare un libro di ricette invece che affidarsi ad una ricerca al volo su internet. Blog, forum, gruppi di discussione sono un&#8217;inestimabile fonte di soluzioni.</p>
<p>Un libro come <em>Ruby Cookbook</em> è probabilmente <strong>utile per farsi un&#8217;idea delle potenzialità di Ruby</strong>, tenere la mente allenata cercando di <strong>rispondere ai problemi prima di guardare la soluzione</strong> ma è assai improbabile che possano offrire una soluzione al momento in cui il problema si verificherà&#8230; ammesso e non concesso che non abbiate il libro sotto mano e non vi ricordiate in quel momento di una delle decine di ricette pubblicate.</p>
<p>A questo si aggiunge che il libro è piuttosto datato. Stiamo parlando di un libro del 2006, pubblicato in italiano nel 2007. Il capitolo su Rails è del tutto obsoleto, il capitolo sulle Gem preistorico, la maggior parte delle ricette sui tipi di dati primitivi eccessivamente basilare.<br />
Ancora una volta, salverei invece i capitoli sui tipi di dati ed argomenti avanzati come Thread, la manipolazione di immagini e l&#8217;interazione con protocolli sono ancora un argomento meno diffuso.</p>
<h2>Requisiti</h2>
<p><em>Ruby Cookbook</em> <strong>non è un libro per imparare a programmare in Ruby</strong>. Non è neanche un libro per risolvere i problemi quotidiani nella programmazione in Ruby. Per apprezzare al meglio questo libro è quindi <strong>consigliata almeno un&#8217;esperienza base nella programmazione in Ruby</strong>.</p>
<p>Non è necessario leggere il libro in un ordine particolare. Piuttosto, consiglio di digerirlo poco alla volta, <strong>qualche ricetta al giorno</strong> senza cercare di memorizzare le soluzioni ma di studiarne il metodo. In questo modo sarà più facile mettere in pratica gli insegnamenti acquisiti nel caso si presenti un problema simile.</p>
<p>Gli argomenti trattati nel libro sono numerosi. Prendetevi il tempo necessario a documentarvi sulle nuove librerie segnalate, a provare gli esempi forniti e non abbiate fretta ad affrontare capitoli su argomenti di Ruby che ancora non conoscete.</p>
<h2>In conclusione</h2>
<p><em>Ruby Cookbook con elementi di Rails</em> non è proprio dubbio uno dei miei libri preferiti e, al momento, difficilmente lo consiglierei principalmente perché diverse sezioni soffrono di 3 anni di evoluzione del linguaggio.</p>
<h2>Dove comprare Ruby Cookbook con elementi di Rails</h2>
<p>Potete acquistare una copia cartacea su <a href="http://www.simonecarletti.it/blog/out/amzit-rubycook">Amazon.it</a>.</p>
<p>Related posts:<ol>
<li><a href='http://www.simonecarletti.it/blog/2011/02/libri-ruby-on-rails-in-italiano/' rel='bookmark' title='Libri Ruby on Rails in italiano'>Libri Ruby on Rails in italiano</a></li>
<li><a href='http://www.simonecarletti.it/blog/2007/11/libro-agile-web-development-with-rails/' rel='bookmark' title='Libro Agile Web Development with Rails 3'>Libro Agile Web Development with Rails 3</a></li>
<li><a href='http://www.simonecarletti.it/blog/2008/11/libro-design-patterns-in-ruby/' rel='bookmark' title='Libro Design Patterns in Ruby'>Libro Design Patterns in Ruby</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.it/blog/2009/02/libro-ruby-cookbook/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

