<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Wirgilio</title>
	
	<link>http://www.wirgilio.it/blog</link>
	<description>Apri la tua mente! Ma attento a non far cadere il cervello...</description>
	<lastBuildDate>Mon, 19 Jul 2010 14:29:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/wirgilio/blog" /><feedburner:info uri="wirgilio/blog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>wirgilio/blog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Muori, Aedes albopictus</title>
		<link>http://feedproxy.google.com/~r/wirgilio/blog/~3/n-E3WVED-kM/</link>
		<comments>http://www.wirgilio.it/blog/2010/07/18/muori-aedes-albopictus/#comments</comments>
		<pubDate>Sun, 18 Jul 2010 19:44:17 +0000</pubDate>
		<dc:creator>Ale152</dc:creator>
				<category><![CDATA[Esperimenti]]></category>

		<guid isPermaLink="false">http://www.wirgilio.it/blog/?p=1443</guid>
		<description><![CDATA[Le zanzare tigre hanno infestato ogni luogo. Ci impediscono di dormire la notte, ci impediscono di stare in giardino o in terrazza di giorno; si avvicinano con quell&#8217;insopportabile ronzio, ci deprivano di qualche microlitro del nostro liquido organico rosso e fuggono, ritornando poi per il pasto successivo. Fin&#8217;ora mi sono sempre limitato a farle fuori [...]]]></description>
			<content:encoded><![CDATA[<p><script type="text/javascript"><!--
google_ad_client = "pub-2663293223831746";
/* 234x60, creato 11/09/09 */
google_ad_slot = "0621465014";
google_ad_width = 234;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p><p><a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/07/zanzara.jpg"><img class="alignright size-full wp-image-1444" title="zanzara" src="http://www.wirgilio.it/blog/wp-content/uploads/2010/07/zanzara.jpg" alt="" width="287" height="208" /></a>Le zanzare tigre hanno infestato ogni luogo. Ci impediscono di dormire la notte, ci impediscono di stare in giardino o in terrazza di giorno; si avvicinano con quell&#8217;insopportabile ronzio, ci deprivano di qualche microlitro del nostro liquido organico rosso e fuggono, ritornando poi per il pasto successivo.</p>
<p>Fin&#8217;ora mi sono sempre limitato a farle fuori con la mia fedele racchetta elettrica, ma ora ho deciso di provare a sterminarle alla radice: girando per il web ho infatto trovato una trappola, l&#8217;<em>ovitrappola</em>, che dovrebbe aiutarmi nel mio intento.<br />
L&#8217;ovitrappola non è altro che un contenitore nero contenente dell&#8217;acqua. Posto nel terreno è considerato dalle zanzare un ottimo luogo per depositare le loro uova, una trappola che ci permette di distruggere le nuove generazioni dell&#8217;insetto.<br />
Collocando un&#8217;ovitrappola nel terreno, in un vaso o in giardino, si dovrebbe riuscire a catturare un bel po&#8217; di larve di zanzara, e tenendo conto che l&#8217;area di azione di una zanzara tigre è inferiore ai 200 m, magari si potrebbe passare il resto dell&#8217;esate in pace.</p>
<p>E allora così ho fatto: ho preso un barattolo di vetro trasparente, l&#8217;ho riempito per metà d&#8217;acqua e l&#8217;ho sotterrato in un vaso. Tra qualche giorno sapremo se questo rimedio alle zanzare funziona.</p>
<p><a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/07/racchetta-elettrica.jpg"><img class="alignnone size-full wp-image-1446" title="racchetta elettrica" src="http://www.wirgilio.it/blog/wp-content/uploads/2010/07/racchetta-elettrica.jpg" alt="" width="224" height="224" /></a></p>
<img src="http://feeds.feedburner.com/~r/wirgilio/blog/~4/n-E3WVED-kM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wirgilio.it/blog/2010/07/18/muori-aedes-albopictus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.wirgilio.it/blog/2010/07/18/muori-aedes-albopictus/</feedburner:origLink></item>
		<item>
		<title>HOME, il nostro pianeta</title>
		<link>http://feedproxy.google.com/~r/wirgilio/blog/~3/CePJFEarBxo/</link>
		<comments>http://www.wirgilio.it/blog/2010/07/13/home-il-nostro-pianeta/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 20:34:56 +0000</pubDate>
		<dc:creator>Ale152</dc:creator>
				<category><![CDATA[Video]]></category>
		<category><![CDATA[Natura]]></category>

		<guid isPermaLink="false">http://www.wirgilio.it/blog/?p=1439</guid>
		<description><![CDATA[Il seguente video è un interessantissimo documentario sull&#8217;evoluzione della Terra, contenente delle meravigliose immagini atte a sensibilizzare la popolazione sul pianeta che ci ospita.]]></description>
			<content:encoded><![CDATA[<p>Il seguente video è un interessantissimo documentario sull&#8217;evoluzione della Terra, contenente delle meravigliose immagini atte a sensibilizzare la popolazione sul pianeta che ci ospita.</p>
<p><a href="http://www.youtube.com/watch?v=jqxENMKaeCU&amp;fmt=22"><img class="alignnone size-full wp-image-1440" title="home" src="http://www.wirgilio.it/blog/wp-content/uploads/2010/07/home.jpg" alt="" width="639" height="390" /></a></p>
<img src="http://feeds.feedburner.com/~r/wirgilio/blog/~4/CePJFEarBxo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wirgilio.it/blog/2010/07/13/home-il-nostro-pianeta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.wirgilio.it/blog/2010/07/13/home-il-nostro-pianeta/</feedburner:origLink></item>
		<item>
		<title>Quarantacinque gradi Celsius</title>
		<link>http://feedproxy.google.com/~r/wirgilio/blog/~3/OH3thmzAYhA/</link>
		<comments>http://www.wirgilio.it/blog/2010/07/13/quarantacinque-gradi-celsius/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 11:14:00 +0000</pubDate>
		<dc:creator>Ale152</dc:creator>
				<category><![CDATA[Humor]]></category>

		<guid isPermaLink="false">http://www.wirgilio.it/blog/?p=1436</guid>
		<description><![CDATA[Fa così caldo che seno e coseno della temperatura sono uguali.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/07/fan.jpg"><img class="alignright size-medium wp-image-1437" title="fan" src="http://www.wirgilio.it/blog/wp-content/uploads/2010/07/fan-300x207.jpg" alt="" width="300" height="207" /></a>Fa così caldo che <em>seno</em> e <em>coseno</em> della temperatura sono uguali.</p>
<img src="http://feeds.feedburner.com/~r/wirgilio/blog/~4/OH3thmzAYhA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wirgilio.it/blog/2010/07/13/quarantacinque-gradi-celsius/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.wirgilio.it/blog/2010/07/13/quarantacinque-gradi-celsius/</feedburner:origLink></item>
		<item>
		<title>Com’è ingegneria?</title>
		<link>http://feedproxy.google.com/~r/wirgilio/blog/~3/x_krbgLSlXM/</link>
		<comments>http://www.wirgilio.it/blog/2010/07/05/come-ingegneria/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 19:57:39 +0000</pubDate>
		<dc:creator>Ale152</dc:creator>
				<category><![CDATA[Pensieri]]></category>
		<category><![CDATA[Ingegneria]]></category>

		<guid isPermaLink="false">http://www.wirgilio.it/blog/?p=1422</guid>
		<description><![CDATA[Dopo due anni che frequento ingegneria spesso mi sento fare domande del tipo: Com&#8217;è ingegneria? È difficile? Che preparazione bisogna avere?. Effettivamente, non c&#8217;è metodo migliore per togliersi questi dubbi che parlare con una persona che già frequenta la facoltà e così ho deciso di scrivere questo articolo per cercare di schiarire un po&#8217; le [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/07/Rubik_cube.png"><img class="alignright size-medium wp-image-1433" title="Rubik_cube" src="http://www.wirgilio.it/blog/wp-content/uploads/2010/07/Rubik_cube-300x300.png" alt="" width="267" height="267" /></a>Dopo due anni che frequento ingegneria spesso mi sento fare domande del tipo: <em>Com&#8217;è ingegneria? È difficile? Che preparazione bisogna avere?</em>. Effettivamente, non c&#8217;è metodo migliore per togliersi questi dubbi che parlare con una persona che già frequenta la facoltà e così ho deciso di scrivere questo articolo per cercare di schiarire un po&#8217; le idee a coloro che vorrebbero intraprendere la strada dell&#8217;ingegneria.</p>
<p>Molte delle persone che si iscrivono a ingegneria lo fanno perché o sono interessate alla matematica, o alla materia di una particolare facoltà d&#8217;ingegneria. Le prime persone sono quelle più dubbiose, proprio perché non sanno se iscriversi a matematica, fisica o ingegneria. Effettivamente, il matematico, il fisico e l&#8217;ingegnere sono tre persone <em>molto </em>diverse che hanno in comune proprio la matematica, però, il matematico studia la matematica nella sua astrazione più totale, il fisico la utilizza applicata ai fenomeni naturali e l&#8217;ingegnere per risolvere i problemi. Un esempio molto banale potrebbe essere il fenomeno della <a href="http://it.wikipedia.org/wiki/Caduta_dei_gravi" target="_blank">caduta dei gravi</a>: il matematico studia le equazioni, il fisico trova l&#8217;equazione che descrive un corpo in caduta libera, l&#8217;ingegnere applica quest&#8217;equazione ai problemi che si trova davanti.</p>
<p>Un altro motivo per cui molti scelgono ingegneria è perché è facile trovare lavoro. Infatti, proprio per la loro natura di «risolutori di problemi», gli ingegneri sono quelli più ricercati nelle aziende, dove, se si verifica un problema, non c&#8217;è bisogno di qualcuno che trovi un teorema per risolverlo ma di qualcuno che lo risolva materialmente; e l&#8217;ingegnere sfrutta gli strumenti offerti dalla matematica e dalla fisica per risolvere i problemi.</p>
<p>Veniamo ora alla domanda più frequente: <em>Quanta matematica bisogna sapere per iscriversi a ingegneria?</em><br />
Gli studenti più preoccupati sono generalmente quelli del liceo classico o linguistico, perché hanno una preparazione in matematica che è inferiore a quella dei <em>cugini</em> dello scientifico. È vero che il programma del quinto anno di liceo scientifico è molto vicino al programma dell&#8217;esame di Analisi I, ma è anche vero che è <em>l&#8217;unico</em> esame in cui sono avvantaggiati. Per laurearsi ad una triennale bisogna sostenere circa venticinque esami. Un esame su venticinque è il quattro percento della laurea. Il quattro percento è <em>ingegneristicamente trascurabile</em> <img src='http://www.wirgilio.it/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .<br />
Per questo motivo non c&#8217;è alcun bisogno di preoccuparsi, per seguire i primi corsi di ingegneria sono sufficienti le basilari nozioni di trigonometria e qualche formula geometrica, come le relazioni sui triangoli rettangoli, perimetro ed area della circonferenza, piano cartesiano, ecc&#8230;<br />
Quali sono allora le reali competenze richieste per un ingegnere? Sicuramente un minimo di <em>ingegno</em>, intuitività e intelligenza, che possono essere utili nelle altre materie, ma sono fondamentali per far fruttare appieno i corsi di ingegneria. Ricordate che l&#8217;obiettivo dell&#8217;ingegnere dev&#8217;essere quello di risolvere i problemi, e i problemi non si risolvono imparando formule e dimostrazioni a memoria ma sapendoli applicare in maniera corretta.</p>
<p>Una volta deciso di voler fare ingegneria resta un problema: <em>Che ingegneria scelgo?<br />
</em>Questo è sicuramente un bel problema, l&#8217;unico consiglio che posso dare è quello di scegliere la materia che più può interessare e per farlo può essere d&#8217;aiuto leggersi gli esami e le loro descrizioni nella guida dello studente di ogni facoltà. Un vasto elenco delle varie ingegnerie che esistono è presente su <a href="http://it.wikipedia.org/wiki/Ingegneria" target="_blank">Wikipedia</a>.<br />
Per quanto riguarda gli esami, il primo anno è praticamente uguale per tutte le ingegnerie: Analisi I, Analisi II, Geometria e algebra, Fisica I, Fisica II, Informatica, Disegno, e Chimica. Sono gli strumenti di base che servono ad un qualsiasi ingegnere e non vanno sottovalutati. Dal secondo anno in poi gli esami iniziano a diventare più specifici e finalmente si ha a che fare con le materie che costituiranno il pane quotidiano per il resto della carriera universitaria!</p>
<p>Un&#8217;altra questione che terrorizza chi si vuole iscrivere a ingegneria è: <em>Quanto devo studiare?<br />
</em>La risposta è semplice: <strong>tanto</strong>. Questo «tanto» non è comunque in alcun modo paragonabile allo studio delle scuole superiori. Alle superiori si è costretti a studiare materie che spesso non ci interessano neanche lontanamente e inoltre si utilizza un metodo di studio che non sempre è adatto anche all&#8217;università. A ingegneria si studiano le materie che più ci interessano e quindi anche se passi giornate intere sui libri lo fai con piacere, perché studi argomenti che ti appassionano. È per questo che bisogna fare molta attenzione alla scelta della facoltà, perché una scelta sbagliata porta inesorabilmente al fallimento. Se non c&#8217;è passione, studiare diventa impossibile.<br />
Volendo quantificare un po&#8217; quel «tanto»: 3-4 ore durante il periodo dei corsi e 9-10 ore durante il periodo degli esami.<br />
Per uno studente liceale abituato a studiare un paio d&#8217;ore a settimana questi numeri possono spaventare ma, ripeto, lo studio che si fa al liceo non è paragonabile allo studio che si fa all&#8217;unviersità.</p>
<p>Per quanto possa sembrare banale, un consiglio che vorrei darvi se vi iscrivete a ingegneria, è quello di studiare tutti i giorni, anche durante i corsi. Sì, è una cosa che dicono dalle scuole elementari, ma non lo capisci finquando non arrivi all&#8217;università! Ridursi a studiare gli esami 15-20 giorni prima è difficile, è molto stancante e non permette di stare al passo con gli altri esami. Anche una semplice lettura degli appunti presi in classe, per capire meglio i concetti spiegati, può aiutare tantissimo quando ci si ritrova a dover sostenere cinque esami in due mesi.</p>
<p>Gli ultimi due argomenti di cui volevo parlare sono professori e voti. Il primo esame è sempre quello più difficile, perché si pensa al <em>docente universitario</em> come ad una chissà quale entità aliena dalla conoscenza assoluta alla quale non è possibile rivolgersi in alcun modo. No. I professori universitari sono esseri umani (già)! E spesso con loro si instaura un rapporto persino migliore di quello che si aveva con i professori al liceo. Magari con una classe di trecento allievi può essere più difficile, ma dal secondo anno in poi spesso non si superano le cinquanta persone per aula.<br />
I professori mettono a disposizione un orario di ricevimento che consiglio di utilizzare, infatti la maggior parte di loro è molto ben disposta a dare spiegazioni.<br />
I voti, infine, sono forse l&#8217;argomento più difficile da trattare. C&#8217;è chi preferisce mantenere una media alta e ci mette una vita a laurearsi, chi accetta tutto e si laurea in poco tempo. Poi ci sono le vie di mezzo e i casi particolari. Il voto è sì importante, ma non deve diventare un&#8217;ossessione. Spesso i professori si indispettiscono quando uno studente rifiuta un voto e, assieme al fatto che è difficile (e soprattutto noioso) studiare due o più volte uno stesso esame, capita che lo studente è costretto ad accettare un voto persino inferiore a quello che aveva rifiutato.<br />
Prendersi un po&#8217; più di tempo per avere un voto migliore può andare bene, ma le aziende spesso preferiscono assumere persone laureate in meno tempo, piuttosto che con un voto appena migliore ma laureate in più tempo. Per questo motivo bisogna trovare il giusto compromesso tra voti e tempo, per laurearsi con i voti più alti possibili nel minor tempo possibile, in modo da avere un&#8217;<em>efficienza massima</em>. Ovviamente questo rapporto dipende dalle capacità dello studente.</p>
<p>Un appunto infine per quanto riguarda quella specie di &#8220;test d&#8217;ingresso&#8221; che hanno proposto da un paio d&#8217;anni ai neoiscritti. È molto facile superarlo se avete conoscenze in matematica e può essere superato anche se si hanno conoscenze in altre materie. Se non doveste passarlo potete iscrivervi tranquillamente a ingegneria, solo che non potrete fare l&#8217;esame di Analisi I finquando non passerete questo test. Anche se non avete alcuna conocenza in matematica, dopo aver seguito i corsi del primo semestre, superarlo sarà una passeggiata <img src='http://www.wirgilio.it/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Il suo obiettivo è quello di «spaventare» tutti quelli che si iscrivono a ingegneria solo perché &#8220;<em>Si dice che si trova lavoro</em>&#8220;. Non lasciatevi ingannare dall&#8217;esito del test d&#8217;ingresso, né tantomeno dal voto dell&#8217;esame di maturità. Se avete passione per la materia che state per affrontare e siete pronti a studiare, riuscirete senza troppi problemi.</p>
<p>Per ulteriori domande potete utilizzare i commenti <img src='http://www.wirgilio.it/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<img src="http://feeds.feedburner.com/~r/wirgilio/blog/~4/x_krbgLSlXM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wirgilio.it/blog/2010/07/05/come-ingegneria/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.wirgilio.it/blog/2010/07/05/come-ingegneria/</feedburner:origLink></item>
		<item>
		<title>PyFoil 1.2</title>
		<link>http://feedproxy.google.com/~r/wirgilio/blog/~3/9W-_JwL_AZA/</link>
		<comments>http://www.wirgilio.it/blog/2010/06/24/pyfoil-1-2/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 10:39:23 +0000</pubDate>
		<dc:creator>Ale152</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Symbian]]></category>

		<guid isPermaLink="false">http://www.wirgilio.it/blog/?p=1417</guid>
		<description><![CDATA[Ecco la nuova versione della mia applicazione PyFoil, sviluppata in Python per Symbian S60. Purtroppo a causa della mancanza di tempo non sono riuscito a completarla e sono presenti alcuni bug che segnalo stesso in questa pagina: I dati sulla pressione e la temperatura nella stratosfera non vengono calcolati correttamente Il calcolo del centro aerodinamico [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/04/1.png"><img class="alignright size-medium wp-image-1244" title="1" src="http://www.wirgilio.it/blog/wp-content/uploads/2010/04/1-225x300.png" alt="" width="160" height="214" /></a>Ecco la nuova versione della mia applicazione PyFoil, sviluppata in Python per Symbian S60.</p>
<p>Purtroppo a causa della mancanza di tempo non sono riuscito a completarla e sono presenti alcuni bug che segnalo stesso in questa pagina:</p>
<ul>
<li>I dati sulla pressione e la temperatura nella stratosfera non vengono calcolati correttamente</li>
<li>Il calcolo del centro aerodinamico dell&#8217;ala non è corretto in caso di angolo di freccia</li>
<li>Il calcolo del coefficiente di momento non è corretto</li>
<li>È possibile settare i dati del piano di coda orizzontale, ma questi non vengono ancora utilizzati per fare calcoli</li>
</ul>
<p>L&#8217;applicazione è comunque in grado di calcolare svariati parametri geometrici e aerodinamici sull&#8217;ala, impostandone caratteristiche alla radice e all&#8217;estremità.</p>
<p>Segue il codice del programma.<br />
<span id="more-1417"></span></p>
<pre class="brush: python;">import e32
import graphics
import appuifw
from random import randint
from math import sqrt, sin, cos, tan, atan, log10, ceil, pi, e as E

def draw(r=None):
    &quot;&quot;&quot;Draw the buffer on the canvas&quot;&quot;&quot;
    if buffer:
        c.blit(buffer)

c = appuifw.Canvas(redraw_callback=draw)
buffer = graphics.Image.new(c.size)
appuifw.app.body = c
width, height = c.size
# airfoil contains [NACA, digit, (t, m, p)]
# wing_G contains geometrical parameters about wing (b, br, ct, boh)
# wing_A contains aerodynamical parameters about wing (boh, ancora più boh)
airfoil = [None, None, [0, 0, 0]]
wing_G = [10., # Wingspan
          1.6, # Chord root
          0.8, # Chord tip
          15., # Sweep angle
          3.0, # Wing incidence
          0.9, # Efficiency number
         -3.0] # Twist angle

wing_A = [
        # Root
         [0.11,  # Alfa lift coefficient
           -0.07, # Zero-lift moment coefficient
           -1.0,  # Alfa zero lift
           0.25], # Aerodynamic center position
        # Tip
          [0.105, # Clat
           -0.08, # Cm0t
           -2.5,  # azlt
           0.23]  # xact
        ]
fuselage = [-0.05,  # Zero lift moment coefficient
            0.0035] # Alpha moment coefficient
tail = [[], # Horizontal
        []] # Vertical

def derivative(func, x):
    &quot;&quot;&quot;Derivates a function in a point&quot;&quot;&quot;
    return (func(x) - func(x+0.001))/0.001

def integrate(func, interval):
    &quot;&quot;&quot;Trapezoidal numerical integration&quot;&quot;&quot;
    a, b = interval
    a = float(a)
    b = float(b)
    # Splits interval in 500 points per unit
    if abs(b - a) &lt; 1e-5:
        return 0
    points = (b - a)*500.0
    increment = (b - a)/points
    area = 0.0
    for i in xrange(points):
        i = float(i)
        x = b * i/points + a * (1.0 - i/points)
        # Jump a possibile discontinuity
        try:
            area += (func(x+increment) + func(x)) * increment / 2.0
        except:
            pass
    return area

def mean_line(x, airfoil):
    &quot;&quot;&quot;Airfoil mean line function&quot;&quot;&quot;
    digit = airfoil[1]
    t, m, p = airfoil[2]
    if digit == 4:
        if p &lt; 1e-5:
            return 0
        elif x &lt;= p:
            return m / (p**2) * (2*p*x - x**2)
        elif x &gt; p:
            return m * (1 - 2*p + 2*p*x - x**2) / ((1 - p)**2)
    elif digit == 5:
        if x &lt;= m:
            return p / 6 * (x**3 - 3*m*x**2 + m**2 * (3 - m)*x)
        elif x &gt; m:
            return p * m**3 / 6*(1 - x)

def thickness(x, airfoil):
    &quot;&quot;&quot;Airfoil thickness function&quot;&quot;&quot;
    t = airfoil[2][0]
    return t / 0.2 * (+0.2969 * x**0.5 +
                      -0.1260 * x**1 +
                      -0.3516 * x**2 +
                      +0.2843 * x**3 +
                      -0.1015 * x**4)

def NACA_set():
    &quot;&quot;&quot;Set NACA to operate&quot;&quot;&quot;
    global airfoil
    NACA = appuifw.query(u'Insert 4-5 digit NACA', 'number')
    if NACA:
        digit = ceil(log10(NACA))
        # Digit correction for 00XX and 000X
        if digit in [1, 2, 3]: digit = 4
        t = (NACA%100)/100. # Thickness
        if digit == 4:
            m = (NACA/1000)/100. # Max camber
            p = (NACA/100-NACA/1000*10)/10. # Max camber position
            airfoil = [NACA, digit, (t, m, p)]
            NACA_plot()
        elif digit == 5:
            mean_line_datas = {210:[0.0580, 361.4],
                               220:[0.1260, 51.64],
                               230:[0.2025, 15.957],
                               240:[0.2900, 6.643],
                               250:[0.3910, 3.230]}
            try:
                m = mean_line_datas[NACA/100][0]
                p = mean_line_datas[NACA/100][1]
                airfoil = [NACA, digit, (t, m, p)]
                NACA_plot()
            except KeyError:
                appuifw.note(u'NACA not supported!', 'error')
        else:
            appuifw.note(u'NACA must be 4 or 5 digit!', 'error')
    else:
        appuifw.note(u'NACA must be 4 or 5 digit!', 'error')

def NACA_plot():
    &quot;&quot;&quot;Plots a NACA&quot;&quot;&quot;
    if not airfoil[0]:
        NACA_set()
        if not airfoil[0]:
            return
    buffer.clear()
    # NACA parameters
    NACA, digit, N = airfoil
    font = (None, 30)
    color0 = (0, 0, 0) # Text color
    color1 = (0, 0, 255) # Airfoil color
    color2 = (255, 0, 0) # Meanline color
    color3 = (100, 100, 100) # Radius color
    # Draws the axes
    s_width = width - 10 # Scaled width, for the border
    y0 = height/2 # Origin of axes
    buffer.line((0, y0, width, y0), outline=color0)
    # Draws the scale
    unit = 10 # Axis will be divided into %unit part
    for u in range(11):
        buffer.line((5 + u * s_width / unit, y0 - 2,
                     5 + u * s_width / unit, y0 + 2),
                     outline=color0)
    # Unit legend
    buffer.line((10, 2*y0 - 20,
                 10 + s_width/unit, 2*y0 - 20),
                 outline=color0)
    buffer.text((20 + s_width/unit, 2*y0 - 15),
                 u'%d%% of the chord' % (100/unit),
                 fill=color0)
    # Displays infos about the airfoil
    radius = 1.1019 * N[0]**2
    radius_pos = (5, y0 - radius*s_width,
                  5 + radius*s_width*2, y0 + radius*s_width)
    buffer.ellipse(radius_pos, outline=color3)
    buffer.text((10, 30), u'NACA %0#4d' % NACA, font=font, fill=color0)
    buffer.text((10, 55), u'LE radius: %.4f' % radius, fill=color0)
    # Plot
    for x in xrange(s_width):
        x = float(x)/s_width
        # xx is an increment of x to calculate next point of each segment
        xx = (x * s_width + 1) / s_width
        # Meanline
        xM_1 = 5 + x * s_width
        yM_1 = y0 - mean_line(x, airfoil) * s_width
        xM_2 = 5 + xx * s_width
        yM_2 = y0 - mean_line(xx, airfoil) * s_width
        buffer.line((xM_1, yM_1, xM_2, yM_2), outline=color2)
        # Airfoil (U: Upper, L: Lower, 1-2 are 1st and 2nd point of the line)
        teta = atan(derivative(lambda x: mean_line(x, airfoil), x))
        xU_1 = 5 + (x - thickness(x, airfoil)*sin(teta)) * s_width
        yU_1 = y0 - (mean_line(x, airfoil) -
                    thickness(x, airfoil)*cos(teta)) * s_width
        xL_1 = 5 + (x + thickness(x, airfoil)*sin(teta)) * s_width
        yL_1 = y0 - (mean_line(x, airfoil) +
                    thickness(x, airfoil)*cos(teta)) * s_width
        xU_2 = 5 + (xx - thickness(xx, airfoil)*sin(teta)) * s_width
        yU_2 = y0 - (mean_line(xx, airfoil) -
                    thickness(xx, airfoil)*cos(teta)) * s_width
        xL_2 = 5 + (xx + thickness(xx, airfoil)*sin(teta)) * s_width
        yL_2 = y0 - (mean_line(xx, airfoil) +
                    thickness(xx, airfoil)*cos(teta)) * s_width
        buffer.line((xU_1, yU_1, xU_2, yU_2), outline=color1, width=2)
        buffer.line((xL_1, yL_1, xL_2, yL_2), outline=color1, width=2)
    draw()

def NACA_export():
    &quot;&quot;&quot;Export NACA plot as image&quot;&quot;&quot;
    if not airfoil[0]:
        NACA_set()
        if not airfoil[0]:
            return
    new_width = appuifw.query(u'Image width (px)', 'number', 800)
    new_height = new_width / 1.4
    image = graphics.Image.new((new_width, new_height))
    image.clear()
    # NACA parameters
    NACA, digit, N = airfoil
    font = (None, 30)
    color0 = (0, 0, 0) # Text color
    color1 = (0, 0, 255) # Airfoil color
    color2 = (255, 0, 0) # Meanline color
    color3 = (100, 100, 100) # Radius color
    # Draws the axes
    s_width = new_width - 10 # Scaled width, for the border
    y0 = new_height/2 # Origin of axes
    image.line((0, y0, new_width, y0), outline=color0)
    # Draws the scale
    unit = 10 # Axis will be divided into %unit part
    for u in range(11):
        image.line((5 + u * s_width / unit, y0 - 2,
                    5 + u * s_width / unit, y0 + 2),
                    outline=color0)
    # Unit legend
    image.line((10, 2*y0 - 20,
                 10 + s_width/unit, 2*y0 - 20),
                 outline=color0)
    image.text((20 + s_width/unit, 2*y0 - 15),
                 u'%d%% of the chord' % (100/unit),
                 fill=color0)
    # Displays infos about the airfoil
    radius = 1.1019 * N[0]**2
    radius_pos = (5, y0 - radius*s_width,
                  5 + radius*s_width*2, y0 + radius*s_width)
    image.ellipse(radius_pos, outline=color3)
    image.text((10, 30), u'NACA %0#4d' % NACA, font=font, fill=color0)
    image.text((10, 55), u'LE radius: %.4f' % radius, fill=color0)
    # Plot
    for x in xrange(s_width):
        x = float(x)/s_width
        # xx is an increment of x to calculate next point
        xx = (x * s_width + 1) / s_width
        # Meanline
        xM_1 = 5 + x * s_width
        yM_1 = y0 - mean_line(x, airfoil) * s_width
        xM_2 = 5 + xx * s_width
        yM_2 = y0 - mean_line(xx, airfoil) * s_width
        image.line((xM_1, yM_1, xM_2, yM_2), outline=color2)
        # Airfoil (U: Upper, L: Lower, 1-2 are 1st and 2nd point of the line)
        teta = atan(derivative(lambda x: mean_line(x, airfoil), x))
        xU_1 = 5 + (x - thickness(x, airfoil)*sin(teta)) * s_width
        yU_1 = y0 - (mean_line(x, airfoil) -
                    thickness(x, airfoil)*cos(teta)) * s_width
        xL_1 = 5 + (x + thickness(x, airfoil)*sin(teta)) * s_width
        yL_1 = y0 - (mean_line(x, airfoil) +
                    thickness(x, airfoil)*cos(teta)) * s_width
        xU_2 = 5 + (xx - thickness(xx, airfoil)*sin(teta)) * s_width
        yU_2 = y0 - (mean_line(xx, airfoil) -
                    thickness(xx, airfoil)*cos(teta)) * s_width
        xL_2 = 5 + (xx + thickness(xx, airfoil)*sin(teta)) * s_width
        yL_2 = y0 - (mean_line(xx, airfoil) +
                    thickness(xx, airfoil)*cos(teta)) * s_width
        image.line((xU_1, yU_1, xU_2, yU_2), outline=color1, width=2)
        image.line((xL_1, yL_1, xL_2, yL_2), outline=color1, width=2)
    file_name = appuifw.query(u'Insert file name', 'text', u'.png')
    file_path = u'C:\\%s' % file_name
    image.save(file_path)
    del image
    appuifw.note(u'Image saved at C:\\%s' % file_name, 'info')
    # Ask if want to send the file
    if appuifw.query(u'Send the file via BT?', 'query'):
        try:
            import btsocket as socket
        except ImportError:
            import socket
        address, services = socket.bt_obex_discover()
        channel = services.items()[0][1]
        try:
            socket.bt_obex_send_file(address, channel, file_path)
        except error:
            appuifw.note(error.decode('utf-8'), 'error')

def ISA(z):
    &quot;&quot;&quot;International standard atmosphere&quot;&quot;&quot;
    T_sl = 288.15 # Kelvin
    p_sl = 101325.0 # Pascal
    rho_sl = 1.225 # kg/m^3
    # Air gas constant: 287 J / (kg * K)
    T = T_sl - 6.5 * (z/1000.0) # Thermal gradient: -6.5 K/km
    p = p_sl * (T/T_sl) ** (9.81 / 287 / 6.5e-3)
    rho = rho_sl * (T/T_sl) ** (9.81 / 287 / 6.5e-3 - 1)
    # Troposphere
    #if z &lt; 11000:
    #    T = T_sl - 6.5 * (z/1000.0) # Thermal gradient: -6.5 K/km
    #    p = p_sl * (T/T_sl) ** (9.81 / 287 / 6.5e-3)
    #    rho = rho_sl * (T/T_sl) ** (9.81 / 287 / 6.5e-3 - 1)
    ## Stratosphere
    #elif z &gt;= 11000 and z &lt; 20000:
    #    T = 216.65
    #    p = 2270 * E ** (-9.81 / 287 / 6.5e-3 * (z-11000))
    #    rho = 0.2978 * E ** (-9.81 / 287 / 6.5e-3 * (z-11000))
    #elif z &gt;= 20000:
    #    # Up 20000 m thermal gradient is approximated
    #    T = 216.65 + 0.98 * (z-20000)/1000.0 # Thermal gradient: ~ 0.98 K/km
    #    p = 2270 * E ** (-9.81 / 287 / 6.5e-3 * (z-11000))
    #    rho = 0.2978 * E ** (-9.81 / 287 / 6.5e-3 * (z-11000))
    return (T, p, rho)

def Reynolds():
    &quot;&quot;&quot;Shows a form to calculate dimensionless quantity&quot;&quot;&quot;
    fields = [(u'Speed [m/s]', 'float', 0.0),
              (u'Density [kg/m^3]', 'float', 0.0),
              (u'D. viscosity [Pa*s]', 'float', 0.0),
              (u'Linear dimension [m]', 'float', 0.0)]
    flag = appuifw.FFormEditModeOnly + appuifw.FFormDoubleSpaced
    form = appuifw.Form(fields, flag)
    form.execute()
    # Result
    speed, density, viscosity, linear_d = [i[2] for i in list(form)]
    reynolds = density * speed * linear_d / viscosity
    appuifw.query(u'Reynolds:', 'text', unicode(reynolds))
    appuifw.query(u'Reynolds (exp):', 'text', u'%.0e' % reynolds)

def Mach():
    &quot;&quot;&quot;Shows a form to calculate dimensionless quantity&quot;&quot;&quot;
    fields = [(u'Speed [m/s]', 'float', 0.0),
              (u'Sound speed [m/s]', 'float', 0.0),
              (u'* Temperature [degC]', 'float', 0.0),
              (u'* Altitude [m]', 'float', 0.0)]
    flag = appuifw.FFormEditModeOnly + appuifw.FFormDoubleSpaced
    form = appuifw.Form(fields, flag)
    appuifw.note(u'You may use temp. or alt. instead of sound speed', 'info')
    form.execute()
    # Result
    speed, sound_speed, temperature, altitude = [i[2] for i in list(form)]
    if sound_speed &lt; 1e-5:
        if temperature != 0.0:
            # Air gas constant: 287 J / (kg * K)
            sound_speed = (1.4 * 287 * (273.15+temperature)) ** 0.5
        elif altitude != 0.0:
            sound_speed = (1.4 * 287 * ISA(altitude)[0]) ** 0.5
        else:
            appuifw.note(u'Not enough parameters', 'error')
    mach = speed / sound_speed
    appuifw.query(u'Mach:', 'text', unicode(mach))

def Froude():
    &quot;&quot;&quot;Shows a form to calculate dimensionless quantity&quot;&quot;&quot;
    fields = [(u'Speed [m/s]', 'float', 0.0),
              (u'\u0394 z [m]', 'float', 0.0),
              (u'Gravity [m/s^2]', 'float', 9.81)]
    flag = appuifw.FFormEditModeOnly + appuifw.FFormDoubleSpaced
    form = appuifw.Form(fields, flag)
    form.execute()
    # Result
    speed, linear_d, gravity = [i[2] for i in list(form)]
    froude = speed * speed / gravity / linear_d
    appuifw.query(u'Froude:', 'text', unicode(froude))

def wing_set(type, par):
    &quot;&quot;&quot;
    Set the geometrical or aerodynamical parameters for the wing
    type can be:
        - 'geom': geometrical parameters
        - 'aero_r': aerodynamic of root chord
        - 'aero_t': aerodynamic of tip chord

    wing_G contains:
        - b: wingspan
        - cr: chord at root
        - ct: chord at tip
        - sweep: sweep angle from leading edge
        - iw: angle of incidence of wing (at root chord)
        - ew: efficiency number for non-elliptical wings
        - eps: angle of twist

    wing_A cointains:
        - wing_A[0]: aerodynamical parameters at root chord
        - wing_A[1]: aerodynamical parameters at tip chord
    parameters ending with *r are referred to the root chord
    parameters ending with *t are referred to the tip chord
    &quot;&quot;&quot;
    global wing_G, wing_A, fuselage, tail
    # Set geometrical parameters
    if type == 'geom':
        # Set all parameters
        if par == 'all':
            fields = [(u'Wingspan [m]', 'float', wing_G[0]),
                      (u'Chord root [m]', 'float', wing_G[1]),
                      (u'Chord tip [m]', 'float', wing_G[2]),
                      (u'Sweep angle [deg]', 'float', wing_G[3]),
                      (u'Wing incidence [deg]', 'float', wing_G[4]),
                      (u'Efficiency number [ ]', 'float', wing_G[5]),
                      (u'Twist angle [deg]', 'float', wing_G[6])]
            flag = appuifw.FFormEditModeOnly + appuifw.FFormDoubleSpaced
            form = appuifw.Form(fields, flag)
            form.execute()
            # Result
            wing_G = b, cr, ct, sweep, iw, ew, eps = [i[2] for i in list(form)]
        # Set a specific parameter
        elif par == 'wingspan':
            b = appuifw.query(u'Set wingspan [m]:', 'float', wing_G[0])
            wing_G[0] = b
        elif par == 'chords':
            cr = appuifw.query(u'Set root chord [m]:', 'float', wing_G[1])
            ct = appuifw.query(u'Set tip chord [m]:', 'float', wing_G[2])
            wing_G[1] = cr
            wing_G[2] = ct
        elif par == 'sweep':
            sweep = appuifw.query(u'Set sweep [deg]:', 'float', wing_G[3])
            wing_G[3] = sweep
        elif par == 'incid':
            incidence = appuifw.query(u'Set wing incidence [deg]:',
                                      'float', wing_G[4])
            wing_G[4] = incidence
        elif par == 'effic':
            effic = appuifw.query(u'Set efficiency number [ ]:',
                                  'float', wing_G[5])
            wing_G[5] = effic
        elif par == 'twist':
            twist = appuifw.query(u'Set twist angle [deg]:',
                                  'float', wing_G[6])
            wing_G[6] = twist
        wing_draw()
    # Set aerodynamical parameters for root
    elif type == 'aero_r':
        # Set all parameters
        if par == 'all':
            fields = [(u'Alfa lift coeff. [1/deg]', 'float', wing_A[0][0]),
                      (u'Zero-lift moment coeff. [ ]', 'float', wing_A[0][1]),
                      (u'Alfa zero lift [deg]', 'float', wing_A[0][2]),
                      (u'Aero. center pos. [of Cr]', 'float', wing_A[0][3])]
            flag = appuifw.FFormEditModeOnly + appuifw.FFormDoubleSpaced
            form = appuifw.Form(fields, flag)
            form.execute()
            # Result
            wing_A[0] = Clar, Cm0r, azlr, xacr = [i[2] for i in list(form)]
        # Set a specific parameter
        elif par == 'copy':
            wing_A[0] = wing_A[1]
        elif par == 'Clar':
            Clar = appuifw.query(u'Set alfa lift coeff. [1/deg]:',
                                 'float', wing_A[0][0])
            wing_A[0][0] = Clar
        elif par == 'Cm0r':
            Cm0r = appuifw.query(u'Set zero-lift moment coeff. [ ]:',
                                 'float', wing_A[0][1])
            wing_A[0][1] = Cm0r
        elif par == 'azlr':
            azlr = appuifw.query(u'Set alfa zero lift [deg]:',
                                 'float', wing_A[0][2])
            wing_A[0][2] = azlr
        elif par == 'xacr':
            xacr = appuifw.query(u'Set aero. center pos. [of Cr]:',
                                 'float', wing_A[0][3])
            wing_A[0][3] = xacr
    # Set aerodynamical parameters for tip
    elif type == 'aero_t':
        # Set all parameters
        if par == 'all':
            fields = [(u'Alfa lift coeff. [1/deg]', 'float', wing_A[1][0]),
                      (u'Zero-lift moment coeff. [ ]', 'float', wing_A[1][1]),
                      (u'Alfa zero lift [deg]', 'float', wing_A[1][2]),
                      (u'Aero. center pos. [of Ct]', 'float', wing_A[1][3])]
            flag = appuifw.FFormEditModeOnly + appuifw.FFormDoubleSpaced
            form = appuifw.Form(fields, flag)
            form.execute()
            # Result
            wing_A[1] = Clat, Cm0t, azlt, xact = [i[2] for i in list(form)]
        # Set a specific parameter
        elif par == 'copy':
            wing_A[1] = wing_A[0]
        elif par == 'Clat':
            Clat = appuifw.query(u'Set alfa lift coeff. [1/deg]:',
                                 'float', wing_A[1][0])
            wing_A[1][0] = Clat
        elif par == 'Cm0t':
            Cm0t = appuifw.query(u'Set Zero-lift moment coeff. [ ]:',
                                 'float', wing_A[1][1])
            wing_A[1][1] = Cm0t
        elif par == 'azlt':
            azlt = appuifw.query(u'Set alfa zero lift [deg]:',
                                 'float', wing_A[1][2])
            wing_A[1][2] = azlt
        elif par == 'xact':
            xact = appuifw.query(u'Set aero. center pos.[of Ct]:',
                                 'float', wing_A[1][3])
            wing_A[1][3] = xact
    # Set fuselage parameters
    if type == 'fuse':
        fields = [(u'Zero-lift Moment coeff. [ ]', 'float', fuselage[0]),
                  (u'Alpha moment coeff. [1/deg]', 'float', fuselage[1])]
        flag = appuifw.FFormEditModeOnly + appuifw.FFormDoubleSpaced
        form = appuifw.Form(fields, flag)
        form.execute()
        # Result
        fuselage = Cm0f, Cmaf = [i[2] for i in list(form)]
    # Set tail parameters
    if type == 'tail_h':
        fields = [(u'Alfa lift coeff. 2D [1/deg]', 'float', tail[0][0]),
                  (u'Wingspan [m]', 'float', tail[0][1]),
                  (u'Surface [m^2]', 'float', tail[0][2]),
                  (u'Efficiency number [ ]', 'float', tail[0][3]),
                  (u'Dinamic pressures ratio [ ]', 'float', tail[0][4])]
        flag = appuifw.FFormEditModeOnly + appuifw.FFormDoubleSpaced
        form = appuifw.Form(fields, flag)
        form.execute()
        # Result
        fuselage = Cm0f, Cmaf = [i[2] for i in list(form)]

def wing_draw():
    &quot;&quot;&quot;Draws the wing.&quot;&quot;&quot;
    if not any(wing_G):
        wing_set('geom', 'all')
        if not any(wing_G):
            return
    b, cr, ct, sweep, iw, ew, eps = wing_G
    WC = lambda y: cr + y * (ct - cr) * 2.0/b # Wing chord distribution
    buffer.clear()
    font = (None, 30)
    color0 = (0, 0, 0) # Text color
    color1 = (0, 0, 255) # Wing color
    color2 = (255, 0, 0) # Chords color
    color3 = (150, 150, 150) # Legend color
    s_width = width - 10 # Scaled width, for the border
    # Dimensionless ratio
    if cr &gt; b/2:
        DLR = height/2 / cr
    else:
        DLR = s_width / b
    b, cr, ct = [(i * DLR) for i in (b, cr, ct)]
    # Draws axes
    y0 = height/3 # Origin of axes
    x0 = width/2
    buffer.line((0, y0, width, y0), outline=color0)
    buffer.line((x0, 0, x0, height), outline=color0)
    #  Right leading edge
    RLE = (x0, y0,
              x0 + b/2, y0 + b/2 * tan(sweep*pi/180))
    # Right trailing edge
    RTE = (x0 + b/2, y0 + b/2 * tan(sweep*pi/180) + ct,
             x0, y0 + cr)
    # Left tip chord
    LTC = (x0 - b/2, y0 + b/2 * tan(sweep*pi/180) + ct,
             x0 - b/2, y0 + b/2 * tan(sweep*pi/180))
    # Draws left/right wings
    buffer.polygon(RLE + RTE + LTC, outline=color1, width=2)
    # Calculates the Mean Aerodynamic Chord
    # I divide by DLR, so I can integrate for smaller intervals
    b, cr, ct = [(i / DLR) for i in (b, cr, ct)]
    Sw = 2 * integrate(lambda y: WC(y), (0, b/2))
    MAC = 2 / Sw * integrate(lambda y: WC(y)**2, (0, b/2)) * DLR
    y_MAC = 2 / Sw * integrate(lambda y: y * WC(y), (0, b/2)) * DLR
    b, cr, ct = [(i * DLR) for i in (b, cr, ct)]
    # Draws the MAC
    points = (x0 + y_MAC, y0 + (b/2 - y_MAC) * tan(sweep*pi/180),
              x0 + y_MAC, y0 + (b/2 - y_MAC) * tan(sweep*pi/180) + MAC)
    buffer.line(points, outline=color2, width=2)
    # Shows the legend
    line_MAC = (x0 + y_MAC, y0 + (b/2 - y_MAC) * tan(sweep*pi/180),
                x0 + y_MAC, y0 - 20)
    text_MAC = (x0 + y_MAC, y0 - 20)
    buffer.line(line_MAC, outline=color3)
    buffer.text(text_MAC, u'M.A.C.', fill=color3)
    draw()

def wing_info(type):
    &quot;&quot;&quot;
    Calculates and shows geometrical informations about the wing.
    type can be:
        - 'geom': shows geometrical info
        - 'aero': shows aerodynamic info
    wing_A cointains:
        - wing_A[0]: aerodynamical parameters at root chord
        - wing_A[1]: aerodynamical parameters at tip chord
    parameters ending with *r are referred to the root chord
    parameters ending with *t are referred to the tip chord

    &quot;eps&quot; is the twist angle, while &quot;twist&quot; is the law of twist
    &quot;&quot;&quot;
    # Geometrical info
    if type == 'geom':
        if not wing_G: wing_set('geom', 'all')
        b, cr, ct, sweep, iw, ew, eps = wing_G
        WC = lambda y: cr + y * (ct - cr) * 2.0/b # Wing chord distribution
        Sw = 2 * integrate(lambda y: WC(y), (0, b/2))
        AR = b**2 / Sw # Aspect ratio
        TR = ct / cr   # Taper ratio
        MAC = 2 / Sw * integrate(lambda y: WC(y)**2, (0, b/2))
        y_MAC = 2 / Sw * integrate(lambda y: y * WC(y), (0, b/2))
        fields = [
            (u'Aspect ratio [ ]', 'text', u'%.2f' % AR),
            (u'Tape ratio [ ]', 'text', u'%.2f' % TR),
            (u'Wing surface [m^2]', 'text', u'%.2f' % Sw),
            (u'Mean Aerodynamic Chord [m]', 'text', u'%.2f' % MAC),
            (u'y of M.A.C. [% of wing]', 'text', u'%.1f' % (y_MAC * 200 / b))]
        flag = appuifw.FFormDoubleSpaced
        form = appuifw.Form(fields, flag)
        form.execute()
    # Aerodynamical info
    elif type == 'aero':
        if not wing_A: wing_set('aero', 'all')
        # Load geometric and aerodynamic parameters
        b, cr, ct, sweep, iw, ew, eps = wing_G
        WC = lambda y: cr + y * (ct - cr) * 2.0/b # Wing chord distribution
        Clar, Cm0r, azlr, xacr = wing_A[0]
        Clat, Cm0t, azlt, xact = wing_A[1]
        # Laws of variation from root to tip
        Cla = lambda y: Clar + y * (Clat - Clar) / (b/2)
        Cm0 = lambda y: Cm0r + y * (Cm0t - Cm0r) / (b/2)
        azl = lambda y: azlr + y * (azlt - azlr) / (b/2)
        xac = lambda y: xacr + y * (xact - xacr) / (b/2)
        twist = lambda y: y * eps / (b/2)
        # Lift coefficient of 2D wing (without downwash), weighted mean
        par = (b, cr, ct)
        integ = lambda y: WC(y)
        Sw = 2 * integrate(integ, (0, b/2))
        integ = lambda y: Cla(y) * WC(y)
        Claw = 2 / Sw * integrate(integ, (0, b/2))
        # Lift coefficient of 3D wing (elliptical wing formula)
        AR = b**2 / Sw
        if not ew: ew = 1 # Elliptical wing
        CLa = Claw / (1 + (57.296*Claw/pi/ew/AR))
        # Alfa zero Lift of wing
        integ = lambda y: (azl(y) - twist(y)) * WC(y)
        azL = 2 / Sw * integrate(integ, (0, b/2))
        # Moment coefficient (AC) of wing
        MAC = 2 / Sw * integrate(lambda y: WC(y)**2, (0, b/2))
        integ = lambda y: (Cm0(y) * WC(y)**2 -
                           pi * (azL - twist(y) - azl(y)) * WC(y) * xac(y))
        Cmacw = 2 / (Sw * MAC) * integrate(integ, (0, b/2))
        # Aerodynamic center
        integ = lambda y: Cla(y) * xac(y) * WC(y)
        xAC = (2 / Sw / CLa * integrate(integ, (0, b/2)))
        integ = lambda y: Cla(y) * y * WC(y)
        yAC = 2 / Sw / CLa * integrate(integ, (0, b/2))
        # Show results
        fields = [
            (u'Lift coefficient of 2D wing [1/deg]', 'text', u'%.4f' % Claw),
            (u'Lift coefficient of 3D wing [1/deg]', 'text', u'%.4f' % CLa),
            (u'Moment coefficient (AC) of wing [ ]', 'text', u'%.4f' % Cmacw),
            (u'Alfa zero Lift of wing [deg]', 'text', u'%.3f' % azL),
            (u'x of aero. center [%MAC]', 'text', u'%.2f' % xAC),
            (u'y of aero. center [%b]', 'text', u'%.2f' % yAC)]
        flag = appuifw.FFormDoubleSpaced
        form = appuifw.Form(fields, flag)
        form.execute()

def rotate_screen():
    &quot;&quot;&quot;Rotate the screen and rebuilt the canvas&quot;&quot;&quot;
    global width, height, c, buffer
    screen = appuifw.app.orientation
    if screen == 'landscape':
        appuifw.app.orientation = 'portrait'
    else:
        appuifw.app.orientation = 'landscape'
    del c
    c = appuifw.Canvas(redraw_callback=draw)
    width, height = c.size
    buffer = buffer.resize(c.size)

def set_altitude(um):
    &quot;&quot;&quot;Set altitude (um is unit of measurement)&quot;&quot;&quot;
    if um == 'm':
        altitude = appuifw.query(u'Insert altitude [m]:', 'float')
        tab_4(altitude)
    elif um == 'ft':
        altitude_ft = appuifw.query(u'Insert altitude [ft]:', 'float')
        altitude = altitude_ft * 0.3048
        tab_4(altitude)
    if altitude == None:
        appuifw.note(u'Altitude not set!', 'error')
        return

def quit():
    e32.Ao_lock().signal()

def tab_0():
    &quot;&quot;&quot;Starting graphics&quot;&quot;&quot;
    buffer.clear()
    color = ((0, 0, 0),
             (0, 255, 0),
             (0, 150, 0))
    font = ((u'Nokia Hindi TitleSmBd S6', 30),
            (u'Nokia Hindi TitleSmBd S6', 15),
            (u'Nokia Hindi TitleSmBd S6', 15))
    text = (u'NACA PyFoil',
            u'By Ale152',
            u'www.wirgilio.it')
    box = (buffer.measure_text(text[0], font[0]),
           buffer.measure_text(text[1], font[1]),
           buffer.measure_text(text[2], font[2]))
    position = (((width-box[0][0][2])/2, 30),
                ((width-box[1][0][2])/2, 50),
                ((width-box[2][0][2])/2, 65))
    buffer.text(position[0], text[0], font=font[0], fill=color[0])
    buffer.text(position[1], text[1], font=font[1], fill=color[2])
    buffer.text(position[2], text[2], font=font[2], fill=color[2])
    s_width = width - 40 # Scaled width, for the border
    airfoil = [None, None, (0.12, 0, 0)] # NACA intro
    for x in xrange(s_width):
        x = float(x)/s_width
        # Airfoil (U: Upper, L: Lower)
        xL = xU = 20 + x * s_width
        yU = height/2 - thickness(x, airfoil) * s_width
        yL = height/2 + thickness(x, airfoil) * s_width
        buffer.line((xU, yU, xL, yL), outline=color[1], width=2)
        buffer.point((xL, yL), outline=color[2], width=2)
    draw()

def tab_1():
    &quot;&quot;&quot;NACA Plot tab&quot;&quot;&quot;
    if not airfoil[0]:
        buffer.clear()
        position = (10, 30)
        color1 = (0, 0, 100) # Text
        color2 = (0, 0, 0) # Axes
        color3 = (80, 80, 80) # Units
        color4 = (0, 0, 200) # Function
        buffer.text(position, u'Please set a NACA from menu', fill=color1)
        # Draws an axes system (origin in [w/3, h/2])
        for k in range(30):
            xA = k * width/30
            yA = height/2
            xO = width/3
            yO = k * (height-50)/30
            buffer.line((xA, yA-2, xA, yA+3), outline=color3)
            buffer.line((xO-2, 50+yO, xO+3, 50+yO), outline=color3)
        buffer.line((width/3, 50, width/3, height), outline=color2)
        buffer.line((0, height/2, width, height/2), outline=color2)
        # Draws a function
        for t in xrange(900):
            t = float(t)
            x = t * cos(t*pi/180) / 15
            y = t * sin(t*pi/180) / 15
            buffer.point((width/3 + x, height/2 + y), outline=color4, width=2)
        draw()
        return
    else:
        NACA_plot()

def tab_2():
    &quot;&quot;&quot;Dimensionless goup form&quot;&quot;&quot;
    buffer.clear()
    position = (10, 30)
    color1 = (0, 0, 100)
    color2 = (200, 0, 0)
    buffer.text(position, u'Select a group from menu', fill=color1)
    draw()

def tab_3():
    &quot;&quot;&quot;Wings&quot;&quot;&quot;
    buffer.clear()
    position = (10, 30)
    color1 = (0, 0, 100)
    color2 = (200, 0, 0)
    buffer.text(position, u'Set wing parameter from menu', fill=color1)
    draw()

def tab_4(altitude=None):
    &quot;&quot;&quot;Shows a form to calculate ISA parameters&quot;&quot;&quot;
    if altitude == None:
        buffer.clear()
        position = (10, 30)
        color = (0, 0, 100)
        buffer.text(position, u'Please set altitude from menu', fill=color)
        font = (u'Nokia Hindi TitleSmBd S6', 30)
        isa_text = [u'International', u'Standard', u'Atmosphere']
        buffer.text((10, 70), isa_text[0], font=font, fill=color)
        buffer.text((30, 100), isa_text[1], font=font, fill=color)
        buffer.text((50, 130), isa_text[2], font=font, fill=color)
        draw()
        return
    temp, press, dens = ISA(altitude)
    fields = [(u'Temperature [K]', 'text', u'%.3f' % temp),
              (u'Temperature [degC]', 'text', u'%.3f' % (temp - 273.15)),
              (u'Pressure [Pa]', 'text', u'%.3f' % press),
              (u'Density [kg/m^3]', 'text', u'%.3f' % dens)]
    flag = appuifw.FFormDoubleSpaced
    form = appuifw.Form(fields, flag)
    form.execute()

def set_tab(index):
    &quot;&quot;&quot;Set tab function&quot;&quot;&quot;
    if index == 0: # Starting
        tab_0()
        appuifw.app.menu = menu_0
    elif index == 1: # NACA Plot
        tab_1()
        appuifw.app.menu = menu_1
    elif index == 2: # Dim.less goup
        tab_2()
        appuifw.app.menu = menu_2
    elif index == 3: # ISA
        tab_3()
        appuifw.app.menu = menu_3
    elif index == 4: # ISA
        tab_4()
        appuifw.app.menu = menu_4

tabs = [u'Intro', u'Plot', u'Group', u'Wing', u'ISA']
appuifw.app.set_tabs(tabs, set_tab)

# Starting menu
menu_0 = [(u'Rotate screen', rotate_screen),
          (u'About', lambda: appuifw.note(u'Created by Ale152', 'info')),
          (u'Quit', quit)]
# NACA Plot menu
menu_1 = [(u'Set NACA', NACA_set),
          (u'Plot', NACA_plot),
          (u'Export IMG', NACA_export),
          (u'Rotate screen', rotate_screen),
          (u'Quit', quit)]
# Dim.less group menu
menu_2 = [(u'Reynolds', Reynolds),
          (u'Mach', Mach),
          (u'Froude', Froude),
          (u'Rotate screen', rotate_screen),
          (u'Quit', quit)]
# Wings menu
menu_3 = [(u'Set wing geom', (
              (u'All', lambda: wing_set('geom', 'all')),
              (u'Wingspan', lambda: wing_set('geom', 'wingspan')),
              (u'Chords', lambda: wing_set('geom', 'chords')),
              (u'Sweep', lambda: wing_set('geom', 'sweep')),
              (u'Incidence', lambda: wing_set('geom', 'incid')),
              (u'Efficiency', lambda: wing_set('geom', 'effic')),
              (u'Twist', lambda: wing_set('geom', 'twist')))),
          (u'Set wing aero (root)', (
              (u'All', lambda: wing_set('aero_r', 'all')),
              (u'Copy from tip', lambda: wing_set('aero_r', 'copy')),
              (u'Alfa lift coeff.', lambda: wing_set('aero_r', 'Clar')),
              (u'Alfa moment coeff.', lambda: wing_set('aero_r', 'Cm0r')),
              (u'Alfa zero lift', lambda: wing_set('aero_r', 'azlr')),
              (u'Aero. center pos.', lambda: wing_set('aero_r', 'xacr')))),
          (u'Set wing aero (tip)', (
              (u'All', lambda: wing_set('aero_t', 'all')),
              (u'Copy from root', lambda: wing_set('aero_t', 'copy')),
              (u'Alfa lift coeff.', lambda: wing_set('aero_t', 'Clat')),
              (u'Alfa moment coeff.', lambda: wing_set('aero_t', 'Cm0t')),
              (u'Alfa zero lift', lambda: wing_set('aero_t', 'azlt')),
              (u'Aero. center pos.', lambda: wing_set('aero_t', 'xact')))),
          (u'Set horiz. tail', (
              (u'All', lambda: wing_set('aero_t', 'all')),
              (u'Copy from root', lambda: wing_set('aero_t', 'copy')),
              (u'Alfa lift coeff.', lambda: wing_set('aero_t', 'Clat')),
              (u'Alfa moment coeff.', lambda: wing_set('aero_t', 'Cm0t')),
              (u'Alfa zero lift', lambda: wing_set('aero_t', 'azlt')),
              (u'Aero. center pos.', lambda: wing_set('aero_t', 'xact')))),
          (u'Show geom info', lambda: wing_info('geom')),
          (u'Show aero info', lambda: wing_info('aero')),
          (u'Draw wing', wing_draw),
          (u'Rotate screen', rotate_screen),
          (u'Quit', quit)]
# ISA menu
menu_4 = [(u'Set altitude', (
              (u'Meters', lambda: set_altitude('m')),
              (u'Feet', lambda: set_altitude('ft')))),
          (u'Rotate screen', rotate_screen),
          (u'Quit', quit)]

set_tab(0)
app_lock = e32.Ao_lock()
app_lock.wait()</pre>
<img src="http://feeds.feedburner.com/~r/wirgilio/blog/~4/9W-_JwL_AZA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wirgilio.it/blog/2010/06/24/pyfoil-1-2/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://www.wirgilio.it/blog/2010/06/24/pyfoil-1-2/</feedburner:origLink></item>
		<item>
		<title>Proiettili a rallentatore</title>
		<link>http://feedproxy.google.com/~r/wirgilio/blog/~3/aDD-Am8f3aI/</link>
		<comments>http://www.wirgilio.it/blog/2010/06/22/proiettili-a-rallentatore/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 18:20:06 +0000</pubDate>
		<dc:creator>Ale152</dc:creator>
				<category><![CDATA[Video]]></category>
		<category><![CDATA[Slow motion]]></category>

		<guid isPermaLink="false">http://www.wirgilio.it/blog/?p=1415</guid>
		<description><![CDATA[In questo video è possibile vedere cosa succede a dei proiettili di diverso tipo quando si schiantano contro particolari superfici come ferro, ghiaccio, carta, acqua e vetro. È incredibile notare come l&#8217;elevatissima energia cinetica dei proiettili si trasformi in energia interna a causa dell&#8217;urto, portando la temperatura del proiettile fino a quella di fusione.]]></description>
			<content:encoded><![CDATA[<p>In questo video è possibile vedere cosa succede a dei proiettili di diverso tipo quando si schiantano contro particolari superfici come ferro, ghiaccio, carta, acqua e vetro.</p>
<p>È incredibile notare come l&#8217;elevatissima energia cinetica dei proiettili si trasformi in energia interna a causa dell&#8217;urto, portando la temperatura del proiettile fino a quella di fusione.</p>
<p><object style="height: 344px; width: 425px;" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100" height="100" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://www.youtube.com/v/QfDoQwIAaXg" /><param name="allowfullscreen" value="true" /><embed style="height: 344px; width: 425px;" type="application/x-shockwave-flash" width="100" height="100" src="http://www.youtube.com/v/QfDoQwIAaXg" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<img src="http://feeds.feedburner.com/~r/wirgilio/blog/~4/aDD-Am8f3aI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wirgilio.it/blog/2010/06/22/proiettili-a-rallentatore/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.wirgilio.it/blog/2010/06/22/proiettili-a-rallentatore/</feedburner:origLink></item>
		<item>
		<title>Pain of Salvation – Iter Impius</title>
		<link>http://feedproxy.google.com/~r/wirgilio/blog/~3/h4QjZ8qZGyk/</link>
		<comments>http://www.wirgilio.it/blog/2010/06/22/pain-of-salvation-iter-impius/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 18:09:14 +0000</pubDate>
		<dc:creator>Ale152</dc:creator>
				<category><![CDATA[Musica]]></category>
		<category><![CDATA[Progressive Metal]]></category>

		<guid isPermaLink="false">http://www.wirgilio.it/blog/?p=1403</guid>
		<description />
			<content:encoded><![CDATA[<p><object style="height: 344px; width: 425px;" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100" height="100" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://www.youtube.com/v/cRSJzzIm8U8" /><param name="allowfullscreen" value="true" /><embed style="height: 344px; width: 425px;" type="application/x-shockwave-flash" width="100" height="100" src="http://www.youtube.com/v/cRSJzzIm8U8" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<img src="http://feeds.feedburner.com/~r/wirgilio/blog/~4/h4QjZ8qZGyk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wirgilio.it/blog/2010/06/22/pain-of-salvation-iter-impius/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.wirgilio.it/blog/2010/06/22/pain-of-salvation-iter-impius/</feedburner:origLink></item>
		<item>
		<title>Mars500, 520 giorni di isolamento</title>
		<link>http://feedproxy.google.com/~r/wirgilio/blog/~3/8Ctx7xO7-9A/</link>
		<comments>http://www.wirgilio.it/blog/2010/06/20/mars500-520-giorni-di-isolamento/#comments</comments>
		<pubDate>Sun, 20 Jun 2010 17:55:56 +0000</pubDate>
		<dc:creator>Ale152</dc:creator>
				<category><![CDATA[Astronomia]]></category>
		<category><![CDATA[Marte]]></category>

		<guid isPermaLink="false">http://www.wirgilio.it/blog/?p=1405</guid>
		<description><![CDATA[Mars500, è questo il nome dell&#8217;esperimento organizzato dall&#8217;ESA e l&#8217;IMBP che si sta svolgendo a Mosca da qualche settimana per simulare una missione spaziale con equipaggio umano su Marte. L&#8217;esperimento durerà 520 giorni, di cui: 250 giorni per «arrivare» su Marte, 30 giorni per esplorare la superficie del pianeta e 240 giorni per il «rientro» [...]]]></description>
			<content:encoded><![CDATA[<p><strong><a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/06/spirit.jpg"><img class="alignright size-medium wp-image-1410" title="spirit" src="http://www.wirgilio.it/blog/wp-content/uploads/2010/06/spirit-300x198.jpg" alt="" width="244" height="161" /></a>Mars500</strong>, è questo il nome dell&#8217;esperimento organizzato dall&#8217;<a href="http://www.esa.int/esaMI/Mars500/index.html" target="_blank">ESA</a> e l&#8217;<a href="http://mars500.imbp.ru/en/index_e.html" target="_blank">IMBP</a> che si sta svolgendo a Mosca da qualche settimana per simulare una missione spaziale con equipaggio umano su Marte.</p>
<p>L&#8217;esperimento durerà 520 giorni, di cui: 250 giorni per «arrivare» su Marte, 30 giorni per esplorare la superficie del pianeta e 240 giorni per il «rientro» sulla Terra.<br />
L&#8217;equipaggio è composto da sei uomini:</p>
<ul>
<li>Diego Urbina, italo-colombiano, 26 anni</li>
<li>Romain Charles, francese, 31 anni</li>
<li>Alexey Sitev, russo, 38 anni</li>
<li>Sukhrob Kamolov, russo, 37 anni</li>
<li>Alexandr Smoleevskiy, russo, 32 anni</li>
<li>Wang Yue, cinese, 27 anni</li>
</ul>
<p><a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/06/Mars500_crew_seconds_before_ingress_1_H.jpg"><img class="alignnone size-medium wp-image-1408" title="Mars500_crew_seconds_before_ingress_1_H" src="http://www.wirgilio.it/blog/wp-content/uploads/2010/06/Mars500_crew_seconds_before_ingress_1_H-200x300.jpg" alt="" width="200" height="300" /></a></p>
<p>La simulazione avverrà interamente in una costruzione di 550 m³ di volume, isolata ermeticamente e divisa in moduli: il modulo medico, il modulo abitativo, il simulatore di atterraggio su Marte e il deposito, contenente frigorifero, palestra, sauna e giardino per gli esperimenti.</p>
<p><a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/06/mars500facility.jpg"><img class="alignnone size-medium wp-image-1407" title="mars500facility" src="http://www.wirgilio.it/blog/wp-content/uploads/2010/06/mars500facility-300x205.jpg" alt="" width="319" height="213" /></a></p>
<p>Durante tutta la simulazione l&#8217;equipaggio sarà costretto al totale isolamento. Durante il primo e l&#8217;ultimo mese della missione potranno comunicare con la Terra a voce, ma durante tutto il resto della missione potranno farlo esclusivamente tramite messaggi di testo, i quali arriveranno a destinazione con un ritardo anche superiore ai venti minuti!</p>
<p>L&#8217;esperimento sarà supervisionato dall&#8217;esterno mediante delle webcam disposte all&#8217;interno dei moduli e tutti i parametri medici, psicologici e fisici degli astronauti saranno costantemente monitorati e registrati.</p>
<p>Lo scopo di questo esperimento è quello di conoscere l&#8217;impatto fisico e soprattutto psicologico che gli astronauti subiranno durante un periodo così lungo di isolamento. In base all&#8217;esito di questa simulazione si deciderà se è possibile una reale missione con equipaggio umano su Marte. Tutti gli altri obiettivi scientifici che sono stati posti per Mars500 sono consultabili presso <a href="http://www.esa.int/esaMI/Mars500/SEM12PBDNRF_0.html" target="_blank">questo indirizzo</a>.</p>
<p><a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/06/mars500.jpg"><img class="alignnone size-medium wp-image-1409" title="MARS 500 Session training in the IMBP module." src="http://www.wirgilio.it/blog/wp-content/uploads/2010/06/mars500-300x199.jpg" alt="" width="300" height="199" /></a></p>
<p>Durante l&#8217;esperimento l&#8217;equipaggio sarà costretto a vivere come gli astronauti della Stazione Spaziale Internazionale: esercizi di ginnastica tutti i giorni per almeno un&#8217;ora al giorno, pranzi a base di cibo liofilizzato e possibili guasti simulati durante il viaggio.<br />
Tempo fa sono già stati fatti esperimenti del genere, con simulazioni di 14 giorni nel 2007 e 105 giorni nel 2009. Questa però è la prima volta che viene simulata una missione su Marte <em>full-lenght</em>.</p>
<p>Per conoscere i vari sviluppi della missione è possibile seguire il <a href="http://www.youtube.com/esa" target="_blank">canale su YouTube di ESA</a>, sul quale verrà pubblicato un vero e proprio video diario. Nel seguente video, il primo pubblicato, Diego Urbina ci mostra dall&#8217;interno il luogo nel quale vivrà per i prossimi 17 mesi.</p>
<p><object style="height: 344px; width: 425px;" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100" height="100" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://www.youtube.com/v/MP7pni7AZGk" /><param name="allowfullscreen" value="true" /><embed style="height: 344px; width: 425px;" type="application/x-shockwave-flash" width="100" height="100" src="http://www.youtube.com/v/MP7pni7AZGk" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Senza dubbio questo esperimento è di grandissima importanza, perché sarebbe impensabile spedire un equipaggio umano in isolamento per quasi due anni nello spazio senza neanche conoscerne le conseguenze.</p>
<img src="http://feeds.feedburner.com/~r/wirgilio/blog/~4/8Ctx7xO7-9A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wirgilio.it/blog/2010/06/20/mars500-520-giorni-di-isolamento/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.wirgilio.it/blog/2010/06/20/mars500-520-giorni-di-isolamento/</feedburner:origLink></item>
		<item>
		<title>Tracce dell’Esame di Stato 2010</title>
		<link>http://feedproxy.google.com/~r/wirgilio/blog/~3/9QgWM8CnmdQ/</link>
		<comments>http://www.wirgilio.it/blog/2010/06/19/tracce-dellesame-di-stato-2010/#comments</comments>
		<pubDate>Sat, 19 Jun 2010 09:59:48 +0000</pubDate>
		<dc:creator>Ale152</dc:creator>
				<category><![CDATA[Humor]]></category>

		<guid isPermaLink="false">http://www.wirgilio.it/blog/?p=1399</guid>
		<description><![CDATA[Ecco le tracce dell&#8217;Esame di Stato di quest&#8217;anno.]]></description>
			<content:encoded><![CDATA[<p>Ecco le tracce dell&#8217;Esame di Stato di quest&#8217;anno.</p>
<p><a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/06/footprints.jpg"><img class="alignnone size-full wp-image-1400" title="footprints" src="http://www.wirgilio.it/blog/wp-content/uploads/2010/06/footprints.jpg" alt="" width="260" height="384" /></a></p>
<img src="http://feeds.feedburner.com/~r/wirgilio/blog/~4/9QgWM8CnmdQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wirgilio.it/blog/2010/06/19/tracce-dellesame-di-stato-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.wirgilio.it/blog/2010/06/19/tracce-dellesame-di-stato-2010/</feedburner:origLink></item>
		<item>
		<title>Semplice esempio di riduzione del rumore</title>
		<link>http://feedproxy.google.com/~r/wirgilio/blog/~3/zyWx4g6-HgQ/</link>
		<comments>http://www.wirgilio.it/blog/2010/06/17/semplice-esempio-di-riduzione-del-rumore/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 18:21:46 +0000</pubDate>
		<dc:creator>Ale152</dc:creator>
				<category><![CDATA[Esperimenti]]></category>
		<category><![CDATA[Audio]]></category>

		<guid isPermaLink="false">http://www.wirgilio.it/blog/?p=1387</guid>
		<description><![CDATA[Se in questi giorni vi è capitato di vedere una partita dei mondiali di calcio in Sudafrica, avrete senz&#8217;altro fatto caso all&#8217;insopportabile rumore delle vuvuzela. In questo articolo voglio mostrare come sia possibile eliminare un rumore sfruttando le caratteristiche fisiche del suono stesso. Il suono è una “vibrazione prodotta da un corpo in rapida e [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/06/rumore.jpg"><img class="alignright size-medium wp-image-1393" title="rumore" src="http://www.wirgilio.it/blog/wp-content/uploads/2010/06/rumore-300x225.jpg" alt="" width="224" height="168" /></a>Se in questi giorni vi è capitato di vedere una partita dei mondiali di calcio in Sudafrica, avrete senz&#8217;altro fatto caso all&#8217;insopportabile rumore delle <a href="http://it.wikipedia.org/wiki/Vuvuzela" target="_blank"><em>vuvuzela</em></a>.</p>
<p>In questo articolo voglio mostrare come sia possibile eliminare un rumore sfruttando le caratteristiche fisiche del suono stesso. Il suono è una “<em>vibrazione prodotta da un corpo in rapida e regolare oscillazione, che si propaga nell&#8217;aria o in altri mezzi elastici producendo una sensazione uditiva</em>”, questa vibrazione si propaga sottoforma di disturbi di pressione consecutivi che assumono le caratteristiche di <a href="http://it.wikipedia.org/wiki/Onda_sonora" target="_blank">onde longitudinali</a>.</p>
<div id="attachment_1389" class="wp-caption alignnone" style="width: 374px"><a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/06/onda_sonora.jpg"><img class="size-full wp-image-1389" title="onda_sonora" src="http://www.wirgilio.it/blog/wp-content/uploads/2010/06/onda_sonora.jpg" alt="" width="364" height="207" /></a><p class="wp-caption-text">Asse delle ascisse: tempo; asse delle ordinate: ampiezza dell&#39;onda</p></div>
<p>Nell&#8217;immagine è rappresentato l&#8217;andamento della <span style="text-decoration: underline;">variazione</span> pressione dovuta all&#8217;onda, prodotta da un suono a frequenza costante.</p>
<p>L&#8217;eliminazione del rumore si basa sul principio di sovrapposizione delle onde, secondo il quale due onde che si incontrano danno vita a un&#8217;onda la cui ampiezza è la somma delle due. Il concetto è chiaramente rappresentato nella seguente animazione:<br />
<a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/06/sovrapposizione_onde.gif"><img class="alignnone size-full wp-image-1390" title="sovrapposizione_onde" src="http://www.wirgilio.it/blog/wp-content/uploads/2010/06/sovrapposizione_onde.gif" alt="" width="288" height="288" /></a></p>
<p>In base a questo principio, se le due onde sono perfettamente identiche ma hanno ampiezza opposta, queste si annullano. Perciò, per eliminare un rumore, è sufficiente generare un «antirumore» che si annichilisca con il fastidioso suono. I due suoni, rumore e antirumore, devono provenire dalla stessa sorgente, in modo che <span style="text-decoration: underline;">tutti</span> i disturbi di pressione possano essere eliminati.</p>
<p>Vediamo un semplicissimo esempio di eliminazione di un rumore utilizzando il software opensource <a href="http://audacity.sourceforge.net/" target="_blank"><strong>Audacity</strong></a>, disponibile sia per sistemi Windows che GNU/Linux.<br />
Apriamo Audacity e creiamo un nuovo suono da <em>Generate -&gt; Tone</em>, impostiamo una frequenza di 1000 Hz per poterlo udire e lasciamo inalterati gli altri parametri. Creiamo una nuova traccia audio tramite <em>Project -&gt; New Audio Track</em> e generiamo un altro suono utilizzando gli stessi parametri del primo. A questo punto, tramite lo strumento <em>Zoom</em>, andiamo a ingrandire le due tracce audio sino a poterne distinguere la forma dell&#8217;onda. Selezioniamo interamente una delle due tracce con <em>Edit -&gt; Select -&gt; Cursor to End</em> e clicchiamo sull&#8217;icona del <em>Time Shift Tool</em>. Tramite questo strumento è possibile spostare la traccia audio, quindi spostiamo la traccia selezionata fino a far coincidere <strong>esattamente</strong> la <em>cresta </em>di un&#8217;onda con la <em>gola</em> dell&#8217;altra, come nell&#8217;immagine:</p>
<p><a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/06/audacity.png"><img class="alignnone size-full wp-image-1391" title="audacity" src="http://www.wirgilio.it/blog/wp-content/uploads/2010/06/audacity.png" alt="" width="550" height="470" /></a></p>
<p>Infine, spostate il bilanciamento di una traccia tutto a sinistra (<em>L</em>) e quello dell&#8217;altra tutto a destra (<em>R</em>).</p>
<p>A questo punto, collegate due casse uguali al vostro computer e disponetele una accanto all&#8217;altra. Riproducete il suono appena creato e posizionatevi davanti alle due casse: finché vi trovate in questa posizione il suono sarà praticamente impercettibile, se vi spostate più a destra o più a sinistra riuscirete invece a sentirlo.<br />
L&#8217;effetto è mostrato anche in questo video girato da me:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/BOTft7m4tuc&amp;hl=it_IT&amp;fs=1&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/BOTft7m4tuc&amp;hl=it_IT&amp;fs=1&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Nel video purtroppo non sono riuscito a trovare il punto preciso in cui i due suoni che arrivano al microfono si annullano, perché l&#8217;ho girato con il cellulare e non avevo la possibilità di ascoltare il suono registrato durante la ripresa. È comunque possibile notare come varia l&#8217;intensità del suono semplicemente cambiando la posizione delle casse.</p>
<p>Il file audio utilizzato è scaricabile tramite il seguente link:<br />
<strong><a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/06/Rumore.wav">- Rumore.wav -</a></strong></p>
<p>In questo esempio il rumore eliminato è un semplice suono a frequenza costante, ma ci consente di capire il principio su cui si basano sistemi molto più complessi di eliminazione del rumore, che invece di basarsi su suoni preregistrati analizzano il rumore identificandolo in base a determinati parametri e generano un suono uguale dall&#8217;ampiezza opposta, che annulla il rumore.</p>
<img src="http://feeds.feedburner.com/~r/wirgilio/blog/~4/zyWx4g6-HgQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wirgilio.it/blog/2010/06/17/semplice-esempio-di-riduzione-del-rumore/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.wirgilio.it/blog/wp-content/uploads/2010/06/Rumore.wav" length="5292132" type="audio/x-wav" />
		<feedburner:origLink>http://www.wirgilio.it/blog/2010/06/17/semplice-esempio-di-riduzione-del-rumore/</feedburner:origLink></item>
		<item>
		<title>A time lapse journey through Japan</title>
		<link>http://feedproxy.google.com/~r/wirgilio/blog/~3/OOoAkEP_zLI/</link>
		<comments>http://www.wirgilio.it/blog/2010/06/13/a-time-lapse-journey-through-japan/#comments</comments>
		<pubDate>Sun, 13 Jun 2010 20:48:32 +0000</pubDate>
		<dc:creator>Ale152</dc:creator>
				<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.wirgilio.it/blog/?p=1380</guid>
		<description><![CDATA[Se avete una buona connessione, consiglio vivamente di vederlo in HD e a schermo intero. Avvertenza: può indurre una condizione di deliquio.]]></description>
			<content:encoded><![CDATA[<p>Se avete una buona connessione, consiglio vivamente di <a href="http://vimeo.com/12112529" target="_blank">vederlo in HD</a> e a schermo intero.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="493" height="278" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=12112529&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="493" height="278" src="http://vimeo.com/moogaloop.swf?clip_id=12112529&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><em>Avvertenza:</em> può indurre una condizione di deliquio.</p>
<img src="http://feeds.feedburner.com/~r/wirgilio/blog/~4/OOoAkEP_zLI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wirgilio.it/blog/2010/06/13/a-time-lapse-journey-through-japan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.wirgilio.it/blog/2010/06/13/a-time-lapse-journey-through-japan/</feedburner:origLink></item>
		<item>
		<title>Guida al progressive metal</title>
		<link>http://feedproxy.google.com/~r/wirgilio/blog/~3/v6SUUGGrlN4/</link>
		<comments>http://www.wirgilio.it/blog/2010/06/07/guida-al-progressive-metal/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 20:48:15 +0000</pubDate>
		<dc:creator>Ale152</dc:creator>
				<category><![CDATA[Musica]]></category>
		<category><![CDATA[Progressive Metal]]></category>

		<guid isPermaLink="false">http://www.wirgilio.it/blog/?p=1363</guid>
		<description><![CDATA[Ormai è passato molto tempo da quando ho iniziato ad ascoltare progressive metal e mi sento di scrivere questo articolo, che vuole essere una sorta di guida per chi è stanco di ascoltare la solita musica commerciale da radio e ha voglia di sperimentare nuove sonorità. Ma anche per coloro che sono semplicemente curiosi di [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/06/minimoog_voyager_os.jpg"><img class="alignright size-medium wp-image-1370" title="minimoog_voyager_os" src="http://www.wirgilio.it/blog/wp-content/uploads/2010/06/minimoog_voyager_os-300x184.jpg" alt="" width="287" height="176" /></a>Ormai è passato molto tempo da quando ho iniziato ad ascoltare progressive metal e mi sento di scrivere questo articolo, che vuole essere una sorta di guida per chi è stanco di ascoltare la solita musica commerciale da radio e ha voglia di sperimentare nuove sonorità. Ma anche per coloro che sono semplicemente curiosi di capire un genere di cui non si parla affatto in tv e radio, ma che in realtà è ampiamente diffuso nel panorama musicale.</p>
<p>Un genere musicale nasce dall&#8217;esigenza di classificare delle band che non rientrano negli schemi di un&#8217;epoca, e quando si parla di progressive metal, la prima band che viene in mente sono senza dubbio i <a href="http://www.myspace.com/dreamtheater" target="_blank">Dream Theater</a>. Dire però che i Dream Theater rappresentino il progressive metal, è un po&#8217; come affermare che Bach rappresenta la musica classica.<br />
I Dream Theater sono senz&#8217;altro tra le band prog più conosciute, ma non sono certamente sufficienti a rappresentare un genere così vasto e particolare come il progressive metal.</p>
<p>La parola «metal» fa subito scattare in molte persone una serie di pregiudizi che probabilmente derivano dall&#8217;associazione del genere metal al <em>sottogenere</em> heavy metal, che ha ben poco a che fare con il prog. Infatti quando si parla di metal, i primi nomi che possono venire in mente a chi non ascolta il genere sono Iron Maiden, Metallica, Black Sabbath e simili, ma queste band hanno ben poco a che fare con il progressive metal. Vediamo grossomodo quali sono le caratteristiche che contraddistinguono il progressive metal.</p>
<h3>Gli strumenti</h3>
<p>Il prog è stato il primo genere metal a fare largo uso delle tastiere, che permettono di richiamare atmosfere tipiche del jazz e del blues, in genere assenti nel metal. Un esempio lampante è il progetto musicale <a href="http://www.myspace.com/liquidtensionexperimentmusic" target="_blank">Liquid Tension Experiment</a>. Le tastiere vengono inoltre spesso associate a dei sintetizzatori, che introducono delle particolarissime sonorità all&#8217;interno del genere. Un compositore che fa largo utilizzo di sintetizzatori nei suoi brani è <a href="http://www.myspace.com/ayreonauts" target="_blank">Arjen Lucassen</a>, di cui spesso ho parlato in articoli precedenti.<br />
Oltre alle immancabili chitarre, basso e batteria, spesso il prog fa utilizzo di strumenti atipici per il metal, come viola, violino, flauto, sassofono, pianoforte, clavicembalo, mandolino…<br />
Un ottimo esempio di come il sassofono possa abbracciare il progerssive metal ci è fornito da <a href="http://www.myspace.com/ihsahnmusic" target="_blank">Ihsahn</a>, che nel suo album <em>After</em> ci delizia con dei fantastici assoli a opera di Jørgen Munkeby.</p>
<h3>Tecnica e voce</h3>
<p>Il progressive metal è un genere basato sulla <em>sperimentazione</em>. Sperimentazione di nuove sonorità, nuovi tempi, nuovi strumenti, nuove tecniche compositive.</p>
<p>Una delle caratteristiche di alcuni brani prog, è la complessità dei tempi. Le radio e la musica commerciale abituano l&#8217;orecchio a tempi molto semplici, come 2/4 e 4/4. Nel progressive metal, essendo appunto un genere sperimentale, si fa spesso utilizzo di tempi molto più complessi e difficili da seguire ma che nel complesso risultano molto più interessanti da ascoltare.</p>
<p>Per quanto riguarda la voce, il <em>growl</em> è uno degli aspetti del metal che è più difficile apprezzare, quando si è agli esordi. Generalmente è anche difficile da trovare nel progressive metal, essendo più caratteristico di generi come il death e il black metal, ma nonostante ciò c&#8217;è una band che è riuscita a fondere perfettamente il death metal con il progressive metal, facendo largo utilizzo del growl: gli <a href="http://www.myspace.com/opeth" target="_blank">Opeth</a>. In particolare il cantante degli Opeth <a href="http://www.myspace.com/akerfeldtism" target="_blank">Mikael Åkerfeldt</a>, è famoso per cantare sia le parti «lisce» che quelle in growl, ed è considerato una delle migliori voci growl.<br />
Gli Opeth sono probabilmente la band ideale per chi vuole «imparare» ad ascoltare growl, essendo perfettamente miscelato con quello che può essere chiamato <em>progressive death metal</em>.</p>
<p>Un&#8217;altra caratteristica che contraddistingue il prog è la lunghezza degli assoli: assoli di chitarra, tastiera, sassofono, batteria e di ogni altro strumento, si presentano nella maggior parte dei brani. Anche gli assoli, come il growl, non sono facili da ascoltare le prime volte; addirittura potrebbero risultare troppo lunghi e noiosi se li si ascolta troppo superficialmente. Il prog è un genere abbastanza complesso che va ascoltato con attenzione, proprio come la musica classica! Infatti il paragone tra musica classica e progessive metal viene fatto spesso, proprio per i molti aspetti che hanno in comune; molte persone che ascoltano prog, spesso ascoltano anche musica classica.</p>
<h3>I concept</h3>
<p>I concept album, ossia gli album sviluppati su una trama o una storia ben precisa, non sono certo una prerogativa del progressive metal, ma le band prog che ne fanno uso sono davvero innumerevoli.<br />
Tra gli esempi più noti vi sono senza dubbio gli <a href="http://www.myspace.com/ayreonforbreakfast" target="_blank">Ayreon</a>, il cui progetto musicale è interamente basato su una travolgente saga fantascientifica, di cui ogni album costituisce un elemento; i <a href="http://www.myspace.com/painofsalvation" target="_blank">Pain of Salvation</a> che pubblicano prevalentemente concept album, trattando temi che vanno dall&#8217;esistenziale-filosofico a questioni più concrete come la sessualità.<br />
Gli stessi Dream Theater hanno pubblicato un concept, <em>Metropolis Pt. 2: Scenes from a Memory</em>, in cui viene narrata in modo teatrale l&#8217;intrigante storia di Nicholas e Victoria.</p>
<p>I concept album vanno generalmente ascoltati con il libretto originale, o almeno seguendo una trascrizione dei testi, sia per evitare di distrarsi mentre si ascolta, sia per poter seguire appieno la storia, dato che spesso i vari personaggi sono interpretati sempre dalla stessa voce.<br />
Secondo il mio modesto parere, i concept album riescono a far provare delle emozioni che un normale album non è in grado di dare.</p>
<h3>Come iniziare?</h3>
<p>Da che punto bisogna partire per iniziare ad ascoltare progressive metal? La risposta a questa domanda credo sia molto suscettibile, dato che ogni persona dovrà scegliere un suo percorso preciso da seguire, in base ai propri gusti musicali. Ciò che posso sicuramente consigliare è di partire da album meno tecnici e più melodici, magari più semplici da ascoltare. Alcuni esempi sono: <em><a href="http://it.wikipedia.org/wiki/The_Human_Equation" target="_blank">The Human Equation</a></em> degli Ayreon, <em><a href="http://it.wikipedia.org/wiki/Scenes_From_A_Memory" target="_blank">Metropolis Pt. 2: Scenes from a Memory</a></em> dei Dream Theater, <em><a href="http://it.wikipedia.org/wiki/Remedy_Lane" target="_blank">Remedy Lane</a></em> dei Pain of Salvation, <em>Emergent </em>dei <a href="http://www.myspace.com/gordianknot" target="_blank">Gordian Knot</a>, <em><a href="http://en.wikipedia.org/wiki/A_Murder_of_Crows_%28album%29" target="_blank">A Murder of Crows</a></em> dei <a href="http://www.myspace.com/deadsoultribe" target="_blank">Dead Soul Tribe</a>, e la lista potrebbe continuare ancora a lungo…</p>
<p>Un&#8217;altra band che consiglio fortemente a chi vuole iniziare ad ascoltare prog, sono i <a href="http://it.wikipedia.org/wiki/Pink_Floyd" target="_blank">Pink Floyd</a>. Anche se non è metal, è pur sempre progressive rock, che in un certo senso è la culla del progressive metal. Sono molte le band che richiamano sonorità nate con i Pink Floyd, i quali possono essere considerati come un&#8217;avanguardia del prog. Album fortemente consigliati sono <a href="http://it.wikipedia.org/wiki/The_Dark_Side_of_the_Moon" target="_blank"><em>The Dark Side of the Moon</em></a> e <em><a href="http://it.wikipedia.org/wiki/Wish_You_Were_Here_%28album_Pink_Floyd%29" target="_blank">Wish You Were Here</a></em></p>
<p><strong>Attenzione!</strong> Un modo che suggerisco fortemente di adottare per ascoltare progressive metal è quello di riprodurre <span style="text-decoration: underline;">album interi</span>, e non singole canzoni scaricate <span style="text-decoration: line-through;">illegalmente</span> o da YouTube, dato che ogni brano è spesso una parte costituente di un&#8217;opera più grande che può essere apprezzata solo se ascoltata nella sua interezza. Quindi, per quanto possa essere bello un brano preso singolarmente, è molto meglio ascoltarlo assieme agli altri brani dello stesso album.<br />
Spesso inoltre è importante poter osservare la copertina che, come in un libro, completa anche emotivamente l&#8217;album grazie alle immagini rappresentate.</p>
<h3>Strumenti utili</h3>
<p>Per terminare questo articolo vorrei segnalare un paio di siti web che possono essere utili per la ricerca di nuovi album e nuove band:</p>
<ul>
<li><a href="http://www.metalstorm.net/" target="_blank">Metalstorm</a>: è una community creata attorno ad un database abbastanza completo di musica metal. È molto utile per scoprire gli album più apprezzati dagli utenti, che possono votare artisti e album. Sono inoltre disponibili delle <a href="http://www.metalstorm.net/bands/albums_top.php?album_style=Progressive" target="_blank">classifiche</a> sui migliori album, filtrabili per genere musicale e anno di produzione.</li>
<li><a href="http://www.metal-archives.com/" target="_blank">Encyclopaedia Metallum</a>: è il database di musica metal più ampio che conosca. È possibile mostrare l&#8217;<a href="http://www.metal-archives.com/browseG.php?g=prog" target="_blank">elenco</a> di tutte le band progressive metal contenute nel database, sono qualche migliaio!</li>
<li><a href="http://it.wikipedia.org/" target="_blank">Wikipedia</a>: anche se può sembrare scontato, Wikipedia IT è davvero ben fornita di voci riguardanti band musicali. Spesso è in grado di fornirci informazioni anche molto interessanti che in genere è difficile trovare in giro.</li>
</ul>
<img src="http://feeds.feedburner.com/~r/wirgilio/blog/~4/v6SUUGGrlN4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wirgilio.it/blog/2010/06/07/guida-al-progressive-metal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.wirgilio.it/blog/2010/06/07/guida-al-progressive-metal/</feedburner:origLink></item>
		<item>
		<title>Come accedere facilmente a The Pirate Bay dall’Italia</title>
		<link>http://feedproxy.google.com/~r/wirgilio/blog/~3/yF444r4eDpA/</link>
		<comments>http://www.wirgilio.it/blog/2010/06/03/come-accedere-facilmente-a-the-pirate-bay-dallitalia/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 13:10:06 +0000</pubDate>
		<dc:creator>Ale152</dc:creator>
				<category><![CDATA[Informatica]]></category>

		<guid isPermaLink="false">http://www.wirgilio.it/blog/?p=1356</guid>
		<description><![CDATA[Ormai è da quasi due anni che il noto motore di ricerca dei torrent The Pirate Bay non risulta accessibile dall&#8217;Italia. I maggiori ISP ne hanno infatti bloccato l&#8217;accesso, come è stato spiegato nel blog di The Pirate Bay. Vorrei precisare che scaricare materiale non protetto da copyright tramite torrent, P2P e altri sistemi di [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/06/the_pirate_bay_logosvg.png"><img class="alignright size-medium wp-image-1357" title="the_pirate_bay_logosvg" src="http://www.wirgilio.it/blog/wp-content/uploads/2010/06/the_pirate_bay_logosvg-264x300.png" alt="" width="200" height="228" /></a>Ormai è da quasi due anni che il noto motore di ricerca dei torrent <em>The Pirate Bay</em> non risulta accessibile dall&#8217;Italia. I maggiori ISP ne hanno infatti bloccato l&#8217;accesso, come è stato spiegato nel blog di <em>The Pirate Bay</em>.</p>
<p>Vorrei precisare che scaricare materiale <em>non</em> protetto da copyright tramite torrent, P2P e altri sistemi di file sharing <strong>NON COSTITUISCE REATO</strong>.</p>
<p>Per accedere a <em>The Pirate Bay</em> sono possibili <a href="http://piratebayitalia.com/" target="_blank">diverse soluzioni</a>, quella che propongo in questo articolo è quella di accedervi tramite il servizio offerto da <a href="http://anonymouse.org/" target="_blank"><em>Anonymouse</em></a>:</p>
<p><a href="http://anonymouse.org/cgi-bin/anon-www_de.cgi/http://thepiratebay.org/" target="_blank"><strong>http://anonymouse.org/cgi-bin/anon-www_de.cgi/http://thepiratebay.org/</strong></a></p>
<p><em>Anonymouse</em> è un servizio che permette di navigare in internet senza lasciare alcuna traccia delle nostre informazioni personali. Quando vi collegate a <em>The Pirate Bay</em> non siete voi realmente che effettuate l&#8217;accesso, ma è <em>Anonymouse</em> che lo fa per voi, restituendovi il contenuto della pagina.<br />
La navigazione tramite <em>Anonymouse</em> può risultare più lenta della navigazione diretta, ma nel caso di download di piccoli file, come sono i <em>.torrent</em>, non è certo un problema.</p>
<img src="http://feeds.feedburner.com/~r/wirgilio/blog/~4/yF444r4eDpA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wirgilio.it/blog/2010/06/03/come-accedere-facilmente-a-the-pirate-bay-dallitalia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.wirgilio.it/blog/2010/06/03/come-accedere-facilmente-a-the-pirate-bay-dallitalia/</feedburner:origLink></item>
		<item>
		<title>Lettere accentate maiuscole con Caps Lock attivo su Windows</title>
		<link>http://feedproxy.google.com/~r/wirgilio/blog/~3/9Af5nlKB2Us/</link>
		<comments>http://www.wirgilio.it/blog/2010/05/29/lettere-accentate-maiuscole-con-caps-lock-attivo-su-windows/#comments</comments>
		<pubDate>Sat, 29 May 2010 14:01:59 +0000</pubDate>
		<dc:creator>Ale152</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[scorciatoie tastiera]]></category>

		<guid isPermaLink="false">http://www.wirgilio.it/blog/?p=1340</guid>
		<description><![CDATA[Per qualche strano ed arcano motivo, se si attiva il Caps Lock sulle tastiere di Windows le lettere accentate restano minuscole. Quindi se provate a scrivere &#8220;cioè&#8221; in maiuscolo, ottenete un orripilante &#8220;CIOè&#8221;. Per scrivere correttamente &#8220;CIOÈ&#8221; bisogna aprire la mappa caratteri, cercare  la lettera &#8220;È&#8221; nell&#8217;elenco e incollarla nel testo. In alternativa, se si [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/05/capslock.jpg"><img class="alignright size-medium wp-image-1349" title="capslock" src="http://www.wirgilio.it/blog/wp-content/uploads/2010/05/capslock-300x200.jpg" alt="" width="245" height="163" /></a>Per qualche strano ed arcano motivo, se si attiva il Caps Lock sulle tastiere di Windows le lettere accentate restano minuscole. Quindi se provate a scrivere &#8220;cioè&#8221; in maiuscolo, ottenete un orripilante &#8220;CIOè&#8221;. Per scrivere correttamente &#8220;CIOÈ&#8221; bisogna aprire la mappa caratteri, cercare  la lettera &#8220;È&#8221; nell&#8217;elenco e incollarla nel testo.<br />
In alternativa, se si conosce il codice ASCII della lettera &#8220;È&#8221;, basta premere ALT+212, ma è comunque una scocciatura.</p>
<p>Tramite un&#8217;applicazione della Microsoft, <em>Keyboard Layout Creator</em>, è possibile modificare il layout della tastiera per riempire tutti quei &#8220;buchi&#8221; a cui è soggetto il layout tradizionale, come ad esempio le accentate maiuscole. Vediamo come fare.</p>
<p>Scarichiamo e installiamo il software da questo indirizzo:<br />
<strong><a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=8BE579AA-780D-4253-9E0A-E17E51DB2223&amp;displaylang=en" target="_blank"><em>Keyboard Layout Creator<br />
</em></a></strong><a href="http://www.google.com/search?hl=en&amp;lr=lang_en&amp;q=microsoft+keyboard+layout+creator" target="_blank"><em>(Link alternativo)</em></a><strong><a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=8BE579AA-780D-4253-9E0A-E17E51DB2223&amp;displaylang=en" target="_blank"><em></em></a></strong></p>
<p>Una volta aperto il programma, carichiamo il layout standard italiano da <em>File -&gt; Load Existing Keyboard&#8230; -&gt; Italiano</em>.<br />
Cliccando sulle varie checkbox sulla sinistra possiamo vedere come varia il layout quando premiamo ctrl, alt, shift e le varie combinazioni. Clicchiamo su <em>Show the Caps Lock</em> e vediamo che le lettere accentate restano identiche a quando il Caps Lock è disattivato. Clicchiamo allora sulle lettere accentate e sostituiamole con le relative maiuscole, ossia: &#8220;À È Ì Ò Ù&#8221;.</p>
<p><a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/05/layout.png"><img class="alignnone size-full wp-image-1341" title="layout" src="http://www.wirgilio.it/blog/wp-content/uploads/2010/05/layout.png" alt="" width="452" height="208" /></a></p>
<p>Oltre a questa piccola modifica, possiamo personalizzare il layout della tastiera a nostro piacimento, aggiungendo simboli che utilizziamo spesso e che non sono presenti nel layout standard. Come potete vedere, infatti, i simboli associati al tasto AltGr sono appena cinque e abbiamo un&#8217;intera tastiera da poter personalizzare.</p>
<p><a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/05/layout2.png"><img class="alignnone size-full wp-image-1342" title="layout2" src="http://www.wirgilio.it/blog/wp-content/uploads/2010/05/layout2.png" alt="" width="464" height="210" /></a></p>
<p>Una volta terminate le modifiche, per poter applicare il nuovo layout, dobbiamo compilarlo. Clicchiamo su <em>Project -&gt; Build DLL and Setup Package</em>. Ci verrà chiesto di modificare il nome del layout se non lo abbiamo già fatto. Clicchiamo su <em>Sì</em> e inseriamo un nome per il layout. Clicchiamo su <em>Ok</em>, poi su <em>No</em> alla richiesta di vedere il file di log e infine su <em>Sì</em> alla richiesta di aprire la cartella in cui è stato creato il file di installazione.</p>
<p>All&#8217;interno della cartella che è stata creata, apriamo il file <em>setup.exe</em> e completiamo l&#8217;installazione. Una volta terminata il nuovo layout verrà installato sul nostro sistema e dovremo poi impostarlo come layout predefinito. Dal <em>Pannello di Controllo</em> apriamo la finestra di configurazione <em>Paese e lingue</em>, da cui selezioniamo la scheda <em>Tastiere e lingue -&gt; Cambia tastiere</em>. Nella scheda <em>Generale</em> selezioniamo il nostro layout sotto la voce <em>Lingua di input predefinita</em> e infine clicchiamo su <em>Ok</em>.</p>
<p>A questo punto riavviamo il computer e la configurazione del nostro layout sarà finalmente completata.</p>
<p>Per i meno esperti che non vogliono scaricare il <em>Keyboard Layout Creator </em>per creare il proprio layout, possono scaricare l&#8217;installer già compilato da me di un layout con le sole maiuscole accentate modificate.<br />
<strong><a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/05/Layout_Caps.zip">Download &#8211; Layout_Caps.zip</a></strong></p>
<p>Una volta estratto ed installato dovete comunque impostarlo come layout predefinito per poterlo utilizzare.</p>
<p>Per chi fosse interessato ad un layout un po&#8217; più complesso e personalizzato, potete utilizzare il seguente, che è molto pratico ed è stato realizzato da <a href="http://daviderizzo.net/blog/" target="_blank"><em>Davide</em></a>:<br />
<strong><a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/05/ITCustom.zip">Download &#8211; ITCustom.zip</a></strong></p>
<img src="http://feeds.feedburner.com/~r/wirgilio/blog/~4/9Af5nlKB2Us" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wirgilio.it/blog/2010/05/29/lettere-accentate-maiuscole-con-caps-lock-attivo-su-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.wirgilio.it/blog/2010/05/29/lettere-accentate-maiuscole-con-caps-lock-attivo-su-windows/</feedburner:origLink></item>
		<item>
		<title>Pain of Salvation – Beyond the Pale</title>
		<link>http://feedproxy.google.com/~r/wirgilio/blog/~3/TQ_3CGZy0dA/</link>
		<comments>http://www.wirgilio.it/blog/2010/05/24/pain-of-salvation-beyond-the-pale/#comments</comments>
		<pubDate>Mon, 24 May 2010 19:40:01 +0000</pubDate>
		<dc:creator>Ale152</dc:creator>
				<category><![CDATA[Musica]]></category>
		<category><![CDATA[Progressive Metal]]></category>

		<guid isPermaLink="false">http://www.wirgilio.it/blog/?p=1337</guid>
		<description />
			<content:encoded><![CDATA[<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/KCE0h5Da5R4&amp;hl=it_IT&amp;fs=1&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/KCE0h5Da5R4&amp;hl=it_IT&amp;fs=1&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<img src="http://feeds.feedburner.com/~r/wirgilio/blog/~4/TQ_3CGZy0dA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wirgilio.it/blog/2010/05/24/pain-of-salvation-beyond-the-pale/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.wirgilio.it/blog/2010/05/24/pain-of-salvation-beyond-the-pale/</feedburner:origLink></item>
		<item>
		<title>Escher comic</title>
		<link>http://feedproxy.google.com/~r/wirgilio/blog/~3/iJSpEFHH2mY/</link>
		<comments>http://www.wirgilio.it/blog/2010/05/12/escher-comic/#comments</comments>
		<pubDate>Wed, 12 May 2010 20:15:14 +0000</pubDate>
		<dc:creator>Ale152</dc:creator>
				<category><![CDATA[Humor]]></category>

		<guid isPermaLink="false">http://www.wirgilio.it/blog/?p=1332</guid>
		<description><![CDATA[Questa vignetta in pieno stile escheriano è meravigliosa .]]></description>
			<content:encoded><![CDATA[<p>Questa vignetta in pieno stile escheriano è meravigliosa <img src='http://www.wirgilio.it/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p><a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/05/comic.jpg"><img class="alignnone size-full wp-image-1333" title="comic" src="http://www.wirgilio.it/blog/wp-content/uploads/2010/05/comic.jpg" alt="" width="489" height="294" /></a></p>
<img src="http://feeds.feedburner.com/~r/wirgilio/blog/~4/iJSpEFHH2mY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wirgilio.it/blog/2010/05/12/escher-comic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.wirgilio.it/blog/2010/05/12/escher-comic/</feedburner:origLink></item>
		<item>
		<title>Recuperare e riparare video MP4 interrotti o cancellati</title>
		<link>http://feedproxy.google.com/~r/wirgilio/blog/~3/ZKmB2drw83c/</link>
		<comments>http://www.wirgilio.it/blog/2010/05/10/recuperare-e-riparare-video-mp4-interrotti-o-cancellati/#comments</comments>
		<pubDate>Mon, 10 May 2010 20:23:10 +0000</pubDate>
		<dc:creator>Ale152</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Guida]]></category>

		<guid isPermaLink="false">http://www.wirgilio.it/blog/?p=1310</guid>
		<description><![CDATA[Quando la registrazione di un video in formato MP4 viene bruscamente interrotta e il file non viene finalizzato, spesso il filmato diventa inutilizzabile. Nelle stesse condizioni ci si può ritrovare se si tenta di recuperare un filmato accidentalmente cancellato: la maggior parte dei dati è recuperata, ma mancando alcune informazioni fondamentali non è possibile riprodurre [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/05/tv-test.png"><img class="alignright size-medium wp-image-1321" title="tv test" src="http://www.wirgilio.it/blog/wp-content/uploads/2010/05/tv-test-300x225.png" alt="" width="257" height="199" /></a>Quando la registrazione di un video in formato MP4 viene bruscamente interrotta e il file non viene finalizzato, spesso il filmato diventa inutilizzabile. Nelle stesse condizioni ci si può ritrovare se si tenta di recuperare un filmato accidentalmente cancellato: la maggior parte dei dati è recuperata, ma mancando alcune informazioni fondamentali non è possibile riprodurre il video.</p>
<p>La prima cosa che si può tentare di fare è cercare di riprodurre il video con un programma un po&#8217; più <em>flessibile</em>, come ad esempio <a href="http://www.videolan.org/vlc/">VLC</a>, per poi salvarlo in un nuovo file. La lista di programmi che è possibile utilizzare per provare a riprodurre il video è pressoché interminabile, ma dopo averne provati 4-5 le speranze calano e si perde fiducia.</p>
<p>Il metodo che intendo spiegare in questo articolo non è proprio semplicissimo, specie per chi non ha mai avuto a che fare con l&#8217;<em>hex editing</em>, ma cercherò di spiegare tutti i passaggi in modo quanto più dattagliato è possibile.</p>
<p>Premetto che non sono un esperto di editing video e la soluzione a cui sono giunto deriva da numerose ricerche su google e sui vari forum dedicati all&#8217;argomento. Inoltre in questa guida utilizzo software per Windows, ma il procedimento può essere seguito con software equivalenti su GNU/Linux.</p>
<p>Vediamo in breve quali sono le operazioni da effettuare per ripristinare un video:</p>
<ol>
<li><strong>Recupero</strong>: qualora il video fosse stato cancellato, la prima cosa da fare è cercare di recuperarlo per poterlo riparare</li>
<li><strong>Riparazione</strong>: la riparazione che tenteremo di effettuare consisterà nel sostiture alcune righe del file danneggiato con quelle di un file funzionante dello stesso tipo</li>
<li><strong>Salvataggio</strong>: una volta riparato il file, ne salveremo una versione riproducibile in un nuovo file MP4</li>
</ol>
<h3>1. Recupero</h3>
<p>Se il nostro problema deriva da una cancellazione accidentale (o non!) del video, la prima cosa da fare è tentare di recuperarlo. È importante notare che quando un file viene &#8220;cancellato&#8221; dal dispositivo, nella maggior parte dei casi non viene realmente eliminato dalla memoria, ma viene &#8220;nascosto&#8221; rendendo lo spazio da lui occupato disponibile per altri file. Se quindi dopo la cancellazione la memoria non è stata più utilizzata, le probabilità di ritrovare il file integro sono abbastanza elevate.</p>
<p>Il programma che ho utilizzato con Windows è <a href="http://www.x-ways.net/winhex/"><strong>WinHex</strong></a>, disponibile anche in versione free. Su GNU/Linux è disponibile una valida alternativa che è <a href="http://www.cgsecurity.org/wiki/PhotoRec"><strong>PhotoRec</strong></a>.<br />
Da <em>Strumenti -&gt; Apri unità disco</em> selezioniamo la nostra memoria nel gruppo <em>Unità logiche</em>. Se non dovesse aprirsi la finestra che permette di esplorare le cartelle, visualizziamola tramite <em>Visualizza -&gt; Mostra -&gt; Esplora cartella</em>. Tramite questa finestra possiamo accedere alla cartella contenente il file cancellato, che è possibile recuperare semplicemente tramite <em>Click destro sul file -&gt; Recupera/Copia</em>. Se il file dovesse essere contrassegnato da un&#8217;icona con una <strong><span style="color: #ff0000;">X</span></strong> e dimensioni di pohi kB, il suo recupero potrebbe diventare molto più complicato. Lo stesso vale se questo non dovesse essere affatto presente nella lista di file. In questo caso WinHex mette a disposizione degli strumenti, accessibili tramite <em>Strumenti -&gt; Utilità disco</em> sui quali però non mi soffermerò.</p>
<h3>2. Riparazione</h3>
<p>Veniamo ora alla parte più interessante di questa guida. In questa fase avremo bisogno di un editor esadecimale; potete utilizzare ancora WinHex se siete su Windows, oppure una qualsiasi alternativa come <a href="http://sourceforge.net/projects/shed">Shed</a> per sistemi GNU/Linux.<br />
Prima di dirvi come procedere è necessario capire innanzitutto come è strutturato un file MP4: una spiegazione dettagliata la potete trovare <a href="http://atomicparsley.sourceforge.net/mpeg-4files.html">QUI</a>; in breve esso è costituito da una serie di <strong>atom</strong>, che sono una specie di <em>tag</em> contenenti informazioni sui video. Ogni atom è costituito da 8 byte (caratteri): 4 byte per la sua dimensione (in giallo, nella foto) e altri 4 per il nome (in azzurro).</p>
<p><a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/05/atoms2a.jpeg"><img class="alignnone size-full wp-image-1313" title="atoms2a" src="http://www.wirgilio.it/blog/wp-content/uploads/2010/05/atoms2a.jpeg" alt="" width="466" height="114" /></a></p>
<p>La riparazione che tenteremo di effettuare consiste nel copiare l&#8217;atom di nome <strong>esds</strong> da un filmato funzionante a quello danneggiato.<br />
Apriamo con un editor esadecimale un filmato girato con lo stesso dispositivo del video danneggiato e cerchiamo la stringa <em>esds</em>. Dovrebbe essercene una sola, preceduta dall&#8217;atom <em>mp4v</em> e seguita dall&#8217;atom <em>mdat</em>.<br />
Selezioniamo tutto l&#8217;atom <em>esds</em>, <span style="text-decoration: underline;">partendo da 4 byte prima del nome, fino a 4 byte prima di mdat</span>, come indicato nella figura:</p>
<p><a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/05/winhex.png"><img class="alignnone size-full wp-image-1314" title="winhex" src="http://www.wirgilio.it/blog/wp-content/uploads/2010/05/winhex.png" alt="" width="448" height="298" /></a></p>
<p>Questa stringa va copiata tra l&#8217;atom <em>ftyp</em> e l&#8217;atom <em>esds</em>, nella prima riga del file danneggiato. Ricordate sempre che l&#8217;atom inizia con i 4 byte sulle dimensioni, seguiti dai 4 byte del nome, quindi la stringa va incollata giusto 4 caratteri prima della stringa &#8220;esds&#8221;, come indicato in figura:<a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/05/winhex21.png"></a></p>
<p><a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/05/winhex21.png"><img class="alignnone size-full wp-image-1316" title="winhex2" src="http://www.wirgilio.it/blog/wp-content/uploads/2010/05/winhex21.png" alt="" width="441" height="293" /></a></p>
<p>A questo punto siamo pronti per la fase finale, il salvataggio del video in una versione riproducibile.</p>
<h3>3. Salvataggio</h3>
<p>Per salvare il file in una versione riproducibile utilizzeremo <a href="http://mp4creator.sourceforge.net/"><strong>MP4Creator</strong></a>, un software open source che permette di aprire il <em>bytestream</em> e salvarlo come filmato MP4 riproducibile.<br />
Per prima cosa rinominiamo il file video danneggiato da <em>.mp4</em> a <em>.mp4v</em>, altrimenti il software non riconosce l&#8217;estensione. Collochiamo MP4Creator e il video da riparare nella stessa directory, ed eseguiamo il seguente comando:</p>
<pre>mp4creator --create=<em>fdanneggiato</em>.mp4v --rate=24 --verbose video.mp4
</pre>
<p>Sostituendo ovviamente <em>fdanneggiato</em> e <em>rate</em> con i parametri del nostro video. In realtà MP4Creator supporta l&#8217;opzione <em>&#8211;variable-frame-rate</em>, ma con me non ha funzionato, su nessuno dei due pc con cui ho provato.<br />
Se tutto è andato a buon fine, il nuovo file <em>video.mp4</em> dovrebbe essere visualizzabile correttamente da qualsiasi player video.</p>
<p>L&#8217;unico problema di questo sistema è che non riesce a recuperare l&#8217;audio dei filmati. Ripeto, non essendo un esperto di editing video non so di preciso a cosa sia dovuto il problema, ma sono quasi sicuro se si possa recuperare anche quello.</p>
<p>In conclusione, ho testato questo procedimento sia con un filmato la cui registrazione è stata bruscamente interrotta, sia con un filmato che era stato cancellato da un cellulare (<em>Nokia N82</em>) e in entrambi i casi sono riuscito a recuperare il video con successo.</p>
<img src="http://feeds.feedburner.com/~r/wirgilio/blog/~4/ZKmB2drw83c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wirgilio.it/blog/2010/05/10/recuperare-e-riparare-video-mp4-interrotti-o-cancellati/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		<feedburner:origLink>http://www.wirgilio.it/blog/2010/05/10/recuperare-e-riparare-video-mp4-interrotti-o-cancellati/</feedburner:origLink></item>
		<item>
		<title>Nuova versione del servizio Esis UniNa</title>
		<link>http://feedproxy.google.com/~r/wirgilio/blog/~3/eO0XLpBfdYk/</link>
		<comments>http://www.wirgilio.it/blog/2010/04/29/nuova-versione-del-servizio-esis-unina-2/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 13:22:43 +0000</pubDate>
		<dc:creator>Ale152</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[ESIS]]></category>
		<category><![CDATA[Unina]]></category>

		<guid isPermaLink="false">http://www.wirgilio.it/blog/?p=1297</guid>
		<description><![CDATA[Finalmente è diventata operativa la nuova versione del sito Esis Unina, il servizio che fornisce le funzioni universitarie agli studenti della Federico Secondo di Napoli. Se si prova ad accedere al vecchio indirizzo del sito, viene mostrato un messaggio che informa sull&#8217;esistenza della nuova versione, accessibile tramite questo indirizzo: www.segrepass.unina.it Già dalla prima schermata si [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/04/UNINA.gif"><img class="alignright size-medium wp-image-1304" title="UNINA" src="http://www.wirgilio.it/blog/wp-content/uploads/2010/04/UNINA-300x300.gif" alt="" width="151" height="151" /></a>Finalmente è diventata operativa la nuova versione del sito <em>Esis Unina</em>, il servizio che fornisce le funzioni universitarie agli studenti della Federico Secondo di Napoli.</p>
<p>Se si prova ad accedere al vecchio <a href="http://esis.ceda.unina.it/" target="_blank">indirizzo</a> del sito, viene mostrato un messaggio che informa sull&#8217;esistenza della nuova versione, accessibile tramite questo indirizzo:<br />
<strong><a href="http://www.segrepass.unina.it" target="_blank">www.segrepass.unina.it</a></strong></p>
<p><strong><a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/04/esis11.png"><img class="alignnone size-full wp-image-1300" title="esis1" src="http://www.wirgilio.it/blog/wp-content/uploads/2010/04/esis11.png" alt="" width="474" height="277" /></a><br />
</strong></p>
<p>Già dalla prima schermata si nota, oltre alla grafica estremamente migliorata, il cambio del sistema di login. Prima infatti si poteva accedere al servizio solo tramite matricola e pin (con la matricola case sensitive che faceva differenza tra <em>N123</em> e <em>n123</em>), ora è possibile utilizzare le varie combinazioni matricola/pin, codice fiscale/pin, username/password.</p>
<p>La prima enorme differenza rispetto alla prima versione che devo segnalare, è la perfetta fruibilità del sito con Firefox. Non ho ancora avuto il tempo di provare il servizio con altri browser, ma dato che l&#8217;accessibilità era proprio il primo problema del vecchio Esis, immagino (<em>spero</em>) che abbiano lavorato molto su questo aspetto. (Basti ricordare che la precedente versione si apriva in un pop-up e <em>tutti</em> i browser bloccano di default l&#8217;apertura di pop-up!)</p>
<p>Una rapida occhiata al codice HTML delle pagine mostra purtroppo che questo non rispetta gli standard del <a href="http://www.w3.org/"><em>W3C</em></a> (l&#8217;ente che si occupa dell&#8217;accessibilità e degli standard dei siti web), infatti prima della dichiarazione del <em>doctype</em> vi sono una ventina di caratteri &#8220;a capo&#8221; che non permettono la validazione del <a href="http://validator.w3.org/check?uri=http%3A%2F%2Fwww.segrepass.unina.it&amp;charset=%28detect+automatically%29&amp;doctype=Inline&amp;group=0" target="_blank"><em>W3C Validator</em></a>.</p>
<p>Una volta effettuato l&#8217;accesso è possibile notare la nuova struttura dei menù, che è davvero molto chiara e intuitiva.<br />
Nel menù <em>Dati Carriera</em> sono disponibili una serie di funzioni di riepilogo sui dati universitari molto utili, come il riepilogo delle spese universitarie e quello sugli esami e sui crediti, che calcola automaticamente diversi tipi di media (aritmetica, ponderata, in trentesimi e in centodecimi).</p>
<p>Per quanto riguarda la prenotazione degli esami non posso ancora testarla, perché i miei professori non hanno ancora pubblicato le date d&#8217;esame sul sito, quindi non posso effettuare prenotazioni.<br />
Da quanto c&#8217;è scritto, il sistema dovrebbe controllare automaticamente le propedeuticità degli esami permettendo di prenotare solo gli esami che è possibile sostenere.</p>
<p>Inoltre nel menù è presente una nuova voce: <em>Certificati</em>. Purtroppo non è possibile stampare dei veri e propri certificati tramite il proprio computer, infatti in questa sezione viene visualizzato il messaggio: &#8220;<em>E&#8217; possibile stampare i certificati che visualizzi in questa sezione solo dalle postazioni situate nelle aule multimediali.</em>&#8220;. Non so se questa scelta sia stata fatta per motivi legali o altro, ma è comunque possibile stampare gli stessi documenti sottoforma di autocertificazioni.</p>
<p>Nel complesso, il servizio è stato notevolmente migliorato sotto molti aspetti. Prima del verdetto finale, però, dobbiamo aspettare la prossima sessione d&#8217;esami, quando i server verranno stressati dalle migliaia di richieste di prenotazione esame e ci sarà un&#8217;altissima probabilità di malfunzionamenti.</p>
<img src="http://feeds.feedburner.com/~r/wirgilio/blog/~4/eO0XLpBfdYk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wirgilio.it/blog/2010/04/29/nuova-versione-del-servizio-esis-unina-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.wirgilio.it/blog/2010/04/29/nuova-versione-del-servizio-esis-unina-2/</feedburner:origLink></item>
		<item>
		<title>Benzina</title>
		<link>http://feedproxy.google.com/~r/wirgilio/blog/~3/aCGlHzZzFXg/</link>
		<comments>http://www.wirgilio.it/blog/2010/04/28/benzina/#comments</comments>
		<pubDate>Wed, 28 Apr 2010 15:16:19 +0000</pubDate>
		<dc:creator>Ale152</dc:creator>
				<category><![CDATA[Humor]]></category>

		<guid isPermaLink="false">http://www.wirgilio.it/blog/?p=1290</guid>
		<description><![CDATA[Ma la derivata del prezzo della benzina, quando cavolo diventa negativa?]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.wirgilio.it/blog/wp-content/uploads/2010/04/cara_benzina.jpg"><img class="alignright size-medium wp-image-1291" title="cara_benzina" src="http://www.wirgilio.it/blog/wp-content/uploads/2010/04/cara_benzina-300x300.jpg" alt="" width="131" height="131" /></a>Ma la derivata del prezzo della benzina, quando cavolo diventa negativa?</p>
<img src="http://feeds.feedburner.com/~r/wirgilio/blog/~4/aCGlHzZzFXg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wirgilio.it/blog/2010/04/28/benzina/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.wirgilio.it/blog/2010/04/28/benzina/</feedburner:origLink></item>
		<item>
		<title>Criteri di normalità</title>
		<link>http://feedproxy.google.com/~r/wirgilio/blog/~3/xvb4PSw4IMw/</link>
		<comments>http://www.wirgilio.it/blog/2010/04/25/criterinormalita/#comments</comments>
		<pubDate>Sun, 25 Apr 2010 10:11:11 +0000</pubDate>
		<dc:creator>none</dc:creator>
				<category><![CDATA[Psicologia]]></category>

		<guid isPermaLink="false">http://www.wirgilio.it/blog/?p=1288</guid>
		<description><![CDATA[Ecco quelli riconosciuti dal &#8220;Manuale di Psicopatologia Generale&#8221; di Colombo G. - normalità in quanto salute, opposta a malattia; - normalità in quanto media statistica; - normalità in quanto ideale, utopia da realizzare a cui avvicinarsi; - normalità in quanto processo dinamico, capacità di tornare ad un certo equilibrio. Confusione? Cerchiamo di schiarire le idee [...]]]></description>
			<content:encoded><![CDATA[<p>Ecco quelli riconosciuti dal &#8220;Manuale di Psicopatologia Generale&#8221; di Colombo G.</p>
<p>- normalità in quanto salute, opposta a malattia;</p>
<p>- normalità in quanto media statistica;</p>
<p>- normalità in quanto ideale, utopia da realizzare a cui avvicinarsi;</p>
<p>- normalità in quanto processo dinamico, capacità di tornare ad un certo equilibrio.</p>
<p>Confusione? Cerchiamo di schiarire le idee su cos&#8217;è allora la patologia ( &#8220;Psicologia clinica&#8221; di Hansell J. e Damour L. )</p>
<p>- ricerca di aiuto ( rientrano in questa categoria anche le persone sotto una naturale condizione di stress );</p>
<p>- irrazionalità/pericolosità ( ma l&#8217;innamoramento non è irrazionale? );</p>
<p>- devianza ( Einstein, Gandhi, Shakespeare, Micheal Jordan&#8230; );</p>
<p>- distress emozionale  ( ci sono disturbi di personalità, <a href="http://it.wikipedia.org/wiki/Disturbo_antisociale_di_personalit%C3%A0">antisociale</a> per esempio, in cui raramente si riporta distress emozionale e poi ci sono comportamenti naturali, come l&#8217;elaborazione del lutto, che rientrano in questa categoria );</p>
<p>- danno significativo ( diversi danni alle funzioni psicologiche sono causati da lesioni o traumi fisici e non psichici ).</p>
<p>Mezza provocazione: non sarebbe più etimologicamente corretto l&#8217;uso della parola &#8220;natura&#8221; dell&#8217;abuso di &#8220;normale&#8221;?</p>
<img src="http://feeds.feedburner.com/~r/wirgilio/blog/~4/xvb4PSw4IMw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wirgilio.it/blog/2010/04/25/criterinormalita/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.wirgilio.it/blog/2010/04/25/criterinormalita/</feedburner:origLink></item>
	</channel>
</rss>
