<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Nerd Stuff</title>
	<atom:link href="http://alfredodinapoli.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://alfredodinapoli.wordpress.com</link>
	<description>Simple is better than complex</description>
	<lastBuildDate>Mon, 23 Feb 2009 19:21:46 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>it</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='alfredodinapoli.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/a2626d2021a5953ab2a1e097c2116598?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Nerd Stuff</title>
		<link>http://alfredodinapoli.wordpress.com</link>
	</image>
			<item>
		<title>Don&#8217;t Panic!</title>
		<link>http://alfredodinapoli.wordpress.com/2009/02/23/dont-panic/</link>
		<comments>http://alfredodinapoli.wordpress.com/2009/02/23/dont-panic/#comments</comments>
		<pubDate>Mon, 23 Feb 2009 19:18:34 +0000</pubDate>
		<dc:creator>Alfredo Di Napoli</dc:creator>
				<category><![CDATA[class Python:]]></category>
		<category><![CDATA[controllare aggiornamenti sito]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://alfredodinapoli.wordpress.com/?p=82</guid>
		<description><![CDATA[Salve ragazzi,
c&#8217;è una ristretta (ma neanche tanto) cerchia di persone, che rispondono al nome di studenti universitari, che ogni mese, dopo aver sostenuto gli n-mila esami del caso, attendono con trepidazione l&#8217;uscita dei risultati.
Molti docenti pubblicano gli esiti degli esami sul loro sito, che il più delle volte è spartano ma funzionale&#8230;
Quante volte siete stati [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alfredodinapoli.wordpress.com&blog=5741490&post=82&subd=alfredodinapoli&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Salve ragazzi,<br />
c&#8217;è una ristretta (ma neanche tanto) cerchia di persone, che rispondono al nome di studenti universitari, che ogni mese, dopo aver sostenuto gli n-mila esami del caso, attendono con trepidazione l&#8217;uscita dei risultati.<br />
Molti docenti pubblicano gli esiti degli esami sul loro sito, che il più delle volte è spartano ma funzionale&#8230;<br />
Quante volte siete stati a fare &#8220;refresh&#8221; sul sito aspettando l&#8217;uscita dei risultati?<br />
Per voi (e per me) ho creato questo semplicissimo script che controlla, ad intervalli regolari, che una pagina web sia stata aggiornata.. comodo no?<br />
Ovviamente si può migliorare, ad esempio gestendo un log di ultime modifiche, in modo che il programma tenga lo storico!<br />
Nota: Non funziona su siti con strutture complesse, tipo cgi based e company<br />
Ecco il codice:</p>
<pre>
<pre>
<pre class="brush: python;">
# Don't Panic! - Scritto da Alfredo Di Napoli - 2009

import urllib
import sys
import re
import time

try:
   
    sito = urllib.urlopen(sys.argv[1])
   
except IOError:
   
    print &quot;Indirizzo non valido o irraggiungibile.&quot;
    sys.exit(1)
   
current = re.search(&quot;Last-Modified.*\r&quot;,sito.info().__str__()).group(0)
ultima_modifica = current

print &quot;Don't Panic - v_0.1\n&quot;
try:
   
    while current == ultima_modifica:
        exp = re.search(&quot;Last-Modified.*\r&quot;,sito.info().__str__())
        ultima_modifica = str(exp.group(0))
        print ultima_modifica
        time.sleep(10)
     
    print &quot;C'e' stata una modifica!&quot;   
except KeyboardInterrupt:
    print &quot;Grazie per aver usato Don't Panic.&quot;
</pre>
</pre>
</pre>
<p>Spero lo troviate utile, anzi, fatemi sapere se vi ha funzionato visto che l&#8217;ho codato </p>
<p>in 10 minuti e oltretutto a casa mia era andata via la corrente :P</p>
<p><strong>Usage: python dont_panic.py  url_sito </strong></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alfredodinapoli.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alfredodinapoli.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alfredodinapoli.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alfredodinapoli.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alfredodinapoli.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alfredodinapoli.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alfredodinapoli.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alfredodinapoli.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alfredodinapoli.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alfredodinapoli.wordpress.com/82/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alfredodinapoli.wordpress.com&blog=5741490&post=82&subd=alfredodinapoli&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://alfredodinapoli.wordpress.com/2009/02/23/dont-panic/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a3655609bc9b50d8446a08f31bc9c519?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Alfredo Di Napoli</media:title>
		</media:content>
	</item>
		<item>
		<title>How to finally fix that damned MySQLdb module on Leopard</title>
		<link>http://alfredodinapoli.wordpress.com/2009/01/18/how-to-finally-fix-that-damned-mysqldb-module-on-leopard/</link>
		<comments>http://alfredodinapoli.wordpress.com/2009/01/18/how-to-finally-fix-that-damned-mysqldb-module-on-leopard/#comments</comments>
		<pubDate>Sun, 18 Jan 2009 10:50:41 +0000</pubDate>
		<dc:creator>Alfredo Di Napoli</dc:creator>
				<category><![CDATA[class Python:]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[errore import]]></category>
		<category><![CDATA[errore installazione]]></category>
		<category><![CDATA[leopard]]></category>
		<category><![CDATA[mac os]]></category>
		<category><![CDATA[mysqldb]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://alfredodinapoli.wordpress.com/?p=74</guid>
		<description><![CDATA[Ciao ragazzi,
no, non mi sono impazzito, l&#8217;articolo è in italiano  
Oggi voglio parlarvi di un mio esperimento portato a termine con successo. Molti di voi (spero nessuno) avranno perso il sonno nel tentare di far funzionare su leopard il modulo python MySQLdb, assolutamente indispensabile per gestire i database mysql con python, altrettanto indispensabile per [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alfredodinapoli.wordpress.com&blog=5741490&post=74&subd=alfredodinapoli&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><span style="color:#000000;">Ciao ragazzi,</span></p>
<p><span style="color:#000000;">no, non mi sono impazzito, l&#8217;articolo è in italiano <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </span></p>
<p><span style="color:#000000;">Oggi voglio parlarvi di un mio esperimento portato a termine con successo. Molti di voi (spero nessuno) avranno perso il sonno nel tentare di far funzionare su leopard il modulo python MySQLdb, assolutamente indispensabile per gestire i database mysql con python, altrettanto indispensabile per usare Django.</span></p>
<p><span style="color:#ff0000;">Nota ai naviganti:</span>  <span style="color:#000000;"><span style="color:#000000;">Se siete su Leopard e dovete ancora installare mysql, allora installate la versione </span><strong><span style="color:#000000;">mysql-5.0.67-osx10.4-universal.tar. gz</span></strong><span style="color:#000000;">, perchè pare che risolva i problemi di architettura. </span></span></p>
<p><span style="color:#000000;">Cosa centra l&#8217;architettura? Il problema nasce dal fatto che è molto facile avere installata una versione di python a 32 bit, il server apache della apple a 64 bit e mysql o a 64 o a 32bit.. di conseguenza quando si prova ad importare il modulo di incappa nel seguente errore:</span></p>
<pre class="brush: python;">
Traceback (most recent call last):
File “”, line 1, in
File “MySQLdb/__init__.py”, line 19, in
import _mysql
File “build/bdist.macosx-10.5-i386/egg/_mysql.py”, line 7, in
File “build/bdist.macosx-10.5-i386/egg/_mysql.py”, line 6, in __bootstrap__
ImportError: dynamic module does not define init function (init_mysql)
&gt;&gt;&gt;
</pre>
<p><span style="color:#000000;">Ma andiamo con ordine.</span></p>
<p><strong><span style="color:#000000;">Installazione e configurazione</span></strong></p>
<p><span style="color:#000000;">Ci sono un sacco di guide sull&#8217; installazione, che vi riporto come references a fine articolo, ma vediamo speditamente cosa fare. Prima di tutto scaricate il modulo dal sito ufficiale di </span><a href="http://sourceforge.net/project/showfiles.php?group_id=22307&amp;package_id=15775"><span style="color:#000000;">MySQLdb</span></a><span style="color:#000000;">, decomprimetelo ed entrate nella cartella. Per prima cosa dovete aprire il file</span> <span style="color:#008000;">_mysql.c</span> <span style="color:#000000;">e  commentare le seguenti linee:</span></p>
<p><span style="color:#000000;">37 //#ifndef uint <br />
38 //#define uint unsigned int <br />
39 //#endif </span></p>
<p><span style="color:#000000;">dove i numeri sono i numeri di riga per una facile individuazione. Dopodichè cambiate queste altre:</span></p>
<p><span style="color:#ff0000;">484	unit port = MYSQL_PORT;</span></p>
<p><span style="color:#000000;">deve diventare:</span><span style="color:#008000;"> </span><span style="color:#008000;">unsigned int port = MYSQL_PORT; </span><br />
<span style="color:#ff0000;">485	unit client_flag = 0; </span></p>
<p><span style="color:#000000;">deve diventare: </span><span style="color:#008000;">unsigned int client_flag = 0;</span></p>
<p><span style="color:#000000;"><span style="color:#000000;">Bene. Ora aprite il file</span> <span style="color:#008000;">site.cfg</span> e<span style="color:#000000;"> cambiate:</span></span></p>
<p><span style="color:#000000;"><span style="color:#ff0000;">threadsafe = True</span> </span></p>
<p><span style="color:#000000;">in</span></p>
<p><span style="color:#000000;"><span style="color:#008000;">threadsafe = False</span></span></p>
<p><span style="color:#000000;">Ora scaricatevi la versione di mysql che vi ho consigliato qualche riga fa ma</span> <span style="color:#ff0000;"><strong>NON INSTALLATELA! </strong><span style="color:#000000;">Piuttosto scompattatela in una cartella a vostro piacere: (es. /Users/vostrahome/mysql/).</span></span></p>
<p><span style="color:#ff0000;"><span style="color:#000000;"><span style="color:#000000;">A questo punto sempre nel file</span> <span style="color:#008000;">site.cfg<span style="color:#000000;"> a<span style="color:#000000;">ggiungete (o modificate se c&#8217;è) la seguente riga:</span></span></span></span></span></p>
<p> </p>
<pre class="brush: python;">
mysql_config = /Users/vostrahome/mysql/bin/mysql_config
</pre>
<p><span style="color:#ff0000;"><span style="color:#000000;"><span style="color:#008000;"><span style="color:#000000;">dove /Users/vostrahome/mysql è la cartella dove avete decompresso la versione scaricata di mysql.</span></span></span></span></p>
<p><span style="color:#ff0000;"><span style="color:#000000;"><span style="color:#008000;"><span style="color:#000000;">Perfetto! Adesso la procedura d&#8217;installazione dovrebbe andare per il meglio. Lanciate da shell:</span></span></span></span></p>
<pre class="brush: python;">
python setup.py build
sudo python setup.py install
</pre>
<p><span style="color:#000000;">E dovrebbe filare tutto liscio. Adesso create un soft link in questo modo:</span></p>
<pre class="brush: python;">
sudo ln -s /usr/local/mysql/lib/ /usr/local/mysql/lib/mysql
</pre>
<p><span style="color:#000000;">Poichè siamo su Mac o non su Linux. Di solito a questo punto dovreste avere una versione di MySQLdb funzionante. Per me non è stato così. Nel mio caso ha funzionato copiare la cartella lib contenuta in /Users/vostrahome/mysql dentro la mia directory di installazione di mysql, cioè /usr/local/mysql/lib/.</span></p>
<p><span style="color:#000000;">Per chi non fosse pratico di permessi e cose varie, prima fate un backup delle vecchie librerie :</span></p>
<pre class="brush: python;">
cd /usr/local/mysql/
sudo cp -R lib lib.bak
cd lib
sudo rm *
cd ..
sudo rmdir lib
sudo cp -R /Users/vostrahome/mysql/lib /usr/local/mysql/
</pre>
<p>A questo punto se tutto è andato bene dovreste avere il vostro MySQLdb funzionante!</p>
<p>Ogni macchina è diversa dalle altre, quindi c&#8217;è la possibilità che la procedura che vi ho descritto possa non funzionare sui vostri computer. Per questo vi lascio dei link utili dove viene spiegato lo stesso procedimento ma con approcci diversi. Alla prossima, ciao!</p>
<p>Alfredo</p>
<p><strong>REFERENCES:</strong></p>
<p><a href="http://forums.mysql.com/read.php?50,175059,217516#msg-217516">Problems in Building 1.2.2 on Mac Os 10.5</a></p>
<p><a href="http://www.davidcramer.net/code/57/mysqldb-on-leopard.html">David Cramer.net &#8211; MySQLdb on Leopard</a></p>
<p><a href="http://antoniocangiano.com/2007/12/22/how-to-install-django-with-mysql-on-mac-os-x/">Antonio Cangiano &#8211; How to install Django with MySQLdb on MacOSx</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alfredodinapoli.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alfredodinapoli.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alfredodinapoli.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alfredodinapoli.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alfredodinapoli.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alfredodinapoli.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alfredodinapoli.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alfredodinapoli.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alfredodinapoli.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alfredodinapoli.wordpress.com/74/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alfredodinapoli.wordpress.com&blog=5741490&post=74&subd=alfredodinapoli&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://alfredodinapoli.wordpress.com/2009/01/18/how-to-finally-fix-that-damned-mysqldb-module-on-leopard/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a3655609bc9b50d8446a08f31bc9c519?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Alfredo Di Napoli</media:title>
		</media:content>
	</item>
		<item>
		<title>PyPills &#8211; Lezione 2 &#8211;  Stream, parsing and many more!</title>
		<link>http://alfredodinapoli.wordpress.com/2009/01/13/pypills-lezione-2-stream-parsing-and-many-more/</link>
		<comments>http://alfredodinapoli.wordpress.com/2009/01/13/pypills-lezione-2-stream-parsing-and-many-more/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 08:20:46 +0000</pubDate>
		<dc:creator>Alfredo Di Napoli</dc:creator>
				<category><![CDATA[class Python:]]></category>
		<category><![CDATA[eseguire comandi di sistema]]></category>
		<category><![CDATA[mac os]]></category>
		<category><![CDATA[nerd stuff]]></category>
		<category><![CDATA[pipelining]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://alfredodinapoli.wordpress.com/?p=56</guid>
		<description><![CDATA[Buongiorno a tutti. Oggi vi voglio parlare di come è fatto un processo. Potete immaginare un processo come una scatola nera o meglio ancora, per chi ha fatto un minimo di elettronica, come un tripolo (sennò cercate transistor su wikipedia).
Un processo nasce, cresce e muore con 3 stream &#8220;attaccati&#8221; ad esso:
-Stdin, anche noto come Standard [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alfredodinapoli.wordpress.com&blog=5741490&post=56&subd=alfredodinapoli&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;"><span style="color:#000000;">Buongiorno a tutti. Oggi vi voglio parlare di come è fatto un processo. Potete immaginare un processo come una scatola nera o meglio ancora, per chi ha fatto un minimo di elettronica, come un tripolo (sennò cercate transistor su wikipedia).</span></p>
<p style="text-align:justify;"><span style="color:#000000;">Un processo nasce, cresce e muore con 3 stream &#8220;attaccati&#8221; ad esso:</span></p>
<p style="text-align:justify;"><span style="color:#000000;">-</span><strong><span style="color:#000000;">Stdin</span></strong><span style="color:#000000;">, anche noto come Standard Input, è lo stream da cui il processo legge gli input provenienti dall&#8217; esterno, tipicamente dall&#8217; utente che l&#8217;ha lanciato o da un altro programma.</span></p>
<p style="text-align:justify;"><span style="color:#000000;">-</span><strong><span style="color:#000000;">Stdout</span></strong><span style="color:#000000;">, anche noto come Standard Output, è lo stream di dati che un processo produce alla fine del suo job, volgarmente detto risultato.</span></p>
<p style="text-align:justify;"><span style="color:#000000;">-</span><strong><span style="color:#000000;">Stderr</span></strong><span style="color:#000000;">, anche noto come Standard Error è lo stream in cui il programma &#8220;vomita&#8221; eventuali codici d&#8217;errore a seguito di un comportamento inaspettato.</span></p>
<p style="text-align:justify;"><span style="color:#000000;">Perchè vi dico tutto questo? Il python nasce come </span><strong><span style="color:#000000;">glue</span></strong><span style="color:#000000;">, come colla, è infatti molto usato come collante tra vari programmi. Fortunatamente per noi esiste una tecnica nota come</span> <a href="http://it.wikipedia.org/wiki/Pipeline">pipelining</a> <span style="color:#000000;">che permette di destinare lo stdout di un processo A come stdin di un altro processo, creano cosi vere e proprie pipeline (catene di montaggio). Chi ha familiarità con il mondo Unix non si stupirà delle mie parole. Un esempio?</span></p>
<p style="text-align:justify;"><span style="color:#000000;">cat /etc/pippo.txt | wc -l </span></p>
<p style="text-align:justify;"><span style="color:#000000;">Cosa abbiamo fatto? Abbiamo letto un file con cat e abbiamo mandato lo stdout di cat in input a wc, che ci ha calcolato il numero di linee del nostro file di testo. Ma ora veniamo al python.</span></p>
<p style="text-align:justify;"><span style="color:#000000;">Su <a href="http://www.python-it.org">Python-it.org</a> si era intavolata una conversazione su come fosse possibile recuperare le informazioni da un file, ad esempio come da un file MP3 fosse possibile recuperare le ID3. L&#8217;utente Flame_Alchemist, che ringrazio, ha fatto osservare che tali info, qualora presenti, risiedono nei primi 128 byte del file Mp3.</span></p>
<p style="text-align:justify;"><span style="color:#000000;">Ecco allora l&#8217;idea: sfruttiamo un tool Unix chiamato hexdump (calma Linuxofili, funziona anche da voi <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  ) che permette di fare il dump esadecimale di qualsiasi file e poi, col nostro amato Python, ci andiamo a recuperare le informazioni che vogliamo. E&#8217; rozzo e probabilmente non lo userete mai, l&#8217;ho scritto solo per farvi vedere due cose:</span></p>
<p style="text-align:justify;"><span style="color:#000000;">-Come sia possibile gestire il pipeline in un programma python</span></p>
<p style="text-align:justify;"><span style="color:#000000;">-Uno studio di caso di come si realizza un banale parser a partire da un dump esadecimale.</span></p>
<pre class="brush: python;">
import sys

import os

class Id3Parser:

    def __init__(self):

        self.input = str.split(str.rstrip(sys.stdin.read()),&quot;\n&quot;)

    def get_char_list(self):

        '''Ritorna il dump cosi come e' stato preso in stdin, ogni carattere

        rappresenta una cifra esadecimale'''

        return self.input

    def get_hex_list(self):

        '''Permette di ottenere una lista con il valore decimale di tutti

        i caratteri esadecimale presi da stdin'''

        hex_list = [self.hexstr2ascii(el) for el in self.input]

        return hex_list

    def get_ascii_list(self):

        '''Questa funzione preso un valore decimale ne trova il corrispettivo

        valore ascii, comprimento la lista in modo che i caratteri non ascii

        (minori di 32 in decimale) facciano da spaziatore tra un carattere

        valido e l'altro'''

        lst =[]

        prev=0

        for el in self.get_hex_list():

            if el &lt; 32 and prev &lt; 32:

                continue

            elif el &lt; 32 and prev &gt; 32:

                lst.append(&quot;00&quot;)

            else:

                lst.append(chr(el))

            prev = el

        return lst

    def hexstr2ascii(self, value):

        '''Questa funzione, preso un qualsiasi valore ascii rappresentante un

        esadecimale (es. '4B') ne trova il corrispettivo valore decimale.'''

        symbol_dict={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,

                     '6':6,'7':7,'8':8,'9':9,

                     'A':10,'B':11,'C':12,'D':13,'E':14,'F':15}

        fst_hex = symbol_dict[value[0]]

        snd_hex = symbol_dict[value[1]]

        return (fst_hex*16 + snd_hex)

    def get_info_list(self):

        '''Questa funzione ritorna una lista delle informazioni sensibili.'''

        lst=[]

        info=&quot;&quot;

        for el in self.get_ascii_list():

            if (el == &quot;00&quot;):

                lst.append(info)

                info=&quot;&quot;

                continue

            else:

                info+=el

        return lst

if __name__ == &quot;__main__&quot;:

    from id3parser import Id3Parser

    parser = Id3Parser()

    print parser.get_info_list()
</pre>
<p><span style="color:#ff0000;">COME SI USA:</span></p>
<p><span style="color:#000000;">Da shell:</span></p>
<p><span style="color:#000000;">$ hexdump -n 128 -v -e &#8216;1/1 &#8220;%02X&#8221; &#8220;\n&#8221;&#8216; &lt;nome_file&gt; | python id3parser.py</span></p>
<p><span style="color:#000000;">dove al posto di nome_file dovete mettere il titolo della canzone.</span></p>
<p style="text-align:justify;"><span style="color:#000000;"><span style="color:#ff0000;">NOTA:</span> Poichè il blog converte gli apici e i doppi apici in backquote, vi invito a riscrivervi tali apici se copiate ed incollate il codice nella shell, altrimenti non funziona (ringrazio Eugenio per la segnalazione).</span></p>
<p style="text-align:justify;"><span style="color:#000000;">Ci sono altri n-mila modi di farlo, mi interessava farlo così per farvi vedere come python sia un valido collante tra processi applicativi.</span></p>
<p><span style="color:#000000;">Vi allego come sempre il codice, alla prossima!</span></p>
<p><span style="color:#000000;">Alfredo Di Napoli</span></p>
<p><span style="color:#000000;">Codice: <a href="http://www.fileden.com/files/2008/10/14/2142989/id3parser.py">id3parser.py</a> </span></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alfredodinapoli.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alfredodinapoli.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alfredodinapoli.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alfredodinapoli.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alfredodinapoli.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alfredodinapoli.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alfredodinapoli.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alfredodinapoli.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alfredodinapoli.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alfredodinapoli.wordpress.com/56/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alfredodinapoli.wordpress.com&blog=5741490&post=56&subd=alfredodinapoli&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://alfredodinapoli.wordpress.com/2009/01/13/pypills-lezione-2-stream-parsing-and-many-more/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a3655609bc9b50d8446a08f31bc9c519?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Alfredo Di Napoli</media:title>
		</media:content>
	</item>
		<item>
		<title>Crittografia pure-python? Si, grazie!</title>
		<link>http://alfredodinapoli.wordpress.com/2009/01/04/crittografia-pure-python-si-grazie/</link>
		<comments>http://alfredodinapoli.wordpress.com/2009/01/04/crittografia-pure-python-si-grazie/#comments</comments>
		<pubDate>Sun, 04 Jan 2009 13:58:36 +0000</pubDate>
		<dc:creator>Alfredo Di Napoli</dc:creator>
				<category><![CDATA[class Python:]]></category>
		<category><![CDATA[blowfish]]></category>
		<category><![CDATA[crittografia in python]]></category>
		<category><![CDATA[efficienza crittografia]]></category>
		<category><![CDATA[leopard]]></category>
		<category><![CDATA[mac os]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://alfredodinapoli.wordpress.com/?p=50</guid>
		<description><![CDATA[Articolo scritto da Simone Ramacci &#8220;Simosito&#8221; e pubblicato prima su python-it.org e poi qui per sua gentile concessione.
&#8220; Oggi vi voglio segnalare l&#8217;implementazione pure-python di due algoritmi abbastanza celebri: Blowfish e Rijndael (per gli amici AES).
Blowfish.py
Grazie all&#8217;impegno di Ivan Voras è possibile utilizzare Blowfish per testi di lunghezza arbitraria.
Esempio (test1a.py)

import blowfish 

from hashlib import sha256

testo=&#34;Ciao, come va?&#34; 

cipher = blowfish.Blowfish(sha256('key').digest()) [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alfredodinapoli.wordpress.com&blog=5741490&post=50&subd=alfredodinapoli&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><span style="color:#ff0000;">Articolo scritto da Simone Ramacci &#8220;Simosito&#8221; e pubblicato prima su </span><a href="http://www.python-it.org"><span style="color:#ff0000;">python-it.org</span></a><span style="color:#ff0000;"> e poi qui per sua gentile concessione.</span></p>
<p>&#8220;<span style="color:#000000;"> Oggi vi voglio segnalare l&#8217;implementazione </span><em><span style="color:#000000;">pure-python</span></em><span style="color:#000000;"> di due algoritmi abbastanza celebri: Blowfish e Rijndael (per gli amici AES).</span></p>
<p><a href="http://ivoras.sharanet.org/projects/blowfish.html"><strong>Blowfish.py</strong></a></p>
<p><span style="color:#000000;">Grazie all&#8217;impegno di Ivan Voras è possibile utilizzare </span><em><span style="color:#000000;">Blowfish</span></em><span style="color:#000000;"> per testi di lunghezza arbitraria.</span></p>
<p><em><span style="color:#008000;">Esempio (test1a.py)</span></em></p>
<pre class="brush: python;">
import blowfish 

from hashlib import sha256

testo=&quot;Ciao, come va?&quot; 

cipher = blowfish.Blowfish(sha256('key').digest()) 

print('Cripto')

#inizializzo CTR 

cipher.initCTR() 

ctxt=cipher.encryptCTR(testo) 

print('DeCripto') 

#idem 

cipher.initCTR() 

txt=cipher.decryptCTR(ctxt) 

print(txt)
</pre>
<p><span style="color:#000000;">Questo semplice codice mostra abbastanza bene l&#8217;uso di questo modulo.<br />
È importante ricordarsi di inizializzare sempre CTR altrimenti si rimane per mesi a sbattere la testa su un errore di encoding molto antipatico.</span></p>
<p><a href="http://jclement.ca/software/pyrijndael/"><strong>Rijndael.py</strong></a></p>
<p><span style="color:#000000;">Jeffrey Clement ci porta invece un simpatico modulo per utilizzare AES</span></p>
<p><em><span style="color:#003300;">Esempio (test2a.py)</span></em></p>
<pre class="brush: python;">
import rijndael as r
from hashlib import sha256
key=sha256('key').digest()
testo=&quot;Ciao, come va?&quot;
print(&quot;Cripto&quot;)
ctxt=r.EncryptData(key,testo)
print(&quot;DeCripto&quot;)
txt=r.DecryptData(key,ctxt)
print(txt)
</pre>
<p><span style="color:#000000;">Questo semplice codice mostra abbastanza bene l&#8217;uso di questo modulo. <br />
Come si può notare non c&#8217;è bisogno di nessuna inizializzazione.</span></p>
<p><strong>Performances</strong></p>
<p><span style="color:#000000;">Per questo test è stato usato un file di 66926 byte contenente caratteri Unicode, il </span><em><span style="color:#000000;">Romeo e Giulietta </span></em><span style="color:#000000;">di Bandello, che ispirò l&#8217;opera di Shakespeare.</span></p>
<p><em><span style="color:#000000;">Codifica e decodifica</span></em></p>
<p><em><br />
</em></p>
<p><em></em></p>
<p><em></em></p>
<p><em></em></p>
<p><em></em></p>
<p><em></em></p>
<p><em></em></p>
<p><em></em></p>
<p><em></em></p>
<p><em></p>
<table border="2" cellspacing="1" cellpadding="1" width="200">
<tbody>
<tr>
<td><em><strong> Algoritmo</strong></em></td>
<td><em><strong> real time<br />
</strong></em></td>
<td><em><strong>user time<br />
</strong></em></td>
</tr>
<tr>
<td> Blowfish</td>
<td>0m2.812s</td>
<td>0m2.804s</td>
</tr>
<tr>
<td> Rijndael</td>
<td>0m10.576s</td>
<td> 0m10.381s</td>
</tr>
<tr>
<td> Blowfish+psyco</td>
<td>0m1.440s</td>
<td>0m1.300s</td>
</tr>
<tr>
<td>Rijndael+psyco</td>
<td>0m2.400s</td>
<td>0m2.344s</td>
</tr>
</tbody>
</table>
<p> </p>
<p><em>Codifica</em></p>
<table border="2" cellspacing="1" cellpadding="1" width="200">
<tbody>
<tr>
<td><em><strong> Algoritmo</strong></em></td>
<td><em><strong> real time<br />
</strong></em></td>
<td><em><strong>user time<br />
</strong></em></td>
</tr>
<tr>
<td> Blowfish</td>
<td>0m1.477s</td>
<td>0m1.416s</td>
</tr>
<tr>
<td> Rijndael</td>
<td>0m5.163s</td>
<td>0m5.040s</td>
</tr>
<tr>
<td> Blowfish+psyco</td>
<td>0m0.693s</td>
<td>0m0.668s</td>
</tr>
<tr>
<td>Rijndael+psyco</td>
<td>0m1.216s</td>
<td>0m1.200s</td>
</tr>
</tbody>
</table>
<p> </p>
<p>Il computer utilizzato per il test è un dual core 1.8 GHz con 2 Gb di RAM (24.5 % già occupato).<br />
Nello scegliere uno dei due algoritmi si tenga presente che forniscono livelli di sicurezza differenti.&#8221;</p>
<p></em></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alfredodinapoli.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alfredodinapoli.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alfredodinapoli.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alfredodinapoli.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alfredodinapoli.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alfredodinapoli.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alfredodinapoli.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alfredodinapoli.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alfredodinapoli.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alfredodinapoli.wordpress.com/50/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alfredodinapoli.wordpress.com&blog=5741490&post=50&subd=alfredodinapoli&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://alfredodinapoli.wordpress.com/2009/01/04/crittografia-pure-python-si-grazie/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a3655609bc9b50d8446a08f31bc9c519?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Alfredo Di Napoli</media:title>
		</media:content>
	</item>
		<item>
		<title>Buon 2009</title>
		<link>http://alfredodinapoli.wordpress.com/2009/01/01/buon-2009/</link>
		<comments>http://alfredodinapoli.wordpress.com/2009/01/01/buon-2009/#comments</comments>
		<pubDate>Thu, 01 Jan 2009 16:54:40 +0000</pubDate>
		<dc:creator>Alfredo Di Napoli</dc:creator>
				<category><![CDATA[public static void main(string[] args)]]></category>

		<guid isPermaLink="false">http://alfredodinapoli.wordpress.com/?p=48</guid>
		<description><![CDATA[Ed eccoci qui, tra un panettone,un pandoro, un torronte, un panforte, un [...] , anche un altro anno è passato. Come è stato per voi questo 2008?
Da un punto di vista universitario (A.A 2007/2008 ) è stata un annata eccezionale, 11 esami in 9 mesi, e spero di tenere alto questo ritmo in modo da [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alfredodinapoli.wordpress.com&blog=5741490&post=48&subd=alfredodinapoli&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Ed eccoci qui, tra un panettone,un pandoro, un torronte, un panforte, un [...] , anche un altro anno è passato. Come è stato per voi questo 2008?</p>
<p>Da un punto di vista universitario (A.A 2007/2008 ) è stata un annata eccezionale, 11 esami in 9 mesi, e spero di tenere alto questo ritmo in modo da potermi laureare ad ottobre con un buon voto (io spero 110). Spero che per voi quest&#8217; anno sia un anno positivo, pieno di soddisfazioni.. Per ora studiate il Python più che potete !</p>
<p>Buon 2009!</p>
<p>Alfredo</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alfredodinapoli.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alfredodinapoli.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alfredodinapoli.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alfredodinapoli.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alfredodinapoli.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alfredodinapoli.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alfredodinapoli.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alfredodinapoli.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alfredodinapoli.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alfredodinapoli.wordpress.com/48/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alfredodinapoli.wordpress.com&blog=5741490&post=48&subd=alfredodinapoli&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://alfredodinapoli.wordpress.com/2009/01/01/buon-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a3655609bc9b50d8446a08f31bc9c519?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Alfredo Di Napoli</media:title>
		</media:content>
	</item>
		<item>
		<title>Buon Natale a tutti!</title>
		<link>http://alfredodinapoli.wordpress.com/2008/12/21/buon-natale-a-tutti/</link>
		<comments>http://alfredodinapoli.wordpress.com/2008/12/21/buon-natale-a-tutti/#comments</comments>
		<pubDate>Sun, 21 Dec 2008 19:26:03 +0000</pubDate>
		<dc:creator>Alfredo Di Napoli</dc:creator>
				<category><![CDATA[class Python:]]></category>

		<guid isPermaLink="false">http://alfredodinapoli.wordpress.com/?p=43</guid>
		<description><![CDATA[E&#8217; vero sono un pò in anticipo ma visto che il 25 avrò da fare vi faccio ora gli auguri! E cosa c&#8217;è di meglio di un bello scriptino?
ciao!
Alfredo

#

#BUON NATALE A TUTTI!

#

import string

class buonNatale:

def stampa_albero():

tree_base = 20

albero = &#34;*&#34;

print albero.center(tree_base*2)

for x in reversed(xrange(1,tree_base)):

albero+=&#34;**&#34;

print albero.center(tree_base*2)

print &#34;BUON NATALE A TUTTO PYTHON-IT.ORG!&#34;.center(tree_base*2)

if __name__ ==  &#34;__main__&#34;:

stampa_albero()

   [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alfredodinapoli.wordpress.com&blog=5741490&post=43&subd=alfredodinapoli&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>E&#8217; vero sono un pò in anticipo ma visto che il 25 avrò da fare vi faccio ora gli auguri! E cosa c&#8217;è di meglio di un bello scriptino?</p>
<p>ciao!</p>
<p>Alfredo</p>
<pre class="brush: python;">
#

#BUON NATALE A TUTTI!

#

import string

class buonNatale:

def stampa_albero():

tree_base = 20

albero = &quot;*&quot;

print albero.center(tree_base*2)

for x in reversed(xrange(1,tree_base)):

albero+=&quot;**&quot;

print albero.center(tree_base*2)

print &quot;BUON NATALE A TUTTO PYTHON-IT.ORG!&quot;.center(tree_base*2)

if __name__ ==  &quot;__main__&quot;:

stampa_albero()
</pre>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alfredodinapoli.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alfredodinapoli.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alfredodinapoli.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alfredodinapoli.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alfredodinapoli.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alfredodinapoli.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alfredodinapoli.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alfredodinapoli.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alfredodinapoli.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alfredodinapoli.wordpress.com/43/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alfredodinapoli.wordpress.com&blog=5741490&post=43&subd=alfredodinapoli&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://alfredodinapoli.wordpress.com/2008/12/21/buon-natale-a-tutti/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a3655609bc9b50d8446a08f31bc9c519?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Alfredo Di Napoli</media:title>
		</media:content>
	</item>
		<item>
		<title>C vs Python vs Java</title>
		<link>http://alfredodinapoli.wordpress.com/2008/12/15/c-vs-python-vs-java/</link>
		<comments>http://alfredodinapoli.wordpress.com/2008/12/15/c-vs-python-vs-java/#comments</comments>
		<pubDate>Mon, 15 Dec 2008 13:09:44 +0000</pubDate>
		<dc:creator>Alfredo Di Napoli</dc:creator>
				<category><![CDATA[class Python:]]></category>
		<category><![CDATA[psyco]]></category>
		<category><![CDATA[psyco per python]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[python contro Java]]></category>
		<category><![CDATA[velocità esecuzione programmi Python]]></category>

		<guid isPermaLink="false">http://alfredodinapoli.wordpress.com/?p=34</guid>
		<description><![CDATA[Buongiorno a tutti.
Oggi ho fatto un esperimento. Ho implementato l&#8217;algoritmo di ordinamento più lento della storia, cioè il Selection Sort (complessità computazionale O(n^2)) , in tre diversi linguaggi: C,Python e Java. Poi ho creato un programma in Python che usando il modulo timeit cronometrasse i tempi di esecuzione dei tre diversi programmi. Il risultato? Eccolo:
C [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alfredodinapoli.wordpress.com&blog=5741490&post=34&subd=alfredodinapoli&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Buongiorno a tutti.</p>
<p>Oggi ho fatto un esperimento. Ho implementato l&#8217;algoritmo di ordinamento più lento della storia, cioè il Selection Sort (complessità computazionale O(n^2)) , in tre diversi linguaggi: C,Python e Java. Poi ho creato un programma in Python che usando il modulo <em>timeit </em>cronometrasse i tempi di esecuzione dei tre diversi programmi. Il risultato? Eccolo:</p>
<p style="text-align:center;"><span style="color:#008000;">C version: 0.484</span></p>
<p style="text-align:center;"><span style="color:#008000;">Java version: 17.008</span></p>
<p style="text-align:center;"><span style="color:#008000;">Python version: 6.657</span></p>
<p>Che il C battesse Python era scontato, ma Python batte Java alla grande: <strong>P</strong><strong>ython è il doppio più veloce del Java</strong>. Da questa prima superficiale analisi sembra che Java sia più lento del Python. Possiamo davvero ritenerci soddfisfatti? La risposta è no! Ringrazio Riovandaino del forum di Python.it.org per aver segnalato un caso in cui è <strong>Java a battare alla grande Python</strong>. Il codice lo trovate in <a href="http://www.python-it.org/forum/index.php?topic=1645.0">q</a><a href="http://www.python-it.org/forum/index.php?topic=1645.0">uesto post</a>, con i relativi tempi di esecuzione. Tuttavia, come sapete, Python può, ed ecco in arrivo la scorciatoia (di scorciatoia si tratta, in effetti). La risposta è <a href="http://psyco.sourceforge.net/">Psyco</a>, un modulo che promette di abbattere i tempi di esecuzione degli script Python. Ma funziona davvero? Riscrivendo il codice ecco cosa otteniamo:</p>
<p>Pre &#8211; Psyco:</p>
<p><span style="color:#008000;">alfredo$ time python prime2.py</span></p>
<p style="text-align:left;"><span style="color:#008000;">9592</span></p>
<p style="text-align:left;"><span style="color:#008000;">real</span><span style="color:#008000;"> </span><span style="color:#008000;">0m24.237s</span></p>
<p style="text-align:left;"><span style="color:#008000;">user</span><span style="color:#008000;"> </span><span style="color:#008000;">0m23.927s</span></p>
<p style="text-align:left;"><span style="color:#008000;">sys</span><span style="color:#008000;"> </span><span style="color:#008000;">0m0.065s</span></p>
<p style="text-align:left;"><span><span style="color:#000000;">Post &#8211; Psyco:</span></span></p>
<p style="text-align:left;"><span style="color:#000000;"><span style="color:#008000;">alfredo$ time python prime2.py</span></p>
<p><span style="color:#008000;">9592</span></p>
<p><span style="color:#008000;">real	0m<span style="color:#ff0000;">1.938s</span></span></p>
<p><span style="color:#008000;">user	0m1.814s</span></p>
<p><span style="color:#008000;">sys	0m0.027s</span></p>
<p><span style="color:#000000;">Il guadagno è notevole, e il prezzo pagato? Due linee di codice all&#8217; inizio del nostro programma.</span></p>
<p><span style="color:#000000;">Mica male vero?</span></p>
<p>Ringrazio tutti gli utenti di python-it.org!</p>
<p>Allego il codice per i più smaliziati (devo ancora riuscire a gestire bene il codice quando scrivo, la gestione di un codice in un linguaggio di programmazione in WP.com è pessima).</p>
<p></span></p>
<p>Alla prossima!</p>
<p><a href="http://www.fileden.com/files/2008/10/14/2142989/speedTest.zip">SpeedTest.zip</a></p>
<p> </p>
<p>Alfredo</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alfredodinapoli.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alfredodinapoli.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alfredodinapoli.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alfredodinapoli.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alfredodinapoli.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alfredodinapoli.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alfredodinapoli.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alfredodinapoli.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alfredodinapoli.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alfredodinapoli.wordpress.com/34/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alfredodinapoli.wordpress.com&blog=5741490&post=34&subd=alfredodinapoli&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://alfredodinapoli.wordpress.com/2008/12/15/c-vs-python-vs-java/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a3655609bc9b50d8446a08f31bc9c519?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Alfredo Di Napoli</media:title>
		</media:content>
	</item>
		<item>
		<title>PyPills : Lezione 1 &#8211; os.system()</title>
		<link>http://alfredodinapoli.wordpress.com/2008/12/13/pypills-lezione-1-ossystem/</link>
		<comments>http://alfredodinapoli.wordpress.com/2008/12/13/pypills-lezione-1-ossystem/#comments</comments>
		<pubDate>Sat, 13 Dec 2008 08:58:07 +0000</pubDate>
		<dc:creator>Alfredo Di Napoli</dc:creator>
				<category><![CDATA[class Python:]]></category>
		<category><![CDATA[awk]]></category>
		<category><![CDATA[eseguire comandi di sistema]]></category>
		<category><![CDATA[filtri]]></category>
		<category><![CDATA[grep]]></category>
		<category><![CDATA[leopard]]></category>
		<category><![CDATA[mac os]]></category>
		<category><![CDATA[os.system]]></category>
		<category><![CDATA[pipelining]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://alfredodinapoli.wordpress.com/?p=32</guid>
		<description><![CDATA[Buongiorno a tutti  
In questo articolo inauguro un altra sezione, chiamata PyPills, cioè &#8220;Python in pillole&#8221;. Il mio obiettivo non è tanto quello di insegnare le cose base, in quanto la rete abbonda di materiale elettronico per imparare il Python, che già di per se è molto semplice. Quello che mi propongo di fare [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alfredodinapoli.wordpress.com&blog=5741490&post=32&subd=alfredodinapoli&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Buongiorno a tutti <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>In questo articolo inauguro un altra sezione, chiamata PyPills, cioè &#8220;Python in pillole&#8221;. Il mio obiettivo non è tanto quello di insegnare le cose base, in quanto la rete abbonda di materiale elettronico per imparare il Python, che già di per se è molto semplice. Quello che mi propongo di fare è fare luce sulle parti un pò nebulose. Una delle cose che ho più odiato nel Java era l&#8217;impossiblità di eseguire istruzioni di basso livello con un comando. Il C lo permette ma è un pò complicato lavorare sulle stringhe in quanto, come vi ricordo, per C una stringa è un array di caratteri, e come tale bisogna lavorare coi puntatori e non con gli operatori di concatenazione come il + (in C non esite per concatenare stringhe). Il python può. Questa è una frase chiave. Volete realizzare un missile per andare su marte? Python sicuramente potrà, ma potete realizzarci sicuramente un dispositivo usb per il lancio di missili (l&#8217;hanno fatto veramente). Come direbbe lo spot della Playstation 3 &#8220;Possibilità infinite&#8221; <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  .</p>
<p>Tornando a noi, un comando veramente magico in Python è:</p>
<p style="text-align:center;"><strong><span style="color:#0000ff;">os.system(string command)</span></strong></p>
<p style="text-align:left;">(notate che il tipo string l&#8217;ho inventato in quanto, vi ricordo, in python i tipi non vanno dichiarati esplicitamente). Cosa fa questo comando? La semplicità è potenza e viceversa, infatti questo comando esegue un comando di sistema. Quale comando? Un qualsiasi comando Unix o Dos (ma noi siamo in Unix, tant&#8217;è parleremo di questo <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  ). Alcuni tra i più smaliziati diranno &#8220;vabbè ma non fa nulla che non si possa fare facendo uno script in bash&#8221; e ciò è sacrosanto, ma possiamo ad esempio creare il nostro bello scriptino e lanciarlo embedded all&#8217; interno del nostro programma Python così:</p>
<p style="text-align:left;"><em><span style="color:#0000ff;">import os</span></em></p>
<p style="text-align:left;"><em><span style="color:#0000ff;">os.system(&#8220;./myscript.sh&#8221;)</span></em></p>
<p style="text-align:left;">Potente no?  Ve l&#8217;avevo detto io <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  </p>
<p style="text-align:left;">Nella prossima lezione metteremo un pò da parte Python e vedremo un pò di comandi Unix molto utili, parleremo dei filtri e del pipelining.</p>
<p style="text-align:left;">Alla prossima!</p>
<p style="text-align:left;">Alfredo</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alfredodinapoli.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alfredodinapoli.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alfredodinapoli.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alfredodinapoli.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alfredodinapoli.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alfredodinapoli.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alfredodinapoli.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alfredodinapoli.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alfredodinapoli.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alfredodinapoli.wordpress.com/32/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alfredodinapoli.wordpress.com&blog=5741490&post=32&subd=alfredodinapoli&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://alfredodinapoli.wordpress.com/2008/12/13/pypills-lezione-1-ossystem/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a3655609bc9b50d8446a08f31bc9c519?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Alfredo Di Napoli</media:title>
		</media:content>
	</item>
		<item>
		<title>Laboratorio di Programmazione: Aggiornamento Me-Dia disponibile</title>
		<link>http://alfredodinapoli.wordpress.com/2008/12/11/laboratorio-di-programmazione-aggiornamento-me-dia-disponibile/</link>
		<comments>http://alfredodinapoli.wordpress.com/2008/12/11/laboratorio-di-programmazione-aggiornamento-me-dia-disponibile/#comments</comments>
		<pubDate>Thu, 11 Dec 2008 10:58:25 +0000</pubDate>
		<dc:creator>Alfredo Di Napoli</dc:creator>
				<category><![CDATA[class Python:]]></category>

		<guid isPermaLink="false">http://alfredodinapoli.wordpress.com/?p=26</guid>
		<description><![CDATA[E&#8217; disponibile a questo indirizzo la nuova versione di Me-Dia:
Me-Dia v.0.2
Happy Me-Dia! 
Alfredo
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alfredodinapoli.wordpress.com&blog=5741490&post=26&subd=alfredodinapoli&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>E&#8217; disponibile a questo indirizzo la nuova versione di Me-Dia:</p>
<p style="text-align:center;"><a href="http://www.fileden.com/files/2008/10/14/2142989/media/current.zip">Me-Dia v.0.2</a></p>
<p style="text-align:left;">Happy Me-Dia! </p>
<p style="text-align:left;">Alfredo</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alfredodinapoli.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alfredodinapoli.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alfredodinapoli.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alfredodinapoli.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alfredodinapoli.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alfredodinapoli.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alfredodinapoli.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alfredodinapoli.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alfredodinapoli.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alfredodinapoli.wordpress.com/26/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alfredodinapoli.wordpress.com&blog=5741490&post=26&subd=alfredodinapoli&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://alfredodinapoli.wordpress.com/2008/12/11/laboratorio-di-programmazione-aggiornamento-me-dia-disponibile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a3655609bc9b50d8446a08f31bc9c519?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Alfredo Di Napoli</media:title>
		</media:content>
	</item>
		<item>
		<title>Mac OS X 10.5 e Record Extension</title>
		<link>http://alfredodinapoli.wordpress.com/2008/12/07/mac-os-x-105-e-record-extension/</link>
		<comments>http://alfredodinapoli.wordpress.com/2008/12/07/mac-os-x-105-e-record-extension/#comments</comments>
		<pubDate>Sun, 07 Dec 2008 09:03:36 +0000</pubDate>
		<dc:creator>Alfredo Di Napoli</dc:creator>
				<category><![CDATA[package Mac OS X 10.5]]></category>
		<category><![CDATA[abilitare record extension]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[leopard]]></category>
		<category><![CDATA[mac os]]></category>
		<category><![CDATA[record extension]]></category>
		<category><![CDATA[x11]]></category>
		<category><![CDATA[xquartz]]></category>

		<guid isPermaLink="false">http://alfredodinapoli.wordpress.com/?p=15</guid>
		<description><![CDATA[In questo articolo parlerò della Record Extension. Drizzate bene le antenne perchè questa cosa probabilmente non la sanno in molti. Innanzitutto bisogna chiedersi &#8220;Cos&#8217;è la Record Extension?&#8221;
La record extension è la libreria responsabile della cattura degli eventi di tastiera e mouse su server X. E&#8217; molto importante in quanto entra in gioco in diverse applicazioni [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alfredodinapoli.wordpress.com&blog=5741490&post=15&subd=alfredodinapoli&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>In questo articolo parlerò della Record Extension. Drizzate bene le antenne perchè questa cosa probabilmente non la sanno in molti. Innanzitutto bisogna chiedersi &#8220;Cos&#8217;è la Record Extension?&#8221;</p>
<p>La record extension è la libreria responsabile della cattura degli eventi di tastiera e mouse su server X. E&#8217; molto importante in quanto entra in gioco in diverse applicazioni per svolgere delle funzioni che non possono essere eseguite altrimenti, si pensi alla cattura di una schermata del desktop tramite snapshot. Come molti di voi sapranno Mac OS non ha un supporto nativo per il server X, o meglio ce l&#8217;ha ma bisogna installare l&#8217; X11 o dal dvd di apple o scaricando l&#8217;ultima versione da <a href="http://xquartz.macosforge.org/">XQuartz</a>. Tuttavia chiunque abbia provato a lanciare un qualsiasi programma che facesse uso di queste librerie si è trovato davanti il laconico messaggio &#8220;Record Extension Not Found&#8221;.</p>
<p>Dopo diversi giorni di sbattimenti vari ho trovato la risposta a questo problema direttamente sulla mailing list di X11:  La record e la test extension sono state rimosse per motivi di sicurezza (per evitare ad esempio che tramite un keylogger si potesse registrare il workflow di un utente). Questa scelta implementativa però non è stata apprezzata e mi è stato assicurato che nelle prossime versioni di X11 questo problema sarà risolto inserendo un comando per abilitare/disabilitare le estensioni. Allo stato attuale è quasi pronta la rc_3 di X11 dal sito XQuartz, dove è già possibile abilitare la test extension!</p>
<p>Quindi non temete, tra poco rientrerete in possesso della vostra record!</p>
<p>Alla prossima!</p>
<p>Alfredo</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alfredodinapoli.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alfredodinapoli.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alfredodinapoli.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alfredodinapoli.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alfredodinapoli.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alfredodinapoli.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alfredodinapoli.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alfredodinapoli.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alfredodinapoli.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alfredodinapoli.wordpress.com/15/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alfredodinapoli.wordpress.com&blog=5741490&post=15&subd=alfredodinapoli&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://alfredodinapoli.wordpress.com/2008/12/07/mac-os-x-105-e-record-extension/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a3655609bc9b50d8446a08f31bc9c519?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Alfredo Di Napoli</media:title>
		</media:content>
	</item>
	</channel>
</rss>