<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff></diff>
      <filename>images/b_cover.jpg</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>images/cover.jpg</filename>
    </modified>
    <modified>
      <diff>@@ -10,7 +10,7 @@ Secondo David le principali novit&#224; di questa versione riguardano:
 * Dirty tracking
 * Dipendenze fra le gem
 * Named scope
-* Migrations basate sul tempo (UTC)
+* Migrations basate sul timestamp (UTC)
 * Caching migliorato
  
 Per avviare l'installazione della nuova versione &#232; sufficiente il consueto comando:
@@ -28,42 +28,57 @@ A tutta la comunit&#224; brasiliana di Ruby on Rails, che ha collaborato direttament
  
 ## Traduttori della versione in italiano
  
-Questo testo &#232; stato tradotto in italiano grazie alla collaborazione dei membri della comunit&#224; Italiana di Ruby [ruby-it.org](http://www.ruby-it.org) + [:p@r](http://www.pro-ruby.net)
- 
+Questo testo &#232; stato tradotto in italiano grazie alla collaborazione dei membri della comunit&#224; Italiana di Ruby, della quale riportiamo i link di riferimento:
+
+* [The Ruby Mine](http://www.therubymine.com)
+* [ruby-it.org](http://www.ruby-it.org) 
+* [:p@r](http://www.pro-ruby.net)
+
+Il lavoro di coordinamento &#232; stato effettuato da Carlo Pecchia, Andrea Reginato e Mirco Veltri.
+Si ringrazia inoltre, per il supporto e le revisioni: Massimilano Giroldi (TBD), 
+
+Si riportano nel seguito i contributi di ognuno.
+
 **Carlo Pecchia** - [http://carlopecchia.eu](http://carlopecchia.ru)
  
-Capitoli 2
+Capitoli 1, 2, 3, 4
+
+
+**Andrea Reginato** - []()
+ 
+Capitoli 1, 13
+
  
 **Mirco Veltri** - []()
  
-Capitoli 10-12
+Capitoli 1, 10, 11, 12
+
  
 **Piero Bozzolo** - []()
  
 Capitolo 5
- 
-**Luigi Maselli** - []()
- 
-Capitolo 6
- 
-**Oscar Del Ben** - []()
- 
-Capitolo 6
+
  
 **Luigi Maselli** - [http://grigio.org](http://grigio.org)
  
-Capitolo 7
+Capitoli 6, 7
+
  
-**Luca Sabato** - [http://sabatia.it](http://sabatia.it)
+**Oscar Del Ben** - []()
  
 Capitolo 8
+
  
-**Andrea Reginato** - []()
- 
-Capitolo 13
+**Luca Sabato** - [http://sabatia.it](http://sabatia.it)
  
+Capitolo 9
+
+  
 **Carmine Moleti** - []()
  
 Capitolo 14
  
-Si ringrazia inoltre, per il supporto e le revisioni: Massimilano Giroldi (), 
+
+**Andrea Franz** -[]()
+
+Capitoli 3, 4
\ No newline at end of file</diff>
      <filename>text/0/0_Title.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
 # ActiveSupport
 
-ActiveSupport &#232; una collezioni di utili classi ed estensioni alle librerie base che viene considerata utile per lo sviluppo delle applicazioni in Ruby on Rails.
+ActiveSupport &#232; una collezione di utili classi ed estensioni alle librerie base che viene considerata utile per lo sviluppo delle applicazioni in Ruby on Rails.
 (wikipedia)
\ No newline at end of file</diff>
      <filename>text/02_ActiveSupport/00.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,6 @@
 ## JSON escape
 
-Il metodo **json\_escape** funziona come **html\_escape**. E' molto utile quando vogliamo mostrare stringhe **JSON** in una pagine **HTML**, per esempio in fase di documentazione.
+Il metodo **json\_escape** funziona come **html\_escape**. E' molto utile quando vogliamo mostrare stringhe **JSON** in una pagina **HTML**, per esempio in fase di documentazione.
 
 	puts json_escape(&quot;is a &gt; 0 &amp; a &lt; 10?&quot;)
 	# =&gt; is a \u003E 0 \u0026 a \u003C 10?</diff>
      <filename>text/02_ActiveSupport/04_json_escape.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -4,7 +4,7 @@ Alcuni servizi utilizzano l'email come username (nome utente), il che ci forza a
 
 	http://ernesto.jimenez@negonation.com:pass@tractis.com
 
-Ma ci&#242; era fonte di problemi. Dal momento che abbiamo due (@) l'interprete di perde nel leggerlo. Per questo motivo, **ActiveResource** &#232; stata leggermente estesa, permettendo [TODO envisioning] un uso pi&#249; semplice dell'autenticazione basata su indirizzi email. Adesso potete utilizzare il seguente codice:
+Ma ci&#242; era fonte di problemi. Dal momento che abbiamo due (@) l'interprete si perde nel leggerlo. Per questo motivo, **ActiveResource** &#232; stata leggermente estesa, prevedendo un uso pi&#249; semplice dell'autenticazione basata su indirizzi email. Adesso potete utilizzare il seguente codice:
 
 	class Person &lt; ActiveResource::Base
 	  self.site = &quot;http://tractis.com&quot;</diff>
      <filename>text/03_ActiveResource/01_email.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,6 @@
 ## Timeout
 
-ActiveResource utilizza il protocollo **HTT** per accedere alle API RESTful, e a causa di ci&#242; e suscettibile a problemi quali risposte lente da parte dei server oppure server non raggiungibili.
+ActiveResource utilizza il protocollo **HTT** per accedere alle API RESTful e a causa di ci&#242; &#232; suscettibile a problemi quali risposte lente da parte dei server, oppure server non raggiungibili.
 In tali casi, le chiamate ad ActiveResource possono andare in timeout. Adesso &#232; possibile controllare il tempo di timeout attraverso l'omonima propriet&#224;:
 
 	class Person &lt; ActiveResource::Base
@@ -10,6 +10,6 @@ In tali casi, le chiamate ad ActiveResource possono andare in timeout. Adesso &#232;
 
 Nell'esempio precedente &#232; stato impostato un timeout di 5 secondi. Un valore basso &#232; consigliato per permettere al vostro sistema il fail-fast, prevenendo una cascata di failure che incapaciterebbe il vostro server.
 
-Internamente ActiveReasource mutua risorse dalla libreria Net:HTTP per costruire risorse HTTP. Quando impostate un valore per la propriet&#224; timeout, il medesimo valore viene definito per **read\_timeout** dell'oggetto Net:HTTP utilizzato.
+Internamente ActiveResource mutua risorse dalla libreria Net:HTTP per costruire risorse HTTP. Quando impostate un valore per la propriet&#224; timeout, il medesimo valore viene definito per **read\_timeout** dell'oggetto Net:HTTP utilizzato.
 
 Il valore di default &#232; pari a 60 secondi.</diff>
      <filename>text/03_ActiveResource/03_timeouts.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
 # ActionPack
 
 ActionPack raccoglie due librerie: ActionView (generazione delle viste per l'utente finale, come HTML, XML, JavaScript, etc) e ActionController (controllo del flusso dell'applicazione).
-(adattato da wikipedia)
\ No newline at end of file
+(Adattato da wikipedia)
\ No newline at end of file</diff>
      <filename>text/04_ActionPack/00.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -12,15 +12,15 @@ Al metodo **time\_zone\_select** &#232; stata aggiunta una nuova opzione, ora potete
 	time_zone_select( &quot;user&quot;, 'time_zone', TimeZone.us_zones, 
 		:default =&gt; &quot;Pacific Time (US &amp; Canada)&quot;)
 
-Nel caso in cui utilizziamo l'opzione **:default**, dovrebbe essere visualizzato il **TimeZone** gi&#224; selezionato.
+Nel caso in cui si utilizzi l'opzione **:default**, dovrebbe essere visualizzato il **TimeZone** gi&#224; selezionato.
 
 ### Il metodo formatted_offset
 
 Il metodo **formatted\_offset** &#232; stato incluso nelle classi **Time** e **DateTime**. Questo metodo restituisce la differenza tra il nostro **TimeZone** e UTC, nel formato **+HH:MM**. Ad esempio, se ci troviamo in Brasile, la differenza restituita dal metodo sar&#224; una stringa uguale a **&quot;-03:00&#8243;**.
-
+[TODO differenza italia da UTC? -1/+1?]
 Vediamo alcuni esempi:
 
-Calcolare la differenza da un data (DateTime):
+Calcolare la differenza da una data (DateTime):
 
 	datetime = DateTime.civil(2000, 1, 1, 0, 0, 0, Rational(-6, 24))
 	datetime.formatted_offset         # =&gt; &quot;-06:00&#8243;
@@ -35,7 +35,7 @@ Da notare che questo metodo restituisce una stringa (**string**), che pu&#242; esser
 
 ### Il metodo with\_env\_tz
 
-Il metodo **with\_env\_tz** ci consente di scrivere test realtivi a fusi orari differenti con molta semplicit&#224;:
+Il metodo **with\_env\_tz** ci consente di scrivere test relativi a fusi orari differenti con molta semplicit&#224;:
 
 	def test_local_offset
 	  with_env_tz 'US/Eastern' do
@@ -69,8 +69,8 @@ Il metodo **TimeZone#now** &#232; stato modificato per ritornare un oggetto **Active
 
 ### Compare\_with\_coercion
 
-Il metodo **compare\_with\_coercion** (e il suo alias &lt;=&gt;) &#232; stato inserito nelle classi **Time** e **DateTime** rendendo possibile effettuare comparazioni cronologiche tra le classi **Time** e **DateTime**, e le instanze di  **ActiveSupport::TimeWithZone**.
-Per comprendere meglio, diamo un'occhita a questo esempio (i risultati di ogni linea sono contenuti nei commenti):
+Il metodo **compare\_with\_coercion** (e il suo alias &lt;=&gt;) &#232; stato inserito nelle classi **Time** e **DateTime** rendendo possibile effettuare comparazioni cronologiche tra le classi **Time** e **DateTime** e le instanze di **ActiveSupport::TimeWithZone**.
+Per comprendere meglio, diamo un'occhiata a questo esempio (i risultati di ogni linea sono contenuti nei commenti):
 
 	Time.utc(2000) &lt;=&gt; Time.utc(1999, 12, 31, 23, 59, 59, 999) # 1
 	Time.utc(2000) &lt;=&gt; Time.utc(2000, 1, 1, 0, 0, 0) # 0</diff>
      <filename>text/04_ActionPack/01_timezone.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,11 @@
 ## Auto Link
 
-Il metodo **auto\_link** prende un qualunque testo come parametro, e se in questo testo sono presenti indirizzi realtivi as e-mail o siti internet, restituisce lo stesso testo ma con i link.
+Il metodo **auto\_link** prende un qualunque testo come parametro e se in questo testo sono presenti indirizzi realtivi ad e-mail o siti internet, restituisce lo stesso testo ma con i link.
 
 Ad esempio:
 
 	auto_link(&quot;Visita questo sito ora: http://www.rubyonrails.com&quot;)
-	# =&gt; Visita questo sito ora: http://www.rubyonrails.com
+	# =&gt; Visita questo sito ora: &lt;a href=&quot;http://www.rubyonrails.com&quot;&gt;http://www.rubyonrails.com&lt;/a&gt;
 
 Alcuni siti, come Amazon, utilizzano il simbolo &quot;=&quot; nei loro URL. Questo metodo non riconosce quel simbolo. Ecco come si comporta in questo caso:
 </diff>
      <filename>text/04_ActionPack/02_auto_link.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,7 @@ Una prassi molto comune nello sviluppo con Rails &#232; l'utilizzo di **partials** p
 
 Un **Partial** &#232; un frammento di codice (un template). Utilizzare i **partial** offre il vantaggio di evitare un'inutile ripetizione del codice. Utilizzare un **partial** &#232; molto semplice, potete iniziare con qualcosa come: **render :partial =&gt; &quot;name&quot;**. Successivamente, dovete creare un file con il nome del vostro **partial** anteponendovi un trattino basso (underscore). Tutto qui.
 
-Il codice che abbiamo appena visto mostra come abbiamo sempre utilizzato i **partials**, ma in questa nuova versione di rails possiamo fare la stessa cosa, in modo diverso, come in:
+Il codice che abbiamo appena visto mostra come abbiamo sempre utilizzato i **partials**, ma in questa nuova versione di Rails possiamo fare la stessa cosa, in modo diverso, come in:
 
 	&lt;% form_for(@user) do |f| %&gt;
 		&lt;%= render :partial =&gt; f %&gt;</diff>
      <filename>text/04_ActionPack/04_partials.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -20,7 +20,7 @@ In un file *index.atom.builder*:
 	  end
 	end
 
-Che cos'&#232; un feed Atom ? Atom &#232; il nome di un insieme di stili e metadati basati su XML. In altre parole &#232; un protocollo per pubblicare contenuti e relativi aggiornamenti su internet, come in un blog as esempio. I feed sono sono sempre pubblicati in XML, e Atom viene identificato con un media type application/atom+xml.
+Che cos'&#232; un feed Atom ? Atom &#232; il nome di un insieme di stili e metadati basati su XML. In altre parole &#232; un protocollo per pubblicare contenuti e relativi aggiornamenti su internet, come in un blog ad esempio. I feed sono sono sempre pubblicati in XML e Atom viene identificato con un media type application/atom+xml.
 
 Nella prima versione di Rails 2.0 questo metodo accettava parametri come **:language**, **:root_url** e **:url**, potete ottenere altre informazioni a riguardo nella documentazione di Rails. Con i miglioramenti introdotti, possiamo includere nuovi namespace nel primo elemento del feed (root). Ad esempio:
 </diff>
      <filename>text/04_ActionPack/05_atom_feed.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -2,7 +2,7 @@
 
 Ora tutti i metodi **fragment\_cache\_key** restituiscono per default il namespace 'view/' come prefisso.
 
-Tutte le modalit&#224; di cache sono state rimosse da **ActionController::Caching::Fragments::*** ed ora si possono trovare in **ActiveSupport::Cache::***. In questo caso, se avete utilizzato, ad esempio, un metodo di caching come **ActionController::Caching::Fragments::MemoryStore**, dovrete cambiare ogni riferimento in **ActiveSupport::Cache::MemoryStore**.
+Tutte le modalit&#224; di cache sono state rimosse da **ActionController::Caching::Fragments::** ed ora si possono trovare in **ActiveSupport::Cache::**. In questo caso, se avete utilizzato, ad esempio, un metodo di caching come **ActionController::Caching::Fragments::MemoryStore**, dovrete cambiare ogni riferimento in **ActiveSupport::Cache::MemoryStore**.
 
 **ActionController::Base.fragment\_cache\_store** &#232; stato rimosso e **ActionController::Base.cache\_store** ha preso il suo posto.
 
@@ -19,7 +19,7 @@ In **ActiveRecord::Base** &#232; stato incluso il metodo **cache\_key** per facilita
 
 Sono stati inclusi i metodi **ActiveSupport::Gzip.decompress/compress** per facilitare l'uso del wrapper di **Zlib**.
 
-Adesso potete utilizzare **config.cache\_store** tra le opzioni di ambiente (environment) per specificare la modalit&#224; di caching di default. E' bene notare che se la directory **tmp/cache** esiste, allora il default &#232; **FileStore**; altrimeti viene utilizzato **MemoryStore**. Potete configurare secondo le seguenti modalit&#224;:
+Adesso potete utilizzare **config.cache\_store** tra le opzioni di ambiente (environment) per specificare la modalit&#224; di caching di default. E' bene notare che se la directory **tmp/cache** esiste, allora il default &#232; **FileStore**; altrimenti viene utilizzato **MemoryStore**. Potete configurare secondo le seguenti modalit&#224;:
 
 	config.cache_store = :memory_store
 	config.cache_store = :file_store, &quot;/path/to/cache/directory&quot;</diff>
      <filename>text/04_ActionPack/06_cache.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
 # ActionController
 
-ActionController &#232; il livello responsabile della ricezione delle richieste web e di prendere le decisioni di cosa sta accadendo per renderizzare o redirigere la richiesta a un'altra action.
+ActionController &#232; il livello responsabile per la ricezione delle richieste web e per prendere le decisioni di cosa sta accadendo per renderizzare o redirigere la richiesta a un'altra action.
 Una action &#232; definita come metodo pubblico insieme ai controller che sono automaticamente disponibili tramite le routes.</diff>
      <filename>text/05_ActionController/00.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -2,24 +2,24 @@
 
 ### Map.root
 Ora quando si usa **map.root** si pu&#242; essere pi&#249; **DRY** usando gli alias.
-Nelle precedenti versioni di rails si faceva qualcosa del tipo:
+Nelle precedenti versioni di Rails si faceva qualcosa del tipo:
 
 	map.new_session :controller =&gt; 'sessions', :action =&gt; 'new'
 	map.root :controller =&gt; 'sessions', :action =&gt; 'new'
-
+
 Ora si pu&#242; fare in questo modo:
 
 	map.new_session :controller =&gt; 'sessions', :action =&gt; 'new'
 	map.root :new_session
 	
-### Riconoscimento delle route
-La vecchia implementazione controllava tutte le route, una per una e spesso impiegava molto tempo. &#200; stata sviluppata una nuova e pi&#249; efficiente implementazione. Viene creato un albero di route e il riconoscimento &#232; fatto tramite i prefissi, saltando le route simili. In questo modo il tempo di riconoscimento viene ridotto di circa 2,7 volte.
-
-Tutta la nuova implementazione &#232; nel file **recognition\_optimisation.rb** e il suo funzionamento dettegliato &#232; ben spiegato nei commenti. Per maggiori informazioni riguardo la sua implementazione si guardi la documentazione nel codice sorgente stesso.
+### Riconoscimento delle route
+La vecchia implementazione controllava tutte le route, una per una e spesso impiegava molto tempo. &#200; stata sviluppata una nuova e pi&#249; efficiente implementazione. Viene creato un albero di route ed il riconoscimento &#232; fatto tramite i prefissi, saltando le route simili. In questo modo il tempo di riconoscimento viene ridotto di circa 2,7 volte.
+
+Tutta la nuova implementazione &#232; nel file **recognition\_optimisation.rb** ed il suo funzionamento dettagliato &#232; ben spiegato nei commenti. Per maggiori informazioni riguardo la sua implementazione si guardi la documentazione nel codice sorgente stesso.
 
 ### Assert_routing
-
-Ora &#232; possibile testare una route con un metodo HTTP. Vedi l'esempio:
+
+Ora &#232; possibile testare una route con un metodo HTTP. Vedi l'esempio:
 
 	assert_routing({ :method =&gt; 'put',
 	                 :path =&gt; '/product/321' },
@@ -28,21 +28,21 @@ Ora &#232; possibile testare una route con un metodo HTTP. Vedi l'esempio:
 	                 :id =&gt; &quot;321&quot; })
 	
 ### Map.resources
-
+
 Immagina di avere un sito tutto scritto in una lingua diversa dall'inglese e vuoi impostare le tue route per usare la stessa lingua. In altre parole, invece di avere:
 
 	http://www.miosito.it/products/1234/reviews
-
+
 Vorresti avere qualcosa del tipo:
 
 	http://www.miosito.it/prodotti/1234/commenti
-
+
 Questo era gi&#224; possibile ottenerlo, ma non in modo semplice e senza compromettere le convenzioni di rails.
-
+
 Ora c'&#233; l' opzione **:as** con **map.resources** per personalizzare le proprie route. Vedi l'esempio per avere le URL sopra in italiano:
 
 	map.resources :products, :as =&gt; 'prodotti' do |product|
 	  # product_reviews_path(product) ==
 	  # '/prodotti/1234/commenti&#8217;
 	  product.resources :product_reviews, :as =&gt; 'commenti'
-	end
+	end</diff>
      <filename>text/05_ActionController/01_routing.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,3 @@
 #ActionView
 
-ActionView &#232; il livello responsabile della generazione dell'interfaccia visibile agli utenti attraverso la conversione di template ERB.
+ActionView &#232; il livello responsabile per la generazione dell'interfaccia visibile agli utenti attraverso la conversione di template ERB.</diff>
      <filename>text/06_ActionView/00.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,6 @@
 ## ActionView::Helpers::DateHelper
 
-Ora, tutti questi metodi del moduli che trattano le date (**date\_select**, **time\_select**, **select\_datetime**, ecc.) accettano le opzioni **HTML**. Osservare l'esempio che usa **date\_select**
+Ora, tutti questi metodi dei moduli che trattano le date (**date\_select**, **time\_select**, **select\_datetime**, ecc.) accettano le opzioni **HTML**. Osservare l'esempio che usa **date\_select**
 
 	&lt;%= date_select 'item','happening', :order =&gt; [:day], :class =&gt; 'foobar'%&gt;
 	</diff>
      <filename>text/06_ActionView/02_date_helper.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -2,9 +2,9 @@
 
 ### register\_javascript\_expansion
 
-Questo metodo registra uno o pi&#249; file javascript per essere inclusi quando un simbolo, definito dal programmatore, &#232; dato come parametro al metodo **javascript\_include\_tag**. L'idea &#232; di chiamare questo metodo dentro il file  **init.rb** del plugin, per registrare i file javascript che il plugin mette in **public/javascripts**. Ecco come funziona:
+Questo metodo registra uno o pi&#249; file javascript per essere inclusi quando un simbolo definito dal programmatore &#232; passato come parametro al metodo **javascript\_include\_tag**. L'idea &#232; di chiamare questo metodo all'interno del file  **init.rb** del plugin, per registrare i file javascript che il plugin mette in **public/javascripts**. Ecco come funziona:
 
-	# Nel file the init.rb
+	# Nel file init.rb
 	ActionView::Helpers::AssetTagHelper.register_javascript_expansion 
 		:monkey =&gt; [&quot;head&quot;, &quot;body&quot;, &quot;tail&quot;] 
 </diff>
      <filename>text/06_ActionView/03_asset_tag_helper.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -2,7 +2,7 @@
 
 ### number\_to\_currency
 
-Il metodo **number\_to\_currency** ora accetta l'opzione **:format** come parametro, quindi &#232; possibile formattare il valore di ritorno del metodo. Nelle versioni passate, quando si doveva formattare la valuta locale, bisognava includere uno spazio davanti l'opzione **:unit** per avere il formato dell'output corretto. Osservare gli esempi:
+Il metodo **number\_to\_currency** ora accetta l'opzione **:format** come parametro, quindi &#232; possibile formattare il valore di ritorno del metodo. Nelle versioni passate, quando si doveva formattare la valuta locale, bisognava includere uno spazio davanti all'opzione **:unit** per avere il formato dell'output corretto. Osservare gli esempi:
 
 	# &#8364; &#232; il simbolo dell'Euro
 	number_to_currency(9.99, :separator =&gt; &quot;,&quot;, :delimiter =&gt; &quot;.&quot;, :unit =&gt; &quot;&#8364;&quot;)</diff>
      <filename>text/06_ActionView/05_number_helper.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -2,23 +2,23 @@
 
 ### excerpt
 
-Il metodo **excerpt** &#232; un helper che trova una parola dentro un testo e restituisce un'abbreviazione di quel testo con il numero di caratteri, dati come parametro, prima e dopo la parola. Se necessario verranno aggiunti &quot;&#8230;&quot;. Esempio:
+Il metodo **excerpt** &#232; un helper che trova una parola all'interno di un testo e restituisce un'abbreviazione di quel testo con il numero di caratteri, dati come parametro, prima e dopo la parola. Se necessario verranno aggiunti &quot;&#8230;&quot;. Esempio:
 
 	excerpt('This is an example', 'an', 5)
 	# =&gt; &quot;&#8230;s is an examp&#8230;&quot;
-
+
 Il problema &#232; che &#232; sbagliato. Il metodo ha restituito 6 caratteri e non 5. Questo bug &#232; stato corretto. Ecco l'output corretto di questo metodo:
 
 	excerpt('This is an example', 'an', 5)
 	# =&gt; &quot;&#8230;s is an exam&#8230;&quot;
 	
 ###simple\_format
-
-Il metodo **simple\_format** principalmente riceve come parametro un qualsiasi testo e lo formatta in modo semplice in **HTML**. Prende il testo e sostituisce a capo (\n) con il tag **HTML** &quot;&lt; br /&gt;&quot; e quando si hanno due a capo consecutivi (\n\n) separa il testo nel paragrafo con il tag &quot;&lt; p&gt;&quot;.
 
-In Rails 2.1 questo metodo supporta ulteriori parametri. Oltre al testo, si pu&#242; specificare quali attributi **HTML** vogliamo che il tag &quot;&lt; p&gt;&quot; abbia. Esempio: 
+Il metodo **simple\_format** basilarmente riceve come parametro un qualsiasi testo e lo formatta in modo semplice in **HTML**. Prende il testo e sostituisce a capo (\n) con il tag **HTML** &quot;&lt; br /&gt;&quot; e quando si hanno due a capo consecutivi (\n\n) separa il testo nel paragrafo con il tag &quot;&lt; p&gt;&quot;.
+
+In Rails 2.1 questo metodo supporta ulteriori parametri. Oltre al testo, si pu&#242; specificare quali attributi **HTML** vogliamo che il tag &quot;&lt; p&gt;&quot; abbia. Esempio: 
 
 	simple_format(&quot;Hello Mom!&quot;, :class =&gt; 'description')
 	# =&gt; &quot;&lt;p class=&#8217;description&#8217;&gt;Hello Mom!&lt;/p&gt;&quot;
 
-Gli attributi **HTML** saranno aggiunti in tutti i tag &quot;&lt; p&gt;&quot; creati dal metodo.
+Gli attributi **HTML** saranno aggiunti in tutti i tag &quot;&lt; p&gt;&quot; creati dal metodo.</diff>
      <filename>text/06_ActionView/06_text_helper.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -45,4 +45,4 @@ Notate che stiamo creando una colonna con **:precision =&gt; 6** e **:scale =&gt; 2**.
 	&lt;/tr&gt;
 &lt;/table&gt;
 
-Guardate la colonna &quot;cost&quot; che abbiamo appena creato. E' semplicemente **numeric**, mentre volevamo ottenere una colonna simile a &quot;price&quot;, che come possiamo vedere sopra &#232; un **numeric(6,2)**. Con Rails 2.1 questo errore non c'&#232; pi&#249;, e la colonna verr&#224; creata correttamente.   
+Guardate la colonna &quot;cost&quot; che abbiamo appena creato. E' semplicemente **numeric**, mentre volevamo ottenere una colonna simile a &quot;price&quot;, che come possiamo vedere sopra &#232; un **numeric(6,2)**. Con Rails 2.1 questo errore non c'&#232; pi&#249; e la colonna verr&#224; creata correttamente.   </diff>
      <filename nil="true"></filename>
    </modified>
    <modified>
      <diff>@@ -10,12 +10,12 @@ In Rails 2.0 il file *application.rb* &#232; molto simile a:
 
 Osservate la chiamata al metodo **protect\_from\_forgery**.
 
-Avete mai sentito parlare di &quot;Cross site scripting&quot;? E' questo il nome dato ad una falla nella sicurezza facilmente riscontrabile in molti siti internet ed applicazioni web, essa consente a persone malintenzionate (e mi riferisco a teenager che non hanno nulla da fare n&#233; alcuna vita sociale) di alterare il contenuto delle pagine web, effettuare attacchi di tipo &quot;phishing&quot;, e prendere il controllo del browser tramite codice JavaScript ed in molti casi forzare l'utente ad eseguire i comandi da essi (i teenager) desiderati. Quest ultimo tipo di attacco viene chiamato &quot;cross-site request forgery&quot;.
+Avete mai sentito parlare di &quot;Cross site scripting&quot;? E' questo il nome dato ad una falla nella sicurezza facilmente riscontrabile in molti siti internet ed applicazioni web, essa consente a persone malintenzionate (e mi riferisco a teenager che non hanno nulla da fare n&#233; alcuna vita sociale) di alterare il contenuto delle pagine web, effettuare attacchi di tipo &quot;phishing&quot; e prendere il controllo del browser tramite codice JavaScript ed in molti casi forzare l'utente ad eseguire i comandi da essi (i teenager) desiderati. Quest'ultimo tipo di attacco viene chiamato &quot;cross-site request forgery&quot;.
 
-Cross Site Request Forgery &#232; un tipo di attacco che obbliga utenti legittimi ad eseguire dei comandi senza che gli stessi ne siano a conoscenza. Con l'aumento dell'utilizzo di AJAX, la cosa si fa ancora pi&#249; grave.
+Cross Site Request Forgery &#232; un tipo di attacco che obbliga utenti legittimi ad eseguire dei comandi inconsapevolmente. Con l'aumento dell'utilizzo di AJAX, la cosa si fa ancora pi&#249; grave.
 
 Allo stato attuale, questo metodo &#232; utile per far s&#236; che tutti i form che la vostra applicazione ricever&#224;
-provengano da essa stessa, e non da un link appartenente ad altro sito. Lo scopo viene raggiunto includendo in tutti i form e le richieste AJAX generate da Rails un token che poggia sulla sessione corrente inoltre, in seconda battuta, lo stesso token &#232; soggetto a verifica da parte del controller.
+provengano da essa stessa e non da un link appartenente ad altro sito. Lo scopo viene raggiunto includendo in tutti i form e le richieste AJAX generate da Rails un token che poggia sulla sessione corrente inoltre, in seconda battuta, lo stesso token &#232; soggetto a verifica da parte del controller.
 
 Ricordiamo che le richieste di tipo &quot;GET&quot; non sono protette. Tuttavia, rispettandone la semantica (recupero e _mai_ modifica o salvataggio delle informazioni) ci&#242; non costituisce un problema.
 </diff>
      <filename nil="true"></filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>47ad691cf1597139c8b7cf2518445051a56a9ade</id>
    </parent>
  </parents>
  <author>
    <name>Carlo Pecchia</name>
    <email>c.pecchia@gmail.com</email>
  </author>
  <url>http://github.com/carlopecchia/rails21-book/commit/f3b8f0e38c82c6e41e197ada99d0da0be5324f79</url>
  <id>f3b8f0e38c82c6e41e197ada99d0da0be5324f79</id>
  <committed-date>2008-06-23T23:48:07-07:00</committed-date>
  <authored-date>2008-06-23T23:48:07-07:00</authored-date>
  <message>Revisione di Massimiliano Giroldi.</message>
  <tree>47ef070cef63ae1cfabc1a77559fa7b78d42bcf8</tree>
  <committer>
    <name>Carlo Pecchia</name>
    <email>c.pecchia@gmail.com</email>
  </committer>
</commit>
