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

<channel>
	<title>Naufraghi nella rete &#187; python</title>
	<atom:link href="http://www.slug.it/naufraghi/tag/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.slug.it/naufraghi</link>
	<description>… dolce m’è il naufragar in questo mare?</description>
	<lastBuildDate>Tue, 29 Jun 2010 17:04:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Dietro Dive Into Python 3</title>
		<link>http://www.slug.it/naufraghi/dietro-dive-into-python-3/</link>
		<comments>http://www.slug.it/naufraghi/dietro-dive-into-python-3/#comments</comments>
		<pubDate>Mon, 02 Feb 2009 09:04:27 +0000</pubDate>
		<dc:creator>Matteo</dc:creator>
				<category><![CDATA[Generale]]></category>
		<category><![CDATA[informatica]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[società]]></category>

		<guid isPermaLink="false">http://www.slug.it/naufraghi/?p=311</guid>
		<description><![CDATA[Oggi ho notato il sito diveintopython3.org. Incuriosito dal footer: This site is optimized for Lynx just because fuck you. I’m told it also looks good in graphical browsers. © 2001-4, 2009 ℳark Pilgrim, CC-BY-3.0 Sono andato a guardare nei sorgenti della pagina ed ho trovato questa interessante riflessione: &#60;!-- As I write this, the year [...]]]></description>
			<content:encoded><![CDATA[<p>Oggi ho notato il sito <a href="http://diveintopython3.org/">diveintopython3.org</a>.</p>
<p>Incuriosito dal footer:</p>
<blockquote><p><em>This site is optimized for Lynx just because fuck you.<br />
I’m told it also looks good in graphical browsers.</em><br />
© 2001-4, 2009 <a type="amzn" search="Mark Pilgrim Python">ℳark Pilgrim</a>, CC-BY-3.0</p></blockquote>
<p>Sono andato a guardare nei sorgenti della pagina ed ho trovato questa interessante riflessione:</p>
<div class="codesnip-container" >
<p>&lt;!-<span>-</span> As I write this, the year is 2009, and the internet is STILL a battleground of so-called &#8220;intellectual property&#8221; disputes.  Some people would have you believe that without proper financial incentives, music, literature, and software would disappear.  After all, who would make music if they can&#8217;t make money on it?  Who would write?  Who would program?
</p>
<p>
I know the answer.  The answer is that musicians will make music, not because they can make money, but because musicians are the people who can&#8217;t not make music.  Writers will write because they can&#8217;t not write.  Most of the people you think of as artists are really just showmen.  They collect a paycheck and go home at 5 o&#8217;clock.  That&#8217;s not art, that&#8217;s commerce.
</p>
<p>
I&#8217;ve been programming since 1983 and releasing my code under Free Software licenses since 1993.  I&#8217;ve been writing and publishing under Free Content licenses since 2000.  I can&#8217;t imagine not doing this.  If you can imagine yourself not doing what you&#8217;re doing, do something else.  Do whatever it is you can&#8217;t not do. <span>-</span>-&gt;</p>
</div>
<ul class="socialwrap size24 row">
<li class="iconOnly"><a rel="nofollow" target="_blank" class="delicious" href="http://delicious.com/post?url=http%3A%2F%2Fwww.slug.it%2Fnaufraghi%2Fdietro-dive-into-python-3%2F&amp;title=Dietro+Dive+Into+Python+3" title="Bookmark this post : Dietro Dive Into Python 3 on Delicious"><span class="head">Bookmark on Delicious</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="digg" href="http://digg.com/submit?url=http%3A%2F%2Fwww.slug.it%2Fnaufraghi%2Fdietro-dive-into-python-3%2F&amp;title=Dietro+Dive+Into+Python+3&amp;bodytext=Oggi+ho+notato+il+sito+diveintopython3.org.%0D%0A%0D%0AIncuriosito+dal+footer%3A%0D%0A%0D%0AThis+site+is+optimized+for+Lynx+just+because+fuck+you.%0D%0AI%E2%80%99m+told+it+also+looks+good+in+graphical+browsers.%0D%0A%C2%A9+2001-4%2C+2009+%E2%84%B3ark+Pilgrim%2C+CC-BY-3.0%0D%0A%0D%0ASono+andato+a+guardare+nei+sorgenti+della+pagina+ed+ho+trovato+questa+interessante+riflessi" title="Digg this post : Dietro Dive Into Python 3"><span class="head">Digg this post</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="facebook" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.slug.it%2Fnaufraghi%2Fdietro-dive-into-python-3%2F&amp;t=Dietro+Dive+Into+Python+3" title="Recommend this post : Dietro Dive Into Python 3 on Facebook"><span class="head">Recommend on Facebook</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="reddit" href="http://www.reddit.com/submit?url=http%3A%2F%2Fwww.slug.it%2Fnaufraghi%2Fdietro-dive-into-python-3%2F&amp;title=Dietro+Dive+Into+Python+3" title="Share this post : Dietro Dive Into Python 3 on Reddit"><span class="head">share via Reddit</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="stumble" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.slug.it%2Fnaufraghi%2Fdietro-dive-into-python-3%2F&amp;title=Dietro+Dive+Into+Python+3" title="Share this post : Dietro Dive Into Python 3 with Stumblers"><span class="head">Share with Stumblers</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="twitter" href="http://twitter.com/home/?status=http%3A%2F%2Fwww.slug.it%2Fnaufraghi%2Fdietro-dive-into-python-3%2F" title="Tweet this post : Dietro Dive Into Python 3 on Twitter"><span class="head">Tweet about it</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="rss" href="http://www.slug.it/naufraghi/dietro-dive-into-python-3/feed" title="Follow this post : Dietro Dive Into Python 3 comments"><span class="head">Subscribe to the comments on this post</span></a></li>
</ul>
<div class="clean"></div>
]]></content:encoded>
			<wfw:commentRss>http://www.slug.it/naufraghi/dietro-dive-into-python-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>iPhone TPM? Linguaggi interpretati all&#8217;arrembaggio!</title>
		<link>http://www.slug.it/naufraghi/iphone-tpm-linguaggi-interpretati-allarrembaggio/</link>
		<comments>http://www.slug.it/naufraghi/iphone-tpm-linguaggi-interpretati-allarrembaggio/#comments</comments>
		<pubDate>Mon, 21 Jul 2008 11:02:58 +0000</pubDate>
		<dc:creator>Matteo</dc:creator>
				<category><![CDATA[Generale]]></category>
		<category><![CDATA[informatica]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[software libero]]></category>

		<guid isPermaLink="false">http://www.slug.it/naufraghi/iphone-drm-linguaggi-interpretati-allarrembaggio/</guid>
		<description><![CDATA[La voglia è tanta&#8230; ma questa cosa del TPM rende mooolto più facile la tattica della &#8220;volpe e l&#8217;uva&#8221;! Da sviluppatore è proprio inconcepibile avere un oggetto, con un sistema operativo, un SDK, ottima documentazione, e&#8230; non poter provare un programma sul MIO dispositivo senza avergli fatto fare una giratina virtuale per prendere una firma [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.fsf.org/blogs/community/5-reasons-to-avoid-iphone-3g"><img src="http://www.fsf.org/blogs/community/5-reasons-to-avoid-iphone-3g/iphone3g-small.png" class="alignleft" /></a></p>
<p>La voglia è tanta&#8230; ma questa cosa del TPM rende mooolto più facile la tattica della &#8220;volpe e l&#8217;uva&#8221;!</p>
<p>Da sviluppatore è proprio inconcepibile avere un oggetto, con un sistema operativo, un SDK, ottima documentazione, e&#8230; non poter provare un programma sul MIO dispositivo senza avergli fatto fare una giratina virtuale per prendere una firma a Cupertino (99€/anno per lo scomodo)!!</p>
<p>Poi un pensiero: «Perché mai iPhone è uscito senza Java?»</p>
<p>Ma è facile, perché con Java basta avere una Virtual Machine firmata per far girare tutti i programmi del mondo, e ciao ciao AppStore! Stessa cosa per Python-Ruby-Perl!</p>
<p>Quindi TPM mio caro, non hai un gran futuro! (spero!, non ho indagato a fondo, ma credo che il controllo sia per processo e non per&#8230; boh, sul linking dinamico o che sò)</p>
<p><span id="more-225"></span></p>
<p>A volte mi trovo a non riuscire a spiegare quale sia e quanto sia profondo il limite di questa scelta di Apple per la &#8220;libertà&#8221; del compratore.</p>
<p>Molti rispondono «Ma quando mai avrò bisogno di scrivere un programma per il mio cellulare?», però anche se non è evidente, quello che sta vendendo Apple, nel mondo delle auto sarebbe come comprare una bella macchina, pagarla più del suo prezzo (perché la tecnologia equivalente la trovate a giro anche a molto meno) e come &#8220;bonus&#8221; per la spesa maggiorata, poter fare il pieno solo da Agip!</p>
<p>La comprereste?
</p>
<ul class="socialwrap size24 row">
<li class="iconOnly"><a rel="nofollow" target="_blank" class="delicious" href="http://delicious.com/post?url=http%3A%2F%2Fwww.slug.it%2Fnaufraghi%2Fiphone-tpm-linguaggi-interpretati-allarrembaggio%2F&amp;title=iPhone+TPM%3F+Linguaggi+interpretati+all%26%238217%3Barrembaggio%21" title="Bookmark this post : iPhone TPM? Linguaggi interpretati all&#8217;arrembaggio! on Delicious"><span class="head">Bookmark on Delicious</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="digg" href="http://digg.com/submit?url=http%3A%2F%2Fwww.slug.it%2Fnaufraghi%2Fiphone-tpm-linguaggi-interpretati-allarrembaggio%2F&amp;title=iPhone+TPM%3F+Linguaggi+interpretati+all%26%238217%3Barrembaggio%21&amp;bodytext=%0D%0A%0D%0ALa+voglia+%C3%A8+tanta...+ma+questa+cosa+del+TPM+rende+mooolto+pi%C3%B9+facile+la+tattica+della+%22volpe+e+l%27uva%22%21%0D%0A%0D%0ADa+sviluppatore+%C3%A8+proprio+inconcepibile+avere+un+oggetto%2C+con+un+sistema+operativo%2C+un+SDK%2C+ottima+documentazione%2C+e...+non+poter+provare+un+programma+sul+MIO+dispositivo+senza+avergli+fatto+fare+una+giratin" title="Digg this post : iPhone TPM? Linguaggi interpretati all&#8217;arrembaggio!"><span class="head">Digg this post</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="facebook" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.slug.it%2Fnaufraghi%2Fiphone-tpm-linguaggi-interpretati-allarrembaggio%2F&amp;t=iPhone+TPM%3F+Linguaggi+interpretati+all%26%238217%3Barrembaggio%21" title="Recommend this post : iPhone TPM? Linguaggi interpretati all&#8217;arrembaggio! on Facebook"><span class="head">Recommend on Facebook</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="reddit" href="http://www.reddit.com/submit?url=http%3A%2F%2Fwww.slug.it%2Fnaufraghi%2Fiphone-tpm-linguaggi-interpretati-allarrembaggio%2F&amp;title=iPhone+TPM%3F+Linguaggi+interpretati+all%26%238217%3Barrembaggio%21" title="Share this post : iPhone TPM? Linguaggi interpretati all&#8217;arrembaggio! on Reddit"><span class="head">share via Reddit</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="stumble" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.slug.it%2Fnaufraghi%2Fiphone-tpm-linguaggi-interpretati-allarrembaggio%2F&amp;title=iPhone+TPM%3F+Linguaggi+interpretati+all%26%238217%3Barrembaggio%21" title="Share this post : iPhone TPM? Linguaggi interpretati all&#8217;arrembaggio! with Stumblers"><span class="head">Share with Stumblers</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="twitter" href="http://twitter.com/home/?status=http%3A%2F%2Fwww.slug.it%2Fnaufraghi%2Fiphone-tpm-linguaggi-interpretati-allarrembaggio%2F" title="Tweet this post : iPhone TPM? Linguaggi interpretati all&#8217;arrembaggio! on Twitter"><span class="head">Tweet about it</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="rss" href="http://www.slug.it/naufraghi/iphone-tpm-linguaggi-interpretati-allarrembaggio/feed" title="Follow this post : iPhone TPM? Linguaggi interpretati all&#8217;arrembaggio! comments"><span class="head">Subscribe to the comments on this post</span></a></li>
</ul>
<div class="clean"></div>
]]></content:encoded>
			<wfw:commentRss>http://www.slug.it/naufraghi/iphone-tpm-linguaggi-interpretati-allarrembaggio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cython rocks</title>
		<link>http://www.slug.it/naufraghi/cython-rocks/</link>
		<comments>http://www.slug.it/naufraghi/cython-rocks/#comments</comments>
		<pubDate>Fri, 02 May 2008 00:30:13 +0000</pubDate>
		<dc:creator>Matteo</dc:creator>
				<category><![CDATA[informatica]]></category>
		<category><![CDATA[matematica]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[unifi]]></category>

		<guid isPermaLink="false">http://www.slug.it/naufraghi/cython-rocks/</guid>
		<description><![CDATA[Ho cominciato a lavorare sul serio all&#8217;università, in laboratorio si macinano proteine, tante, ed il povero Python non regge il passo. Durante la sosta forzata mi sono baloccato con OCaml, e devo dire che è un linguaggio interessante, anche se per ora non sono ancora riuscito a realizzare un qualcosa di funzionante :/ ! Uscito [...]]]></description>
			<content:encoded><![CDATA[<p>Ho cominciato a lavorare sul serio all&#8217;università, in laboratorio si macinano proteine, tante, ed il povero Python non regge il passo.</p>
<p>Durante la sosta forzata mi sono baloccato con <a href="http://caml.inria.fr/">OCaml</a>, e devo dire che è un linguaggio interessante, anche se per ora non sono ancora riuscito a realizzare un qualcosa di funzionante :/ !</p>
<p>Uscito da gesso e riabilitazione, ho cominciato a studiare le &#8220;nuove&#8221; reti neurali (<a href="http://www.google.com/search?q=deep+neural+networks">deep neural networks</a>), e ne ho implementata una in <a href="http://code.google.com/p/naufraghi/source/browse/dottorato/bplnn.py?r=114">poche paginate</a> in Python.</p>
<p>Però la velocità è quella che è&#8230; allora è partito il pellegrinaggio:</p>
<ol>
<li>Ho riscritto il tutto <a href="http://code.google.com/p/naufraghi/source/browse/dottorato/bplnn.ml">in OCaml</a>, ma c&#8217;è un bug che non fa convergere nulla&#8230; e non lo trovo!</li>
<li>Ho provato <a href="http://codespeak.net/pypy/">pypy</a>, per vedere se il mio codice era abbastanza <a href="http://www.google.com/search?q=pypy+rpython">RPython</a>&#8230; ma non lo era</li>
<li>Ho provato <a href="http://shed-skin.blogspot.com/">ShedSkin</a>, ma anche per lui il mio codice non era abbastanza statico.</li>
</ol>
<p>Allora mi sono arreso, l&#8217;inferenza ancora non è gratuita, e mi sono &#8220;abbassato&#8221; a buttare giù tipi e gestire la memoria, in Cython!</p>
<p>Adesso, avendo reimplementato solo la <a href="http://code.google.com/p/naufraghi/source/browse/dottorato/cbplnn.pyx">classe Layer</a>, l&#8217;apprendimento ha una velocità decente, il codice resta leggibile, non ho &#8220;esportato&#8221; il bug della versione in OCaml ed ho spazio per ulteriori ottimizzazioni senza perdere le comodità di Python!</p>
<p>Yuppie!</p>
<ul class="socialwrap size24 row">
<li class="iconOnly"><a rel="nofollow" target="_blank" class="delicious" href="http://delicious.com/post?url=http%3A%2F%2Fwww.slug.it%2Fnaufraghi%2Fcython-rocks%2F&amp;title=Cython+rocks" title="Bookmark this post : Cython rocks on Delicious"><span class="head">Bookmark on Delicious</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="digg" href="http://digg.com/submit?url=http%3A%2F%2Fwww.slug.it%2Fnaufraghi%2Fcython-rocks%2F&amp;title=Cython+rocks&amp;bodytext=Ho+cominciato+a+lavorare+sul+serio+all%27universit%C3%A0%2C+in+laboratorio+si+macinano+proteine%2C+tante%2C+ed+il+povero+Python+non+regge+il+passo.%0D%0A%0D%0ADurante+la+sosta+forzata+mi+sono+baloccato+con+OCaml%2C+e+devo+dire+che+%C3%A8+un+linguaggio+interessante%2C+anche+se+per+ora+non+sono+ancora+riuscito+a+realizzare+un+qualcosa+di+funzionant" title="Digg this post : Cython rocks"><span class="head">Digg this post</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="facebook" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.slug.it%2Fnaufraghi%2Fcython-rocks%2F&amp;t=Cython+rocks" title="Recommend this post : Cython rocks on Facebook"><span class="head">Recommend on Facebook</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="reddit" href="http://www.reddit.com/submit?url=http%3A%2F%2Fwww.slug.it%2Fnaufraghi%2Fcython-rocks%2F&amp;title=Cython+rocks" title="Share this post : Cython rocks on Reddit"><span class="head">share via Reddit</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="stumble" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.slug.it%2Fnaufraghi%2Fcython-rocks%2F&amp;title=Cython+rocks" title="Share this post : Cython rocks with Stumblers"><span class="head">Share with Stumblers</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="twitter" href="http://twitter.com/home/?status=http%3A%2F%2Fwww.slug.it%2Fnaufraghi%2Fcython-rocks%2F" title="Tweet this post : Cython rocks on Twitter"><span class="head">Tweet about it</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="rss" href="http://www.slug.it/naufraghi/cython-rocks/feed" title="Follow this post : Cython rocks comments"><span class="head">Subscribe to the comments on this post</span></a></li>
</ul>
<div class="clean"></div>
]]></content:encoded>
			<wfw:commentRss>http://www.slug.it/naufraghi/cython-rocks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ho trovato un buggettino a cElementTree!</title>
		<link>http://www.slug.it/naufraghi/ho-trovato-un-buggettino-a-celementtree/</link>
		<comments>http://www.slug.it/naufraghi/ho-trovato-un-buggettino-a-celementtree/#comments</comments>
		<pubDate>Tue, 18 Dec 2007 20:10:07 +0000</pubDate>
		<dc:creator>Matteo</dc:creator>
				<category><![CDATA[informatica]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[software libero]]></category>

		<guid isPermaLink="false">http://www.slug.it/naufraghi/ho-trovato-un-buggettino-a-celementtree/</guid>
		<description><![CDATA[Giorni fa ho trovato il mio primo bug in un codice sorgente &#8220;serio&#8221;! Playing with PyInstaller I have found that the final part of _elementtree.c: Index: Modules/_elementtree.c =================================================================== &#8212; Modules/_elementtree.c &#160; &#160; &#160;&#40;revisione 59540&#41; +++ Modules/_elementtree.c &#160; &#160; &#160;&#40;copia locale&#41; @@ -2780,7 +2780,10 @@ &#160; &#160; &#160; &#160;&#41;; - &#160; &#160;PyRun_String&#40;bootstrap, Py_file_input, g, NULL&#41;; + [...]]]></description>
			<content:encoded><![CDATA[<p>Giorni fa ho trovato il mio primo bug in un codice sorgente &#8220;serio&#8221;!</p>
<p>Playing with PyInstaller I have found that the final part of _elementtree.c:</p>
<div class="codesnip-container" >
<div class="diff codesnip" style="font-family:monospace;">Index: Modules/_elementtree.c<br />
===================================================================<br />
<span class="re3">&#8212; Modules/_elementtree.c &nbsp; &nbsp; &nbsp;<span class="br0">&#40;</span>revisione <span class="nu0">59540</span><span class="br0">&#41;</span></span><br />
<span class="re4">+++ Modules/_elementtree.c &nbsp; &nbsp; &nbsp;<span class="br0">&#40;</span>copia locale<span class="br0">&#41;</span></span><br />
<span class="re6">@@ -<span class="nu0">2780</span>,<span class="nu0">7</span> +<span class="nu0">2780</span>,<span class="nu0">10</span> @@</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#41;</span>;</p>
<p><span class="re7">- &nbsp; &nbsp;PyRun_String<span class="br0">&#40;</span>bootstrap, Py_file_input, g, NULL<span class="br0">&#41;</span>;</span><br />
<span class="re8">+ &nbsp; &nbsp;if <span class="br0">&#40;</span>PyRun_String<span class="br0">&#40;</span>bootstrap, Py_file_input, g, NULL<span class="br0">&#41;</span> == NULL<span class="br0">&#41;</span> <span class="br0">&#123;</span></span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; &nbsp;m = PyErr_Occurred<span class="br0">&#40;</span><span class="br0">&#41;</span>;</span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; &nbsp;return;</span><br />
<span class="re8">+ &nbsp; &nbsp;<span class="br0">&#125;</span></span></p>
<p>&nbsp; &nbsp; elementpath_obj = PyDict_GetItemString<span class="br0">&#40;</span>g, &quot;ElementPath&quot;<span class="br0">&#41;</span>;</div>
</div>
<p>execute a bit of python code without checking the return value.<br />
That can lead to weird things playing with import hooks,<br />
for example an assert like this can fail:</p>
<p><span id="more-201"></span></p>
<div class="codesnip-container" >
<div class="diff codesnip" style="font-family:monospace;">Index: Lib/test/test_elemettree.py<br />
===================================================================<br />
<span class="re3">&#8212; Lib/test/test_elemettree.py <span class="br0">&#40;</span>revisione <span class="nu0">0</span><span class="br0">&#41;</span></span><br />
<span class="re4">+++ Lib/test/test_elemettree.py <span class="br0">&#40;</span>revisione <span class="nu0">0</span><span class="br0">&#41;</span></span><br />
<span class="re6">@@ -<span class="nu0">0</span>,<span class="nu0">0</span> +<span class="nu0">1</span>,<span class="nu0">21</span> @@</span><br />
<span class="re8">+#! /usr/bin/env python</span><br />
<span class="re8">+</span><br />
<span class="re8">+def importHook<span class="br0">&#40;</span>*args, **kwargs<span class="br0">&#41;</span>:</span><br />
<span class="re8">+ &nbsp; &nbsp;if &#8216;xml.etree&#8217; in args:</span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; &nbsp;raise ImportError</span><br />
<span class="re8">+ &nbsp; &nbsp;else:</span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; &nbsp;return __real__import__<span class="br0">&#40;</span>*args, **kwargs<span class="br0">&#41;</span></span><br />
<span class="re8">+</span><br />
<span class="re8">+import os</span><br />
<span class="re8">+import __builtin__</span><br />
<span class="re8">+__real__import__ = __builtin__.__import__</span><br />
<span class="re8">+__builtin__.__import__ = importHook</span><br />
<span class="re8">+</span><br />
<span class="re8">+try:</span><br />
<span class="re8">+ &nbsp; &nbsp;import xml.etree.cElementTree as cET</span><br />
<span class="re8">+except ImportError:</span><br />
<span class="re8">+ &nbsp; &nbsp;pass</span><br />
<span class="re8">+else:</span><br />
<span class="re8">+ &nbsp; &nbsp;out = os.popen<span class="br0">&#40;</span>&quot;python -c &#8216;import xml.etree.cElementTree as cET; print dir<span class="br0">&#40;</span>cET<span class="br0">&#41;</span>&#8216;&quot;<span class="br0">&#41;</span>.read<span class="br0">&#40;</span><span class="br0">&#41;</span>.strip<span class="br0">&#40;</span><span class="br0">&#41;</span></span><br />
<span class="re8">+ &nbsp; &nbsp;assert str<span class="br0">&#40;</span>dir<span class="br0">&#40;</span>cET<span class="br0">&#41;</span><span class="br0">&#41;</span> == out, <span class="br0">&#40;</span>str<span class="br0">&#40;</span>dir<span class="br0">&#40;</span>cET<span class="br0">&#41;</span><span class="br0">&#41;</span>, out<span class="br0">&#41;</span></span><br />
<span class="re8">+</span></div>
</div>
<p>Quite a novice with python internals, so comments are welcome.</p>
<p>Fredrik conferma, a parte il fatto che il
<div class="codesnip-container" >m = PyErr_Occurred();</div>
<p> è superfluo, ed il bug verrà fixato in Python 2.6.</p>
<ul class="socialwrap size24 row">
<li class="iconOnly"><a rel="nofollow" target="_blank" class="delicious" href="http://delicious.com/post?url=http%3A%2F%2Fwww.slug.it%2Fnaufraghi%2Fho-trovato-un-buggettino-a-celementtree%2F&amp;title=Ho+trovato+un+buggettino+a+cElementTree%21" title="Bookmark this post : Ho trovato un buggettino a cElementTree! on Delicious"><span class="head">Bookmark on Delicious</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="digg" href="http://digg.com/submit?url=http%3A%2F%2Fwww.slug.it%2Fnaufraghi%2Fho-trovato-un-buggettino-a-celementtree%2F&amp;title=Ho+trovato+un+buggettino+a+cElementTree%21&amp;bodytext=Giorni+fa+ho+trovato+il+mio+primo+bug+in+un+codice+sorgente+%22serio%22%21%0D%0A%0D%0A%0D%0APlaying+with+PyInstaller+I+have+found+that+the+final+part+of+_elementtree.c%3A%0D%0AIndex%3A+Modules%2F_elementtree.c%0D%0A%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0D%0A---+Modules%2F_elementtree.c++++++%28revisione+59540%29%0D%0A%2B%2B%2B+Modules%2F_elem" title="Digg this post : Ho trovato un buggettino a cElementTree!"><span class="head">Digg this post</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="facebook" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.slug.it%2Fnaufraghi%2Fho-trovato-un-buggettino-a-celementtree%2F&amp;t=Ho+trovato+un+buggettino+a+cElementTree%21" title="Recommend this post : Ho trovato un buggettino a cElementTree! on Facebook"><span class="head">Recommend on Facebook</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="reddit" href="http://www.reddit.com/submit?url=http%3A%2F%2Fwww.slug.it%2Fnaufraghi%2Fho-trovato-un-buggettino-a-celementtree%2F&amp;title=Ho+trovato+un+buggettino+a+cElementTree%21" title="Share this post : Ho trovato un buggettino a cElementTree! on Reddit"><span class="head">share via Reddit</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="stumble" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.slug.it%2Fnaufraghi%2Fho-trovato-un-buggettino-a-celementtree%2F&amp;title=Ho+trovato+un+buggettino+a+cElementTree%21" title="Share this post : Ho trovato un buggettino a cElementTree! with Stumblers"><span class="head">Share with Stumblers</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="twitter" href="http://twitter.com/home/?status=http%3A%2F%2Fwww.slug.it%2Fnaufraghi%2Fho-trovato-un-buggettino-a-celementtree%2F" title="Tweet this post : Ho trovato un buggettino a cElementTree! on Twitter"><span class="head">Tweet about it</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="rss" href="http://www.slug.it/naufraghi/ho-trovato-un-buggettino-a-celementtree/feed" title="Follow this post : Ho trovato un buggettino a cElementTree! comments"><span class="head">Subscribe to the comments on this post</span></a></li>
</ul>
<div class="clean"></div>
]]></content:encoded>
			<wfw:commentRss>http://www.slug.it/naufraghi/ho-trovato-un-buggettino-a-celementtree/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lavoro</title>
		<link>http://www.slug.it/naufraghi/lavoro/</link>
		<comments>http://www.slug.it/naufraghi/lavoro/#comments</comments>
		<pubDate>Sat, 04 Nov 2006 09:39:14 +0000</pubDate>
		<dc:creator>Matteo</dc:creator>
				<category><![CDATA[informatica]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[software libero]]></category>

		<guid isPermaLink="false">http://www.slug.it/naufraghi/lavoro/</guid>
		<description><![CDATA[Ho cominciato a lavorare! Lavoro per la [Develer](http://www.develer.com/), azienda di sviluppo software e non solo, credo di aver capito specializzata nel non specializzarsi. Sono stato assegnato ad un progetto interno un po&#8217; noioso che consiste nell&#8217;adattare [Achievo](http://www.achievo.org/) per consentire la visione delle statistiche delle ore lavorate anche ai clienti, limitando l&#8217;accesso ai soli progetti a [...]]]></description>
			<content:encoded><![CDATA[<p>Ho cominciato a lavorare! Lavoro per la [Develer](http://www.develer.com/), azienda di sviluppo software e non solo, credo di aver capito specializzata nel non specializzarsi.</p>
<p>Sono stato assegnato ad un progetto interno un po&#8217; noioso che consiste nell&#8217;adattare [Achievo](http://www.achievo.org/) per consentire la visione delle statistiche delle ore lavorate anche ai clienti, limitando l&#8217;accesso ai soli progetti a cui i clienti sono interessati.</p>
<p>Nel farlo ho notato che Achievo è un po&#8217; limitato nell&#8217;interfaccia di gestione delle ore lavorate, prevede l&#8217;inserimento di un giorno e di un numero di ore.</p>
<p>Lavorando con orari liberi in Develer, il totale ore è spesso la somma di strani intervalli, tipo *10:30-12:30 + 13:50-19:20*</p>
<p><span id="more-176"></span></p>
<p>E qua Python viene in aiuto fornendo gli strumenti per creare un banale parser:</p>
<div class="codesnip-container" >
<div class="python codesnip" style="font-family:monospace;"><span class="kw1">import</span> <span class="kw3">datetime</span>, <span class="kw3">time</span></p>
<p><span class="kw1">def</span> parse_hhmm<span class="br0">&#40;</span>val<span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; <span class="kw1">return</span> <span class="kw3">datetime</span>.<span class="kw3">datetime</span><span class="br0">&#40;</span><span class="sy0">*</span><span class="kw3">time</span>.<span class="me1">strptime</span><span class="br0">&#40;</span>val, <span class="st0">&quot;%H:%M&quot;</span><span class="br0">&#41;</span><span class="br0">&#91;</span>:-2<span class="br0">&#93;</span><span class="br0">&#41;</span></p>
<p><span class="kw1">def</span> parse_hinterval<span class="br0">&#40;</span>val<span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; val1, val2 = val.<span class="me1">split</span><span class="br0">&#40;</span><span class="st0">&quot;-&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; d1 = parse_hhmm<span class="br0">&#40;</span>val1<span class="br0">&#41;</span><br />
&nbsp; &nbsp; d2 = parse_hhmm<span class="br0">&#40;</span>val2<span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="kw1">if</span> d2 <span class="sy0">&lt;</span> d1:<br />
&nbsp; &nbsp; &nbsp; &nbsp; d2 += <span class="kw3">datetime</span>.<span class="me1">timedelta</span><span class="br0">&#40;</span>1<span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="kw1">return</span> d2 &#8211; d1</p>
<p><span class="kw1">def</span> parse_wtime<span class="br0">&#40;</span>val<span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; vals = val.<span class="me1">replace</span><span class="br0">&#40;</span><span class="st0">&quot; &quot;</span>,<span class="st0">&quot;&quot;</span><span class="br0">&#41;</span>.<span class="me1">split</span><span class="br0">&#40;</span><span class="st0">&quot;+&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; res = <span class="kw3">datetime</span>.<span class="me1">timedelta</span><span class="br0">&#40;</span>0<span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="kw1">for</span> ival <span class="kw1">in</span> vals:<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="st0">&quot;-&quot;</span> <span class="kw1">in</span> ival:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; res += parse_hinterval<span class="br0">&#40;</span>ival<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; res += parse_hinterval<span class="br0">&#40;</span><span class="st0">&quot;00:00-%s&quot;</span> <span class="sy0">%</span> ival<span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="kw1">return</span> res</p>
<p><span class="kw1">if</span> __name__==<span class="st0">&quot;__main__&quot;</span>:<br />
&nbsp; &nbsp; <span class="kw1">print</span> parse_wtime<span class="br0">&#40;</span><span class="st0">&quot;10:06-13:06 + 14:16-17:47 + 18:08-20:33&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="kw1">print</span> parse_wtime<span class="br0">&#40;</span><span class="st0">&quot;9:47-13:08 + 14:08-19:00&quot;</span><span class="br0">&#41;</span></div>
</div>
<p>Che eseguito restituisce:</p>
<div class="codesnip-container" >
<div class="python codesnip" style="font-family:monospace;"><span class="sy0">&gt;&gt;&gt;</span> <br />
<span class="nu0">8</span>:<span class="nu0">56</span>:00<br />
<span class="nu0">8</span>:<span class="nu0">13</span>:00<br />
<span class="sy0">&gt;&gt;&gt;</span></div>
</div>
<p>Un po&#8217; di documentazione: <a href="http://www.python.org/doc/2.4.1/lib/datetime-timedelta.html">6.10.2 timedelta Objects</a>.
</p>
<ul class="socialwrap size24 row">
<li class="iconOnly"><a rel="nofollow" target="_blank" class="delicious" href="http://delicious.com/post?url=http%3A%2F%2Fwww.slug.it%2Fnaufraghi%2Flavoro%2F&amp;title=Lavoro" title="Bookmark this post : Lavoro on Delicious"><span class="head">Bookmark on Delicious</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="digg" href="http://digg.com/submit?url=http%3A%2F%2Fwww.slug.it%2Fnaufraghi%2Flavoro%2F&amp;title=Lavoro&amp;bodytext=Ho+cominciato+a+lavorare%21+Lavoro+per+la+%5BDeveler%5D%28http%3A%2F%2Fwww.develer.com%2F%29%2C+azienda+di+sviluppo+software+e+non+solo%2C+credo+di+aver+capito+specializzata+nel+non+specializzarsi.%0D%0A%0D%0ASono+stato+assegnato+ad+un+progetto+interno+un+po%27+noioso+che+consiste+nell%27adattare+%5BAchievo%5D%28http%3A%2F%2Fwww.achievo.org%2F%29+per+consentire+la+vis" title="Digg this post : Lavoro"><span class="head">Digg this post</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="facebook" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.slug.it%2Fnaufraghi%2Flavoro%2F&amp;t=Lavoro" title="Recommend this post : Lavoro on Facebook"><span class="head">Recommend on Facebook</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="reddit" href="http://www.reddit.com/submit?url=http%3A%2F%2Fwww.slug.it%2Fnaufraghi%2Flavoro%2F&amp;title=Lavoro" title="Share this post : Lavoro on Reddit"><span class="head">share via Reddit</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="stumble" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.slug.it%2Fnaufraghi%2Flavoro%2F&amp;title=Lavoro" title="Share this post : Lavoro with Stumblers"><span class="head">Share with Stumblers</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="twitter" href="http://twitter.com/home/?status=http%3A%2F%2Fwww.slug.it%2Fnaufraghi%2Flavoro%2F" title="Tweet this post : Lavoro on Twitter"><span class="head">Tweet about it</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="rss" href="http://www.slug.it/naufraghi/lavoro/feed" title="Follow this post : Lavoro comments"><span class="head">Subscribe to the comments on this post</span></a></li>
</ul>
<div class="clean"></div>
]]></content:encoded>
			<wfw:commentRss>http://www.slug.it/naufraghi/lavoro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
