<?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>FireTeam</title>
	<atom:link href="http://www.fireteam.it/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.fireteam.it</link>
	<description>#fuoco@AzzurraNet</description>
	<lastBuildDate>Tue, 19 Jan 2010 15:54:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Primi sviluppi dell&#8217;Intelligenza Artificiale</title>
		<link>http://www.fireteam.it/2010/01/primi-sviluppi-intelligenza-artificiale/</link>
		<comments>http://www.fireteam.it/2010/01/primi-sviluppi-intelligenza-artificiale/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 14:25:20 +0000</pubDate>
		<dc:creator>saverio</dc:creator>
				<category><![CDATA[Biblioteca]]></category>
		<category><![CDATA[cibernetica]]></category>
		<category><![CDATA[Damasio]]></category>
		<category><![CDATA[IA]]></category>
		<category><![CDATA[Marr]]></category>
		<category><![CDATA[Newell & Simon]]></category>
		<category><![CDATA[Turing]]></category>

		<guid isPermaLink="false">http://www.fireteam.it/?p=775</guid>
		<description><![CDATA[E&#8217; difficile dare una definizione di Intelligenza Artificiale (IA) in quando essa è vista sia dal punto di vista ingegneristico (che punta a costruire macchine intelligenti per assistere l&#8217;uomo), sia dal punto di vista psicologico (che punta a riprodurre nelle macchine le caratteristiche dell&#8217;attività cognitiva umana).
Seppur con idee diverse, i pionieri dell&#8217;IA (McCarthy, Minsky, Rochesterm, [...]]]></description>
			<content:encoded><![CDATA[<p>E&#8217; difficile dare una definizione di Intelligenza Artificiale (IA) in quando essa è vista sia dal punto di vista ingegneristico (che punta a costruire macchine intelligenti per assistere l&#8217;uomo), sia dal punto di vista psicologico (che punta a riprodurre nelle macchine le caratteristiche dell&#8217;attività cognitiva umana).</p>
<p>Seppur con idee diverse, i pionieri dell&#8217;IA (McCarthy, Minsky, Rochesterm, e Shannon) videro nel calcolatore digitale uno strumento con capacità di elaborazione ineguagliate, quindi uno strumento adatto al confronto con alcuni aspetti della mente umana.<br />
Si cominciarono a sviluppare i primi programmi relativi ad ambiti ben delimitati in cui c&#8217;erano  solo regole esplicite per l&#8217;elaborazione simbolica e poca conoscenza specializzata. Motivo di questo inizio era la scarsa capacità di memoria e di calcolo dei calcolatori di quei tempi.<br />
Successivamente si parte con lo sviluppo di sistemi esperti, dove la conoscenza specializzata nel campo ci porta ad avere buone prestazioni.</p>
<p>La diffusione di queste tecniche di IA ci conferma il successo dal punto di vista ingegneristico, ma cosa possiamo dire dal punto di vista psicologico?<br />
Cosa implica la costruzione di macchine che riproducono caratteristiche essenziali dell&#8217;attività umana? Dove si colloca l&#8217;IA nell&#8217;ambito delle ricerche sul sistema cervello-mente che coinvolgono le neuroscienze e la psicologia?</p>
<p><span id="more-775"></span></p>
<h2>Turing e la Macchina di Turing Universale</h2>
<p>Abbinando le MdT (Macchine di Turing) alle codifiche di Godel, nasce un modo di codificare le MdT. Si ha inoltre un <em>procedimento effettivo</em> per la codifica e la decodifica.<br />
Dalle MdT codificate, Turing arriva alla macchina universale, che è una particolare MdT che, accettando in input la descrizione di una qualsiasi MdT, riesce a comportarsi come essa.</p>
<p>Dalla <strong>MdT Universale</strong> nasce la nozione di <strong>Macchina Programmabile</strong>.<br />
Da questa considerzione ci si chiese se le macchine possano essere intelligenti. Su questo Turing scrive l&#8217;articolo &#8220;Macchine calcolatrici e intelligenza&#8221;.</p>
<h2>Macchine calcolatrici e intelligenza</h2>
<p>Turing considera la domanda: &#8220;<em>Possono pensare le macchine?</em>&#8220;. In questa domanda i termini <strong>macchina</strong> e <strong>pensare</strong> non sono di facile definizione.</p>
<p>Possiamo definire la parola <strong>macchina</strong> possiamo imporre che la macchina sia composta da tre parti: memoria, unità operativa, e governo; dove la memoria è un deposito di informazioni, l&#8217;unità operativa è la parte atta ad eseguire operazioni, ed il governo coordina l&#8217;unità operativa e la memoria.<br />
Quindi scendendo più in dettaglio riusciamo a definire cos&#8217;è una macchina.</p>
<p>Cosa possiamo invece definire la parola <strong>pensare</strong>? Turing non riesce a farlo.<br />
Per questo pensa di riformulare la domanda &#8220;<em>Possono pensare le macchine?</em>&#8221; con un&#8217;altra. Riformula il problema in termini di un gioco dove si trovano tre persona A (un uomo), B (una donna), e C (un&#8217;interrogante). C è isolato in una stanza, e può comunicare con A e B mediante messaggi di tipo linguistico.<br />
Lo scopo di C, che parla con due individui, è di capire chi è la donna e chi è l&#8217;uomo. B (che è la donna) ha il compito di aiutare l&#8217;interrogante C, mentre lo scopo di A (l&#8217;uomo) è quello di ingannarlo.<br />
La domanda riformulata è: &#8220;<em>Che cosa accadrà se una macchina prende il posto di A nel gioco? La frequenza delle risposte errate da parte di C sarà la stessa di quando il gioco si svolge tra uomini?</em>&#8220;.</p>
<p>Chiamiamo questo <strong>Test di Turing</strong>.</p>
<h3>Test di Turing e Intelligenza</h3>
<p>Superare il test di Turing, non è una condizione né necessaria, né sufficiente per stabilire se un individuo o una macchina è intelligente.</p>
<ul>
<li>Condizione Necessaria: se un essere è intelligente deve      necessariamente superare il Test di Turing. Ma ci sono situazioni, come      quelle delle persone nello stato locked-in (ad esempio il famoso caso di      Piergiorgio Welby), in cui l&#8217;individuo non è in grado di superare il test,      ma comunque non possiamo dire che tale individuo non è intelligente.</li>
<li>Condizione Sufficiente: supponiamo una macchina con un      programma complicatissimo, che è fatta apposta per superare il Test di      Turing. Questa macchina sa solo superare questo test e basta: possiamo      definirela intelligente?</li>
</ul>
<p>Quindi il superamento del Test di Turing da parte di una macchina non è né condizione necessaria, né condizione sufficiente per affermare che la macchina stressa sia intelligente.</p>
<h3>Osservazioni all&#8217;articolo</h3>
<p><span style="text-decoration: underline;">Prima Osservazione: Funzionalismo</span></p>
<p>Notiamo che in questo gioco la macchina da risposte di tipo linguistico; infatti Turing divide nettamente le capacità fisiche di un essere umano, dalle capacità intellettuali (o mentali). Questo non è vero nell&#8217;eccezione Darwiniana in cui le capacità mentali di un essere vivente sono di fondamentale importanza per coordinare le capacità motorie, e permettono così di sopravvivere.<br />
Essendo la mente umana composta da materiali diversi da quelli con i quali è costruita una macchina, Turing adotta il funzionalismo, ossia paragona il funzionamento degli oggetti anche se costruiti in modo diverso.</p>
<p><span style="text-decoration: underline;">Seconda Osservazione: La mente funziona a stati discreti</span></p>
<p>I calcolatori digitali sono indubbiamente delle macchine a <em>stati discreti</em>. Ovvero si muovono a scatti improvvisi ben distinguibili l&#8217;uno dall&#8217;altro.<br />
Anche se in realtà in natura niente è discreto; se indaghiamo un calcolatore digitale funziona anch&#8217;esso in modo <em>continuo</em>. Ma consideriamolo una macchina a stati discreti.<br />
<em>Ci conviene discretizzare la mente paragonandola ad un calcolatore digitale</em>?</p>
<p><span style="text-decoration: underline;">Terza Osservazione: I calcolatori digitali non sono caotici</span></p>
<p>Dato un input in ingresso ad una macchina riusciamo a predire tutti i suoi stati, ed il suo output, in modo esatto. Nel mondo invece vige la teoria del caos, nella quale piccole variazioni nelle condizioni iniziali producono grandi variazioni nel comportamento a lungo termine di un sistema. Ad esempio il battito d&#8217;ali di una farfalla può essere la causa di un uragano dall&#8217;altra parte del mondo.</p>
<h3>Obiezioni Contrarie all&#8217;argomento principale dell&#8217;articolo</h3>
<p><span style="text-decoration: underline;">Obiezione Teologica:</span> &#8220;Solo Dio ha il potere di creare esseri pensanti&#8221;.<br />
Questa obiezione pone serie restrizioni alla provvidenza divina: chi ci dice che Dio non ci abbia dato il potere di creare macchine pensanti?</p>
<p><span style="text-decoration: underline;">Obiezione della Testa nella Sabbia:</span> Questa è l&#8217;obiezione di chi ha paura delle macchine pensanti. A queste persone piace sentirsi superiori di ogni altra cosa, e si sentono minacciati da questo tentativo di creare macchine pensanti.</p>
<p><span style="text-decoration: underline;">Obiezione Matematica:</span> I teoremi di incompletezza di Godel, ed altri risultati ad esso annessi, dimostrano che le macchine non possono conoscere tutte le verità. Quindi esistono dei limiti, e si sostiene che la mente umana non abbia questi limiti.<br />
Ma non è giusto condannare così i calcolatori; diamo risposte errate anche noi. Inoltre ci possono essere uomini più abili di una macchina, ma possono essere costruite altre macchine più abili di questi uomini. Quindi non ci possono essere uomini più abili di tutte le macchine.</p>
<p><span style="text-decoration: underline;">Obiezione dell&#8217;Autocoscienza</span>: Possiamo dividere la coscienza in &#8220;essere consapevole del proprio stato&#8221;, ed &#8220;essere consapevoli di provare&#8221;. Possiamo costruire macchine con medoti di <strong>Machine Learning</strong> che sono consapevoli del proprio stato, ma non ancora riusciamo ad immaginare macchine che sappiano provare dei sentimenti.</p>
<p><span style="text-decoration: underline;">Obiezioni basate su incapacità varie</span>: ad esempio una macchina è capace di gustare le fragole con la panna.<br />
Queste obiezioni nascono dal fatto che vogliamo far assomigliare le macchine agli essere umani. Ma, non essendo le macchine degli essere umani, è difficile avere un rapporto di amicizia tra un uomo ed una macchina.</p>
<p><span style="text-decoration: underline;">Obiezione di Lady Lovelace:</span> &#8220;La macchina può eseguire solo quello che gli diciamo di fare!&#8221;. Questa obiezione è vecchia e risale ai tempi della macchina universale di Babbage.<br />
Con i moderni metodi di <strong>Machine Learning</strong> possiamo avere delle macchine che riescono ad apprendere, anche se sono formate da un nucleo di base non modificabile. Quindi anche essendo una macchina <em>deterministica</em>, possiamo avere macchine che modificano il proprio comportamento man mano che apprendono nuove regole.</p>
<p><span style="text-decoration: underline;">Obiezione fondata sulla continuità del sistema nervoso:</span> Ancora una volta ci rifacciamo al concetto di funzionalismo, secondo il quale cerchiamo di ottenere solo un comportamento intelligente, e non pretendiamo che internamente le cose funzionino allo stesso modo.</p>
<h3>Possono le macchine pensare?</h3>
<p>Dopo l&#8217;articolo di Turing partono gli studi per costruire macchine in grado di competere con l&#8217;uomo in ambiti intellettuali. Ma quel&#8217;è la strada migliore per iniziare a costruire queste macchine?</p>
<p>L&#8217;<em>IA</em> comincia a sviluppare programmi per calcolatori digitali capaci di svolgere attività molto astratte, come giocare a scacchi.<br />
La <em>robotica</em> invece inizia mettendo in risalto il comportamento intelligente degli esseri viventi, e comincia a costruire dispositivi meccanici che si comportano in modo intelligente.</p>
<p>Parallelamente a queste due nasce anche la branca della <strong>Machine Learning</strong>, un&#8217;intuizione geniale da parte di Turing.</p>
<h2>La cibernetica prima dei calcolatori digitali</h2>
<p>La cibernetica nasce con i sistemi a retroazione. La differenza con il punto di vista di Turing, è che questa volta <span style="text-decoration: underline;">il comportamento intelligente è visto come un comportamento flessibile-adattativo all&#8217;ambiente</span>: c&#8217;è un tentativo di collegare questi sistemi a retroazione ai sistemi biologici, con un conseguente collegamento alla scienza molto più forte.<br />
Da un altro punto di vista notiamo che i cibernetici partono dal basso, costruendo prima sistemi molto semplici, mentre Turing punta a riprodurre l&#8217;attività mentale umana con un macchina&#8230; un compito arduo.</p>
<p>Un primo esempio di sistema a retroazione è la valvola di sfiato della caldaia di una locomotiva a vapore; il suo compito era quello di tenere la pressione costante all&#8217;interno della caldaia, in modo da mantenere costante la velocità del treno. Quindi quando la pressione era troppo alta, la valvola faceva uscire del vapore per farla diminuire.<br />
Questo primo meccanismo di sistema a retroazione puntava a correggere l&#8217;errore, in un ciclo di questo tipo:</p>
<ol>
<li>Osservare l&#8217;output del sistema</li>
<li>Misurare l&#8217;errore</li>
<li>Apportare le modifiche atte a correggere l&#8217;errore</li>
</ol>
<p>Questi meccanismi hanno delle caratteristiche in comune con i sistemi biologici: ad esempio il corpo umano ha un meccanismo simile per controllare la temperatura corporea (la sudorazione).<br />
Rosenblueth, Wiener, e Bigelow, nel loro articolo &#8220;<em>Coportamento, Scopo, e Teleologia</em>&#8221; affermano che i metodi di studio sia per gli organismi viventi, sia per le macchine, sono simili in quanto non sono state trovare delle caratteristiche qualitativamente diverse che caratterizzano un gruppo e non l&#8217;altro.</p>
<p>Possiamo dividere le cause dei mutamenti della natura in quelli provocati da:<br />
- cause efficienti: è l&#8217;agente che determina operativamente il mutamento<br />
- cause finali: è l&#8217;intenzione di qualche essere vivente a raggiungere un certo scopo</p>
<p>I cibernetici puntano a descrivere il comportamento intelligente usando solo le cause efficienti, in quanto le cause finali sono caratteristiche dei sistemi biologici.<br />
Come esempio possiamo considerare il comportamento della falena che è stato descritto da uno studioso americano con sole cause efficienti.</p>
<h3>Comportamento, Scopo, e Teleologia</h3>
<p>Il comportamento intelligente può essere diviso in due grosse classi: il comportamento rivolto ad uno scopo (finalizzato), e il comportamento non rivolto ad uno scopo (causale).</p>
<p>Noi ci interessiamo al comportamento rivolto ad uno scopo. Ma cos&#8217;è uno scopo? Abbiamo un <strong>tentativo riduzionista</strong>, <span style="text-decoration: underline;">che riduce lo scopo ad un oggetto, e il suo raggiungimento è uno spostamento spazio/temporale dell&#8217;oggetto stesso</span>.<br />
Su questa visione di vedere uno scopo si inseriscono i critici obiettando il fatto che non sempre lo scopo è un oggetto.</p>
<p>Il comportamento rivolto ad uno scopo può essere diviso a sua volta in comportamento rivolto ad uno scopo con retroazione (o teleologico) o senza retroazione (non teleologico).<br />
Il comportamento rivolto ad uno scopo senza retroazione raggruppa tutti quei casi in cui il movimento è talmente veloce in cui è impensabile che ci sia del tempo utile a modificare il movimento mentre lo si sta facendo. Ad esempio, il comportamento di una rana mentre colpisce una mosca per mangiarsela, è senza retroazione.</p>
<p>Ci interesseremo al comportamento rivolto ad uno scopo con retroazione, nel quale l&#8217;azione che si sta svolgendo è modificabile mentre la si sta facendo. Questo tipo di comportamento è più efficace del comportamento senza retroazione, specialmente quando lo scopo è un oggetto fermo.</p>
<p>Il comportamento rivolto ad uno scopo con retroazione può essere ulteriormente diviso in comportamento rivolto ad uno scopo con retroazione non predittivo o non estrapolativo (la falena che cammina verso la luce) e predittivo o estrapolativo (il gatto che balza per catturare un topo nella posizione in cui il topo dovrebbe stare dopo il balzo, quindi il gatto è capace di estrapolare la posizione del topo in un istante di tempo futuro).</p>
<h3>Intelligenza e Comportamento rivolto ad uno scopo</h3>
<p>Nell&#8217;articolo &#8220;<em>Coportamento, Scopo, e Teleologia</em>&#8221; non sono state individuate le condizioni necessarie e sufficienti per affermare che un agente ha il comportamento intelligente per raggiungere uno scopo. Questo perché il tentativo riduzionista per la descrizione di cosa si intende per scopo ci vincola troppo.</p>
<ul>
<li>Condizione Necessaria: Supponiamo ci sia un cavaliere      alla ricerca del Santo Graal. Se il Santo Graal non esiste, come descriviamo      lo scopo di questo cavaliere se imponiamo che lo scopo sia un oggetto?</li>
<li>Condizione Sufficiente: Supponiamo una persona si      sveglia all&#8217;improvviso durante la notte, e spara un colpo di pistola allo      specchio. Come descriviamo lo scopo di questo signore? Il suo intento non      era sparare nello specchio, ma l&#8217;ha fatto per motivi che non conosciamo.</li>
</ul>
<p>Quindi la definizione di Scopo come una relazione spazio/temporale relativa ad un oggetto è troppo restrittiva per descrivere il comportamento intelligente rivolto ad uno scopo.</p>
<h3>Il ruolo dei Modelli nella Scienza</h3>
<p>La cibernetica lavora con i <strong>modelli</strong>. Obiettivo della scienza è ottenere la <strong>comprensione</strong> ed il <strong>controllo</strong> di una qualche parte dell&#8217;universo. Ad esempio la lancetta del barometro che si abbassa ha come causa  (comprensione) l&#8217;abbassamento della pressione; ed anche, la cura per una malattia (controllo) mediante antibiotici.</p>
<p>Ma nessuna parte dell&#8217;universo si lascia afferrare senza un minimo di astrazione. I <strong>modelli</strong> ci aiutano proprio a questo: un modello formale (o intellettuale) rappresenta con astrazione un <strong>sistema studiato</strong> (cioè la parte dell&#8217;universo che stiamo studiando).</p>
<p>Possiamo dividere i modelli in:</p>
<ul>
<li><strong>Modello materiale</strong>: rappresentazione del <em>sistema studiato</em> ottenuto      mediante un altro sistema, di solito più semplice, ma con proprietà simili      al <em>sistema studiato</em>.</li>
<li><strong>Modello Formale</strong>: rappresenta in termini logici il <em>sistema studiato</em> in maniera semplice, con proprietà simili.</li>
</ul>
<p>I modelli materiali sono utili quando:<br />
- Vogliamo studiare un sistema di un campo inconsueto (sistema studiato), in un campo più familiare (modello meccanico)<br />
- Il modello materiale permette di svolgere esperimenti in condizioni più favorevoli rispetto a quelle date dal sistema studiato. Ad esempio ci conviene sperimentare nuovi farmaci prima sui topi, e poi sugli umani. Ma su quale base diciamo che un topo è un modello materiale dell&#8217;umano? Lo diciamo secondo alcuni criteri di &#8220;somiglianza&#8221; rispetto al modello originale.</p>
<p>I modelli non sono utili quando:<br />
- Se il modello formale non rispecchia bene il sistema studiato, anche il modello materiale sarà poco significativo.<br />
- Se il modello materiale suggerisce esperimenti predittibili dal modello formale, allora esso è superfluo.</p>
<p>Possiamo dividere i problemi in quelli a scatola chiusa e quelli a scatola aperta.<br />
Nei problemi a <strong>scatola chiusa</strong> conosciamo solo alcuni input e possiamo verificare gli output, ma non sappiamo cosa avviene dentro la scatola. <em>La legge di trasformazione è quella legge che mette in relazione l&#8217;input con l&#8217;output</em>. Per scoprire cosa c&#8217;è nella scatola possiamo provare ad aprirla ed individuare altri input e/o altri output in modo da svolgere studi più approfonditi. Man mano che apriamo tutte le scatole trovate durante lo studio, abbiamo un problema a <strong>scatola aperta</strong>.<br />
Nell&#8217;aprire le scatole, e quindi nell&#8217;aggiungere dettagli alla nostra descrizione, facciamo un&#8217;ipotesi di modularità, ipotizzando che gli input individuati siano debolmente accoppiati con gli altri elementi della scatola. Bisogna stare attenti quando si studiano questi problemi a scendere nel dettaglio fino ad un livello per noi soddisfacente, in modo da avere una buona descrizione del problema senza complicarlo in modo eccessivo.</p>
<h2>&#8220;Computer Simulation of Human Thinking&#8221; &#8211; Newell &amp; Simon</h2>
<p>Abbiamo discusso gli sviluppi della prima Cibernetica. Adesso ci spostiamo sul ramo della prima IA, ed esaminiamo il lavoro di Newell &amp; Simon.</p>
<p>Newell &amp; Simon, due neuroscienziati che studiavano la mente, avevano lo scopo di cercare dei <strong>modelli del mentale</strong>, ossia dei <strong>modelli</strong> che rappresentassero l&#8217;attività cognitiva umana.<br />
Quindi volevano costruire dei programmi che simulassero i compiti cognitivi umani in modo psicologicamente realistico.</p>
<p>Per fare ciò si costruirono delle <strong>Microteorie</strong>. Ogni microteoria era relativa ad un particolare categoria di compiti cognitivi, ad esempio giocare a dama: essi chiedevano alla persona sotto esame di giocare a dama e pensare a voce alta, quindi riferire tutti i suoi ragionamenti selettivi ed euristici (introspezione).<br />
Il programma risultante di questo studio, non solo doveva dare gli stessi risultati del ragionamento cognitivo (e quindi supera il test di Turing), ma nel calcolarli doveva elaborare le informazioni nello stesso modo di un essere umano. Quest&#8217;ultima condizione serve ad avere una simulazione psicologicamente realistica del ragionamento umano.<br />
Una volta costruito un modello per un compito cognitivo, abbiamo una microteoria. Newell &amp; Simon volevano trarre un modello della mente combinando tra loro tutte le microteorie ottenute.</p>
<p>La differenza con Turing, è che Newell &amp; Simon consideravano il test di Turing &#8220;debole&#8221; in quando non riguarda i processi del pensiero, ma prende in considerazione solo la prestazione finale.</p>
<h3>Critiche al lavoro di Newell &amp; Simon</h3>
<p><strong>Critica sull&#8217;uso del protocollo verbale</strong></p>
<p>Il protocollo verbale, con il quale i soggetti studiati illustravano il proprio processo di pensiero sono <strong>incompleti</strong> perché non tutti i processi della mente sono accessibili all&#8217;introspezione.<br />
Inoltre questo metodo di studio del mentale è scorretto perché pensare e descrivere cosa si sta pensando sono due compiti concorrenti che possono interferire tra loro.<br />
Si sta studiando il modo di pensare, o il modo in cui un essere umano descrive il proprio pensiero?</p>
<p><strong>Critica sul dominio di applicazione</strong></p>
<p>Le microteorie sono strettamente collegate al particolare problema. Quindi applicando il modello suggerito da una microteoria ad un problema simile a quello di partenza non si hanno buoni risultati.</p>
<p><strong>Critica sul campione di persone</strong></p>
<p>Il campione scelto per eseguire i test è ristretto, e non rispecchia il modo di pensare di tutta la popolazione. Inoltre ogni persona ha un modo particolare di pensare.</p>
<p><strong>Critica sulla modularità</strong></p>
<p>Newell &amp; Simon non fanno ipotesi di modularità sulla mente e la considerano interamente in un&#8217;unica architettura unificata. Successivi studi (Chomsky, Marr, Fodor, ed altri) tentano di dividere la mente in moduli, in modo da poterli studiare indipendentemente.</p>
<h3>Conclusioni</h3>
<p>Il lavoro di Newell &amp; Simon è stato fallimentare, ma il loro contributo all&#8217;IA è stato enorme. Tutt&#8217;oggi le euristiche da loro definite sono molto utilizzate.</p>
<h2>Chomsky ed il Linguaggio Universale</h2>
<p>Un esempio di ipotesi di modularità è il <strong>Linguaggio Universale</strong> di Chomsky. Lui osserva come i bambini nei loro primi anni di vita riescono ad imparare la lingua, e nota che gli stimoli che essi ricevono sono di scarsa qualità per ottenere i risultati che si hanno.<br />
Quindi l&#8217;ipotesi di modularità di Chomsky è che nella nostra mente esiste un modulo di <strong>Grammatica Universale</strong> (UG) che ci aiuta ad imparare il linguaggio parlato.</p>
<p>Quello che ha fatto Chomsky è isolare questo modulo UG dalle restanti parti della mente, e studiarlo a se stante.<br />
Questo è proprio quello che manca nel lavoro fatto da Newell &amp; Simon, in quanto non avendo fatto ipotesi di modularità, non riescono a trovare delle variabili in comune a tutti gli essere umani con le quali è possibile creare un modello di tutta la mente umana.</p>
<h2>David Marr</h2>
<p>Marr, essendo allievo di Chomsky, prende da lui spunto, e nel suo articolo &#8220;Artificial Intelligence &#8211; A Personal View&#8221; espone la sua critica al lavoro di Newell &amp; Simon.</p>
<p>Secondo Marr, un risultato nel campo dell&#8217;IA doveva seguire questi passaggi:</p>
<ol>
<li>Definizione di <strong>cosa</strong> è calcolato, e <strong>perché</strong> è calcolato</li>
<li>Definire <strong>come</strong> calcolarlo, quindi definizione di      un algoritmo</li>
<li>Dimostrazione di funzionamento</li>
</ol>
<p>Il &#8220;perché&#8221; non è interessante da definire in quanto è legato alla natura del problema: il mondo è fatto così. Il &#8220;cosa&#8221; invece è molto interessante, in quanto questo passaggio non è stato considerato da Newell &amp; Simon. Infatti è difficile definire &#8220;cosa&#8221; calcolare in modo preciso quando si sta tentando di costruire un modello per l&#8217;intera mente umana.</p>
<p>Marri chiama <em>teorie di tipo 1</em> quelle in cui si riesce a trovare una buona descrizione di cosa è calcolato, e chiama <em>teorie di tipo 2</em> quelle in cui non si è ancora riusciti a dare una descrizione formale.</p>
<h2>Antonio Damasio</h2>
<p>Molti hanno criticato Newell &amp; Simon per mancanza di ipotesi di modularità. In realtà un&#8217;ipotesi di modularità è stata fatta: l&#8217;attività di problem solving della mente umana è considerata indipendente dalle emozioni provate.</p>
<p>Damasio, neurologo e neuroscienziato degli anni 80, nello studiare un caso clinico si accorge che il paziente non è in grado di provare emozioni.<br />
Questo paziente è perfettamente in grado di effettuare ragionamenti razionali, e risponde correttamente a domande a lui poste. Però quando è coinvolto in prima persona non riesce a prendere le decisioni giuste con i suoi ragionamenti.</p>
<p>L&#8217;ipotesi di Damasio è che <em>le emozioni hanno un ruolo importante nel ragionamento pratico</em>.</p>
<p>Test effettuati con questo paziente mostrano che non è in grado di provare emozioni. Ad esempio in una partita a poker non prova tristezza se perde una mano di gioco, oppure riesce a parlare in modo freddo della sua malattia (o di eventi brutti) con freddezza.</p>
<p>Damasio va oltre questa ipotesi e ne formula un&#8217;altra, in cui afferma che, come le emozioni, <em>le immagini mentali hanno un ruolo nel ragionamento pratico</em>.</p>
<p>Supponiamo di essere stati morsi da un cane mentre passeggiavamo nel parco. Dopo qualche giorno se ripensiamo a quel cane, riusciamo ad immaginarlo e a ricostruirci nel nostro <em>buffer visivo</em> la sua immagine. Assieme alla scena ricostruita associamo un&#8217;emozione che può essere bella o brutta a seconda se il morso del cane ci è piaciuto oppure no (ovviamente in questo caso non ci è piaciuto). Quindi in futuro cercheremo di non passare vicino a quel cane perché rischiamo di essere morsi nuovamente: così facendo nel nostro ragionamento pratico elimineremo tutti gli scenari possibili che ci portano nelle vicinanze di quel cane.<br />
Damasio dice con questa ipotesi che il paziente da lui studiato è incapace associare le immagini mentali alle emozioni, e quindi nel suo ragionamento pratico può scegliere un&#8217;azione che lo riporta a commettere un errore già fatto in passato.</p>
<p>Con queste ipotesi Damasio ha cercato di spiegare l&#8217;assenza di pianificazione e di prudenza che ha il suo paziente durante i ragionamenti pratici che lo coinvolgono i prima persona.<br />
Inoltre mostra come le emozioni hanno un ruolo centrale nel ragionamento, e quindi è sbagliato considerarle indipendenti dal problem solving. Quindi sarà possibile progettare macchine con prestazioni pari a quelle degli essere umani anche se non provano emozioni?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fireteam.it/2010/01/primi-sviluppi-intelligenza-artificiale/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La nascita dell&#8217;Informatica</title>
		<link>http://www.fireteam.it/2010/01/la-nascita-dell-informatica/</link>
		<comments>http://www.fireteam.it/2010/01/la-nascita-dell-informatica/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 23:22:56 +0000</pubDate>
		<dc:creator>saverio</dc:creator>
				<category><![CDATA[Biblioteca]]></category>
		<category><![CDATA[Algoritmo]]></category>
		<category><![CDATA[Godel]]></category>
		<category><![CDATA[Hilbert]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Logica]]></category>
		<category><![CDATA[Turing]]></category>

		<guid isPermaLink="false">http://www.fireteam.it/?p=762</guid>
		<description><![CDATA[Il primo kernel Linux è stato pubblicato nel 1991, l’annuncio del primo sistema operativo della famiglia Windows risale al 1983, la nascita dell&#8217;informatica come disciplina scientifica risale al 1953, il primo calcolatore programmabile digitale al 1941 (Z3 di Zuse); in realtà tutto scaturisce da una storia molto più lunga che parte dagli studi di Leibniz [...]]]></description>
			<content:encoded><![CDATA[<p><span>Il primo<span> kernel</span> Linux è stato pubblicato nel 1991, l’annuncio del primo sistema operativo della famiglia Windows risale al 1983, la nascita dell&#8217;informatica come disciplina scientifica risale al 1953, il primo calcolatore programmabile digitale al 1941 (Z3 di <span>Zuse</span>); in realtà tutto scaturisce da una storia molto più lunga che parte dagli studi di Leibniz quando non esistevano i calcolatori digitali, e coinvolge grandi studiosi come Frege, Gödel, e <span>Turing</span>.</span></p>
<p><span><span id="more-762"></span><br />
</span></p>
<h2>Gottfried Wilhelm von Leibniz</h2>
<p>Leibniz (Lipsia, 21 giugno 1646 – Hannover, 14 novembre 1716), è stato un filosofo, matematico, e logico tedesco. Ai suoi tempi la logica era quella Aristotelica, quindi del tipo soggetto-predicato.</p>
<p>Leibniz fu il primo ad intuire l’<em style="mso-bidi-font-style: normal">elaborazione simbolica</em> con il suo progetto della <strong>Characteristica Universalis</strong>. L’idea alla base della Cu (Characteristica Universalis) era quella di creare un linguaggio universale per migliorare le comunicazioni politiche, religiose, e commerciali; quindi la Cu doveva essere un linguaggio in grado di guidare ogni sorta di ragionamento.</p>
<p>Il progetto della Cu prevedeva:</p>
<ol>
<li><!--[if !supportLists]--><span><span><span> </span></span></span>Una<strong> Lista</strong> dei concetti primitivi e simboli corrispondenti</li>
<li><!--[if !supportLists]--><span><span><span> </span></span></span><!--[endif]-->Un’<strong>Arte Combinatoria</strong> utile a combinare i concetti primitivi:
<ol>
<li><!--[if !supportLists]--><span><span><span> </span></span></span><!--[endif]--><span style="text-decoration: underline;">Ars Iudicandi</span>: procedura di decisione della verità</li>
<li><span><span><span> </span></span></span><!--[endif]--><span style="text-decoration: underline;">Ars Invenendi</span>: procedura di decisione generativa</li>
</ol>
</li>
</ol>
<p>Notiamo che l’Ars Iudicandi e l’Ars Invenendi <em>prevedevano l’introduzione nel sistema della Cu di due procedure effettive</em>, ovvero ci doveva essere un procedimento preciso (algoritmo) sia per decidere la verità di una sentenza del linguaggio (Ars Iudicandi), sia per ottenere altre verità dalle verità che già conosciamo (Ars Invenendi).</p>
<p>I concetti di <strong>Procedura Effettiva</strong> e <strong>Calcolo Simbolico</strong> sono dunque nati da quest’idea di Leibniz.</p>
<p>Purtroppo il programma di sviluppare questo linguaggio è solo un progetto di Leibniz che non è mai stato sviluppato. Abbiamo solo dei documenti e schizzi a riguardo, che saranno poi usati da Frege.</p>
<p>Qui notiamo che l’Ars Iudicandi prevede una sorta di predicato <span>dim</span>(x,y), vero quando x è (il numero di) una dimostrazione della formula (di numero) y. Quindi è quasi un esempio compiuto di <strong>Sistema Formale</strong>.</p>
<h2>Immanuel <span>Kant</span></h2>
<p><span>Kant</span> (<span>Königsberg</span>, 22 aprile 1724 – <span>Königsberg</span>, 12 febbraio 1804) è stato un filosofo tedesco. Egli scrive un’opera alla fine del ‘700 nella quale diceva: “<em>La matematica è una cosa certa, e noi dobbiamo studiare solo come arrivare a questa certezza. Inoltre ci si può chiedere: perché la matematica è certa? Qual è il suo fondamento?</em>”.</p>
<p>Frege proverà a rispondere a questa domanda.</p>
<h2>Friedrich Ludwig <span>Gottlob</span> Frege</h2>
<p>Frege (<span>Wismar</span>, 8 novembre 1848 – Bad <span>Kleinen</span>, 26 luglio 1925) è stato un matematico, logico e filosofo tedesco, padre della logica matematica moderna.</p>
<p>Frege voleva rispondere alla domanda posta da <span>Kant</span> (<em>“Perché la matematica è certa?”</em>), usando l’intuizione che aveva avuto Leibniz nella sua Characteristica Universalis.</p>
<p>Qui è introdotta la <strong>Tesi Logicista</strong> (o <strong>Programma Logicista</strong>):</p>
<p align="center">“La Matematica è riconducibile alla Logica”</p>
<p>Si afferma che la matematica è logica! Per portare avanti il Programma Logicista, Frege introduce la logica del primo e del secondo ordine come la conosciamo attualmente. Lui la chiamava <em>Ideografia</em>.<br />
Nel 1879 Frege propose l’<em style="mso-bidi-font-style: normal">Ideografia</em> un “linguaggio in formule del pensiero puro, a imitazione di quello aritmetico” in cui dice: il modo più sicuro di condurre una dimostrazione è quello puramente logico, il quale astrae dalla natura particolare delle cose e si basa soltanto sulle leggi sulle quali si fonda ogni conoscenza.</p>
<p>A supporto della Tesi Logicista, fu introdotto il primo esempio compiuto di <strong>Sistema Formale</strong>, ovvero un sistema che vincola il processo dimostrativo in modo tale che è sempre possibile riconoscere mediante un procedimento algoritmico se una qualsiasi configurazione di simboli è una dimostrazione oppure no.</p>
<p>Questo <em>sistema formale</em> prevedeva:</p>
<ol>
<li><!--[if !supportLists]--><span><span><span> </span></span></span>Insieme Finito di <strong>Assiomi Logici</strong>.</li>
<li><!--[if !supportLists]--><span><span><span> </span></span></span><!--[endif]-->Insieme Finito di <strong>Regole di Inferenza</strong> che, senza introdurre conoscenza implicita, ci permettano di dedurre gli assiomi della Matematica dall’insieme di <em>Assiomi Logici</em>.</li>
</ol>
<p>Inoltre ci sono due importanti <strong>Condizioni di Effettività</strong> che specificano un <em>Sistema Formale</em>:</p>
<ul>
<li><!--[if !supportLists]--><span><span><span> </span></span></span>L’insieme degli Assiomi Logici è <strong>Effettivamente Decidibile</strong></li>
<li><span><span><span> </span></span></span>L’insieme delle Dimostrazioni Logiche è <strong>Effettivamente Decidibile</strong></li>
</ul>
<p style="text-indent:-18.0pt;mso-list:l3 level1 lfo5">
<p>In quest’ultima richiesta si intravede qualcosa del teorema di Gödel; si chiede che il predicato <span>dim</span>(x,y) sia effettivamente decidibile!</p>
<p>Come in Leibniz, anche questa volta ci deve essere un procedimento formale (Algoritmo) che ci assicuri le condizioni di effettività. Ma questa volta le condizioni di effettività sono espressamente richieste.</p>
<p>Inoltre Leibniz e Frege hanno obiettivi diversi, il primo vuole un linguaggio universale, mentre il secondo vuole verificare la certezza della matematica (un problema più piccolo rispetto alla definizione di una lingua universale); entrambi usano la logica come strumento per raggiungere il proprio fine epistemologico.</p>
<h2>Bertrand Arthur William Russell</h2>
<p>Frege prosegue con il suo programma logicista puntando a dimostrare gli assiomi della matematica (gli assiomi di Peano) partendo solo dagli <em>assiomi logici</em>. Nel sistema formale definito da Frege si possono individuare:</p>
<ul>
<li><span><span> </span></span>Il principio di <strong>Coestensione</strong>: “data una proprietà P, esiste l’insieme y di tutti gli x che godono della proprietà P”</li>
<li><!--[if !supportLists]--><span><span> </span></span>Il principio del <strong>Terzo Escluso</strong>: almeno uno tra <em>x</em> e <span><em>not</em></span><em> x</em> deve essere vero.</li>
</ul>
<p>Russell (<span>Trellech</span>, 18 maggio 1872 – <span>Penrhyndeudraeth</span>, 2 febbraio 1970), è stato un filosofo, logico e matematico gallese. Si interessò al lavoro di Frege, e formulò il famoso Paradosso di Russell, causa della caduta del Programma Logicista.</p>
<p><span style="text-decoration: underline;">Paradosso di Russell</span>: Supponiamo la proprietà:<span><em> not</em></span><em>(x appartiene ad x)</em><br />
Un elemento che gode di questa proprietà non appartiene a se stesso. Per il principio della coestensione c’è l’insieme di tutti gli elementi che godono di questa proprietà. Quindi diciamo y l’insieme di tutti gli elementi che non appartengono a se stessi. Adesso ci chiediamo: y appartiene a se stesso?</p>
<ul>
<li><!--[if !supportLists]--><span><span> </span></span>Se y appartiene a se stesso allora gode della proprietà di non appartenere a se stesso.</li>
<li><!--[if !supportLists]--><span> </span>Se y non appartiene a se stesso allora per come è definito deve appartenere a se stesso</li>
</ul>
<p>In entrambi i casi, grazie al principio del terzo escluso, giungiamo ad una contraddizione (questa è un’<strong>antinomia</strong>).</p>
<p>Russell nel 1901 formulò il paradosso e si rese conto delle conseguenze che avrebbe avuto per il programma logicista. Non esitò a mettersi in contatto con Frege con una lettera nell&#8217;estate del 1902 in cui illustra il paradosso.</p>
<p>Frege prese atto delle conseguenze distruttive per il sistema che aveva costruito in quegli anni e decise di scrivere un&#8217;appendice ai suoi Principî in cui confessava il fallimento della sua opera.</p>
<p>Siamo davanti ad una scelta:</p>
<p class="MsoListParagraph"><!--[if !supportLists]--><span><span>-</span></span><em> rinunciare al principio del terzo escluso</em>: e quindi rinunciare alla logica classica</p>
<p>oppure</p>
<p class="MsoListParagraph"><!--[if !supportLists]--><span><span>-</span></span><em> rinunciare al principio di coestensione</em>: ma in questo caso non si riescono più a derivare gli assiomi della matematica</p>
<p>Qui il Programma Logicista, e sorge il <span style="text-decoration: underline;">problema della certezza della matematica</span>.</p>
<p>A seguire ci saranno due programmi che puntano a risolvere il problema della certezza della matematica: Il <strong>Programma Intuizionista</strong>, ed il <strong>Programma di Hilbert</strong>.</p>
<h2><span>Luitzen</span> <span>Egbertus</span> Jan <span>Brouwer</span></h2>
<p><span>Brouwer</span> (<span>Overschie</span>, 27 febbraio 1881 – <span>Blaricum</span>, 2 dicembre 1966) è stato un matematico olandese. Fondò la <strong>Scuola Intuizionista (o costruttivista)</strong>, nella quale dubitò<br />
del <em>principio del terzo escluso</em>.</p>
<p>I requisiti del Programma Intuizionista erano:</p>
<ol>
<li><span> </span><!--[endif]-->Eliminazione del Principio del Terzo Escluso su totalità infinite.</li>
<li>Interpretazione delle dimostrazioni in modo Costruttivista: cioè una dimostrazione di “esiste x tale che P(x)” deve effettivamente esibire un elemento y per il quale è vero P(y).</li>
</ol>
<p>Quindi gli intuizionisti puntano a limitare la matematica, eliminando l’uso di proposizioni ideali, come l’infinito in atto (o infinito attuale), che hanno permesso alla matematica di raggiungere ottimi risultati.</p>
<h2>David Hilbert</h2>
<p>Hilbert (<span>Königsberg</span>, 23 gennaio 1862 – <span>Gottinga</span>, 14 febbraio 1943) è stato un matematico tedesco. Rispose agli intuizionisti con il cosiddetto <strong>Programma di Hilbert</strong>.</p>
<p>Al contrario di Frege che voleva dimostrare gli assiomi matematici patendo dagli assiomi logici, Hilbert voleva formalizzare la matematica con degli assiomi e poi verificare la coerenza delle teorie matematiche formalizzate.</p>
<p>Quindi:</p>
<ol>
<li><!--[if !supportLists]--><!--[endif]-->Formalizzare tutte le teorie matematiche <em>“T”</em> con sistemi formali T</li>
<li><!--[if !supportLists]--><!--[endif]-->Dimostrare la coerenza di tali sistemi T con <span style="text-decoration: underline;">metodi matematici finitisti</span>.</li>
</ol>
<p>Si comincio con la più semplice delle teorie, ossia con l’Aritmetica Elementare. I <em>metodi matematici finitisti</em> non sono mai stati definiti da Hilbert con precisione. Di sicuro sono metodi matematici in cui vengono chiesti i requisiti intuizionisti: quindi no al terzo escluso su totalità infinite e interpretazione costruttivista delle dimostrazioni. Molti concordano che i metodi finitisti sono inclusi nell’aritmetica Primitiva Ricorsiva dove valgono gli assiomi di Peano che descrivono l’aritmetica elementare.</p>
<p>Nasce la meta-matematica, ossia la parte della matematica che consente di studiare la matematica da punti di vista generali. Stiamo cioè usando la matematica stessa per risolvere il <span style="text-decoration: underline;">problema della certezza della matematica</span>.<br />
Nella metamatematica possiamo studiare varie proprietà dei sistemi formali, ad esempio:</p>
<ul>
<li><!--[if !supportLists]--><strong>Coerenza</strong>: se T dimostra A allora non può dimostrare <span>not</span> A</li>
<li><!--[if !supportLists]--><strong>Correttezza</strong>: se T dimostra A allora A è vero nella teoria <em style="mso-bidi-font-style: normal">“T”</em></li>
<li><strong>Completezza</strong>: se A è vero nella teoria <em>“T”</em> allora T dimostra A</li>
</ul>
<p>Notiamo che la correttezza di un sistema formale T implica la sua coerenza.</p>
<p>Ricapitolando Hilbert con il suo <strong>Programma della Coerenza</strong> (che è solo una parte del <strong>Programma di Hilbert</strong>) vuole dimostrare la coerenza della matematica utilizzando la matematica stessa.</p>
<h2>Principia <span>Mathematica</span> (PM)</h2>
<p>I Principia <span>Mathematica</span>, scritti da Russell e <span>Whitehead</span> tra il 1910 e il 1913, rappresentano un’importante tentativo di formalizzare la matematica con la logica. Traggono origine dal lavoro di Frege.</p>
<p>Chiameremo PM il sistema formale formalizzato in questo lavoro.</p>
<h2>Kurt Gödel</h2>
<p>Gödel (Brno, 28 aprile 1906 – Princeton, 14 gennaio 1978) è stato un matematico, logico e filosofo statunitense di origine austro-ungarica, noto soprattutto per i suoi lavori sull&#8217;incompletezza delle teorie matematiche. Gödel è ritenuto uno dei più grandi logici di tutti i tempi insieme a Frege e Aristotele.</p>
<p>Gödel si interessa al Programma di Hilbert, e formula il suo <strong>primo teorema di incompletezza</strong>:</p>
<p style="margin-left:35.4pt"><em>Se PM è coerente, allora esiste una formula G nel linguaggio L(PM) tale che G è vera e non è dimostrabile in PM ne G ne <span>not</span> G</em></p>
<p>Ne segue come corollario il <strong>secondo teorema di incompletezza</strong>:</p>
<p style="margin-left:35.4pt"><em>Se PM è coerente, e dato che la coerenza di PM è esprimibile all’interno di PM stesso (<span>consis</span>(PM) appartiene a L(PM)) allora in PM non è dimostrabile <span>consis</span>(PM)</em></p>
<p>Il <strong>secondo teorema di incompletezza</strong> è quello che fa cadere il <strong>Programma di Hilbert</strong> poiché afferma che non possiamo dimostrare la coerenza di PM all’interno di PM stesso,<br />
cioè non possiamo dimostrare la coerenza della matematica all’interno della matematica stessa.</p>
<p>Però i teoremi di incompletezza si riferiscono al <strong>Sistema Formale</strong> PM. Per far cadere definitivamente il Programma di Hilbert bisognava generalizzare i teoremi di incompletezza a qualsiasi <strong>Sistema Formale</strong> che contiene l’aritmetica elementare.</p>
<h2>Generalizzazione dei Teoremi di Incompletezza</h2>
<p>Vogliamo generalizzare i teoremi di incompletezza in questo modo:</p>
<p><em>Per ogni sistema formale S tale che:</em></p>
<ol>
<li><!--[if !supportLists]--><em> </em><em>S contiene P (Aritmetica di Peano)</em></li>
<li><!--[if !supportLists]--><em> </em><em>S soddisfa la <strong>condizioni di effettività </strong>di Frege</em>
<ul>
<li><!--[if !supportLists]--><em> </em><em> a) L’insieme degli assiomi è effettivamente decidibile</em></li>
</ul>
<ul>
<li><!--[if !supportLists]--><em> </em><em>b) L’insieme delle dimostrazioni è effettivamente decidibile</em></li>
</ul>
</li>
<li><!--[if !supportLists]--><em></em><em> S è coerente</em></li>
</ol>
<p><em>Allora per S valgono i teoremi di incompletezza</em></p>
<p>Le ipotesi 1 e 3 sono ben precise. L’ipotesi 2.a e 2.b invece no! Infatti esse chiedono di avere due funzioni <strong>effettivamente calcolabili</strong> f(x) e g(Y) le quali ci decidano rispettivamente le formule ben formate di S e le dimostrazioni di S.</p>
<p>Questo è il punto di snodo tra i fondamenti della matematica e la nascita dell’informatica. Infatti una funzione è effettivamente calcolabile se esiste un algoritmo per essa.</p>
<p>Ma quale’è il concetto di algoritmo? Quali sono le funzioni calcolabili mediante un procedimento di calcolo (algoritmo)?</p>
<p>Tutt’ora non esiste un concetto di algoritmo preciso. La classe di tutti gli algoritmi è delineata con la tesi di <span>Church-Turing</span>, la quale essendo una tesi non può essere dimostrata.</p>
<h2>Alan <span>Mathison</span> <span>Turing</span></h2>
<p><span>Turing</span> (Londra, 23 giugno 1912 – <span>Wilmslow</span>, 7 giugno 1954) è stato un matematico, logico e <span>crittanalista</span> britannico, considerato uno dei padri dell&#8217;informatica.</p>
<p>Lavorò alla generalizzazione del teorema di Gödel, tentando di rispondere alla domanda: <em>“che cos’è una funzione parzialmente calcolabile mediante un procedimento di calcolo (algoritmo)?”</em>.</p>
<p>Church a quei tempi lavorava alla stessa domanda definendo la classe delle funzioni matematiche PRF, per poi arrivare ad un procedimento di calcolo (<span>λ-calcolo</span>).</p>
<p><span>Turing</span> invece cominciò questo lavoro cominciando a definire il procedimento di calcolo (definito dalla <strong>Macchina di <span>Turing</span></strong>), per poi arrivare alla classe di tutte le funzioni calcolabili da una <strong>Macchina di <span>Turing</span></strong>.</p>
<p>Per definire la sua Macchia di <span>Turing</span> (d’ora in poi <span>MdT</span>), <span>Turing</span> osservo il comportamento di un essere umano che calcola. Quindi individua una serie di restrizioni:</p>
<ol>
<li><!--[if !supportLists]-->L’umano effettua dei calcoli aiutandosi con un foglio. Nel caso di una macchina possiamo pensare ad un nastro potenzialmente infinito fatto di caselle contigue. In ogni casella possiamo<br />
scrivere un simbolo appartenente ad un alfabeto.</li>
<li><!--[if !supportLists]-->Limiti all’uso del nastro
<ul>
<li><!--[if !supportLists]--><span><span>a.<span> </span></span></span><!--[endif]-->Limite Percettivo: c’è un limite superiore B al numero di caselle contigue osservabili in un istante (questo implica che ci si può spostare sul nastro per vedere le prossime B caselle).</li>
<li><!--[if !supportLists]--><span><span>b.<span> </span></span></span><!--[endif]-->Limite di Memoria: l’alfabeto dei simboli scrivibili sul nastro è finito poiché l’essere umano non riesce a distinguere e ricordare<span> </span>infiniti simboli.</li>
</ul>
</li>
<li><!--[if !supportLists]-->Il comportamento dipende dallo stato mentale (stato di memoria) dell’essere umano. Questo stato mentale dipende dalle azioni fatte precedentemente. Senza indagare molto sul cervello umano, imponiamo che questi stati siano in numero finito (deciso a priori).</li>
<li><!--[if !supportLists]-->Limitiamo il comportamento dell’essere umano che calcola, senza perdita di generalità, al compimento di un’azione per volta:
<ul>
<li><!--[if !supportLists]--><span><span>a.<span> </span></span></span><!--[endif]-->Si può cambiare il contenuto solo delle caselle osservate</li>
<li><!--[if !supportLists]--><span><span>b.<span> </span></span></span><!--[endif]-->Ci si può spostare di un numero L di caselle per volta</li>
<li><!--[if !supportLists]--><span><span>c.<span> </span></span></span><!--[endif]-->Si può cambiare lo stato mentale</li>
</ul>
</li>
<li><!--[if !supportLists]-->Il calcolo è fatto in maniera Deterministica, dato lo stesso input otteniamo sempre lo stesso output</li>
</ol>
<p>Ma come imponiamo la condizione di determinismo?</p>
<p>Consideriamo tutte le possibili azioni che può fare l’essere umano durante il calcolo. Diciamo C l’insieme di tutte le possibili coppie &lt;stato mentale, configurazione dei simboli osservati&gt;. Per ogni elemento di C si può scegliere di fare un’azione a scelta contenuta nell’insieme possibili di azioni A (scrittura di un simbolo, spostamento a destra, spostamento a sinistra, cambiamento di stato mentale). Definiamo l’insieme di tutte le possibili istruzioni <span>I=CxA</span>. L’insieme delle istruzioni come definito contiene delle istruzioni che definiscono un algoritmo <strong>non deterministico</strong>, poiché a parità di stato mentale e configurazioni di simboli osservati, possiamo trovare istruzioni che effettuano azioni diverse. Poniamo qui una condizione di <strong>determinismo</strong>, chiedendo di avere come insieme di istruzioni solo un sottoinsieme di I nel quale non compaiano istruzioni che possono essere applicate nello stesso stato del calcolo.</p>
<p>Questa è l’analisi dell’essere umano che calcola.</p>
<p>Adesso definiamo una macchina che simulerà il comportamento di calcolo dell’essere umano. Questa macchina avrà delle configurazioni interne q, che corrispondono agli stati mentali dell’umano. Lavora su un nastro osservando ad ogni nastro un numero B di caselle contigue, e può spostarsi di un numero L di caselle a destra o a sinistra. Può usare i simboli dell’alfabeto per scrivere sulla porzione di nastro osservata, e può cambiare la sua configurazione interna. Questa macchina riproduce il comportamento di calcolo di un essere umano.</p>
<p>Ponendo i vincoli B=1 e L=1 abbiamo proprio la definizione di <strong>Macchina di <span>Turing</span></strong> (<span>MdT</span>). Chiamiamo classe delle funzioni <span>Turing</span> calcolabili (o <span>T-calcolabili</span>), la classe delle funzioni calcolabili con una <span>MdT</span>.</p>
<p><span>Turing</span> arriva a formulare la seguente tesi:</p>
<p align="center">“Ogni funzione calcolabile da un essere umano mediante algoritmo è una funzione <span>T-calcolabile</span>”</p>
<p>Notiamo che questa tesi è però ristretta alle funzioni calcolate da un essere umano, e non da un qualsiasi agente di calcolo (come un calcolatore). Proviamo ad estendere questa tesi in questo modo:</p>
<p align="center">“Ogni funzione calcolabile da un calcolatore mediante algoritmo è una funzione <span>T-calcolabile</span>”</p>
<p>Per arrivare alla tesi di <span>Church-Turing</span>, osserviamo che i limiti B ed L sono soggetti ai limiti della fisica: la teoria delle relatività ci vieta di oltrepassare la velocità della luce. Inoltre in una singola cella di nastro possiamo registrarci un simbolo preso da un alfabeto finito, perché assumiamo che la materia (del nastro) abbia un vincolo di atomicità, ma su questo non è ancora stata formulata alcuna teoria scientifica.</p>
<p>Considerando i limiti della fisica possiamo riscrivere la tesi ed ottenere finalmente la <strong>Tesi di <span>Church-Turing</span></strong>:</p>
<p align="center">“Ogni funzione calcolabile da un algoritmo è una funzione <span>T-calcolabile</span>”</p>
<p>Con questa tesi sono stati generalizzati i teoremi di incompletezza di Gödel, chiedendo che le funzioni f(x) e g(Y) siano <span>T-calcolabili</span>. Cade definitivamente il <strong>Programma di Hilbert</strong>,<br />
e il suo tentativo di verificare la certezza della matematica.</p>
<h2>Sviluppi futuri</h2>
<p>Quindi dal problema della matematica è nata la <span>MdT</span>, e <span>Turing</span> stesso definì la <strong>Macchina di <span>Turing</span> Universale</strong>, la quale è programmabile proprio come un moderno calcolatore digitale.</p>
<p>Da questo nasce il ramo dell’Intelligenza Artificiale (IA), e più in generale dell’Informatica.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fireteam.it/2010/01/la-nascita-dell-informatica/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Uso della Tecnologia ISDN</title>
		<link>http://www.fireteam.it/2010/01/uso-della-tecnologia-isdn/</link>
		<comments>http://www.fireteam.it/2010/01/uso-della-tecnologia-isdn/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 14:25:22 +0000</pubDate>
		<dc:creator>saverio</dc:creator>
				<category><![CDATA[Reti]]></category>
		<category><![CDATA[isdn]]></category>
		<category><![CDATA[pbx]]></category>

		<guid isPermaLink="false">http://www.fireteam.it/?p=755</guid>
		<description><![CDATA[Integrated Services Digital Network, o ISDN, è una rete digitale che dà supporto a molti servizi di voce e dati. La definizione tecnica dell&#8217;ISDN, che investe diverse componenti delle reti, risale alle raccomandazioni ITU-T della serie I del 1984 e comprende numerose altre pubblicazioni dello stesso ITU-T e dell&#8217;ETSI (European Telecommunications Standard Institute) fatte negli [...]]]></description>
			<content:encoded><![CDATA[<p>Integrated Services Digital Network, o ISDN, è una rete digitale che dà supporto a molti servizi di voce e dati. La definizione tecnica dell&#8217;ISDN, che investe diverse componenti delle reti, risale alle raccomandazioni ITU-T della serie I del 1984 e comprende numerose altre pubblicazioni dello stesso ITU-T e dell&#8217;ETSI (European Telecommunications Standard Institute) fatte negli anni successivi.</p>
<h2><strong>Integrated Services Digital Network &#8211; ISDN<br />
</strong></h2>
<p>ISDN è un servizio di <em>telefonia digitale</em> basato sul protocollo ISDN. Quindi con il termine ISDN ci riferiamo sia al protocollo, sia al servizio implementato dal protocollo stesso.</p>
<p>ISDN: protocollo che descrive come si svolgono le chiamate<br />
Una rete ISDN è quindi una rete digitale anche integrata nei servizi, in cui le diverse parti, il terminale, la rete di accesso, la rete di trasporto, sono realizzate per offrire gli stessi servizi. Elementi fondamentali per il supporto di tali servizi sono il protocollo di segnalazione della rete di trasporto ISUP (ITU-T Q.767) e della rete di accesso DSS1 (ITU-T Q.931), che fanno parte della pila di protocolli del sistema di segnalazione a canale comune n°7 insieme ad altri descritti nelle Racc. ITU-T serie Q. Attraverso tali protocolli vengono trasportate le informazioni che consentono l&#8217;espletamento dei diversi servizi; un esempio per tutti l&#8217;identità del chiamante, che viene trasportata dai protocolli di segnalazione dalla rete del chiamante verso la rete e il terminale del chiamato.</p>
<p><span id="more-755"></span></p>
<p>In Europa è usata la variante ISDN-DSS1 sviluppata da ETSI (European Telecomunications Standards Institute).<br />
Sull&#8217;accesso BRA ISDN sono disponibili una serie di nuovi servizi come la segnalazione del numero telefonico di chi chiama (Caller ID) e il multinumero, cioè la possibilità di avere fino ad otto numeri telefonici sullo stesso abbonamento, ciascuno assegnato ad un apparecchio diverso (es. uno per il telefono, uno per il fax, uno per il modem in ingresso&#8230;). La tecnologia digitale utilizzata da ISDN garantisce una qualità audio molto elevata, eliminando completamente la diafonia e buona parte dei disturbi presenti nella tradizionale telefonia . In Italia ISDN BRA viene fornito in modalità mononumero o multinumero: è possibile cioè richiedere fino a 7 numeri telefonici diversi oltre al numero principale. Sempre sull&#8217;accesso base (BRA), che comprende 2 canali B a 64 Kbit/sec, è possibile collegarsi ad Internet sia ad una velocità di 64 Kbit/s, pagando una semplice telefonata, sia, se il Provider utilizzato lo permette, ad una velocità di 128 Kbit/s, sostenendo però il costo di due chiamate contemporanee. Inoltre sono disponibili i servizi di avviso di chiamata, conferenza a tre, presentazione dell&#8217;identità del chiamante (Caller ID), trasferimento di chiamata e per alcuni Operatori anche il servizio di richiamata su occupato.</p>
<p>Molto diffusa in Italia un tipo particolare di NT, chiamata NT1+, che ha al suo interno anche un Terminal Adapter (TA) a/b, capace di gestire due porte analogiche, permettendo cosi&#8217; di connettere direttamente all&#8217;NT1+ apparati analogici come telefoni tradizionali o fax di gruppo 3. L&#8217;installazione della borchia ISDN deve essere richiesta al proprietario della rete.</p>
<p>Una ulteriore configurazione degli accessi è il &#8220;punto-punto&#8221; e &#8220;punto-multipunto&#8221; che in buona sostanza esprime il modo di dialogare della rete con uno o più terminali lato utente. La configurazione &#8220;punto-punto&#8221; è adottata in presenza, lato utente, di centralini (PABX)collegati sia su accesso primario che in pool di accessi base. La configurazione punto-multipunto è adottata ad esempio negli accessi base in cui sul bus isdn sono collegati dispositivi con numeri diversi (MSN) quali telefoni isdn, modem isdn, fax G4. La differenza tecnica che contraddistingue anche le due tipologie è il cosiddetto TEI, che viene utilizzato nel protocollo ISDN, per il quale una punto-punto è fisso a zero, mentre sulla punto-multipunto è variabile e deciso dalla centrale pubblica. Per capire se la tipologia e punto-punto o punto-multipunto, soprattutto nel caso di accesso base mononumero, bisogna contattare l&#8217;operatore che fornisce il servizio, non esistono veri e propri standard.</p>
<p><strong><span style="text-decoration: underline;">CALLER-ID</span>:</strong> è la funzione che ci permette di vedere il numero di chi ci chiama.</p>
<p><strong><span style="text-decoration: underline;">MULTINUMERO</span>:</strong> Possibilità di avere fino a 8 numeri su una singola linea ISDN. Ovviamente bisognerà assegnare un numero per ogni apparecchio.</p>
<p>Il collegamento ISDN più diffuso è quello base, a due canali (detto BRI):</p>
<li>1° Canale: 64 kbit/s</li>
<li>2° Canale: 64 kbit/s</li>
<li>3° Canale aggiuntivo: 16 kbit/s (usato per le segnalazioni)</li>
<p>La banda totale e&#8217; 144 kbit/s!!! Di questa banda, solo i canali da 64 kbit/s sono sfruttati per trasferire informazioni utili all&#8217;utente finale, quindi in effetti l&#8217;utente beneficia di 128 kbit/s (sempre teorici)</p>
<h2>Architettura ISDN</h2>
<h3>Alcuni termini</h3>
<ul>
<li><strong>NT (Network Terminator)</strong>: Traduce il segnale proveniente dalla centrale telefonica, mediante <em>U-BUS</em>, in segnale utilizzabile dai nostri dispositivi ISDN, su <em>S-BUS</em>. Inoltre il Network Terminator permette di attaccarci</li>
<li><strong>TA (Terminal Adapter) </strong>: Permette di allacciare vecchi dispositivi analogigi al Network Terminator, in moda da poterli riutilizzare. E&#8217; indicato per i vecchi FAX <img src='http://www.fireteam.it/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  .</li>
</ul>
<h3>Esempio NT (Network Terminator)</h3>
<p>Un Network Terminator, che prende in ingresso un U-Bus dalla linea ISDN, e caccia in output due S-Bus per allacciarci due dispositivi ISDN (ad esempio due telefono ISDN).</p>
<p>Notiamo che in S-Bus non è che un cavo ethernet, usato per ISDN&#8230; e (forse) per U-Bus si usa il doppino telefonico, o anche in questo caso un cavo ethernet.</p>
<h2>Configurazione di ISDN</h2>
<p>Una linea ISDN può avere varie configurazioni, in modo da adattarsi all&#8217;hardware con il quale deve funzionare (esempio PBX &#8211; centralino telefonico).</p>
<h3>Canali</h3>
<p>ISDN supporta due tipi di canali:</p>
<p><strong>-&gt; Canale B</strong> (Bearer): sono canali utilizzati per i dati ed hanno una banda prefissata di 64 kbit/s.</p>
<p><strong>-&gt; Canale D</strong> (Delta): sono canali usati per segnalazioni e controllo; in particolari configurazioni possono essere usati anche per i dati. La banda passante assegnata ad un canale D varia al variare del tipo di <em>Accesso ISDN</em>.</p>
<h3>Accesso ISDN</h3>
<p>Esistono due tipi di accesso ISDN:</p>
<ul>
<li><strong>Accesso BRI [Basic Rate Interface - Accesso Base]</strong>:&#8211; 2 canali B&#8211; 1 canale D a 16 kbit/s==&gt; Totale 2B+D = 144 kbit/s</li>
<li><strong>Accesso PRI T1 [Basic Rate Interface - Accesso Base]</strong>: (America, Giappone)&#8211; 23 canali B&#8211;  1 canale D a 64 kbit/s==&gt; Totale 23B+D = 1536 kbit/s</li>
<li><strong>Accesso BRI E1 [Basic Rate Interface - Accesso Base]</strong>: (Europa, Asia, Australia)&#8211; 30 canali B&#8211;  2 canale D a 64 kbit/s==&gt; Totale 30B+2D = 2048 kbit/s</li>
</ul>
<h3>Funzionamento Chiamate</h3>
<p>I canali D sono usati per <em>iniziare</em> le chiamate. Una volta che la chiamata è iniziata, ad essa è allocato un canale B&#8230; quindi per ogni chiamata deve essere disponibile un canale B (sempre di 64 kbit/s).</p>
<p>Notiamo come i canali B sono allocati sempre in modo dinamico!</p>
<h2>Considerazioni Tecniche</h2>
<p>L&#8217;evoluzione di ISDN l&#8217;ha portato ad essere adottato in anbito aziendale. Queste ultime scelgono spesso tra due opzioni di installazione: il <em>multinumero</em> e la <em>selezione passante</em>.</p>
<h3>Multinumero</h3>
<p>E&#8217; un servizio opzionale. <span class="blue-pen"> Permette di avere un massimo di 8 terminali, sullo steso S-BUS, ognuno raggiungibile direttamente dall&#8217;esterno con un suo proprio numero telefonico</span>.</p>
<ul>
<li>Possibile solo su ISDN accesso base (BRI)</li>
<li>Solo due terminali possono essere attivi contemporaneamente</li>
<li>Non chiede l&#8217;installazione di un PBX</li>
<li>Le chiamate interne sono a pagamento</li>
<li>NT (Network Terminator) deve essere configurato punto-multipunto</li>
</ul>
<h3>Selezione Passante</h3>
<p>E&#8217; un servizio opzionale. <span class="blue-pen"> Permette di raggiungere direttamente i terminali interni appoggiandoci su un PBX (centralino telefonico). Non si ha il limite di 8 terminali su ogni linea ISDN</span>.</p>
<ul>
<li>Possibile sia su linee BRI, sia su linee PRI</li>
<li>Non c&#8217;è limite al numero di terminali interni attivi contemporaneamente</li>
<li>Chiede l&#8217;instllazione di un PBX</li>
<li>Le chiamate interne NON sono a pagamento</li>
<li>NT (Network Terminator) deve essere configurato punto-punto</li>
</ul>
<h3>Considerazioni</h3>
<p>Il multinumero si adatta solo in pochi casi&#8230; spesso perche&#8217; sono richieste telefonate interne gratuite!</p>
<p><span class="blue-pen"><br />
Ad esempio possiamo avere cinque ingressi ISDN: ipotizziamo i numeri telefonici da 02160291<span style="text-decoration: underline;">01</span> a 02160291<span style="text-decoration: underline;">05</span> (Le ultime due cifre individuano la linea fisica, e sono 5 BRI &#8211; quindi max 10 telefonate esterne contemporaneamente).<br />
Grazie alla selezione passante riusciamo ad avere i numeri da 02160291<span style="text-decoration: underline;">00</span> a 02160291<span style="text-decoration: underline;">99</span>&#8230; un range di ben 100 numero!<br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fireteam.it/2010/01/uso-della-tecnologia-isdn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Implementazione della funzione di Ackermann</title>
		<link>http://www.fireteam.it/2009/11/implementazione-della-funzione-di-ackermann/</link>
		<comments>http://www.fireteam.it/2009/11/implementazione-della-funzione-di-ackermann/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 15:55:55 +0000</pubDate>
		<dc:creator>saverio</dc:creator>
				<category><![CDATA[Programmazione Java]]></category>
		<category><![CDATA[ackermann]]></category>
		<category><![CDATA[calcolabilità]]></category>

		<guid isPermaLink="false">http://www.fireteam.it/?p=734</guid>
		<description><![CDATA[La funzione di Ackermann è una funzione f(x,y,z) che ha come dominio l&#8217;insieme delle terne di numeri naturali e come codominio i numeri naturali.

Essa è un esempio di funzione ricorsiva che non è primitiva ricorsiva poiché cresce più velocemente di qualsiasi funzione ricorsiva primitiva.
Qui il codice java che implementa questa funzione:

Ackermann.java

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public class Ackermann &#123;
 
 static long [...]]]></description>
			<content:encoded><![CDATA[<p>La funzione di Ackermann è una funzione f(x,y,z) che ha come dominio l&#8217;insieme delle terne di numeri naturali e come codominio i numeri naturali.</p>
<p style="text-align: center;"><img class="size-full wp-image-736 aligncenter" title="ackermann" src="http://www.fireteam.it/wp-content/uploads/2009/11/ackermann.png" alt="ackermann" width="477" height="87" /></p>
<p>Essa è un esempio di funzione ricorsiva che non è primitiva ricorsiva poiché cresce più velocemente di qualsiasi funzione ricorsiva primitiva.</p>
<p>Qui il codice java che implementa questa funzione:</p>
<p><span id="more-734"></span></p>
<p><span style="text-decoration: underline;">Ackermann.java</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Ackermann <span style="color: #009900;">&#123;</span>
 
 <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">long</span> count <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
 
 <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">long</span> h<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">long</span> m, <span style="color: #000066; font-weight: bold;">long</span> n<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  
  count<span style="color: #339933;">++;</span>
  
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>m <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
   <span style="color: #000000; font-weight: bold;">return</span> n <span style="color: #339933;">+</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>n <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
   <span style="color: #000000; font-weight: bold;">return</span> h<span style="color: #009900;">&#40;</span>m<span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  
  <span style="color: #000000; font-weight: bold;">return</span> h<span style="color: #009900;">&#40;</span>m<span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span>, h<span style="color: #009900;">&#40;</span>m,n<span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
 
 <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">long</span> ack<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">long</span> n<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">return</span> h<span style="color: #009900;">&#40;</span>n, n<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
&nbsp;
 <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> args<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>args.<span style="color: #006633;">length</span> <span style="color: #339933;">!=</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
   <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;usage: Ackermann &lt;number&gt;<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\t</span>where number is a positive integer&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #003399;">System</span>.<span style="color: #006633;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  
  <span style="color: #000066; font-weight: bold;">long</span> n <span style="color: #339933;">=</span> <span style="color: #003399;">Long</span>.<span style="color: #006633;">valueOf</span><span style="color: #009900;">&#40;</span>args<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  
  count <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">long</span> retValue <span style="color: #339933;">=</span> ack<span style="color: #009900;">&#40;</span>n<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  
  <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;ack(&quot;</span> <span style="color: #339933;">+</span> n <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;) = &quot;</span> <span style="color: #339933;">+</span> retValue <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot; [recursive calls = &quot;</span><span style="color: #339933;">+</span> count <span style="color: #339933;">+</span><span style="color: #0000ff;">&quot;]&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  
  <span style="color: #003399;">System</span>.<span style="color: #006633;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Il meccanismo di calcolo della funzione è estremamente semplice quanto pesante dal punto di vista computazionale. Questi sono i risultati ottenuti:</p>
<ul>
<li>ack(0) = <strong>1</strong>  [recursive calls = <strong>1</strong>]</li>
<li>ack(1) = <strong>3</strong>  [recursive calls = <strong>4</strong>]</li>
<li>ack(2) = <strong>7</strong>  [recursive calls = <strong>27</strong>]</li>
<li>ack(3) = <strong>61</strong> [recursive calls = <strong>2432</strong>]</li>
</ul>
<p>Non riesco a calcolare ack(4) causa stack overflow (Exception in thread &#8220;main&#8221; java.lang.StackOverflowError).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fireteam.it/2009/11/implementazione-della-funzione-di-ackermann/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Utilizzare un Weblog Client con Wordpress</title>
		<link>http://www.fireteam.it/2009/10/utilizzare-un-weblog-client-con-wordpress/</link>
		<comments>http://www.fireteam.it/2009/10/utilizzare-un-weblog-client-con-wordpress/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 08:56:20 +0000</pubDate>
		<dc:creator>saverio</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[blog client]]></category>
		<category><![CDATA[weblog client]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.fireteam.it/?p=694</guid>
		<description><![CDATA[Il software per Weblog (anche chiamato blog software o blogware) è del software creato per semplificare la creazione e la manutenzione di blog (detti formalmente weblog).Come CMS (content management system) specializzati, i blog hanno tutti caratteristiche in comune come il suppoto per gli autori, per l&#8217;editing e la pubblicazione dei post (in italiano: articoli), gestione [...]]]></description>
			<content:encoded><![CDATA[<p>Il software per Weblog (anche chiamato blog software o blogware) è del software creato per semplificare la creazione e la manutenzione di blog (detti formalmente weblog).Come CMS (content management system) specializzati, i blog hanno tutti caratteristiche in comune come il suppoto per gli autori, per l&#8217;editing e la pubblicazione dei post (in italiano: articoli), gestione dei commenti e la loro moderazione, ed altre operazioni.</p>
<p>La manutenzione di un blog attraverso internet è una caratteristica comune di tutti i blog. Questa è fatta attraverso una interfaccia web-based, cioè la famosa parte di amministrazione.<br />
Molti blog supportano l&#8217;uso di software esterno (client per la gestione del blog), detto Weblog Client, per la gestione dei contenuti attraverso l&#8217;uso di API come le MetaWeblog API e le Atom Publishing Protocol.</p>
<p><span id="more-694"></span></p>
<p>Per Wordpress abbiamo una lunga lista di Weblog Client, ma prima di sceglierne uno bisogna abilitare il protocollo Atom Publishing oppure XML-RPC. Questo di fa spuntando la relativa opzione nelle impostazioni di scrittura di Wordpress.<br />
Fatto questo dobbiamo scegliere un software tra wuelli disponibili per il nostro sistema operativo. Questi sono i software che ho individuato:</p>
<h3>Linux</h3>
<p style="padding-left: 30px;">* BloGTK<br />
* Drivel<br />
* Flock<br />
* Gnome Blog<br />
* JBlogEditor<br />
* QTM<br />
* ScribeFire<br />
* WriteToMyBlog – web based</p>
<h3>Windows</h3>
</p>
<p style="padding-left: 30px;">* BlogDesk<br />
* BlogJet<br />
* Blog Writer<br />
* Chrysanth WebStory<br />
* Deepest Sender<br />
* Ecto<br />
* Elicit<br />
* Flock<br />
* JBlogEditor<br />
* LIPIDr Blog Client<br />
* Post2Blog<br />
* Post2Blog Express<br />
* Qumana<br />
* ScribeFire<br />
* Semagic<br />
* Zoundry Raven<br />
* w.bloggar<br />
* WB Editor<br />
* Windows Live Writer<br />
* WriteToMyBlog – web based</p>
<h3>Mac OS X:</h3>
</p>
<p style="padding-left: 30px;">* Ecto<br />
* Flock<br />
* JBlogEditor<br />
* Journler (however blogging is being dropped soon from Journler)<br />
* MacJournal<br />
* MarsEdit<br />
* QTM<br />
* Qumana<br />
* ScribeFire (formerly Performancing)<br />
* TextMate<br />
* WriteToMyBlog – web based</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fireteam.it/2009/10/utilizzare-un-weblog-client-con-wordpress/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Descrivere i media con Mpeg-7</title>
		<link>http://www.fireteam.it/2009/09/descrivere-i-media-con-mpeg-7/</link>
		<comments>http://www.fireteam.it/2009/09/descrivere-i-media-con-mpeg-7/#comments</comments>
		<pubDate>Sun, 27 Sep 2009 12:34:35 +0000</pubDate>
		<dc:creator>saverio</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Mpeg-7]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.fireteam.it/?p=705</guid>
		<description><![CDATA[La diffusione delle connessioni a banda larga ha agevolato la diffusione di audio e video via web: un esempio eclatante è YouTube! Ma riuscire a trovare un video particolare tra la grossa quantità di dati multimediali sul web è un compito arduo: il valore del dato multimediale dipende da quanto è agevole trovarlo, gestirlo, ed [...]]]></description>
			<content:encoded><![CDATA[<p class="western">La diffusione delle connessioni a banda larga ha agevolato la diffusione di audio e video via web: un esempio eclatante è YouTube! Ma riuscire a trovare un video particolare tra la grossa quantità di dati multimediali sul web è un compito arduo: il valore del dato multimediale dipende da quanto è agevole trovarlo, gestirlo, ed accedere.</p>
<p style="margin-bottom: 0cm">Per gestire questa grossa quantità di dati multimediali, sia da parte degli utenti, sia da parte dei sistemi automatici, ci aiuta Mpeg-7: uno standard nato per codificare i contenuti multimediali attraverso la definizione di metadati sui dati multimediali.</p>
<p style="margin-bottom: 0cm">I precedenti standard Mpeg-1 (1992), Mpeg-2 (1994), e Mpeg-4 (1999) riguardano la codifica del video. Nel 2001 è stato definito Mpeg-7 che non definisce il modo di codificare un video, ma riguarda la sua metataggatura attraverso un linguaggio XML.<br />
Perché 7? Mpeg-7 permette di definire metadati sui video codificati con Mpeg 1, 2, e 4. Siccome 4+2+1=7, nasce il nome Mpeg-7.
</p>
<p style="margin-bottom: 0cm"><span id="more-705"></span></p>
<p style="margin-bottom: 0cm">Notiamo come non è stato nominato Mpeg-3, lo standard per i famosissimi mp3 <img src='http://www.fireteam.it/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  . In realtà questo standard non esiste, ma il nome Mpeg-3 è usato per riferirsi alla parte audio di Mpeg-2.</p>
<h2 class="western">Metadati</h2>
<p style="margin-bottom: 0cm">I metadati associati ad un video permettono di descrivere cosa c&#8217;è nel video. Mpeg-7 permette descrizioni sia a basso livello (caratteristiche del segnale, come il colore di un oggetto), sia ad alto livello (informazioni semantiche, come la scena di un goal in una partita di calcio).<br />
Un esempio di file XML in formato Mpeg-7 contenente la descrizione di un video di una notizia è:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span> <span style="color: #000066;">standalone</span>=<span style="color: #ff0000;">&quot;no&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
 <span style="color: #808080; font-style: italic;">&lt;!--Metadati generati automaticamente dall'applicazione--&gt;</span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Mpeg7</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">&quot;urn:mpeg:mpeg7:schema:2001&quot;</span> <span style="color: #000066;">xmlns:mpeg7</span>=<span style="color: #ff0000;">&quot;urn:mpeg:mpeg7:schema:2001&quot;</span></span>
<span style="color: #009900;"> <span style="color: #000066;">xmlns:xsi</span>=<span style="color: #ff0000;">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span></span>
<span style="color: #009900;"> <span style="color: #000066;">xsi:schemaLocation</span>=<span style="color: #ff0000;">&quot;urn:mpeg:mpeg7:schema:2001 Mpeg7-2001.xsd&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Description</span> <span style="color: #000066;">xsi:type</span>=<span style="color: #ff0000;">&quot;ContentEntityType&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MultimediaContent</span> <span style="color: #000066;">xsi:type</span>=<span style="color: #ff0000;">&quot;VideoType&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Video<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaInformation<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaProfile<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaFormat<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Content</span> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">&quot;MPEG7ContentCS&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;FileFormat</span> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">&quot;urn:mpeg:mpeg7:cs:FileFormatCS:2001:3&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>mpeg<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/FileFormat<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;FileSize<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>17333073<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/FileSize<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;VisualCoding<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Format</span> <span style="color: #000066;">colorDomain</span>=<span style="color: #ff0000;">&quot;color&quot;</span></span>
<span style="color: #009900;"> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">&quot;urn:mpeg:mpeg7:cs:VisualCodingFormatCS:2001:1&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Frame</span> <span style="color: #000066;">height</span>=<span style="color: #ff0000;">&quot;576&quot;</span> <span style="color: #000066;">rate</span>=<span style="color: #ff0000;">&quot;8000&quot;</span> <span style="color: #000066;">width</span>=<span style="color: #ff0000;">&quot;720&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/VisualCoding<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaFormat<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaInstance</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;v20090201_video_15213221&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;InstanceIdentifier</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaLocator<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaUri<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>20090201_video_15213221.mov<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaUri<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaLocator<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaInstance<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaProfile<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaInformation<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;CreationInformation<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Creation<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Obama: presto un piano per famiglie Usa per tagliare costi
 mutui<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Abstract<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;FreeTextAnnotation<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 Presidente cerca arginare effetti devastante crisi economica
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/FreeTextAnnotation<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;StructuredAnnotation<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;When<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1 Feb 2009<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/When<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/StructuredAnnotation<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Abstract<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Creator<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Role</span> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">&quot;urn:mpeg:mpeg7:cs:RoleCS:2001:producer&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Red<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Role<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Agent</span> <span style="color: #000066;">xsi:type</span>=<span style="color: #ff0000;">&quot;OrganizationType&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Apcom<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Agent<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Creator<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;CreationCoordinates<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Location<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>milano<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Location<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Date<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;TimePoint<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>2009-02-01T15:21:32<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/TimePoint<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Date<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/CreationCoordinates<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;CopyrightString<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>TMNews<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/CopyrightString<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Creation<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Classification<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Genre</span> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">&quot;urn:mpeg:TVAnytime_v0.1ContentCS:3.14&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>est<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Genre<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaReview<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Rating<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;RatingValue<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>0.0<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/RatingValue<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;RatingScheme</span> <span style="color: #000066;">best</span>=<span style="color: #ff0000;">&quot;5&quot;</span> <span style="color: #000066;">style</span>=<span style="color: #ff0000;">&quot;higherBetter&quot;</span> <span style="color: #000066;">worst</span>=<span style="color: #ff0000;">&quot;0&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Overall<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/RatingScheme<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Rating<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaReview<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Classification<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;RelatedMaterial<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaLocator<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaUri<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>20090201_video_17483840.mov<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaUri<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaLocator<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/RelatedMaterial<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;RelatedMaterial<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaLocator<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaUri<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>20090201_video_18024720.mov<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaUri<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaLocator<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/RelatedMaterial<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;RelatedMaterial<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaLocator<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaUri<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>20090201_video_18094945.mov<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaUri<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaLocator<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/RelatedMaterial<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;RelatedMaterial<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaLocator<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaUri<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>20090201_video_18153193.mov<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaUri<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaLocator<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/RelatedMaterial<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;RelatedMaterial<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaLocator<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaUri<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>20090202_video_13033231.mov<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaUri<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaLocator<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/RelatedMaterial<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;RelatedMaterial<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaLocator<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaUri<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>20090202_video_13094131.mov<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaUri<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaLocator<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/RelatedMaterial<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;RelatedMaterial<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaLocator<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaUri<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>20090202_video_16491593.mov<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaUri<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaLocator<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/RelatedMaterial<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;RelatedMaterial<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaLocator<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaUri<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>20090202_video_17042673.mov<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaUri<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaLocator<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/RelatedMaterial<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/CreationInformation<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;UsageInformation<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Availability</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;onDemand&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;InstanceRef</span> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">&quot;MPEG7PublicationTypeCS:4&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Dissemination<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Format</span> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">&quot;MPEG7PublicationTypeCS:4&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Internet<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Format<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Location<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Region<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>it<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Region<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Location<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Dissemination<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Availability<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;UsageRecord<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;AvailabilityRef</span> <span style="color: #000066;">idref</span>=<span style="color: #ff0000;">&quot;onDemand&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Audience<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>0<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Audience<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/UsageRecord<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/UsageInformation<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaTime<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaTimePoint<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>T00:00:00<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaTimePoint<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaDuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>PT0H0M29S<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaDuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaTime<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Video<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MultimediaContent<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MultimediaContent</span> <span style="color: #000066;">xsi:type</span>=<span style="color: #ff0000;">&quot;ImageType&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Image<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaInformation<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaProfile<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaFormat<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Content</span> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">&quot;urn:mpeg:mpeg7:cs:ContentCS:2001:2&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>visual<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Content<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;FileFormat</span> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">&quot;urn:mpeg:mpeg7:cs:FileFormatCS:2001:3&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>JPEG2000<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/FileFormat<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;FileSize<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>12014<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/FileSize<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;VisualCoding<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Format</span> <span style="color: #000066;">colorDomain</span>=<span style="color: #ff0000;">&quot;binary&quot;</span></span>
<span style="color: #009900;"> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">&quot;urn:mpeg:mpeg7:cs:VisualCodingFormatCS:2001:1&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>JPEG2000<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Format<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Frame</span> <span style="color: #000066;">height</span>=<span style="color: #ff0000;">&quot;288&quot;</span> <span style="color: #000066;">rate</span>=<span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #000066;">width</span>=<span style="color: #ff0000;">&quot;360&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/VisualCoding<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaFormat<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaInstance</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;i20090201_video_15213221&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;InstanceIdentifier</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaLocator<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;MediaUri<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>20090201_video_15213221.jpg<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaUri<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaLocator<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaInstance<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaProfile<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MediaInformation<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;CreationInformation<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Creation<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 Foto
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Creator<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Role</span> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">&quot;urn:mpeg:mpeg7:cs:RoleCS:AUTHOR&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Red<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Role<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Agent</span> <span style="color: #000066;">xsi:type</span>=<span style="color: #ff0000;">&quot;OrganizationType&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>MPEG<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Agent<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Creator<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Creation<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/CreationInformation<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Image<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/MultimediaContent<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Description<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Mpeg7<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

</p>
<p style="margin-bottom: 0cm">Mpeg-7 è un linguaggio XML, ossia usa XML per definire i metadati. In realtà un file Mpeg-7 non è altro che un file &#8216;.xml&#8217; associato ad uno o più oggetti multimediali. Quindi è possibile memorizzare i metadati indipendentemente dai video&#8230; ad esempio un possibile uso di Mpeg-7, è la costruzione di un database multimediale!</p>
<h2 class="western">Componenti di Mpeg-7</h2>
<p style="margin-bottom: 0cm">Lo standard Mpeg-7 è composta da quattro elementi fondamentali:</p>
<ul>
<li>
<p style="margin-bottom: 0cm">Description Tools</p>
</li>
<li>
<p style="margin-bottom: 0cm">Descriptor</p>
</li>
<li>
<p style="margin-bottom: 0cm">Description Scheme</p>
</li>
<li>
<p style="margin-bottom: 0cm">DDL – Description Definition<br />
Language</p>
</li>
<li>
<p style="margin-bottom: 0cm">System Tool</p>
</li>
</ul>
<p style="margin-bottom: 0cm">I metadati di un oggetto multimediale saranno descritti usando i &#8216;Description Tools&#8217;.<br />
I &#8216;Description Tools&#8217; a loro volta fanno uso del &#8216;Description Definition Language&#8217; (DDL) che è una estensione di XML Schema proprio per Mpeg-7.<br />
I &#8216;System Tool&#8217; non riguardano la definizione di metadati, ma la loro rappresentazione e trasmissione. Quindi il file XML è prodotto utilizzando solo &#8216;Description Tools&#8217; e &#8216;DDL&#8217;, e poi questo file XML può essere diffuso utilizzando le tecniche dei &#8216;System Tools&#8217;.</p>
<h3 class="western">Description Definition Language (DDL)</h3>
</p>
<p style="margin-bottom: 0cm">Il DDL è basato su XML Schema Language e ne rappresenta una sorta di estensione orientata al multimedia. In particolare XML Schema non è stato progettato per le descrizioni di contenuti audio/video e necessita quindi di tipi di dato per array e matrici, e tipo di dato per gestire il tempo (BasicTimePoint e BasicDuration).</p>
<p style="margin-bottom: 0cm">Ad esempio la definizione di TimeType è:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">&lt;!-- Definition of Time datatype --&gt;</span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;complexType</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;TimeType&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;sequence<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;choice<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;element</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;TimePoint&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;mpeg7:TimePointType&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;element</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;RelTimePoint&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;mpeg7:RelTimePointType&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;element</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;RelIncrTimePoint&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;mpeg7:RelIncrTimePointType&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/choice<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;choice</span> <span style="color: #000066;">minOccurs</span>=<span style="color: #ff0000;">&quot;0&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;element</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Duration&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;mpeg7:durationType&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;element</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;IncrDuration&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;mpeg7:IncrDurationType&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/choice<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/sequence<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/complexType<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #808080; font-style: italic;">&lt;!-- Definition of TimePoint datatype --&gt;</span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;simpleType</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;TimePointType&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;restriction</span> <span style="color: #000066;">base</span>=<span style="color: #ff0000;">&quot;mpeg7:basicTimePointType&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;pattern</span></span>
<span style="color: #009900;"> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;(\-?\d+(\-\d{2}(\-\d{2})?)?)?(T\d{2}(:\d{2}(:\d{2} (:\d+)?)?)?)?(F\d+)?(\-|\+\d{2}:\d{2})?&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/restriction<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/simpleType<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #808080; font-style: italic;">&lt;!-- Definition of duration datatype --&gt;</span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;simpleType</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;durationType&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;restriction</span> <span style="color: #000066;">base</span>=<span style="color: #ff0000;">&quot;mpeg7:basicDurationType&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;pattern</span></span>
<span style="color: #009900;"> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;\-?P(\d+D)?(T(\d+H)?(\d+M)</span>
<span style="color: #009900;"> ?(\d+S)?(\d+N)?)?( \d+F)?((\-|\+)\d{2}:\d{2}Z)?&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/restriction<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/simpleType<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p style="margin-bottom: 0cm">Usando queste definizioni di tipo contenute nella DDL, siamo in grado di descrivere il fatto che un certo filmato rappresenta un evento iniziato il 16 ottobre 2002 alle ore 17:00 in un paese con GTM+1, e dura 10 giorni, con questo codice:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>0
1
2
3
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Time<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;TimePoint<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>2002-10-16T17:00+01:00<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/TimePoint<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Duration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>P10D<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Duration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Time<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p style="margin-bottom: 0cm">Ovviamente il DDL, oltre ai tipi qui introdotti (TimeType, TimePointType, e durationType), contiene molte altre definizioni che per brevità non tratteremo.</p>
<h3 class="western">Description Tools</h3>
<p style="margin-bottom: 0cm">I Description Tools comprendono &#8216;Descriptor&#8217; e &#8216;Descriptor Schemes&#8217; che preferisco non distinguere e trattarli insieme, raggruppandoli in base alle loro funzionalità:</p>
<ul>
<li>
<p style="margin-bottom: 0cm"><strong>Schema and Basic Elements</strong>:<br />
forniscono tutti i tipi di dato utilizzati nelle descrizioni, e la<br />
loro corrispondenza con i tag utilizzati in Mpeg-7;</p>
</li>
<li>
<p style="margin-bottom: 0cm"><strong>Content Description</strong>:<br />
rappresentazione dell&#8217;informazione audio/video sia a livello<br />
strutturale (basso livello), sia a livello semantico (alto livello);</p>
</li>
<li>
<p style="margin-bottom: 0cm"><strong>Content Management</strong>:<br />
permette di descrivere caratteristiche come creazione, formato, ed<br />
uso del materiale multimediale;</p>
</li>
<li>
<p style="margin-bottom: 0cm"><strong>Content Organization</strong>:<br />
Permette di gestire collezioni di materiale multimediale: si possono<br />
usare questi tool per implementare una base di dati XML di<br />
informazioni su materiale multimediale;</p>
</li>
<li>
<p style="margin-bottom: 0cm"><strong>Navigation and Access</strong>:<br />
aiutano l&#8217;accessibilità al file multimediale;</p>
</li>
<li>
<p style="margin-bottom: 0cm"><strong>User Interaction</strong>:<br />
permettono di memorizzare le preferenze dell&#8217;utente.</p>
</li>
</ul>
<p>Con i Description Tools siamo in grado di produrre due tipi di descrizioni Mpeg-7 valide: le &#8220;Complete Descriptions&#8221; che descrivono interamente un materiale multimediale come un video (l&#8217;esempio di file xml Mpeg-7 di questo articolo corrisponde ad una Complete Description perchè descrive completamente il video), e le &#8220;Descriptions Units&#8221; che non sono descrizioni intere ma dei componenti che possono far parte di una Complete Description.</p>
<h2 class="western">Conclusioni</h2>
<p style="margin-bottom: 0cm">Non si è trattata la parte dei System Tools, inoltre della parte dei Description Tool si è data una semplice descrizione generale. I Description Tool sono la parte più corposa dello standard Mpeg-7, e studiarli tutti può richiedere tempo. Si suggerisce a tal proposito di utilizzare i documenti ufficiali dello standard o l&#8217;utilissima guida di Chiariglione all&#8217;indirizzo http://www.chiariglione.org/mpeg/ .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fireteam.it/2009/09/descrivere-i-media-con-mpeg-7/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Introduzione alla Tecnologia XML</title>
		<link>http://www.fireteam.it/2009/09/introduzione-alla-tecnologia-xml/</link>
		<comments>http://www.fireteam.it/2009/09/introduzione-alla-tecnologia-xml/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 15:16:49 +0000</pubDate>
		<dc:creator>saverio</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Database XML]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.fireteam.it/2009/09/introduzione-alla-tecnologia-xml/</guid>
		<description><![CDATA[Il linguaggio XML è diventato uno degli elementi fondamentali per la realizzazione di sistemi informativi, indipendentemente dalla tecnologia usata.
Storia
Il World Wide Web Consortium (W3C), in seguito alla guerra dei browser fu costretto a seguire le individuali estensioni al linguaggio HTML. Dovette scegliere quali caratteristiche standardizzare e quali lasciare fuori dalle specifiche ufficiali dell&#8217;HTML. Fu in [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_700" class="wp-caption alignleft" style="width: 268px"><a href="http://www.fireteam.it/wp-content/uploads/2009/09/xquery.png"><img class="size-full wp-image-700" title="xquery" src="http://www.fireteam.it/wp-content/uploads/2009/09/xquery.png" alt="Relazione tra XQuery ed XPath" width="258" height="169" /></a><p class="wp-caption-text">Relazione tra XQuery ed XPath</p></div>
<p>Il linguaggio XML è diventato uno degli elementi fondamentali per la realizzazione di sistemi informativi, indipendentemente dalla tecnologia usata.</p>
<h2>Storia</h2>
<p>Il World Wide Web Consortium (W3C), in seguito alla guerra dei browser fu costretto a seguire le individuali estensioni al linguaggio HTML. Dovette scegliere quali caratteristiche standardizzare e quali lasciare fuori dalle specifiche ufficiali dell&#8217;HTML. Fu in questo contesto che iniziò a delinearsi la necessità di un linguaggio di markup che desse maggiore libertà nella definizione dei tag, pur rimanendo in uno standard.</p>
<p>Il &#8220;progetto XML&#8221;, che ebbe inizio alla fine degli anni &#8216;80 nell&#8217;ambito della SGML Activity del W3C, suscitò un così forte interesse a tal punto che la W3C creò un gruppo di lavoro, chiamato XML Working Group, composto da esperti mondiali delle tecnologie SGML, ed una commissione, XML Editorial Review Board, deputata alla redazione delle specifiche del progetto.</p>
<p>Nel febbraio del 1998 le specifiche divennero una raccomandazione ufficiale con il nome di Extensible Mark-up Language, versione 1.0. Ben presto ci si accorse che XML non era solo limitato al contesto web, ma era qualcosa di più: uno strumento che permetteva di essere utilizzato nei più diversi contesti, dalla definizione della struttura di documenti, allo scambio delle informazioni tra sistemi diversi, dalla rappresentazione di immagini alla definizione di formati di dati.</p>
<p><span id="more-696"></span></p>
<h2>Il Linguaggio</h2>
<ul>
<li><strong>Definizione XML</strong>: (acronimo di eXtensible Markup Language) è un metalinguaggio di markup, ovvero un linguaggio marcatore che definisce un meccanismo sintattico che consente di estendere o controllare il significato di altri linguaggi marcatori. Costituisce il tentativo di produrre una versione semplificata di SGML che consenta di definire in modo semplice nuovi linguaggi di markup</li>
</ul>
<p>Quindi quello che si fa con XML è definire/progettare dei propri “Linguaggi XML” (cioè un linguaggio basato su XML); ad esempio possiamo scegliere di codificare in XML i risultati di una giornata del campionato di calcio:</p>
<p><!--more--></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>0
1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;partite</span> <span style="color: #000066;">giornata</span>=”3°”<span style="color: #000000; font-weight: bold;">&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;partita</span> <span style="color: #000066;">numero</span>=”1”<span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;squadra<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Napoli<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/squadra<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;squadra<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Juventus<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/squadra<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;risultato<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>3-0<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/risultato<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/partita<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;partita</span> <span style="color: #000066;">numero</span>=”2”<span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;squadra<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Roma<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/squadra<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;squadra<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Lazio<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/squadra<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;risultato<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>2-2<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/risultato<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/partita<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/partite<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Il processo di sviluppo di un linguaggio XML è detto “XMLificazione”: ossia la scelta dei tag (partite, partita, squadra, risultato), degli attributi (giornata, numero), e della loro struttura.</p>
<p>Ci possono essere però altri linguaggi XML che usano i nostri stessi tag, e mischiare più linguaggi XML con nomi dei tag uguali può portare a confusione, per questo possiamo introdurre un namespace per i nostri nomi.</p>
<ul>
<li><strong>Namespace XML</strong>: Un namespace è una collezione di nomi di entità, definite dal programmatore, omogeneamente usate in uno o più file sorgente. Lo scopo dei namespace è quello di evitare confusione ed equivoci nel caso siano necessarie molte entità con nomi simili, fornendo il modo di raggruppare i nomi per categorie.Nel linguaggio XML i namespaces sono definiti esplicitamente.</li>
</ul>
<p>Nel nostro caso la prima riga diventerà:</p>
<p>&lt;partite giornata=”3°” xmlns=”http://www.fireteam.it”&gt;</p>
<p>In questo modo indichiamo che il tag &#8216;partite&#8217; e tutto il suo contenuto appartengono al namespace &#8216;http://www.fireteam.it&#8217; di default.</p>
<p>Fin qui XML sembra la più banale delle tecnologie, eppure ha avuto così tanto successo&#8230; allora perché è così importante?</p>
<h2>La Tecnologia XML</h2>
<p>Il primo motivo è che tutti i file XML sono codificati in UNICODE (i famosi UTF-8 UTF-16, ed UTF-32), e sono stati eliminati in questo modo molto dei fastidi che affligevano i formati testuali.</p>
<p>Il secondo motivo è che con XML si può rappresentare l&#8217;informazione in modo semplice, mantenendo un minimo di struttura; non a caso l&#8217;informazione codificata in XML è detta semistrutturata, che è il compromesso dalla completa strutturazione (come ad esempio la struttura rigida di uno schema di un database relazionale) e l&#8217;assenza di struttura (schema-less, ossia il testo puro).</p>
<p>Il terzo motivo, che ritengo più importante, è che attorno a questo semplice linguaggio di markup sono state definite parecchie tecnologie utili a risparmiare lavoro durante il trattamento dei dati. Queste sono:</p>
<ul>
<li><strong>Xpath</strong>: è un linguaggio parte della famiglia XML che permette di individuare i nodi all&#8217;interno di un documento XML.</li>
</ul>
<ul>
<li><strong>Linguaggi Schema</strong>: un linguaggio di schema è un linguaggio formale per esprimere “schemi”. Uno schema è la definizione formale della sintassi di un linguaggio XML, ovvero una famiglia di documenti XML.
<ul>
<li><strong>DTD</strong>: Il linguaggio DTD è utile a definire schemi DTD per un particolare linguaggio XML. DTD è semplice, con un potere espressivo limitato, non è autoesplicativo poiché non usa una notazione XML (è descritto da una grammatica BNF), e tra i tanti difetti non supporta i namespace in quanto il linguaggio DTD stato definito è stato definito prima dei namespace.</li>
<li><strong>Schema</strong>: è un linguaggio di schema nato per sostituire DTD. E&#8217; più espressivo, è quasi autoesplicativo (è scritto in XML e la sua sintassi è definibile con XML schema stesso, ma non si riescono a catturare tutti gli aspetti sintattici del linguaggio). Inoltre introduce i tipi di dato e permette di crearne nuovi, in modo da riuscire a fare buoni controlli sui contenuti dei file XML.</li>
</ul>
</li>
</ul>
<ul>
<li><strong>XSL</strong>: acronimo di eXtensible Stylesheet Language, è il linguaggio di descrizione dei fogli di stile per i documenti in formato XML. Com&#8217;è noto, lo standard XML prevede che i contenuti di un documento siano separati dalla formattazione della pagina in cui verranno pubblicati.
<ul>
<li><strong>XSLT</strong>: XSL Transformations &#8211; il linguaggio di trasformazione dell&#8217;XML. Fa uso di XPath per accedere alle parti di un documento XML. La trasformazione è fatta da un modulo detto Processore XSLT, come ad esempio quello incluso nei browser.</li>
<li><strong>XSL-FO</strong>: XSL Formatting Objects &#8211; usato per l&#8217;applicazione degli stili e del modo di apparizione a un documento XML.</li>
</ul>
</li>
</ul>
<ul>
<li><strong>XQuery</strong>: abbrevazione per XML Query Language, è un linguaggio di programmazione specificato dal W3C e destinato ad interrogare documenti e basi di dati XML.</li>
</ul>
<p>Qui è d&#8217;obbligo soffermarsi per discutere sull&#8217;utilità di un linguaggio di interrogazione XML. Un&#8217;ambiziosa applicazione di XML ha come scopo la generalizzazione del tradizionale modello delle basi di dati relazionali. Da tempo si sta cercando un&#8217;alternativa ai vecchissimi database relazionali, e si è provato in svariate direzioni&#8230; database gerarchici, database multidimensionali, database ad oggetti, ecc.</p>
<p>XML è un alternativa allettane! Oggi si scrive molto in XML, specialmente sul web dove vi sono pagine XHTML (che sono XML), e l&#8217;idea di avere un database XML perfettamente integrabile con tutti gli altri nostri dati non è affatto male&#8230; il World Wide Web può così diventare una gigantesca base di dati.</p>
<p>XQuery è un linguaggio per interrogare file XML, allo stesso modo in cui SQL interroga base di dati relazionali&#8230; ed è qui che una collezione di file XML è spesso chiamata Database XML.</p>
<p>E come tutti i linguaggi di interrogazione che si rispettano anche per XQuery c&#8217;è un algebra&#8230; XML Query Algebra definita dal W3C. In realtà i lavori sono ancora in progresso e ci sono varie proposte di algebra:</p>
<ul>
<li><strong>Algebra per linguaggi di interrogazione XML</strong>: sono stati proposti svariati linguaggi di interrogazione XML, come XQuery, XML-QL, ed altri; quindi c&#8217;è un interesse crescente verso l&#8217;interrogazione di file XML. Non ancora però è stata definita un&#8217;algebra comune per questi linguaggi. Un algebra formale è un passo obbligato per avere una buona ottimizzazione delle query.
<ul>
<li><strong>TAX</strong>: E&#8217; una proposta di algebra non standard, utilizzata da un motore di database XML chiamato “Timber XML”. TAX sta per “Tree Algebra for XML”, ed è una proposta interessante perché usa un modello di dati dove i documenti XML sono effettivamente visti come alberi, quindi le varie operazioni (Selezione, Proiezione, Prodotto, Set, Raggruppamento, Aggregazione, Renaming, Reordering, Copy-and-Paste, Cancellazione, Inserimento) risultano definite in modo naturale.</li>
<li><strong>XML Query Algebra</strong>: anche chiamata “The Algebra” è la proposta di standardizzazione da parte del W3C. Questa algebra, che sembra assomigliare ad un linguaggio di programmazione dichiarativo, non definisce le operazioni con operatori ad HOC, ma riesce a ricavare le consuete operazioni mediante l&#8217;uso di cicli for, assegnazioni di variabili, costrutti condizionali, ed altro. Inoltre i tipi di dato sono molto importanti, e sono definiti per ogni espressione. Una volta tradotta una query, la sua ottimizzazione sfrutta delle regole di inferenza logica; un metodo del tutto innovativo.</li>
</ul>
</li>
</ul>
<p>E quando queste tecnologie non riescono a soddisfare le nostre richieste, entra in gioco la solita programmazione:</p>
<ul>
<li><strong>Programmazione XML</strong>: Benchè gli strumenti XML (Schema, XSLT, XQuery, XPath, ecc&#8230;) ci permettono di fare molti tipi di elaborazione, spesso c&#8217;è la necessita di manipolare file XML da linguaggi di programmazione di uso generale come ad esempio Java.
<ul>
<li><strong>DOM</strong>: Il Document Object Model (DOM) è una forma di rappresentazione dei documenti strutturati come modello orientato agli oggetti. DOM definisce un API per accedere e manipolare file XML comune a diversi linguaggi.</li>
<li><strong>SAX</strong>: (Simple API for XML) è un&#8217;API per numerosi linguaggi di programmazione che permette di leggere ed elaborare dei documenti XML. Contrariarmente al DOM, il SAX processa i documenti linea per linea. Il flusso di dati XML è unidirezionale, così che dati a cui si è acceduto in precedenza non possono essere riletti senza la rielaborazione dell&#8217;intero documento.</li>
<li><strong>JDOM</strong>: JDom è un API per accedere ed elaborare documenti XMl specifica per il linguaggio di programmaziopne Java, che (rispettando il principio del 80/20) permette di sviluppare con semplicità l&#8217;80% delle applicazione, mentre richiede una soluzione ad HOC per il restante 20%&#8230; cioè JDom sacrifica parte della generalità per dar miglior supporto alle applicazioni più comuni.</li>
</ul>
</li>
</ul>
<ul>
<li><strong>XML Retrieval</strong>: L&#8217;information retrieval (IR) è la disciplina che studia le tecniche utilizzate per il recupero mirato dell’informazione in formato elettronico.</li>
</ul>
<h2>Le Applicazioni XML</h2>
<p>XML è oggi una tecnologia matura ed utilizzata negli ambiti più disparati&#8230; basta provare a salvare un documento di testo scritto con il famosissimo word processor OpenOffice, rinominare questo file .zip, e provare ad estrarre il contenuto: dentro troveremo il nostro documento descritto in XML!!!</p>
<p>Un altro esempio è SVG, lo standard aperto per la grafica vettoriale che punta a sostituire la tecnologia &#8216;flash&#8217; sul web. Un file .svg è interamente scritto in XML, tant&#8217;è vero che si può aprire senza problemi con un qualsiasi editor di testo.</p>
<p>Alcuni linguaggi XML hanno avuto particolare successo come XHTML, CML (Chemical Markup Language), WML (usato nella tecnologia WAP dei cellulari), RSS ed altri&#8230; in particolare Mpeg7:</p>
<ul>
<li><strong>Mpeg-7</strong>: MPEG-7 è uno standard nato per codificare i contenuti multimediali; non è uno standard nato per codificare flussi audio o video come, ad esempio, MPEG-1 MPEG-2 o MPEG-4 ma per definire metadati sui dati multimediali.La codifica utilizza l&#8217;XML per memorizzare dei metadati che utilizzano a loro volta il timecode del filmato permettendo di sincronizzare i flussi multimediali con particolari eventi. Per esempio, permette di sincronizzare un filmato con i suoi sottotitoli o un video con il testo della canzone.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.fireteam.it/2009/09/introduzione-alla-tecnologia-xml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introduzione alle Espressioni Regolari</title>
		<link>http://www.fireteam.it/2009/09/introduzione-alle-espressioni-regolari/</link>
		<comments>http://www.fireteam.it/2009/09/introduzione-alle-espressioni-regolari/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 06:35:43 +0000</pubDate>
		<dc:creator>saverio</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Sistema]]></category>
		<category><![CDATA[espressioni regolari]]></category>
		<category><![CDATA[regular expression]]></category>

		<guid isPermaLink="false">http://www.fireteam.it/2009/09/introduzione-alle-espressioni-regolari/</guid>
		<description><![CDATA[Le espressioni regolari sono utili per descrivere la validità di valori, come ad esempio valori di attributi, dati caratteri, e qualsiasi tipo di valore esprimibile con un certo alfabeto.
Il concetto di espressione regolare è un formalismo importante utilizzato, in varie forme, in svariate applicazioni&#8230; ad esempio nei linguaggi di schema (come DTD di XML) per [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-685" title="ingranaggi" src="http://www.fireteam.it/wp-content/uploads/2009/09/ingranaggi.png" alt="ingranaggi" width="170" height="270" />Le espressioni regolari sono utili per descrivere la validità di valori, come ad esempio valori di attributi, dati caratteri, e qualsiasi tipo di valore esprimibile con un certo alfabeto.</p>
<p>Il concetto di espressione regolare è un formalismo importante utilizzato, in varie forme, in svariate applicazioni&#8230; ad esempio nei linguaggi di schema (come DTD di XML) per descrivere sequenze di elementi o caratteri. I linguaggi regolari sono utilizzati in molte altre aree dell&#8217;informatica oltre a XML, dall&#8217;elaborazione del testo e del linguaggio naturale alla verifica formale dei componenti hardware.</p>
<p>Potrebbe essere necessario, ad esempio, vincolare un valore &#8216;data&#8217; in modo tale da rispettare il formato dd-mm-yyyy, ovvero sia composto da due cifre per il giorno, seguite da due per il mese e quattro per l&#8217;anno, tutto separato da un segno meno “-”. Alternativamente possiamo specificare che un certo valore deve essere un numero intero.</p>
<p>Chiamiamo Σ un alfabeto consistente in un insieme di atomi, che tipicamente sono caratteri Unicode o nomi di elementi. Un&#8217;espressione regolare su Σ è costruita in base alle seguenti regole:</p>
<p><span id="more-679"></span></p>
<ul>
<li>ogni atomo in Σ, preso da solo, è un espressione regolare;</li>
<li>se a e b sono espressioni regolari, allora lo sono anche le seguenti:
<ul>
<li>
<pre>a?</pre>
</li>
<li>
<pre>a*</pre>
</li>
<li>
<pre>a+</pre>
</li>
<li>
<pre>a b</pre>
</li>
<li>
<pre>a|b</pre>
</li>
<li>
<pre>(a)</pre>
</li>
</ul>
</li>
</ul>
<p>Gli operatori ?, , e + hanno una precedenza superiore alla concatenazione (l&#8217;operatore vuoto o “giustapposizione”), che a sua volta ha una precedenza superiore a |. E&#8217; sempre possibile usare le parentesi per raggruppare sotto-espressioni, superando così le precedenze di default. L&#8217;espressione ab*|c, in cui l&#8217;alfabeto Σ contiene a, b, e c, è interpretata come (a(b*))|c e non a(b*|c).</p>
<p>Una stringa finita di atomi di Σ può corrispondere o meno a una data espressione regolare a:</p>
<ul>
<li>un atomo r appartenente a Σ corrisponde unicamente al singolo atomo r;</li>
<li>a? corrisponde ad a opzionalmente, ovvero a qualsiasi stringa corrisponda ad a più la stringa vuota;</li>
<li>a* corrisponde a zero o più ripetizioni delle stringhe che corrispondono ad a;</li>
<li>a+ corrisponde ad una o più ripetizioni delle stringhe che corrispondono ad a;</li>
<li>a b corrisponde a ciò a cui corrisponde &#8216;a&#8217; seguito da ciò a cui corrisponde b;</li>
<li>a|b corrisponde all&#8217;unione delle corrispondenze di a e b;</li>
<li>(a) ha le stesse corrispondente di a.</li>
</ul>
<p>L&#8217;espressione regolare (a(b*))|c corrisponde così a tutte le stringhe composte da una a seguite da zero o più b, oppure una singola c da sola.</p>
<p>Un linguaggio regolare è un insieme di stringhe che corrispondono a una qualche espressione regolare.</p>
<p>E&#8217; possibile definire un&#8217;espressione regolare d (che sta per digit, cifra) scrivendo:</p>
<pre>0|1|2|3|4|5|6|7|8|9</pre>
<p>laddove l&#8217;alfabeto è composto ad esempio da tutti caratteri Unicode. Possiamo partire da questa definizione per definire un&#8217;altra espressione regolare &#8216;data&#8217; scrivendo dd-dd-dddd. Naturalmente quest&#8217;espressione corrisponde anche a stringhe come 88-26-9995, che non denotano date reali, ma con un po&#8217; più di sforzo è possibile catturare precisamente l&#8217;insieme di stringhe desiderato: in effetti su può usare un linguaggio regolare per gestire correttamente anche gli anni bisestili, ma allora le cose si fanno parecchie complicate!</p>
<p>La seguente espressione regolare descrive gli interi con un alfabeto composto dalle dieci cifre e dal segno meno:</p>
<pre>0|-?(|1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*</pre>
<p>Secondo questa definizione, -42, 0, 117 sono accettabili, mentre 000, -0 e 3.14 non lo sono.</p>
<p>Adesso facciamo l&#8217;ultimo esempio, più complicato! In XHTML il contenuto di un elemento table dev&#8217;essere una sequenza che consiste in un elemento opzionale &#8216;caption&#8217; seguito da un certo numero di elementi &#8216;col&#8217; o alternativamente &#8216;colgroup&#8217;, i quali a loro volta sono opzionalmente seguiti da un elemento &#8216;thead&#8217; e uno &#8216;tfoot&#8217;, per concludere almeno un elemento &#8216;tbody&#8217; (o alternativamente &#8216;tr&#8217;). Possiamo scrivere con un&#8217;espressione regolare:</p>
<pre>caption? ( col* | colgroup* ) thead? tfoot? ( tbody+ | tr+ )</pre>
<p>Esistono molte varianti delle espressioni regolari&#8230; ad esempio le regular expression del linguaggio perl: tuttavia la maggior parte di queste varianti si limita ad aggiungere zucchero sintattico alla notazione base che abbiamo appena presentato.</p>
<p>Un&#8217;estensione tipica sono gli intervalli di caratteri: [0-9], ad esempio, è una comoda abbreviazione per indicare le cifre al posto di 0|1|2|3|4|5|6|7|8|9. In modo analogo a{n,m} con n e m numeri interi non negativi, denota da n ad m ripetizioni di a. Un altro esempio sono le espressioni regolari usate nella suit di ufficio OpenOffice.</p>
<div id="attachment_682" class="wp-caption aligncenter" style="width: 857px"><a href="http://www.fireteam.it/wp-content/uploads/2009/09/er.jpg"><img class="size-full wp-image-682" title="EspressioneRegolare" src="http://www.fireteam.it/wp-content/uploads/2009/09/er.jpg" alt="Espressioni Regolari in OpenOffice" width="847" height="320" /></a><p class="wp-caption-text">Espressioni Regolari in OpenOffice</p></div>
<p>Questa è l&#8217;introduzione alle espressioni regolari; per lavorare efficientemente con un vero implementazione di queste espressioni richiede ulteriore studio.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fireteam.it/2009/09/introduzione-alle-espressioni-regolari/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nascondere i propri file</title>
		<link>http://www.fireteam.it/2009/09/nascondere-i-propri-file/</link>
		<comments>http://www.fireteam.it/2009/09/nascondere-i-propri-file/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 20:30:19 +0000</pubDate>
		<dc:creator>ivan</dc:creator>
				<category><![CDATA[Sicurezza e Privatezza]]></category>
		<category><![CDATA[crittografia]]></category>
		<category><![CDATA[file]]></category>
		<category><![CDATA[protezione]]></category>

		<guid isPermaLink="false">http://www.fireteam.it/?p=677</guid>
		<description><![CDATA[Quante volte abbiamo desiderato di nascondere i nostri file da occhi curiosi?
Questo articolo tratta come nascondere file con un sistema operativo Windows&#8230; gli utenti degli altri sistemi operativi non avranno difficoltà ad applicare gli stessiconcetti, specialmente gli utenti Linux hanno a disposizione moltissimi tool gratuiti per nascondere o crittare file.
Cominciamo subito ad introdurre una tecnica [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-medium wp-image-691" title="nascondino" src="http://www.fireteam.it/wp-content/uploads/2009/09/nascondino-254x300.jpg" alt="nascondino" width="254" height="300" />Quante volte abbiamo desiderato di nascondere i nostri file da occhi curiosi?<br />
Questo articolo tratta come nascondere file con un sistema operativo Windows&#8230; gli utenti degli altri sistemi operativi non avranno difficoltà ad applicare gli stessiconcetti, specialmente gli utenti Linux hanno a disposizione moltissimi tool gratuiti per nascondere o crittare file.</p>
<p>Cominciamo subito ad introdurre una tecnica stupida che consente di proteggere al 98% il vostro amato file (che sia di testo o un video o quello che sia). Non serve semplicemente nascondere un file cambiando semplicemente gli attributi (Il file può essere sempre raggiunto dalla SHELL), è un trucco facilmente raggirabile.</p>
<h2>Doppio cambio dell&#8217;estensione con compressione</h2>
<p>Ammettiamo di aver un file di nome <strong>pippo.txt</strong> che contiene dati personali e password di alcuni siti, immaginiamo anche che il pc che usiamo lo utilizza anche il vicino di casa(cosa improbabile però mi serve per l&#8217;esempio)&#8230;</p>
<p>Il nostro vantaggio sta nel poter manipolare le estensioni dei file, infatti possiamo sfruttare gia l&#8217;estensione per camuffare il file, quindi, cominciamo a rinominare il file <strong>pippo.txt</strong> in <strong>pippo.dll</strong>: fatto questo abbiamo ottenuto un file con un icona diversa(quando in realtà è un normale file ASCII)&#8230; Siamo leggermente + tranquilli ma non basta!<br />
Utilizziamo un programma di compressione come WinZip o qualcosa di free come IzArc. Adesso creiamo un nuovo archivio protetto da password che conterrà il nostro file pippo.dll(Scegliete una buona password).</p>
<p><span id="more-677"></span></p>
<p>Fatto questo, vi ritroverete con un file <strong>pippo.zip</strong>; in realtà possiamo gia tranquillizzarci, Ma per rendere le cose irriconoscibili facciamo un altra operazione di rename: da pippo.zip a <span style="text-decoration: underline;">pippo.dll</span> e rimettiamo il nuovo <span style="text-decoration: underline;">pippo.dll</span> in un altro archivio compresso.<br />
Come potete vedere abbiamo fatto un lungo procedimento al fine di rendere il file di origine irriconoscibile agli occhi di un curioso!</p>
<h2>Metodo Crittografico</h2>
<p>Abbiamo precedentemente detto che il cambio dell&#8217;estensione è una tecnica sicura al 98%, infatti persone esperte sanno riconoscere il tipo di file indipendentemente dal nome o dall&#8217;estensione del file. La distribuzione Linux Helix è piena di tool capaci di eseguire questo compito in maniera automatica&#8230; possiamo zippare il file anche 1000 volte!</p>
<p>Per nascondere il file possiamo ricorrere alla crittografia, ed utilizzare programmi come TrueCrypt, Kruptos 2, Androsa File Protector, ed altri! Ad esempio TrueCrypt (<a href="http://www.truecrypt.org">http://www.truecrypt.org</a>) è il programma di riferimento open source per la cifratura e la protezione dei dati personali. Permette di criptare file, cartelle e intere partizioni con i più famosi algoritmi di cifratura a 256 bit (AES, Twofish, Serpent), utilizzando anche 2 di questi algoritmi contemporaneamente. Il programma è in grado di creare un volume criptato nascosto all&#8217;interno di un altro volume criptato, in modo da lasciare un&#8217;area di sicurezza invisibile anche nel caso si sia costretti a rivelare la password (questa funzionalità è solo per utenti esperti, dal momento che se non si è capaci si rischia di perdere tutti i dati del volume nascosto).<br />
Il volume da criptare potrà avere qualsiasi estensione vogliamo (.txt, .rar, .zip, .iso, .mp3, .jpg, ecc., o anche nessuna estensione): solo TrueCrypt -e con la giusta password- sarà in grado di aprirlo. Inoltre, non è nemmeno possibile stabilire che il file che abbiamo cifrato sia stato criptato con TreuCrypt (questo è un passo ulteriore verso la riservatezza).<br />
Truecrypt non ha bisogno di installazione: si può lanciare da qualunque periferica e utilizzare per aprire -per esempio- qualche volume criptato all&#8217;interno del disco rigido.<br />
A scanso di equivoci, ricordo che il criptare una partizione può avere effetti devastanti se non si comprende quello che si fa; prima di combinare danni irreparabili, è bene pensare molto bene prima di agire.</p>
<p>Per nascondere (crittare) semplicemente del testo, come le nostre email, è disponibile GPG (versione open source di PGP), un tool open source molto potente <img src='http://www.fireteam.it/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Camuffare il File</h2>
<p>Una tecnica molto sorprendente, e abbastanza difficile da rilevare, è quella di nascondere il proprio file all&#8217;interno di una immagine o di un video.<br />
A tale scopo c&#8217;è Camouflage scaricabile gratuitamente da <a href="http://camouflage.unfiction.com">http://camouflage.unfiction.com</a>, è un programma che consente di nascondere i propri file personali “Top Secret” all’ interno di altri file, ad esempio un documento di testo dentro a un’ immagine, dentro a un MP3, dentro a un video e viceversa.<br />
Risulta utile per tutelare la propria privacy, in questo modo informazioni di una certa importanza potranno essere celate dentro un comune file e magari lasciato tranquillamente in bella vista nel desktop, senza destare sospetti e completamente al sicuro.</p>
<p>Semplice da utilizzare, nel menu contestuale del mouse una volta cliccato un file con il tasto destro, vengono aggiunte due nuove voci: Camouflage e Uncamouflage.</p>
<ul>
<li>Camouflage: per nascondere il file Top Secret dentro un altro file.</li>
<li>Uncamouflage: per estrarre il file Top Secret dal file.</li>
</ul>
<p>Per nascondere il file Top Secret, occorre cliccarlo con il tasto destro del mouse e dal menu contestuale selezionare la voce Camouflage. Verrà visualizzata la finestra di Camouflage, selezionare il file Top Secret e confermare cliccando Next.<br />
A questo punto occorre selezionare il file dentro al quale si vuole nascondere il file Top Secret, ad esempio un’ immagine o una canzone. Confermare cliccando il pulsante Next. Verrà visualizzata l’ opzione Create This File dove eventualmente selezionare la destinazione di salvataggio del file con il contenuto Top Secret. Confermare cliccando Next. Infine, viene visualizzata la finestra nella quale inserire una password di protezione del file Top Secret. Inserire una password facile da ricordare per evitare spiacevoli dimenticanze.<br />
Al termine confermare cliccando Finish. Il file Top Secret è stato nascosto dentro al comune e insospettabile file, che fra l’ altro può essere utilizzato normalmente.<br />
Per estrarre il file Top Secret, cliccare il file in cui è nascosto con il tasto destro del mouse e dal menu contestuale selezionare la voce Uncamouflage, quindi inserire e confermare la password.</p>
<p>Spero di aver salvato i dati della postepay di qualcuno&#8230; ciao alla prossima!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fireteam.it/2009/09/nascondere-i-propri-file/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Guida all&#8217;installazione di Windows Server 2003</title>
		<link>http://www.fireteam.it/2009/09/guida-allinstallazione-di-windows-server-2003/</link>
		<comments>http://www.fireteam.it/2009/09/guida-allinstallazione-di-windows-server-2003/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 12:40:15 +0000</pubDate>
		<dc:creator>saverio</dc:creator>
				<category><![CDATA[Sistema]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[windows server]]></category>

		<guid isPermaLink="false">http://www.fireteam.it/?p=670</guid>
		<description><![CDATA[Successore di Windows 2000, Microsoft Windows Server 2003 (Nome in codice Whistler Server, o anche Windows NT 5.2 o ancora Windows .NET Server) (2003) è una tappa della evoluzione della serie server dei sistemi operativi di Microsoft. Il lancio è avvenuto il 24 aprile 2003.
Windows Server 2003 è basato sulla provata stabilità di Windows 2000 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.fireteam.it/wp-content/uploads/2009/09/WindowsServer2003.png"><img class="alignleft size-full wp-image-673" title="WindowsServer2003" src="http://www.fireteam.it/wp-content/uploads/2009/09/WindowsServer2003.png" alt="WindowsServer2003" width="300" height="204" /></a>Successore di Windows 2000, Microsoft Windows Server 2003 (Nome in codice Whistler Server, o anche Windows NT 5.2 o ancora Windows .NET Server) (2003) è una tappa della evoluzione della serie server dei sistemi operativi di Microsoft. Il lancio è avvenuto il 24 aprile 2003.<br />
Windows Server 2003 è basato sulla provata stabilità di Windows 2000 Server e la compatibilità con altre caratteristiche di Windows XP.</p>
<p>Questa guida all&#8217;installazione e configurazione di Windows Server 2003 è rivolta ai sistemisti alle prime armi, oppure a chi vuole costrure il proprio server a casa <img src='http://www.fireteam.it/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Sarà copera la parte della configurazione Hardware di un buon server; successivamente sarà indicato come configurare il Windows Server 2003 appena dopo l&#8217;installazione</p>
<p><span id="more-670"></span></p>
<h2>Installazione Windows Server 2003</h2>
<p>Anche se stiamo in italia, in ambito server installare sempre la versione inglese del sistema&#8230; questo ci può creare problemi per la rappresentazione delle date, ma ci semplifica la gestione: installare sempre gli altri pacchetti in inglese!!!</p>
<h2>Hardware</h2>
<p>Un pò di buon senso&#8230;</p>
<li>server web =&gt; molta RAM</li>
<li>server di file =&gt; molto spazio HD</li>
<p>Per piccole/medie imprese va bene un bi-processore. Per grossi server ci sono macchine a 4 processori: ITANIUM, OPTERON (AMD), XEON (INTEL)</p>
<p>Componenti interni fondamentali per il fault-tollerance:</p>
<p>- Alimentatore interno ridondande,</p>
<p>- Disk-array RAID:</p>
<p>- RAID 0, numero pari di dischi (mirroring)</p>
<p>- RAID 5, numero dispari di dischi + 1 di ripresa a caldo</p>
<p>Sono consigliabili minimo due interfacce di rete: 1 per la rete interna, e 1 per la rete esterna (internet).</p>
<p>Possibilemente schede di rete Gigabit</p>
<p>I moduli di RAM devono essere affidabili: <strong>ECC</strong> (Error Correction Code).</p>
<h2>Preparativi</h2>
<p>Partizionare il disco&#8230; almeno una partizione per il sistema operativo e una per i dati.</p>
<p>Un partizionamento professionale prevede quattro partizioni: System, Swap File, User Data, RIS Partition</p>
<p>Notare che i cilindri esterni del disco sono quelli letti più velocemente&#8230; conviene posizionale in questi posti la partizione di swap. Inoltre è buona norma fare la partiziona del sistema operativo (System) quanto più piccola possibile.</p>
<h2>Configurazione di Base</h2>
<p>Innanzitutto fare tutti gli aggiornamenti, installare le utility (bginfo, siw, ecc&#8230;), ed evitare sempre di usare Internet Explorer per scopi personali.</p>
<h3>Menu e Desktop</h3>
<p>Mettere il menu classico, oppure dalle impostazioni avanzate del desktop permettere di visualizzare le classiche icone sul desktop.</p>
<h3>File temporanei</h3>
<p>Bisogna unificare la cartella dei file temporanei, quindi:</p>
<p>1) Click destro su &#8220;My Computer&#8221; -&gt; &#8220;Proprierties&#8221; -&gt; tab &#8220;Advanced&#8221;</p>
<p>2) Modificare le variabili TMP e TEMP in modo che puntino alla stessa directory sul disco&#8230; ad esempio C:\Temp</p>
<h3>File di swap</h3>
<p>Fissare le dimensioni del file di swap in modo che variazioni del file non portino ad un&#8217;eccessiva frammentazione. Ad esempio:</p>
<p>-&gt; Initial size (MB): 2048</p>
<p>-&gt; Maxium size (MB): 2048</p>
<h3>Effetti grafici</h3>
<p>Eliminare gli effetti grafici:</p>
<p>-&gt; Click destro sul Desktop -&gt; &#8220;Proprierties&#8221; -&gt; &#8220;Appareance ed Effects&#8221;</p>
<h3>Monitor</h3>
<p>Configurare gli Hertz del monitor a 60Hz. In questo modo non avremmo problemi di visualizzazione nel caso operiamo da vecchi terminali.</p>
<h3>Aggiornamenti automatici</h3>
<p>Per avere il totale controllo della macchina e&#8217; bene disabilitare gli aggiornamenti automatici, in modo che <strong>Download the updates automatically and notify me when they are ready to be installed</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fireteam.it/2009/09/guida-allinstallazione-di-windows-server-2003/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
