<?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>bits4beats</title>
	<atom:link href="http://www.bits4beats.it/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bits4beats.it</link>
	<description>Idee e pensieri di Roberto Rossi</description>
	<lastBuildDate>Wed, 01 May 2013 19:43:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Come recuperare foto o dati cancellati da una chiavetta USB/SD Card con Linux</title>
		<link>http://www.bits4beats.it/linux/come-recuperare-foto-o-dati-cancellati-da-una-chiavetta-usbsd-card-con-linux/</link>
		<comments>http://www.bits4beats.it/linux/come-recuperare-foto-o-dati-cancellati-da-una-chiavetta-usbsd-card-con-linux/#comments</comments>
		<pubDate>Thu, 14 Mar 2013 23:14:40 +0000</pubDate>
		<dc:creator>ROb</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Utilità]]></category>
		<category><![CDATA[deleted files]]></category>
		<category><![CDATA[photorec]]></category>
		<category><![CDATA[testdisk]]></category>

		<guid isPermaLink="false">http://www.bits4beats.it/?p=1169</guid>
		<description><![CDATA[Ecco i passaggi che ho eseguito per recuperare i dati dalla scheda xD di un amico che aveva erroneamente perso dall&#8217;hard disk dopo averli cancellati dalla scheda:

 generata un&#8217;immagine esatta della scheda con dd su un file immagine: sudo dd if=/dev/sdb of=~/Desktop/my_card.img bs=512
installato photorec: sudo apt-get install testdisk
avviato photorec sull&#8217;immagine: photorec my_card.img
eseguita la procedura guidata [...]]]></description>
			<content:encoded><![CDATA[<p>Ecco i passaggi che ho eseguito per recuperare i dati dalla scheda xD di un amico che aveva erroneamente perso dall&#8217;hard disk dopo averli cancellati dalla scheda:</p>
<ol>
<li> generata un&#8217;<strong>immagine esatta</strong> della scheda con dd su un file immagine: <em>sudo dd if=/dev/sdb of=~/Desktop/my_card.img bs=512</em></li>
<li><strong>installato photorec</strong>: <em>sudo apt-get install testdisk</em></li>
<li><strong>avviato photorec</strong> sull&#8217;immagine: <em>photorec my_card.img</em></li>
<li>eseguita la procedura guidata proposta da photorec. I passaggi cruciali sono: 1) scelta della partizione, 2) identificazione del tipo della partizione, 3) scelta della cartella di destinazione dei file recuperati.</li>
</ol>
<p>Se tutto va a buon fine photorec sara&#8217; in grado di estrarre i dati nella cartella specificata. Produrra&#8217; anche un file xml contenente il risultato del recupero.<br />
Io sono riuscito a recuperare <strong>129 file</strong> per circa <strong>400Mb di spazio</strong>. Tutte le foto cancellate per errore sono state ritrovate!</p>
<p>La guida inglese che ho seguito e&#8217;: <a href="https://goinggnu.wordpress.com/2008/02/14/recover-deleted-files-from-memory-card/" target="_blank">https://goinggnu.wordpress.com/2008/02/14/recover-deleted-files-from-memory-card/</a></p>
<p>Ora non dobbiamo piu&#8217; ricorrere alle altrettanto valide utility Windows, abbiamo la nostra cartella degli attrezzi Open Source</p>
<p>Grazie!</p>
<p>Roberto Rossi</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bits4beats.it/linux/come-recuperare-foto-o-dati-cancellati-da-una-chiavetta-usbsd-card-con-linux/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>net2ftp &#8211; un pannello web per ftp</title>
		<link>http://www.bits4beats.it/sviluppo-web/net2ftp-un-pannello-web-per-ftp/</link>
		<comments>http://www.bits4beats.it/sviluppo-web/net2ftp-un-pannello-web-per-ftp/#comments</comments>
		<pubDate>Thu, 13 Sep 2012 07:53:07 +0000</pubDate>
		<dc:creator>ROb</dc:creator>
				<category><![CDATA[Sviluppo web]]></category>
		<category><![CDATA[Utilità]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.bits4beats.it/?p=1159</guid>
		<description><![CDATA[Spesso si ha la necessità di esporre un servizio ftp senza però aprire il servizio ftp (porta 21) al mondo intero.
Net2ftp si preoccupa di fare proprio questo. Fa da intermediario tra l&#8217;utente e il servizio ftp attraverso un pannello web.
Semplice, veloce ed immediato, net2ftp è un ottimo prodotto open source per soddisfare questa esigenza.
A questo [...]]]></description>
			<content:encoded><![CDATA[<p>Spesso si ha la necessità di esporre un servizio ftp senza però aprire il servizio ftp (porta 21) al mondo intero.</p>
<p><a title="net2ftp" href="http://www.net2ftp.com/" target="_blank"><strong>Net2ftp</strong></a> si preoccupa di fare proprio questo. Fa da intermediario tra l&#8217;utente e il servizio ftp attraverso un pannello web.<br />
Semplice, veloce ed immediato, net2ftp è un ottimo prodotto open source per soddisfare questa esigenza.</p>
<p><a href="http://www.net2ftp.com/homepage/screenshots.html" target="_blank">A questo indirizzo</a> sono disponibili alcuni screenshot che mostrano l&#8217;aspetto del software.<br />
Dalla homepage è anche possibile provarlo al volo su un account ftp di cui disponiamo l&#8217;accesso.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bits4beats.it/sviluppo-web/net2ftp-un-pannello-web-per-ftp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ritorno d&#8217;Alla Sorgente dell&#8217;Amore&#8230;</title>
		<link>http://www.bits4beats.it/varie/ritorno-dalla-sorgente-dellamore/</link>
		<comments>http://www.bits4beats.it/varie/ritorno-dalla-sorgente-dellamore/#comments</comments>
		<pubDate>Tue, 01 May 2012 21:14:48 +0000</pubDate>
		<dc:creator>ROb</dc:creator>
				<category><![CDATA[Varie]]></category>
		<category><![CDATA[amore]]></category>
		<category><![CDATA[forum]]></category>
		<category><![CDATA[icc]]></category>
		<category><![CDATA[mgs]]></category>

		<guid isPermaLink="false">http://www.bits4beats.it/?p=1138</guid>
		<description><![CDATA[
Questo post è dedicato al Forum MGS ICC 2012. A tutti i ragazzi, animatori, responsabili, accompagnatori, autisti, volontari, organizzatori, laici e religiosi, che hanno partecipato e hanno contribuito a creare quello speciale clima di spiritualità e festa che abbiamo vissuto in questi giorni insieme.
Sono veramente contento di essere stato con voi.
Ringrazio ancora una volta Don [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-1141" title="Alla Sorgente dell'Amore" src="http://www.bits4beats.it/wp-content/uploads/2012/05/sfondo_650.jpg" alt="" width="650" height="489" /></p>
<p>Questo post è dedicato al <strong>Forum MGS ICC 2012</strong>. A tutti i ragazzi, animatori, responsabili, accompagnatori, autisti, volontari, organizzatori, laici e religiosi, che hanno partecipato e hanno contribuito a creare quello speciale clima di spiritualità e festa che abbiamo vissuto in questi giorni insieme.<br />
Sono veramente contento di essere stato con voi.</p>
<p>Ringrazio ancora una volta <strong>Don Bosco</strong> per tutto quello che ha fatto e sta ancora facendo per i giovani del mondo.<br />
Che il suo carisma riviva ogni giorno nelle nostre case, oratori e parrocchie.<br />
&#8220;Che i nostri giovani non solo siano amati, ma sappiano anche di essere amati&#8230;&#8221;</p>
<p>Ecco i link alle foto scattate da <strong>Gianni Ornelli</strong> e <strong>Dino Mariani</strong> della <strong>Casa di Macerata</strong>.</p>
<ul>
<li><strong><a href="https://picasaweb.google.com/109528372458066660006/2012_04_2905_01ForumMGS2012Dino" target="_blank">2012_04_29-05_01 Forum MGS 2012 &#8211; Dino (969)</a></strong></li>
<li><strong><a href="https://picasaweb.google.com/109528372458066660006/2012_04_2905_01ForumMGS2012Gianni" target="_blank">2012_04_29-05_01 Forum MGS 2012 &#8211; Gianni (684)<br />
</a></strong></li>
</ul>
<p>I video delle dirette televisive da Missioni Don Bosco:</p>
<ul>
<li><strong><a href="http://www.missionidonbosco.tv/video/993/30-aprile-2012-loreto-musical-" target="_blank">http://www.missionidonbosco.tv/video/993/30-aprile-2012-loreto-musical-</a></strong></li>
</ul>
<p>Altro materiale tra cui il file mp3 dell&#8217;<strong>inno</strong> e qualcosa che può aiutarvi a ricordare questi momenti speciali.</p>
<ul>
<li><strong><a title="Inno Forum MGS ICC 2012" href="http://dl.dropbox.com/u/989915/forummgs2012/Alla%20Sorgente%20Dell%27Amore%20-%20Forum%20MGS%202012.mp3" target="_blank">Inno</a></strong></li>
<li><strong><a title="Pieghevole Forum MGS 2012" href="http://dl.dropbox.com/u/989915/forummgs2012/Pieghevole%20Forum%202012.pdf" target="_blank">Pieghevole</a></strong></li>
<li><strong><a title="Vademecum Forum MGS ICC 2012" href="http://dl.dropbox.com/u/989915/forummgs2012/Vademecum.pdf" target="_blank">Vademecum</a></strong></li>
<li><strong><a title="Manifesto Forum MGS ICC 2012" href="http://dl.dropbox.com/u/989915/forummgs2012/Manifesto%20Marche%20Forum%202012.pdf" target="_blank">Manifesto</a></strong></li>
<li><strong><a title="Annullo Filatelico Forum MGS ICC 2012" href="http://dl.dropbox.com/u/989915/forummgs2012/0376.tif" target="_blank">Annullo Filatelico</a></strong></li>
<li><strong><a title="Cartolina Forum MGS ICC 2012" href="http://dl.dropbox.com/u/989915/forummgs2012/cartolina_forum_mgs_2012.pdf" target="_blank">Cartolina</a></strong></li>
</ul>
<p>Rassegna Stampa:</p>
<ul>
<li><a href="http://www.ilrestodelcarlino.it/macerata/cronaca/2012/04/29/705047-Forum-Movimento-giovanile-salesiano.shtml" target="_blank"><strong>Articolo dal sito del Resto Del Carlino</strong></a></li>
</ul>
<p>Buona notte,</p>
<p>Roberto Rossi</p>
<p>P.S.: un saluto speciale a <strong>Italo</strong>, <strong>Francesco</strong>, <strong>Gianluca, Ivan, Umberto, Roberto, Don Luigi, Don Giovanni, Don Carlos</strong>, <strong>Don Gianni</strong> e a tutto lo <strong>staff animatori e volontari di Macerata</strong>.</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 639px; width: 1px; height: 1px; overflow: hidden;">
<ul>
<li><strong><br />
</strong></li>
<li><strong><a title="Manifesto Forum MGS ICC 2012" href="http://dl.dropbox.com/u/989915/forummgs2012/Manifesto%20Marche%20Forum%202012.pdf" target="_blank">Manifesto</a></strong></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.bits4beats.it/varie/ritorno-dalla-sorgente-dellamore/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
<enclosure url="http://dl.dropbox.com/u/989915/forummgs2012/Alla%20Sorgente%20Dell%27Amore%20-%20Forum%20MGS%202012.mp3" length="1854935" type="audio/mpeg" />
		</item>
		<item>
		<title>Total Recoll, come indicizzare il file system Linux</title>
		<link>http://www.bits4beats.it/linux/total-recoll-come-indicizzare-il-file-system-linux/</link>
		<comments>http://www.bits4beats.it/linux/total-recoll-come-indicizzare-il-file-system-linux/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 23:46:31 +0000</pubDate>
		<dc:creator>ROb</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[file system]]></category>
		<category><![CDATA[indicizzazione]]></category>
		<category><![CDATA[recoll]]></category>

		<guid isPermaLink="false">http://www.bits4beats.it/?p=1126</guid>
		<description><![CDATA[Chi ha avuto l&#8217;esigenza di dover indicizzare il proprio file system in ambiente Linux sicuramente conosce Beagle o Google Desktop Search. Beagle è molto spesso installato nativamente ed è scritto in Mono, Google Desktop Search è invece un&#8217;applicativo sviluppato da Google (inventrice degli algoritmi efficienti per l&#8217;indicizzazione e il retrieving dei documenti).
Oggi voglio parlarvi di [...]]]></description>
			<content:encoded><![CDATA[<p>Chi ha avuto l&#8217;esigenza di dover indicizzare il proprio file system in ambiente Linux sicuramente conosce <strong>Beagle</strong> o <strong>Google Desktop Search</strong>. Beagle è molto spesso installato nativamente ed è scritto in Mono, Google Desktop Search è invece un&#8217;applicativo sviluppato da Google (inventrice degli algoritmi efficienti per l&#8217;indicizzazione e il retrieving dei documenti).</p>
<p>Oggi voglio parlarvi di una soluzione alternativa, sempre per il mondo Unix/Linux (anche se esistono dei port per altre piattaforme) e del quale sono rimasto particolarmente soddisfatto.</p>
<p><strong>Recoll</strong>, questo il suo nome, consta di una componente di indicizzazione e di una componente di document retrieval (sia tramite interfaccia GUI che via command line). Il bello di Recoll è la sua semplicità di utilizzo e la possibilità di modificare i parametri di configurazione dell&#8217;indice nonché la visualizzazione dei risultati forniti. Le impostazioni vengono salvate in un apposito file di configurazione modificabile anche tramite un semplice editor di testo.</p>
<p>Inoltre, potendo lavorare direttamente via console, può essere facilmente installato anche in <strong>ambito server</strong> (opzione molto utile per interrogare i documenti salvati in un file system remoto).</p>
<p>L&#8217;indice di Recoll viene salvato in un database <em>xapiandb</em>.  Recoll è in grado di analizzare file di diverso tipo. I più comuni sono i documenti <em>office</em>, quelli <em>pdf</em> e anche gli <em>html</em>. Ovviamente non mancano i file <em>.txt</em> , gli <em>mp3</em> (con i relativi tag ID3) e i file di immagini. Infine e&#8217; anche possibile installare delle lingue aggiuntive per la creazione del corpus delle parole e dei termini di ricerca.</p>
<p>Nell&#8217;immagine che segue è possibile ammirare la finestra principale dell&#8217;applicativo. Quelli che si vedono sono i risultati di un query non banale, con una sintassi Google like. I risultati possono essere ordinati per alcuni importanti criteri e l&#8217;output fornito è facilmente customizzabile. Il link &#8220;<em>Edit</em>&#8221; apre il documento attraverso il client predefinito del nostro PC, il pulsante &#8220;<em>Preview</em>&#8221; ci permette di navigare al volo all&#8217;interno del contenuto testuale del documento stesso. Usando il tasto destro del mouse su ogni riga è possibile anche effettuare altre operazioni come copiare il path completo del file oppure aprire la directory in cui si trova il documento trovato.</p>
<p><a href="http://www.bits4beats.it/wp-content/uploads/2011/11/recoll_query_interface.png"><img class="aligncenter size-medium wp-image-1128" title="recoll_query_interface" src="http://www.bits4beats.it/wp-content/uploads/2011/11/recoll_query_interface-600x348.png" alt="" width="600" height="348" /></a></p>
<p>Insomma c&#8217;è tutto quello di cui abbiamo bisogno.</p>
<p>Cito infine due aspetti che ho trovato decisamente comodi e differenzianti:</p>
<p>1) l<strong>a possibilità di lanciare Recoll in modalità di indicizzazione continuative in realtime</strong>. Avviando infatti l&#8217;eseguibile <em>recollindex</em> con il parametro <em>-m</em> , il programma riceve dal kernel le notifiche di tutti i file modificati, creati o cancellati nel sistema, verifica che appartengono alla lista di directory da monitorare e in caso affermativo procede all&#8217;indicizzazione selettiva di tali documenti.</p>
<p>2) Recoll fornisce una <strong>comoda interfaccia a caratteri</strong> per effettuare le stesse operazioni eseguite tramite interfaccia GUI. Invocato in questo modo infatti:</p>
<pre class="brush: plain;">
bash#roberto@ken 00:29 ~ &gt;recoll -t -a &quot;Linux Appunti blog&quot;
Recoll query: ((linux:(wqf=11) AND appunti:(wqf=11) AND (blog:(wqf=11) OR blogs OR blogging)))
10 results
text/html       [file:///home/roberto/Documenti/Firefox/FEBE 2010 03-24 22.55.45/bookmarks{default}.html]       [Bookmarks]     275349  bytes
text/html       [file:///home/roberto/Documenti/Firefox/FEBE 2010 09-17 12.58.21/bookmarks{default}.html]       [Bookmarks]     296552  bytes
text/html       [file:///home/roberto/Documenti/matrimonio/link/bookmarks.html] [Bookmarks]     148148  bytes
text/html       [file:///home/roberto/Documenti/Firefox/FEBE 2011 03-23 22.19.56/bookmarks{default}.html]       [Bookmarks]     312681  bytes
text/plain      [file:///home/roberto/Documenti/Firefox/FEBE 2010 03-24 22.55.45/bookmarks{default}.json]       [bookmarks{default}.json]       137659  bytes
text/plain      [file:///home/roberto/Documenti/Firefox/FEBE 2010 09-17 12.58.21/bookmarks{default}.json]       [bookmarks{default}.json]       140021  bytes
text/plain      [file:///home/roberto/Documenti/Firefox/FEBE 2011 03-23 22.19.56/bookmarks{default}.json]       [bookmarks{default}.json]       146995  bytes
application/pdf [file:///home/roberto/Desktop/download/pilibri/238.pdf] [238.pdf]       7361925 bytes

application/pdf [file:///home/roberto/Documenti/Manuali/Libri Punto Informatico/238.pdf]        [238.pdf]       7361925 bytes
</pre>
<p>permette di eseguire query al volo nella nostra base di dati.</p>
<p>Spero che abbia stuzzicato il vostro appetito. Io ancora lo sto mettendo alla prova.<br />
Per chi fosse interessato posso fornire alcuni alias che ho creato per interagire con Recoll in modo veloce.</p>
<p>Ecco la <a href="http://www.recoll.org/" target="_blank">pagina ufficiale del progetto</a>.</p>
<p>Buona notte!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bits4beats.it/linux/total-recoll-come-indicizzare-il-file-system-linux/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Ciao Grande SIC!</title>
		<link>http://www.bits4beats.it/varie/ciao-grande-sic/</link>
		<comments>http://www.bits4beats.it/varie/ciao-grande-sic/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 07:34:32 +0000</pubDate>
		<dc:creator>ROb</dc:creator>
				<category><![CDATA[Varie]]></category>
		<category><![CDATA[MotoGP]]></category>

		<guid isPermaLink="false">http://www.bits4beats.it/?p=1118</guid>
		<description><![CDATA[
Con te se ne va un pezzo di MotoGP&#8230; proteggi gli altri piloti da lassù.
http://www.marcosimoncelli.it/
]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-medium wp-image-1119" title="Marco Simoncelli" src="http://www.bits4beats.it/wp-content/uploads/2011/10/58marcosimoncelli_slideshow_169-600x337.jpg" alt="Marco Simoncelli" width="600" height="337" /></p>
<p style="text-align: left;">Con te se ne va un pezzo di MotoGP&#8230; proteggi gli altri piloti da lassù.</p>
<p style="text-align: left;"><a href="http://www.marcosimoncelli.it/" target="_blank">http://www.marcosimoncelli.it/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bits4beats.it/varie/ciao-grande-sic/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>DBeaver il database manager universale!</title>
		<link>http://www.bits4beats.it/java/dbeaver-il-database-manager-universale/</link>
		<comments>http://www.bits4beats.it/java/dbeaver-il-database-manager-universale/#comments</comments>
		<pubDate>Wed, 28 Sep 2011 13:45:20 +0000</pubDate>
		<dc:creator>ROb</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Utilità]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[db]]></category>
		<category><![CDATA[dbeaver]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://www.bits4beats.it/?p=1110</guid>
		<description><![CDATA[Ogni sviluppatore sa quanto è importante avere nella propria cassetta degli attrezzi un valido software di interrogazione e gestione delle base di dati.
Generalmente ogni db vendor propone la sua soluzione specifica, console e grafica, per accedere ai propri db e tabelle. Sono poche le soluzioni open in grado di connettersi e lavorare con successo su [...]]]></description>
			<content:encoded><![CDATA[<p>Ogni sviluppatore sa quanto è importante avere nella propria cassetta degli attrezzi un valido software di <strong>interrogazione e gestione delle base di dati</strong>.</p>
<p>Generalmente ogni db vendor propone la sua soluzione specifica, console e grafica, per accedere ai propri db e tabelle. Sono poche le <strong>soluzioni open</strong> in grado di connettersi e lavorare con successo su diverse piattaforme e che nello stesso tempo siano facilmente utilizzabili.</p>
<p>Dopo anni e anni di ricerca quasi per caso ho trovato <strong>DBeaver</strong>, il castoro dei database (dal suo nome curioso).<br />
DBeaver è un software sviluppato in <strong>Java</strong> tramite il framework di sviluppo di Eclipse: RCP.<br />
E&#8217; disponibile per moltissime piattaforme (cosa comune a quasi tutti i software scritti in Java) e segue dei cicli di sviluppo molto regolari tanto che in poco più di un anno dalla sua pubblicazione ha raggiunto una maturità e una lista di funzioni veramente invidiabili.</p>
<p><a href="http://www.bits4beats.it/wp-content/uploads/2011/09/splashscreen-circle.png"><img class="aligncenter size-full wp-image-1111" title="DBeaver logo" src="http://www.bits4beats.it/wp-content/uploads/2011/09/splashscreen-circle.png" alt="" width="450" height="450" /></a></p>
<p>Attualmente è alla versione <strong>1.4.0</strong>, rilasciata pochi giorni fa.</p>
<p>I db vendor attualmente supportati sono molti (tutti? <img src='http://www.bits4beats.it/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> ):</p>
<ul>
<li>MySQL</li>
<li>Oracle</li>
<li>PostgreSQL</li>
<li>IBM DB2</li>
<li>Microsoft SQL Server</li>
<li>Sybase</li>
<li>ODBC</li>
<li>Java DB (Derby)</li>
<li>Firebird (Interbase)</li>
<li>HSQLDB</li>
<li>SQLite</li>
<li>Mimer</li>
<li>H2</li>
<li>IBM Informix</li>
<li>SAP MAX DB</li>
<li>Cache</li>
<li>Ingres</li>
<li>Linter</li>
<li>Any JDBC compliant data source</li>
</ul>
<p>Nelle sue ultime versioni permette anche di modificare lo schema dei dati (tabelle e altro) e di visualizzare/salvare degli schemi ER delle tabelle selezionate.</p>
<p>Per me è diventato un indispensabile compagno di viaggio e quando posso cerco anche di segnalare eventuali malfunzionamenti o problemi.</p>
<p>Ecco alcuni screenshot presi direttamente dal sito ufficiale.</p>
<p><a href="http://www.bits4beats.it/wp-content/uploads/2011/09/Screenshot_Main.png" target="_blank"><img class="aligncenter size-medium wp-image-1112" title="Screenshot_Main" src="http://www.bits4beats.it/wp-content/uploads/2011/09/Screenshot_Main-500x400.png" alt="" width="500" height="400" /></a></p>
<p><a href="http://www.bits4beats.it/wp-content/uploads/2011/09/Screenshot_ERD.png" target="_blank"><img class="aligncenter size-medium wp-image-1113" title="Screenshot_ERD" src="http://www.bits4beats.it/wp-content/uploads/2011/09/Screenshot_ERD-531x400.png" alt="" width="531" height="400" /></a></p>
<p><a href="http://dbeaver.jkiss.org/" target="_blank"><strong>Provatelo</strong></a> e datemi il nostro parere!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bits4beats.it/java/dbeaver-il-database-manager-universale/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Autenticazione nativa Windows Active Directory in Tomcat</title>
		<link>http://www.bits4beats.it/java/autenticazione-nativa-windows-active-directory-in-tomcat/</link>
		<comments>http://www.bits4beats.it/java/autenticazione-nativa-windows-active-directory-in-tomcat/#comments</comments>
		<pubDate>Fri, 22 Jul 2011 07:47:03 +0000</pubDate>
		<dc:creator>ROb</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Sviluppo web]]></category>
		<category><![CDATA[active directory]]></category>
		<category><![CDATA[spnego]]></category>
		<category><![CDATA[tomcat]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.bits4beats.it/?p=1101</guid>
		<description><![CDATA[Per un interessante progetto a cui sto lavorando, ho avuto la necessità di configurare Tomcat per poter autenticare nativamente i client (con browser IE7 e IE8 e Firefox) attraverso il repository Active Directory di Windows 2003 Server.
Per farlo ci sono a disposizione, come spesso avviene, numerose possibilità.
Dopo averne provate un paio alla fine ho scelto [...]]]></description>
			<content:encoded><![CDATA[<p>Per un interessante progetto a cui sto lavorando, ho avuto la necessità di configurare Tomcat per poter <strong>autenticare nativamente i client</strong> (con browser IE7 e IE8 e Firefox) attraverso il repository<strong> Active Directory di Windows 2003 Server</strong>.</p>
<p>Per farlo ci sono a disposizione, come spesso avviene, numerose possibilità.<br />
Dopo averne provate un paio alla fine ho scelto la soluzione proposta dalla libreria <a title="spnego" href="http://spnego.sourceforge.net/" target="_blank"><strong>spnego</strong></a>.</p>
<p>spnego implementa il protocollo <strong>Kerberos/SPNEGO</strong> invece del classico NTLM per dialogare con i domain controller e, attraverso un filtro inserito nella nostra web application, ci offre la possibilità di verificare l&#8217;identità degli utenti (attraverso la chiamata java <em>request.getRemoteUser()</em> ) già autenticati in Windows dopo un logon positivo nel dominio di Active Directory.</p>
<p>La guida offerta dal sito della libreria per il raggiungimento di tale integrazione è molto ben fatta. Qui sotto in breve voglio riassumere i miei passi, che in larga parte seguono appunto tale guida.</p>
<ul>
<li><strong>creazione di un utente in Active Directory</strong>, che sarà utilizzato dal filtro per loggarsi al dominio e verificare le credenziali degli utenti.</li>
<li>creazione del <strong>file krb5.conf</strong> (all&#8217;interno della directory di esecuzione di Tomcat, nel mio caso la <em>bin</em>) con tale contenuto:
<pre class="brush: plain;">
[libdefaults]
	default_realm = &lt;NOME_DOMINIO&gt;
	default_tkt_enctypes = aes128-cts rc4-hmac des3-cbc-sha1 des-cbc-md5 des-cbc-crc
	default_tgs_enctypes = aes128-cts rc4-hmac des3-cbc-sha1 des-cbc-md5 des-cbc-crc
	permitted_enctypes   = aes128-cts rc4-hmac des3-cbc-sha1 des-cbc-md5 des-cbc-crc

[realms]
	&lt;NOME_DOMINIO&gt;  = {
		kdc = &lt;DOMAIN_CONTROLLER&gt;
		default_domain =  &lt;NOME_DOMINIO&gt;
}

[domain_realm]
	. &lt;NOME_DOMINIO&gt; =  &lt;NOME_DOMINIO&gt;
</pre>
</li>
<li>creazione del file login.conf (nella stessa posizione del file krb5.conf) con il seguente contenuto
<pre class="brush: plain;">
spnego-client {
	com.sun.security.auth.module.Krb5LoginModule required;
};

spnego-server {
	com.sun.security.auth.module.Krb5LoginModule required
	storeKey=true
	isInitiator=false;
};
</pre>
</li>
<li>creazione di una web application (nel mio caso il suo nome è testad) con dentro solamente la directory WEB-INF con dentro una cartella lib con la libreria jar di spnego (nel mio caso l&#8217;ultima versione disponibile era la 7, spnego-r7.jar) e il file web.xml con il seguente contenuto (rimpiazzate opportunamente l&#8217;utente e la password dell&#8217;utente di Active Directory):
<pre class="brush: plain;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;

&lt;web-app xmlns=&quot;http://java.sun.com/xml/ns/javaee&quot;
   xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
   xsi:schemaLocation=&quot;http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd&quot;
   version=&quot;2.5&quot;&gt;

  &lt;filter&gt;
    &lt;filter-name&gt;SpnegoHttpFilter&lt;/filter-name&gt;
    &lt;filter-class&gt;net.sourceforge.spnego.SpnegoHttpFilter&lt;/filter-class&gt;

    &lt;init-param&gt;
        &lt;param-name&gt;spnego.allow.basic&lt;/param-name&gt;
        &lt;param-value&gt;true&lt;/param-value&gt;
    &lt;/init-param&gt;

    &lt;init-param&gt;
        &lt;param-name&gt;spnego.allow.localhost&lt;/param-name&gt;
        &lt;param-value&gt;false&lt;/param-value&gt;
    &lt;/init-param&gt;

    &lt;init-param&gt;
        &lt;param-name&gt;spnego.allow.unsecure.basic&lt;/param-name&gt;
        &lt;param-value&gt;true&lt;/param-value&gt;
    &lt;/init-param&gt;

    &lt;init-param&gt;
        &lt;param-name&gt;spnego.login.client.module&lt;/param-name&gt;
        &lt;param-value&gt;spnego-client&lt;/param-value&gt;
    &lt;/init-param&gt;

    &lt;init-param&gt;
        &lt;param-name&gt;spnego.krb5.conf&lt;/param-name&gt;
        &lt;param-value&gt;krb5.conf&lt;/param-value&gt;
    &lt;/init-param&gt;

    &lt;init-param&gt;
        &lt;param-name&gt;spnego.login.conf&lt;/param-name&gt;
        &lt;param-value&gt;login.conf&lt;/param-value&gt;
    &lt;/init-param&gt;

    &lt;init-param&gt;
        &lt;param-name&gt;spnego.preauth.username&lt;/param-name&gt;
        &lt;param-value&gt;utentead&lt;/param-value&gt;
    &lt;/init-param&gt;

    &lt;init-param&gt;
        &lt;param-name&gt;spnego.preauth.password&lt;/param-name&gt;
        &lt;param-value&gt;password_utentead&lt;/param-value&gt;
    &lt;/init-param&gt;

    &lt;init-param&gt;
        &lt;param-name&gt;spnego.login.server.module&lt;/param-name&gt;
        &lt;param-value&gt;spnego-server&lt;/param-value&gt;
    &lt;/init-param&gt;

    &lt;init-param&gt;
        &lt;param-name&gt;spnego.prompt.ntlm&lt;/param-name&gt;
        &lt;param-value&gt;true&lt;/param-value&gt;
    &lt;/init-param&gt;

    &lt;init-param&gt;
        &lt;param-name&gt;spnego.logger.level&lt;/param-name&gt;
        &lt;param-value&gt;1&lt;/param-value&gt;
    &lt;/init-param&gt;
&lt;/filter&gt;

&lt;filter-mapping&gt;
    &lt;filter-name&gt;SpnegoHttpFilter&lt;/filter-name&gt;
    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
&lt;/filter-mapping&gt;

&lt;/web-app&gt;
</pre>
<p>aggiungete anche il file index.jsp nella root della web application con il seguente contenuto:</p>
<pre class="brush: plain;">
&lt;%@page import=&quot;java.security.Principal&quot; %&gt;
&lt;html&gt;
 &lt;head&gt;
  &lt;title&gt;Protected Page for Examples&lt;/title&gt;
 &lt;/head&gt;
 &lt;body bgcolor=&quot;white&quot;&gt;
  You are logged in as remote user &lt;b&gt;&lt;%= request.getRemoteUser() %&gt;&lt;/b&gt; in session &lt;b&gt;&lt;%= session.getId() %&gt;&lt;/b&gt;
  &lt;br&gt;&lt;br&gt;
  &lt;%
	if (request.getUserPrincipal() != null) {
  %&gt;
  Your user principal name is &lt;b&gt;&lt;%= request.getUserPrincipal().getName() %&gt;&lt;/b&gt;.
  &lt;br&gt;&lt;br&gt;
  &lt;%
   } else {
  %&gt;
   No user principal could be identified.
   &lt;br&gt;&lt;br&gt;
  &lt;%
  }
  %&gt;
  &lt;%
  String role = request.getParameter(&quot;role&quot;);
  if (role == null)
    role = &quot;&quot;;
  if (role.length() &gt; 0) {
    if (request.isUserInRole(role)) {
  %&gt;
  You have been granted role &lt;b&gt;&lt;%= role %&gt;&lt;/b&gt;.
  &lt;br&gt;&lt;br&gt;
  &lt;%
   } else {
  %&gt;
  You have &lt;i&gt;not&lt;/i&gt; been granted role &lt;b&gt;&lt;%= role %&gt;&lt;/b&gt;.
  &lt;br&gt;&lt;br&gt;
  &lt;%
   }
  }
  %&gt;
  To check whether your username has been granted a particular role, enter it here:
  &lt;form method=&quot;GET&quot; action='&lt;%= response.encodeURL(&quot;index.jsp&quot;) %&gt;'&gt;
   &lt;input type=&quot;text&quot; name=&quot;role&quot; value=&quot;&lt;%= role %&gt;&quot;&gt;
  &lt;/form&gt;
  &lt;br&gt;&lt;br&gt;
  You can logoff by clicking
  &lt;a href='&lt;%= response.encodeURL(&quot;index.jsp?logoff=true&quot;) %&gt;'&gt;here&lt;/a&gt;.
  This should cause automatic re-logon with Waffle and a new session ID.
  &lt;br&gt;
 &lt;/body&gt;
&lt;/html&gt;
</pre>
</li>
<li>a questo punto inserite questa web application nelle applicazioni del vostro Tomcat</li>
<li>per completare il processo bisogna lanciare nel domain controller un paio di istruzioni per abilitare il tab delegation all&#8217;utente Active Directory che effettuerà la verifica dei token del Kerberos.
<pre class="brush: plain;">
setspn.exe -A HTTP/&lt;sito&gt; utentead
setspn.exe -A HTTP/&lt;sito_con_dominio&gt; utentead
</pre>
<p>poi aprendo le proprietà dell&#8217;utente, nel tab &#8220;Delegation&#8221;, abilitare la funzione &#8220;Trust this user for delegation to any service (Kerberos only)&#8221;.</p>
</li>
<li>per permettere al browser di passare le credenziali al server bisognerà, nel caso di IE, inserire il sito all&#8217;interno dell&#8217;Area Intranet e verificare che sotto la voce Autenticazione Utente (dentro livello personalizzato) sia impostato come &#8220;Accesso automatico solo nell&#8217;area Internet&#8221;, mentre per Firefox (testato con il 3.x) bisogna impostare le seguenti chiavi con il valore del vostro sito web
<pre class="brush: plain;">
network.negotiate-auth.delegation-uris = http://&lt;sito&gt;
network.negotiate-auth.trusted-uris = http://&lt;sito&gt;
</pre>
</li>
<li>riavviate ora Tomcat e accedete alla root della vostra nuova web application</li>
<li>il filtro di spnego proteggerà tutti i file della web application e chiederà l&#8217;autenticazione nativa (o eventualmente l&#8217;autenticazione basic tramite prompt). Se l&#8217;autenticazione avverrà correttamente accederete al file index.jsp e leggerete il vostro nome utente nella pagina.</li>
</ul>
<p>Grazie per l&#8217;attenzione e buon lavoro!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bits4beats.it/java/autenticazione-nativa-windows-active-directory-in-tomcat/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Fiddler &#8211; super web debugging proxy</title>
		<link>http://www.bits4beats.it/sviluppo-web/fiddler-super-web-debugging-proxy/</link>
		<comments>http://www.bits4beats.it/sviluppo-web/fiddler-super-web-debugging-proxy/#comments</comments>
		<pubDate>Thu, 05 May 2011 08:15:31 +0000</pubDate>
		<dc:creator>ROb</dc:creator>
				<category><![CDATA[Sviluppo web]]></category>
		<category><![CDATA[Utilità]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[fiddler]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[proxy]]></category>

		<guid isPermaLink="false">http://www.bits4beats.it/?p=1094</guid>
		<description><![CDATA[Ieri, cercando di risolvere un problema di un sito che si verificava con il browser Safari su Windows, navigando qua e là in cerca di risposte, ho trovato qualcuno che consigliava di installare Fiddler, un web debugging proxy freeware per Windows.

Chi già utilizza l&#8217;estensione LiveHttpHeaders per Firefox o Firebug sa già quanto siano importanti tali [...]]]></description>
			<content:encoded><![CDATA[<p>Ieri, cercando di risolvere un problema di un sito che si verificava con il browser Safari su Windows, navigando qua e là in cerca di risposte, ho trovato qualcuno che consigliava di installare <strong>Fiddler</strong>, un <strong>web debugging proxy freeware per Windows</strong>.</p>
<p><a href="http://www.bits4beats.it/wp-content/uploads/2011/05/FiddlerLogo.png"><img class="alignleft size-full wp-image-1097" title="Fiddler Logo" src="http://www.bits4beats.it/wp-content/uploads/2011/05/FiddlerLogo.png" alt="" width="277" height="84" /></a></p>
<p>Chi già utilizza l&#8217;estensione <strong>LiveHttpHeaders</strong> per Firefox o <strong>Firebug</strong> sa già quanto siano importanti tali strumenti per lo sviluppatore web. Essi infatti permettono non solamente di analizzare il codice di una pagina web (html, css, javascript) ma anche di visualizzare tutte le chiamate http effettuate dal browser, con le relative risposte, e di fare debugging del codice Javascript presente nella pagina stessa.</p>
<p>Alcuni browser come Safari, Chrome e altri, pur avendo i propri strumenti di sviluppo, non permettono di scendere  anche nel dettaglio delle singole chiamate http, inoltre non sempre il client delle chiamate web è un browser, in alcuni casi potrebbero essere un software stesso che prova a connettersi a un servizio web per scaricare, ad esempio, gli aggiornamenti.</p>
<p>Per tutti questi casi, ma sicuramente anche per molti altri, Fiddler si offre come valido strumento di analisi, frapponendosi in modo trasparente tra client e server e intercettando tutte le richieste e le risposte http del nostro PC.</p>
<p><img class="aligncenter size-full wp-image-1096" title="Fiddler" src="http://www.bits4beats.it/wp-content/uploads/2011/05/tamper1.png" alt="" width="600" height="341" /></p>
<p>Per funzionare ha bisogno del <em>framework .NET</em> che installa autonomamente nel caso non sia già presente. Una volta installato è sufficiente avviarlo e iniziare a navigare con un browser per vedere tutte le nostre chiamate (e anche i nostri dati <img src='http://www.bits4beats.it/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' />  ) apparire nelle schermate del programma.</p>
<p>Il sito del software è il seguente: <a title="Fiddler" href="http://www.fiddler2.com/ " target="_self">http://www.fiddler2.com/</a></p>
<p>Per il download fate riferimento a quest&#8217;altro indirizzo: <a title="Fiddler - pagina download" href="http://www.fiddler2.com/fiddler2/version.asp" target="_self">http://www.fiddler2.com/fiddler2/version.asp</a></p>
<p>Happy debugging!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bits4beats.it/sviluppo-web/fiddler-super-web-debugging-proxy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Screenshot di sistemi Unix e GNU/Linux via command line</title>
		<link>http://www.bits4beats.it/linux/screenshot-di-sistemi-unix-e-gnulinux-via-command-line/</link>
		<comments>http://www.bits4beats.it/linux/screenshot-di-sistemi-unix-e-gnulinux-via-command-line/#comments</comments>
		<pubDate>Fri, 22 Apr 2011 09:29:51 +0000</pubDate>
		<dc:creator>ROb</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Utilità]]></category>
		<category><![CDATA[convert]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[imagemagick]]></category>
		<category><![CDATA[screen]]></category>
		<category><![CDATA[screenshot]]></category>
		<category><![CDATA[x11]]></category>

		<guid isPermaLink="false">http://www.bits4beats.it/?p=1086</guid>
		<description><![CDATA[Tutti noi conoscono almeno 3 o 4 modi differenti per catturare screenshot di finestre o schermo intero sia su sistemi Windows che in sistemi Linux o Unix.
Oggi voglio proporvi due piccoli script che ho scritto ispirandomi a un interessante articolo su IBM Developer Works.
Entrambi gli script sfruttano i comandi messi a disposizione dai sistemi X11 [...]]]></description>
			<content:encoded><![CDATA[<p>Tutti noi conoscono almeno 3 o 4 modi differenti per<strong> catturare screenshot</strong> di finestre o schermo intero sia su sistemi Windows che in sistemi Linux o Unix.</p>
<p>Oggi voglio proporvi due piccoli script che ho scritto ispirandomi a un interessante articolo su <strong>IBM Developer Works</strong>.</p>
<p>Entrambi gli script sfruttano i comandi messi a disposizione dai sistemi <strong>X11</strong> e tipicamente già installati nelle nostre distribuzioni. Tali comandi sono: <em>xwd</em> e <em>xwininfo</em> .</p>
<p>Per renderli un pò più comodi ho utilizzato anche il comando <em>convert</em>, della suite di <strong>ImageMagick</strong>, e <em>notify-send</em> per inviare delle notifiche all&#8217;utente al termine delle operazioni di salvataggio.</p>
<p>Il primo script, di nome<em> capture_full.sh</em>, può ricevere in ingresso 1 parametro che determina il numero di secondi di attesa prima di catturare il nostro desktop in un file nel nostro Desktop. Se tale parametro non viene passato il valore di attesa di default è 3 secondi.</p>
<pre class="brush: bash;">
#!/bin/bash

if [ &quot;$1&quot; != &quot;&quot; ]
   then
     seconds=$1;
   else
     seconds=3;
fi

now=`date &quot;+%Y_%m_%d-%H_%M_%S&quot;`
filepath=&quot;${HOME}/screen_full_${now}.png&quot;

sleep ${seconds} ; xwd -root | convert - ${filepath}

notify-send -t 3000 -u low -i gtk-dialog-info &quot;Screenshot&quot; &quot;file saved in ${filepath}&quot;;
</pre>
<p>Il secondo script, di nome <em>capture_window.sh</em>, ci permette invece di catturare una singola finestra (anche se non ci permette di interagire con il mouse nella finestra, per far apparire ad esempio un menu contestuale). Il funzionamento di questo script è il seguente: dopo che viene lanciato attende alcuni secondi (modificabili con il primo parametro opzionale) per permetterci di scegliere una finestra del desktop, quindi salva l&#8217;id della finestra e lo usa per memorizzare l&#8217;immagine della finestra nel desktop.</p>
<pre class="brush: bash;">
#!/bin/bash

if [ &quot;$1&quot; != &quot;&quot; ]
 then
 seconds=$1;
 else
 seconds=3;
fi

sleep ${seconds};
wid=`xwininfo | grep &quot;Window id&quot; | awk '{print $4}'`;

now=`date &quot;+%Y_%m_%d-%H_%M_%S&quot;`
filepath=&quot;${HOME}/Desktop/screen_window_${now}.png&quot;;

xwd -id ${wid} | convert - ${filepath}

notify-send -t 3000 -u low -i gtk-dialog-info &quot;Screenshot&quot; &quot;file saved in ${filepath}&quot;;
</pre>
<p>Provateli, modificando anche la variabile <em>$filepath</em> se lo ritenete opportuno, e fatemi sapere.</p>
<p><a title="Capturing screen shots and program interaction on UNIX and Linux systems: Part 2, Simple graphical screen and window capture" href="http://www.ibm.com/developerworks/aix/library/au-screenshots2/index.html?ca=drs-" target="_blank">Ecco L&#8217;articolo originale di <strong>William von Hagen</strong> in <strong>IBM</strong>.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bits4beats.it/linux/screenshot-di-sistemi-unix-e-gnulinux-via-command-line/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Un semplice script per scaricare in mp3 la traccia di un video su YouTube</title>
		<link>http://www.bits4beats.it/linux/un-semplice-script-per-scaricare-in-mp3-la-traccia-di-un-video-su-youtube/</link>
		<comments>http://www.bits4beats.it/linux/un-semplice-script-per-scaricare-in-mp3-la-traccia-di-un-video-su-youtube/#comments</comments>
		<pubDate>Sun, 20 Mar 2011 21:58:54 +0000</pubDate>
		<dc:creator>ROb</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Utilità]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[ffmpeg]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[youtube]]></category>
		<category><![CDATA[youtube-dl]]></category>

		<guid isPermaLink="false">http://www.bits4beats.it/?p=1074</guid>
		<description><![CDATA[In questi giorni ho avuto la necessità di scaricare la traccia audio di un video caricato su YouTube.
Per farlo conoscevo già diversi servizi online ma, visto la potenza della shell Linux, ho pensato di scrivere un piccolo script che assolvesse al compito e che potesse sfruttare alcune utility scritte proprio per questi scopi.
La mia intenzione [...]]]></description>
			<content:encoded><![CDATA[<p>In questi giorni ho avuto la necessità di <strong>scaricare la traccia audio di un video caricato su YouTube</strong>.</p>
<p>Per farlo conoscevo già diversi servizi online ma, visto la potenza della shell Linux, ho pensato di scrivere un piccolo script che assolvesse al compito e che potesse sfruttare alcune utility scritte proprio per questi scopi.</p>
<p>La mia intenzione era quella di avere a disposizione uno script a cui potessi passare un solo parametro, l&#8217;url della pagina, e che mi salvasse il file in formato mp3 possibilmente con un nome abbastanza esplicativo. Per riuscire a tale scopo mi sono avvalso di due soli comandi: <strong>youtube-dl</strong> e <strong>ffmpeg</strong>.</p>
<p><a href="http://rg3.github.com/youtube-dl/" target="_blank"><strong>youtube-d</strong></a>l è uno script python in grado di estrarre un file in formato <em>.flv</em> semplicemente passando il path HTTP alla pagina del video. Questa utility compie tutto il lavoro &#8220;duro&#8221; del mio semplice script ed è anche in grado di scaricare il nome del video legato all&#8217;url. Nel mio caso youtube-dl è servito a salvare il titolo del video, per rinominare correttamente il file <em>mp3</em> e successivamente è servito per fare il download del file video in formato <em>.flv</em>.</p>
<p>La separazione della traccia audio da quella video e la successiva codifica nel formato <em>mp3</em> è stata invece assegnata a <a href="http://www.ffmpeg.org/" target="_blank"><strong>ffmpeg</strong></a>, uno dei più apprezzati comandi per la gestione e fruizione dei video in Linux (e non solo).</p>
<p>Per entrambi i software mi sono però avvalso di versioni più aggiornate di quelle presenti nella mia distribuzione Ubuntu 8.04. Nelle versioni disponibili nei miei repository infatti youtube-dl non era in grado di effettuare il download del video mentre ffmpeg non riusciva a gestire i video nel formato <em>.flv</em> . Per aggiornare lo script python è stato sufficiente effettuare il download del nuovo script e metterlo nella mia cartella di binari dentro <em>~/bin/</em> . Per quanto riguarda ffmpeg invece ho prima provato a effettuare una compilazione della distribuzione per rigenerare la nuova versione. Dopo alcuni tentativi falliti, ho deciso di optare per un binario precompilato linkato staticamente per Linux 32bit. Una valida compilazione l&#8217;ho trovata al seguente indirizzo: <a href="http://horsfall.eu/2010/11/27/ffmpeg-full/" target="_blank">http://horsfall.eu/2010/11/27/ffmpeg-full/</a> . Il file binario contenente ffmpeg è stato quindi salvato, con i corretti permessi di esecuzione, nella cartella <em>~/bin</em>.Tale cartella è nella prima posizione della variabile <em>$PATH</em>. In questo modo i binari che si trovano in tale cartella hanno la precedenza su quelli presenti nelle altre cartelle di binari del sistema.</p>
<p>Veniamo ora al mio script, salvato con il nome: <em>youtube2mp3.sh</em> :</p>
<pre class="brush: bash;">
#!/bin/bash

url=$1
flvfile=/var/tmp/$$.flv

title=`youtube-dl -e ${url}`
mp3file=~/Desktop/${title}.mp3

youtube-dl ${url} -o ${flvfile}

ffmpeg -i ${flvfile} &quot;${mp3file}&quot;

rm ${flvfile}
</pre>
<p>L&#8217;unico parametro gestito dalla script, il primo, è l&#8217;url della pagina in cui si trova il video in YouTube. Lo script estra prima l&#8217;informazione del titolo del filmato e la memorizza nella variabile &#8220;title&#8221;.<br />
Quindi effettua il download del video salvandolo in un file temporaneo che ha come nome il <em>pid</em> del processo bash invocato.<br />
Successivamente converte il video nella traccia audio <em>mp3</em> che viene salvata nel Desktop con il nome del titolo e suffisso <em>.mp3</em>.<br />
Infine il file temporaneo <em>.flv</em> viene cancellato dalla directory temporanea.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bits4beats.it/linux/un-semplice-script-per-scaricare-in-mp3-la-traccia-di-un-video-su-youtube/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Google Apps for free: come utilizzare le Google Web App per il nostro dominio</title>
		<link>http://www.bits4beats.it/varie/google-apps-for-free-come-utilizzare-le-google-web-app-per-il-nostro-dominio/</link>
		<comments>http://www.bits4beats.it/varie/google-apps-for-free-come-utilizzare-le-google-web-app-per-il-nostro-dominio/#comments</comments>
		<pubDate>Mon, 07 Mar 2011 09:52:11 +0000</pubDate>
		<dc:creator>ROb</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Informatica in generale]]></category>
		<category><![CDATA[Utilità]]></category>
		<category><![CDATA[Varie]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[apps]]></category>
		<category><![CDATA[dominio]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://www.bits4beats.it/?p=1033</guid>
		<description><![CDATA[Dopo un periodo di silenzio durato più di un mese, torno a farmi sentire per segnalare un&#8217;importante opportunità per tutti coloro che vogliono configurare e utilizzare le applicazioni web di Google per il proprio dominio.
Non tutti sanno infatti che Google fornisce tale possibilità, pur con delle limitazioni, a tutti i possessori di un dominio, sia [...]]]></description>
			<content:encoded><![CDATA[<p>Dopo un periodo di silenzio durato più di un mese, torno a farmi sentire per segnalare un&#8217;importante opportunità per tutti coloro che vogliono configurare e utilizzare le applicazioni web di Google per il proprio dominio.</p>
<p>Non tutti sanno infatti che Google fornisce tale possibilità, pur con delle limitazioni, a tutti i possessori di un dominio, sia per scopi personali che aziendali.<br />
La differenza con la <strong>versione enterprise</strong> (a pagamento) consiste principalmente nel numero massimo di utenze attivabili, nella mancanza di alcune specifiche applicazioni (Google Video for Business e Google Groups for Business), nella capacità di storage complessiva offerta, nello SLA fornito e in alcune piccole altre customizzazioni e protezioni.</p>
<p>Dopo aver letto la pagina introduttiva ed esservi fatti un&#8217;idea di cosa sia il servizio <a href="http://www.google.com/apps/intl/en/group/index.html"><strong>Google Apps for free</strong></a>, leggete i prossimi paragrafi per capire come impostare la configurazione per essere subito operativi con il vostro dominio &#8220;Google managed&#8221;.</p>
<h2>Passo numero 1: specificare il dominio</h2>
<p>Da <a href="https://www.google.com/a/cpanel/domain/new">questa pagina</a> è possibile iniziare la sequenza degli step per la gestione del dominio by Google. Il primo passo consiste nello specificare un dominio esistente sul quale abbiamo la possibilità di effettuare le modifiche alle entry del DNS. Come esempio per questo mini-tutorial userò il <strong>dominio di test</strong> giuliarossi.com .</p>
<p><a href="http://www.bits4beats.it/wp-content/uploads/2011/03/google_apps_passo_1.png" target="_blank"><img class="aligncenter size-full wp-image-1042" title="google_apps_passo_1_thumb" src="http://www.bits4beats.it/wp-content/uploads/2011/03/google_apps_passo_1_thumb.png" alt="" width="600" height="273" /></a></p>
<h2>Passo numero 2: registrazione al servizio Google Apps</h2>
<p>In questo passaggio bisogna specificare i propri dati e quelli della propria organizzazione.</p>
<p><a href="http://www.bits4beats.it/wp-content/uploads/2011/03/google_apps_passo_2.png" target="_blank"></a><a href="http://www.bits4beats.it/wp-content/uploads/2011/03/google_apps_passo_2.png" target="_blank"><img class="aligncenter size-full wp-image-1070" title="google_apps_passo_2_thumb" src="http://www.bits4beats.it/wp-content/uploads/2011/03/google_apps_passo_2_thumb1.png" alt="" width="600" height="496" /></a></p>
<h2>Passo numero 3: creazione dell&#8217;account di amministratore</h2>
<p>In questo passaggio dobbiamo creare l&#8217;account di amministrazione del dominio nonché accettare le condizioni contrattuali del servizio.</p>
<p><a href="http://www.bits4beats.it/wp-content/uploads/2011/03/google_apps_passo_3.png" target="_blank"><img class="aligncenter size-full wp-image-1049" title="google_apps_passo_3_thumb" src="http://www.bits4beats.it/wp-content/uploads/2011/03/google_apps_passo_3_thumb.png" alt="" width="600" height="625" /></a></p>
<h2>Passo numero 4: creazione del record CNAME per verificare la proprietà del dominio</h2>
<p>A questo punto Google ci chiede di verificare che siamo veramente nelle condizioni per poter &#8220;gestire&#8221; il dominio che diciamo di possedere. Per farlo ci suggerisce di creare un record CNAME con un nome particolare che successivamente proverà a risolvere per capire se abbiamo risposto positivamente alla sua richiesta.</p>
<p><a href="http://www.bits4beats.it/wp-content/uploads/2011/03/google_apps_passo_4.png" target="_blank"><img class="aligncenter size-full wp-image-1051" title="google_apps_passo_4_thumb" src="http://www.bits4beats.it/wp-content/uploads/2011/03/google_apps_passo_4_thumb.png" alt="" width="600" height="273" /></a></p>
<h2>Passo numero 5: login nel pannello di configurazione del nostro dominio</h2>
<p>Se anche il precedente passaggio è andato a buon fine possiamo entrare nel pannello di configurazione e vedere lo stato di attivazione dei nostri servizi. L&#8217;attivazione del servizio di posta elettronica richiede qualche passaggio in più. Per gli altri servizi è invece sufficiente attendere qualche minuto.</p>
<p><a href="http://www.bits4beats.it/wp-content/uploads/2011/03/google_apps_passo_6.png" target="_blank"><img class="aligncenter size-full wp-image-1055" title="google_apps_passo_6_thumb" src="http://www.bits4beats.it/wp-content/uploads/2011/03/google_apps_passo_6_thumb.png" alt="" width="600" height="449" /></a></p>
<h2>Passo numero 6: modifica dei record MX per far gestire la posta entrante per il nostro dominio</h2>
<p>Nella successiva schermata, al passo 4, Google ci chiede di creare 7 record MX per il nostro dominio che puntano ai server di Google. In questo modo istruiamo i sistemi di posta worldwide che per lasciare un messaggio nella nostra casella devono contattare direttamente i server di Google.</p>
<p><a href="http://www.bits4beats.it/wp-content/uploads/2011/03/google_apps_passo_7.png" target="_blank"><img class="aligncenter size-full wp-image-1056" title="google_apps_passo_7_thumb" src="http://www.bits4beats.it/wp-content/uploads/2011/03/google_apps_passo_7_thumb.png" alt="" width="600" height="585" /></a></p>
<h2>Passo numero 7: modificare le URL per i vari servizi</h2>
<p>Ora, per ogni servizio, possiamo modificare l&#8217;url predefinito assegnato da Google con un sottodominio del nostro nuovo dominio. Per farlo è sufficiente andare nel link &#8220;modifica URL&#8221; di ogni servizio. Vi mostrerò il caso della posta, per gli altri servizi la procedura è analoga.</p>
<p><a href="http://www.bits4beats.it/wp-content/uploads/2011/03/google_apps_passo_8.png" target="_blank"><img class="aligncenter size-full wp-image-1057" title="google_apps_passo_8_thumb" src="http://www.bits4beats.it/wp-content/uploads/2011/03/google_apps_passo_8_thumb.png" alt="" width="600" height="366" /></a></p>
<p><a href="http://www.bits4beats.it/wp-content/uploads/2011/03/google_apps_passo_9.png"><img class="aligncenter size-full wp-image-1058" title="google_apps_passo_9_thumb" src="http://www.bits4beats.it/wp-content/uploads/2011/03/google_apps_passo_9_thumb.png" alt="" width="600" height="273" /></a></p>
<h2>Passo numero 8: verifica dei nomi DNS e test finale</h2>
<p>Ecco come si presenta alla fine la configurazione DNS per il nostro dominio.</p>
<p><a href="http://www.bits4beats.it/wp-content/uploads/2011/03/google_apps_passo_10.png" target="_blank"><img class="aligncenter size-full wp-image-1059" title="google_apps_passo_10_thumb" src="http://www.bits4beats.it/wp-content/uploads/2011/03/google_apps_passo_10_thumb.png" alt="" width="578" height="408" /></a></p>
<p>Ora non ci resta che provare a inviarci dei messaggi di posta e riceverli. Stessa cosa per tutti gli altri superservizi.</p>
<p>Ah, non dimenticatevi, possiamo agganciare anche i nostri dispositivi mobili e soprattutto il nostro telefono Android!</p>
<p>Spero possa servire a qualcuno&#8230; ROb</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bits4beats.it/varie/google-apps-for-free-come-utilizzare-le-google-web-app-per-il-nostro-dominio/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Sencha Touch: un breve articolo di IBM developerWorks</title>
		<link>http://www.bits4beats.it/sviluppo-web/sencha-touch-un-breve-articolo-di-ibm-developerworks/</link>
		<comments>http://www.bits4beats.it/sviluppo-web/sencha-touch-un-breve-articolo-di-ibm-developerworks/#comments</comments>
		<pubDate>Wed, 26 Jan 2011 14:03:09 +0000</pubDate>
		<dc:creator>ROb</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Sviluppo web]]></category>
		<category><![CDATA[developerWorks]]></category>
		<category><![CDATA[extjs]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[ibm]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[sencha]]></category>
		<category><![CDATA[sencha touch]]></category>

		<guid isPermaLink="false">http://www.bits4beats.it/?p=1025</guid>
		<description><![CDATA[Ecco un interessante articolo su Sencha Touch pubblicato sul canale degli articoli tecnici di IBM, developerWorks.
Sencha Touch è un framework Javascript, nato dall&#8217;evoluzione del potente e popolarissimo ExtJS, e orientato al mondo mobile, principalmente Android e iOS.
Il suo obiettivo è quello di costruire interfacce web evolute per tali dispositivi che assomigliano a delle vere e [...]]]></description>
			<content:encoded><![CDATA[<p>Ecco un interessante articolo su <strong><a href="http://www.sencha.com/">Sencha Touch</a></strong> pubblicato sul canale degli articoli tecnici di IBM, <a href="http://www.ibm.com/developerworks/">developerWorks</a>.</p>
<p>Sencha Touch è un framework Javascript, nato dall&#8217;evoluzione del potente e popolarissimo <strong>ExtJS</strong>, e orientato al mondo mobile, principalmente <strong>Android</strong> e <strong>iOS</strong>.<br />
Il suo obiettivo è quello di costruire interfacce web evolute per tali dispositivi che assomigliano a delle vere e proprie applicazioni native.<br />
Il framework si basa su <strong>Javascript</strong> e sul potere espressivo del nuovo linguaggio di markup <strong>HTML5</strong>.</p>
<p><img src="http://www.bits4beats.it/wp-content/uploads/2011/01/sencha-touch-600x305.jpg" alt="sencha touch" title="sencha touch" width="600" height="305" class="aligncenter size-full wp-image-1029" /></p>
<p>L&#8217;articolo, scritto da <strong>Michael Galpin</strong>, <em>Software Architect</em> presso <em>eBay</em>, presenta una semplice applicazione testata sia in un dispositivo Android che in un iPhone.</p>
<p>Ecco il <a href="http://www.ibm.com/developerworks/opensource/library/wa-senchawebdev/">link</a> diretto all&#8217;articolo per chi volesse approfondire.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bits4beats.it/sviluppo-web/sencha-touch-un-breve-articolo-di-ibm-developerworks/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Come accedere al servizio box.net tramite protocollo webdav</title>
		<link>http://www.bits4beats.it/linux/come-accedere-al-servizio-box-net-tramite-protocollo-webdav/</link>
		<comments>http://www.bits4beats.it/linux/come-accedere-al-servizio-box-net-tramite-protocollo-webdav/#comments</comments>
		<pubDate>Fri, 17 Dec 2010 22:18:18 +0000</pubDate>
		<dc:creator>ROb</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Utilità]]></category>
		<category><![CDATA[box.net]]></category>
		<category><![CDATA[krusader]]></category>
		<category><![CDATA[webdav]]></category>

		<guid isPermaLink="false">http://www.bits4beats.it/?p=1017</guid>
		<description><![CDATA[Dopo che mi è arrivata la mailing list periodica di box.net, felice del fatto che il servizio ha aumentato il suo spazio di archiviazione a 5Gb anche per gli utenti free, ho deciso di pubblicare questo mini post sulla modalità di accesso webdav per box.net.
Non tutti sanno infatti che box.net offre ai suoi utenti questa [...]]]></description>
			<content:encoded><![CDATA[<p>Dopo che mi è arrivata la mailing list periodica di box.net, felice del fatto che il servizio ha aumentato il suo spazio di archiviazione a <strong>5Gb</strong> anche per gli utenti free, ho deciso di pubblicare questo mini post sulla modalità di accesso <strong>webdav</strong> per <strong><a href="http://www.box.net">box.net</a></strong>.</p>
<p>Non tutti sanno infatti che <strong>box.net</strong> offre ai suoi utenti questa possibilità, consentendo, per la gioia di molti, l&#8217;accesso via HTTP (webdav è un&#8217;estensione di questo).</p>
<p>Vediamo come farlo tramite il nostro amato (almeno da me) <strong><a href="http://www.krusader.org">Krusader</a></strong>.</p>
<p>Dopo aver avviato Krusader, in un nuovo tab digitando il seguente url:</p>
<pre class="brush: plain;">webdav://box.net/dav/</pre>
<p>Vi verranno chieste le credenziali per l&#8217;accesso al servizio (al quale, lo davo per scontato, dovete essere iscritti). Potete vedere il seguente screenshot.</p>
<p><img src="http://www.bits4beats.it/wp-content/uploads/2010/12/credenziali_box_net.png" alt="" title="credenziali box net" width="600" height="352" class="aligncenter size-full wp-image-1019" /></p>
<p>Se le credenziali sono corrette vedrete il contenuto della directory principale del vostro account box.net.<br />
Questo è il mio.</p>
<p><img src="http://www.bits4beats.it/wp-content/uploads/2010/12/pannello_krusader_box_net.png" alt="" title="pannello krusader box net" width="600" height="352" class="aligncenter size-full wp-image-1020" /></p>
<p>Ovviamente box.net non è l&#8217;unico servizio per memorizzare e condividere file. Il suo principale concorrente è <strong><a href="https://www.dropbox.com/referrals/NTk4OTkxNTk">DropBox</a></strong>, che fornisce un client multipiattaforma funzionale ed efficace. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.bits4beats.it/linux/come-accedere-al-servizio-box-net-tramite-protocollo-webdav/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Trasformare un pdf in formato A4 in un libretto formato A5</title>
		<link>http://www.bits4beats.it/linux/trasformare-un-pdf-in-formato-a4-in-libretto-formato-a5/</link>
		<comments>http://www.bits4beats.it/linux/trasformare-un-pdf-in-formato-a4-in-libretto-formato-a5/#comments</comments>
		<pubDate>Thu, 09 Dec 2010 22:36:29 +0000</pubDate>
		<dc:creator>ROb</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Utilità]]></category>
		<category><![CDATA[a4]]></category>
		<category><![CDATA[a5]]></category>
		<category><![CDATA[libretto]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[ps]]></category>

		<guid isPermaLink="false">http://www.bits4beats.it/?p=1000</guid>
		<description><![CDATA[Dopo un non molto breve periodo di silenzio, è arrivato il momento di un piccolo articolo.
Oggi voglio parlarvi della soluzione che ho trovato per trasformare un pdf in formato A4, generato a partire da un documento ODF (ma vale per qualsiasi pdf A4), in un pdf in formato A5 con l&#8217;ordine delle pagine adatto per [...]]]></description>
			<content:encoded><![CDATA[<p>Dopo un non molto breve periodo di silenzio, è arrivato il momento di un piccolo articolo.</p>
<p>Oggi voglio parlarvi della soluzione che ho trovato per trasformare un pdf in formato A4, generato a partire da un <strong>documento ODF</strong> (ma vale per qualsiasi pdf A4), in un <strong>pdf in formato A5</strong> con l&#8217;ordine delle pagine adatto per la creazione di un libretto rilegabile.</p>
<p><a href="http://www.bits4beats.it/wp-content/uploads/2010/12/libretto1.png"><img class="alignleft size-full wp-image-1013" title="libretto" src="http://www.bits4beats.it/wp-content/uploads/2010/12/libretto1.png" alt="" width="100" height="103" /></a></p>
<p>Questa particolare esigenza mi è venuta per la preparazione del libretto della liturgia della <strong>Festa dell&#8217;Immacolata, 8 dicembre 2010, a Macerata</strong>, in occasione della visita del <strong>Cardinale Tarcisio Bertone</strong>.<br />
Avendo intenzione di prepararlo usando Linux e volendo nello stesso tempo trovare un modo per farlo comodamente anche in altre occasioni, ho pensato di documentarmi un pò sui programmi e sui metodi offerti dal pinguino.<br />
In passato infatti, quando ancora utilizzavo Windows, avevo fatto qualche esperimento positivo con il programma <strong>Publisher</strong>. In Linux, non avendo ancora imparato a usare Scribus (che penso sia lo strumento migliore per tali impaginazioni) non avevo una valida soluzione per la creazione di un tale libretto.</p>
<p>Voglio quindi ora condividere con voi il risultato di questa piccola ricerca.</p>
<p>I comandi che entrano in gioco per tale operazioni sono: <strong>pdftops</strong> (pacchetto Ubuntu poppler-utils), <strong>psbook</strong> (psutils), <strong>psnup</strong> (psutils) e  <strong>ps2pdf</strong> (ghostscript).<br />
Serve inoltre un file pdf in formato A4. Se non ne avete uno a disposizione potete usare <a href="http://www.bits4beats.it/wp-content/uploads/2010/12/libretto_sacerdoti_2010_12_08.pdf" target="_blank">questo</a> che è proprio il file della cerimonia, generato con Open Office Writer, e successivamente convertito in formato pdf.</p>
<p>Il primo passo è la generazione del file in formato <em>.ps</em> . Per farlo usiamo il comando:</p>
<pre class="brush: bash;">pdftops libretto_sacerdoti_2010_12_08.pdf</pre>
<p>Questo comando genererà il file <em>libretto_sacerdoti_2010_12_08.ps</em><br />
A questo punto lanciamo:</p>
<pre class="brush: bash;">psbook libretto_sacerdoti_2010_12_08.ps | psnup -pa4 -2 &gt; libretto_sacerdoti_2010_12_08_A5.ps</pre>
<p>In questo modo il file <em>.ps</em> viene trasformato nell&#8217;impaginazione libretto e successivamente il numero di pagine per facciata viene impostato a 2. L&#8217;output finale viene salvato nel file <em>libretto_sacerdoti_2010_12_08_A5.ps</em> .</p>
<p>Ora non ci resta che riconvertire il file in formato pdf :</p>
<pre class="brush: bash;">ps2pdf libretto_sacerdoti_2010_12_08_A5.ps libretto_sacerdoti_2010_12_08_A5.pdf</pre>
<p>Potete gustarvi il <a href="http://www.bits4beats.it/wp-content/uploads/2010/12/libretto_sacerdoti_2010_12_08_A5.pdf" target="_blank">risultato del vostro lavoro</a> e verificare che la stampa funzioni correttamente.<br />
Per le stampanti fronte-retro basta lanciare la stampa, per le stampanti solo fronte dovete procedere in questo modo:</p>
<ul>
<li>stampare le pagine dispari del documento</li>
<li>se il totale delle pagine è pari estrarre i fogli e rimetterli nella stampante (tipicamente con il lato scritto rivolto verso il basso e nel verso corretto di stampa), se è dispari allora prima di rimetterli dentro dovete togliere l&#8217;ultima pagina dispari stampata (quella più in alto nella pila)</li>
<li>stampare le pagine pari in ordine inverso</li>
</ul>
<p>Se avete proceduto correttamente il vostro libretto è pronto per essere rilegato.<br />
Questo modo di convertire i pdf A4 può tornare utile per stampare un libro risparmiando carta (sempre che il risultato finale sia ancora ben leggibile).</p>
<p>Altro consiglio: numerate le pagine per non farvi venire inutili mal di testa!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bits4beats.it/linux/trasformare-un-pdf-in-formato-a4-in-libretto-formato-a5/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Generazione di un hash md5 in Java</title>
		<link>http://www.bits4beats.it/java/generazione-di-un-hash-md5-in-java/</link>
		<comments>http://www.bits4beats.it/java/generazione-di-un-hash-md5-in-java/#comments</comments>
		<pubDate>Wed, 10 Nov 2010 12:18:36 +0000</pubDate>
		<dc:creator>ROb</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Sviluppo web]]></category>
		<category><![CDATA[codifica]]></category>
		<category><![CDATA[criptazione]]></category>
		<category><![CDATA[digest]]></category>
		<category><![CDATA[hash]]></category>
		<category><![CDATA[md5]]></category>

		<guid isPermaLink="false">http://www.bits4beats.it/?p=995</guid>
		<description><![CDATA[Con questa semplice funzione è possibile generare una stringa in codifica md5 a partire da una stringa di testo.

       /**
	 * Generates the md5sum of the given digest
	 *
	 * @param digest
	 * @return
	 */
	public static String md5sum(String digest) {
		String message = null;

		if (digest != null) {
			try {
				MessageDigest md [...]]]></description>
			<content:encoded><![CDATA[<p>Con questa semplice funzione è possibile generare una stringa in codifica <strong>md5</strong> a partire da una stringa di testo.</p>
<pre class="brush: java;">
       /**
	 * Generates the md5sum of the given digest
	 *
	 * @param digest
	 * @return
	 */
	public static String md5sum(String digest) {
		String message = null;

		if (digest != null) {
			try {
				MessageDigest md = MessageDigest.getInstance(&quot;MD5&quot;);
				md.reset();
				byte[] messageBytes = md.digest(digest.getBytes());
				BigInteger number = new BigInteger(1, messageBytes);
				message = number.toString(16);
			} catch (NoSuchAlgorithmException e) {
				e.printStackTrace();
			}
		}

		return message;
	}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.bits4beats.it/java/generazione-di-un-hash-md5-in-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Migrazione posta elettronica da Evolution a Thunderbird</title>
		<link>http://www.bits4beats.it/linux/migrazione-posta-elettronica-da-evolution-a-thunderbird/</link>
		<comments>http://www.bits4beats.it/linux/migrazione-posta-elettronica-da-evolution-a-thunderbird/#comments</comments>
		<pubDate>Thu, 21 Oct 2010 08:34:42 +0000</pubDate>
		<dc:creator>ROb</dc:creator>
				<category><![CDATA[Informatica in generale]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[address book]]></category>
		<category><![CDATA[calendar]]></category>
		<category><![CDATA[calendario]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[evolution]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google calendar]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[posta elettronica]]></category>
		<category><![CDATA[rubrica]]></category>
		<category><![CDATA[thunderbird]]></category>
		<category><![CDATA[zimbra]]></category>

		<guid isPermaLink="false">http://www.bits4beats.it/?p=980</guid>
		<description><![CDATA[Dopo due anni di utilizzo quotidiano del buon caro Evolution, ho deciso di passare al famoso e diffusissimo client di posta della Mozilla Foundation, Thunderbird.
Tale scelta è stata motivata dal fatto che Thunderbird è un sistema di posta molto più diffuso di Evolution, è più facile da estendere e personalizzare tramite i numerosi plugin e [...]]]></description>
			<content:encoded><![CDATA[<p>Dopo due anni di utilizzo quotidiano del buon caro <strong>Evolution</strong>, ho deciso di passare al famoso e diffusissimo client di posta della <strong><a href="http://www.mozilla.org">Mozilla Foundation</a></strong>, <strong>Thunderbird</strong>.</p>
<p>Tale scelta è stata motivata dal fatto che Thunderbird è un sistema di posta molto più diffuso di Evolution, è più facile da estendere e personalizzare tramite i numerosi plugin e temi a disposizione ed è disponibile per i più diffusi sistemi operativi (oltre che per il nostro affezionato Linux), cosa che in alcuni casi può risultare davvero comoda.</p>
<p><img src="http://www.bits4beats.it/wp-content/uploads/2010/10/migrazione.png" alt="Migrazione Evolution - Thunderbird" title="Migrazione Evolution - Thunderbird" width="394" height="129" class="aligncenter size-full wp-image-982" /></p>
<p>Il processo di migrazione che vi sto per descrivere si compone di una serie di passi alcuni dei quali possono essere saltati perché trattano della mia configurazione particolare. Oltre infatti ad aver migrato le cartelle di posta elettronica ho anche installato e configurato alcune estensioni per la sincronizzazione di rubrica e calendario con i rispettivi applicativi di Google.</p>
<p>I passaggi sono i seguenti:</p>
<ul>
<li><strong>Installazione</strong> di Mozilla Thunderbird</li>
<li><strong>Avvio del programma</strong> e creazione dell&#8217;albero di directory speculare a quello di Evolution</li>
<li><strong>Copia dei messaggi e delle cartelle</strong></li>
<li><strong>Installazione dei plugin</strong> aggiuntivi per la gestione del calendario e la sincronizzazione con gli applicativi Google</li>
<li><strong>Configurazione dei plugin</strong> per la sincronizzazione</li>
</ul>
<h3>Installazione di Mozilla Thunderbird</h3>
<p>Dopo aver scaricato il software all&#8217;indirizzo <a href="http://www.mozillamessaging.com/it/thunderbird/"><strong>http://www.mozillamessaging.com/it/thunderbird/</strong></a> è sufficiente scompattarlo nella directory <em>/opt/</em>, con gli opportuni permessi di root.<br />
Essendo un archivio in formato <em>.tar.bz2</em> dovete lanciare il comando <em>bunzip2 &#8220;nomefile&#8221;</em> quindi <em>tar xfv &#8220;nomefile_senza_estensione.bz2&#8243;</em>.</p>
<h3>Avvio del programma e creazione dell&#8217;albero di directory speculare a quello di Evolution</h3>
<p>Se avete scompattato il tutto nella directory <em>/opt/thunderbird</em> , l&#8217;avvio del programma avviene nel seguente modo: <em>/opt/thunderbird/thunderbird-bin</em> .</p>
<p>Ora quello che dovete fare, dopo aver configurato il vostro primo account, è ricreare la stessa struttura di cartelle, con lo stesso nome, che avevate in Evolution.<br />
Quest&#8217;operazione è importante perché il trasferimento delle cartelle e dei messaggi avviene facendo direttamente la copia dei file tra le cartelle di file system utilizzate dai due programmi.</p>
<h3>Copia dei messaggi e delle cartelle</h3>
<p>Terminata la creazione delle cartelle, chiudete sia Evolution che Thunderbird e posizionatevi nelle due cartelle: <em>/home/&#8221;utente&#8221;/.thunderbird/&#8221;profilo&#8221;.default/Mail/Local Folders/</em> per Thunderbird , dove utente e profilo dipendono dalle vostre specifiche impostazioni e <em>/home/&#8221;utente&#8221;/.evolution/mail/local/</em> per Evolution . </p>
<p>A questo punto, partendo dalla cartella di Evolution, copiate tutti i file senza estensione nella cartella di Thunderbird. Se avete delle sottocartelle nel vostro albero di posta allora dovrete ripetere tale operazione entrando in tutte le cartelle con estensione <em>.sbd</em> .</p>
<p>Completata l&#8217;operazione di copia potete riaprire Thunderbird e notare che tutti i messaggi sono correttamente presenti nelle rispettive cartelle. In alcuni casi potrebbe capitare che i messaggi risultano non letti o non sono nello stesso ordine con cui li vedevate in Evolution. Impostate correttamente lo stato di lettura e scegliete l&#8217;ordinamento che preferite. </p>
<h3>Installazione dei plugin aggiuntivi per la gestione del calendario e la sincronizzazione con gli applicativi Google</h3>
<p>Essendo un incallito utilizzatore dei <strong>servizi Google</strong>, come Calendar e Gmail, ho installato alcuni plugin per aiutarmi nella sincronizzazione di Thunderbird con i dati salvati nei rispettivi servizi.</p>
<p>Per la parte Calendar ho installato <strong>Lightning</strong> scaricandolo dall&#8217;indirizzo <a href="http://www.mozilla.org/projects/calendar/lightning/ ">http://www.mozilla.org/projects/calendar/lightning/</a> ma è anche possibile trovarlo e installarlo direttamente dalla gestione componenti aggiuntivi del menu Strumenti del programma.</p>
<p>Per aiutare Lightning nella sincronizzazione però ho aggiunto anche <a href="https://addons.mozilla.org/it/thunderbird/addon/4631/"><strong>Provider for Google Calendar</strong></a> che permette una comunicazione bidirezionale con i calendari Google. Cioè, sfruttando tale estensione, possiamo anche salvare i nostri appuntamenti in remoto verso Google Calendar.</p>
<p>Infine, ultimo ma non per importanza, ho installato anche il componente <strong>Zindus</strong>. <a href="http://www.zindus.com/">Zindus</a> permette di sincronizzare a sua volta la Rubrica di Thunderbird con i contatti di Gmail. L&#8217;estensione effettua anche la sincronizzazione con un server <a href="http://www.zimbra.com/"><strong>Zimbra</strong></a>, nel caso abbiate un account gestito da questo importante software di collaborazione open source.<br />
Anche in questo caso la sincronizzazione è in entrambi i versi, potendo quindi modificare e inserire contatti in Thunderbird per poi trovarveli in Gmail.</p>
<p>Una cosa da sapere comunque è che i gruppi di Gmail non vengono gestiti in Thunderbird come mailing list, o gruppi di invio, bensì come ulteriori rubriche, con un nome davvero non molto &#8220;simpatico&#8221;. Per ogni gruppo in Gmail avrete una corrispettiva rubrica in Thunderbird dal nome <em>zindus/indirizzo@gmail.com/#nomegruppo</em> .</p>
<h3>Configurazione dei plugin per la sincronizzazione</h3>
<p>La configurazione dei plugin per la sincronizzazione è davvero semplice. Nel caso di Zindus è sufficiente andare nei componenti aggiuntivi e cliccare sulle proprietà dell&#8217;estensione stessa. Dalla finestra potrete gestire gli account Gmail o Zimbra e impostarne per ognuno le proprietà di sincronizzazione.<br />
Nella barra di stato troverete inoltre un&#8217;icona tramite la quale potrete avviare la sincronizzazione manualmente o modificare le impostazioni.</p>
<p>La configurazione dei calendari Google invece consiste nell&#8217;inserire 1 ad 1 tutti i calendari all&#8217;interno della lista dei calendari di Lightning.<br />
Entrando nel pannello del calendario, e facendo tasto destro nella lista dei calendari, potrete aggiungere un nuovo calendario di rete e scegliere il Google Calendar.<br />
Nel campo &#8220;Luogo&#8221; dovete impostare l&#8217;indirizzo privato in formato XML del vostro calendario Google.<br />
Dopo averlo correttamente inserito dovete fornire le credenziali di accesso al servizio. In pochi minuti vedrete comparire i vostri appuntamenti nel calendario di Lightning.</p>
<h3>Fine</h3>
<p>Spero questa guida sia servita a qualcuno, oltre che a me per ricordare tutti i passaggi effettuati.<br />
Fate domande o inserite commenti per eventuali chiarimenti, approfondimenti o qualche screenshot in più.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bits4beats.it/linux/migrazione-posta-elettronica-da-evolution-a-thunderbird/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Costruire un link per visualizzare il codice di una pagina web</title>
		<link>http://www.bits4beats.it/sviluppo-web/costruire-un-link-per-visualizzare-il-codice-di-una-pagina-web/</link>
		<comments>http://www.bits4beats.it/sviluppo-web/costruire-un-link-per-visualizzare-il-codice-di-una-pagina-web/#comments</comments>
		<pubDate>Mon, 11 Oct 2010 13:19:11 +0000</pubDate>
		<dc:creator>ROb</dc:creator>
				<category><![CDATA[Sviluppo web]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[codice]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[sorgente]]></category>
		<category><![CDATA[view-source]]></category>

		<guid isPermaLink="false">http://www.bits4beats.it/?p=971</guid>
		<description><![CDATA[Alcuni browser supportano un protocollo speciale chiamato view-source:.

Tale protocollo permette al browser di visualizzare il codice della pagina indirizzata dall&#8217;url anziché farne il rendering e visualizzarla.
Sfruttando tale protocollo possiamo costruire un link che permette, a chi è interessato, di visualizzare il codice della nostra pagina senza passare per la relativa funzione browser-specific (tipicamente attivabile con [...]]]></description>
			<content:encoded><![CDATA[<p>Alcuni browser supportano un protocollo speciale chiamato <em><strong>view-source:</strong></em>.</p>
<p><img src="http://www.bits4beats.it/wp-content/uploads/2010/10/torre_pisa_i_little.jpg" alt="Torre di Pisa tag i" title="Torre di Pisa tag i" width="140" height="200" class="alignleft size-full wp-image-976" /></p>
<p>Tale protocollo permette al browser di <strong>visualizzare il codice</strong> della pagina indirizzata dall&#8217;url anziché farne il rendering e visualizzarla.</p>
<p>Sfruttando tale protocollo possiamo costruire un link che permette, a chi è interessato, di visualizzare il codice della nostra pagina senza passare per la relativa funzione browser-specific (tipicamente attivabile con la sequenza di tasti <em>CTRL+u</em>)</p>
<div style="clear: both">&nbsp;</div>
<p>Ecco una semplice pagina html che mostra tale possibilità:</p>
<pre class="brush: xml;">
&lt;html&gt;
&lt;body&gt;
   &lt;h1&gt; Roberto Rossi from Macerata! Hello! &lt;/h1&gt;
   &lt;a class=&quot;button&quot; onClick='window.location=&quot;view-source:&quot; + window.location.href' href=&quot;javascript:;;&quot;&gt;Visualizza Codice&lt;/a&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Cliccando sul link &#8220;Visualizza Codice&#8221; il browser aprirà una pagina che visualizzerà tale codice.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bits4beats.it/sviluppo-web/costruire-un-link-per-visualizzare-il-codice-di-una-pagina-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>20 modi per rendere più sicuro il nostro web server Apache</title>
		<link>http://www.bits4beats.it/linux/20-modi-per-rendere-piu-sicuro-il-nostro-web-server-apache/</link>
		<comments>http://www.bits4beats.it/linux/20-modi-per-rendere-piu-sicuro-il-nostro-web-server-apache/#comments</comments>
		<pubDate>Wed, 06 Oct 2010 09:41:07 +0000</pubDate>
		<dc:creator>ROb</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[sicurezza]]></category>

		<guid isPermaLink="false">http://www.bits4beats.it/?p=962</guid>
		<description><![CDATA[Nel seguente articolo in inglese vengono presentati 20 punti che spiegano come rendere più sicuro e protetto il server web Apache.
Si parte ovviamente da quelli più importanti e semplici fino ad arrivare alle configurazioni più onerose ma pur sempre fondamentali per raggiungere un elevato livello di protezione.
http://www.petefreitag.com/item/505.cfm
L&#8217;articolo è stato scritto da Pete Freitag.
Personalmente ho provato [...]]]></description>
			<content:encoded><![CDATA[<p>Nel seguente articolo in inglese vengono presentati <strong>20 punti</strong> che spiegano come rendere più sicuro e protetto il server web Apache.</p>
<p>Si parte ovviamente da quelli più importanti e semplici fino ad arrivare alle configurazioni più onerose ma pur sempre fondamentali per raggiungere un elevato livello di protezione.</p>
<p><strong><a target="_blank" href="http://www.petefreitag.com/item/505.cfm">http://www.petefreitag.com/item/505.cfm</a></strong></p>
<p>L&#8217;articolo è stato scritto da <strong>Pete Freitag</strong>.</p>
<p>Personalmente ho provato al volo le due <strong>direttive che &#8220;limitano&#8221; le informazioni sulla versione e i moduli in uso </strong>nel server.<br />
Eccole qua:</p>
<pre class="brush: plain;">
ServerSignature Off
ServerTokens Prod
</pre>
<p>Nella seconda direttiva al posto di <em>Prod</em> ho messo <em>Minor</em>, presentando cioè anche il minor number della versione di Apache.</p>
<p>In sistemi Ubuntu e Debian like è sufficiente modificarli o inserirli nel file <em>/etc/apache2/apache2.conf </em>e ricaricare la configurazione usando il comando: <em>/etc/init.d/apache2 reload</em> (con i permessi di root).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bits4beats.it/linux/20-modi-per-rendere-piu-sicuro-il-nostro-web-server-apache/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Pulire codice HTML eccetto alcuni tag in Java sfruttando Jsoup</title>
		<link>http://www.bits4beats.it/java/pulire-codice-html-eccetto-alcuni-tag-in-java-sfruttando-jsoup/</link>
		<comments>http://www.bits4beats.it/java/pulire-codice-html-eccetto-alcuni-tag-in-java-sfruttando-jsoup/#comments</comments>
		<pubDate>Fri, 24 Sep 2010 15:46:25 +0000</pubDate>
		<dc:creator>ROb</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Sviluppo web]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jsoup]]></category>
		<category><![CDATA[parsing]]></category>

		<guid isPermaLink="false">http://www.bits4beats.it/?p=955</guid>
		<description><![CDATA[Abbiamo già parlato di Jsoup in questo precedente post.
In due parole Jsoup è una potente libreria di parsing html/xml che permette di leggere e manipolare facilmente stringhe e porzioni anche grandi di codice html/xml.
Oggi voglio farvi vedere come possiamo sfruttarla per pulire del codice html (proveniente ad esempio dal campo di un web form) mantenendo [...]]]></description>
			<content:encoded><![CDATA[<p>Abbiamo già parlato di <strong>Jsoup</strong> in <a href="http://www.bits4beats.it/java/estrarre-informazioni-da-un-sito-attraverso-jsoup-html-parser-per-java/">questo precedente post</a>.<br />
In due parole <a href="http://jsoup.org/"><strong>Jsoup</strong></a> è una potente <strong>libreria di parsing html/xml</strong> che permette di leggere e manipolare facilmente stringhe e porzioni anche grandi di codice html/xml.</p>
<p>Oggi voglio farvi vedere come possiamo sfruttarla per <strong>pulire del codice html </strong>(proveniente ad esempio dal campo di un web form) mantenendo solamente i tag che vogliamo.</p>
<p>Questa opzione è infatti molto utile nel caso in cui si voglia permettere agli utenti di arricchire il dato con la formattazione classica dei testi: <strong>bold</strong>, <strong>italico</strong>, &#8230; senza però rischiare di esporci al pericoloso <strong>XSS attack</strong> che consiste nell&#8217;inserire <strong>codice Javascript malevolo</strong> che punta verso qualche altro sito.</p>
<p>Con poche righe di codice Jsoup ci permette di definire la nostro lista di tag partendo da alcuni set predefiniti.</p>
<pre class="brush: java;">
        ...
        String unsafe = &quot;&lt;p&gt;&lt;a href='http://www.bits4beats.com/' onclick='stealCookies()'&gt;Benvenuto &lt;b&gt;Roberto Rossi&lt;/b&gt;&lt;/a&gt; lo so che che sei di Macerata! &lt;br/&gt;... sei proprio un &lt;i&gt;impiastro&lt;/i&gt;!&lt;/p&gt;&quot;;

		Whitelist myWL = Whitelist.simpleText();
		myWL.addTags(&quot;br&quot;, &quot;hr&quot;);

		String safe = Jsoup.clean(unsafe, myWL);
		System.out.println(&quot;stringa sicura: &quot; + safe);
        ...
</pre>
<p>Se lo eseguiamo otterremo la seguente stringa:</p>
<pre class="brush: plain;">
stringa sicura: Benvenuto &lt;b&gt;Roberto Rossi&lt;/b&gt; lo sei che sei di Macerata! &lt;br /&gt; sei proprio un &lt;i&gt;impiastro&lt;/i&gt;!
</pre>
<p>In pratica abbiamo detto a Jsoup di partire dalla lista accettata <strong>simpleText()</strong> che contiene i tag essenziali della formattazione a cui abbiamo aggiunto il tag <strong>br</strong> e il tag <strong>hr</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bits4beats.it/java/pulire-codice-html-eccetto-alcuni-tag-in-java-sfruttando-jsoup/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Java: le variabili di ambiente in un oggetto Properties</title>
		<link>http://www.bits4beats.it/java/java-le-variabili-di-ambiente-in-un-oggetto-properties/</link>
		<comments>http://www.bits4beats.it/java/java-le-variabili-di-ambiente-in-un-oggetto-properties/#comments</comments>
		<pubDate>Thu, 16 Sep 2010 10:40:13 +0000</pubDate>
		<dc:creator>ROb</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Sviluppo web]]></category>
		<category><![CDATA[ambiente]]></category>
		<category><![CDATA[codifica file]]></category>
		<category><![CDATA[properties]]></category>
		<category><![CDATA[variabili ambiente]]></category>

		<guid isPermaLink="false">http://www.bits4beats.it/?p=950</guid>
		<description><![CDATA[Ecco come è possibile ottenere in un oggetto di tipo Properties contenente le variabili di ambiente della nostra Linux box.

       /**
	 * Legge le variabili di ambiente e popola un oggetto di tipo Properties
	 */
	public static Properties getEnvironment() throws java.io.IOException {
	    Properties env = new Properties();
	 [...]]]></description>
			<content:encoded><![CDATA[<p>Ecco come è possibile ottenere in un oggetto di tipo <strong>Properties</strong> contenente le <strong>variabili di ambiente</strong> della nostra Linux box.</p>
<pre class="brush: java;">
       /**
	 * Legge le variabili di ambiente e popola un oggetto di tipo Properties
	 */
	public static Properties getEnvironment() throws java.io.IOException {
	    Properties env = new Properties();
	    env.load(Runtime.getRuntime().exec(&quot;env&quot;).getInputStream());
	    return env;
	}
</pre>
<p>A questo punto con il seguente codice possiamo conoscere, ad esempio, il valore della variabile <strong>LANG</strong> che determina la codifica dei file.</p>
<pre class="brush: java;">
       ...
       Properties env = Utils.getEnvironment();
       String lang = (String) env.get(&quot;LANG&quot;);
       ...
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.bits4beats.it/java/java-le-variabili-di-ambiente-in-un-oggetto-properties/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Monitorare file creati, modificati e cancellati in una directory</title>
		<link>http://www.bits4beats.it/linux/monitorare-file-creati-modificati-e-cancellati-in-una-directory/</link>
		<comments>http://www.bits4beats.it/linux/monitorare-file-creati-modificati-e-cancellati-in-una-directory/#comments</comments>
		<pubDate>Tue, 14 Sep 2010 09:55:12 +0000</pubDate>
		<dc:creator>ROb</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Utilità]]></category>
		<category><![CDATA[directory]]></category>
		<category><![CDATA[inotify]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[monitoraggio]]></category>
		<category><![CDATA[polling]]></category>

		<guid isPermaLink="false">http://www.bits4beats.it/?p=901</guid>
		<description><![CDATA[Qualche volta può tornarci utile conoscere con esattezza tutti i file che vengono creati, modificati e cancellati in una specifica cartella.

Un modo semplice per farlo è sfruttando il comodissimo pacchetto inotify-tools che include al suo interno il comando inotitywait.
Il seguente script si mette in attesa e segnala in output gli eventi accaduti per la directory [...]]]></description>
			<content:encoded><![CDATA[<p>Qualche volta può tornarci utile conoscere con esattezza tutti i <strong>file</strong> che vengono <strong>creati, modificati e cancellati in una specifica cartella</strong>.</p>
<p><img src="http://www.bits4beats.it/wp-content/uploads/2010/09/monitoring.jpg" alt="" title="monitoring" width="100" height="100" class="alignleft size-full wp-image-947" /></p>
<p>Un modo semplice per farlo è sfruttando il comodissimo pacchetto <strong>inotify-tools</strong> che include al suo interno il comando <em>inotitywait</em>.</p>
<p>Il seguente script si mette in attesa e segnala in output gli eventi accaduti per la directory specificata:</p>
<pre class="brush: bash;">
#!/bin/bash

directory=$1

inotifywait -q -m --format '%f %e' -e modify -e move -e create -e delete ${directory} | while read line

do
	echo &quot;doing something with: $line&quot;;

	# for example:
	# java -jar compiler.jar --js=in1.js --js=in2.js ... --js_output_file=out.js
done
</pre>
<p>Può essere invocato in questo modo, passando come primo e unico parametro la directory da monitorare:</p>
<p><em>./inotify.sh ~/Desktop/download/</em></p>
<p>ed emette ouput di questo tipo:</p>
<pre class="brush: plain;">
doing something with: Stack Overflow_screenshot.png MOVED_FROM
doing something with: printecdisplay.pdf DELETE
doing something with: ecommerce_03.html CREATE
doing something with: ecommerce_03.html MODIFY
doing something with: avatar_908.png CREATE
doing something with: avatar_908.png MODIFY
</pre>
<p>Ovviamente il tutto può essere modificato a proprio piacimento per eseguire operazione o avere notifiche via mail (o qualsiasi altra cosa creativa vi venga in mente).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bits4beats.it/linux/monitorare-file-creati-modificati-e-cancellati-in-una-directory/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Una comunità di programmatori per programmatori: StackOverflow</title>
		<link>http://www.bits4beats.it/varie/una-comunita-di-programmatori-per-programmatori-stackoverflow/</link>
		<comments>http://www.bits4beats.it/varie/una-comunita-di-programmatori-per-programmatori-stackoverflow/#comments</comments>
		<pubDate>Sun, 12 Sep 2010 20:30:13 +0000</pubDate>
		<dc:creator>ROb</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Sviluppo web]]></category>
		<category><![CDATA[Varie]]></category>
		<category><![CDATA[comunità]]></category>
		<category><![CDATA[programmazione software sviluppo]]></category>
		<category><![CDATA[stackoverflow]]></category>

		<guid isPermaLink="false">http://www.bits4beats.it/?p=916</guid>
		<description><![CDATA[Quando avevo bisogno di informazioni tecniche e mi affidavo a Google per le mie care ricerche, spesso capitavo in un sito decisamente simpatico dove trovavo quasi sempre le risposte alle mie domande.
Sinceramente non ho mai approfondito la natura del sito, né tantomeno quale fossero gli argomenti prelaventi. Mi limitavo a provare le soluzioni proposte e [...]]]></description>
			<content:encoded><![CDATA[<p>Quando avevo bisogno di informazioni tecniche e mi affidavo a Google per le mie care ricerche, spesso capitavo in un sito decisamente simpatico dove trovavo quasi sempre le risposte alle mie domande.</p>
<p>Sinceramente non ho mai approfondito la natura del sito, né tantomeno quale fossero gli argomenti prelaventi. Mi limitavo a provare le soluzioni proposte e se funzionavano me ne andavo per sempre dal sito.</p>
<p>Qualche giorno fa, mosso da uno strano spirito di curiosità (non è vero ce l&#8217;ho sempre solo che spesso è soffocato dalla voglia di concludere le attività) mi sono soffermato a studiarlo un pò.</p>
<p>Il sito si chiama <strong><a href="http://stackoverflow.com/">StackOverflow</a></strong>, un nome decisamente per programmatori, e in realtà unisce un gruppo numerosissimo di sviluppatori in tutto il mondo.<br />
Il suo funzionamento è di una banalità imbarazzante ma forse è anche il motivo del suo successo. Se hai qualche dubbio, problema, richiesta, fai prima una ricerca nel sito e se non trovi niente scrivilo direttamente su StackOverflow.<br />
Troverai sicuramente qualcuno che ha già avuto il tuo stesso dubbio oppure ha già risolto il tuo stesso problema. Se così non fosse magari troverai allora qualcuno disposto ad aiutarti e &#8220;perdere&#8221; un pò del suo tempo prezioso per rispondere in modo efficace alla tua domanda.</p>
<p>StackOverflow è un sito di programmatori per programmatori. Chiunque comunque può accedere al sito, non sono richiesti particolari prerequisiti, e chiunque può aiutare o rispondere.<br />
In realtà non è sempre così, nel senso che il sistema di StackOverflow è <strong>autopremiante</strong> e <strong>automoderato</strong>.<br />
<strong>Rispondendo, commentando e risolvendo le domande</strong> ogni iscritto riceve dei punti che gli permettono oltre che di guadagnare <strong>reputazione</strong> e <strong>stima</strong> dagli altri anche di <strong>acquisire facoltà operative</strong>.<br />
Non tutti cioè possono fare tutto. Ad esempio chi ha un punteggio pari a 0 non può inserire più di 2 link in una risposta, probabilmente per allontanare gli spammer o chi vuole fare solamente pubblicità.</p>
<p><img src="http://www.bits4beats.it/wp-content/uploads/2010/09/Stack-Overflow_screenshot.png" alt="" title="Stack Overflow_screenshot" width="600" class="aligncenter size-full wp-image-932" /></p>
<p>Se avete voglia di diventare dei guru di StackOverflow, se avete delle forti spinte filantropiche oppure se semplicemente avete bisogno di aiuto in uno dei moltissimi argomenti trattati, di programmazione e non solo, rivolgetevi allora a StackOverflow, iscrivetevi e partecipate a questa <strong>grandissima community</strong>.</p>
<p>Per chi mi dovesse cercare, io sono <strong>impiastro</strong> e, come potete vedere, il mio punteggio è ancora veramente molto basso. </p>
<p>Qui sotto trovate il codice javascript che potete inserire all&#8217;interno del vostro sito per segnalare la vostra situazione StackOverflow. Questo è il mio.</p>
<p><script src="http://stackoverflow.com/users/flair/325152.js?" type="text/javascript"></script><br />
<br/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bits4beats.it/varie/una-comunita-di-programmatori-per-programmatori-stackoverflow/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Firefox in modalità provvisoria</title>
		<link>http://www.bits4beats.it/sviluppo-web/firefox-in-modalita-provvisoria/</link>
		<comments>http://www.bits4beats.it/sviluppo-web/firefox-in-modalita-provvisoria/#comments</comments>
		<pubDate>Fri, 10 Sep 2010 16:28:06 +0000</pubDate>
		<dc:creator>ROb</dc:creator>
				<category><![CDATA[Informatica in generale]]></category>
		<category><![CDATA[Sviluppo web]]></category>
		<category><![CDATA[Utilità]]></category>
		<category><![CDATA[componenti aggiuntivi]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[modalità provvisoria]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://www.bits4beats.it/?p=922</guid>
		<description><![CDATA[Qualche giorno fa mi è capitato di dover disabilitare un plugin nel mio profilo Firefox perché in conflitto con un altro plugin.

Il problema è che non riuscivo ad accedere alla maschera dei plugin aggiuntivi in quanto il Javascript Firefox che visualizza tale pagina rimaneva bloccato.
Cercando qua e là ho scovato il modo per disattivare i [...]]]></description>
			<content:encoded><![CDATA[<p>Qualche giorno fa mi è capitato di dover disabilitare un plugin nel mio profilo Firefox perché in conflitto con un altro plugin.</p>
<p><img src="http://www.bits4beats.it/wp-content/uploads/2010/09/cog_edit.png" alt="modalità provvisoria" title="modalità provvisoria" width="128" height="128" class="alignleft size-full wp-image-925" /></p>
<p>Il problema è che non riuscivo ad accedere alla maschera dei plugin aggiuntivi in quanto il Javascript Firefox che visualizza tale pagina rimaneva bloccato.</p>
<p>Cercando qua e là ho scovato il modo per disattivare i plugin, entrando in <strong>modalità provvisoria in Firefox</strong>.<br />
Per farlo è sufficiente chiuderlo e riaprirlo con questo comando:</p>
<pre class="brush: plain;">
firefox -safe-mode
</pre>
<p>I plugin vengono tutti disattivati e possiamo quindi scegliere quale bloccare e quale disinstallare definitivamente.</p>
<p>Comodo no? Come al solito gli sviluppatori <strong>Mozilla</strong> hanno pensato proprio a tutto.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bits4beats.it/sviluppo-web/firefox-in-modalita-provvisoria/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Formattazione di un disco con il file system type NTFS</title>
		<link>http://www.bits4beats.it/linux/formattazione-di-un-disco-con-il-file-system-type-ntfs/</link>
		<comments>http://www.bits4beats.it/linux/formattazione-di-un-disco-con-il-file-system-type-ntfs/#comments</comments>
		<pubDate>Thu, 09 Sep 2010 15:58:27 +0000</pubDate>
		<dc:creator>ROb</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[file system]]></category>
		<category><![CDATA[formattazione]]></category>
		<category><![CDATA[ntfs]]></category>
		<category><![CDATA[partizione]]></category>

		<guid isPermaLink="false">http://www.bits4beats.it/?p=889</guid>
		<description><![CDATA[Mi è capitato qualche giorno fa di dover formattare un disco da 2,5 pollici di un vecchio portatile con il file system NTFS per poter accedervi senza problemi da PC Windows e Linux.
Ovviamente volevo fare il tutto dalla mia Linux station e non da Windows; ecco il motivo di questo post.
Ebbene per farlo mi ci [...]]]></description>
			<content:encoded><![CDATA[<p>Mi è capitato qualche giorno fa di dover formattare un disco da 2,5 pollici di un vecchio portatile con il file system <strong>NTFS</strong> per poter accedervi senza problemi da PC Windows e <strong>Linux</strong>.</p>
<p>Ovviamente volevo fare il tutto dalla mia Linux station e non da Windows; ecco il motivo di questo post.<br />
Ebbene per farlo mi ci sono voluti alcuni passi e la cosa, per me, non è stata banalissima.</p>
<p>La seguente procedura è stata eseguita nella mia Ubuntu 8.04 ma è applicabilissima anche per tutte le altre distribuzioni o versioni.<br />
Si suppone che il vostro disco sia riconosciuto con il seguente path <em>/dev/sdb</em> .</p>
<ul>
<li>installazione dei pacchetti <strong>ntfsprogs</strong> e <strong>gparted</strong> con il solito comando: <em>sudo apt-get install ntfsprogs gparted</em> (le utility di ntfsprogs sono necessarie a gparted per permettergli di formattare in formato ntfs la partizione creata).</li>
<li>avvio del programma <strong>gparted</strong> per la creazione della partizione e per la sua successiva formattazione in formato ntfs.<br />
Selezioniamo in alto a destra il disco da partizionare/formattare. Se ci sono delle partizioni esistenti che dobbiamo cancellare, le selezioniamo ad una ad una e con il tasto destro le cancelliamo.<br />
Quando lo spazio del disco diventa tutto non partizionato allora possiamo procedere alla creazione della nostra partizione ntfs. </p>
<p><br/><br />
<img src="http://www.bits4beats.it/wp-content/uploads/2010/09/gparted_01.jpg" alt="" title="gparted_01" class="aligncenter size-full wp-image-904" /></p>
<p>Con il tasto destro sullo spazio disponibile scegliamo a questo punto crea partizione e come Filesystem &#8220;ntfs&#8221; (abilitato grazie a ntfsprogs).</p>
<p><img src="http://www.bits4beats.it/wp-content/uploads/2010/09/gparted_02.jpg" alt="" title="gparted_02" class="aligncenter size-full wp-image-904" /></p>
<p>Alla fine bisogna confermare le operazioni tramite il tasto &#8220;Apply&#8221;.</p>
<p><img src="http://www.bits4beats.it/wp-content/uploads/2010/09/gparted_03.jpg" alt="" title="gparted_03" class="aligncenter size-full wp-image-904" /></p>
</li>
<li>invocazione del comando <em>sudo ntfslabel /dev/sdb1 <ETICHETTA></em> per etichettare il disco in modo tale da distinguerlo facilmente dagli altri dischi rimovibili disponibili.</li>
</ul>
<p>A questo punto il disco dovrebbe essere disponibile per il mount su Linux e Windows con il nome dell&#8217;etichetta che abbiamo scelto.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bits4beats.it/linux/formattazione-di-un-disco-con-il-file-system-type-ntfs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java: misurare i tempi di esecuzione delle nostre procedure</title>
		<link>http://www.bits4beats.it/java/java-misurare-i-tempi-di-esecuzione-delle-nostre-procedure/</link>
		<comments>http://www.bits4beats.it/java/java-misurare-i-tempi-di-esecuzione-delle-nostre-procedure/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 21:21:23 +0000</pubDate>
		<dc:creator>ROb</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Sviluppo web]]></category>
		<category><![CDATA[auditing]]></category>
		<category><![CDATA[metodi]]></category>
		<category><![CDATA[metriche]]></category>
		<category><![CDATA[misurazione]]></category>
		<category><![CDATA[procedure]]></category>
		<category><![CDATA[timing]]></category>

		<guid isPermaLink="false">http://www.bits4beats.it/?p=872</guid>
		<description><![CDATA[Spesso mi sono trovato nella situazione di voler possedere uno strumento che mi permettesse di misurare i tempi di esecuzione di una procedura, di un metodo di una classe o di un semplice blocco di codice.

Tutte le volte mi sono scritto delle apposite funzioni, che facevano la differenza tra la data di fine e la [...]]]></description>
			<content:encoded><![CDATA[<p>Spesso mi sono trovato nella situazione di voler possedere uno strumento che mi permettesse di <strong>misurare i tempi di esecuzione di una procedura, di un metodo di una classe o di un semplice blocco di codice</strong>.</p>
<p><img class="alignleft size-full wp-image-880" title="chronometer" src="http://www.bits4beats.it/wp-content/uploads/2010/07/chronometer.png" alt="chronometer" width="128" height="128" /></p>
<p>Tutte le volte mi sono scritto delle apposite funzioni, che facevano la differenza tra la data di fine e la data di inizio della misurazione e poi stampavano il risultato tramite un sistema di logging.</p>
<p>Ieri però, non soddisfatto delle esperienze precedenti, ho cercato un tool che facesse lo sporco lavoro per me, che fosse affidabile e che permettesse di avere un valido<strong> report di visualizzazione dei dati raccolti</strong>.</p>
<p>Eccomi quindi arrivato, non so come (perché dal nome del progetto non sono chiare le finalità della libreria), a <strong>JETM</strong>.<br />
JETM è l&#8217;acronimo di &#8220;<strong>Java™ Execution Time Measurement Library</strong>&#8221; che dichiara di essere &#8220;a small and free library, that helps locating performance problems in existing Java applications.&#8221;</p>
<p>Per integrarla nelle nostre applicazioni è sufficiente inserire il file jar della distribuzione, chiamato<em> jetm-x-x-x.jar</em>, all&#8217;interno del nostro <em>CLASSPATH</em> e fare in modo tale che la configurazione venga inizializzata prima della registrazione delle misurazioni vere e proprie.</p>
<p>Le applicazioni standalone possono inizializzare la configurazione all&#8217;inizio del loro ciclo di esecuzione, le applicazioni web possono affidarsi alla configurazione di <strong>Spring</strong> oppure tramite degli opportuni <strong>ContextListener</strong> definiti nel file <em>web.xml</em>.</p>
<p>Il codice banale di inizializzazione è:</p>
<pre class="brush: java;">
	    BasicEtmConfigurator.configure();
	    monitor = EtmManager.getEtmMonitor();
	    monitor.start();
</pre>
<p>a questo punto per poter collezionare una misurazione dobbiamo definire un punto e successivamente determinare la fine della misurazione, in questo modo:</p>
<pre class="brush: java;">
	    EtmPoint point = monitor.createPoint(&quot;Nomedelpuntodicollezione&quot;);
	    // do something...
	    point.collect();
</pre>
<p>Il parametro del metodo <em>createPoint</em> serve per distinguere un punto di misurazione da un altro.<br />
Alla fine della nostra applicazione, o quando lo riteniamo più opportuno, possiamo visualizzare i dati collezionati e al termine stoppare il servizio di monitoraggio:</p>
<pre class="brush: java;">
	    monitor.render(new SimpleTextRenderer(new Locale(&quot;it&quot;)));
	    monitor.stop();
</pre>
<p>Il renderer inizializzato in italiano serve per utilizzare i corretti separatori di decimali e migliaia.<br />
L&#8217;output ottenuto dal metodo render assomiglia a qualcosa di questo tipo:</p>
<p><img class="aligncenter size-full wp-image-879" title="Java(TM) Execution Time Measurement Library" src="http://www.bits4beats.it/wp-content/uploads/2010/07/JavaTM-Execution-Time-Measurement-Library_1279746362924.png" alt="Java(TM) Execution Time Measurement Library" width="732" height="128" /></p>
<p>Il tempo calcolato è espresso in millisecondi.</p>
<p>Se vogliamo anche visualizzare l&#8217;annidamento delle misurazioni/chiamate possiamo passare il parametro &#8220;true&#8221; al metodo di inizializzazione della configurazione:</p>
<pre class="brush: java;">
        BasicEtmConfigurator.configure();
</pre>
<p>Per ulteriori informazioni e tutta la documentazione necessaria fate riferimento al <a href="http://jetm.void.fm/">sito ufficiale del progetto</a> (<a href="http://jetm.void.fm/">http://jetm.void.fm/</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bits4beats.it/java/java-misurare-i-tempi-di-esecuzione-delle-nostre-procedure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Formattazione di un numero decimale in Java</title>
		<link>http://www.bits4beats.it/java/formattazione-di-un-numero-decimale-in-java/</link>
		<comments>http://www.bits4beats.it/java/formattazione-di-un-numero-decimale-in-java/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 13:16:16 +0000</pubDate>
		<dc:creator>ROb</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Sviluppo web]]></category>
		<category><![CDATA[decimalformatter]]></category>
		<category><![CDATA[decimali]]></category>
		<category><![CDATA[locale]]></category>
		<category><![CDATA[numeri]]></category>
		<category><![CDATA[separatori]]></category>

		<guid isPermaLink="false">http://www.bits4beats.it/?p=867</guid>
		<description><![CDATA[Può capitare di dover modificare i caratteri separatori di decimali e migliaia nella formattazione di un numero in Java.
Questa porzione di codice vi permette di farlo sfruttando alcune classi base di Java:

    		DecimalFormatSymbols symbols = new DecimalFormatSymbols();
    		symbols.setDecimalSeparator('$');
        	symbols.setGroupingSeparator('#');

    [...]]]></description>
			<content:encoded><![CDATA[<p>Può capitare di dover modificare i caratteri separatori di <strong>decimali</strong> e <strong>migliaia</strong> nella formattazione di un numero in Java.</p>
<p>Questa porzione di codice vi permette di farlo sfruttando alcune classi base di Java:</p>
<pre class="brush: java;">
    		DecimalFormatSymbols symbols = new DecimalFormatSymbols();
    		symbols.setDecimalSeparator('$');
        	symbols.setGroupingSeparator('#');

        	String format = &quot;###,###.###&quot;;
        	DecimalFormat formatter = new DecimalFormat(format, symbols);
        	formatter.setGroupingSize(3);

        	String numberString = formatter.format(number);
</pre>
<p>In questo caso, un pò per gioco, abbiamo impostato il carattere $ come separatore dei decimali e # come separatore delle migliaia. </p>
<p>La classe DecimalFormat formatta il numero sfruttando il pattern specificato in questo &#8220;###,###.###&#8221;. Il suo costruttore però accetta anche una variabile di tipo DecimalFormatSymbols che può essere inizializzata a partire da uno specifico Locale (avremmo infatti potuto rimpiazzare la chiamata con DecimalFormatSymbols symbols = new DecimalFormatSymbols(new Locale(&#8220;it&#8221;)); ). </p>
<p>A questo punto la variabile symbols può essere utilizzata per sovrascrivere le impostazioni dell&#8217;eventuale Locale utilizzato oppure può essere utilizzato in modo nativo lasciando i separatori di default che, per la lingua italiana, sono tipicamente la &#8220;,&#8221; come separatore dei decimali e il &#8220;.&#8221; come raggruppatore della migliaia (non sempre visualizzato).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bits4beats.it/java/formattazione-di-un-numero-decimale-in-java/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Installare un Kernel modulare su OVH SP-09 Mini con Ubuntu Server 8.04 64bit</title>
		<link>http://www.bits4beats.it/linux/installare-un-kernel-modulare-su-ovh-sp-09-mini-con-ubuntu-server-8-04-64bit/</link>
		<comments>http://www.bits4beats.it/linux/installare-un-kernel-modulare-su-ovh-sp-09-mini-con-ubuntu-server-8-04-64bit/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 22:30:35 +0000</pubDate>
		<dc:creator>ROb</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[compilazione]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[ovh]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[vmware]]></category>

		<guid isPermaLink="false">http://www.bits4beats.it/?p=859</guid>
		<description><![CDATA[Questo titolo così specifico e decisamente prolisso, narra di alcune ore di lavoro spese per ricompilare il kernel per un server in hosting presso OVH su cui è stato successivamente installato VMWare Server come software di virtualizzazione.
OVH è un provider, di origine francese, che da alcuni anni opera a livello commerciale e tecnico anche in [...]]]></description>
			<content:encoded><![CDATA[<p>Questo titolo così specifico e decisamente prolisso, narra di alcune ore di lavoro spese per <strong>ricompilare</strong> il kernel per un server in hosting presso <a href="http://www.ovh.it/" target="_blank"><strong>OVH</strong></a> su cui è stato successivamente installato <a href="http://www.vmware.com/products/server/" target="_blank">VMWare Server</a> come software di virtualizzazione.</p>
<p>OVH è un provider, di origine francese, che da alcuni anni opera a livello commerciale e tecnico anche in Italia. Pur presentando un offerta molto vantaggiosa dal punto di vista economico, garantisce un buonissimo livello qualitativo e di prestazioni (ovviamente dal basso della mia piccola esperienza).</p>
<p>Il supporto è sempre pronto e gentile, i server sono affidabili così come i servizi di cui sono forniti (starò forse portando un pò di sfortuna?).</p>
<p>Lasciando però da parte le qualità del servizio di hosting, è interessante dire come, nei server dedicati a disposizione, sia nell&#8217;offerta standard (chiamata OVH) che in quella entry level (Kimsufi), è possibile installare e far funzionare correttamente VMWare Server per la creazione e gestione di macchine virtuale.</p>
<p>Tutto questo è possibile grazie al fatto che i kernel delle macchine distribuite sono liberamente ricompilabili, inserendo gli opportuni flag di compilazione necessari, e che è possibile configurare le interfacce di rete, di host e guest, per fare in modo che le due macchine si parlino e che la guest veda il mondo e sia raggiungibile da esso.</p>
<p>Il vantaggio intrinseco di avere in hosting una macchina virtuale sopra a una dedicata è quello di poter un domani fare un <strong>upgrade hardware</strong>, aumentando RAM e potenza del processore dell&#8217;host, senza spendere neanche un minuto nella riconfigurazione del guest e garantendo nello stesso tempo tempi di downtime minimi verso i clienti ospitati nel server virtuale.</p>
<p>Con il servizio dell&#8217;<strong>ip-failover</strong> inoltre, possiamo anche spostare fisicamente il nostro server virtuale da un host a un altro. L&#8217;ip assegnato alla macchina virtuale infatti è spostabile a piacere fra i server che abbiamo nel nostro portafoglio prodotti.</p>
<p>In questo articolo non descriverò la procedura ma rimanderò direttamente al post che ho inserito nell&#8217;apposito <a href="http://forum.ovh.it" target="_blank">forum di OVH</a>.</p>
<p>Ecco  i <a href="http://forum.ovh.it/showpost.php?p=14865&amp;postcount=6" target="_blank">passaggi richiesti per l&#8217;installazione</a> direttamente dal post nel forum.</p>
<p>I commenti sull&#8217;articolo potete postarli qui, quelli sui passaggi dei tutorial direttamente nel forum.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bits4beats.it/linux/installare-un-kernel-modulare-su-ovh-sp-09-mini-con-ubuntu-server-8-04-64bit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>logkeys &#8211; il keylogger per Linux</title>
		<link>http://www.bits4beats.it/linux/logkeys-il-keylogger-per-linux/</link>
		<comments>http://www.bits4beats.it/linux/logkeys-il-keylogger-per-linux/#comments</comments>
		<pubDate>Fri, 18 Jun 2010 08:25:57 +0000</pubDate>
		<dc:creator>ROb</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Utilità]]></category>
		<category><![CDATA[keylogger]]></category>
		<category><![CDATA[logkeys]]></category>

		<guid isPermaLink="false">http://www.bits4beats.it/?p=850</guid>
		<description><![CDATA[Dopo numerosi giorni di assenza eccomi tornato a scrivere qualcosa.
I keylogger non sono proprio dei software &#8220;buoni&#8221; anche se molte volte possono tornare comodi per registrare i tasti che abbiamo digitato per la configurazione di un software o per numerosi scopi analoghi.
Il mondo Windows penso che sia pieno di tool di questo tipo (spesso anche [...]]]></description>
			<content:encoded><![CDATA[<p>Dopo numerosi giorni di assenza eccomi tornato a scrivere qualcosa.</p>
<p>I keylogger non sono proprio dei software &#8220;buoni&#8221; anche se molte volte possono tornare comodi per registrare i tasti che abbiamo digitato per la configurazione di un software o per numerosi scopi analoghi.</p>
<p>Il mondo Windows penso che sia pieno di tool di questo tipo (spesso anche non volutamente installati <img src='http://www.bits4beats.it/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  ) mentre per il mondo Unix e GNU/Linux non ci sono moltissime alternative.</p>
<p><img src="http://www.bits4beats.it/wp-content/uploads/2010/06/logo.png" alt="logo logkeys" title="logo logkeys" width="49" height="55" class="alignleft size-full wp-image-852" /></p>
<p>Un progetto sicuramente promettente, anche se ancora in stato alpha, è <strong>logkeys</strong>.<br />
Per la mia Linux Box (Ubuntu Hardy Heron) non esistono i pacchetti precompilati quindi, seguendo la pagina di documentazione del progetto <a href="http://code.google.com/p/logkeys/wiki/Documentation">http://code.google.com/p/logkeys/wiki/Documentation</a> , ho provveduto alla compilazione e alla successiva installazione.</p>
<p>Ecco il mio script per l&#8217;esecuzione di logkeys:</p>
<pre class="brush: bash;">
#!/bin/bash

file=~/Desktop/test.log

case &quot;$1&quot; in
	start)
        echo -en &quot;Starting logkeys, output in ${file}\n&quot;;
        touch ${file};
        logkeys --start --output ${file};
        ;;
   stop)
        echo -en &quot;Stopping logkeys&quot;;
        logkeys --kill;
        more ${file};
esac

exit 0
</pre>
<p>Salvandolo con il nome logkeys.sh e lanciandolo con il comando <em>./logkeys.sh start</em> lo script salva tutti i tasti pigiati nel file <em>~/Desktop/test.lo</em>g.<br />
Per interromperlo è sufficiente usare <em>./logkeys.sh stop</em> .</p>
<p>Mi raccomando fatene buon uso! <img src='http://www.bits4beats.it/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /><br />
Per ulteriori informazioni su logkeys seguite l&#8217;<a href="http://code.google.com/p/logkeys/">homepage del progetto</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bits4beats.it/linux/logkeys-il-keylogger-per-linux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Uno script per conoscere in un attimo il vostro IP su Internet</title>
		<link>http://www.bits4beats.it/linux/uno-script-per-conoscere-in-un-attimo-il-vostro-ip-su-internet/</link>
		<comments>http://www.bits4beats.it/linux/uno-script-per-conoscere-in-un-attimo-il-vostro-ip-su-internet/#comments</comments>
		<pubDate>Fri, 21 May 2010 13:09:15 +0000</pubDate>
		<dc:creator>ROb</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[ip dyndns sed wget internet]]></category>
		<category><![CDATA[script bash]]></category>

		<guid isPermaLink="false">http://www.bits4beats.it/?p=844</guid>
		<description><![CDATA[Esistono moltissimi modi per conoscere il vostro IP su Internet.

Questo script in bash vuole essere solamente l&#8217;ennesima strada.
Per funzionare occorre solamente aver installato wget e avere una connessione Internet (ovviamente) con accesso http verso il sito checkip.dyndns.org.

#!/bin/bash

wget -q -O - http://checkip.dyndns.org &#124; sed -n -e 's/.*&#60;body&#62;\(.*\)&#60;\/body&#62;.*/\1/p' &#124; sed -n -e 's/Current IP Address: //p'

Il suo [...]]]></description>
			<content:encoded><![CDATA[<p>Esistono moltissimi modi per conoscere il vostro <strong>IP</strong> su Internet.</p>
<p><img src="http://www.bits4beats.it/wp-content/uploads/2010/05/icon-ip.gif" alt="ip" title="ip" width="48" height="48" class="alignleft size-full wp-image-845" /></p>
<p>Questo script in bash vuole essere solamente l&#8217;ennesima strada.<br />
Per funzionare occorre solamente aver installato <em>wget</em> e avere una connessione Internet (ovviamente) con accesso <em>http</em> verso il sito <a href="checkip.dyndns.org">checkip.dyndns.org</a>.</p>
<pre class="brush: bash;">
#!/bin/bash

wget -q -O - http://checkip.dyndns.org | sed -n -e 's/.*&lt;body&gt;\(.*\)&lt;\/body&gt;.*/\1/p' | sed -n -e 's/Current IP Address: //p'
</pre>
<p>Il suo funzionamento è veramente semplice.<br />
Si chiede a <a href="http://www.dyndns.org">DynDns</a> il proprio <em>ip</em> tramite una richiesta <em>http</em>. La pagina web ottenuta viene data in pasto a <em>sed</em> che prima estrae il contenuto del tag body e successivamente toglie il prefisso &#8220;Current IP Address: &#8220;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bits4beats.it/linux/uno-script-per-conoscere-in-un-attimo-il-vostro-ip-su-internet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I comandi per conoscere file e pacchetti nelle distribuzioni Debian-based</title>
		<link>http://www.bits4beats.it/linux/i-comandi-per-conoscere-file-e-pacchetti-nelle-distribuzione-debian-based/</link>
		<comments>http://www.bits4beats.it/linux/i-comandi-per-conoscere-file-e-pacchetti-nelle-distribuzione-debian-based/#comments</comments>
		<pubDate>Wed, 19 May 2010 21:10:33 +0000</pubDate>
		<dc:creator>ROb</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[apt-file]]></category>
		<category><![CDATA[apt-get]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[dpkg]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.bits4beats.it/?p=834</guid>
		<description><![CDATA[Il comando apt-file (non installato di default in Ubuntu) è una valida alternativa al tradizional dpkg.
Dopo averlo installato bisogna aggiornare il suo database con il comando (eseguito con i permessi di root): 

apt-file update

Dopo averlo aggiornato, anche un utente con privilegi normali può usare questa utility per conoscere, dato un patterna di ricerca, quali sono [...]]]></description>
			<content:encoded><![CDATA[<p>Il comando <strong>apt-file</strong> (non installato di default in Ubuntu) è una valida alternativa al tradizional <em>dpkg</em>.<br />
Dopo averlo installato bisogna aggiornare il suo database con il comando (eseguito con i permessi di root): </p>
<pre class="brush: bash;">
apt-file update
</pre>
<p>Dopo averlo aggiornato, anche un utente con privilegi normali può usare questa utility per conoscere, dato un patterna di ricerca, quali sono i pacchetti dove ci sono file che rispondono a tale ricerca e quali sono i file in questione. Nella mia installazione per esempio il comando:</p>
<pre class="brush: bash;">
apt-file list quake
</pre>
<p>fornisce il seguente output:</p>
<pre class="brush: bash;">
quake2-data: /usr/share/doc/quake2-data/README.Debian
quake2-data: /usr/share/doc/quake2-data/changelog.Debian.gz
quake2-data: /usr/share/doc/quake2-data/copyright
quake3-data: /usr/share/doc/quake3-data/README.Debian
quake3-data: /usr/share/doc/quake3-data/changelog.Debian.gz
quake3-data: /usr/share/doc/quake3-data/copyright
</pre>
<p>Ci sono cioè 6 file che contengono quel pattern presenti in due pacchetti: <em>quake2-data</em> e <em>quake3-data</em>.</p>
<p>Se vogliamo invece conoscere il contenuto di un pacchetto <strong>.deb</strong> possiamo usare il comando <em>dpkg-deb</em> nel seguente modo:</p>
<pre class="brush: bash;">
bash#roberto@ken ~ &gt;dpkg-deb -c /opt/deb/nautilus-dropbox_0.6.1_i386_ubuntu_8.04.deb
drwxr-xr-x root/root         0 2009-04-17 23:45 ./
drwxr-xr-x root/root         0 2009-04-17 23:45 ./usr/
drwxr-xr-x root/root         0 2009-04-17 23:45 ./usr/lib/
drwxr-xr-x root/root         0 2009-04-17 23:45 ./usr/lib/nautilus/
drwxr-xr-x root/root         0 2009-04-17 23:45 ./usr/lib/nautilus/extensions-2.0/
-rw-r--r-- root/root      1404 2009-04-17 23:45 ./usr/lib/nautilus/extensions-2.0/libnautilus-dropbox.la
-rw-r--r-- root/root     36052 2009-04-17 23:45 ./usr/lib/nautilus/extensions-2.0/libnautilus-dropbox.a
-rw-r--r-- root/root     28996 2009-04-17 23:45 ./usr/lib/nautilus/extensions-2.0/libnautilus-dropbox.so
drwxr-xr-x root/root         0 2009-04-17 23:45 ./usr/share/
drwxr-xr-x root/root         0 2009-04-17 23:45 ./usr/share/applications/
-rw-r--r-- root/root       235 2009-04-17 23:45 ./usr/share/applications/dropbox.desktop
drwxr-xr-x root/root         0 2009-04-17 23:45 ./usr/share/man/
drwxr-xr-x root/root         0 2009-04-17 23:45 ./usr/share/man/man1/
-rw-r--r-- root/root      1284 2009-04-17 23:45 ./usr/share/man/man1/dropbox.1.gz
drwxr-xr-x root/root         0 2009-04-17 23:45 ./usr/share/doc/
drwxr-xr-x root/root         0 2009-04-17 23:45 ./usr/share/doc/nautilus-dropbox/
-rw-r--r-- root/root       780 2008-10-04 04:25 ./usr/share/doc/nautilus-dropbox/README
-rw-r--r-- root/root        68 2008-12-20 03:10 ./usr/share/doc/nautilus-dropbox/AUTHORS
-rw-r--r-- root/root      2363 2009-04-17 23:44 ./usr/share/doc/nautilus-dropbox/copyright
-rw-r--r-- root/root       179 2009-04-17 23:44 ./usr/share/doc/nautilus-dropbox/changelog.gz
-rw-r--r-- root/root        81 2008-07-19 03:12 ./usr/share/doc/nautilus-dropbox/NEWS.gz
drwxr-xr-x root/root         0 2009-04-17 23:45 ./usr/share/icons/
drwxr-xr-x root/root         0 2009-04-17 23:45 ./usr/share/icons/hicolor/
drwxr-xr-x root/root         0 2009-04-17 23:45 ./usr/share/icons/hicolor/24x24/
drwxr-xr-x root/root         0 2009-04-17 23:45 ./usr/share/icons/hicolor/24x24/apps/
-rw-r--r-- root/root      1684 2009-04-17 23:45 ./usr/share/icons/hicolor/24x24/apps/dropbox.png
drwxr-xr-x root/root         0 2009-04-17 23:45 ./usr/share/icons/hicolor/32x32/
drwxr-xr-x root/root         0 2009-04-17 23:45 ./usr/share/icons/hicolor/32x32/apps/
-rw-r--r-- root/root      2157 2009-04-17 23:45 ./usr/share/icons/hicolor/32x32/apps/dropbox.png
drwxr-xr-x root/root         0 2009-04-17 23:45 ./usr/share/icons/hicolor/16x16/
drwxr-xr-x root/root         0 2009-04-17 23:45 ./usr/share/icons/hicolor/16x16/apps/
-rw-r--r-- root/root       918 2009-04-17 23:45 ./usr/share/icons/hicolor/16x16/apps/dropbox.png
drwxr-xr-x root/root         0 2009-04-17 23:45 ./usr/share/icons/hicolor/48x48/
drwxr-xr-x root/root         0 2009-04-17 23:45 ./usr/share/icons/hicolor/48x48/apps/
-rw-r--r-- root/root      3537 2009-04-17 23:45 ./usr/share/icons/hicolor/48x48/apps/dropbox.png
drwxr-xr-x root/root         0 2009-04-17 23:45 ./usr/share/icons/hicolor/22x22/
drwxr-xr-x root/root         0 2009-04-17 23:45 ./usr/share/icons/hicolor/22x22/apps/
-rw-r--r-- root/root      1485 2009-04-17 23:45 ./usr/share/icons/hicolor/22x22/apps/dropbox.png
drwxr-xr-x root/root         0 2009-04-17 23:45 ./usr/share/icons/hicolor/64x64/
drwxr-xr-x root/root         0 2009-04-17 23:45 ./usr/share/icons/hicolor/64x64/apps/
-rw-r--r-- root/root      5016 2009-04-17 23:45 ./usr/share/icons/hicolor/64x64/apps/dropbox.png
drwxr-xr-x root/root         0 2009-04-17 23:45 ./usr/share/icons/hicolor/64x64/emblems/
-rw-r--r-- root/root      4799 2009-04-17 23:45 ./usr/share/icons/hicolor/64x64/emblems/emblem-dropbox-uptodate.png
-rw-r--r-- root/root        42 2009-04-17 23:45 ./usr/share/icons/hicolor/64x64/emblems/emblem-dropbox-syncing.icon
-rw-r--r-- root/root        43 2009-04-17 23:45 ./usr/share/icons/hicolor/64x64/emblems/emblem-dropbox-uptodate.icon
-rw-r--r-- root/root      5053 2009-04-17 23:45 ./usr/share/icons/hicolor/64x64/emblems/emblem-dropbox-unsyncable.png
-rw-r--r-- root/root        45 2009-04-17 23:45 ./usr/share/icons/hicolor/64x64/emblems/emblem-dropbox-unsyncable.icon
-rw-r--r-- root/root      5703 2009-04-17 23:45 ./usr/share/icons/hicolor/64x64/emblems/emblem-dropbox-syncing.png
drwxr-xr-x root/root         0 2009-04-17 23:45 ./usr/bin/
-rwxr-xr-x root/root     91152 2009-04-17 23:45 ./usr/bin/dropbox
</pre>
<p>Per conoscere invece il contenuto di un pacchetto installato si può usare:</p>
<pre class="brush: bash;">
dpkg -L wget

/.
/etc
/etc/wgetrc
/usr
/usr/bin
/usr/bin/wget
/usr/share
/usr/share/doc
/usr/share/doc/wget
/usr/share/doc/wget/AUTHORS
/usr/share/doc/wget/ChangeLog.README
/usr/share/doc/wget/MAILING-LIST
/usr/share/doc/wget/README
/usr/share/doc/wget/copyright
/usr/share/doc/wget/changelog.gz
/usr/share/doc/wget/NEWS.gz
/usr/share/doc/wget/TODO.gz
/usr/share/doc/wget/changelog.Debian.gz
/usr/share/info
/usr/share/info/wget.info.gz
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/wget.1.gz
</pre>
<p>L&#8217;articolo originale è a questo indirizzo: <a href="http://www.cyberciti.biz/faq/view-contents-of-deb-file/ ">http://www.cyberciti.biz/faq/view-contents-of-deb-file/ </a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bits4beats.it/linux/i-comandi-per-conoscere-file-e-pacchetti-nelle-distribuzione-debian-based/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
