<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
        <title>The Cattle Grid</title>
        <link>http://www.cattlegrid.info/blog/</link>
        <description>this empty space you call your home</description>
        <language>en</language>
        <copyright>Copyright 2009</copyright>
        <lastBuildDate>Sat, 20 Jun 2009 11:05:58 +0000</lastBuildDate>
        <generator>http://www.sixapart.com/movabletype/</generator>
        <docs>http://www.rssboard.org/rss-specification</docs>
        
        <item>
            <title>Possibile giornata su Moose con Dave Rolsky a Pisa in Ottobre 2009</title>
            <description><![CDATA[<p>Perl.It sta cercando di organizzare, attorno all'Italian Perl Workshop 2009, una giornata dedicata a Moose con Dave Rolsky. Tutti i dettagli sono disponibili qui:</p>

<p><a href="http://conferences.yapceurope.org/ipw2009/news/422">http://conferences.yapceurope.org/ipw2009/news/422</a></p>

<p>Perl.It is trying to organize, around the Italian Perl Workshop 2009, a day devoted to Moose with Dave Rolsky. All the details are available here:</p>

<p><a href="http://conferences.yapceurope.org/ipw2009/news/422">http://conferences.yapceurope.org/ipw2009/news/422</a></p>]]></description>
            <link>http://www.cattlegrid.info/blog/2009/06/possibile-giornata-su-moose-co.html</link>
            <guid>http://www.cattlegrid.info/blog/2009/06/possibile-giornata-su-moose-co.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">ipw2009</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">italiano</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">moose</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">perl</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">pisa</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">rolsky</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">workshop</category>
            
            <pubDate>Sat, 20 Jun 2009 11:05:58 +0000</pubDate>
        </item>
        
        <item>
            <title>Italian Perl Workshop 2009</title>
            <description><![CDATA[<p><img src="http://conferences.yapceurope.org/ipw2009/images/bg_title_2009.png" alt="" class="right" style="float:right" /></p>

<p>Da oggi sono ufficialmente aperti <em>iscrizioni</em> e <em>call for paper</em> per l'edizione <strong>2009</strong> (la 5a) dell'<strong>Italian Perl Workshop</strong>. L'evento si terrà a Pisa, presso l'Area di Ricerca del <span class="caps">CNR, </span>che è sponsor di questa edizione dell'evento.</p>

<p>Lo scorso anno si sono registrati numeri piuttosto interessanti per un workshop: oltre 30 talk (2 tracce per 2 giorni), 120 partecipanti, 20 sponsor, ospiti internazionali del calibro di Marcus Ramberg, Matt Trout, Tim Bunce e Rafael Garcia Suarez.</p>

<p>Quest'anno si punta a fare ancora meglio. Pertanto, il mio suggerimento è di <strong>non mancare assolutamente</strong>. <a href="http://conferences.yapceurope.org/ipw2009/">Cliccate qui per visitare il sito del workshop</a></p>]]></description>
            <link>http://www.cattlegrid.info/blog/2009/05/httpconferencesyapceuropeorgip.html</link>
            <guid>http://www.cattlegrid.info/blog/2009/05/httpconferencesyapceuropeorgip.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">conference</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">italiano</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">italy</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">perl</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">workshop</category>
            
            <pubDate>Thu, 28 May 2009 22:44:22 +0000</pubDate>
        </item>
        
        <item>
            <title>mod_perlite project seeks help</title>
            <description><![CDATA[<p><a href="http://modperlite.org">mod_perlite</a> is a very interesting project which aims to create a lightweight Perl module for Apache which can compete in the market range where <span class="caps">PHP </span>dominates.</p>

<p>The project already has something which actually works, but which needs to be polished.  If you can and want to help, take a look at the web site!</p>

<p>Italian: per gli italiani, <a href="http://www.perl.it/blog/archives/000633.html">qui c'è un articolo in merito</a>.</p>]]></description>
            <link>http://www.cattlegrid.info/blog/2009/05/mod-perlite-project-seeks-help.html</link>
            <guid>http://www.cattlegrid.info/blog/2009/05/mod-perlite-project-seeks-help.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">mod_perl</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">mod_perlite</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">perl</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">php</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">programming</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">web</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">webdev</category>
            
            <pubDate>Wed, 06 May 2009 08:46:05 +0000</pubDate>
        </item>
        
        <item>
            <title>Pocket Perl</title>
            <description><![CDATA[<p><img src="http://www.apogeonline.com/2008/libri/9788850327782/8850327782.gif" alt="" class="right" style="float:right" /></p>

<h3><a href="http://www.apogeonline.com/libri/9788850327782/scheda"><strong>Pocket Perl</strong></a><br />
<em>Stefano Rodighiero</em><br />
<a href="http://www.apogeonline.com/">Apogeo</a>, 2008<br />
<span class="caps">ISBN</span>: 978-88-503-2778-2<br />
€ 7.90</h3>

<p>Rating: <em>4.5/5</em></p>

<p>Pocket Perl ha due virtù immediatamente riconoscibili: il prezzo contenuto ed il piccolo formato. Quest'ultima caratteristica fornisce al novizio di Perl che si accinge alla lettura un'idea di "snellezza" che lo spinge a cimentarsi nell'impresa, a differenza di un testo di grosse dimensioni che potrebbe scoraggiare qualcuno.</p>

<p>Va bene, siamo solo alle apparenze per ora. Il contenuto sarà ciò che ci si aspetta, e cioè una guida chiara, sufficientemente sintetica ma al contempo approfondita al punto giusto, per imparare Perl? Andiamo dunque ad indagare.</p>

<p>Intelligentemente, il libro non parte subito parlando di Perl come linguaggio: la prima cosa che assomiglia ad un "Hello, World" è infatti a pagina 10 (e si tratta solo di un test per verificare che l'installazione sia funzionante, l'"Hello World" vero è a pagina 15). Prima di ciò viene sinteticamente indicato come installare l'interprete, e soprattutto vengono messi in evidenza i punti di forza di Perl <strong>non</strong> relativi al linguaggio in sé. Anzitutto Rodighiero parla di <span class="caps">CPAN, </span>l'immenso archivio di moduli Perl che è opportuno che ogni sviluppatore o aspirante tale impari ad utilizzare sin dall'inizio; a questo scopo vengono fornite preziose indicazioni su come configurare <span class="caps">CPAN, </span>scaricare ed installare i moduli. Il secondo punto di forza svelato è la community: è altamente probabile che attorno a Perl ruoti una delle più interessanti comunità di sviluppatori nel mondo dei linguaggi di programmazione, e qui ne vengono indicati i principali "punti di ingresso" a livello italiano ed internazionale. Infine, viene presentato l'immenso mondo della documentazione fornita con l'interprete, vera e propria colonna portante della distribuzione.</p>

<p>La trattazione relativa agli aspetti del linguaggio, pur trovandoci di fronte ad un libro tascabile, è alquanto articolata e rigorosa: si spazia dalle basi fino ad oggetti, regular expression e persino vere e proprie "chicche" come la trasformata di Schwartz. Il capitolo 8, inoltre, fornisce un'interessante panoramica su quanto disponibile per quanto riguarda programmazione web, <span class="caps">GUI, </span>ed altre interazioni della propria applicazione con il mondo esterno - chiaramente, in questo caso, viene solo scalfita la superficie dei singoli argomenti.</p>

<p>I contenuti sono piuttosto aggiornati, pertanto tutte le principali caratteristiche della versione 5.10 di perl vengono trattate.  È un peccato che alcune tecnologie, come <a href="http://search.cpan.org/perldoc?Moose">Moose</a> (qui comunque accennato) e <a href="http://search.cpan.org/perldoc?DBIx%3A%3AClass"><span class="caps">DBI</span>x::Class</a> (al posto del quale qui viene proposto il più rudimentale Class::DBI) si siano consolidate solo di recente e quindi non ci sia stata la chance di trattarle: andate dunque ad esplorarle su <span class="caps">CPAN</span>!</p>

<p>Nel complesso, a mio avviso Pocket Perl copre una precedente lacuna nel panorama italiano relativo a Perl, che era la mancanza di un testo "introduttivo ma non solo", chiaro e ben scritto, una guida che partisse dalle basi ma che fosse al contempo in grado di mostrare gli aspetti più interessanti del linguaggio, avvicinando nuovi programmatori a Perl. A livello di "mancanze", per quanto mi riguarda ce n'è solo una: il libro rimanda alla documentazione fornita con l'interprete quanto riguarda la gestione di stringhe Unicode. Considerata l'importanza dell'argomento ed il fatto che la documentazione in linea è spesso nebulosa, sarebbe forse stato opportuno dedicarvi una sezione.</p>]]></description>
            <link>http://www.cattlegrid.info/blog/2009/05/pocket-perl.html</link>
            <guid>http://www.cattlegrid.info/blog/2009/05/pocket-perl.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">book</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">italiano</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">libro</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">perl</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">recensione</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">review</category>
            
            <pubDate>Tue, 05 May 2009 16:59:13 +0000</pubDate>
        </item>
        
        <item>
            <title>Integrating MCImageImanager with a Perl web application</title>
            <description><![CDATA[<p>After looking at the open source alternatives, I decided the price was worth to buy the <span class="caps">MCIM</span>ageManager plugin for <a href="http://tinymce.moxiecode.com/">TinyMCE</a>. This open source (LGPL) Rich Text Editor is probably the best out there: the great image upload plugin, developed by the same folks, is however not free - but definitely worth its money.</p>

<p>The backend of <span class="caps">MCI</span>mageManger is in <span class="caps">PHP </span>or .NET: I decided to stick with the <span class="caps">PHP </span>version, as my web server is on Unix, but still had to find out how to integrate it with my web application (which is in Perl) making sure only logged in users would be allowed to upload files. There are code examples for <span class="caps">JSP, ASP</span> Classic and several <span class="caps">PHP </span>configurations, but nothing related to Perl. So, I ported the authentication script - it was easy enough and here's the result.</p>

<p>If you use Perl and you want to integrate authentication with the one of your system, you need to use <em>ExternalAuthenticator</em> in order to share sessions between Perl and <span class="caps">PHP</span>/.NET. It's not that difficult: since the Perl <em>ExternalAuthenticator</em> script is not provided, you can find one I wrote myself here.</p>

<p><big><strong><span class="caps">MCI</span>mageManager configuration</strong></big></p>

<p>File to edit is likely ''config.php''. If you use ''Web.config'', these instructions still apply.<br />
First of all, you need to enable the ''ExternalAuthenticator'':</p>



<pre><code>$mcImageManagerConfig['authenticator'] = &quot;ExternalAuthenticator&quot;;</code></pre>



<p>Scroll down a bit and you'll find the relevant configuration options for ''ExternalAuthenticator'':</p>



<pre><code>// ExternalAuthenticator config
$mcImageManagerConfig['ExternalAuthenticator.external_auth_url'] = &quot;/manage/tinymce_auth.pl&quot;;
$mcImageManagerConfig['ExternalAuthenticator.secret_key'] = &quot;TheKey&quot;;</code></pre>



<p><big><strong>tinymce_auth.pl</strong></big></p>

<p>Put this file at the location you specified in ''config.php''. You need to edit some parth: the secret key and, of course, the part which verifies the user is authenticated.</p>

<code>

<pre>#!/usr/bin/perl

use strict;
use warnings;

use CGI::Carp qw/fatalsToBrowser/;
use CGI::Simple;
use CGI::Session;
use HTML::Entities;
use Digest::MD5 qw/md5_hex/;

# Must match the one in config.php
my $secretKey = &quot;TheKey&quot;;

my $q = CGI::Simple-&gt;new();
print $q-&gt;header(
    -type   =&gt; 'text/html; charset=UTF-8',
);

my $session = CGI::Session-&gt;new();

# See if session-id is OK
if ( !$session-&gt;param('idadmin') =~ /^\d+$/ ) {
     print &quot;Not logged in&quot;;
     exit;
}

# Come configuration variables can be overridden here
my %configuration = (
    #'filesystem.rootpath'   =&gt; '/some/path',
    #'filesystem.path'       =&gt; '/some/path',
);

my $data = '';
for my $cv (values %configuration) {
    $data .= $cv;
}
my $key = md5_hex($data . $secretKey);

print '&lt;html&gt;';
print '&lt;body onload=&quot;document.forms[0].submit();&quot;&gt;';
print '&lt;form method=&quot;post&quot; action=&quot;' . encode_entities($q-&gt;param('return_url')) . '&quot;&gt;';
print '&lt;input type=&quot;hidden&quot; name=&quot;key&quot; value=&quot;'. encode_entities($key) . '&quot; /&gt;';
for my $ck (keys %configuration) {
     my $enc_ck = $ck; $enc_ck =~ s/\./_/g;
     print '&lt;input type=&quot;hidden&quot; name=&quot;'
        . encode_entities($enc_ck)
        . '&quot; value=&quot;'
        . encode_entities($configuration{$ck})
        . '&quot; /&gt;'
    ;
}
print '&lt;/form&gt;&lt;/body&gt;&lt;/html&gt;';</pre>

</code>

<p>This work is free software, by , and is provided as-is. If you need support, ask in the <a href="http://tinymce.moxiecode.com/punbb/">TinyMCE forums</a>.</p>]]></description>
            <link>http://www.cattlegrid.info/blog/2009/04/integrating-mcimageimanager-wi.html</link>
            <guid>http://www.cattlegrid.info/blog/2009/04/integrating-mcimageimanager-wi.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">perl</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">programming</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">tinymce</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">web</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">webdev</category>
            
            <pubDate>Tue, 07 Apr 2009 20:04:51 +0000</pubDate>
        </item>
        
        <item>
            <title>Parrot 1.0.0</title>
            <description><![CDATA[<p>[This is a translation of <a href="http://www.perl.it/blog/archives/000632.html">my article in Italian language on Perl.it</a>]</p>

<p>Sometimes things happen when few are still left to believe in them, nevertheless they are able to bring new enthusiasm and life to projects which seemed to be sentenced to a never ending gestational status. <span class="caps">OK,</span> I'm now going to come out of this "Barack Obama mode", but I hope I gave an idea of how much <strong>March 17, 2009</strong>, the date of the <a href="http://www.parrot.org/news/2009/Parrot-1.0.0">release of Parrot 1.0.0</a> is important for the Perl community (and not just for it).</p>

<p>Anyone who's got something to with Perl likely knows what Parrot is, but this moment deserves a brief refreshing about its main features. First of all, it's a virtual machine which aims at becoming <em>the</em> virtual machine. Even though its development started out from the Perl community, the goal is that other dynamic languages should be able - or even <em>want</em> - to use it as well, as Parrot will grant superior performance.</p>

<p>For other technical information, please read the <a href="http://en.wikipedia.org/wiki/Parrot_virtual_machine">Parrot Wikipedia page</a>, as I'd like to write something about the second reason for which Parrot is important. It's maturation is fundamental to give a boost to Perl 6 development, in order to reach the much awaited first major release of our favourite language, an event we've been waiting for years: yt's current implementation, <a href="http://rakudo.org/">Rakudo</a>, is being developed upon Parrot.</p>

<p>Many more steps still have to be performed, and maybe many folks will continue to state, as a joke or seriously, that Perl 6 will never see the light. However, as Parrot did, Perl 6 could surprise you as well.</p>]]></description>
            <link>http://www.cattlegrid.info/blog/2009/03/parrot-100.html</link>
            <guid>http://www.cattlegrid.info/blog/2009/03/parrot-100.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">parrot</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">perl</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">programming</category>
            
            <pubDate>Thu, 19 Mar 2009 23:23:13 +0000</pubDate>
        </item>
        
        <item>
            <title>Learning Perl (5th edition)</title>
            <description><![CDATA[<p>This review is by <strong>Nicola Gigante</strong>, a member of "Nordest.pm"http://nordest.pm.org/. Thank you for the contribution!</p>

<p><a href="http://www.perl.it/documenti/bibliografia/42.html">Click here to read this review in Italian language.</a></p>

<p><img src="http://oreilly.com/catalog/covers/9780596520106_cat.gif" alt="" class="right" style="float:right" /></p>

<h3><a href="http://oreilly.com/catalog/9780596520106/index.html"><strong>Learning Perl (5th edition)</strong></a><br />
<em>Randal L. Schwartz, Tom Phoenix &amp; brian d foy</em><br />
<a href="http://www.oreilly.com/"><span class="caps">O'R</span>eilly Media</a>, 2008<br />
<span class="caps">ISBN</span>: 9780596520106<br />
US$ 39.99 (printed) - US$ 31.99 (electronic)</h3>

<p>Rating: <em>4.5/5</em></p>

<p>Perl is a very flexible language. It has the most complex grammar you can find around,<br />
and a context-dependent semantic, and this makes perl an easy and yet powerful scripting language. The 5th edition of Learning Perl is just about how to write scripts with it. It wonʼt teach you how to write huge and complex software or how to optimize your code to make it fast and yet extensible. After all, this book is just about learning the language. The big work made by Schwartz and co. was to write a book that lets you feel the extremely high level of flexibility you get from the perl syntax. The book is full of examples, and itʼs common to find a way to solve a given problem, just to read how it can be solved with fewer lines of code or in a faster way respect of a previous solution. The book also highlights the most famous perl features. Theyʼre text and list processing tools, such as regular expressions and sort routines. After the first chapters explaining basic language features like numbers, strings, arrays and hashes manipulation, three chapters are dedicated to regular expressions: how to write and understand them, how to use them to match text, and how to use them to replace text. Also, a whole chapter is dedicated to methods and techniques to sort arrays and hashes. The second part of the book is about manipulating files, processes, and other things needed for administrative purpose, a field where perl scripts are used very often. The other two books of the series, Intermediate Perl, and Advanced Perl, complete this book, covering things that you donʼt find here. If you donʼt know the language and want to learn it, or if you know it briefly and want to improve your basic knowledge, this is the right book for you.</p>]]></description>
            <link>http://www.cattlegrid.info/blog/2009/03/learning-perl-5th-edition.html</link>
            <guid>http://www.cattlegrid.info/blog/2009/03/learning-perl-5th-edition.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">book</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">oreilly</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">perl</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">review</category>
            
            <pubDate>Mon, 02 Mar 2009 09:08:36 +0000</pubDate>
        </item>
        
        <item>
            <title>Perl: still the leading dynamic language for Open Source</title>
            <description><![CDATA[<p><img src="/images/perl-onion_100.png" alt="" height="100" width="100" class="right" style="float:right" /></p>

<p>British online technical newspaper The Register has <a href="http://www.theregister.co.uk/2009/01/21/open_source_projects_08/">this very interesting article</a> which shows statistics about new open source projects born in 2008. Numbers are provided by license tracker Black Duck Software</p>

<p>C is (unsurprisingly) first: 47% of open source projects born in 2008 use it.</p>

<p>What's most interesting, however, is that <strong>Perl</strong> is the first of the dynamic languages (excluding client-side scripting ones, i.e. JavaScript): <strong>18%</strong> of new projects chose it (PHP is stuck at 11% and Ruby at 6%). Anybody who was saying Perl was obsolete now has his answer.</p>]]></description>
            <link>http://www.cattlegrid.info/blog/2009/01/perl-still-the-leading-dynamic.html</link>
            <guid>http://www.cattlegrid.info/blog/2009/01/perl-still-the-leading-dynamic.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">languages</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">perl</category>
            
            <pubDate>Wed, 21 Jan 2009 23:52:27 +0000</pubDate>
        </item>
        
        <item>
            <title>Seven facts about me</title>
            <description><![CDATA[<p>After reading <a href="http://www.stefanorodighiero.net/blog/2009/01/seven-facts-about-me/">larsen's facts</a>, I challenged myself in this game. If you want to play, these are the rules:</p>


<ul>
<li>Link your original tagger(s), and list these rules on your blog.</li>
<li>Share seven facts about yourself in the post - some random, some weird.</li>
<li>Tag seven people at the end of your post by leaving their names and the links to their blogs.</li>
<li>Let them know they've been tagged by leaving a comment on their blogs and/or other mean (Twitter, Facebook ...).</li>
</ul>



<p>So, some facts about me:</p>


<ul>
<li>I work as computer programmer. It isn't always great, but I think I'm blessed because I have the opportunity do do what I like every single day.</li>
<li>I live in Maniago, which is located in North-Eastern Italy. In the past I thought I didn't like this place, but after seeing a lot of places in the world I'm now confident this is among the best where to stay. I maintain a <a href="http://www.maniago.info">web forum</a> related to my town.</li>
<li>I play the bass guitar in a brit rock band (the Gin Tonics), but don't really know much about it as I never attended a single lesson regarding bass or music in general.</li>
<li>I believe "fair play" is fundamental in every aspect of life.</li>
<li>I'm often worried for many things, but I rarely admit it if asked.</li>
<li>I haven't got a best friend and I consider myself lucky for this, as there is more than one person who I regard as a best friend.</li>
<li>Should I ever need to escape somewhere to stay for some time on my own, that place would be the Orkney Islands.</li>
</ul>



<p>I know the rules want me to tag seven people, but the ones who come to my mind don't have a blog - so I have to skip this.part of the game. ;-) If you're reading this, I'd be happy if you consider yourself tagged and play. </p>]]></description>
            <link>http://www.cattlegrid.info/blog/2009/01/seven-facts-about-me.html</link>
            <guid>http://www.cattlegrid.info/blog/2009/01/seven-facts-about-me.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">life</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">personal</category>
            
            <pubDate>Thu, 15 Jan 2009 13:58:02 +0000</pubDate>
        </item>
        
        <item>
            <title>My great ADSL</title>
            <description><![CDATA[<p>My <span class="caps">ADSL </span>(provided by <a href="http://f5.ngi.it"><span class="caps">NGI</span></a>) has been performing quite badly lately (in the last two years), and after trying to solve the problems with my provider I'm about to change it - I waited even for too long.</p>

<p>Here's the screenshot of my <span class="caps">IRC </span>session of tonight. I'm <em>lordarthas</em>, see how many ghosts of me are in there because of disconnections. Fun, uh?</p>

<p><img src="/images/cadute_linea.png" alt="" height="559" width="700" /></p>]]></description>
            <link>http://www.cattlegrid.info/blog/2008/12/my-great-adsl.html</link>
            <guid>http://www.cattlegrid.info/blog/2008/12/my-great-adsl.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">adsl</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">italy</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">scandal</category>
            
            <pubDate>Tue, 16 Dec 2008 21:28:00 +0000</pubDate>
        </item>
        
        <item>
            <title>London Perl Workshop 2008 - a review</title>
            <description><![CDATA[<p>I attended <a href="http://conferences.yapceurope.org/lpw2008/">London Perl Workshop</a> for the first time this year: London is quite easy and inexpensive to reach from the Venice, Italy area where I live, so it made a lot of sense to me to go there for a few reasons: the list of talks was impressive; I wanted to give a <a href="http://www.cattlegrid.info/files/italy_perl_success_story.pdf">lightning talk about the Italian Perl Community</a>; I was keen to to know if they were doing better than we did at the <a href="http://conferences.yapceurope.org/ipw2008/">Italian Perl Workshop</a>. :-)</p>

<p>The workshop was held on Saturday, so I decided to stay the entire week-end: even though I visited London a lot of times in the past, there's always something to see and do there. The event took place at the New Cavendish Campus of the University of Westminster, which is a quite central location, just opposite the British Telecom tower (one of London skyline's main fixtures) and conveniently near Great Portland Street tube station. Once I got there, I realized what the organizers already stated: the organization was quite basic. The was no real registration process, but just a list where to tick your name and a girl giving out badges - which is more than enough, anyway. There was no wi-fi access (there were networks, but they belonged to University of Westminster and required login credentials we didn't have), but since I didn't even bring my laptop to the UK it was hardly a problem. And, hey, attending the workshop was <em>free of charge</em>.</p>

<p>The conference was split in four tracks, and therefore in four rooms: the biggest one was quite nice, holding approximately 250 people and with quite comfortable seats; also the second one was big enough, while the other two were actually classrooms and therefore smaller. This was actually fine, as one of these last 2 was used for 3-hours tutorials (so it was far from being full) and the other one was for supposedly more specialist talks, even though it was very full at times.</p>

<p>The workshop kicked off with a talk about London.pm given out by its historical leader, Dave Cross: that was very fun and entertaining! Next I followed an introduction to 10 <span class="caps">CPAN </span>modules by Leon Brocard, and I found there are really some modules which would be useful for me and of which I didn't know about (I've always been sure of that, <span class="caps">CPAN </span>is so huge...). The two talks by Matt Trout I listened to were among my favourites: he's very passionate in his explanation, no matter whether he speaks about something useful (see <span class="caps">DBI</span>x::Class+Postgres) or about something which is almost just a mental exercise (such see Acme::Yorkshire). </p>

<p>Mike Whitaker give out two talks about <em>Moose</em>, one basic and one intermediate: it was really nice to hear some details about such a great object oriented framework - Mike get ready, we'll try to bring you to Italy for our workshop. :-) Andy Wardley's talk was about <em>Badger</em>, a toolkit which can be seen as sort of "lightweight Moose" and upon which Andy built many modules which abstract a lot of functionality provided by Perl and by other modules; also Template Toolkit 3, a product of Andy himself, is Badger-based and should be soon on <span class="caps">CPAN </span>(I can't wait, I'm an avid <span class="caps">TT2 </span>user). Hakim Cassimally's <em>Functional Pearls</em> was the <em>greatest last talk</em> a workshop could have had: if you've never heard about <em>programmable semicolons</em>, well take a look. One of the lightning talks was pure genius: David Leadbeater created a Wikipedia summary system which had a method of querying it using <span class="caps">DNS TEXT </span>records (think about caching for free...)!!</p>

<p>All in all, the workshop was great. As you might have already guessed, the mean level was quite high, with some impressive peaks. Even though there were 4 tracks, there was not a basic one to speak of, which makes the workshop very interesting for Perl programmers but, of course, a little less appealing for folks trying to learn the language. After all this food for thought, there was a need for food for the body (not to mention beer), and here came a big surprise: the workshop organization reserved an entire pub and food and beers were served <em>free of charge</em> for all the evening! Speaking with Mark Keating, one of the organization leaders, it turned out he wanted people to finally associate <em>free software</em> with <em>free beer</em>, not the opposite as we've always learned. What a great idea!!!</p>

<p>So, for all of this I would like to thank all <a href="http://london.pm.org">London.pm</a> and other Perl Mongers who organized this event, and all the sponsors who made this possible (<a href="http://conferences.yapceurope.org/lpw2008/sponsors.html">click here to see who they are</a>).</p>]]></description>
            <link>http://www.cattlegrid.info/blog/2008/12/london-perl-workshop-2008---a.html</link>
            <guid>http://www.cattlegrid.info/blog/2008/12/london-perl-workshop-2008---a.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">community</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">conference</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">london</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">perl</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">workshop</category>
            
            <pubDate>Thu, 04 Dec 2008 07:30:05 +0000</pubDate>
        </item>
        
        <item>
            <title>Slides of my &quot;Italy, a Perl success story&quot; talk at London Perl Workshop 2008</title>
            <description><![CDATA[<p>I recently did a lightning talk at <a href="http://conferences.yapceurope.org/lpw2008/">London Perl Workshop 2008</a>, regarding the status of the Italian Perl community (which is in good health, in case you're wondering). The slides, in <span class="caps">PDF </span>format, are available here:</p>

<p><a href="http://www.cattlegrid.info/files/italy_perl_success_story.pdf">http://www.cattlegrid.info/files/italy_perl_success_story.pdf</a></p>]]></description>
            <link>http://www.cattlegrid.info/blog/2008/12/slides-of-my-italy-a-perl-succ.html</link>
            <guid>http://www.cattlegrid.info/blog/2008/12/slides-of-my-italy-a-perl-succ.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">community</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">perl</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">slides</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">workshop</category>
            
            <pubDate>Mon, 01 Dec 2008 21:43:13 +0000</pubDate>
        </item>
        
        <item>
            <title>Adapting a Dojo module for cross-domain loading</title>
            <description><![CDATA[<p>Using the Dojo loader to include your own JavaScript module is very handy, and also works around several problems related to loading JavaScript code directly via the <em>&lt;script&gt;</em> tag. Often, however, you want to be able to load your modules across domains, so you need to write them in <em>xd</em> fashion. In itself, it's not a big issue as, with Dojo 1.2.0, a non-xd code such as this:</p>

<code>

<pre>
(function(){
    dojo.provide(&quot;cryo.Tree&quot;);
    dojo.provide(&quot;cryo.ForestStoreModel&quot;);

    dojo.require(&quot;dijit.Tree&quot;);
    
    dojo.declare(&quot;cryo.ForestStoreModel&quot;, dijit.tree.ForestStoreModel, {
        // class definition
    });

    dojo.declare(&quot;cryo.Tree&quot;, dijit.Tree, {
        // class definition
    });
})();
</pre>

</code>

<p>just needs to become as follows to work with the Dojo cross-domain loader:</p>

<code>

<pre>
dojo._xdResourceLoaded(function(){ return {
    depends: [
        [&quot;provide&quot;, &quot;cryo.Tree&quot;],
        [&quot;provide&quot;, &quot;cryo.ForestStoreModel&quot;],
        [&quot;require&quot;, &quot;dijit.Tree&quot;]
    ],
    defineResource: function(dojo) {
    
    dojo.provide(&quot;cryo.Tree&quot;);
    dojo.provide(&quot;cryo.ForestStoreModel&quot;);

    dojo.require(&quot;dijit.Tree&quot;);
    dojo.declare(&quot;cryo.ForestStoreModel&quot;, dijit.tree.ForestStoreModel, {
        // class definition
    });

    dojo.declare(&quot;cryo.Tree&quot;, dijit.Tree, {
        // class definition
    });
})();
</pre>

</code>

<p>Easy enough, but what usually happens is that you work with non-xd files while developing, while using the cross-domain features in production. Or maybe the opposite. Or something similar. Anyhow, in this case you most likely don't want to maintain two copies of the same JavaScript module where only header and footer are different. For sure I don't, so I wrote a small Perl script which converts non-xd modules to xd-enabled ones automatically by performing the following tasks:</p>


<ul>
<li>It parses <code>dojo.require</code> and <code>dojo.provide</code> statements in order to create the xd header.</li>
<li>It substitutes the header with an xd one containing the information obtained in the parsing operation.</li>
<li>It substitutes the closing parentheses with others which match the new header.</li>
</ul>



<p><span class="caps">OK,</span> I know, there's also the <em>Dojo Build System</em>, but I didn't want to install Ant and a ton of Java-related dependencies for a task which requires 20 lines of code.</p>

<p>This script is a quick hack so it has caveats:</p>


<ul>
<li>It's a quickly (and therefore poorly) coded dirty hack.</li>
<li>Read the code before using it and edit it if needed.</li>
<li>It's supposed to work if the code is formatted a bit differently than the examples above, but there's no guarantee - I just tried out some variations.</li>
<li>It produces xd code only suitable for Dojo 1.2.0 (but changing it for 1.1.1 is trivial)</li>
</ul>



<p>On the other hand, using it makes no harm to your existing code: it will either work and produce (possibly broken) output files, or produce no files at all. So, I would say it is safe to try it.</p>

<p>Usage:</p>

<code>

<pre>
make_xd.pl file1.js file2.js ... filen.js
</pre>

</code>

<p>You can pass one or more files on the command line: the script will produce <em>filename.xd.js</em> starting from <em>filename.js</em>, which is left untouched.</p>

<p><a href="/files/make_xd_pl.txt" title="free software"><strong>Click here to download the script.</strong></a></p>

<p>If you improve this script, please let me know.</p>]]></description>
            <link>http://www.cattlegrid.info/blog/2008/10/modifying-a-dojo-module-for-cr.html</link>
            <guid>http://www.cattlegrid.info/blog/2008/10/modifying-a-dojo-module-for-cr.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">coding</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">dojo</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">howto</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">perl</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">programming</category>
            
            <pubDate>Fri, 31 Oct 2008 12:25:25 +0000</pubDate>
        </item>
        
        <item>
            <title>Mastering Dojo</title>
            <description><![CDATA[<p><img src="http://oreilly.com/catalog/covers/9781934356111_cat.gif" alt="" class="right" style="float:right" /></p>

<h3><a href="http://oreilly.com/catalog/9781934356111/index.html"><strong>Mastering Dojo</strong></a><br />
<em>Rawld Fill, Craig Riecke, Alex Russell</em><br />
<a href="http://www.pragprog.com/">Pragmatic Bookshelf</a>, 2008<br />
<span class="caps">ISBN</span>: 978-1-934356-11-1<br />
US$ 38.95</h3>

<p>Rating: <em>4/5 (very good)</em></p>

<p>The <a href="http://dojotoolkit.org">Dojo</a> toolkit is, arguably, the most advanced JavaScript framework available today. jQuery might be designed equally well and be more compact, but it lacks advanced and ready to use <span class="caps">GUI </span>components. Ext JS might provide a ton of colourful widgets, but it lacks the implementation and <span class="caps">API </span>elegance of Dojo, not to mention it features a licensing system which is awkward enough to turn away any sane open source developer.</p>

<p>Dojo still has, however, one major drawback: the documentation is sparse at best, and completely missing in some areas. The <span class="caps">API </span>reference is not rich enough, and parts of the online free Dojo Book are outdated; the best option for programmers is often to skim directly through the well-commented source code and through the accurately done test suites. Dojo is a big and complex project, so it will take a while for the community to document it properly; in the meanwhile, the excellent forums, Dojo Campus and the <span class="caps">IRC </span>channel provide an excellent resource. Printed books also come to the rescue of programmers who want to use Dojo: being the project so interesting, there are quite a lot of titles available, and <em>Mastering Dojo</em> ranks among the most up-to-date and interesting ones.</p>

<p>Despite its name, this book is targeted to the programmer who doesn't yet use Dojo, as opposed to the Dojo programmer who wants to dig more deeply into the framework details. It, however, spans a wide range of Dojo-related topics: from the basics to the most advanced widgets (trees, grids) and other areas (internationalisation, extension of the framework). Basically, you just need to know JavaScript to read this book: even though Dojo also features an <span class="caps">HTML </span>declarative syntax, to obtain something useful out of the framework you really need to be comfortable with JavaScript.</p>

<p>Every chapter is devoted to a topic, and is made of an introduction followed by well-made examples. It doesn't provide a reference: you learn the main things, and then if you want to know all the <span class="caps">API </span>you'll want to find more documentation elsewhere. What it provides is however what you need if you're new to Dojo: a description of what you can do and some examples on how to do it - so that basically you understand that you'll be able to use Dojo to create a modern web application in and easy (although, as all computer programming tasks, not always straightforward) way.</p>

<p>Even though absolutely not a reference, <em>Mastering Dojo</em> can be used as such to some extent: the sections about events, <span class="caps">DOM </span>introspection and editing, classes and data are, for instance, enough in-depth to provide reference for most of the tasks a developer needs to perform. Others, such as the Grid and the Tree, are more like introductions to those advanced widgets, but are nevertheless very appreciated as it's not easy (if at all possible) to find coherent documentation elsewhere regarding them.</p>

<p>All in all, if you plan to use Dojo because to have to create a serious web application, this book is an excellent starting point, and will likely remain useful also when your knowledge of the framework has grown.</p>]]></description>
            <link>http://www.cattlegrid.info/blog/2008/10/mastering-dojo.html</link>
            <guid>http://www.cattlegrid.info/blog/2008/10/mastering-dojo.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">ajax</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">book</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">dojo</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">javascript</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">review</category>
            
            <pubDate>Sat, 04 Oct 2008 11:31:08 +0000</pubDate>
        </item>
        
        <item>
            <title>Using reCAPTCHA with Perl</title>
            <description><![CDATA[<p>You all know: spam is a <span class="caps">PITA.</span> It just sucks because if you have a blog users won't like to read it any longer with all that junk. It also hurts if you collect user registrations or other data, as you'll need to filter the collected data and it always changes how software should understand what is spam and what isn't (as spam changes).</p>

<p><img src="/images/recaptcha_example.png" alt="" height="155" width="250" class="right" style="float:right" /></p>

<p><a href="http://en.wikipedia.org/wiki/Captcha"><span class="caps">CAPTCHA</span>s</a>" have been somewhat a solution for some years. Requiring you to type a word which is in a picture, they should be able to tell if you're a human or a piece of software. First <span class="caps">CAPTCHA</span>s were simple and easy to ready, but soon <span class="caps">OCR </span>software was able to read them too; so they became more and more complex, featuring noise, distorted words, fancy colours, etc. The art of designing a <span class="caps">CAPTCHA </span>is fairly simple: it should be unreadable by a machine and as simple as possible to read for a human, as you surely don't want anybody to be unable to use your web site no matter how stupid they might be because they are unable to figure out a few letters on an image.</p>

<p>Since it's a bit of a pain to always have to change and improve your <span class="caps">CAPTCHA </span>images in order to keep spammers outside, I recently began exploring <a href="http://recaptcha.net">reCAPTCHA</a>.</p>

<p>This article is about reCAPTCHA and is usage with Perl both directly with <a href="http://search.cpan.org/dist/Captcha-reCAPTCHA/lib/Captcha/reCAPTCHA.pm">Captcha::reCAPTCHA</a> and with <a href="http://search.cpan.org/dist/HTML-FormFu/lib/HTML/FormFu.pm"><span class="caps">HTML</span>::FormFu</a>.</p>]]></description>
            <link>http://www.cattlegrid.info/blog/2008/09/using-recaptcha-in-perl.html</link>
            <guid>http://www.cattlegrid.info/blog/2008/09/using-recaptcha-in-perl.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">captcha</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">coding</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">formfu</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">perl</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">recaptcha</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">spam</category>
            
            <pubDate>Mon, 22 Sep 2008 10:39:26 +0000</pubDate>
        </item>
        
    </channel>
</rss>
