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

<channel>
	<title>Com'è dura la professione!</title>
	<atom:link href="http://lbell.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://lbell.wordpress.com</link>
	<description>Programmare, programmare, programmare !!!</description>
	<lastBuildDate>Mon, 16 Nov 2009 22:08:27 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>it</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='lbell.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/eb00321b42b716426f0b2882d735e615?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Com'è dura la professione!</title>
		<link>http://lbell.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://lbell.wordpress.com/osd.xml" title="Com&#8217;è dura la professione!" />
		<item>
		<title>Sfruttare il system tray per controllare i job di KDE</title>
		<link>http://lbell.wordpress.com/2009/11/16/sfruttare-il-system-tray-per-controllare-i-job-di-kde/</link>
		<comments>http://lbell.wordpress.com/2009/11/16/sfruttare-il-system-tray-per-controllare-i-job-di-kde/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 22:07:47 +0000</pubDate>
		<dc:creator>lbell</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[kde4]]></category>

		<guid isPermaLink="false">http://lbell.wordpress.com/?p=169</guid>
		<description><![CDATA[Una delle funzionalità offerte da KDE4 a sviluppatori ed utenti è quella di gestire i lavori a lungo termine delle applicazioni mediante un componente del vassoio di sistema. L&#8217;infrastruttura mette a disposizione dell&#8217;utente un unica locazione dalla quale può controllare l&#8217;andamento delle operazioni, opzionalmente sospenderle, sbloccarle o controllarne l&#8217;esito anche dopo il loro termine. Si [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lbell.wordpress.com&blog=63255&post=169&subd=lbell&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 		TT { font-family: "DejaVu Sans Mono", monospace } -->Una delle funzionalità offerte da KDE4 a sviluppatori ed utenti è quella di gestire i lavori a lungo termine delle applicazioni mediante un componente del vassoio di sistema. L&#8217;infrastruttura mette a disposizione dell&#8217;utente un unica locazione dalla quale può controllare l&#8217;andamento delle operazioni, opzionalmente sospenderle, sbloccarle o controllarne l&#8217;esito anche dopo il loro termine. Si evita così che ogni applicazione che intende avvalersi di questa funzionalità debba implementare una interfaccia di controllo. Dal punto di vista del programmatore, la fatica di imparare una nuova serie di API è ripagato dal fatto che è l&#8217;ambiente a prendersi in carico il compito di interagire con l&#8217;utilizzatore, sia per quello che riguarda l&#8217;aspetto funzionale, sia per l&#8217;interfaccia utente. Ovviamente i soli lavori di cui dovrà essere notificato lo stato di avanzamento mediante questa caratteristica sono solo quelli a lungo termine, per evitare di confondere l&#8217;utente con una miriade di messaggi irrilevanti.</p>
<p style="text-align:center;"><a href="http://lbell.files.wordpress.com/2009/11/screenshot_0041.png"><img class="aligncenter size-medium wp-image-174" title="system tray" src="http://lbell.files.wordpress.com/2009/11/screenshot_0041.png?w=300&#038;h=211" alt="" width="300" height="211" /></a></p>
<p style="text-align:center;">
<p>Vediamo ora come si può sfruttare questa funzionalità:</p>
<p>Le applicazioni che intendono sfruttare il sistema di notifica devono incapsulare direttamente o indirettamente l&#8217;attività in una struttura KIO::Job, ad esempio derivando da essa la nostra classe di esempio <tt>KJobTest</tt>.</p>
<pre><tt>	#include &lt;kjob.h&gt;</tt>
<tt>	class KJobTest : public KIO::Job</tt></pre>
<p>Se si desidera che l&#8217;utente, una volta comparsa la notifica, possa mettere i lavori in pausa, riprenderli o annullarli occorre, nella nostra classe, chiamare la funzione</p>
<pre>    setCapabilities()</pre>
<p>cui va passato come argomento un insieme di flag che ne determinano il comportamento. Con il valori <tt>Kjob::Suspendable</tt> si concede all&#8217;utente la possibilità di sospendere un lavoro, con <tt>KJob::Killable</tt> anche di terminarlo. Per abilitare entrambe le funzionalità, scriveremo:</p>
<pre>    setCapabilities(KJob::Killable|KJob::Suspendable);</pre>
<p>Quando si è pronti per presentare il job all&#8217;utente, lo si deve registrare presso una struttura globale:</p>
<pre>	KIO::getJobTracker()-&gt;registerJob(m_jobTest);</pre>
<p>Da questo punto in poi il job è visibile all&#8217;utente. Emettendo il segnale &#8216;<tt>infoMessage</tt>&#8216; si può forzare il pannello a mostrare la descrizione desiderata per indicare il proprio job.</p>
<p>Il job può essere attivato in modalità sincrona o asincrona. Nel primo caso tutto quello che dovrà fare l&#8217;applicazione per gestire il job sarà richiamarne il metodo &#8216;<tt>exec</tt>&#8216;, definito nella classe base, che restituirà l&#8217;esito mediante un valore booleano. Dietro le quinte verrà attivato un loop di messaggi nascosto. Riporto l&#8217;esempio di utilizzo definito nella documentazione KDE:</p>
<pre>void SomeClass::methodWithSynchronousJobCall()
 {
   KJob *job = someoperation( some parameters );
   if ( !job-&gt;exec() )
   {
       // An error occurred
   }
   else
   {
       // Do something
   }
 }</pre>
<p>Nel caso si intenda utilizzare il job in modo asincrono, metodo preferito per la gestione di operazioni a lungo termine, occorre attivare il job attraverso il metodo start(), richiamato in modo nascosto anche nel caso sincrono, e mettersi in attesa dei risultati collegando il segnale &#8216;<tt>result</tt>&#8216; ad uno slot. Ecco l&#8217;esempio relativo, sempre tratto dalla documentazione KDE:</p>
<pre> void SomeClass::methodWithAsynchronousJobCall()
 {
   KJob * job = someoperation( some parameters );
   connect( job, SIGNAL(result(KJob*)), this, SLOT(handleResult(KJob*)) );
   job-&gt;start();
 }
 void SomeClass::handleResult( KJob *job )
 {
   if ( job-&gt;error() )
       doSomething();
 }</pre>
<p>Nel metodo start(), da reimplementare nella nostra classe derivata da KJob, occorre utilizzare un meccanismo asincrono, come ad esempio un timer di tipo oneShot, per innescare il job, per evitare che un&#8217;attivazione direttamente nella funzione start() provochi un malfunzionamento della gestione sincrona del job attraverso la funzione exec(), per motivi derivanti dall&#8217;implementazione della funzione exec stessa. Se abbiamo deciso di non utilizzare mai l&#8217;interfaccia sincrona potrebbe sembrare una precauzione inutile, ma scrivendo codice che si deve integrare in un ambiente, occorre sempre rispettarne i dettami.</p>
<p>Quando l&#8217;utente decide di intervenire nella vita del job cambiandone lo stato, il pannello  del vassoio di sistema richiamerà metodi <tt>doSuspend()</tt>, <tt>doResume()</tt> e <tt>doKill()</tt> del nostro job, mediante i quali si potranno realizzare le dovute azioni.</p>
<p>Durante il suo ciclo di vita, il job può inviare al pannello segnali riguardo il proprio stato o la percentuale di avanzamento.</p>
<p>Emettendo il seguente segnale:</p>
<pre>emit infoMessage(job, messageText, messageRichText );</pre>
<p>si può provocare la comparsa della scritta relativa allo stato puntuale del job. Allo stesso modo è possibile inviare informazioni relative alla velocità attuale ed alla unità di misura utilizzata, nel caso sia compresa tra quelle dell&#8217;enumeratore &#8216;Unit&#8217; di KJob.</p>
<p>Come esempio di utilizzo possiamo utilizzare un semplice programma, jobsample, mediante il quale è possibile provare le tecniche esposte, configurare i parametri principali a disposizione di un job ed osservare i risultati.</p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } -->I sorgenti di jobsample sono disponibili a questo indirizzo:</p>
<p><a href="http://www.tsc4.com/lbell/presentazioni/src/jobsample.tgz">http://www.tsc4.com/lbell/presentazioni/src/jobsample.tgz</a></p>
<p>Finestra principale di jobsample:</p>
<p><img class="aligncenter size-medium wp-image-171" title="jobsample" src="http://lbell.files.wordpress.com/2009/11/screenshot_005.png?w=300&#038;h=241" alt="" width="300" height="241" /></p>
<p>job sample in esecuzione:</p>
<p><a href="http://lbell.files.wordpress.com/2009/11/screenshot_006.png"><img class="aligncenter size-medium wp-image-172" title="system tray" src="http://lbell.files.wordpress.com/2009/11/screenshot_006.png?w=282&#038;h=300" alt="" width="282" height="300" /></a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lbell.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lbell.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lbell.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lbell.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lbell.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lbell.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lbell.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lbell.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lbell.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lbell.wordpress.com/169/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lbell.wordpress.com&blog=63255&post=169&subd=lbell&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://lbell.wordpress.com/2009/11/16/sfruttare-il-system-tray-per-controllare-i-job-di-kde/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/92ab5e92e556e729accbe3b435f54462?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lbell</media:title>
		</media:content>

		<media:content url="http://lbell.files.wordpress.com/2009/11/screenshot_0041.png?w=300" medium="image">
			<media:title type="html">system tray</media:title>
		</media:content>

		<media:content url="http://lbell.files.wordpress.com/2009/11/screenshot_005.png?w=300" medium="image">
			<media:title type="html">jobsample</media:title>
		</media:content>

		<media:content url="http://lbell.files.wordpress.com/2009/11/screenshot_006.png?w=282" medium="image">
			<media:title type="html">system tray</media:title>
		</media:content>
	</item>
		<item>
		<title>Compilare KDE 4.4 con Qt4.6 e kdesvn-build</title>
		<link>http://lbell.wordpress.com/2009/10/26/compilare-kde-4-4-con-qt4-6-e-kdesvn-build/</link>
		<comments>http://lbell.wordpress.com/2009/10/26/compilare-kde-4-4-con-qt4-6-e-kdesvn-build/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 21:55:20 +0000</pubDate>
		<dc:creator>lbell</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[QT]]></category>
		<category><![CDATA[kde4]]></category>

		<guid isPermaLink="false">http://lbell.wordpress.com/?p=165</guid>
		<description><![CDATA[Con il passaggio del trunk di KDE a Qt4.6 avvenuto il 10 ottobre non è più possibile utilizzare il sistema di build basato su kdesvn-build 1.9.1, dato che i sorgenti delle librerie Qt sono affidati a git e kdesvn-build si interfaccia con Subversion, occorrerebbe gestire manualmente il modulo qt-copy. Occorrerebbe, perché è appena stata rilasciata [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lbell.wordpress.com&blog=63255&post=165&subd=lbell&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 		A:link { so-language: zxx } -->Con il passaggio del trunk di KDE a Qt4.6 avvenuto il 10 ottobre non è più possibile utilizzare il sistema di build basato su kdesvn-build 1.9.1, dato che i sorgenti delle librerie Qt sono affidati a git e kdesvn-build si interfaccia con Subversion, occorrerebbe gestire manualmente il modulo qt-copy. Occorrerebbe, perché è appena stata rilasciata la versione 1.10, che è in grado di gestire git per il solo  modulo qt-copy. E&#8217; disponibile nel sito ufficiale da un paio di giorni e nel repository svn di KDE in branches/work/kdesvn-build-1.10. Per usarlo, occorre modificare la sezione relativa al modulo qt-copy nel file .kdesvn-build.rc nel modo seguente nella sezione dedicata a git:</p>
<pre>module qt-copy
	#opzioni di compilazione
	configure-flags -system-zlib -qt-gif -system-libjpeg -system-libpng \
			-no-exceptions -fast -debug -dbus \
	            -no-phonon # Phonon built separately
	make-options -j2

	# opzioni di gestione git
	branch 4.6-stable-patched
	repository http://git.gitorious.org/+kde-developers/qt/kde-qt.git
end module</pre>
<p>Sito di kdesvn-build:</p>
<p><a href="http://kdesvn-build.kde.org/releases/kdesvn-build-1.10.php">http://kdesvn-build.kde.org/releases/kdesvn-build-1.10.php</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lbell.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lbell.wordpress.com/165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lbell.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lbell.wordpress.com/165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lbell.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lbell.wordpress.com/165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lbell.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lbell.wordpress.com/165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lbell.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lbell.wordpress.com/165/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lbell.wordpress.com&blog=63255&post=165&subd=lbell&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://lbell.wordpress.com/2009/10/26/compilare-kde-4-4-con-qt4-6-e-kdesvn-build/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/92ab5e92e556e729accbe3b435f54462?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lbell</media:title>
		</media:content>
	</item>
		<item>
		<title>Ma cosa fa funzionare veramente il computer?</title>
		<link>http://lbell.wordpress.com/2009/10/19/ma-cosa-fa-funzionare-veramente-il-computer/</link>
		<comments>http://lbell.wordpress.com/2009/10/19/ma-cosa-fa-funzionare-veramente-il-computer/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 21:17:06 +0000</pubDate>
		<dc:creator>lbell</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[cosi' va il mondo]]></category>

		<guid isPermaLink="false">http://lbell.wordpress.com/?p=160</guid>
		<description><![CDATA[
L&#8217;Apple II, il primo personal computer ad avere una diffusione ed un successo mondiali, quando nel 1977 vide la luce sembrò un miracolo di tecnologia; permetteva ad un prezzo accessibile di svolgere una quantità e varietà di compiti concreti come monitorare impianti industriali o di organizzare magazzini o di controllare le scadenze delle assicurazioni. Diciamo [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lbell.wordpress.com&blog=63255&post=160&subd=lbell&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 		A:link { so-language: zxx } --></p>
<p style="margin-bottom:0;">L&#8217;Apple II, il primo personal computer ad avere una diffusione ed un successo mondiali, quando nel 1977 vide la luce sembrò un miracolo di tecnologia; permetteva ad un prezzo accessibile di svolgere una quantità e varietà di compiti concreti come monitorare impianti industriali o di organizzare magazzini o di controllare le scadenze delle assicurazioni. Diciamo che gli utenti si accontentavano delle prestazioni e delle possibilità offerte, cercando di vincere le limitazioni del sistema (velocità e spazio di memoria in primis) con molta pazienza e con molto ingegno, inserendo nei programmi una serie di trucchi che oggi appaiono senza senso. Il sistema aveva 48K RAM e poteva supportarne in modo lineare al massimo 64KB.</p>
<p style="margin-bottom:0;">Quando uscì il primo personal IBM la ram a disposizione era di  128 o 256KB con il codice di sistema caricato in parte di essa da disco; 640KB divennero uno standard poco dopo. All&#8217;avvento del Macintosh, il primo rivoluzionario PC con un&#8217;interfaccia grafica basata su finestre ed icone, precursore di tutti i sistemi che si usano oggi, che poteva pavoneggiarsi di una grafica di tipo interamente bitmap, si arrivò a 64K di ROM e 128K di RAM, ed in questo spazio non si trovava solo il codice per gestire la grafica, ma anche quello per permettere a tutti i programmi di terze parti di potersi adeguare ad una stessa metafora di comportamento mentre faceva timidamente la sua apparizione su sistemi di tale fascia il primo codice capace di gestire una rete.</p>
<p style="margin-bottom:0;">E tutta questa meraviglia in soli 64K di ROM, più il software di sistema in un dischetto da 400K. La ram a disposizione dei programmi applicativi, al netto di quella necessaria al funzionamento del Macintosh stesso era di soli 90K (<a href="http://www.folklore.org/StoryView.py?story=Monkey_Lives.txt">http://www.folklore.org/StoryView.py?story=Monkey_Lives.txt</a>).</p>
<p style="margin-bottom:0;">E oggi? Se consideriamo le dimensioni del kernel di Linux rispetto ai tempi dell&#8217;Apple II troviamo non solo una crescita esponenziale del software di sistema ma la nascita di una nuovo filone, quasi sconosciuto al mondo visto in precedenza; il sottosistema di rete con relativa infrastruttura di sicurezza, che tramite protocolli di tutti i tipi si avvia a rappresentare una gran parte del codice di sistema. La directory del kernel Linux occupa, con varie versioni installate, da 120 a 475MB sul mio sistema e l&#8217;installazione complessiva del sistema e dei programmi applicativi più comuni quasi 10GB.</p>
<p style="margin-bottom:0;">Questa crescita è avvenuta in in pochi decenni e ricalca la legge di Moore a proposito della crescita delle capacità dell&#8217;hardware (<a href="http://en.wikipedia.org/wiki/Moore%27s_law">http://en.wikipedia.org/wiki/Moore%27s_law</a>). Il fatto è che mentre l&#8217;hardware spesso è stato progettato in scala, il software di sistema in questione è stato scritto da zero, praticamente riga dopo riga. Ogni sistema operativo sul mercato ha proposto il proprio server web, il proprio stack di protocolli di rete, con tonnellate di sorgenti spesso inutilmente riscritti solo per esigenze commerciali. I computer non sono più solo strumenti nelle mani di artigiani, ma diventa sempre più difficile sapere cosa li fa effettivamente funzionare e quanto sono sicure le basi cui cui poggia il software applicativo.</p>
<p style="margin-bottom:0;"><img class="aligncenter size-full wp-image-161" title="grafico ram rom" src="http://lbell.files.wordpress.com/2009/10/img1.png?w=506&#038;h=365" alt="grafico ram rom" width="506" height="365" /></p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 		A:link { so-language: zxx } --></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lbell.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lbell.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lbell.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lbell.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lbell.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lbell.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lbell.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lbell.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lbell.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lbell.wordpress.com/160/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lbell.wordpress.com&blog=63255&post=160&subd=lbell&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://lbell.wordpress.com/2009/10/19/ma-cosa-fa-funzionare-veramente-il-computer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/92ab5e92e556e729accbe3b435f54462?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lbell</media:title>
		</media:content>

		<media:content url="http://lbell.files.wordpress.com/2009/10/img1.png" medium="image">
			<media:title type="html">grafico ram rom</media:title>
		</media:content>
	</item>
		<item>
		<title>Il pittore ed il professore</title>
		<link>http://lbell.wordpress.com/2009/06/07/il-pittore-ed-il-professore/</link>
		<comments>http://lbell.wordpress.com/2009/06/07/il-pittore-ed-il-professore/#comments</comments>
		<pubDate>Sun, 07 Jun 2009 19:53:47 +0000</pubDate>
		<dc:creator>lbell</dc:creator>
				<category><![CDATA[letture]]></category>

		<guid isPermaLink="false">http://lbell.wordpress.com/?p=156</guid>
		<description><![CDATA[
Le Scienze sta pubblicando una interessante collana di DVD aventi come tema gli incontri avvenuti al festival della matematica di Roma dello scorso anno. In quello di questo mese vi si trova l&#8216;intervento di Thomas Banchoff focalizzato su Salvator Dalí. Il relatore parla avendo alle spalle uno schermo gigantesco su cui sono mostrate le opere [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lbell.wordpress.com&blog=63255&post=156&subd=lbell&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 		A:link { so-language: zxx } --></p>
<p style="margin-bottom:0;"><a href="http://lescienze.espresso.repubblica.it/">Le Scienze</a> sta pubblicando una interessante <a href="http://lescienze.espresso.repubblica.it/edicola/MENTI_MATEMATICHE">collana di DVD</a> aventi come tema gli incontri avvenuti al festival della matematica di Roma dello scorso anno. In quello di questo mese vi si trova l<a href="http://lescienze.espresso.repubblica.it/edicola_mese/MENTI_MATEMATICHE/1338193">&#8216;intervento di Thomas Banchoff focalizzato su Salvator Dal</a><a href="http://it.wikipedia.org/wiki/Salvador_Dal%C3%AD">í</a>. Il relatore parla avendo alle spalle uno schermo gigantesco su cui sono mostrate le opere del pittore catalano mentre sono citate. La cosa strana è che, tanto più si parla di un&#8217;opera, tanto più il regista zooma sul relatore, stringendo l&#8217;inquadratura e non mostrando mai l&#8217;argomento del discorso.</p>
<p style="margin-bottom:0;">Nel numero de &#8216;Le Scienze&#8217; di questo mese viene svelato il mistero: ci sono problemi di licenza sul materiale video riguardante le opere.</p>
<p style="margin-bottom:0;">Al di la dell&#8217;irritazione per l&#8217;assenza dei contenuti video principali in un DVD in vendita, è un po&#8217; surreale che si parli per un&#8217;ora di qualcosa che non si può vedere, pure se si sa che esiste.</p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom:0;">Una situazione perfettamente in tema con il surrealismo delle opere di Salvator Da<span style="text-decoration:none;">l</span>í.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lbell.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lbell.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lbell.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lbell.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lbell.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lbell.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lbell.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lbell.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lbell.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lbell.wordpress.com/156/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lbell.wordpress.com&blog=63255&post=156&subd=lbell&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://lbell.wordpress.com/2009/06/07/il-pittore-ed-il-professore/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/92ab5e92e556e729accbe3b435f54462?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lbell</media:title>
		</media:content>
	</item>
		<item>
		<title>Activities are for humans</title>
		<link>http://lbell.wordpress.com/2009/04/08/activities-are-for-humans/</link>
		<comments>http://lbell.wordpress.com/2009/04/08/activities-are-for-humans/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 21:48:34 +0000</pubDate>
		<dc:creator>lbell</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[kde4]]></category>

		<guid isPermaLink="false">http://lbell.wordpress.com/?p=151</guid>
		<description><![CDATA[Computers are very versatile tools, used in a variety of situations, to work, listen music, write documents, but it is very difficult to create a comfortable user environment for each task. When working to an important document, mail notifications are very annoying, but turning off completely notifications is not the ideal solution, mails related to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lbell.wordpress.com&blog=63255&post=151&subd=lbell&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Computers are very versatile tools, used in a variety of situations, to work, listen music, write documents, but it is very difficult to create a comfortable user environment for each task. When working to an important document, mail notifications are very annoying, but turning off completely notifications is not the ideal solution, mails related to the activity are welcomed. What is missing is the possibility that the computer adapts his environment to different activities.</p>
<p>Virtual desktops are the more advanced solution to implement activities today, but this is only a start.</p>
<p>There is a difference between a virtual desktop and an activity: virtual desktop is a collection of resources (windows mainly), an activity is a collection of related resources. You can work for a project, read documents, contact people, receive mails and so on and all these items can stay associated to the activity you are currently operating.</p>
<p>We can roughly consider an activity on top of a collections of virtual desktops.</p>
<p>A &#8216;recent document&#8217; menu can contain a lot of unrelated documents, a personal letter written in a pause together with work documents and worst, it has a finite length, so new documents of unrelated activities are pushing into oblivion very important bookmarks.</p>
<p>Activities are useful to categorize and filter environment items, but it is not practical to manually label each resource that can reside in an activity, so the workspace should automatically collect informations, like the mylyn plugin in Eclipse world</p>
<p><a href="http://www.ibm.com/developerworks/java/library/j-mylyn2/">http://www.ibm.com/developerworks/java/library/j-mylyn2/</a></p>
<p>When in an activity you can associate not only documents related to that activity, but also contacts, sites, and so on.</p>
<p>We work on different projects and we use the computer for personal activity each day. Computers are universal devices and can be used for different purposes.</p>
<p>As a further example, it is an annoyance to receive mail notifications from people not related to projects ( with obvious exception for emergencies ) in working hours. An activity can filter what that can distract, without hiding information, but focusing out of view not relevant factors.</p>
<p>It is important to have a simple &#8216;relations&#8217; manager to handle what resources are related to an activity and move or copy them from a workspace to another (maybe using the KDE plasmoid zoom interface).</p>
<p>It is important to have multiple activity configurations, you can use same laptop at work and at home, even applications menu can change in different situations.</p>
<p>Activities attributes and resources should be shared between teams.</p>
<p>There are two types of applications: specialized ones (video, audio, graphics editor for instance ) and generics ones ( word processors, time tracker, etc) that should have different behavior. How horizontal applications like file browsers should behave? Why not filter activity related directories in &#8216;Open File&#8217; dialogs? Currently this dialog supports only a simple filter that maps to file type (a word processor filter documents, a spreadsheet csv and so on)</p>
<p>How to save data in application specific format and not using specialized Desktop Environment routines? How to integrate, for example, Open Office? We should use the metadata we are using for browsers: the tags, but there is the problem to maintain metadata in sync with data when moving files, doing backups and so on. All the files that user opens or write should be logged, but the metainformations should be stored in the document or in the filesystem?</p>
<p>Even phones have different modes: mute, normal, meeting etc.</p>
<p>Tags and activities are separate concepts, tags are traversal and additive, activities are thematic.</p>
<p>Desktop Environment should leads the user how to enter and how to exit from an activity. We should decrease normal desktops visual clutter that confuses the user about his state.</p>
<p>Another problem is how to include external resources if the filter are restrictives, maybe by adding a button in each “Open File” dialog that let us choose to stay in the current activity environment or see all the resources.</p>
<p>Other open problems are how to integrate in this vision externals resources like network infrastructure, network, printers, etc.</p>
<p>Talking about concrete cases, like the recent documents menu, why not make it central for a desktop or expand it to order it for ( I often need this ) creation date, write date, access timestamp or access frequency, category?</p>
<p>Why not display this menu in a cloud representation? More, the vertical list used is a very short and useless representation. A timeline can be more useful.</p>
<p>Different activities can be created for different purposes even using same programs.</p>
<p>In a desktop system I can save programs state on disk passing from an activity to another one, but not on phone system for device limits.</p>
<p>Anyway each journey begins with a single step, and Plasma is a good one.</p>
<p><a href="http://techbase.kde.org/Projects/Plasma">http://techbase.kde.org/Projects/Plasma</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lbell.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lbell.wordpress.com/151/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lbell.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lbell.wordpress.com/151/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lbell.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lbell.wordpress.com/151/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lbell.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lbell.wordpress.com/151/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lbell.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lbell.wordpress.com/151/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lbell.wordpress.com&blog=63255&post=151&subd=lbell&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://lbell.wordpress.com/2009/04/08/activities-are-for-humans/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/92ab5e92e556e729accbe3b435f54462?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lbell</media:title>
		</media:content>
	</item>
		<item>
		<title>Un viaggio in WebKit transitando per Plasmaland</title>
		<link>http://lbell.wordpress.com/2009/03/19/un-viaggio-in-webkit-transitando-per-plasmaland/</link>
		<comments>http://lbell.wordpress.com/2009/03/19/un-viaggio-in-webkit-transitando-per-plasmaland/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 22:55:43 +0000</pubDate>
		<dc:creator>lbell</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[QT]]></category>
		<category><![CDATA[kde4]]></category>

		<guid isPermaLink="false">http://lbell.wordpress.com/?p=144</guid>
		<description><![CDATA[Scrivendo una piccola utility per Plasma mi sono fatto tentare dall&#8217;uso della nuova versione di WebKit per gestire l&#8217;interfaccia utente.
In effetti integrare WebKit in un programma QT o KDE non è troppo difficile, grazie all&#8217;uso degli slot e delle metainformazioni che QT aggiunge alle classi. E&#8217; possibile richiamare direttamente i metodi di oggetti residenti nel [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lbell.wordpress.com&blog=63255&post=144&subd=lbell&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Scrivendo una piccola utility per Plasma mi sono fatto tentare dall&#8217;uso della nuova versione di WebKit per gestire l&#8217;interfaccia utente.</p>
<p style="margin-bottom:0;">In effetti integrare WebKit in un programma QT o KDE non è troppo difficile, grazie all&#8217;uso degli slot e delle metainformazioni che QT aggiunge alle classi. E&#8217; possibile richiamare direttamente i metodi di oggetti residenti nel nostro programma, sfruttando il meccanismo dei segnali e degli slot, dalla pagina HTML via Javascript. Per prima cosa occorre inserire nelle pagine HTML riferimenti agli oggetti C++ della nostra applicazione come se fossero variabili Javascript native, utilizzando un identificatore che verrà mappato sugli oggetti fisici a tempo debito. Fatto ciò possiamo codificare funzioni Javascript che sfruttino i metodi dichiarati come slot, in corrispondenza di determinati eventi, come la pressione di un pulsante. Possiamo quindi dalla pagina HTML eseguire metodi dei nostri oggetti passando quali parametri entità definite al livello HTML, come ad esempio i valori di un form.</p>
<p style="margin-bottom:0;">Ogni collegamento tra WebKit e la nostra applicazione avverrà sempre tramite funzioni Javascript, quindi sarà WebKit ad iniziare le operazioni.</p>
<p style="margin-bottom:0;">Facciamo un esempio:</p>
<p style="margin-bottom:0;">Supponiamo che il nostro obiettivo sia di richiamare da Javascript il metodo &#8216;reload&#8217; di un&#8217;istanza di una classe C++ descritta in questo modo:</p>
<pre>class DBusApplet : public
Plasma::PopupApplet
{
    Q_OBJECT
    ...
public
slots:
    void reload(const QString &amp;selection);
private:
    ...
};</pre>
<p style="margin-bottom:0;">in Javascript la nostra istanza può essere mappata come segue, assumendo che sia stata associata all&#8217;identificatore &#8216;appletInterface&#8217;:</p>
<pre>function execute(selection)
{
    appletInterface.reload(selection);
}</pre>
<p style="margin-bottom:0;">Dato che la conversione dei tipi di base è automatica, quello che occorre fare è &#8216;iniettare&#8217; gli oggetti C++ all&#8217;interno del componente WebKit, ma è necessario attendere che sia il componente ad avvertirci del momento più opportuno.</p>
<p style="margin-bottom:0;">Al termine del caricamento di una pagina HTML, che la si assegni direttamente da programma o attraverso un URL, il frame corrente emette infatti il segnale &#8220;javaScriptWindowObjectCleared&#8221;, che occorre avere cura di catturare nel solito modo che QT ci mette a disposizione:</p>
<p style="margin-bottom:0;padding-left:30px;">connect(page()-&gt;mainFrame(),</p>
<p style="margin-bottom:0;padding-left:60px;">SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(populateJavaScriptWindowObject()));</p>
<p style="margin-bottom:0;">Alla ricezione del segnale possiamo, attraverso il metodo collegato (nell&#8217;esempio precedente &#8216;populateJavaScriptWindowObject&#8217;), passare finalmente il riferimento dei nostri oggetti a WebKit attraverso il metodo addToJavaScriptWindowObject, i cui argomenti sono il nome della variabile Javascript associata e l&#8217;indirizzo dell&#8217;oggetto stesso.</p>
<p style="margin-bottom:0;padding-left:30px;">page-&gt;mainFrame()-&gt;addToJavaScriptWindowObject(&#8220;appletInterface&#8221;, this);</p>
<p style="margin-bottom:0;">Se tentassimo di associare i nostri oggetti prima che la pagina sia stata effettivamente caricata, il collegamento non avrebbe successo.</p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><a href="http://doc.trolltech.com/4.4/qtwebkit.html">http://doc.trolltech.com/4.4/qtwebkit.html</a></p>
<p style="margin-bottom:0;"><a href="http://webkit.org/">http://webkit.org/</a></p>
<p style="margin-bottom:0;"><a href="http://code.google.com/p/dbusapplet/">http://code.google.com/p/dbusapplet/</a></p>
<p style="margin-bottom:0;border:medium medium 1px none none solid 0 0 #000000;padding:0 0 .07cm;">
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lbell.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lbell.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lbell.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lbell.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lbell.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lbell.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lbell.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lbell.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lbell.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lbell.wordpress.com/144/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lbell.wordpress.com&blog=63255&post=144&subd=lbell&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://lbell.wordpress.com/2009/03/19/un-viaggio-in-webkit-transitando-per-plasmaland/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/92ab5e92e556e729accbe3b435f54462?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lbell</media:title>
		</media:content>
	</item>
		<item>
		<title>In perfetta forma</title>
		<link>http://lbell.wordpress.com/2009/02/09/in-perfetta-forma/</link>
		<comments>http://lbell.wordpress.com/2009/02/09/in-perfetta-forma/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 22:51:24 +0000</pubDate>
		<dc:creator>lbell</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Vaneggiamenti]]></category>

		<guid isPermaLink="false">http://lbell.wordpress.com/?p=132</guid>
		<description><![CDATA[Quando frequentavo le superiori, durante le lezioni di italiano mi era difficile accettare, nonostante gli sforzi degli insegnanti, che la forma di uno scritto potesse avere altrettanta importanza del suo contenuto.
Ora che lavoro nel campo dell&#8217;informatica, una disciplina il cui scopo è produrre risultati concreti sotto forma di programmi, strumenti che svolgono una precisa funzione, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lbell.wordpress.com&blog=63255&post=132&subd=lbell&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Quando frequentavo le superiori, durante le lezioni di italiano mi era difficile accettare, nonostante gli sforzi degli insegnanti, che la forma di uno scritto potesse avere altrettanta importanza del suo contenuto.</p>
<p><span id="more-132"></span>Ora che lavoro nel campo dell&#8217;informatica, una disciplina il cui scopo è produrre risultati concreti sotto forma di programmi, strumenti che svolgono una precisa funzione, mi trovo ad apprezzare l&#8217;importanza della forma con cui si producono i programmi stessi. E non intendo la forma con cui si presenta il prodotto al cliente, ma quella che viene impiegata nel processo di produzione.<br />
La forma, impersonata da regole, procedure e, appunto, formalismi come l&#8217;uso di UML, assume un&#8217;importanza in sé durante la stesura del software, anche se entra in gioco solamente come ausilio. Nella produzione di un programma la cura della forma, ironicamente, è indispensabile per la solidità del prodotto.<br />
Il formalismo nell&#8217;informatica serve a definire come realizzare un programma e per meglio comprendere in che modo il programma assolve al suo scopo. L&#8217;uso di un formalismo si sposa con il vecchio trucco dell&#8217;informatica di risolvere i problemi introducendo un nuovo livello di astrazione (il quale a sua volta genera ulteriori problemi).<br />
Il livello di astrazione più basso corrisponde all&#8217;utilizzo di un linguaggio di programmazione come strumento per impartire comandi al calcolatore. Si tratta di un linguaggio specialistico che ha molte analogie con il linguaggio comune, ma che è studiato per essere immune da tutte quelle ambiguità e doppi sensi di cui quest&#8217;ultimo è dotato e che ne costituiscono la ricchezza. Il linguaggio di programmazione viene utilizzato per fare in modo che il computer possa svolgere in modo del tutto controllato e prevedibile un determinato compito, come ad esempio aprire un cancello, tenere sotto controllo una centrale elettrica o pilotare un aereo. L&#8217;uso di un linguaggio in cui un ordine può essere interpretato con ambiguità in modi diversi, causando potenzialmente comportamenti imprevedibili, renderebbe la vita molto meno monotona agli utenti finali, ma forse un tantino più difficile.<br />
Ogni linguaggio di programmazione, e ne esistono a decine, per dar vita ad un programma funzionante viene tradotto con varie modalità in linguaggio macchina, l&#8217;unico realmente compreso dal computer. Durante questa operazione quello che era un complesso insieme di idee descritto attraverso l&#8217;astrazione del linguaggio, si trova ricondotto a nulla più che una lunga sequenza di banali operazioni logico aritmetiche, e di spostamento di dati, nello stesso modo in cui un libro come “Moby Dick” si trova ricondotto al momento della sua stampa ad una semplice sequenza di lettere e di segni di interpunzione.<br />
L&#8217;approccio riduzionistico al software, pur se formalmente corretto, non è certo in grado di restituire la ricchezza di intenti con cui è stato progettato il programma originale, se non al costo di impegno e fatica abissali. Tutti i programmi alla fine si riducono ad una ripetizione di sequenze di pochi tipi di istruzioni in linguaggio macchina, ma una sequenza di “move” o “jmp” ha poco a che vedere con la complessità dell&#8217;architettura dei programmi che da tali istruzioni sono costituiti come, ad esempio, un word processor. Dopo tutto quest&#8217;ultimo ha a che fare con concetti quali paragrafi, frasi, stili e capitoli. Risalendo nella scala delle astrazioni, una serie di sorgenti scritti in un linguaggio di programmazione non hanno l&#8217;espressività immediata di uno schema che descrive il funzionamento di un sistema. Partire a leggere un programma, direttamente dal codice macchina che pure lo costituisce e ne descrive il comportamento, è come esaminare con una lente d&#8217;ingrandimento un transatlantico centimetro per centimetro; possibile ma arduo.<br />
Il substrato programmabile grazie al linguaggio macchina è il cuore di un sistema di calcolo, su di esso si costruiscono, mediante un&#8217;opera di astrazione, strati successivi di strutture per poter espandere la sua funzionalità. Ogni livello, nonostante sia collegato agli altri, vive di vita propria. Difficile immaginare che la teoria relazionale dei database, un sistema di telecomunicazioni ed un videogioco siano legati tutti dagli stessi codici di base, ma in effetti ciò che li differenzia è solo lo strato di astrazione o l&#8217;idea che li ha concepiti. Se si redigesse una statistica sulla base delle istruzioni effettive in linguaggio macchina che compongono tali programmi, probabilmente essi risulterebbero caratterizzati dalla stessa distribuzione.<br />
Ciò che rende speciale l&#8217;informatica è il fatto che il calcolatore è uno strumento programmabile e non specializzato nell&#8217;eseguire un unico compito. L&#8217;hardware stesso di cui fisicamente è composto il calcolatore non esprime preferenze sul tipo di programmi che può far funzionare. Per la macchina un foglio elettronico od un browser internet sono la stessa cosa. Anche le informazioni sono memorizzate in modo da essere indipendenti dalla particolare locazione di memoria ove sono memorizzate e nulla garantisce che la volta successiva che un programma viene lanciato i suoi dati si trovino esattamente nelle stesse locazioni fisiche. La programmabilità della macchina permette l&#8217;elaborazione continua di nuovi concetti.<br />
I formalismi sono uno strumento che, sfruttando questa possibilità di plasmare l&#8217;informazione, permette l&#8217;introduzione di successivi livelli di astrazione e ci permette di concentrarci sul modo migliore di risolvere un problema piuttosto che sui dettagli della modalità di soluzione problema stesso. La forma porta all&#8217;astrazione e quindi alla comprensione; per una delle solite strane contraddizioni di questo mondo capita di riuscire a risolvere un problema più facilmente quando ci si allontana da esso.<br />
Nel caso che un livello di astrazione non ci soddisfi appieno, possiamo costruirne un altro sulle basi del precedente in modo da estenderlo e colmare eventuali lacune; cosa allora impedisce una ricorsione infinita? Nel mondo reale le risorse disponibili (tempo, programmatori e ovviamente denaro) sono limitate e quelle impiegate per curare il formalismo vengono sottratte alla soluzione concreta del problema, formando una naturale forza d&#8217;attrito che smorza il regresso all&#8217;infinito di Zenone.<br />
In matematica, di cui l&#8217;informatica è figlia, si possono costruire diversi formalismi che estendendo quelli precedenti permettono di dimostrare proposizioni non decidibili nel formalismo precedente. Nell&#8217;informatica, più prosaicamente, attraverso l&#8217;uso del formalismo si cerca di aumentare la comprensione delle idee che stanno alla base dell&#8217;architettura di un programma. Tra i vari livelli di astrazione si instaura un feedback, dato che la modifica effettuata ad un livello del formalismo si propaga agli altri attraverso le modalità proprie di ogni livello, realizzando uno di quegli anelli di retroazione tanto cari a Hofstadter.<br />
Purtroppo in informatica il formalismo si è spesso trasformato in un mito: l&#8217;idea che nella produzione di software basti seguire pedissequamente un formalismo di moda, Agile Programming, UML ecc&#8230;, per produrre un programma funzionante e affidabile indipendentemente dalla difficoltà del contenuto o dal suo contesto, è diventata una tentazione irresistibile, ed assomiglia al mito tutto italiano secondo il quale per risolvere un problema basta solamente emanare una legge.</p>
<p style="margin-bottom:.5cm;line-height:100%;text-decoration:none;"><a href="http://it.wikipedia.org/wiki/G%C3%B6del,_Escher,_Bach_-_Un%27eterna_ghirlanda_brillante"><span style="text-decoration:none;"><span><span style="background:transparent none repeat scroll 0 0;">http://it.wikipedia.org/wiki/G%C3%B6del,_Escher,_Bach_-_Un%27eterna_ghirlanda_brillante</span></span></span></a></p>
<p style="margin-bottom:.5cm;line-height:100%;text-decoration:none;"><a href="http://it.wikipedia.org/wiki/Anelli_nell%27io"><span style="background:transparent none repeat scroll 0 0;">http://it.wikipedia.org/wiki/Anelli_nell%27io</span></a></p>
<p style="margin-bottom:.5cm;line-height:100%;text-decoration:none;"><span style="background:transparent none repeat scroll 0 0;"><a href="http://it.wikipedia.org/wiki/Macchina_di_Turing"><span style="text-decoration:none;"><span style="background:transparent none repeat scroll 0 0;">http://it.wikipedia.org/wiki/Macchina_di_Turing</span></span></a></span></p>
<p style="margin-bottom:.5cm;line-height:100%;text-decoration:none;"><span style="background:transparent none repeat scroll 0 0;"><a href="http://it.wikipedia.org/wiki/Paradossi_di_Zenone">http://it.wikipedia.org/wiki/Paradossi_di_Zenone</a></span></p>
<p style="margin-bottom:.5cm;line-height:100%;text-decoration:none;"><span style="background:transparent none repeat scroll 0 0;"><a href="http://it.wikipedia.org/wiki/Entscheidungsproblem">http://it.wikipedia.org/wiki/Entscheidungsproblem</a></span></p>
<p style="margin-bottom:.5cm;line-height:100%;text-decoration:none;"><a href="http://it.wikipedia.org/wiki/Argomento_diagonale_di_Cantor"><span style="background:transparent none repeat scroll 0 0;">http://it.wikipedia.org/wiki/Argomento_diagonale_di_Cantor</span></a></p>
<p style="margin-bottom:.5cm;line-height:100%;text-decoration:none;">
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lbell.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lbell.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lbell.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lbell.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lbell.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lbell.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lbell.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lbell.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lbell.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lbell.wordpress.com/132/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lbell.wordpress.com&blog=63255&post=132&subd=lbell&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://lbell.wordpress.com/2009/02/09/in-perfetta-forma/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/92ab5e92e556e729accbe3b435f54462?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lbell</media:title>
		</media:content>
	</item>
		<item>
		<title>Movimentare sorgenti con subversion</title>
		<link>http://lbell.wordpress.com/2009/01/19/movimentare-sorgenti-con-subversion/</link>
		<comments>http://lbell.wordpress.com/2009/01/19/movimentare-sorgenti-con-subversion/#comments</comments>
		<pubDate>Mon, 19 Jan 2009 21:39:31 +0000</pubDate>
		<dc:creator>lbell</dc:creator>
				<category><![CDATA[Programmazione]]></category>

		<guid isPermaLink="false">http://lbell.wordpress.com/?p=124</guid>
		<description><![CDATA[Subversion è uno strumento utilissimo nel gestire i sorgenti di progetti anche complessi, con molti punti a favore (e qualche difettuccio).
Può succedere di avere la necessità di dividere un archivio che sta diventando troppo corposo, di dover promuovere un sottoprogetto ad avere una propria dignità, oppure semplicemente di dover cambiare il server.
E&#8217; molto semplice farlo, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lbell.wordpress.com&blog=63255&post=124&subd=lbell&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="margin-bottom:0;">Subversion è uno strumento utilissimo nel gestire i sorgenti di progetti anche complessi, con molti punti a favore (e qualche difettuccio).</p>
<p style="margin-bottom:0;">Può succedere di avere la necessità di dividere un archivio che sta diventando troppo corposo, di dover promuovere un sottoprogetto ad avere una propria dignità, oppure semplicemente di dover cambiare il server.</p>
<p style="margin-bottom:0;">E&#8217; molto semplice farlo, prima di tutto esportando i dati contenuti nel repository originale mediante il comando svnadmin dump, tuttavia occorre avere serve l&#8217;accesso fisico al filesystem del server che ospita il repository.</p>
<p style="margin-bottom:0;padding-left:30px;"><tt><span style="font-size:x-small;"> svnadmin dump path_del_repository &gt;file_risultato.dump</span></tt></p>
<p style="margin-bottom:0;">nelle opzioni del comando vi è la possibilità di esportare anche solamente un range di revisioni.</p>
<p style="margin-bottom:0;">Per importare i dati nel nuovo repository, occorre posizionarsi nel filesystem del nuovo server e utilizzare svnadmin load</p>
<p style="margin-bottom:0;padding-left:30px;"><tt><span style="font-size:x-small;"> svnadmin  load path_del_repository &lt;file_risultato.dump</span></tt></p>
<p style="margin-bottom:0;">Se il repository non esiste già, occorre crearlo.</p>
<p style="margin-bottom:0;">Nel caso occorra importare solo rami del sorgente esportato, prima del comando di load si può utilizzare svndumpfilter che agisce, come fa sospettare il nome, da filtro.</p>
<p style="margin-bottom:0;">Pertanto se si desidera includere solamente la directory src ed il file NEWS del nostro ipotetico repository scriveremo:</p>
<p style="margin-bottom:0;padding-left:30px;"><span style="font-size:x-small;"> </span><tt><span style="font-size:x-small;">svndumpfilter include /NEWS /src  &lt; esportazione.dump &gt; dati_filtrati.dump</span></tt></p>
<p style="margin-bottom:0;">Attraverso l&#8217;opzione –parent-dir possiamo caricare i sorgenti in una data sottodirectory nel nuovo repository.</p>
<p style="margin-bottom:0;padding-left:30px;"><span style="font-size:x-small;"> </span><tt><span style="font-size:x-small;">svnadmin load newrepository --parent-dir nome_directory &lt;dati_filtrati.dump</span></tt></p>
<p style="margin-bottom:0;">I comandi hanno molte opzioni, ma la documentazione presente nel nel sito dedicato al libro on line <a href="http://svnbook.red-bean.com/">http://svnbook.red-bean.com/</a> non solo è dettagliata ed esaustiva, ma discute anche del modo migliore di progettare ed usare un repository di Subversion.</p>
<p style="margin-bottom:0;">
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lbell.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lbell.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lbell.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lbell.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lbell.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lbell.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lbell.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lbell.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lbell.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lbell.wordpress.com/124/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lbell.wordpress.com&blog=63255&post=124&subd=lbell&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://lbell.wordpress.com/2009/01/19/movimentare-sorgenti-con-subversion/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/92ab5e92e556e729accbe3b435f54462?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lbell</media:title>
		</media:content>
	</item>
		<item>
		<title>A chi interessa la matematica?</title>
		<link>http://lbell.wordpress.com/2008/09/09/a-chi-interessa-la-matematica/</link>
		<comments>http://lbell.wordpress.com/2008/09/09/a-chi-interessa-la-matematica/#comments</comments>
		<pubDate>Tue, 09 Sep 2008 21:05:14 +0000</pubDate>
		<dc:creator>lbell</dc:creator>
				<category><![CDATA[cosi' va il mondo]]></category>
		<category><![CDATA[festivaletteratura]]></category>
		<category><![CDATA[odifreddi]]></category>

		<guid isPermaLink="false">http://lbell.wordpress.com/?p=117</guid>
		<description><![CDATA[Sabato scorso, sfruttando un colpo di fortuna e una favorevole congiunzione astrale, ho potuto assistere all&#8217;intervento di Odifreddi al Festivaletteratura di Mantova. Confrontando la quantità di persone che hanno assistito all&#8217;evento, posti a sedere esauriti, con la popolarità che la matematica gode nella scuola, qualche dubbio viene alla mente. Quasi tutti gli spettatori comunque sono [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lbell.wordpress.com&blog=63255&post=117&subd=lbell&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="margin-bottom:0;">Sabato scorso, sfruttando un colpo di fortuna e una favorevole congiunzione astrale, ho potuto assistere all&#8217;intervento di Odifreddi al <a href="http://www.festivaletteratura.it/">Festivaletteratura</a> di Mantova. Confrontando la quantità di persone che hanno assistito all&#8217;evento, posti a sedere esauriti, con la popolarità che la matematica gode nella scuola, qualche dubbio viene alla mente. Quasi tutti gli spettatori comunque sono certamente intervenuti per ascoltare Odifreddi più che per sentire argomentare di “<strong>MATEMATICA DELLA CONOSCENZA</strong>” come recitava il cartellone. Per inciso lo sponsor dell&#8217;evento è stato “il gioco del lotto”, una scelta piuttosto ironica, che sarebbe potuta diventare da solo tema per una conferenza sul calcolo delle probabilità. L&#8217;evento ha invece ha riguardato come al solito il rapporto tra matematica e letteratura, ormai tema fisso di quasi tutti i discorsi di Odifreddi, tirando in ballo come sempre il povero <a href="http://it.wikipedia.org/wiki/Georges_Perec">Perec</a>. I problemi della matematica, è stato confessato, sono sempre e comunque di due tipi: descrizione e classificazione.</p>
<p style="margin-bottom:0;">Approfittando dell&#8217;uscita dei volumi sulla storia della matematica curati da Odifreddi e Bartocci per Einaudi si è parlato anche di stili e pluralità di voci in matematica a proposito sia di singole persone che di diverse culture. I volumi a dire il vero sembrano molto interessanti, dedicati a grandi temi, molto voluminosi, come importante è il loro prezzo (a tre cifre in euro).</p>
<p style="margin-bottom:0;">Odifreddi si ascolta sempre molto volentieri e si è arrivati all&#8217;ora dell&#8217;aperitivo senza grossi cali di attenzione, ma è anche vero che la minaccia di assegnare compiti in classe non è stata messa in pratica.</p>
<p style="margin-bottom:0;"><a href="http://lbell.files.wordpress.com/2008/09/immag056.jpg"><img class="aligncenter size-medium wp-image-119" title="il tendone" src="http://lbell.files.wordpress.com/2008/09/immag056.jpg?w=300&#038;h=225" alt="" width="300" height="225" /></a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/lbell.wordpress.com/117/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/lbell.wordpress.com/117/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lbell.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lbell.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lbell.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lbell.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lbell.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lbell.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lbell.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lbell.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lbell.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lbell.wordpress.com/117/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lbell.wordpress.com&blog=63255&post=117&subd=lbell&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://lbell.wordpress.com/2008/09/09/a-chi-interessa-la-matematica/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/92ab5e92e556e729accbe3b435f54462?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lbell</media:title>
		</media:content>

		<media:content url="http://lbell.files.wordpress.com/2008/09/immag056.jpg?w=300" medium="image">
			<media:title type="html">il tendone</media:title>
		</media:content>
	</item>
		<item>
		<title>Joel ha quasi sempre ragione</title>
		<link>http://lbell.wordpress.com/2008/09/01/joel-ha-quasi-sempre-ragione/</link>
		<comments>http://lbell.wordpress.com/2008/09/01/joel-ha-quasi-sempre-ragione/#comments</comments>
		<pubDate>Mon, 01 Sep 2008 21:35:31 +0000</pubDate>
		<dc:creator>lbell</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[cosi' va il mondo]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[joel]]></category>
		<category><![CDATA[netscape]]></category>

		<guid isPermaLink="false">http://lbell.wordpress.com/?p=115</guid>
		<description><![CDATA[La causa principale della scomparsa di Netscape secondo Joel Spolsky (http://www.joelonsoftware.com/articles/fog0000000069.html) sarebbe imputabile alla decisione di riscrivere da zero il codice su cui si basava l&#8217;ex browser, decisione che lo ha praticamente fatto uscire dal mercato in favore del suo concorrente Internet Explorer e questo fatto costituisce una lezione di vita per i project manager.
In [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lbell.wordpress.com&blog=63255&post=115&subd=lbell&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="margin-bottom:0;">La causa principale della scomparsa di Netscape secondo Joel Spolsky (<a href="http://www.joelonsoftware.com/articles/fog0000000069.html">http://www.joelonsoftware.com/articles/fog0000000069.html</a>) sarebbe imputabile alla decisione di riscrivere da zero il codice su cui si basava l&#8217;ex browser, decisione che lo ha praticamente fatto uscire dal mercato in favore del suo concorrente Internet Explorer e questo fatto costituisce una lezione di vita per i project manager.</p>
<p style="margin-bottom:0;">In effetti l&#8217;articolo di Spolsky è pieno di buon senso e si può senz&#8217;altro condividere.</p>
<p style="margin-bottom:0;">Tuttavia nel campo del software, come più ingenerale nella vita, le conseguenze di una azione assumono a distanza di tempo un significato diverso da quello che hanno avuto nel breve.</p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">Quali reali alternative aveva Netscape davanti a se per rimanere leader del mercato, posizione che era riuscito a raggiungere? Praticamente nessuna, si trovava a competere di colpo con un prodotto gratis (ed è difficile competere con qualcosa che è gratis) e già installato su tutti i computer. L&#8217;utente non doveva nemmeno fare la fatica di scegliere quale browser installare, se tutto quello che stava cercando era un semplice accesso ad internet.</p>
<p style="margin-bottom:0;">Netscape avrebbe dovuto inseguire ogni modifica proprietaria che MS avesse introdotto nel proprio programma appositamente per distinguerlo dalla concorrenza. Si tratta di una battaglia persa comunque in partenza, come ben sanno i produttori di qualsiasi programma da ufficio che si sia scontrato con prodotti MS da Word ad Excel.</p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">Per avere qualche possibilità in una lotta con un colosso, occorre scrivere un prodotto che sia molto migliore della concorrenza, rinnovando totalmente la base di codice se necessario e le procedure per svilupparlo. Si tratta di un investimento a lunga scadenza che richiede uno sforzo gigantesco per chi non ha risorse praticamente infinite, ma è una scommessa fatta per vincere, non per crogiolarsi placidamente in un tramonto inevitabile e tranquillo, come invece scelse di fare la Venezia del 700. Il risultato? Firefox.</p>
<p style="margin-bottom:0;">Ad onor del vero Firefox sembra effettivamente nato per caso dal caos di Netscape, ma non è questa la forza dei progetti Open Source?</p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">Link:</p>
<p style="margin-bottom:0;"><a href="http://www.joelonsoftware.com/articles/fog0000000069.html">http://www.joelonsoftware.com/articles/fog0000000069.html</a></p>
<p style="margin-bottom:0;"><a href="http://en.wikipedia.org/wiki/Netscape">http://en.wikipedia.org/wiki/Netscape</a></p>
<p style="margin-bottom:0;page-break-before:always;">
<p style="margin-bottom:0;">
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/lbell.wordpress.com/115/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/lbell.wordpress.com/115/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lbell.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lbell.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lbell.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lbell.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lbell.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lbell.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lbell.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lbell.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lbell.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lbell.wordpress.com/115/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lbell.wordpress.com&blog=63255&post=115&subd=lbell&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://lbell.wordpress.com/2008/09/01/joel-ha-quasi-sempre-ragione/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/92ab5e92e556e729accbe3b435f54462?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lbell</media:title>
		</media:content>
	</item>
	</channel>
</rss>