<?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>Idea Factory</title>
	<atom:link href="http://ideafactory.it/feed" rel="self" type="application/rss+xml" />
	<link>http://ideafactory.it</link>
	<description>c&#039;e&#039; solo un modo di fare le cose: farle bene</description>
	<lastBuildDate>Thu, 01 Jul 2010 15:06:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Generare uman password con PHP</title>
		<link>http://ideafactory.it/php/generare-uman-password-con-php.html</link>
		<comments>http://ideafactory.it/php/generare-uman-password-con-php.html#comments</comments>
		<pubDate>Thu, 01 Jul 2010 15:06:56 +0000</pubDate>
		<dc:creator>Gianluca</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://ideafactory.it/?p=292</guid>
		<description><![CDATA[Gia immagino le facce dubbiose di chi sta leggendo questo post. Concordo che la password debba essere complessa al fine di evitare o quanto meno rallentare un brute force, ma spesso se la password è troppo ostica da ricordare viene scritta su un post-it e messa in bella mostra sul monitor! Ecco il codice di [...]]]></description>
			<content:encoded><![CDATA[<p>Gia immagino le facce dubbiose di chi sta leggendo questo post. Concordo che la password debba essere complessa al fine di evitare o quanto meno rallentare un <em>brute force</em>, ma spesso se la password è troppo ostica da ricordare viene scritta su un <em>post-it</em> e messa in bella mostra sul monitor! <img src='http://ideafactory.it/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Ecco il codice di una bella funzione PHP che genera delle comode <em>human password</em>:<br />
<code><br />
function humanPass($length = <img src='http://ideafactory.it/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> {<br />
$password = '';<br />
$conso=array('b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z');<br />
$vocal=array('a','e','i','o','u');<br />
srand((double)microtime()*1000000);<br />
for($i=1; $i&lt;=$length; $i++) {<br />
if ($i % 2) {<br />
$password.=$conso[rand(0,count($conso)-1)];<br />
} else {<br />
$password.=$vocal[rand(0,count($vocal)-1)];<br />
}<br />
}<br />
return $password;<br />
}<br />
</code><br />
Che cosa fa? Genera una stringa composta da <em>$length</em> caratteri composta da consonanti e vocali equamente alternate.</p>
<p>Se certe consonanti o vocali ci sono antipatiche basta rimuoverle dai due array e non verranno usate.</p>
<p>Ripeto: non è un sistema per generare password sicure quindi se la vostra Bibbia detta policy ferrer ignorate questo mio post.</p>
]]></content:encoded>
			<wfw:commentRss>http://ideafactory.it/php/generare-uman-password-con-php.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mysqltuner: migliorare le performance di MySQL</title>
		<link>http://ideafactory.it/mysql/mysqltuner-migliorare-le-performance-di-mysql.html</link>
		<comments>http://ideafactory.it/mysql/mysqltuner-migliorare-le-performance-di-mysql.html#comments</comments>
		<pubDate>Tue, 22 Jun 2010 07:51:47 +0000</pubDate>
		<dc:creator>Gianluca</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://ideafactory.it/?p=289</guid>
		<description><![CDATA[MySQLTuner è uno script Perl che in analizza il server MySQL e suggerisce le impostazioni migliori basandosi sulle statistiche di utilizzo del server. Premesso che MySQLTuner non fa miracoli ma semplici ottimizzazioni, vediamo come installarlo: apt-get install mysqltuner Adesso con un semplice mysqltuner lanciamo il nuovo tool: &#62;&#62; MySQLTuner 0.9.0 - Major Hayden &#62;&#62; Bug [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.mysqltuner.com/" onclick="pageTracker._trackPageview('/outgoing/blog.mysqltuner.com/?referer=');">MySQLTuner</a> è uno script Perl che in analizza il server MySQL e suggerisce le impostazioni migliori basandosi sulle statistiche di utilizzo del server.</p>
<p>Premesso che <a href="http://blog.mysqltuner.com/" onclick="pageTracker._trackPageview('/outgoing/blog.mysqltuner.com/?referer=');">MySQLTuner</a> non fa miracoli ma semplici ottimizzazioni, vediamo come installarlo:</p>
<p><code>apt-get install mysqltuner</code></p>
<p>Adesso con un semplice <em>mysqltuner</em> lanciamo il nuovo tool:<br />
<code><br />
&gt;&gt;  MySQLTuner 0.9.0 - Major Hayden<br />
&gt;&gt;  Bug reports, feature requests, and downloads at http://mysqltuner.com/<br />
&gt;&gt;  Run with '--help' for additional options and output filtering<br />
Please enter your MySQL administrative login: root<br />
Please enter your MySQL administrative password:<br />
-------- General Statistics --------------------------------------------------<br />
[!!] There is a new version of MySQLTuner available<br />
[OK] Currently running supported MySQL version 5.0.51a-24+lenny4-log<br />
[OK] Operating on 64-bit architecture<br />
-------- Storage Engine Statistics -------------------------------------------<br />
[--] Status: +Archive -BDB -Federated +InnoDB -ISAM -NDBCluster<br />
[--] Data in MyISAM tables: 4M (Tables: 1311)<br />
[--] Data in InnoDB tables: 300M (Tables: 2275)<br />
-------- Performance Metrics -------------------------------------------------<br />
[--] Up for: 17h 28m 59s (6M q [97.770 qps], 18K conn, TX: 11B, RX: 1B)<br />
[--] Reads / Writes: 84% / 16%<br />
[--] Total buffers: 2.6M per thread and 106.0M global<br />
[OK] Maximum possible memory usage: 368.5M (9% of installed RAM)<br />
[OK] Slow queries: 0% (2/6M)<br />
[OK] Highest usage of available connections: 11% (11/100)<br />
[OK] Key buffer size / total MyISAM indexes: 16.0M/4.7M<br />
[OK] Key buffer hit rate: 99.2%<br />
[OK] Query cache efficiency: 93.5%<br />
[!!] Query cache prunes per day: 362758<br />
[OK] Sorts requiring temporary tables: 0%<br />
[!!] Joins performed without indexes: 5599<br />
[!!] Temporary tables created on disk: 78%<br />
[OK] Thread cache hit rate: 99%<br />
[!!] Table cache hit rate: 0%<br />
[OK] Open file limit used: 0%<br />
[OK] Table locks acquired immediately: 100%<br />
[!!] InnoDB data size / buffer pool: 300.1M/8.0M<br />
-------- Recommendations -----------------------------------------------------<br />
General recommendations:<br />
MySQL started within last 24 hours - recommendations may be inaccurate<br />
Enable the slow query log to troubleshoot bad queries<br />
Adjust your join queries to always utilize indexes<br />
When making adjustments, make tmp_table_size/max_heap_table_size equal<br />
Reduce your SELECT DISTINCT queries without LIMIT clauses<br />
Increase table_cache gradually to avoid file descriptor limits<br />
Variables to adjust:<br />
query_cache_size (&gt; 64M)<br />
join_buffer_size (&gt; 128.0K, or always use indexes with joins)<br />
tmp_table_size (&gt; 32M)<br />
max_heap_table_size (&gt; 16M)<br />
table_cache (&gt; 128)<br />
innodb_buffer_pool_size (&gt;= 300M)<br />
</code></p>
<p>Il risultato è più che eplicito.<br />
MySQLTuner mi dice che vanno aggiunte o modificati i valori, delle seguenti variabili:</p>
<p><code><br />
query_cache_size (&gt; 64M)<br />
join_buffer_size (&gt; 128.0K, or always use indexes with joins)<br />
tmp_table_size (&gt; 32M)<br />
max_heap_table_size (&gt; 16M)<br />
table_cache (&gt; 128)<br />
innodb_buffer_pool_size (&gt;= 300M)<br />
</code></p>
<p>Edito il file di configurazione di MySQL (in Debian <em>/etc/mysql/my.cnf</em>) e lo modifico come suggerito.<br />
Fatta la modifica va ovviamente riavviato il servizio MySQL.</p>
<p>Vedete miglioramenti? <img src='http://ideafactory.it/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://ideafactory.it/mysql/mysqltuner-migliorare-le-performance-di-mysql.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java 6 su Ubuntu 10.4 Lucid Lynx</title>
		<link>http://ideafactory.it/ubuntu/java-6-su-ubuntu-10-4-lucid-lynx.html</link>
		<comments>http://ideafactory.it/ubuntu/java-6-su-ubuntu-10-4-lucid-lynx.html#comments</comments>
		<pubDate>Tue, 04 May 2010 12:50:00 +0000</pubDate>
		<dc:creator>Gianluca</dc:creator>
				<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://ideafactory.it/?p=287</guid>
		<description><![CDATA[Proprio ieri ho aggiornano la mia workstation linux based ad Ubuntu 10.4 ed oggi Eclipse lamentava l&#8217;assenza di Java! Ecco la soluzione: sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner" sudo apt-get update Finito! Adesso scegliamo il package più adatto tra sun-java6-jdk e sun-java6-jre. Io ho optato per un secco: sudo apt-get install sun-java6-bin Bye bye]]></description>
			<content:encoded><![CDATA[<p>Proprio ieri ho aggiornano la mia workstation linux based ad Ubuntu 10.4 ed oggi Eclipse lamentava l&#8217;assenza di Java! <img src='http://ideafactory.it/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>Ecco la soluzione:<br />
<code><br />
sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"<br />
sudo apt-get update<br />
</code><br />
Finito! Adesso scegliamo il package più adatto tra sun-java6-jdk e sun-java6-jre.<br />
Io ho optato per un secco:<br />
<code><br />
sudo apt-get install sun-java6-bin<br />
</code><br />
Bye bye</p>
]]></content:encoded>
			<wfw:commentRss>http://ideafactory.it/ubuntu/java-6-su-ubuntu-10-4-lucid-lynx.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>ZRM for MySQL: la soluzione definitiva per il backup di MySQL</title>
		<link>http://ideafactory.it/mysql/zrm-for-mysql-la-soluzione-definitiva-per-il-backup-di-mysql.html</link>
		<comments>http://ideafactory.it/mysql/zrm-for-mysql-la-soluzione-definitiva-per-il-backup-di-mysql.html#comments</comments>
		<pubDate>Thu, 25 Mar 2010 21:15:21 +0000</pubDate>
		<dc:creator>Gianluca</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[backup]]></category>

		<guid isPermaLink="false">http://ideafactory.it/?p=283</guid>
		<description><![CDATA[La maggior parte delle applicazioni (specie quelle web) utilizzano come backend un database. Il database più diffuso in ambito opensource è MySQL forse perché fa parte del mitico quartetto LAMP o semplicemente perché all&#8217;epoca era il dbms più veloce della storia&#8230; Chissà quale sarà il futuro di MySQL, ma in questo post è meglio parlare del presente. Di solito chi [...]]]></description>
			<content:encoded><![CDATA[<p>La maggior parte delle applicazioni (specie quelle web) utilizzano come backend un database.</p>
<p>Il database più diffuso in ambito opensource è MySQL forse perché fa parte del mitico quartetto LAMP o semplicemente perché all&#8217;epoca era il dbms più veloce della storia&#8230; Chissà quale sarà il futuro di MySQL, ma in questo post è meglio parlare del presente.</p>
<p>Di solito chi ha a che fare con MySQL e vuole salvare i preziosi dati contenuti al suo interno, effettua un backup del database (o dei databases) e salva il dump da qualche parte.<br />
Nulla da eccipere a questo modus operandi.<br />
Ma se il db è grande quanto spazio occupa un backup? Quanto tempo ci si impiega a fare un dump?<br />
Mi è capitato che durante un backup di MySQL l&#8217;utilizzo delle risorse schizzasse alle stelle e quindi mi sono messo alla ricerca di un sistema di backup degno di chiamarsi tale e la soluzione è stata <a href="http://www.zmanda.com/backup-mysql.htm" onclick="pageTracker._trackPageview('/outgoing/www.zmanda.com/backup-mysql.htm?referer=');">ZRM fro MySQL</a>.<br />
<a href="http://www.zmanda.com/backup-mysql.htm" onclick="pageTracker._trackPageview('/outgoing/www.zmanda.com/backup-mysql.htm?referer=');"> Zmanda Recovery Manager (ZRM) for MySQL</a> è un tool che permette di:</p>
<ul>
<li>effettuare backup incrementali o full</li>
<li>avere una gestione centralizzata dei backup</li>
<li>ricevere notifiche via e-mail, RSS ed HTML sull&#8217;esito dei backup</li>
<li>effettuare backup compressi e criptati</li>
<li>ripristino dei backup in modo facile</li>
<li>&#8230;e molto altro ancora!</li>
</ul>
<p>Per altri features ed informazioni consiglio di leggere il <a href="http://wiki.zmanda.com/index.php/MySQL_Backup_and_Recovery  " onclick="pageTracker._trackPageview('/outgoing/wiki.zmanda.com/index.php/MySQL_Backup_and_Recovery?referer=');">WiKi</a>.</p>
<p>In questo primo post vedremo come configurare un backup di un server MySQL che si trova sulla stessa macchina dove risiede MySQL. Ovviamente il backup potrà essere salvato su una partizione NFS o su una chiavetta USB ma in sostanza ZRM e MySQL sono sulla stessa macchina.<span id="more-283"></span>Nel prossimo articolo vedremo come fare un backup di un server MySQL remoto.</p>
<p>Procediamo con l&#8217;installazione, ovviamente su Debian.<br />
Nei repository Debian non c&#8217;è il pacchetto (eresiaaaa!) ma dal sito possiamo scaricare il comodissimo .deb:</p>
<p><em>http://www.zmanda.com/download-zrm.php</em></p>
<p>Basta selezionare l&#8217;ultima release (ad oggi la 2.2) e nella pagina successiva possiamo fare il download del pacchetto  <em>mysql-zrm-client_2.2.0_all.deb</em>.</p>
<p>Prima di installarlo abbiamo bisogno di alcuni software a corredo: <em>perl-DBI </em>e <em>perl-XML-parser</em>.</p>
<p>Installiamo:</p>
<p><code>apt-get install libxml-parser-perl libdbd-mysql-perl</code></p>
<p>Se tutto è andato a buon fine installiamo ZRM con:</p>
<p><code>dpkg -i mysql-zrm_2.2.0_all.deb</code></p>
<p>Adesso abbiamo ciò che ci serve, ma per fare i backup incrementali abbiamo bisogno che MySQL scriva il suo utilissimo logbin.<br />
Per abilitare questa opzione, basta editare <em>/etc//mysql/my.cnf</em> e decommentare:</p>
<p><code>log_bin                 = /var/log/mysql/mysql-bin.log<br />
expire_logs_days        = 10<br />
max_binlog_size         = 100M</code></p>
<p>Adesso il file va salvato e si deve riavviare il server MySQL.</p>
<p>I file di configurazione si trovano nella directory <em>/etc/mysql-zrm</em>, andiamo a vedere cosa c&#8217;è dentro:</p>
<ul>
<li><em>mysql-zrm.conf</em></li>
<li><em>mysql-zrm-release</em></li>
<li><em>mysql-zrm-reporter.conf</em></li>
<li><em>RSS.header</em></li>
</ul>
<p>Di vitale importanza sono i <em>.conf</em>, perché <em>mysql-zrm-release</em> ci dice che versione abbiamo e <em>RSS.header </em>è autoeplicativo, serve per l&#8217;RSS generato dal sistema di backup.</p>
<p>Dentro la directory <em>/etc/mysql-zrm</em> possiamo creare una nuova directory e dentro copiare i <em>.conf </em>appena illustrati.<br />
Ciò ci permette di avere vari set di backup che hanno delle configurazioni proprie ed in più ereditano quelle presenti sotto <em>/etc/mysql-zrm</em>.<br />
Esempio pratico: se tutti i database hanno la password di root identica possiamo specificare username e password nel file <em>/etc/mysql-zrm/mysql-zrm.conf</em> e non nel file <em>mysql-zrm.conf</em> presente nella directory del set.</p>
<p>Passiamo dalla teoria alla pratica.<br />
Voglio fare in modo che venga fatto un backup di svariati server che hanno in comune:</p>
<ul>
<li>la password di root di MySQL</li>
<li>la directory di destinazione dove salvare i file</li>
<li>il tipo di backup</li>
<li>uso di routines e quindi il backup delle stesse</li>
<li>la directory dove sono salvati i logbin di MySQL</li>
<li>la directory temporanea</li>
<li>l&#8217;indirizzo e-mail sul quale riceve le notifiche</li>
<li>il tipo di report</li>
<li>il path dove salvare i report html</li>
<li>la URL dal quale consultare i report html</li>
<li>il path da dove prendere l&#8217;header per l&#8217;RSS</li>
</ul>
<p>Detto questo avremo che il file <em>/etc/mysql-zrm/mysql-zrm.conf </em>conterrà (nel mio caso, mi raccomando personalizzate i parametri) questo:</p>
<p><code>backup-mode=logical<br />
destination=/mnt/nfs/mysql-zrm<br />
routines=1<br />
mysql-binlog-path="/var/log/mysql"<br />
tmpdir=/tmp<br />
mailto="info@ideafactory.it"<br />
html-reports=backup-status-info,backup-performance-info<br />
html-report-directory=/var/www/mysql-zrm/reports/<br />
webserver-url=http://backup.ideafactory.it/reports/html/<br />
rss-header-location=/etc/mysql-zrm/</code></p>
<p>Adesso mi creo il file di configurazione per il set che chiamerò &#8221;silver&#8221;  e quindi creerò la directory <em>/etc/mysql-zrm/silver</em> ed il file <em>mysql-zrm.conf</em> al suo interno conterrà (ripeto: nel mio caso!) :</p>
<p><code>comment=Silver<br />
backup-level=0<br />
all-databases=1<br />
user="root"<br />
password="superpasswordsegreta"<br />
retention-policy=7D<br />
host="localhost"<br />
port=3306<br />
socket=/var/run/mysqld/mysqld.sock</code></p>
<p>Ci siamo. Proviamo ad eseguire un backup di prova con:</p>
<p><code>mysql-zrm-scheduler --now --backup-set silver</code></p>
<p>Ovviamente a me il set si chiama silver&#8230;</p>
<p>Prima di spiegare i vari comandi penso sia il caso di illustrare i parametri di configurazione.<br />
Maggiori dettagli si trovano nel <a href="http://wiki.zmanda.com/index.php/Backup_Set_Parameters  " onclick="pageTracker._trackPageview('/outgoing/wiki.zmanda.com/index.php/Backup_Set_Parameters?referer=');">capitolo dedicato ai parametri </a>dell&#8217;ottimo <a href="http://wiki.zmanda.com/index.php/Zmanda_Recovery_Manager_for_MySQL_Users_Manual" onclick="pageTracker._trackPageview('/outgoing/wiki.zmanda.com/index.php/Zmanda_Recovery_Manager_for_MySQL_Users_Manual?referer=');">manuale di ZRM</a>.</p>
<p>Il set &#8220;silver&#8221; fa un backup completo (<em>backup-level=0</em>) di tutti i database (<em>all-databases=1</em>)  presenti sul server locale infatti ho chiamato il set silver proprio come il server così rende l&#8217;idea che il backup è di tutti i database presenti.</p>
<p>Adesso proviamo a dare un backup incrementale.</p>
<p>Non serve editare il file di configurazione del set, perché se passiamo il parametro da linea di comando <em>backup-level=1</em> viene ignorato quello presente nel file di configurazione. Proviamo:</p>
<p><code>mysql-zrm-scheduler --now --backup-set silver --backup-level=1</code></p>
<p>Non vengono fuori errori? Avete ricevuto la comoda e-mail? <img src='http://ideafactory.it/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Adesso è il caso di fare qualche strage al database e provare a fare un ripristino ma prima vediamo un report dei backup effettuati con il comodo comando:</p>
<p><code>mysql-zrm-reporter --show backup-status-info</code></p>
<p>Sotto forma tabellare comparirà un comodissimo riassunto che qui non riporto per motivi di formattazione ma è ben visibile nella documentazione.</p>
<p>Bene, facciamo fuori un database! <img src='http://ideafactory.it/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  L&#8217;ho appena fatto con un DROP DATABASE&#8230;!</p>
<p>Adesso vediamo come ripristinarlo.</p>
<p>La prima domanda è &#8220;che backup ho del set a cui apparteneva il defunto database?&#8221; La risposta viene da qui:</p>
<p><code>mysql-zrm-reporter -show restore-info --where backup-set=silver</code></p>
<p>Dalla lista scelgo il backup corretto è con un semplice:</p>
<p><code>mysql-zrm --action restore --backup-set silver --source-directory /mnt/ibm/mysql-zrm/silver/20100325214251</code></p>
<p>Abbiamo riportato in vita il db defunto partendo dallo snapshot posizionato nella directory illustrata dal report!</p>
<p>Se abbiamo cancellato 2 database e ne vogliamo ripristinare solo uno? Beh le opzioni offerte sono molteplici e la <a href="http://wiki.zmanda.com/index.php/Selective_Recovery" onclick="pageTracker._trackPageview('/outgoing/wiki.zmanda.com/index.php/Selective_Recovery?referer=');">guida sul recovery presente nella documentazione</a> ci mostra comandi per risolvere anche i casi disperatissimi!</p>
<p>Fin ora abbiamo visto come fare un backup e come ripristinarlo, una volta scelta la policy più appropriata alle nostre esigenze è il caso di <a href="http://wiki.zmanda.com/index.php/Daily/_Weekly/_Monthly_Schedules" onclick="pageTracker._trackPageview('/outgoing/wiki.zmanda.com/index.php/Daily/_Weekly/_Monthly_Schedules?referer=');">schedulare i backup</a>:</p>
<p><code>mysql-zrm-scheduler --add -interval daily --start 08:00 --backup-set silver --backup-level 0<br />
mysql-zrm-scheduler --add -interval daily --start 14:00 --backup-set silver --backup-level 1<br />
mysql-zrm-scheduler --add -interval daily --start 19:00 --backup-set silver --backup-level 1</code></p>
<p>Con questi 3 semplici ed esplicativi comandi ho detto al mio nuovo amizo ZRM di fare 3 backup:</p>
<ol>
<li>il primo alle 8.00 di mattina ed è un full backup</li>
<li>il secondo alle 14.00 ed è di tipo incrementale</li>
<li>il terzo alle 19.00 ed è sempre incrementale</li>
</ol>
<p>Le opzioni sono svariate ed accontenteranno tutti. Una domanda sorge spontanea: <em>ma i backup vecchi quando vengono cancellati</em>? Questo viene deciso dal parametro <em>retention-policy</em>, presente nel file di configurazione.</p>
<p>Per questo primo episodio dedicato a ZRM è tutto, spero di aver stimolato la vostra voglia di backup e la curiosità nello spulciare le mille opzioni di questo indispensabile software.</p>
]]></content:encoded>
			<wfw:commentRss>http://ideafactory.it/mysql/zrm-for-mysql-la-soluzione-definitiva-per-il-backup-di-mysql.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gestire il failover della connessione</title>
		<link>http://ideafactory.it/iproute/gestire-il-failover-della-connessione.html</link>
		<comments>http://ideafactory.it/iproute/gestire-il-failover-della-connessione.html#comments</comments>
		<pubDate>Thu, 25 Feb 2010 21:14:34 +0000</pubDate>
		<dc:creator>Gianluca</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[iproute]]></category>
		<category><![CDATA[iptables]]></category>

		<guid isPermaLink="false">http://ideafactory.it/?p=280</guid>
		<description><![CDATA[Dopo l&#8217;intervento al ginocchio, eccomi di nuovo a scrivere su IdeaFactory e voglio iniziare scusandomi con tutti quelli che mi hanno scritto o contattato via Facebook e non hanno ancora ricevuto risposta. Purtroppo non è facile stare seduti davanti ad un PC (anche se è un bel iMac) dopo un intervento al ginocchio. Ma veniamo all&#8217;articolo. [...]]]></description>
			<content:encoded><![CDATA[<p>Dopo l&#8217;intervento al ginocchio, eccomi di nuovo a scrivere su <a href="http://ideafactory.it">IdeaFactory</a> e voglio iniziare scusandomi con tutti quelli che mi hanno scritto o contattato via <a href="http://www.facebook.com/gentilegianluca" onclick="pageTracker._trackPageview('/outgoing/www.facebook.com/gentilegianluca?referer=');">Facebook</a> e non hanno ancora ricevuto risposta.</p>
<p>Purtroppo non è facile stare seduti davanti ad un PC (anche se è un bel iMac) dopo un intervento al ginocchio.</p>
<p>Ma veniamo all&#8217;articolo. Forse il titolo non rende l&#8217;idea ma l&#8217;argomento di oggi risponde a questa domanda: <strong>avendo due connessioni ad Internet collegate alla mia Linux box che funge da router, come faccio a gestire il fail di una delle connessioni inoltrando a quella funzionante il traffico?</strong></p>
<p><strong><span style="font-weight: normal;">Per meglio comprende l&#8217;articolo, vi consiglio di spulciare velocemente due miei vecchi post:</span></strong></p>
<ol>
<li><a href="http://ideafactory.it/debian/iproute-load-balance-verso-2-gateway.html">iproute: load balance verso 2 gateway</a> (IMPORTANTISSIMO!)</li>
<li><a href="http://ideafactory.it/iproute/iproute-load-balance-verso-2-gateway-della-stessa-rete.html">iproute: load balance verso 2 gateway della stessa rete</a></li>
</ol>
<p>Rinfrescata la memoria sul routing di Linux, passiamo ad analizzare la logica di funzionamento dello script.<span id="more-280"></span></p>
<p>La strada migliore per verificare lo stato di una connessione è inoltrare verso il link qualche pacchetto e verificare che torni indietro una risposta.</p>
<p>Lo script non fa altro che pingare un host o in IP esterno pubblico, raggiungibile ed aperto al ping, attraverso i due link a nostra disposizione, se il ping fallisce tutto il traffico passa all&#8217;interfaccia funzionante.</p>
<p>Potete scaricare il file da <a title="Script per il check dei gateway" href="http://ideafactory.it/wp-content/uploads/2010/02/25/checkgw">qui</a> e subito dopo editarlo da root per variare queste impostazioni:<br />
<code><br />
# Frequenza in secondi con cui fare il check delle connessioni<br />
SLEEPTIME=10</code></p>
<p><code># IP o host esterno da pingare per effettuare le prove<br />
TESTIP=www.google.com</code></p>
<p><code># Timeout del ping in secondi<br />
TIMEOUT=2</code></p>
<p><code># Interfacce<br />
EXTIF1=eth1<br />
EXTIF2=eth2</code></p>
<p><code># Indirizzi IP delle interfacce<br />
IP1=192.168.1.7<br />
IP2=192.168.0.7</code></p>
<p><code># Gateway delle interfacce<br />
GW1=192.168.1.1<br />
GW2=192.168.0.1</code></p>
<p><code># Weights del router. Nella mia guida erano entrami ad 1 per fare il round robin delle connessioni:<br />
# Guarda questa riga: ip route add default scope global nexthop via $P1 dev $IF1 weight 1 nexthop via $P2 dev $IF2 weight 1<br />
# Presente nell'articolo http://ideafactory.it/debian/iproute-load-balance-verso-2-gateway.html<br />
W1=1<br />
W2=1 </code></p>
<p><code># Nome dei provider utilizzati<br />
NAME1=ngi<br />
NAME2=fastweb</code></p>
<p><code># Numero di ripetizioni di successo o di fallimento prima di cambiare lo stato alla connessione<br />
SUCCESSREPEATCOUNT=4<br />
FAILUREREPEATCOUNT=1<br />
</code></p>
<p>Come potete vedere utilizzo come host esterno da pingare <em>www.google.com</em> che ADESSO risulta raggiungibile tramite ping, vi consiglio di specificare qualche VOSTRO server così siete sicuri che il fail della connessione non sia dovuto al cambio delle regole di firewall dell&#8217;host a cui sono diretti i ping.</p>
<p>Io vi consiglio di salvare lo script in <em>/usr/local/bin</em> (ovviamente faccio riferimento a Debian) così sarà presente nel path di sistema senza specificare ogni volta il percorso assoluto per richiamarlo.</p>
<p>Una volta salvato nella directory che preferite vanno settati i permessi giusti:</p>
<p><code>chmod 755 /usr/local/bin/checkgw</code></p>
<p>Adesso potete eseguire lo script.</p>
<p>Inizialmente potete NON metterlo in background, così si può verificare il corretto funzionamento ma poi vi consiglio di lanciare lo script in questo modo:</p>
<p><code>checkgw &amp;</code></p>
<p>Se volete che lo script venga eseguito all&#8217;avvio potete inserirlo in <em>/etc/rc.local</em>.</p>
<p>Spero che con questo articolo sia riuscito ad accontentare molti visitatori di <a href="http://ideafactory.it">IdeaFactory</a> e vi ricordo che se avete bisogno di soluzioni personalizzate, avanzate, professionali e sempre funzionanti potete contattarmi.</p>
]]></content:encoded>
			<wfw:commentRss>http://ideafactory.it/iproute/gestire-il-failover-della-connessione.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Il miglior server di posta</title>
		<link>http://ideafactory.it/linux/il-miglior-server-di-posta.html</link>
		<comments>http://ideafactory.it/linux/il-miglior-server-di-posta.html#comments</comments>
		<pubDate>Sun, 10 Jan 2010 18:04:11 +0000</pubDate>
		<dc:creator>Gianluca</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.ideafactory.it/?p=279</guid>
		<description><![CDATA[Con questo articolo inauguro una serie di post dedicati alla configurazione di un server di posta moderno, sicuro ed affidabile basato, ovviamente, su Debian ed equipaggiato con ciò che io personalmente reputo il meglio. Premetto che non basterà seguire alla lettera ciò che io descriverò per ritrovarsi una black box che una volta installata gestisce [...]]]></description>
			<content:encoded><![CDATA[<p>Con questo articolo inauguro una serie di post dedicati alla configurazione di un server di posta moderno, sicuro ed affidabile basato, ovviamente, su <a href="http://www.ideafactory.it/category/debian" onclick="pageTracker._trackPageview('/outgoing/www.ideafactory.it/category/debian?referer=');">Debian</a> ed equipaggiato con ciò che io personalmente reputo il meglio.</p>
<p>Premetto che non basterà seguire alla lettera ciò che io descriverò per ritrovarsi una <em>black box</em> che una volta installata gestisce la posta fin che morte non vi separi. Dico questo perché un servizio come la posta elettronica va seguito e monitorato e spesso è necessario un sistemista (io [pubblicità progresso gratuita <img src='http://ideafactory.it/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ]) che abbia capacità di <em>problem solving</em> notevoli per far sì che la fruizione del servizio non sia mai interrotta.</p>
<p>Cosa ci occorre per mettere su un servizio di posta elettronica con i fiocchi?</p>
<p>Ecco la lista della spesa:</p>
<ul>
<li>Un mail transfer agent (MTA)</li>
<li>Un server POP3 ed IMAP</li>
<li>Un validissimo sistema anti-spam</li>
<li>Un aggiornatissimo sistema anti-virus</li>
<li>Una moderna webmail</li>
<li>Tool di corredo <img src='http://ideafactory.it/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ul>
<h2>Il miglior MTA? Postfix!</h2>
<p>Nel mondo opensource c&#8217;è una vasta gamma di server SMTP ma i più famosi ed utilizzati sono:</p>
<ul>
<li><a href="http://postfix.org" onclick="pageTracker._trackPageview('/outgoing/postfix.org?referer=');">Postfix</a></li>
<li><a href="http://exim.org" onclick="pageTracker._trackPageview('/outgoing/exim.org?referer=');">Exim</a></li>
<li><a href="http://qmail.org" onclick="pageTracker._trackPageview('/outgoing/qmail.org?referer=');">qmail</a></li>
<li><a href="http://sendmail.org" onclick="pageTracker._trackPageview('/outgoing/sendmail.org?referer=');">Sendmail</a></li>
</ul>
<h3><span id="more-279"></span>Sendmail</h3>
<p>La documentazione di Sendmail è buona, c&#8217;è una società che ne cura la parte di <a href="http://sendmail.com" onclick="pageTracker._trackPageview('/outgoing/sendmail.com?referer=');">servizi ed assistenza a pagamento</a> ed ha un buon numero di adepti alla comunità.</p>
<p>Il file di configurazione di Sendmail è un labirinto in cui è utile solo didatticamente imbattersi. Meno contorti sono le violazioni di sicurezza che da sempre accompagnano Sendmail. E per finire, ciò che fa Sendmail viene svolto meglio da altri.</p>
<p>Si parla di <a href="http://www.meta1.org/" onclick="pageTracker._trackPageview('/outgoing/www.meta1.org/?referer=');">MeTA1</a> nome in codice di Sendmail X che ha l&#8217;obiettivo di realizzare un MTA con specifiche del tutto simili a quelle di Postfix&#8230;Postfix c&#8217;è gia.</p>
<h3>qmail</h3>
<p>Sicurezza, sicurezza e sicurezza. Alla base della progettazione di qmail c&#8217;è la sicurezza. Nei tempi in cui Sendmail era un vero e proprio colabrodo, Daniel J. Bernstein realizzo qmail.</p>
<p>Obiettivo raggiunto, è sicuro tant&#8217;è che ci ha messo anche una taglia. La versione disponibile è la 1.03 uscita nel giugno del lontanissimo (informaticamente parlando) 1998. Da allora nessun aggiornamento, va bene così com&#8217;è, forse.</p>
<p>qmail ha dato una lezione a tutti ma alcuni allievi hanno superato il maestro, tant&#8217;è che qmail è stato il primo a supportare decentemente il formato Maildir, adesso però la concorrenza ha gia Maildir++ e per renderlo un server SMTP dei giorni nostri vanno applicate infinite patch. La licenza attuale di qmail? Un enigma.</p>
<h3>Exim</h3>
<p>E&#8217; un MTA. Sicuro e general purpose, è tutto ciò che ci aveva Sendmail desiderava. Si configura con un file di configurazione, c&#8217;è solo un demone ed è veloce, molto veloce. Smista alla grande ma la mia descrizione finisce qui perché lo conosco davvero poco. Sorry! <img src='http://ideafactory.it/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<h3>Postfix</h3>
<p>Per me Postifx è <em>sua maestà</em> MTA. In tre parole è: sicuro, facile (da amministrare) ed efficiente.</p>
<p>Come per qmail, la progettazione di questo software aveva come obiettivo la sicurezza e <a href="http://en.wikipedia.org/wiki/Wietse_Venema" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Wietse_Venema?referer=');">Wietse Venema</a>, con circa circa 150k righe di codice, secondo me, ci è riuscito alla grande.</p>
<p>Postfix si compone di diversi programmi (ma meno di qmail), e dispone di un file di configurazione monolitico. Ha un forte accento sulla sicurezza, ma non fino al punto di imporre insolite pratiche di gestione Unix.Postfix segue un approccio vagamente analogo a qmail per quanto concerne la sicurezza ed il team di Sendmail riconosce espressamente Postfix come modello da seguire per la loro prossima release che sostituirà definitivamente Sendmail, MeTA1.</p>
<p>Il risultato impressionante è che Postfix fornisce grande flessibilità e facilità di amministrazione, nonostante il raggiungimento di obiettivi di sicurezza rigorosi. A mio avviso è più efficiente di Exim ed utilizza la stessa quantità di memoria di qmail ma a differenza di quest&#8217;ultimo utilizza meno banda perché qmail invia in solo messaggio per sessione SMTP anche se il destinatario è lo stesso host.</p>
<p>Postfix per me è il migliore, ed in questo articolo userò Postfix.</p>
<p>Guardate i risultati del Debian Popularity Contest cliccando di <a href="http://qa.debian.org/popcon.php?package=postfix" onclick="pageTracker._trackPageview('/outgoing/qa.debian.org/popcon.php?package=postfix&amp;referer=');">Postfix</a>, vi ho convinto? <img src='http://ideafactory.it/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Nella prossima puntata scopriremo il miglior server POP3/IMAP&#8230;<em>stay tuned</em>!</p>
]]></content:encoded>
			<wfw:commentRss>http://ideafactory.it/linux/il-miglior-server-di-posta.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Cambiare l&#8217;editor di default in Debian Lenny</title>
		<link>http://ideafactory.it/debian/cambiare-leditor-di-default-in-debian-lenny.html</link>
		<comments>http://ideafactory.it/debian/cambiare-leditor-di-default-in-debian-lenny.html#comments</comments>
		<pubDate>Sun, 10 Jan 2010 10:57:39 +0000</pubDate>
		<dc:creator>Gianluca</dc:creator>
				<category><![CDATA[Debian]]></category>

		<guid isPermaLink="false">http://www.ideafactory.it/?p=275</guid>
		<description><![CDATA[L&#8217;editor di default di Debian Lenny è Nano. Io non ho niente contro Nano ma preferisco Vi, quindi, quando il mio server utilizza un editor, ad esempio quando viene richiamato un crontab -e, voglio il mio editor prferito. Ci sono due strade percorribili, una è la Debian Way l&#8217;altra è quella maccheronica. Descriverò quella alla [...]]]></description>
			<content:encoded><![CDATA[<p>L&#8217;editor di default di <a href="http://www.ideafactory.it/debian" onclick="pageTracker._trackPageview('/outgoing/www.ideafactory.it/debian?referer=');">Debian</a> Lenny è <em>Nano</em>. Io non ho niente contro Nano ma preferisco <em>Vi</em>, quindi, quando il mio server utilizza un editor, ad esempio quando viene richiamato un <em>crontab -e</em>, voglio il mio editor prferito.</p>
<p>Ci sono due strade percorribili, una è la <em>Debian Way</em> l&#8217;altra è quella maccheronica. Descriverò quella alla <em>Debian Way</em> e lascio ai commenti l&#8217;opportunità di descrivere quella maccheronica!:)</p>
<p>Con il comando <em>update-alternatives &#8211;config editor</em> vien fuori:<br />
<code><br />
Ci sono 5 alternative che forniscono `editor'.<br />
Selezione    Alternativa<br />
-----------------------------------------------<br />
1    /bin/ed<br />
+        2    /bin/nano<br />
3    /usr/bin/vim.tiny<br />
4    /usr/bin/vim.basic<br />
*         5    /usr/bin/vim.nox<br />
Premi invio per mantenere il default[*], o inserisci il numero da selezionare:<br />
</code><br />
Facile no? <img src='http://ideafactory.it/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Ovviamente bisogna aver installato l&#8217;editor che si vuole impostare come default altrimenti la lista mostrata sarà molto misera.</p>
<p>Adesso chiedo a voi: qual&#8217;è il modo maccheronico per cambiare editor? <img src='http://ideafactory.it/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://ideafactory.it/debian/cambiare-leditor-di-default-in-debian-lenny.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ServerSignature di Apache</title>
		<link>http://ideafactory.it/apache/serversignature-di-apache.html</link>
		<comments>http://ideafactory.it/apache/serversignature-di-apache.html#comments</comments>
		<pubDate>Sat, 09 Jan 2010 13:42:38 +0000</pubDate>
		<dc:creator>Gianluca</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.ideafactory.it/?p=271</guid>
		<description><![CDATA[In un precedente articolo ho descritto come Modificare l&#8217;header di Apache, in questo articolo  vediamo come non mostrarlo affatto. Molto probabilmente richiamando una URL inesistente o non gestita dall&#8217;applicazione che risiede sul nostro server, viene fuori qualcosa del genere: In base a quanto descritto nell&#8217;articolo Modificare l&#8217;header di Apache, possiamo variare l&#8217;output che mostra le [...]]]></description>
			<content:encoded><![CDATA[<p>In un precedente articolo ho descritto come <a href="http://www.ideafactory.it/apache/modificare-le-informazioni-dellheader-di-apache.html" onclick="pageTracker._trackPageview('/outgoing/www.ideafactory.it/apache/modificare-le-informazioni-dellheader-di-apache.html?referer=');">Modificare l&#8217;header di Apache</a>, in questo articolo  vediamo come non mostrarlo affatto.</p>
<p>Molto probabilmente richiamando una URL inesistente o non gestita dall&#8217;applicazione che risiede sul nostro server, viene fuori qualcosa del genere:</p>
<p style="text-align: center;"><img class="aligncenter" title="ServerSignature" src="http://articles.slicehost.com/assets/2007/9/14/004_serversignature.png" alt="ServerSignature di Apache" width="435" height="104" /></p>
<p style="text-align: left;">In base a quanto descritto nell&#8217;articolo <a href="http://www.ideafactory.it/apache/modificare-le-informazioni-dellheader-di-apache.html" onclick="pageTracker._trackPageview('/outgoing/www.ideafactory.it/apache/modificare-le-informazioni-dellheader-di-apache.html?referer=');">Modificare l&#8217;header di Apache</a>, possiamo variare l&#8217;output che mostra le informazioni del server web.</p>
<p>Per non mostrare assolutamente niente, basta editare il file del virtualhost ad esempio <em>/etc/apache2/sites-available/default</em>, ed impostare la direttiva ServerSignature ad Off in questo modo:</p>
<p><code>ServerSignature Off</code></p>
<p>Ovviamente va restartato Apache prima di vedere attuata tale modifica.</p>
<p>Quali sono le opzioni di <em>ServerSignature</em>? Eccole:</p>
<ul>
<li><em>Off</em>: Non visualizza niente nel footer</li>
<li><em>On</em>: Visualizza le informazioni come specificato in <em>ServerTokens</em></li>
<li><em>On</em>: Visualizza le informazioni come specificato in <em>ServerTokens</em> ed aggiunge il link all&#8217;indirizzo e-mail specificato con <em>ServerAdmin</em></li>
</ul>
<p>Buon week-end a tutti.</p>
]]></content:encoded>
			<wfw:commentRss>http://ideafactory.it/apache/serversignature-di-apache.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sessioni SSH che cadono? Risolviamo!</title>
		<link>http://ideafactory.it/linux/sessioni-ssh-che-cadono-risolviamo.html</link>
		<comments>http://ideafactory.it/linux/sessioni-ssh-che-cadono-risolviamo.html#comments</comments>
		<pubDate>Mon, 04 Jan 2010 16:41:09 +0000</pubDate>
		<dc:creator>Gianluca</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sicurezza]]></category>

		<guid isPermaLink="false">http://www.ideafactory.it/?p=266</guid>
		<description><![CDATA[Spero che tutti quelli che leggono IdeaFactory fanno uso di SSH per la connessione remota ai server. Non usate ASSOLUTAMENTE telnet o simili! I motivi sono ovvi&#8230; Fatta la breve ma doverosa premessa veniamo al dunque. Può capitare di ritrovare la propria sessione SSH terminata a causa di timeout per mancato utilizzo, come si risolve [...]]]></description>
			<content:encoded><![CDATA[<p>Spero che tutti quelli che leggono<a href="http://www.ideafactory.it/" onclick="pageTracker._trackPageview('/outgoing/www.ideafactory.it/?referer=');"> IdeaFactory</a> fanno uso di SSH per la connessione remota ai server. Non usate ASSOLUTAMENTE telnet o simili! I motivi sono ovvi&#8230;</p>
<p>Fatta la breve ma doverosa premessa veniamo al dunque.</p>
<p>Può capitare di ritrovare la propria sessione SSH terminata a causa di timeout per mancato utilizzo, come si risolve tutto ciò? Basta editare il file <em>/etc/ssh/ssh_config</em> (su sistemi <em>Debian based</em>) ed inserire questi parametri:<br />
<code><br />
TCPKeepAlive yes<br />
ServerAliveInterval 5<br />
ServerAliveCountMax 60<br />
</code><br />
Così facendo il client SSH terrà viva la connessione al server e quindi noi possiamo andarci a fare un meritato bagno caldo.</p>
]]></content:encoded>
			<wfw:commentRss>http://ideafactory.it/linux/sessioni-ssh-che-cadono-risolviamo.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My traceroute: ping+traceroute=mtr</title>
		<link>http://ideafactory.it/linux/my-traceroute-pingtraceroutemtr.html</link>
		<comments>http://ideafactory.it/linux/my-traceroute-pingtraceroutemtr.html#comments</comments>
		<pubDate>Thu, 31 Dec 2009 14:28:06 +0000</pubDate>
		<dc:creator>Gianluca</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.ideafactory.it/?p=264</guid>
		<description><![CDATA[Ieri per purissimo caso ho scoperto l&#8217;ennesimo utilissimo comando da linea di comando: mtr. Usiamo molto spesso traceroute e quotidianamente ping, con mtr li abbiamo entrambi e l&#8217;utilità è di facile spiegazione. Spesso capita che il nostro adorato server dedicato non è raggiungibile per problemi di rete dovuti ai molteplici router intermedi, con mtr possiamo [...]]]></description>
			<content:encoded><![CDATA[<p>Ieri per purissimo caso ho scoperto l&#8217;ennesimo utilissimo comando da linea di comando: <strong>mtr</strong>.</p>
<p>Usiamo molto spesso<em> traceroute</em> e quotidianamente <em>ping</em>, con<strong> mtr</strong> li abbiamo entrambi e l&#8217;utilità è di facile spiegazione.</p>
<p>Spesso capita che il nostro adorato server dedicato non è raggiungibile per problemi di rete dovuti ai molteplici router intermedi, con <strong>mtr</strong> possiamo monitorare tutti gli hop intermedi e verificare ciò che accade quando li si attraversa.</p>
<p><em>Visto che è di certo l&#8217;ultimo post del 2009, vi aguro un felice anno nuovo!</em></p>
<p>p.s.: un ringraziamento a<em> Iuri</em> per avermi fatto notare <strong>mtr</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ideafactory.it/linux/my-traceroute-pingtraceroutemtr.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
