<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Blog</title>
    <link rel="alternate" type="text/html" href="http://www.pigaz.org/" />
    <link rel="self" type="application/atom+xml" href="http://www.pigaz.org/index.xml" />
    <id>tag:www.pigaz.org,2010-01-19://2</id>
    <updated>2010-04-25T18:53:10Z</updated>
    <subtitle>Raccolta ordinata di pensieri sparsi sulla vità, l&apos;universo e tutto il resto. </subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 5.02</generator>

<entry>
    <title type="html">Run-Length Encoding</title>
    <link rel="alternate" type="text/html" href="http://www.pigaz.org/archivi/2010/04/run-length-encoding.html" />
    <id>tag:www.pigaz.org,2010://2.204</id>

    <published>2010-04-25T18:52:13Z</published>
    <updated>2010-04-25T18:53:10Z</updated>

    <summary type="html">Qualche giorno fa, ispirato da una discussione avuta sul forum su questo algoritmo, mi è scattata la scimmia di scrivermi un piccolo programmino che lo usasse per comprimere testo ed immagini. Visto che l&apos;ho finito ed è venuto bene perché...</summary>
    <author>
        <name>Mirco</name>
        <uri>http://www.pigaz.org/</uri>
    </author>
    
    <category term="bmp" label="bmp" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="c" label="c" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="codicesorgente" label="codice sorgente" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="compressione" label="compressione" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="github" label="github" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="lossless" label="lossless" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rle" label="rle" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="testo" label="testo" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="it" xml:base="http://www.pigaz.org/">
        <![CDATA[<p>Qualche giorno fa, ispirato da una discussione avuta sul forum su questo algoritmo, mi è scattata la scimmia di scrivermi un piccolo programmino che lo usasse per comprimere testo ed immagini. Visto che l'ho finito ed è venuto bene perché non scriverne anche sul sito?</p>

<p>RLE è forse l'algoritmo di compressione dati senza perdita più semplice a cui si possa pensare. Si basa sull'idea che spesso all'interno dei file si trovano lunghe sequenze di simboli tutti uguali. L'algoritmo non fa altro che sostituire queste stringhe con una rappresentazione più corta da cui è poi possibile ricostruire quella originale durante la decompressione.</p>

<p>Supponete ad esempio di avere un piccolo file di testo.</p>

<pre>AAAAAAAAABBCDDDDDD</pre>

<p>L'algoritmo legge il file un byte per volta e codifica le varie sequenze con due byte. Il primo rappresenta il simbolo mentre il secondo indica il numero di ripetizioni. Una volta compresso il file conterrà l stringa seguente:</p>

<pre>A9B2C1D6</pre>

<p>Questo approccio ha però un grosso problema. Se si cerca di comprimere un normale file di testo questo diventa più grande invece di diminuire di dimensione. Capire il perché è piuttosto semplice. In quello che scriviamo normalmente è quasi impossibile trovare lunghe sequenze di simboli tutti uguali. Ci esprimiamo usando stringhe, parole, in cui i simboli, le lettere, si ripetono raramente e mai per pi di due o tre volte.</p>

<p>L'ideale sarebbe quindi poter scrivere il byte che rappresenta il numero di ripetizioni solo nei casi in cui ci sia un guadagno, cioè quando un simbolo è ripetuto più di due volte. Questo ci permettere di avere un file compresso in cui le stringhe "BB" e "C" sono lasciate invariate.</p>

<pre>A9BBCD6</pre>

<p>Ora però non possiamo più decomprimere il file perché non siamo in grado di distinguere tra le lettere ed il numero di ripetizioni. Prima, infatti, i byte pari contenevano sempre il simbolo mentre quelli dispari contenevano il contatore.</p>

<p>Esistono varie soluzioni a questo problema. Alcune più più semplici di altre. Quella che preferisco consiste nel far precedere un byte speciale che indichi quando la coppia (simbolo, contatore) sta cominciando. Ad esempio è possibile usare il carattere "#" ottenendo quindi.</p>

<pre>#A9BBC#D6</pre>

<p>In questo modo non abbiamo più problemi ma visto che ora le stringhe sono compresse con tre byte ha senso applicare la compressione solo quando un simbolo è ripetuto almeno quattro volte.</p>

<p>Se si decide di percorre la strada del byte di escape però si deve fare attenzione ad usarne uno che non sia possibile trovare normalmente all'interno dei file che andiamo a comprimere. Se questo non fosse possibile è necessario scrivere questi byte nel file compresso in modo che il decompressore non venga confuso e sia sempre in grado di ricostruire la sequenza originale.</p>

<p>Il modo più semplice consiste nello scrivere sempre e comunque la terna (escape,escape,contatore) sia che questo compaia una volta oppure che sia ripetuto. Le dimensioni del file finale aumentano di qualche byte perché ogni volta che si incontra una stringa composta da byte di escape di lunghezza minore a 3 questa viene compressa usandone tre.</p>

<p>Decidere il byte da usare come escape ha priori semplifica molto il codice ma in alcuni casi può portare a risultati disastrosi. Se per esempio si sceglie il NULL come escape e si comprime un file di testo non abbiamo problemi. Se però proviamo con una immagine bmp in cui compaiono molti punti e linee nere il file compresso avrà quasi sicuramente dimensioni di molto superiori al file originale. Questo succede perché il colore nero ed il NULL sono rappresentati allo stesso modo quando vengono scritti su file.</p>

<p>La cosa migliore è fare una prima scansione del file da comprimere e controllare quale byte è ripetuto il minor numero di volte e sceglierlo come escape. Così è possibile minimizzare l'overhead. Ci si deve poi ricordare di indicare ad inizio file quale byte usare come escape durante la decompressione.</p>

<p>In fine è interessante notare che il valore del contatore nel caso di normali simboli non può mai essere minore di 4 mentre per l'escape mai minore di 1. Se si modifica opportunamente il codice in modo che lo 0 sia interpretato come un 4 è possibile usare un singolo byte per comprimere sequenze di simboli più lunghe di quello che normalmente sarebbe possibile.</p>

<h3>Codice sorgente</h3>

<p>Potete scaricare il codice sorgente dei due programmini che ho scritto da GitHub.<br/>
<a href="http://github.com/mmacrelli/rle" rel="external bookmark" title="Scarica il codice sorgente">http://github.com/mmacrelli/rle</a></p>]]>
        
    </content>
</entry>

<entry>
    <title type="html">Half Life 2 commentary</title>
    <link rel="alternate" type="text/html" href="http://www.pigaz.org/archivi/2010/03/half-life-2-commentary.html" />
    <id>tag:www.pigaz.org,2010://2.202</id>

    <published>2010-03-15T16:46:14Z</published>
    <updated>2010-03-15T16:48:31Z</updated>

    <summary type="html">Girando per la rete mi sono imbattuto in una serie di filmati realizzati da un certo Goose Goose che parlano di Half Life 2 e sequel. Sono veramente interessanti e offrono una nuova itneressante prospetiva sui tre giochi. Half Life...</summary>
    <author>
        <name>Mirco</name>
        <uri>http://www.pigaz.org/</uri>
    </author>
    
    <category term="commentary" label="commentary" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="filmati" label="filmati" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="halflife2" label="half life 2" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="valve" label="valve" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="youtube" label="youtube" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="it" xml:base="http://www.pigaz.org/">
        <![CDATA[<p>Girando per la rete mi sono imbattuto in una serie di filmati realizzati da un certo Goose Goose che parlano di Half Life 2 e sequel. Sono veramente interessanti e offrono una nuova itneressante prospetiva sui tre giochi.</p>

<p><a href="http://www.youtube.com/watch?v=iqlzpcp0zn8" title="Vedi il filmato">Half Life 2</a>, <a href="http://video.google.com/videoplay?docid=-7791992304107970746" title="Vedi il filamto">Episodio 1</a>, <a href="http://video.google.com/videoplay?docid=6497195168779169993" title="Vadi il filmato">Episodio 2</a>.</p>]]>
        
    </content>
</entry>

<entry>
    <title type="html">Steam su Mac!</title>
    <link rel="alternate" type="text/html" href="http://www.pigaz.org/archivi/2010/03/steam-su-mac.html" />
    <id>tag:www.pigaz.org,2010://2.201</id>

    <published>2010-03-12T22:57:14Z</published>
    <updated>2010-03-12T23:00:59Z</updated>

    <summary type="html">Valve sembra essersi accorta che in giro per il mondo ci sono milioni di utenti Apple che vorrebbero giocare ma non lo fanno. Perché? Semplice! Nessuno sviluppa giochi nativi per OS X tranne Blizzard con il suo WoW. Sostanzialmente non...</summary>
    <author>
        <name>Mirco</name>
        <uri>http://www.pigaz.org/</uri>
    </author>
    
    <category term="apple" label="apple" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="drm" label="drm" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="halflife" label="half life" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="left4dead" label="left 4 dead" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mac" label="mac" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="osx" label="osx" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="portal" label="portal" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quake" label="quake" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="steam" label="steam" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="unrealtournament" label="unreal tournament" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="valve" label="valve" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="it" xml:base="http://www.pigaz.org/">
        <![CDATA[<p>Valve sembra essersi accorta che in giro per il mondo ci sono milioni di utenti Apple che vorrebbero giocare ma non lo fanno. Perché? Semplice! Nessuno sviluppa giochi nativi per OS X tranne Blizzard con il suo WoW. Sostanzialmente non esiste un mercato videoludico su Mac e Valve ha pensato bene di crearne uno e di accaparrarsi una immensa fetta di mercato che nessuno sta sfruttando.</p>

<p>Quando verrà rilasciato ad Aprile ci saranno disponibili solo titoli Valve sullo store. Se il porting di Steam e del Source Engine su OS X avrà successo mostrerà a molte società he sviluppare Apple è redditizzio e potrebbe innescare una vera e propria rivoluzione. Fra un anno scommetto che ci ritroveremo con quasi un centinaio di titoli.</p>

<p>Valve poi si riconferma l'unica a pensare agli utenti e dimostra che il suo DRM l'unico decente in circolazione. Infatti chi acquisterà, o ha già acquistato, una licenza per un suo gioco su Windows potra giocarci anche su Mac. Questo significa che non mi dovrò ricomprare Half Life Left 4 Dead e Portal!</p>

<p>Ora spero che Id software e quelli di Epic seguano a ruota. Ho voglia di giocare al vecchio Unreal Tournament e Quake 2. Mentre aspetto che nel frattempo Valve si decida a rilasciare Episode 3.</p>]]>
        
    </content>
</entry>

<entry>
    <title type="html">Google Buzz</title>
    <link rel="alternate" type="text/html" href="http://www.pigaz.org/archivi/2010/02/google-buzz.html" />
    <id>tag:www.pigaz.org,2010://2.199</id>

    <published>2010-02-10T20:48:07Z</published>
    <updated>2010-02-10T20:50:28Z</updated>

    <summary type="html">Vediamo se Google Buzz riesce veramente ad intercettare gli update dal mio sito......</summary>
    <author>
        <name>Mirco</name>
        <uri>http://www.pigaz.org/</uri>
    </author>
    
    <category term="blog" label="blog" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="buzz" label="buzz" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="google" label="google" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="macrelli" label="macrelli" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mirco" label="mirco" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="update" label="update" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="it" xml:base="http://www.pigaz.org/">
        <![CDATA[<p>Vediamo se Google Buzz riesce veramente ad intercettare gli update dal mio sito...</p>]]>
        
    </content>
</entry>

<entry>
    <title type="html"><![CDATA[Pagina di prova per i tag <audio> e <video>]]></title>
    <link rel="alternate" type="text/html" href="http://www.pigaz.org/archivi/2010/01/pagina-di-prova-per-i-tag-e.html" />
    <id>tag:www.pigaz.org,2010://2.161</id>

    <published>2010-01-24T13:34:27Z</published>
    <updated>2010-01-24T20:40:06Z</updated>

    <summary type="html"><![CDATA[Sigla di chiusura della seconda serie di Spice and Wolf Il tuo browser non supporta il tag &lt;video&gt;. Ookami_to_Koushinryou_II_ED.mp4 Ookami_to_Koushinryou_II_ED.ogg Toccata e Fuga in D minore di J.S. Bach Il tuo browser non supporta il tag &lt;audio&gt;. Bach_Toccata_e_Fuga.m4a Bach_Toccata_e_Fuga.ogg...]]></summary>
    <author>
        <name>Mirco</name>
        <uri>http://www.pigaz.org/</uri>
    </author>
    
    <category term="aac" label="aac" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="audio" label="audio" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="bach" label="bach" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="h264" label="h264" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="html" label="html" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="m4a" label="m4a" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mp4" label="mp4" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ogg" label="ogg" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="spiceandwolf" label="spice and wolf" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="tag" label="tag" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="video" label="video" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="vorbis" label="vorbis" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="it" xml:base="http://www.pigaz.org/">
        <![CDATA[<h3>Sigla di chiusura della seconda serie di Spice and Wolf</h3>
<p><video width="656" height="368" controls>
<source src="/archivi/2010/01/Ookami_to_Koushinryou_II_ED.mp4" type="video/mp4" />
<source src="/archivi/2010/01/Ookami_to_Koushinryou_II_ED.ogg" type="video/ogg" />
Il tuo browser non supporta il tag &lt;video&gt;.
</video>
<a href="/archivi/2010/01/Ookami_to_Koushinryou_II_ED.mp4">Ookami_to_Koushinryou_II_ED.mp4</a><br/>
<a href="/archivi/2010/01/Ookami_to_Koushinryou_II_ED.ogg">Ookami_to_Koushinryou_II_ED.ogg</a>
</p>

<h3>Toccata e Fuga in D minore di J.S. Bach</h3>
<p><audio controls>
<source src="/archivi/2010/01/Bach_Toccata_e_Fuga.m4a" />
<source src="/archivi/2010/01/Bach_Toccata_e_Fuga.ogg" />
Il tuo browser non supporta il tag &lt;audio&gt;.
</audio>
<a href="/archivi/2010/01/Bach_Toccata_e_Fuga.m4a">Bach_Toccata_e_Fuga.m4a</a><br/>
<a href="/archivi/2010/01/Bach_Toccata_e_Fuga.ogg">Bach_Toccata_e_Fuga.ogg</a>
</p>]]>
        
    </content>
</entry>

<entry>
    <title type="html">I giochi costano troppo?</title>
    <link rel="alternate" type="text/html" href="http://www.pigaz.org/archivi/2009/03/i-giochi-costano-troppo.html" />
    <id>tag:www.pigaz.org,2009://2.160</id>

    <published>2009-03-03T00:36:50Z</published>
    <updated>2010-01-23T20:32:16Z</updated>

    <summary type="html"><![CDATA[Questo pomeriggio, mentre facevo il mio solito giro su Digg, mi sono imbattuto su un interessante articolo uscito circa due settimane fa dal titolo &quot;Valve: Are Games Too Expensive?&quot;. Si tratta di un interessante sunto della presentazione che Gabe Nevel,...]]></summary>
    <author>
        <name>Mirco</name>
        <uri>http://www.pigaz.org/</uri>
    </author>
    
    <category term="articolo" label="articolo" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="costano" label="costano" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="digg" label="digg" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="drm" label="drm" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="giochi" label="giochi" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="left4dead" label="left 4 dead" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="prezzo" label="prezzo" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="troppo" label="troppo" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="valve" label="valve" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="it" xml:base="http://www.pigaz.org/">
        <![CDATA[<p>Questo pomeriggio, mentre facevo il mio solito giro su Digg, mi sono imbattuto su un interessante articolo uscito circa due settimane fa dal titolo &quot;<a href="http://www.edge-online.com/features/valve-are-games-too-expensive" title="Leggi l'articolo originale">Valve: Are Games Too Expensive?</a>&quot;. Si tratta di un interessante sunto della presentazione che Gabe Nevel, presidente di Valve, ha tenuto al DICE Summit lo scorso Febbraio. Il messaggio di base è che il prezzo dei giochi è troppo alto e questo convince sempre più persone a ricorrere alla pirateria.</p>

<p>A 70€ a botta per quelli appena usciti? Si costano troppo.</p>

<p>La cosa interessante del talk però è che, altre alle belle parole, vengono riportati anche numeri di esperimenti effettuati da Valve con i prezzi dei giochi su Steam. Quello più interessante riguarda la promozione di metà Febbraio che ha riguardato Left 4 Dead. Secondo i numeri infatti durante quel weekend di saldi in cui il prezzo del gioco è stato dimezzato il numero di copie vendute è cresciuto del 3000% (tre mila non ho messo per sbaglio uno zero di troppo).</p>

<p>Avevo sospettato che la promozione avesse avuto successo. Io stesso ho comprato il gioco proprio in quei giorni e durante il download dal sito i server sembravano un po' affaticati dal troppo carico. Non mi sarei mai immaginato però un incremento di vendite così consistente.</p>

<p>Sono un grande fan di Valve. I suoi giochi sono sempre curati fin nei minimi dettagli, il supporto è eccezionale e il DRM di Steam è il meno peggio che si può trovare in giro in questo momento. Ma sopra tutto sono giochi divertenti. </p>

<p>Mi fa piacere vedere che finalmente qualcuno nell'industria dei videogiochi sta cominciando a capire quali sono i veri problemi. Se tutti quanti facessero meno giochi ma migliori e ci fossero prezzi più umani sono sicuro che la maggior parte della pirateria di oggi scomparirebbe.</p>]]>
        
    </content>
</entry>

<entry>
    <title type="html">Movable Type 4.23</title>
    <link rel="alternate" type="text/html" href="http://www.pigaz.org/archivi/2008/12/movable-type-423.html" />
    <id>tag:www.pigaz.org,2008://2.159</id>

    <published>2008-12-09T19:39:23Z</published>
    <updated>2010-01-23T20:33:34Z</updated>

    <summary type="html">Si tratta di minor release quindi non ci sono stati grandi stravolgimenti a livello di traduzione. Le stringhe modificate sono circa una quarantina ed oltre tutto sono piuttosto oscure. Non vanno a toccare zone importanti dell&apos;interfaccia di amministrazione quindi se...</summary>
    <author>
        <name>Mirco</name>
        <uri>http://www.pigaz.org/</uri>
    </author>
    
    <category term="aggiornamento" label="aggiornamento" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="italiana" label="italiana" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="javascript" label="javascript" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="movabletype" label="movable type" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="traduzione" label="traduzione" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="it" xml:base="http://www.pigaz.org/">
        <![CDATA[<p>Si tratta di minor release quindi non ci sono stati grandi stravolgimenti a livello di traduzione. Le stringhe modificate sono circa una quarantina ed oltre tutto sono piuttosto oscure. Non vanno a toccare zone importanti dell'interfaccia di amministrazione quindi se non volete aggiornare potete pure rimanere con quella vecchia.</p>

<p>Per quelli che invece DEVONO avere tutto aggiornato e sempre potete tranquillamente andare nel solito posto su google code per scaricare il nuovo file zip.</p>

<p>Edit: Ho aggiornato la traduzione che conteneva un file JavaScript con una lunga serie di errori di sintassi. Grazie a Fabio Vescarelli di <a href="http://blogosfere.it/" title="Visita blogosfere">blogosfere.it</a> per avermi mandato il file corretto.</p>]]>
        
    </content>
</entry>

<entry>
    <title type="html">Project Euler</title>
    <link rel="alternate" type="text/html" href="http://www.pigaz.org/archivi/2008/11/project-euler.html" />
    <id>tag:www.pigaz.org,2008://2.158</id>

    <published>2008-11-21T01:49:18Z</published>
    <updated>2010-01-23T20:34:46Z</updated>

    <summary type="html">Problema: Come passare in maniera intelligente il proprio tempo libero alla sera? Guardare la Talpa è decisamente fuori discussione quindi in genere ripiego sul forum, nella sezione Programmazione sperando di vedere un nuovo contest in cui cimentarmi. Purtroppo però ultimamente...</summary>
    <author>
        <name>Mirco</name>
        <uri>http://www.pigaz.org/</uri>
    </author>
    
    <category term="concorsi" label="concorsi" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="contest" label="contest" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="esercizi" label="esercizi" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="matematici" label="matematici" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="numeri" label="numeri" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="palindromi" label="palindromi" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="projecteuler" label="project euler" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ruby" label="ruby" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="it" xml:base="http://www.pigaz.org/">
        <![CDATA[<p>Problema: Come passare in maniera intelligente il proprio tempo libero alla sera? Guardare la Talpa è decisamente fuori discussione quindi in genere ripiego sul forum, nella sezione Programmazione sperando di vedere un nuovo contest in cui cimentarmi. Purtroppo però ultimamente gli utenti che organizzava questi piccoli concorsi sembra aver perso l'interesse di portarli avanti quindi per un po' sono rimasto a piedi.</p>

<p>Per un po'. Perché ora ho trovato quello che diventerà senza dubbio uno dei miei siti preferiti di sembre. <a href="http://projecteuler.net" title="Visita il sito di Project Euler">Project Euler</a> è una raccolta di più di 250 problemi di matematica ed informatica da poter risolvere con il linguaggio e gli strumenti che più si preferisce.</p>

<p>Una volta trovata la soluzione la si può confrontare con quella di altri centinaia di utenti e spesso leggere alcuni approfondimenti sugli algoritmi migliori da usare.</p>

<p>Come esempio riporto il codice che ho usato per trovare la soluzione al problema numero 4.</p>

<pre><code>Infinity = 1.0/0.0

class Fixnum
  def is_palindromic?
    self.to_s == self.to_s.reverse
  end
end

def largest_palindrome(low,high)
  max = -Infinity
  low.upto high do |x|
    x.upto high do |y|
      z = x * y
      max = z if z.is_palindromic? and z > max
    end
  end
  max
end

puts largest_palindrome(100,999)</code></pre>]]>
        
    </content>
</entry>

<entry>
    <title type="html">Spam Spam Spam!</title>
    <link rel="alternate" type="text/html" href="http://www.pigaz.org/archivi/2008/11/spam-spam-spam.html" />
    <id>tag:www.pigaz.org,2008://2.157</id>

    <published>2008-11-16T22:32:09Z</published>
    <updated>2010-01-23T21:52:21Z</updated>

    <summary type="html">Una delle modifiche più interessanti apportate a Movable Type 4.2 è stata senza dubbio l&apos;aggiunta di TypePad Antispam. Si tratta di un sistema centralizza di filtraggio dei commenti per intercettare spam sui blog che ha rimpiazzato i vecchi filtri che...</summary>
    <author>
        <name>Mirco</name>
        <uri>http://www.pigaz.org/</uri>
    </author>
    
    <category term="antispam" label="antispam" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="commenti" label="commenti" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="movabletype" label="movable type" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="spam" label="spam" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="trackback" label="trackback" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="typepad" label="typepad" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="it" xml:base="http://www.pigaz.org/">
        <![CDATA[<p>Una delle modifiche più interessanti apportate a Movable Type 4.2 è stata senza dubbio l'aggiunta di TypePad Antispam. Si tratta di un sistema centralizza di filtraggio dei commenti per intercettare spam sui blog che ha rimpiazzato i vecchi filtri che erano stati ereditati dalla vecchia 3.0. Il sistema oltre a funzionare benissimo (sono quattro mesi che non cestino più manualmente un messaggio di spam) è anche molto semplice da usare.</p>

<p>Prima non ci facevo caso, svuotavo il cestino dei messaggi senza guardare i vari numeri. Trattandosi di spam era già troppo il tempo che gli dedicavo. Ora però il numero di messaggi bloccati è bene in evidenza nella pagina principale di Movable Type e devo dire che la quantità di spam che mi arriva è veramente assurda. Guardate un po' qui sotto:</p>

<p><img width="300" height="77" src="/archivi/2008/11/spam.png" alt="spam.png" /></p>

<p>3680 commenti in 4 mesi, cioè più di trenta messaggi completamente inutili al giorno.</p>]]>
        
    </content>
</entry>

<entry>
    <title type="html">Supporta Wikipedia!</title>
    <link rel="alternate" type="text/html" href="http://www.pigaz.org/archivi/2008/11/supporta-wikipedia.html" />
    <id>tag:www.pigaz.org,2008://2.156</id>

    <published>2008-11-08T20:15:35Z</published>
    <updated>2010-01-23T20:35:34Z</updated>

    <summary type="html"></summary>
    <author>
        <name>Mirco</name>
        <uri>http://www.pigaz.org/</uri>
    </author>
    
    <category term="donazioni" label="donazioni" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="supporto" label="supporto" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="wikipedia" label="wikipedia" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="it" xml:base="http://www.pigaz.org/">
        <![CDATA[<a href="http://wikimediafoundation.org/wiki/Donate/it"><img alt="Wikipedia Affiliate Button" src="http://upload.wikimedia.org/wikipedia/foundation/3/34/2008_fundraiser_banner_button-it.png" /></a>]]>
        
    </content>
</entry>

<entry>
    <title type="html">Apple Shitmouse</title>
    <link rel="alternate" type="text/html" href="http://www.pigaz.org/archivi/2008/10/apple-shitmouse.html" />
    <id>tag:www.pigaz.org,2008://2.155</id>

    <published>2008-10-20T15:19:05Z</published>
    <updated>2010-01-23T20:37:12Z</updated>

    <summary type="html">Ci sono tante cose che Apple ha imparato a fare meglio di tutti quanti negli anni ma i mouse proprio non è mai stata capace. Il Mighty Mouse in dotazione mi ha sempre dato problemi ed ora ha definitivamente abbandonato...</summary>
    <author>
        <name>Mirco</name>
        <uri>http://www.pigaz.org/</uri>
    </author>
    
    <category term="apple" label="apple" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="difetti" label="difetti" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ebay" label="ebay" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="logitech" label="logitech" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mighty" label="mighty" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mouse" label="mouse" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mx400" label="mx400" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="orrendo" label="orrendo" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ottico" label="ottico" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="sensore" label="sensore" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="tasti" label="tasti" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="it" xml:base="http://www.pigaz.org/">
        <![CDATA[<p>Ci sono tante cose che Apple ha imparato a fare meglio di tutti quanti negli anni ma i mouse proprio non è mai stata capace. Il Mighty Mouse in dotazione mi ha sempre dato problemi ed ora ha definitivamente abbandonato questo mondo. L'ho usato per circa un anno e le mie impressioni sono state fin da subito molto negative.</p>

<p>La prima cosa che si nota usando il mouse è che i due tasti principali sono in realtà un unico pezza di plastica. Questo fa si che sia fisicamente impossibile premere i due tasti contemporaneamente. A volte poi premendo il tasto sinistro si finisce per premere il tasto destro o viceversa creando molta confusione.</p>

<a class="right-align" title="Foto del nuovo mouse" href="/archivi/2008/10/mx_400.jpg"><img src="/archivi/2008/10/mx_400_thumb.jpg" alt="mx_400.jpg" width="172" height="200" /></a>

<p>Dopo circa una settimana ci si accorge anche del fatto che il mouse sia in realtà un aspirapolvere. Tutti i mouse che ho usato usano piccoli punti di appoggio per rimanere sollevati dal mousepad e diminuire la frizione ma questo no. Il mighty ha un immensa fascia che finisce col raccogliere ogni singola briciola, granello di polvere e capello presente sul mouse pad. Se non lo si pulisce costantemente lo scorrimento diventa difficile.</p>

<p>Il sistema d puntamento è ai livelli dei primi mouse Logitech del 2001, schizzinoso, impreciso e spesso saltella. Sono anni che c'è la tecnologia laser e non riesco a spiegarmi come mai Apple abbia deciso di usare la obsoleta tecnologia ad infrarossi.</p>

<p>Il vero anello debole è però la rotellina. In principio può sembrare una buona idea ma ci si accorge presto che è troppo piccola da usare ed praticamente impossibile usarla come terzo bottone. E come colpo di scena finale dopo un po' che la si usa smette magicamente di scorrere e si è costretti a ripulirla costantemente.</p>

<p>La soluzione a tutti questi problemi la potete vedere qui accanto e si chiama Logitech MX400, 19.90 su eBay spese di spedizione incluse.</p>]]>
        
    </content>
</entry>

<entry>
    <title type="html">Matrice incompleta</title>
    <link rel="alternate" type="text/html" href="http://www.pigaz.org/archivi/2008/09/matrice-incompleta.html" />
    <id>tag:www.pigaz.org,2008://2.154</id>

    <published>2008-09-25T15:27:54Z</published>
    <updated>2010-01-23T20:38:26Z</updated>

    <summary type="html">Qualche tempo fa mi è capitato di dover usare la classe Matrix presente nella libreria standard di Ruby e mi sono subito accorto che è terribilmente incompleta. Personalmente la ritengo veramente scritta con i piedi, per elencare tutti i problemi...</summary>
    <author>
        <name>Mirco</name>
        <uri>http://www.pigaz.org/</uri>
    </author>
    
    <category term="classe" label="classe" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="estensione" label="estensione" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="matrici" label="matrici" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quadrata" label="quadrata" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rettangolari" label="rettangolari" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ruby" label="ruby" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="it" xml:base="http://www.pigaz.org/">
        <![CDATA[<p>Qualche tempo fa mi è capitato di dover usare la classe Matrix presente nella libreria standard di Ruby e mi sono subito accorto che è terribilmente incompleta. Personalmente la ritengo veramente scritta con i piedi, per elencare tutti i problemi che ha non mi basterebbero 10 post sul blog quindi elencherò solo tre piccoli problemi per cui ho trovato tre piccole soluzioni molto eleganti e che vale la pena leggere per capire quanto Ruby sia affascinante come linguaggio.</p>

<p>Il problema principale è dovuto al fatto che chi ha scritto la classe ha pensato le matrici come oggetti non mutabili. Una volta creati non è possibile modificare i valori al suo interno ma soltanto leggerli. Per risolvere questo problema basta definire la funzione <code>[]=</code>.</p>

<pre><code>class Matrix
  def []=(row,column,value)
    @rows[row][column] = value
  end
end</code></pre>

<p>Il secondo problema è la stessa creazione della matrice. Questa può essere fatta soltanto passando una serie di righe che devono essere già state lette quindi un algoritmo in linea durante la lettura di un file non è possibile. Per risolvere questo basta definire l'operatore <code>&lt;&lt;</code> ed usarlo per concatenare una nuova riga.</p>

<pre><code>class Matrix
  def &lt;&lt;(row)
    @rows &lt;&lt; row
  end
end</code></pre>

<p>L'ultimo problema è dovuto al fatto che Matrix non fa distinzione tra matrici quadrate, rettangolari o semplici vettori quindi si devono usare <code>row_size</code> e <code>col_size</code> per avere il numero di righe e colonne presenti. Nel caso delle matrici quadrate mi è bastato estendere la classe e usare <code>alias</code> al suo interno per definire un nuovo nome per il metodo row_size.</p>

<pre><code>class SquareMatrix &lt; Matrix
  alias size row_size
end</code></pre>]]>
        
    </content>
</entry>

<entry>
    <title type="html">Movable Type 4.2</title>
    <link rel="alternate" type="text/html" href="http://www.pigaz.org/archivi/2008/08/movable-type-42.html" />
    <id>tag:www.pigaz.org,2008://2.153</id>

    <published>2008-08-14T12:21:29Z</published>
    <updated>2010-01-23T20:38:47Z</updated>

    <summary type="html">Per chi non se ne fosse accorto due giorni fa è stata rilasciata la versione stabile di Movable Type 4.2 quindi ne approfitto per annunciare che oggi ho rilasciato un aggiornamento della traduzione italiana da usare per questa versione. Andate...</summary>
    <author>
        <name>Mirco</name>
        <uri>http://www.pigaz.org/</uri>
    </author>
    
    <category term="aggiornamento" label="aggiornamento" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="italiana" label="italiana" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="movabletype" label="movable type" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="traduzione" label="traduzione" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="it" xml:base="http://www.pigaz.org/">
        <![CDATA[<p>Per chi non se ne fosse accorto due giorni fa è stata rilasciata la versione stabile di Movable Type 4.2 quindi ne approfitto per annunciare che oggi ho rilasciato un aggiornamento della traduzione italiana da usare per questa versione.</p>

<p>Andate a scaricarla mentre è ancora calda.</p>]]>
        
    </content>
</entry>

<entry>
    <title type="html">Olimpiadi 2008</title>
    <link rel="alternate" type="text/html" href="http://www.pigaz.org/archivi/2008/08/olimpiadi-2008.html" />
    <id>tag:www.pigaz.org,2008://2.152</id>

    <published>2008-08-08T16:12:05Z</published>
    <updated>2010-01-23T20:39:14Z</updated>

    <summary type="html">Oggi pomeriggio sono finalmente iniziate le olimpiadi del 2008 ospitate dalla Cina. Dopo la cerimonia di apertura non posso che urlare... Forza Italia!!! Speriamo di vincere un bel po&apos; di medaglie e di fare meglio di Atene 2004....</summary>
    <author>
        <name>Mirco</name>
        <uri>http://www.pigaz.org/</uri>
    </author>
    
    <category term="2008" label="2008" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="atene" label="atene" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="cina" label="cina" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="italia" label="italia" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="medaglie" label="medaglie" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="olimpiadi" label="olimpiadi" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="it" xml:base="http://www.pigaz.org/">
        <![CDATA[<p>Oggi pomeriggio sono finalmente iniziate le olimpiadi del 2008 ospitate dalla Cina. Dopo la cerimonia di apertura non posso che urlare...</p>

<p>Forza Italia!!!</p>

<p>Speriamo di vincere un bel po' di medaglie e di fare meglio di Atene 2004.</p>]]>
        
    </content>
</entry>

<entry>
    <title type="html">Last.fm 2.0</title>
    <link rel="alternate" type="text/html" href="http://www.pigaz.org/archivi/2008/07/lastfm-20.html" />
    <id>tag:www.pigaz.org,2008://2.151</id>

    <published>2008-07-18T15:58:14Z</published>
    <updated>2010-01-23T20:40:27Z</updated>

    <summary type="html">Nella giornata di ieri è stato rilasciato, finalmente, il nuovo sito di last.fm che era stato disponibile per un po&apos; di tempo ai soli utenti abbonati per una anteprima. Dico finalmente perché il vecchio sito era sempre stato un po&apos;...</summary>
    <author>
        <name>Mirco</name>
        <uri>http://www.pigaz.org/</uri>
    </author>
    
    <category term="colori" label="colori" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="css" label="css" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="lastfm" label="last.fm" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="pubblicità" label="pubblicità" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rimuovere" label="rimuovere" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="sito" label="sito" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="tema" label="tema" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="it" xml:base="http://www.pigaz.org/">
        <![CDATA[<p>Nella giornata di ieri è stato rilasciato, finalmente, il nuovo sito di last.fm che era stato disponibile per un po' di tempo ai soli utenti abbonati per una anteprima. Dico finalmente perché il vecchio sito era sempre stato un po' confusionario e mi faceva un po' schifo come stile. Purtroppo non è ancora perfetto ma i difetti sono pochi e ci si può porre rimedio con un po' di hack qua e la.</p>

<p>Prima di tutto la pubblicità che io odio. Sono consapevole che si tratta di un servizio gratuito e che sopravvive grazie agli annunci che pubblica sulle pagine dei visitatori ma io non riesco a sopportare queste luccicanti immagini animate. Su safari ho installato da sempre SafariBlock che fa il suo sporco lavoro ed elimina tutto quanto presente sul sito.</p>

<p>Ci sono poi alcune parti della pagina che secondo me andrebbero riviste come l'effetto :hover dei link di navigazione principale e il footer che è enorme. A questi si rimedia usando l'opzione Site Alteration di SafariStand e un pochino di CSS. Questo per esempio e quello che sto usando io in questo momento.</p>

<pre><code>#footerLinks, #footerLogos, #footer_ads {
	display: none !important;
}
#footerCopy {
	padding-top: 0 !important;
}
#LastFooter{
	margin-top: 20px !important;
	padding-top: 0 !important;
}
#primaryNav a:hover {
	background-color: white;
	color: red !important;
	text-decoration: none !important;	
}</code></pre>

<p>Il vecchio sito era esteticamente orrendo. Grazie al cielo c'era un intero <a href="http://www.lastfm.it/group/Last.fm+CSS+Color+Changer" title="Vai alla pagina del gruppo Last.fm CSS Color Changer">gruppo dedito alla creazione di nuovi temi</a> da usare con il sito tramite file CSS modificati. Per ora ovviamente non ci sono temi compatibili con il nuovo design ma tempo qualche giorno e i primi cominceranno a spuntare sul forum di discussione.</p>]]>
        
    </content>
</entry>

</feed>
