﻿<?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>Criticatemi ma non fraintendetemi</title>
	<atom:link href="http://www.cgabriel.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cgabriel.org</link>
	<description>Christopher Gabriel&#039;s blog</description>
	<lastBuildDate>Tue, 18 May 2010 19:06:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Nuovo Fuss Launcher</title>
		<link>http://www.cgabriel.org/2010/05/18/nuovo-fuss-launcher/</link>
		<comments>http://www.cgabriel.org/2010/05/18/nuovo-fuss-launcher/#comments</comments>
		<pubDate>Tue, 18 May 2010 18:03:32 +0000</pubDate>
		<dc:creator>cgabriel</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[fuss]]></category>
		<category><![CDATA[ita]]></category>
		<category><![CDATA[scuola]]></category>
		<category><![CDATA[softwarelibero]]></category>
		<category><![CDATA[truelite]]></category>

		<guid isPermaLink="false">http://www.cgabriel.org/?p=41</guid>
		<description><![CDATA[I lavori all&#8217;interno del progetto Fuss proseguono spediti, come ogni anno. Quest&#8217;anno, un po&#8217; per scommessa, un po&#8217; per risolvere alcune problematiche degli utenti, un po&#8217; per raccogliere una vecchia proposta di Enrico, abbiamo creato un nuovo applicativo. La proposta era semplice: sfrutture le potenzialità di apt-xapian-index per accedere all&#8217;indice delle applicazioni sul sistema operativo (e, perché, [...]]]></description>
			<content:encoded><![CDATA[<p>I lavori all&#8217;interno del <a href="http://www.fuss.bz.it/">progetto Fuss</a> proseguono spediti, come ogni anno. Quest&#8217;anno, un po&#8217; per scommessa, un po&#8217; per risolvere alcune problematiche degli utenti, un po&#8217; per raccogliere una vecchia <a href="http://www.enricozini.org/2008/debtags/write-your-own-launcher/">proposta di Enrico</a>, abbiamo creato un nuovo applicativo.</p>
<p>La proposta era semplice: sfrutture le potenzialità di <a href="http://www.enricozini.org/sw/apt-xapian-index/">apt-xapian-index</a> per accedere all&#8217;indice delle applicazioni sul sistema operativo (e, perché, anche quelle non installate) per facilitare la ricerca delle stesse da parte degli utenti, per poi ovviamente avviarle.</p>
<p>Quindi, il solito launcher? Non proprio. Uno dei problemi principali che spesso incontriamo all&#8217;interno di Fuss (ma anche all&#8217;interno di progetti di migrazione a software libero) è quello che forniamo <em>troppo software</em>. Troppo software perché possiamo liberamente fornirlo, e spesso i nostri utenti scoprono che possono fare più cose con il loro computer che in precedenza. Questo è senza dubbio un vantaggio. Dove sta il problema?</p>
<ol>
<li>Imparare i nomi degli applicativi rispetto a cosa questi fanno</li>
<li>Ricordare i nomi imparati al punto 1</li>
<li>Ricordarsi come si scrivono</li>
<li>Ricordarsi dove tipicamente si trovano nel menu</li>
</ol>
<p>L&#8217;idea dunque è quella di fornire l&#8217;accesso al software disponibile (installato e installabile) attraverso una interfaccia di ricerca, basandosi su di un indice (di sistema) che contiene descrizioni (in varie lingue), tags e quanto altro. Per riuscire a trovare l&#8217;applicazione che serve non partendo necessariamente dal suo nome (facile ricordarsi <em>&#8220;kdissert&#8221;</em> per le mappe mentali, vero?) ma attraverso parole chiave basate sulla descrizione del software.</p>
<p><a href="http://www.cgabriel.org/wp-content/uploads/2010/05/l1.png"><img class="alignnone size-medium wp-image-42" title="Fuss Launcher" src="http://www.cgabriel.org/wp-content/uploads/2010/05/l1-300x244.png" alt="" width="300" height="244" /></a></p>
<p><a href="http://www.cgabriel.org/wp-content/uploads/2010/05/l2.png"><img class="alignnone size-medium wp-image-43" title="Fuss Launcher 2" src="http://www.cgabriel.org/wp-content/uploads/2010/05/l2-300x250.png" alt="" width="300" height="250" /></a></p>
<p>Altro problema: ci troviamo spesso con tante applicazioni che si occupano della stessa cosa, in modo più o meno elegante, migliore etc. Il problema talvolta diventa quindi: &#8220;Ok, ho questo file, con cosa lo posso aprire?&#8221;. Sicuramente la logica consolida del &#8220;Apri con..&#8221; disponibile in molti file manager funziona, ma volendo accentrare l&#8217;avvio delle applicazioni in un unico punto, abbiamo fornito all&#8217;applicativo anche la possibilità di mostrare, cercando nell&#8217;indice, le applicazio in grado di gestire particolari file. Quindi dal mio file manager, trascino il file che voglio aprire sul launcher e questo mi mostra le applicazioni che lo possono aprire. &#8220;Droppo&#8221; (come si traduce in italiano?) il file sull&#8217;applicazione con l&#8217;icona più bella e questa verrà avviata, aprendo il file selezionato. Funziona anche con più file!</p>
<p><a href="http://www.cgabriel.org/wp-content/uploads/2010/05/l4.png"><img class="alignnone size-medium wp-image-45" title="Fuss Launcher 4" src="http://www.cgabriel.org/wp-content/uploads/2010/05/l4-300x253.png" alt="" width="300" height="253" /></a></p>
<p>E le mie applicazioni preferite? Il metodo e&#8217; semplice: non cercando niente di particolare, vengono mostrate le applicazioni più utilizzata, ordinate secondo il loro utilizzo. Quindi i preferiti vengono creati automaticamente, senza sforzo da parte dell&#8217;utente. D&#8217;altra parte, se avvio 100 volte al giorno il solitario, di sicuro è il mio preferito.<br />
<a href="http://www.cgabriel.org/wp-content/uploads/2010/05/l3.png"><img class="alignnone size-medium wp-image-44" title="Fuss Launcher 3" src="http://www.cgabriel.org/wp-content/uploads/2010/05/l3-300x249.png" alt="" width="300" height="249" /></a></p>
<p>Maggiori informazioni su questo software si trovano nella <a href="http://devel.fuss.bz.it/wiki/FussLauncher">home page del progetto</a>, ancora in costruzione. E si, sicuramente la user interface ha ancora bisogno di tanto amore.</p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://www.cgabriel.org/2010/05/18/nuovo-fuss-launcher/" target="_blank"><img src="http://www.cgabriel.org/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cgabriel.org/2010/05/18/nuovo-fuss-launcher/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DURC</title>
		<link>http://www.cgabriel.org/2009/11/18/durc/</link>
		<comments>http://www.cgabriel.org/2009/11/18/durc/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 11:58:10 +0000</pubDate>
		<dc:creator>cgabriel</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[ita]]></category>
		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://www.cgabriel.org/?p=34</guid>
		<description><![CDATA[DURC &#8211; s.m. [dúrc] Pratica burocratica barbarica, praticata in paesi in cui l&#8217;informatizzazione è un concetto oscuro, per cui un ente pubblico richiede ad ente privato la certificazione della regolarità contributiva, emessa, in cartaceo via posta ordinaria, sempre dall&#8217;ente pubblico ma sbagliata[1]. Una volta ricevuto per posta ordinaria in cartaceo il pubblico deve verificarne la [...]]]></description>
			<content:encoded><![CDATA[<p><strong>DURC &#8211; </strong><em>s.m. [dúrc]</em></p>
<blockquote><p><em>Pratica burocratica barbarica, praticata in paesi in cui l&#8217;informatizzazione è un concetto oscuro, per cui un ente pubblico richiede ad ente privato la certificazione della regolarità contributiva, emessa, in cartaceo via posta ordinaria, sempre dall&#8217;ente pubblico ma sbagliata[1]. Una volta ricevuto per posta ordinaria in cartaceo il pubblico deve verificarne la validità interrogando il pubblico emittente, in forma cartacea e via posta ordinaria. Dalla richiesta del privato alla ricezione del documento, passa un mese e mezzo. All&#8217;arrivo, il documento ha validità di un mese. La verifica di validità, come procedure, impiega circa un mese.</em></p></blockquote>
<p>In sostanza, il privato deve pagare e perdere tempo per dare al pubblico una informazione che è già di sua pertinenza e che potrebbe reperire ad un costo vicino allo zero.</p>
<p>[1] E non si parla di errorini eh.. roba del tipo che dichiara che applichi un contratto nazionale di un tipo, quando in realtà stai usando tutt&#8217;altro&#8230;</p>
<p>Il bello è che nel mezzo di sono le Poste Italiane™ !</p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://www.cgabriel.org/2009/11/18/durc/" target="_blank"><img src="http://www.cgabriel.org/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cgabriel.org/2009/11/18/durc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XML, XML-RPC e Python nel 2009</title>
		<link>http://www.cgabriel.org/2009/09/21/xml-xml-rpc-e-python-nel-2009/</link>
		<comments>http://www.cgabriel.org/2009/09/21/xml-xml-rpc-e-python-nel-2009/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 00:26:51 +0000</pubDate>
		<dc:creator>cgabriel</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[ita]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[rant]]></category>
		<category><![CDATA[xml-rpc]]></category>

		<guid isPermaLink="false">http://www.cgabriel.org/?p=24</guid>
		<description><![CDATA[Durante la fase di qualificazione di un progetto software che stiamo portando avanti da quasi 3 anni, è stato riscontrato un bug che mi ha fatto perdere più di una giornata per trovarne la soluzione. Il tempo perso non è dovuto tanto alla complessità del problema (la soluzione, ovviamente, era più che banale), ma piuttosto [...]]]></description>
			<content:encoded><![CDATA[<p>Durante la fase di qualificazione di un progetto software che stiamo portando avanti da quasi 3 anni, è stato riscontrato un bug che mi ha fatto perdere più di una giornata per trovarne la soluzione. Il tempo perso non è dovuto tanto alla complessità del problema (la soluzione, ovviamente, era più che banale), ma piuttosto al fatto che, inconsciamente, non accettavo il fatto che quello potesse essere il problema.</p>
<p>Il software è un sistema di gestione centralizzato di un parco macchina. Tramite un demone implementato su Twisted, fornisce un servizio per l&#8217;accesso alla configurazione e uno per il controllo verso le macchine. Quest&#8217;ultimo è basato su una interfaccia piuttosto semplice in XML-RPC. Le macchine controllate accedono ai dati e riportano i risultati.</p>
<p>Una delle funzionalità implementate riguarda la possibilità di eseguire campagne di esecuzione di script (di qualunque natura, purchè la macchina abbia gia&#8217; a disposizione l&#8217;interprete con cui viene scritto). Le macchine ricevono lo script, lo eseguono, restituiscono indietro alcuni dati, tra cui l&#8217;exit code e l&#8217;output (stdout + stderr in formato annotated).</p>
<p>Sembra facile, no?</p>
<p>La codifica utilizzata è sempre e ovunque UTF-8, per cui l&#8217;output dello script viene (anzi, veniva) dichiarato nel payload XML-RPC come un semplice <em>&lt;string&gt;</em>. Tanto, UTF-8, qualunque cosa va bene, no?</p>
<p>I primi test vanno a buon fine. Poi il problema: alcuni script fanno sollevare una eccezione di &#8220;malformed token&#8221; da parte del servizio che riceve i dati. Possibile?</p>
<p>Server e client implementati in python. Il client utilizza <em>xmlrpc</em>, che si trova nella libreria standard.</p>
<p>Ora, possibile che nel <strong><em>2009</em></strong> , utilizzando un linguaggio ad alto livello, utilizzando un modulo della libreria standard, debba essere io a preoccuparmi che i caratteri che non possono stare in <a href="http://www.w3.org/TR/2008/REC-xml-20081126/"><em>XML</em></a> vengano codificati correttamente, come, ad esempio, i caratteri ASCII da 0 a 31? Perchè alcuni di questi vengono codificati automagicamente ( come &#8216;&amp;&#8217;, o &#8216;&lt;&#8217;), mentre altri no? Ma poi neanche tutti gli ASCII da 0 a 31, anche tra questi, alcuni sono gestiti dalla libreria, come il 9, il 10 e il 13&#8230;</p>
<p>Soluzione al problema: il dato passato non deve essere <em>str</em> ma <em>xmlrpclib.Binary</em>. Che si preoccupa di codifica/decofidica in base64 del payload. Semplice e veloce. Ma perchè ci devo pensare io? <img src='http://www.cgabriel.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://www.cgabriel.org/2009/09/21/xml-xml-rpc-e-python-nel-2009/" target="_blank"><img src="http://www.cgabriel.org/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cgabriel.org/2009/09/21/xml-xml-rpc-e-python-nel-2009/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>LDAP e la disperazione</title>
		<link>http://www.cgabriel.org/2009/09/21/ldap-e-la-disperazione/</link>
		<comments>http://www.cgabriel.org/2009/09/21/ldap-e-la-disperazione/#comments</comments>
		<pubDate>Sun, 20 Sep 2009 23:16:58 +0000</pubDate>
		<dc:creator>cgabriel</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[authentication]]></category>
		<category><![CDATA[ita]]></category>
		<category><![CDATA[ldap]]></category>
		<category><![CDATA[mailman]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://www.cgabriel.org/?p=12</guid>
		<description><![CDATA[Ho maturato, grazie anche ai commenti di Enrico, lo stato dell&#8217;arte rispetto a LDAP su sistemi liberi. Problema: in azienda abbiamo svariati repository SVN/GIT con rispettivi project tracker, per i singoli progetti (interni, dei clienti, di spippolamento generico, etc). Come gestire nel modo più comodo autenticazione e autorizzazione ai rispettivi progetti da parte di utenti [...]]]></description>
			<content:encoded><![CDATA[<p>Ho maturato, grazie anche ai commenti di <a href="http://www.enricozini.org/blog/">Enrico</a>, lo stato dell&#8217;arte rispetto a LDAP su sistemi liberi.</p>
<p>Problema: in azienda abbiamo svariati repository SVN/GIT con rispettivi <a href="http://trac.edgewall.org">project tracker</a>, per i singoli progetti (interni, dei clienti, di spippolamento generico, etc). Come gestire nel modo più comodo autenticazione e autorizzazione ai rispettivi progetti da parte di utenti di varia provenienza (utenti interni, clienti, collaborati,etc) ?</p>
<p>Per &#8220;modo più comodo&#8221; si intende:</p>
<ul>
<li>Evitare la duplicazione delle informazioni di autenticazione</li>
<li>Gestire gli accessi ai singoli progetti</li>
<li>Delegare la gestione degli accessi ai singoli progetti</li>
<li>Permettere agli utenti di gestire i propri account, inclusa la partecipazione ai singoli progetti</li>
</ul>
<p>Trac può funzionare tranquillamente con autenticazione HTTP, SVN/GIT pure.. perfetto, mi dico, usiamo i vari moduli di autenticazione forniti da Apache, web server che attualmente fa da frontend.</p>
<p>I dati? Beh, la risposta viene spontanea: LDAP!</p>
<p>LDAP, LDAP.. si, ma veramente è la soluzione?</p>
<p>Esistono moduli Apache per autenticare utenti e gruppi su LDAP, quindi una soluzione possibile è:</p>
<ol>
<li>OU separate per le varie tipologie di utenti (interni, collaboratori, clienti)</li>
<li>OU per i &#8220;progetti&#8221;, contenente oggetti di tipo gruppo</li>
<li>Utenti associati a questi gruppi</li>
<li>Scope di ricerca utenti sub a partire dalla root</li>
</ol>
<p>In lingua Apache, la cosa si traduce in qualcosa del tipo:</p>
<pre class="xml" name="code">
&lt;Location /progetto-x&gt;
                AuthName "Tracker Progetto X"
                AuthType Basic
                AuthBasicProvider ldap
                AuthLDAPURL ldap://127.0.0.1/dc=myroot,dc=com
                AuthLDAPGroupAttributeIsDN off
                AuthLDAPGroupAttribute memberUid
                require ldap-group cn=progetto-x,ou=Projects,dc=myroot,dc=com
&lt;/Location&gt;
</pre>
<p>(omessi i dettagli su trac e la configurazione base di authz-ldap)</p>
<p>In questo modo, l&#8217;autenticazione utente permette di cercare nelle varie OU dove questi si trovano, es. <code>ou=collaborati,dc=myroot,dc=com</code>, e i gruppi invece nella OU dei progetti.</p>
<p>Dal punto di vista della gestione, quando viene creato un pogetto, si crea il gruppo, si inseriscono gli utenti nel gruppo (crearli prima, se necessario), creare trac e svn (anche tramite hook, ma questa é un&#8217;altra storia).</p>
<p>Fino a qui, la cosa funziona.</p>
<p><strong>Dove sono i problemi?</strong></p>
<ol>
<li>Se il server LDAP principale non e&#8217; esposto sulla rete, o si trova su una macchina diversa, dalla quale riceviamo una replica in sola lettura, non abbiamo un modo facile e comodo (anche dal punto di vista di una UI) per permettere gli utenti di gestire i propri account. Possiamo cambiare la password, ma gestire l&#8217;appartenenza ad un progetto? Lasciare la scrittura sul gruppo tramite una ACL significa che gli utenti possono aggiungere anche altri al gruppo.</li>
<li>Delegare la gestione del gruppo a qualcuno, significa, se si utilizza l&#8217;implementazione LDAP server <strong>slapd</strong>, di creare una o piu&#8217; acl per ogni gruppo. Se l&#8217;albero e&#8217; replicato da un server centrale, auguri&#8230;</li>
</ol>
<p>Se avete altri punti a sfavore, commentate, che li aggiungo&#8230;</p>
<p><strong>Soluzioni?</strong></p>
<p>Ho pensato un pò a possibili soluzioni a questo problema. Esiste un modo per cui:</p>
<ol>
<li>Ho un database di autenticazione verso il quale posso autenticare tramite un web server e</li>
<li>Gli utenti possono gestire i propri dati (password, autenticazione, etc) e</li>
<li>Posso delegare la gestione di uno o più gruppi/progetti a una o più persone e</li>
<li>Avere possibilità di stabilire criteri di accesso ai progetti per ogni singolo progetto?</li>
</ol>
<p>Una soluzione possibile è implementare un applicativo web o simili per la gestione dei dati su database e le operazioni di cui sopra, e utilizzando gli appositi moduli di autenticazione, configurare opportunamente il web server.</p>
<p>Ma esiste qualcosa che possa evitare questo sforzo, visto che c&#8217;è anche altro da fare?</p>
<p>Una soluzione che ho individuato, e realizzato con pochissimo sforzo, e che, apparentemente risolve gran parte di questi problemi, è utilizzare <strong><a href="http://www.list.org/">Mailman</a>.</strong></p>
<p>Se riesco ad autenticare HTTP contro il database di iscrizioni di una specifica lista Mailman, ottengo:</p>
<ol>
<li>Delega di gestione: mailman permette di associare ad una lista uno o più amministratori, che possono aggiungere(iscrivere)/togliere(deiscrivere) utenti, e stabilire anche i criteri di accesso (conferma, conferma e autorizzazione, etc)</li>
<li>Gli utenti possono gestirsi in proprio i dati personali: cambio password, appartenenza o meno ad un progetto, tutto autonomamente</li>
<li>Ho già una lista con tutti i partecipanti al progetto dove inviare ticket e commits <img src='http://www.cgabriel.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>Da quando mailman ha l&#8217;opzione &#8220;cambia la password e mettila uguale a tutte le liste a cui sono iscritto&#8221; risolve anche il problema di avere N password, una per progetto.</li>
<li>Avere come username l&#8217;indirizzo email dell&#8217;utente è comodo per Trac, soprattutto quando si aprono ticket: abbiamo l&#8217;indirizzo del mittente a cui inviare notifiche sui ticket che sono stati aperti</li>
</ol>
<p>Se vedete altri vantaggi, fatemi sapere, che aggiorno&#8230;</p>
<p><strong>Come si realizza?</strong></p>
<p>Tramite <em>mod_python</em> è possibile scrivere un handler per gestire, in Apache, il processo di autenticazione. Un semplice script <a href="http://www.python.org/">Python</a> che riceve utente e password e restituisce lo stato di autenticazione (OK o HTTP_UNAUTHORIZED). Visto che Mailman è pure scritto in <a href="http://www.python.org/">Python</a>, la cosa diventa semplice.</p>
<p>Risultato in Apache:</p>
<pre class="xml" name="code">
&lt;Location /progetto-x&gt;
                AuthName "Tracker Progetto X"
                AuthType Basic
                PythonPath "sys.path+['/path/a/script/di/auth/']"
                PythonAuthenHandler mailmanauth
                PythonOption MailmanList lista-progetto-x
                AuthUserFile /dev/null
                AuthBasicAuthoritative Off
                require valid-user
&lt;/Location&gt;
</pre>
<p>Voilà. Gli iscritto alla mailing list <em>lista-progetto-x</em> possono accedere. Da ripetere per ogni progetto e repository di progetto SVN.</p>
<p>Troppo faticoso? Usare <em>mod_macro</em> può aiutare:</p>
<pre name="code" class="xml">
&lt;Macro MailmanProject $name $list&gt;
        &lt;Location /svn/$name&gt;
                AuthName "SVN for project $name"
                AuthType Basic
                PythonPath "sys.path+['/path/to/script/']"
                PythonAuthenHandler mailmanauth
                PythonOption MailmanList $list
                AuthUserFile /dev/null
                AuthBasicAuthoritative Off
                require valid-user
        &lt;/Location&gt;
        &lt;Location /$name&gt;
                AuthName "Tracker for project $name"
                AuthType Basic
                PythonPath "sys.path+['/path/to/script/']"
                PythonAuthenHandler mailmanauth
                PythonOption MailmanList $list
                AuthUserFile /dev/null
                AuthBasicAuthoritative Off
                require valid-user
        &lt;/Location&gt;
&lt;/Macro&gt;
</pre>
<p>E per ogni progetto:<br />
<code><br />
Use MailmanProject progetto-x lista-progetto-x<br />
</code><br />
nel VirtualHost relativo.</p>
<p>Se poi aggiungere un bell&#8217;hook alla creazione della lista, per creare repository svn, environment per trac, il gioco è fatto:<br />
<code><br />
# newlist progetto-y<br />
</code><br />
e poi, è tutto in mano al gestore della mailing list.</p>
<p>Altre soluzioni sono benvenute <img src='http://www.cgabriel.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://www.cgabriel.org/2009/09/21/ldap-e-la-disperazione/" target="_blank"><img src="http://www.cgabriel.org/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cgabriel.org/2009/09/21/ldap-e-la-disperazione/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Goodbye stranger..</title>
		<link>http://www.cgabriel.org/2009/09/21/goodbye-stranger/</link>
		<comments>http://www.cgabriel.org/2009/09/21/goodbye-stranger/#comments</comments>
		<pubDate>Sun, 20 Sep 2009 22:26:38 +0000</pubDate>
		<dc:creator>cgabriel</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[british]]></category>
		<category><![CDATA[eng]]></category>
		<category><![CDATA[progressive rock]]></category>
		<category><![CDATA[seventies]]></category>

		<guid isPermaLink="false">http://www.cgabriel.org/?p=9</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/dyyDyraBnOU&#038;hl=it&#038;fs=1&#038;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/dyyDyraBnOU&#038;hl=it&#038;fs=1&#038;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://www.cgabriel.org/2009/09/21/goodbye-stranger/" target="_blank"><img src="http://www.cgabriel.org/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cgabriel.org/2009/09/21/goodbye-stranger/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>E via così</title>
		<link>http://www.cgabriel.org/2009/09/17/e-via-cosi/</link>
		<comments>http://www.cgabriel.org/2009/09/17/e-via-cosi/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 20:35:01 +0000</pubDate>
		<dc:creator>cgabriel</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[ita]]></category>

		<guid isPermaLink="false">https://www.cgabriel.org/?p=4</guid>
		<description><![CDATA[Niente doccia, un bacio, e via in macchina. Poi vediamo&#8230;]]></description>
			<content:encoded><![CDATA[<p>Niente doccia, un bacio, e via in macchina. Poi vediamo&#8230;</p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://www.cgabriel.org/2009/09/17/e-via-cosi/" target="_blank"><img src="http://www.cgabriel.org/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cgabriel.org/2009/09/17/e-via-cosi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

