diff options
Diffstat (limited to 'it-it')
| -rw-r--r-- | it-it/asciidoc-it.html.markdown | 2 | ||||
| -rw-r--r-- | it-it/elixir-it.html.markdown | 18 | ||||
| -rw-r--r-- | it-it/go-it.html.markdown | 14 | ||||
| -rw-r--r-- | it-it/markdown.html.markdown | 27 | ||||
| -rw-r--r-- | it-it/matlab-it.html.markdown | 16 | ||||
| -rw-r--r-- | it-it/php-composer-it.html.markdown | 193 | ||||
| -rw-r--r-- | it-it/pyqt-it.html.markdown | 8 | ||||
| -rw-r--r-- | it-it/rst-it.html.markdown | 6 | ||||
| -rw-r--r-- | it-it/toml-it.html.markdown | 552 | 
9 files changed, 516 insertions, 320 deletions
| diff --git a/it-it/asciidoc-it.html.markdown b/it-it/asciidoc-it.html.markdown index 47a57349..eaa2372b 100644 --- a/it-it/asciidoc-it.html.markdown +++ b/it-it/asciidoc-it.html.markdown @@ -6,7 +6,7 @@ contributors:  translators:      - ["Ale46", "https://github.com/ale46"]  lang: it-it -filename: asciidoc-it.md +filename: asciidoc-it.adoc  ---  AsciiDoc è un linguaggio di markup simile a Markdown e può essere usato per qualsiasi cosa, dai libri ai blog. Creato nel 2002 da Stuart Rackman, questo linguaggio è semplice ma permette un buon numero di personalizzazioni. diff --git a/it-it/elixir-it.html.markdown b/it-it/elixir-it.html.markdown index 48afe0c8..ce3e4535 100644 --- a/it-it/elixir-it.html.markdown +++ b/it-it/elixir-it.html.markdown @@ -1,5 +1,5 @@  --- -language: elixir +language: Elixir  contributors:      - ["Luca 'Kino' Maroni", "https://github.com/kino90"]      - ["Joao Marques", "http://github.com/mrshankly"] @@ -21,11 +21,11 @@ e molte altre funzionalità.  # Non esistono commenti multilinea,  # ma puoi concatenare più commenti. -# Per usare la shell di elixir usa il comando `iex`. +# Per usare la shell di Elixir usa il comando `iex`.  # Compila i tuoi moduli con il comando `elixirc`.  # Entrambi i comandi dovrebbero già essere nel tuo PATH se hai installato -# elixir correttamente. +# Elixir correttamente.  ## ---------------------------  ## -- Tipi di base @@ -87,7 +87,7 @@ multi-linea.  <<?a, ?b, ?c>> #=> "abc"  [?a, ?b, ?c]   #=> 'abc' -# `?a` in elixir restituisce il valore ASCII della lettera `a` +# `?a` in Elixir restituisce il valore ASCII della lettera `a`  ?a #=> 97  # Per concatenare liste si usa `++`, per binari si usa `<>` @@ -112,7 +112,7 @@ minore..maggiore = 1..10 # Puoi fare pattern matching anche sugli intervalli  5 * 2  #=> 10  10 / 2 #=> 5.0 -# In elixir l'operatore `/` restituisce sempre un decimale. +# In Elixir l'operatore `/` restituisce sempre un decimale.  # Per fare una divisione intera si usa `div`  div(10, 2) #=> 5 @@ -173,7 +173,7 @@ else  end  # Ti ricordi il pattern matching? -# Moltre strutture di controllo di flusso in elixir si basano su di esso. +# Moltre strutture di controllo di flusso in Elixir si basano su di esso.  # `case` ci permette di confrontare un valore a diversi pattern:  case {:uno, :due} do @@ -307,7 +307,7 @@ Geometria.area({:cerchio, 3})       #=> 28.25999999999999801048  # Geometria.area({:cerchio, "non_un_numero"})  #=> ** (FunctionClauseError) no function clause matching in Geometria.area/1 -# A causa dell'immutabilità dei dati, la ricorsione è molto frequente in elixir +# A causa dell'immutabilità dei dati, la ricorsione è molto frequente in Elixir  defmodule Ricorsione do    def somma_lista([testa | coda], accumulatore) do      somma_lista(coda, accumulatore + testa) @@ -382,7 +382,7 @@ end  ## ---------------------------  # Elixir si basa sul modello degli attori per la concorrenza. -# Tutto ciò di cui abbiamo bisogno per scrivere programmi concorrenti in elixir +# Tutto ciò di cui abbiamo bisogno per scrivere programmi concorrenti in Elixir  # sono tre primitive: creare processi, inviare messaggi e ricevere messaggi.  # Per creare un nuovo processo si usa la funzione `spawn`, che riceve una @@ -434,7 +434,7 @@ self() #=> #PID<0.27.0>  ## Referenze -* [Getting started guide](http://elixir-lang.org/getting_started/1.html) dalla [pagina web ufficiale di elixir](http://elixir-lang.org) +* [Getting started guide](http://elixir-lang.org/getting_started/1.html) dalla [pagina web ufficiale di Elixir](http://elixir-lang.org)  * [Documentazione Elixir](https://elixir-lang.org/docs.html)  * ["Programming Elixir"](https://pragprog.com/book/elixir/programming-elixir) di Dave Thomas  * [Elixir Cheat Sheet](http://media.pragprog.com/titles/elixir/ElixirCheat.pdf) diff --git a/it-it/go-it.html.markdown b/it-it/go-it.html.markdown index 2af2468d..6f974c91 100644 --- a/it-it/go-it.html.markdown +++ b/it-it/go-it.html.markdown @@ -91,7 +91,7 @@ può includere andata a capo.` // Sempre di tipo stringa.      // Stringa letterale non ASCII. I sorgenti Go sono in UTF-8.  	g := 'Σ' // Il tipo runa, alias per int32, è costituito da un code point unicode. -	f := 3.14195 // float64, un numero in virgola mobile a 64-bit (IEEE-754) +	f := 3.14159 // float64, un numero in virgola mobile a 64-bit (IEEE-754)  	c := 3 + 4i  // complex128, rappresentato internamente con due float64. @@ -422,9 +422,9 @@ func richiediServer() {  ## Letture consigliate -La risorsa più importante per imparare il Go è il [sito ufficiale di Go](http://golang.org/). +La risorsa più importante per imparare il Go è il [sito ufficiale di Go](https://go.dev/).  Qui puoi seguire i tutorial, scrivere codice in modo interattivo, e leggere tutti i dettagli. -Oltre al tour, [la documentazione](https://golang.org/doc/) contiene informazioni su +Oltre al tour, [la documentazione](https://go.dev/doc/) contiene informazioni su  come scrivere ottimo codice in Go, documentazione sui package e sui comandi, e  la cronologia delle release. @@ -432,17 +432,17 @@ Anche il documento che definisce il linguaggio è un'ottima lettura. E' semplice  da leggere e incredibilmente corto (rispetto ad altri documenti riguardanti  la creazione di linguaggi). -Puoi giocare con il codice visto finora nel [Go playground](https://play.golang.org/p/Am120Xe7qf). +Puoi giocare con il codice visto finora nel [Go playground](https://go.dev/play/p/Am120Xe7qf).  Prova a cambiarlo e ad eseguirlo dal browser! -Osserva che puoi usare [https://play.golang.org](https://play.golang.org) come +Osserva che puoi usare [https://go.dev/play/](https://go.dev/play/) come  una [REPL](https://en.wikipedia.org/wiki/Read-eval-print_loop) per scrivere  codice all'interno del browser, senza neanche installare Go!  Una lettura importante per capire Go in modo più profondo è il [codice  -sorgente della libreria standard](http://golang.org/src/pkg/). Infatti è +sorgente della libreria standard](https://go.dev/src/). Infatti è  molto ben documentato e costituisce quanto più chiaro e conciso ci sia riguardo  gli idiomi e le buone pratiche del Go. Inoltre, clickando sul nome di una -funzione [nella documentazione](http://golang.org/pkg/) compare il relativo +funzione [nella documentazione](https://go.dev/pkg/) compare il relativo  codice sorgente!  Un'altra ottima risorsa per imparare è [Go by example](https://gobyexample.com/). diff --git a/it-it/markdown.html.markdown b/it-it/markdown.html.markdown index b0a123f1..609d3bb7 100644 --- a/it-it/markdown.html.markdown +++ b/it-it/markdown.html.markdown @@ -72,7 +72,7 @@ __Come pure questo.__  *__E questo!__*  ``` -In Github Flavored Markdown, che è utilizzato per renderizzare i file markdown su Github, è presente anche lo stile barrato: +In GitHub Flavored Markdown, che è utilizzato per renderizzare i file markdown su GitHub, è presente anche lo stile barrato:  ```md  ~~Questo testo è barrato.~~ @@ -183,7 +183,7 @@ Potete inoltre inserire un altro tab (o altri quattro spazi) per indentare il vo  ```md      my_array.each do |item| -        puts item +      puts item      end  ``` @@ -193,14 +193,17 @@ Codice inline può essere inserito usando il carattere backtick `  Giovanni non sapeva neppure a cosa servisse la funzione `go_to()`!  ``` -In Github Flavored Markdown, potete inoltre usare una sintassi speciale per il codice -<pre> -<code class="highlight">```ruby +In GitHub Flavored Markdown, potete inoltre usare una sintassi speciale per il codice + +````md +```ruby  def foobar -    puts "Hello world!" +  puts "Hello world!"  end -```</code></pre> -Se usate questa sintassi, il testo non richiederà di essere indentato, inoltre Github userà l'evidenziazione della sintassi del linguaggio specificato dopo i \`\`\` iniziali +``` +```` + +Se usate questa sintassi, il testo non richiederà di essere indentato, inoltre GitHub userà l'evidenziazione della sintassi del linguaggio specificato dopo i \`\`\` iniziali  ## Linea orizzontale  Le linee orizzontali (`<hr/>`) sono inserite facilmente usanto tre o più asterischi o trattini, con o senza spazi.  @@ -253,7 +256,7 @@ Ma non è comunemente usato.  Le immagini sono inserite come i link ma con un punto esclamativo inserito prima delle parentesi quadre!  ```md - +  ```  E la modalità a riferimento funziona esattamente come ci si aspetta @@ -282,7 +285,7 @@ Voglio inserire *questo testo circondato da asterischi* ma non voglio che venga  ```  ### Combinazioni di tasti -In Github Flavored Markdown, potete utilizzare il tag `<kbd>` per raffigurare i tasti della tastiera. +In GitHub Flavored Markdown, potete utilizzare il tag `<kbd>` per raffigurare i tasti della tastiera.  ```md  Il tuo computer è crashato? Prova a premere @@ -290,7 +293,7 @@ Il tuo computer è crashato? Prova a premere  ```  ### Tabelle -Le tabelle sono disponibili solo in Github Flavored Markdown e sono leggeremente complesse, ma se proprio volete inserirle fate come segue: +Le tabelle sono disponibili solo in GitHub Flavored Markdown e sono leggeremente complesse, ma se proprio volete inserirle fate come segue:  ```md  | Col1                 | Col2     | Col3               | @@ -307,4 +310,4 @@ Col 1 | Col2 | Col3  ```  --- -Per altre informazioni, leggete il post ufficiale di John Gruber sulla sintassi [qui](http://daringfireball.net/projects/markdown/syntax) e il magnifico cheatsheet di Adam Pritchard [qui](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet). +Per altre informazioni, leggete il post ufficiale di John Gruber sulla sintassi [qui](https://daringfireball.net/projects/markdown/syntax) e il magnifico cheatsheet di Adam Pritchard [qui](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet). diff --git a/it-it/matlab-it.html.markdown b/it-it/matlab-it.html.markdown index 38be8848..2668815f 100644 --- a/it-it/matlab-it.html.markdown +++ b/it-it/matlab-it.html.markdown @@ -1,5 +1,5 @@  --- -language: Matlab +language: MATLAB  contributors:      - ["mendozao", "http://github.com/mendozao"]      - ["jamesscottbrown", "http://jamesscottbrown.com"] @@ -114,7 +114,7 @@ A.d.e = false;  % Vettori  x = [4 32 53 7 1] -x(2) % ans = 32, gli indici in Matlab iniziano da 1, non da 0 +x(2) % ans = 32, gli indici in MATLAB iniziano da 1, non da 0  x(2:3) % ans = 32 53  x(2:end) % ans = 32 53 7 1 @@ -466,7 +466,7 @@ perms(x) % lista tutte le permutazioni di elementi di x  % Classi -% Matlab supporta la programmazione orientata agli oggetti. +% MATLAB supporta la programmazione orientata agli oggetti.  % La classe deve essere messa in un file con lo stesso nome della classe e estensione .m  % Per iniziare, creiamo una semplice classe per memorizzare waypoint GPS  % Inizio WaypointClass.m @@ -488,7 +488,7 @@ classdef WaypointClass % Il nome della classe.      end      % Se si vuole aggiungere due oggetti Waypoint insieme senza chiamare -    % una funzione speciale si può sovradefinire una funzione aritmetica di Matlab come questa: +    % una funzione speciale si può sovradefinire una funzione aritmetica di MATLAB come questa:      function r = plus(o1,o2)        r = WaypointClass([o1.latitude] +[o2.latitude], ...                          [o1.longitude]+[o2.longitude]); @@ -500,7 +500,7 @@ end  % Si può creare un oggetto della classe usando un costruttore  a = WaypointClass(45.0, 45.0) -% Le proprietà della classe si comportano esattamente come una Struttura Matlab. +% Le proprietà della classe si comportano esattamente come una Struttura MATLAB.  a.latitude = 70.0  a.longitude = 25.0 @@ -511,15 +511,15 @@ ans = multiplyLatBy(a,3)  % non necessita di essere passato al metodo.  ans = a.multiplyLatBy(a,1/3) -% Le funzioni Matlab possono essere sovradefinite per gestire oggetti. -% Nel metodo sopra, è stato sovradefinito come Matlab gestisce +% Le funzioni MATLAB possono essere sovradefinite per gestire oggetti. +% Nel metodo sopra, è stato sovradefinito come MATLAB gestisce  % l'addizione di due oggetti Waypoint.  b = WaypointClass(15.0, 32.0)  c = a + b  ``` -## Di più su Matlab +## Di più su MATLAB  * Sito ufficiale [http://http://www.mathworks.com/products/matlab/](http://www.mathworks.com/products/matlab/)  * Forum ufficiale di MATLAB: [http://www.mathworks.com/matlabcentral/answers/](http://www.mathworks.com/matlabcentral/answers/) diff --git a/it-it/php-composer-it.html.markdown b/it-it/php-composer-it.html.markdown new file mode 100644 index 00000000..509ec336 --- /dev/null +++ b/it-it/php-composer-it.html.markdown @@ -0,0 +1,193 @@ +--- +category: tool +tool: composer +contributors: +    - ["Brett Taylor", "https://github.com/glutnix"] +translator: +    - ["Agostino Fiscale", "https://github.com/agostinofiscale"] +lang: it-it +filename: LearnComposer-it.sh +--- + +[Composer](https://getcomposer.org/) è uno strumento che ti aiuta a gestire le  +dipendenze in PHP. Ti permette di dichiarare le librerie utilizzate dal tuo  +progetto e di installarle/aggiornarle per te. + +# Installazione + +```sh +# Se installi l'eseguibile in una cartella... +curl -sS https://getcomposer.org/installer | php +# ...dovrai utilizzare questo approccio, invocando Composer in questo modo: +php composer.phar about + +# Se installi l'eseguibile nella directory ~/bin/composer +# Nota: assicurati che ~/bin si trovi nella variabile di ambiente PATH +curl -sS https://getcomposer.org/installer | php -- --install-dir=~/bin --filename=composer +``` + +Gli utenti Windows possono seguire le istruzioni per [installarlo su Windows](https://getcomposer.org/doc/00-intro.md#installation-windows). + +## Assicuriamoci che il tutto abbia funzionato correttamente + +```sh +# Controlla la versione e la lista delle opzioni disponibili +composer + +# Ottieni ulteriori informazioni riguardanti le opzioni +composer help require + +# Controlla se Composer ha tutto il necessario per funzionare come si deve +# e se è aggiornato correttamente all'ultima versione disponibile. +composer diagnose +composer diag # alias + +# Aggiorna Composer all'ultima versione disponibile +composer self-update +composer self # alias +``` + +# Cominciamo ad usare Composer + +Composer memorizza le dipendenze necessarie nel file `composer.json`. +Puoi editare questo file manualmente, ma è meglio che lasci che Composer se ne  +occupi per te. + +```sh +# Crea un nuovo progetto nella cartella attuale +composer init +# ti verranno chieste delle domande interrative riguardanti il tuo progetto.  +# Puoi evitare di rispondere almeno che tu non stia sviluppando altri progetti  +# che che possano dipendere da questo. + +# Se il file composer.json esiste già, scarichera' le dipendenze necessarie +composer install + +# Scarica le dipendenze necessarie per l'ambiente di produzione +composer install --no-dev + +# Aggiunge una dipendenza per l'ambiente di produzione +composer require guzzlehttp/guzzle +# automaticamente selezionera' l'ultima versione, la scarichera' e la aggiungera' +# come dipendenza nell'apposito campo del file composer.json. + +composer require guzzlehttp/guzzle:6.0.* +# scarichera' l'ultima versione disponibile corrispondente al pattern (es. 6.0.2) +# e lo aggiungera' come dipendenza nell'apposito campo del file composer.json. + +composer require --dev phpunit/phpunit:~4.5.0 +# aggiungera' la dipendenza nell'ambiente di sviluppo utilizzando l'ultima versione +# disponibile nel range >=4.5.0 e < 4.6.0. + +composer require-dev phpunit/phpunit:^4.5.0 +# aggiungera' la dipendenza nell'ambiente di sviluppo utilizzando l'ultima versione +# disponibile nel range >=4.5.0 and < 5.0. + +# Per ulteriori dettagli riguardo le versioni, vedi [la documentazione di Composer sulle versioni](https://getcomposer.org/doc/articles/versions.md) per ulteriori dettagli + +# Per vedere quali pacchetti sono installabili e quali sono gia' stati installati +composer show + +# Per vedere solo quali pacchetti sono gia' stati installati +composer show --installed + +# Per trovare una dipendenza con 'mailgun' nel suo nome o nella descrizione. +composer search mailgun +``` + +[Packagist.org](https://packagist.org/) è il repository principale per i pacchetti +di Composer.  Cerca qui pacchetti di terze-parti utili per il tuo progetto. + +## `composer.json` vs `composer.lock` + +Il file `composer.json` memorizza la versione che si preferisce per ogni dipendenza, +insieme ad altre informazioni. + +Il file `composer.lock` memorizza quale versione è stata scaricata per ogni +dipendenza. Non editare mai questo file. + +Se includi il file `composer.lock` nella tua repository git, ogni sviluppatore +andra' a installare la versione attualmente utilizzata dal tuo progetto per +ogni dipendenza. Anche quando una nuova versione è stata rilasciata, Composer  +andra' a installare la versione registrata nel file lock. + +```sh +# Se vuoi aggiornare tutte le dipendenze all'ultima versione che corrisponde al pattern descritto +composer update + +# Se vuoi scaricare l'ultima versione di una particolare dipendenza: +composer update phpunit/phpunit + +# Se vuoi cambiare la versione di una una dipendenza, potresti dover rimuovere +# quello attualmente selezionato, per poi richiedere quello corretto successivamente, +# attraverso i seguenti comandi: +composer remove --dev phpunit/phpunit +composer require --dev phpunit/phpunit:^5.0 + +``` + +## Autoloader + +Composer crea una classe autoloader che puoi richiamare nella tua applicazione. +Puoi creare instanze delle classi tramite il loro namespace. + +```php +require __DIR__ . '/vendor/autoload.php'; + +$mailgun = new Mailgun\Mailgun("key"); +``` + +### PSR-4 Autoloader + +Puoi aggiungere i tuoi namespace all'autoloader. + +Nel file `composer.json`, aggiungi il campo "autoload": + +```json +{ +  "autoload": { +    "psr-4": {"Acme\\": "src/"} +  } +} +``` +Questo dira' all'autoloader di controllare ogni risorsa che corrisponde al  +namespace `\Acme\` all'interno della cartella `src`. + +In alternativa puoi usare [PSR-0, una Classmap o una lista di file da includere](https://getcomposer.org/doc/04-schema.md#autoload). +Inoltre e' possibile anche utilizzare `autoload-dev` dedicato all'ambiente di sviluppo. + +Quando aggiungi o modifichi una chiave, dovrai ricompilare l'autoload attraverso: + +```sh +composer dump-autoload +composer dump # alias + +# Ottimizza i pacchetti PSR0 e PSR4 per essere caricati anche con le classmap. +# Sara' lento, ma migliorera' le performance in produzione. +composer dump-autoload --optimize --no-dev +``` + +# La cache di Composer + +```sh +# Composer utilizzera i pacchetti scaricati anche per i progetti futuri. Per evitare che accada: +composer clear-cache +``` + +# Problemi?  + +```sh +composer diagnose +composer self-update +composer clear-cache +``` + +## Argomenti che non sono stati (ancora) discussi in questo tutorial + +* Creare e distribuire pacchetti personali su Packagist.org o altrove +* Pre- e post- script hooks: eseguire operazioni quando vengono eseguiti degli eventi + +### References + +* [Composer - Dependency Manager for PHP](https://getcomposer.org/) +* [Packagist.org](https://packagist.org/) diff --git a/it-it/pyqt-it.html.markdown b/it-it/pyqt-it.html.markdown index 7238dd7b..7b5a98c2 100644 --- a/it-it/pyqt-it.html.markdown +++ b/it-it/pyqt-it.html.markdown @@ -14,12 +14,12 @@ lang: it-it  Questo è un adattamento sull'introduzione di C ++ a QT di [Aleksey Kholovchuk] (https://github.com/vortexxx192  ), alcuni degli esempi di codice dovrebbero avere la stessa funzionalità -che avrebbero se fossero fatte usando pyqt!  +che avrebbero se fossero fatte usando pyqt!  ```python  import sys  from PyQt4 import QtGui -	 +  def window():  	# Crea un oggetto applicazione      app = QtGui.QApplication(sys.argv) @@ -47,7 +47,7 @@ if __name__ == '__main__':  Per ottenere alcune delle funzionalità più avanzate in **pyqt**, dobbiamo iniziare a cercare di creare elementi aggiuntivi.  Qui mostriamo come creare una finestra popup di dialogo, utile per chiedere all'utente di confermare una decisione o fornire informazioni -```Python  +```python  import sys  from PyQt4.QtGui import *  from PyQt4.QtCore import * @@ -66,7 +66,7 @@ def window():      w.setWindowTitle("PyQt Dialog")      w.show()      sys.exit(app.exec_()) -	 +  # Questa funzione dovrebbe creare una finestra di dialogo con un pulsante  # che aspetta di essere cliccato e quindi esce dal programma  def showdialog(): diff --git a/it-it/rst-it.html.markdown b/it-it/rst-it.html.markdown index a834e899..3885cbd8 100644 --- a/it-it/rst-it.html.markdown +++ b/it-it/rst-it.html.markdown @@ -81,11 +81,11 @@ Anche le tabelle più complesse possono essere inserite facilmente (colonne e/o  Esistono diversi modi per creare collegamenti: -- Aggiungendo un underscore dopo una parola: Github_ e aggiungendo l'URL di destinazione dopo il testo (questo metodo ha il vantaggio di non inserire URL non necessari all'interno del testo leggibile). +- Aggiungendo un underscore dopo una parola: GitHub_ e aggiungendo l'URL di destinazione dopo il testo (questo metodo ha il vantaggio di non inserire URL non necessari all'interno del testo leggibile).  - Digitando un URL completo: https://github.com/ (verrà automaticamente convertito in un collegamento) -- Utilizzando una sintassi simile a Markdown: `Github <https://github.com/>`_ . +- Utilizzando una sintassi simile a Markdown: `GitHub <https://github.com/>`_ . -.. _Github https://github.com/ +.. _GitHub https://github.com/  ``` diff --git a/it-it/toml-it.html.markdown b/it-it/toml-it.html.markdown index 99082048..beb63096 100644 --- a/it-it/toml-it.html.markdown +++ b/it-it/toml-it.html.markdown @@ -1,276 +1,276 @@ ----
 -language: toml
 -filename: learntoml-it.toml
 -contributors:
 -  - ["Alois de Gouvello", "https://github.com/aloisdg"]
 -translators:
 -  - ["Christian Grasso", "https://grasso.io"]
 -lang: it-it
 ----
 -
 -TOML è l'acronimo di _Tom's Obvious, Minimal Language_. È un linguaggio per la
 -serializzazione di dati, progettato per i file di configurazione.
 -
 -È un'alternativa a linguaggi come YAML e JSON, che punta ad essere più leggibile
 -per le persone. Allo stesso tempo, TOML può essere utilizzato in modo abbastanza
 -semplice nella maggior parte dei linguaggi di programmazione, in quanto è
 -progettato per essere tradotto senza ambiguità in una hash table.
 -
 -Tieni presente che TOML è ancora in fase di sviluppo, e la sua specifica non è
 -ancora stabile. Questo documento utilizza TOML 0.4.0.
 -
 -```toml
 -# I commenti in TOML sono fatti così.
 -
 -################
 -# TIPI SCALARI #
 -################
 -
 -# Il nostro oggetto root (corrispondente all'intero documento) sarà una mappa,
 -# anche chiamata dizionario, hash o oggetto in altri linguaggi.
 -
 -# La key, il simbolo di uguale e il valore devono trovarsi sulla stessa riga,
 -# eccetto per alcuni tipi di valori.
 -key = "value"
 -stringa = "ciao"
 -numero = 42
 -float = 3.14
 -boolean = true
 -data = 1979-05-27T07:32:00-08:00
 -notazScientifica = 1e+12
 -"puoi utilizzare le virgolette per la key" = true # Puoi usare " oppure '
 -"la key può contenere" = "lettere, numeri, underscore e trattini"
 -
 -############
 -# Stringhe #
 -############
 -
 -# Le stringhe possono contenere solo caratteri UTF-8 validi.
 -# Possiamo effettuare l'escape dei caratteri, e alcuni hanno delle sequenze
 -# di escape compatte. Ad esempio, \t corrisponde al TAB.
 -stringaSemplice = "Racchiusa tra virgolette. \"Usa il backslash per l'escape\"."
 -
 -stringaMultiriga = """
 -Racchiusa da tre virgolette doppie all'inizio e
 -alla fine - consente di andare a capo."""
 -
 -stringaLiteral = 'Virgolette singole. Non consente di effettuare escape.'
 -
 -stringaMultirigaLiteral = '''
 -Racchiusa da tre virgolette singole all'inizio e
 -alla fine - consente di andare a capo.
 -Anche in questo caso non si può fare escape.
 -Il primo ritorno a capo viene eliminato.
 -   Tutti gli altri spazi aggiuntivi
 -   vengono mantenuti.
 -'''
 -
 -# Per i dati binari è consigliabile utilizzare Base64 e
 -# gestirli manualmente dall'applicazione.
 -
 -##########
 -# Interi #
 -##########
 -
 -## Gli interi possono avere o meno un segno (+, -).
 -## Non si possono inserire zero superflui all'inizio.
 -## Non è possibile inoltre utilizzare valori numerici
 -## non rappresentabili con una sequenza di cifre.
 -int1 = +42
 -int2 = 0
 -int3 = -21
 -
 -## Puoi utilizzare gli underscore per migliorare la leggibilità.
 -## Fai attenzione a non inserirne due di seguito.
 -int4 = 5_349_221
 -int5 = 1_2_3_4_5     # VALIDO, ma da evitare
 -
 -#########
 -# Float #
 -#########
 -
 -# I float permettono di rappresentare numeri decimali.
 -flt1 = 3.1415
 -flt2 = -5e6
 -flt3 = 6.626E-34
 -
 -###########
 -# Boolean #
 -###########
 -
 -# I valori boolean (true/false) devono essere scritti in minuscolo.
 -bool1 = true
 -bool2 = false
 -
 -############
 -# Data/ora #
 -############
 -
 -data1 = 1979-05-27T07:32:00Z # Specifica RFC 3339/ISO 8601 (UTC)
 -data2 = 1979-05-26T15:32:00+08:00 # RFC 3339/ISO 8601 con offset
 -
 -######################
 -# TIPI DI COLLECTION #
 -######################
 -
 -#########
 -# Array #
 -#########
 -
 -array1 = [ 1, 2, 3 ]
 -array2 = [ "Le", "virgole", "sono", "delimitatori" ]
 -array3 = [ "Non", "unire", "tipi", "diversi" ]
 -array4 = [ "tutte", 'le stringhe', """hanno lo stesso""", '''tipo''' ]
 -array5 = [
 -  "Gli spazi vuoti", "sono", "ignorati"
 -]
 -
 -###########
 -# Tabelle #
 -###########
 -
 -# Le tabelle (o hash table o dizionari) sono collection di coppie key/value.
 -# Iniziano con un nome tra parentesi quadre su una linea separata. 
 -# Le tabelle vuote (senza alcun valore) sono valide.
 -[tabella]
 -
 -# Tutti i valori che si trovano sotto il nome della tabella
 -# appartengono alla tabella stessa (finchè non ne viene creata un'altra).
 -# L'ordine di questi valori non è garantito.
 -[tabella-1]
 -key1 = "una stringa"
 -key2 = 123
 -
 -[tabella-2]
 -key1 = "un'altra stringa"
 -key2 = 456
 -
 -# Utilizzando i punti è possibile creare delle sottotabelle.
 -# Ogni parte suddivisa dai punti segue le regole delle key per il nome.
 -[tabella-3."sotto.tabella"]
 -key1 = "prova"
 -
 -# Ecco l'equivalente JSON della tabella precedente:
 -# { "tabella-3": { "sotto.tabella": { "key1": "prova" } } }
 -
 -# Gli spazi non vengono considerati, ma è consigliabile
 -# evitare di usare spazi superflui.
 -[a.b.c]            # consigliato
 -[ d.e.f ]          # identico a [d.e.f]
 -
 -# Non c'è bisogno di creare le tabelle superiori per creare una sottotabella.
 -# [x] queste
 -# [x.y] non
 -# [x.y.z] servono
 -[x.y.z.w] # per creare questa tabella
 -
 -# Se non è stata già creata prima, puoi anche creare
 -# una tabella superiore più avanti.
 -[a.b]
 -c = 1
 -
 -[a]
 -d = 2
 -
 -# Non puoi definire una key o una tabella più di una volta.
 -
 -# ERRORE
 -[a]
 -b = 1
 -
 -[a]
 -c = 2
 -
 -# ERRORE
 -[a]
 -b = 1
 -
 -[a.b]
 -c = 2
 -
 -# I nomi delle tabelle non possono essere vuoti.
 -[]     # NON VALIDO
 -[a.]   # NON VALIDO
 -[a..b] # NON VALIDO
 -[.b]   # NON VALIDO
 -[.]    # NON VALIDO
 -
 -##################
 -# Tabelle inline #
 -##################
 -
 -tabelleInline = { racchiuseData = "{ e }", rigaSingola = true }
 -punto = { x = 1, y = 2 }
 -
 -####################
 -# Array di tabelle #
 -####################
 -
 -# Un array di tabelle può essere creato utilizzando due parentesi quadre.
 -# Tutte le tabelle con questo nome saranno elementi dell'array.
 -# Gli elementi vengono inseriti nell'ordine in cui si trovano.
 -
 -[[prodotti]]
 -nome = "array di tabelle"
 -sku = 738594937
 -tabelleVuoteValide = true
 -
 -[[prodotti]]
 -
 -[[prodotti]]
 -nome = "un altro item"
 -sku = 284758393
 -colore = "grigio"
 -
 -# Puoi anche creare array di tabelle nested. Le sottotabelle con doppie
 -# parentesi quadre apparterranno alla tabella più vicina sopra di esse.
 -
 -[[frutta]]
 -  nome = "mela"
 -
 -  [frutto.geometria]
 -    forma = "sferica"
 -    nota = "Sono una proprietà del frutto"
 -
 -  [[frutto.colore]]
 -    nome = "rosso"
 -    nota = "Sono un oggetto di un array dentro mela"
 -
 -  [[frutto.colore]]
 -    nome = "verde"
 -    nota = "Sono nello stesso array di rosso"
 -
 -[[frutta]]
 -  nome = "banana"
 -
 -  [[frutto.colore]]
 -    nome = "giallo"
 -    nota = "Anche io sono un oggetto di un array, ma dentro banana"
 -```
 -
 -Ecco l'equivalente JSON dell'ultima tabella:
 -
 -```json
 -{
 -  "frutta": [
 -    {
 -      "nome": "mela",
 -      "geometria": { "forma": "sferica", "nota": "..."},
 -      "colore": [
 -        { "nome": "rosso", "nota": "..." },
 -        { "nome": "verde", "nota": "..." }
 -      ]
 -    },
 -    {
 -      "nome": "banana",
 -      "colore": [
 -        { "nome": "giallo", "nota": "..." }
 -      ]
 -    }
 -  ]
 -}
 -```
 -
 -### Altre risorse
 -
 -+ [Repository ufficiale di TOML](https://github.com/toml-lang/toml)
 +--- +language: toml +filename: learntoml-it.toml +contributors: +  - ["Alois de Gouvello", "https://github.com/aloisdg"] +translators: +  - ["Christian Grasso", "https://grasso.io"] +lang: it-it +--- + +TOML è l'acronimo di _Tom's Obvious, Minimal Language_. È un linguaggio per la +serializzazione di dati, progettato per i file di configurazione. + +È un'alternativa a linguaggi come YAML e JSON, che punta ad essere più leggibile +per le persone. Allo stesso tempo, TOML può essere utilizzato in modo abbastanza +semplice nella maggior parte dei linguaggi di programmazione, in quanto è +progettato per essere tradotto senza ambiguità in una hash table. + +Tieni presente che TOML è ancora in fase di sviluppo, e la sua specifica non è +ancora stabile. Questo documento utilizza TOML 0.4.0. + +```toml +# I commenti in TOML sono fatti così. + +################ +# TIPI SCALARI # +################ + +# Il nostro oggetto root (corrispondente all'intero documento) sarà una mappa, +# anche chiamata dizionario, hash o oggetto in altri linguaggi. + +# La key, il simbolo di uguale e il valore devono trovarsi sulla stessa riga, +# eccetto per alcuni tipi di valori. +key = "value" +stringa = "ciao" +numero = 42 +float = 3.14 +boolean = true +data = 1979-05-27T07:32:00-08:00 +notazScientifica = 1e+12 +"puoi utilizzare le virgolette per la key" = true # Puoi usare " oppure ' +"la key può contenere" = "lettere, numeri, underscore e trattini" + +############ +# Stringhe # +############ + +# Le stringhe possono contenere solo caratteri UTF-8 validi. +# Possiamo effettuare l'escape dei caratteri, e alcuni hanno delle sequenze +# di escape compatte. Ad esempio, \t corrisponde al TAB. +stringaSemplice = "Racchiusa tra virgolette. \"Usa il backslash per l'escape\"." + +stringaMultiriga = """ +Racchiusa da tre virgolette doppie all'inizio e +alla fine - consente di andare a capo.""" + +stringaLiteral = 'Virgolette singole. Non consente di effettuare escape.' + +stringaMultirigaLiteral = ''' +Racchiusa da tre virgolette singole all'inizio e +alla fine - consente di andare a capo. +Anche in questo caso non si può fare escape. +Il primo ritorno a capo viene eliminato. +   Tutti gli altri spazi aggiuntivi +   vengono mantenuti. +''' + +# Per i dati binari è consigliabile utilizzare Base64 e +# gestirli manualmente dall'applicazione. + +########## +# Interi # +########## + +## Gli interi possono avere o meno un segno (+, -). +## Non si possono inserire zero superflui all'inizio. +## Non è possibile inoltre utilizzare valori numerici +## non rappresentabili con una sequenza di cifre. +int1 = +42 +int2 = 0 +int3 = -21 + +## Puoi utilizzare gli underscore per migliorare la leggibilità. +## Fai attenzione a non inserirne due di seguito. +int4 = 5_349_221 +int5 = 1_2_3_4_5     # VALIDO, ma da evitare + +######### +# Float # +######### + +# I float permettono di rappresentare numeri decimali. +flt1 = 3.1415 +flt2 = -5e6 +flt3 = 6.626E-34 + +########### +# Boolean # +########### + +# I valori boolean (true/false) devono essere scritti in minuscolo. +bool1 = true +bool2 = false + +############ +# Data/ora # +############ + +data1 = 1979-05-27T07:32:00Z # Specifica RFC 3339/ISO 8601 (UTC) +data2 = 1979-05-26T15:32:00+08:00 # RFC 3339/ISO 8601 con offset + +###################### +# TIPI DI COLLECTION # +###################### + +######### +# Array # +######### + +array1 = [ 1, 2, 3 ] +array2 = [ "Le", "virgole", "sono", "delimitatori" ] +array3 = [ "Non", "unire", "tipi", "diversi" ] +array4 = [ "tutte", 'le stringhe', """hanno lo stesso""", '''tipo''' ] +array5 = [ +  "Gli spazi vuoti", "sono", "ignorati" +] + +########### +# Tabelle # +########### + +# Le tabelle (o hash table o dizionari) sono collection di coppie key/value. +# Iniziano con un nome tra parentesi quadre su una linea separata.  +# Le tabelle vuote (senza alcun valore) sono valide. +[tabella] + +# Tutti i valori che si trovano sotto il nome della tabella +# appartengono alla tabella stessa (finchè non ne viene creata un'altra). +# L'ordine di questi valori non è garantito. +[tabella-1] +key1 = "una stringa" +key2 = 123 + +[tabella-2] +key1 = "un'altra stringa" +key2 = 456 + +# Utilizzando i punti è possibile creare delle sottotabelle. +# Ogni parte suddivisa dai punti segue le regole delle key per il nome. +[tabella-3."sotto.tabella"] +key1 = "prova" + +# Ecco l'equivalente JSON della tabella precedente: +# { "tabella-3": { "sotto.tabella": { "key1": "prova" } } } + +# Gli spazi non vengono considerati, ma è consigliabile +# evitare di usare spazi superflui. +[a.b.c]            # consigliato +[ d.e.f ]          # identico a [d.e.f] + +# Non c'è bisogno di creare le tabelle superiori per creare una sottotabella. +# [x] queste +# [x.y] non +# [x.y.z] servono +[x.y.z.w] # per creare questa tabella + +# Se non è stata già creata prima, puoi anche creare +# una tabella superiore più avanti. +[a.b] +c = 1 + +[a] +d = 2 + +# Non puoi definire una key o una tabella più di una volta. + +# ERRORE +[a] +b = 1 + +[a] +c = 2 + +# ERRORE +[a] +b = 1 + +[a.b] +c = 2 + +# I nomi delle tabelle non possono essere vuoti. +[]     # NON VALIDO +[a.]   # NON VALIDO +[a..b] # NON VALIDO +[.b]   # NON VALIDO +[.]    # NON VALIDO + +################## +# Tabelle inline # +################## + +tabelleInline = { racchiuseData = "{ e }", rigaSingola = true } +punto = { x = 1, y = 2 } + +#################### +# Array di tabelle # +#################### + +# Un array di tabelle può essere creato utilizzando due parentesi quadre. +# Tutte le tabelle con questo nome saranno elementi dell'array. +# Gli elementi vengono inseriti nell'ordine in cui si trovano. + +[[prodotti]] +nome = "array di tabelle" +sku = 738594937 +tabelleVuoteValide = true + +[[prodotti]] + +[[prodotti]] +nome = "un altro item" +sku = 284758393 +colore = "grigio" + +# Puoi anche creare array di tabelle nested. Le sottotabelle con doppie +# parentesi quadre apparterranno alla tabella più vicina sopra di esse. + +[[frutta]] +  nome = "mela" + +  [frutto.geometria] +    forma = "sferica" +    nota = "Sono una proprietà del frutto" + +  [[frutto.colore]] +    nome = "rosso" +    nota = "Sono un oggetto di un array dentro mela" + +  [[frutto.colore]] +    nome = "verde" +    nota = "Sono nello stesso array di rosso" + +[[frutta]] +  nome = "banana" + +  [[frutto.colore]] +    nome = "giallo" +    nota = "Anche io sono un oggetto di un array, ma dentro banana" +``` + +Ecco l'equivalente JSON dell'ultima tabella: + +```json +{ +  "frutta": [ +    { +      "nome": "mela", +      "geometria": { "forma": "sferica", "nota": "..."}, +      "colore": [ +        { "nome": "rosso", "nota": "..." }, +        { "nome": "verde", "nota": "..." } +      ] +    }, +    { +      "nome": "banana", +      "colore": [ +        { "nome": "giallo", "nota": "..." } +      ] +    } +  ] +} +``` + +### Altre risorse + ++ [Repository ufficiale di TOML](https://github.com/toml-lang/toml) | 
