<?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>Simionato.org</title>
	<atom:link href="http://simionato.org/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://simionato.org</link>
	<description>just another site in the cloud</description>
	<lastBuildDate>Fri, 04 Jun 2010 18:12:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Xen USB forwarding</title>
		<link>http://simionato.org/?p=173</link>
		<comments>http://simionato.org/?p=173#comments</comments>
		<pubDate>Fri, 04 Jun 2010 18:10:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[xen]]></category>

		<guid isPermaLink="false">http://simionato.org/?p=173</guid>
		<description><![CDATA[Yesterday i was playing with Xen 3.4. I wanted to share my printer to the local network (using CUPS). I have a domU (using HVM), that acts as the internal server. Of course i wanted to configure CUPS on this domU, so i needed to forward the USB printer to the virtual machine.
I followed the [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday i was playing with Xen 3.4. I wanted to share my printer to the local network (using <a href="http://www.cups.org/" target="_blank">CUPS</a>). I have a <a href="http://wiki.xensource.com/xenwiki/XenFaq" target="_blank">domU</a> (using <a href="http://wiki.xensource.com/xenwiki/XenFaq" target="_blank">HVM</a>), that acts as the internal server. Of course i wanted to configure CUPS on this domU, so i needed to forward the USB printer to the virtual machine.</p>
<p>I followed the <a href="http://wiki.xensource.com/xenwiki/XenUSBPassthrough" target="_blank">instructions</a> in the official Xen wiki. Since i&#8217;m using Xen 3.4 and HVM, the only option available (according to the wiki) was to use the qemu-dm emulation/passthrough. So i&#8217;ve retrieved the vendorId and productId of my printer, using lsusb and modified the configuration file of my virtual machine as explained in the documentation.</p>
<p>Everything seemed to work, but when i powered off the printer and then powered it on again, the domU wasn&#8217;t able to &#8220;see&#8221; it anymore. This is very annoying since i don&#8217;t want to leave it powered on all the time. To re-add the printer to the domU while it&#8217;s running i discovered that i can use the command <strong>xm usb-add</strong>. The problem now was to find an automatic way to run this command when the printer is powered on/off or disconnected/reconnected.</p>
<p>The idea was to use <a href="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html" target="_blank">udev</a>. So i wrote a very simple rule that runs a script when the printer is powered off/on (or disconnected/reconnected).<br />
I created the file /lib/udev/rules.d/96-printer.rules:</p>
<pre>SUBSYSTEMS=="usb", ATTRS{idVendor}=="xxxx", ATTRS{idProduct}=="yyyy", RUN+="/etc/xen/scripts/printer"</pre>
<p>Where xxxx and yyyy are the values retrieved from lsusb as explained in the xen <a href="http://wiki.xensource.com/xenwiki/XenUSBPassthrough" target="_blank">instructions</a>. Then i created the file /etc/xen/scripts/printer:</p>
<pre>
#!/bin/bash
/usr/sbin/xm usb-add domain host:xxxx:yyyy
</pre>
<p>That simply runs the usb-add command to re-add the printer to my domU (of course you must replace domain with the name of your domU and add the execution permission to the script).</p>
]]></content:encoded>
			<wfw:commentRss>http://simionato.org/?feed=rss2&amp;p=173</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sonar</title>
		<link>http://simionato.org/?p=169</link>
		<comments>http://simionato.org/?p=169#comments</comments>
		<pubDate>Mon, 03 May 2010 19:23:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://simionato.org/?p=169</guid>
		<description><![CDATA[Qualche giorno fa ho scoperto Sonar, un tool davvero molto utile e ben fatto per l&#8217;analisi statica della qualità del codice.
]]></description>
			<content:encoded><![CDATA[<p>Qualche giorno fa ho scoperto <a href="http://www.sonarsource.org" target="_blank">Sonar</a>, un tool davvero molto utile e ben fatto per l&#8217;analisi statica della qualità del codice.</p>
]]></content:encoded>
			<wfw:commentRss>http://simionato.org/?feed=rss2&amp;p=169</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Really secure hints&#8230;</title>
		<link>http://simionato.org/?p=157</link>
		<comments>http://simionato.org/?p=157#comments</comments>
		<pubDate>Fri, 05 Mar 2010 11:08:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://simionato.org/?p=157</guid>
		<description><![CDATA[


No, non è uno scherzo.
Consigli sulla scelta di una &#8220;buona&#8221; password, sul sito Fineco
]]></description>
			<content:encoded><![CDATA[<p><a href="http://simionato.org/site/wp-content/uploads/2010/03/fineco.jpg"><br />
<img class="alignnone size-medium wp-image-160" title="Fineco, consigli password" src="http://simionato.org/site/wp-content/uploads/2010/03/fineco-300x153.jpg" alt="" width="376" height="190" /><br />
</a></p>
<p>No, non è uno scherzo.<br />
<a href="http://online.fineco.it/public/scopri/consiglisicurezza.asp">Consigli sulla scelta di una &#8220;buona&#8221; password, sul sito Fineco</a></p>
]]></content:encoded>
			<wfw:commentRss>http://simionato.org/?feed=rss2&amp;p=157</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xen on Ubuntu 9.10 (Karmic Koala) server</title>
		<link>http://simionato.org/?p=85</link>
		<comments>http://simionato.org/?p=85#comments</comments>
		<pubDate>Tue, 24 Nov 2009 22:09:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[xen]]></category>

		<guid isPermaLink="false">http://simionato.org/comments/?p=69</guid>
		<description><![CDATA[Qualche giorno fa ho provato ad installare Xen sull&#8217;ultima versione di Ubuntu Server (9.10, Karmic Koala). Il processo è stato davvero molto complicato. C&#8217;è infatti da notare che con questa nuova versione il team di Ubuntu ha apportato numerosi cambiamenti. Innanzitutto Xen non è più supportato ufficialmente, in quanto si è deciso di utilizzare KVM. [...]]]></description>
			<content:encoded><![CDATA[<p>Qualche giorno fa ho provato ad installare <a href="http://xen.org/">Xen</a> sull&#8217;ultima versione di <a href="http://www.ubuntu.com/" target="_blank">Ubuntu</a> Server (9.10, Karmic Koala). Il processo è stato davvero molto complicato. C&#8217;è infatti da notare che con questa nuova versione il team di Ubuntu ha apportato numerosi cambiamenti. Innanzitutto Xen non è più supportato ufficialmente, in quanto si è deciso di utilizzare <a href="http://www.linux-kvm.org" target="_blank">KVM</a>. Inoltre con questa nuova release si è deciso di passare a <a href="http://www.gnu.org/software/grub/grub-2.en.html" target="_blank">GRUB2</a>, sebbene sia ancora in versione beta!</p>
<p>In ogni caso per installare Xen per prima cosa ho dovuto compilare manualmente un kernel adeguato. Esistono fondamentalmente 3 scelte:</p>
<ol>
<li>Far compilare il kernel direttamente dal pacchetto di Xen (scaricabile dal <a href="http://www.xen.org/products/xen_source.html" target="_blank">sito ufficile</a>). In questo caso però si tratta di una versione abbastanza vecchia, 2.6.18.</li>
<li>Scaricare un <a href="http://www.kernel.org" target="_blank">kernel vanilla</a> ed applicare delle patch.</li>
<li>Utilizzare un kernel, ancora in versione di sviluppo, con <a href="http://wiki.xensource.com/xenwiki/XenParavirtOps" target="_blank">paravit_ops</a>.</li>
</ol>
<p>Ho scelto l&#8217;opzione 2 e, dopo aver patchato e compilato manualmente il kernel, ho cercato invano il tradizionale file di Grub per farlo partire al boot. Con la nuova versione del bootloader però le cose sono cambiate ed i file sono differenti. Nello specifico il file di configurazione è /boot/grub/grub.cfg, anche se non è consigliato editarlo in quanto viene <a href="https://wiki.ubuntu.com/Grub2" target="_blank">auto-generato</a> a partire da altri file.</p>
<p>Anche la sintassi del file è cambiata però. In particolare per Xen ora bisogna utilizzare la parola &#8216;multiboot&#8217;, al posto della vecchia &#8216;kernel&#8217;. L&#8217;entry finale risulta quindi simile alla seguente:</p>
<pre>menuentry "Xen 2.6.31.5" {
    .....
    multiboot /xen-3.4.gz dom0_mem=512M
    module    /vmlinuz-2.6.31.5 root=/dev/mapper/main-root ro
    module    /initrd.img-2.6.31.5
}</pre>
<p>In particolare ora si utilizza la keywork &#8216;multiboot&#8217; invece di &#8216;kernel&#8217;.</p>
<p>In ogni caso però una configurazione di questo tipo non ha avuto successo: il kernel parte ma presenta degli errori durante il montaggio della partizione root. Il problema deriva dal fatto che le opzioni non vengono passate al kernel (in particolare root=/dev/&#8230;). Questo poiché esistono ancora dei problemi in GRUB2 con la modalità multiboot.</p>
<p>La (bruttissima) soluzione è stata quella di ricompilare il kernel direttamente con le opzioni da passare. Questa tecnica si adotta in genere nei sistemi embedded, per passare sempre delle opzioni di default. In ogni caso, impostando come command line options appunto &#8220;<em>root=/dev&#8230;. ro</em>&#8221; (nel mio caso) il problema si risolve. Naturalmente se volessimo passare un&#8217;altra opzione al kernel sarebbe necessario ricompilarlo!</p>
<p>In aggiunta a quanto detto, naturalmente, è necessario compilare manualmente anche xen (nel caso si voglia utilizzare l&#8217;ultima versione 3.4, in quanto nei repository si trova la 3.3). Questo processo però non presenta particolari problemi.</p>
<p>In conclusione quindi l&#8217;installazione di Xen non è stata affatto semplice, in particolare stupisce l&#8217;inclusione in una versione server di ubuntu di un pacchetto (GRUB2 appunto) ancora in beta, con evidenti problemi.</p>
]]></content:encoded>
			<wfw:commentRss>http://simionato.org/?feed=rss2&amp;p=85</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Virtualization boom</title>
		<link>http://simionato.org/?p=80</link>
		<comments>http://simionato.org/?p=80#comments</comments>
		<pubDate>Tue, 18 Aug 2009 09:30:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[virtualization]]></category>

		<guid isPermaLink="false">http://simionato.org/comments/?p=65</guid>
		<description><![CDATA[Negli ultimi tempi la virtualizzazione sta avendo un vero e proprio boom. Non si tratti affatto di una tecnologia nuova (le prime soluzioni sono degli anni &#8216;70), tuttavia in questi ultimi tempi sta tornando, per diversi motivi, di &#8220;moda&#8221; anche grazie all&#8217;evoluzione delle soluzioni disponibili.
Nell&#8217;ambiente desktop è molto utile per utilizzare altri sistemi operativi quando [...]]]></description>
			<content:encoded><![CDATA[<p>Negli ultimi tempi la virtualizzazione sta avendo un vero e proprio boom. Non si tratti affatto di una tecnologia nuova (le prime soluzioni sono degli anni &#8216;70), tuttavia in questi ultimi tempi sta tornando, per diversi motivi, di &#8220;moda&#8221; anche grazie all&#8217;evoluzione delle soluzioni disponibili.</p>
<p>Nell&#8217;ambiente desktop è molto utile per utilizzare altri sistemi operativi quando necessario. E&#8217; possibile quindi, ad esempio, lanciare un applicativo disponibile solo per Windows su un sistema Linux oppure provare uno o più software senza dover installare e configurare nulla (scaricando direttamente una <a href="http://en.wikipedia.org/wiki/Virtual_appliance" target="_blank">Virtual appliance</a>). In questo segmento i software disponibili sono diversi, tra i più noti sicuramente <a href="http://www.vmware.com/products/ws/" target="_blank">VMware Workstation</a> e <a href="http://www.virtualbox.org/" target="_blank">VirtualBox</a>.</p>
<p>La virtualizzazione è però usatissima anche in ambito server. In questo caso l&#8217;utilizzo però è un po&#8217; diverso. Tipicamente infatti l&#8217;obiettivo è quello di minimizzare i costi e si cerca di usare un numero limitato di macchine fisiche, sulle quali si fanno girare diverse macchine virtuali. In questo modo si riescono ad avere delle macchine apparentemente separate (con tutti i relativi vantaggi come l&#8217;indipendenza, la possibilità di reinstallazioni, di gestione da parte di utenti separati, ecc) ma che in realtà condividono lo stesso hardware. Anche qui esistono diverse soluzioni, tra le quali sicuramente <a href="http://www.xen.org/" target="_blank">Xen </a>e <a href="http://www.vmware.com/products/server/" target="_blank">VMware Server</a>.</p>
<p>In una tipica configurazione da data center quindi si avranno molte macchine virtuali installati su una stessa macchina fisica. Naturalmente però sarà necessario installare prima un sistema operativo sulla macchina, sul quale andrà poi installato un software di virtualizzazione (e.g. Xen) e quindi le varie macchine virtuali. L&#8217;utilità del sistema operativo in questo caso è quindi molto limitata (far girare il software di virtualizzazione).</p>
<p>Un&#8217;altra categoria che sta emergendo è dunque quella delle architetture cosiddette &#8220;bare-metal&#8221; (ovvero mero metallo). L&#8217;idea è quella di sbarazzarsi del sistema operativo tradizionale, ed avere invece una soluzione integrata formata da un mini sistema operativo e dal software di virtualizzazione. In questo caso quindi la macchina fisica ha il solo scopo di eseguire le macchine virtuali e non necessita praticamente di quasi  alcuna configurazione/installazione. Tra i prodotti di questo tipo ci sono <a href="http://www.vmware.com/products/esxi/" target="_blank">VMware ESXi</a> e <a href="http://www.citrix.com/English/ps2/products/feature.asp?contentID=1686939" target="_blank">XenServer</a>.</p>
<p>Il futuro, almeno nel campo dei datacenter, sembra dunque abbastanza delineato. E&#8217; probabile infatti che nei prossimi anni domineranno le soluzioni dell&#8217;ultimo tipo e le macchine diventeranno veramente del semplice hardware al pari di una lampadina, sostituibili da un addetto che non sa nulla di informatica (la funzione di <a href="http://en.wikipedia.org/wiki/Live_Migration" target="_blank">Live Migration</a> è già un importante passo in questa direzione).</p>
]]></content:encoded>
			<wfw:commentRss>http://simionato.org/?feed=rss2&amp;p=80</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse Galileo is out!</title>
		<link>http://simionato.org/?p=53</link>
		<comments>http://simionato.org/?p=53#comments</comments>
		<pubDate>Wed, 24 Jun 2009 17:04:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://simionato.org/comments/?p=53</guid>
		<description><![CDATA[Oggi è stato rilasciato Eclipse Galileo, popolarissimo IDE per sviluppo di applicazione Java e non solo. Si tratta della cosidetta &#8220;simultaneous release&#8221;: un appuntamento annuale in cui viene distribuita una nuova versione non solamente della piattaforma (che giunge alla versione 3.5), ma anche dei numerosissimi progetti che la compongono  (come quello per applicazioni web), [...]]]></description>
			<content:encoded><![CDATA[<p>Oggi è stato rilasciato <a href="http://www.eclipse.org/galileo/" target="_blank">Eclipse Galileo</a>, popolarissimo IDE per sviluppo di applicazione Java e non solo. Si tratta della cosidetta &#8220;simultaneous release&#8221;: un appuntamento annuale in cui viene distribuita una nuova versione non solamente della piattaforma (che giunge alla versione 3.5), ma anche dei numerosissimi progetti che la compongono  (come quello per applicazioni web), che sono più di 30.</p>
<p>Le novità sono davvero moltissime, potete trovare varie informazioni <a href="http://www.infoq.com/news/2009/06/galileo" target="_blank">qui</a> e <a href="http://www.eclipse.org/org/press-release/20090624_galileo.php" target="_blank">sul comunicato ufficiale</a> del rilascio.</p>
<p>Una delle novità più significative, specie per gli utenti Mac, è l&#8217;update di SWT (il componente utilizzato per la GUI). Infatti finalmente è supportata la piattaforma Cocoa, utilizzata da OS X. Si risolvono quindi i problemi che avevo già evidenziato in un <a href="http://simionato.org/comments/?p=15">precedente post</a>, ovvero la possiblità di utilizzare Java 6 a 64bit per lanciare Eclipse. Inoltre con l&#8217;utilizzo di Cocoa il look dell&#8217;interfaccia è sicuramente migliorato e si integra ora perfettamente con il sistema operativo.</p>
<p>Degno di nota anche la nuova versione del sistema per l&#8217;installazione e la gestione dei plug-in. La nuova finestra ora è sicuramente più chiara e meglio organizzata.</p>
<p><a href="http://192.168.0.40/site/wp-content/uploads/2009/06/picture-4.png"><img class="alignnone size-medium wp-image-58" title="Add new software" src="http://simionato.org/comments/wp-content/uploads/2009/06/picture-4-300x192.png" alt="" width="300" height="192" /></a></p>
<p>Tra le altre novità interessante l&#8217;aggiornamento al compare editor, che si utilizza per confrontare differenti versioni di un file (tipicamente quando si effettua una sincronizzazione con un repository). Questo componente è stato infatti migliorato, in maneira da consentire una più semplice modifica del file direttamente nel compare editor, evitando quindi di dover tornare al workspace.</p>
<p><a href="http://192.168.0.40/site/wp-content/uploads/2009/06/picture-1.png"><img class="alignnone size-medium wp-image-60" title="Compare editor" src="http://simionato.org/comments/wp-content/uploads/2009/06/picture-1-300x112.png" alt="" width="300" height="112" /></a></p>
<p>Nel complesso quindi una release sicuramente positiva. Cosa non va? A mio parere una grave mancanza è il supporto ad SVN. Questo sistemo di controllo di versione è sicuramente tra i più utilizzati al mondo e non è possibile che non sia incluso in un IDE come Eclipse. A tal proposito è aperto un <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=37154" target="_blank">bug</a> dal lontano 2003. In realtà subversive è incluso in Galileo, ma non lo è un connector che consenta la comunicazione con SVN. Per l&#8217;utente finale la situazione dunque non cambia molto: è sempre necessario installare separatamente un plug-in.</p>
]]></content:encoded>
			<wfw:commentRss>http://simionato.org/?feed=rss2&amp;p=53</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Skipping tests in Junit</title>
		<link>http://simionato.org/?p=51</link>
		<comments>http://simionato.org/?p=51#comments</comments>
		<pubDate>Wed, 17 Jun 2009 12:25:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://simionato.org/comments/?p=51</guid>
		<description><![CDATA[Junit è un famosissimo framework per automatizzare il processo di testing in Java.
A volte è utile saltare alcuni test, in base a certe condizioni. Per esempio si potrebbe avere un test che abbia senso solamente su piattaforma Linux. Per realizzare questo comportamente si posso utilizzare i metodi del tipo assume. Quindi ad esempio assumeTrue( condition) [...]]]></description>
			<content:encoded><![CDATA[<p>Junit è un famosissimo framework per automatizzare il processo di testing in Java.</p>
<p>A volte è utile saltare alcuni test, in base a certe condizioni. Per esempio si potrebbe avere un test che abbia senso solamente su piattaforma Linux. Per realizzare questo comportamente si posso utilizzare i metodi del tipo assume. Quindi ad esempio assumeTrue( condition) eseguirà il test solamente se condition è verificata.</p>
]]></content:encoded>
			<wfw:commentRss>http://simionato.org/?feed=rss2&amp;p=51</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>3 tools for better Java development</title>
		<link>http://simionato.org/?p=49</link>
		<comments>http://simionato.org/?p=49#comments</comments>
		<pubDate>Fri, 17 Apr 2009 17:53:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://simionato.org/comments/?p=49</guid>
		<description><![CDATA[Una componente da non trascurare durante lo sviluppo di un progetto è il testing. Ecco allora un tool che facilita la scrittura e l&#8217;esecuzione dei casi di test: JUnit. La libreria è molto semplice da utilizzare e dalla versione 4 consente di impiegare le annotations per identificare i test. E&#8217; sufficiente infatti annotare i metodi [...]]]></description>
			<content:encoded><![CDATA[<p>Una componente da non trascurare durante lo sviluppo di un progetto è il testing. Ecco allora un tool che facilita la scrittura e l&#8217;esecuzione dei casi di test: <a href="http://www.junit.org/" target="_blank">JUnit</a>. La libreria è molto semplice da utilizzare e dalla versione 4 consente di impiegare le annotations per identificare i test. E&#8217; sufficiente infatti annotare i metodi con<em> @Test</em> e Junit si occuperà del resto. Nel corpo di questi metodi basterà effettuare i controlli necessari. JUnit mette a disposizione a questo scopo dei metodi di tipo assertEquals( exceptedValue, actualValue) per controllare che il programma (o la classe in generale) si comporti come previsto. Per tutti i dettagli si rimanda alla documentazione.</p>
<p>Un altro tool molto utile è <a href="http://emma.sourceforge.net/" target="_blank">EMMA</a>, che si occupa di &#8220;copertura di codice&#8221;. Per chi utilizza Eclipse esiste poi il relativo plugin <a href="http://www.eclemma.org/" target="_blank">EclEmma</a>. Queste librerie si occupano di analizzare l&#8217;esecuzione di codice Java, in maniera da identificare quali linee vengono effetivamente eseguite. In questo modo è possibile, ad esempio, avere una idea di quanto un processo di testing sia comprensivo, identificando le aree del programma testate e quelle rimaste invece &#8220;scoperte&#8221;. L&#8217;analisi di copertura del codice può avere anche molti altri usi, ad esempio per effettuare un veloce &#8220;debugging&#8221; in alcune situazioni. Si può infatti scoprire in maniera molto rapida se in un comando condizionale venga seguito il ramo &#8220;if&#8221; o quello &#8220;else&#8221;, ecc.</p>
<p>Un ultimo tool, questa volta disponibile solamente per l&#8217;IDE Eclipse fa parte del progetto <a href="http://www.eclipse.org/tptp/" target="_blank">TPTP</a> (Test &amp; Performance Tools Project) e si occupa del profiling di programmi. In maniera molto intuitiva è possibile effettuare diverse analisi nell&#8217;esecuzione di codice. In particolare si possono scovare le parti di codice che rallentano l&#8217;esecuzione, studiando i tempi impiegati durante una esecuzione a partire dal livello di package e restringendosi via via fino al singolo metodo. Per tutte le informazioni si rimanda alla guida ufficiale o ad <a href="http://www.eclipse.org/tptp/performance/documents/tutorials/arm_viewlet_ClassLink/ClassLink_viewlet_swf.html" target="_blank">uno</a> dei vari screencast.</p>
]]></content:encoded>
			<wfw:commentRss>http://simionato.org/?feed=rss2&amp;p=49</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java 7 concurrency</title>
		<link>http://simionato.org/?p=45</link>
		<comments>http://simionato.org/?p=45#comments</comments>
		<pubDate>Sun, 22 Mar 2009 10:10:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://simionato.org/comments/?p=45</guid>
		<description><![CDATA[Sebbene in molti contesti non si faccia ancora uso delle features di Java 5 (e.g. generics e annotations), si sta già lavorando alla prossima versione di questo popolare linguaggio. Attualmente il rilascio è previsto per gennaio del prossimo anno, anche se si tratta di una data ancora abbastanza approssimativa.
A quanto pare (e per la delusione [...]]]></description>
			<content:encoded><![CDATA[<p>Sebbene in molti contesti non si faccia ancora uso delle features di Java 5 (e.g. generics e annotations), si sta già lavorando alla prossima versione di questo popolare linguaggio. Attualmente il rilascio è previsto per gennaio del prossimo anno, anche se si tratta di una data ancora abbastanza approssimativa.</p>
<p>A quanto pare (e per la delusione di molti) le <a href="http://en.wikipedia.org/wiki/Closure_(computer_science)" target="_blank">closures</a> non saranno incluse in questa release. <a href="http://tech.puredanger.com/java7" target="_blank">Qui</a> potete trovare una lista (non ufficiale) con le features che probabilmente verranno incluse o meno, con molti link alle relative discussioni. Oltre al <a href="http://blogs.sun.com/theplanetarium/entry/java_vm_trying_a_new" target="_blank">nuovo garbage collector</a> od ai <a href="http://jcp.org/en/jsr/detail?id=294" target="_blank">superpackage</a> (ora <em>modules</em>), una cosa abbastanza interessante è la presenza di nuove classi per <a href="http://gee.cs.oswego.edu/dl/concurrency-interest/index.html" target="_blank">gestire la concorrenza</a>. Al package <em>java.util.concurrent </em>(presente già da Java 5) vengono infatti aggiunte nuove classi. Una serie di esse realizza un sistema di decomposizione fork-join.</p>
<p>L&#8217;idea è quella di dividere il problema in unità più picoole, da svolgersi in parallelo, per poi comporre i risultati. Non si tratta di nulla di nuovo, ma di tradizionali tecniche per aumentare il parallelismo (in particolare nell&#8217;ottica dell&#8217;aumento dei core nei processori). In dettaglio sono state create le classi <em>ForkJoinPool</em> e <em>ForkJoinTask</em>. Idealmente la seconda rappresenta un task da eseguire, mentre la prima un insieme di tali task. Ad esempio, nell&#8217;ordinamento tramite mergesort, si avrà un task per ogni sottoporzione da ordinare in parallelo. Naturalmente la questione è molto più articolata, per una spiegazione approfondita si rimanda quindi alle numerose risorse presenti in rete.</p>
]]></content:encoded>
			<wfw:commentRss>http://simionato.org/?feed=rss2&amp;p=45</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Config files 2</title>
		<link>http://simionato.org/?p=33</link>
		<comments>http://simionato.org/?p=33#comments</comments>
		<pubDate>Wed, 11 Mar 2009 21:46:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://simionato.org/comments/?p=33</guid>
		<description><![CDATA[Un altro importante punto, per quanto riguarda i file di configurazione, sono gli aggiornamenti.
Non bisogna infatti dimenticare che con le nuove versioni dei vari software, si hanno spesso modifiche anche ai relativi file di configurazione.
E&#8217; quello che mi è capitato ad esempio oggi, aggiornando il mail server (per la cronica Courier). Nella nuova versione, infatti, [...]]]></description>
			<content:encoded><![CDATA[<p>Un altro importante punto, per quanto riguarda i file di configurazione, sono gli aggiornamenti.<br />
Non bisogna infatti dimenticare che con le nuove versioni dei vari software, si hanno spesso modifiche anche ai relativi file di configurazione.</p>
<p>E&#8217; quello che mi è capitato ad esempio oggi, aggiornando il mail server (per la cronica Courier). Nella nuova versione, infatti, era stato modificato un parametro per la gestione di SSL. Mantenendo il vecchio file di configurazione, il risultato è stato il mancato funzionamento del mail server, che restituiva un errore quando si tentava di collegarsi:</p>
<blockquote>
<p style="text-align: left;">&#8220;couriertls: accept: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number&#8221;</p>
</blockquote>
<p>Per risolvere il problema ho quindi scaricato dal sito ufficiale l&#8217;archivio con la versione appena installata, alla ricerca dei file di configurazione &#8220;originali&#8221;.<br />
A quel punto, trovate le differenze rilevanti, ho provveduto ad aggiornare i file di configurazione &#8220;vecchi&#8221;.<br />
C&#8217;è naturalmente da dire che in molte distribuzioni, quando si aggiorna un pacchetto, viene notificato il fatto che i file di configurazione sono cambiati, proponendo in genere la possibilità di confrontarli con quelli attuali. Va però detto che l&#8217;operazione è abbastanza macchinosa, specie se la configurazione riguarda più file, magari molto lunghi!</p>
]]></content:encoded>
			<wfw:commentRss>http://simionato.org/?feed=rss2&amp;p=33</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
