<?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>JD&#039;s Blog &#187; Bash</title>
	<atom:link href="http://www.jdsblog.it/tag/bash/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jdsblog.it</link>
	<description>no, Scrubs non c&#039;entra proprio niente.</description>
	<lastBuildDate>Mon, 22 Feb 2010 16:08:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Tema Human per FileZilla</title>
		<link>http://www.jdsblog.it/informatica/1174/tema-human-per-filezilla/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=tema-human-per-filezilla</link>
		<comments>http://www.jdsblog.it/informatica/1174/tema-human-per-filezilla/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 16:13:34 +0000</pubDate>
		<dc:creator>JD</dc:creator>
				<category><![CDATA[CLI]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[console]]></category>
		<category><![CDATA[Filezilla]]></category>
		<category><![CDATA[FTP]]></category>
		<category><![CDATA[terminale]]></category>

		<guid isPermaLink="false">http://www.jdsblog.it/?p=1174</guid>
		<description><![CDATA[Guida su come installare un tema con set di icone Human in FileZilla]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-236" title="Logo Ubuntu" src="http://www.jdsblog.it/wp-content/uploads/2009/06/UbuntuLogo.png" alt="Logo Ubuntu" width="64" height="64" />In questi giorni ho cambiato client FTP: ho sostituito GFTP con FileZilla.</p>
<p>Non ho ancora avuto modo di provarlo a fondo, ma mi sembra gestire meglio il trasferimento di grandi quantità di file (che in genere mette in crisi GFTP).</p>
<p>Una delle cose che però proprio non mi piace di FileZilla è il discutibile set di icone del tema predefinito:</p>
<p><img class="aligncenter size-full wp-image-1175" title="filezilla-classic-theme" src="http://www.jdsblog.it/wp-content/uploads/2009/12/filezilla-classic-theme.png" alt="filezilla-classic-theme" width="613" height="121" />Non mi ritengo un maniaco del design (utilizzo il tema di default di Ubuntu!) ma queste icone proprio non riesco a guardarle  <img src='http://www.jdsblog.it/wp-includes/images/smilies/icon_mrgreen.gif' alt=':mrgreen:' class='wp-smiley' />  .<span id="more-1174"></span></p>
<p>Cercando su google non si trova molto, però insistendo sono giunto a <a href="http://www.gnome-look.org/content/show.php/Humanity+FileZilla?content=114893" target="_blank">questa</a> pagina, dove è possibile scaricare un tema ispirato allo Human di Ubuntu:</p>
<p><img class="aligncenter size-full wp-image-1176" title="filezilla-human-theme" src="http://www.jdsblog.it/wp-content/uploads/2009/12/filezilla-human-theme.png" alt="filezilla-human-theme" width="613" height="121" />Tutta un&#8217;altra cosa <img src='http://www.jdsblog.it/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Purtroppo, per quanto so io, FileZilla non consente l&#8217;installazione di temi direttamente sulla home dell&#8217;utente, pertanto si è costretti a copiare i files del tema nella directory <span style="font-family: courier new,courier;">/usr/share/filezilla/resources</span>.</p>
<p>Per semplificare le cose ho scritto un piccolo script bash che installa automaticamente il tema:</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">#!/bin/bash</span><br />
<br />
<span style="color: #007800;">DIRDEST</span>=<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>filezilla<span style="color: #000000; font-weight: bold;">/</span>resources<br />
<span style="color: #007800;">DIRTHEME</span>=humanity<br />
<br />
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$EUID</span> <span style="color: #660033;">-ne</span> <span style="color: #000000;">0</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Lo script richiede l'esecuzione con i permessi di root.&quot;</span> <span style="color: #000000;">1</span><span style="color: #000000; font-weight: bold;">&gt;&amp;</span><span style="color: #000000;">2</span><br />
&nbsp; &nbsp; <span style="color: #c20cb9; font-weight: bold;">chmod</span> <span style="color: #000000;">777</span> .<span style="color: #000000; font-weight: bold;">/`</span><span style="color: #c20cb9; font-weight: bold;">basename</span> <span style="color: #007800;">$0</span><span style="color: #000000; font-weight: bold;">`</span><br />
&nbsp; &nbsp; <span style="color: #c20cb9; font-weight: bold;">sudo</span> .<span style="color: #000000; font-weight: bold;">/`</span><span style="color: #c20cb9; font-weight: bold;">basename</span> <span style="color: #007800;">$0</span><span style="color: #000000; font-weight: bold;">`</span><br />
&nbsp; &nbsp; <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">0</span><br />
<span style="color: #000000; font-weight: bold;">else</span><br />
&nbsp; &nbsp; <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Permessi di root: OK&quot;</span><br />
<span style="color: #000000; font-weight: bold;">fi</span><br />
<br />
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">!</span> <span style="color: #660033;">-d</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$DIRDEST</span>&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Errore: la directory <span style="color: #007800;">$DIRDEST</span> non esiste&quot;</span><br />
&nbsp; &nbsp; <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span><br />
<span style="color: #000000; font-weight: bold;">fi</span><br />
<br />
<span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #660033;">-vR</span> <span style="color: #007800;">$DIRTHEME</span> <span style="color: #007800;">$DIRDEST</span><br />
<br />
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Installazione terminata&quot;</span><br />
<br />
<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">0</span></div></div>
<p>È possibile scaricarlo, assieme a tutti i files grafici, a questo indirizzo:</p>
<div class='stb-download_box' >Tema Human per FileZilla: <a href="http://dl.dropbox.com/u/202594/varie/filezilla-human-theme.tar.gz" target="_blank">http://dl.dropbox.com/u/202594/varie/filezilla-human-theme.tar.gz</a></div>
<p>Scaricato il file si dovrà decomprimerlo e recarsi nella directory dove sono presenti i files estratti.</p>
<p>A questo punto per installarlo si può utilizzare lo script che ho creato:</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">.<span style="color: #000000; font-weight: bold;">/</span>install.sh</div></div>
<p>o procedere con la semplice copia manuale dei files:</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #660033;">-r</span> humanity <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>filezilla<span style="color: #000000; font-weight: bold;">/</span>resources</div></div>
<p>Copiati i files sarà possibile scegliere in FileZilla il nuovo tema cliccando su Modifica -&gt; Impostazioni -&gt; Temi e selezionando Humanity.</p>
<h3>Installare l&#8217;ultima versione di FileZilla</h3>
<p>Non so voi ma io ho avuto qualche difficoltà ad aggiornare la versione di FileZilla (v3.2.7.2) presente nei repo ufficiali di Ubuntu. Questo perché non esiste un repository ufficiale del progetto. Fortunatamente è possibile trovare una versione più recente (v3.3.0) sul repository di GetDeb.<br />
Le istruzioni su come aggiungere questo repository in karmic si possono trovare in <a href="http://www.jdsblog.it/informatica/1196/repository-ufficiale-getdeb-per-karmic/" target="_blank">questo</a> articolo.</p>
<p>PS</p>
<p>A chi si domandasse come mai ho creato uno script per compiere un&#8217;azione così semplice rispondo che l&#8217;ho fatto per evitare di ricercare, ad ogni installazione del tema, il percorso in cui copiare i files.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jdsblog.it/informatica/1174/tema-human-per-filezilla/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Ripristinare rapidamente GRUB2 dopo aver reinstallato Windows</title>
		<link>http://www.jdsblog.it/informatica/963/ripristinare-rapidamente-grub2-dopo-aver-reinstallato-windows/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=ripristinare-rapidamente-grub2-dopo-aver-reinstallato-windows</link>
		<comments>http://www.jdsblog.it/informatica/963/ripristinare-rapidamente-grub2-dopo-aver-reinstallato-windows/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 09:40:47 +0000</pubDate>
		<dc:creator>JD</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[console]]></category>
		<category><![CDATA[GRUB2]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[terminale]]></category>

		<guid isPermaLink="false">http://www.jdsblog.it/?p=963</guid>
		<description><![CDATA[Breve Howto su come ripristinare GRUB2 in seguito ad una reinstallazione di Windows.]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-236" title="Logo Ubuntu" src="http://www.jdsblog.it/wp-content/uploads/2009/06/UbuntuLogo.png" alt="Logo Ubuntu" width="64" height="64" />Oggi ho <strong>reinstallato Windows</strong> sul mio portatile e, come da tradizione, il <strong>bootloader di Ubuntu</strong> è stato <strong>piallato</strong>.<br />
In passato ripristinare GRUB era un gioco da ragazzi: era sufficiente avviare il LiveCD e digitare in un terminare <span style="font-family: courier new,courier;">sudo grub</span>, <span style="font-family: courier new,courier;">root (hd0,4)</span>, <span style="font-family: courier new,courier;">setup (hd0)</span> ed tutto tornava alla normalità.<br />
Con GRUB2 le cose si sono apparentemente complicate ed essendo ancora una novità le guide che si trovano in rete spesso sono lunghe e inutilmente complesse. Questo perché molte guide, anziché spiegare come ripristinare GRUB2 dopo una reinstallazione di Windows, spiegano come configurarlo da zero come se non fosse mai stato installato.</p>
<p>In questo articolo illustrerò <strong>come riabilitare GRUB2</strong> dando per scontato che<strong> prima dell’installazione di Windows</strong> fosse già <strong>perfettamente configurato e funzionante</strong>.<span id="more-963"></span></p>
<p>Il primo passo è identico a quello del vecchio GRUB: <strong>avviare il LiveCD</strong> di Ubuntu 9.10 Karmic Koala (o successive).</p>
<p>A questo punto si deve <strong>aprire un terminale</strong> e <strong>digitare i seguenti comandi</strong> sostituendo la <span style="font-family: courier new,courier;">L</span> di <span style="font-family: courier new,courier;">sdLR</span> con la lettera del disco e la <span style="font-family: courier new,courier;">R</span> con il numero della partizione di root della vostra installazione<sup><a href="http://www.jdsblog.it/informatica/963/ripristinare-rapidamente-grub2-dopo-aver-reinstallato-windows/#footnote_0_963" id="identifier_0_963" class="footnote-link footnote-identifier-link" title="Per visualizzare l&rsquo;elenco delle partizioni potete utilizzare il comando sudo fdisk -l">1</a></sup>:</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">mount</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sdLR <span style="color: #000000; font-weight: bold;">/</span>mnt</div></div>
<p><strong>Opzionale:</strong> Se si ha una partizione di boot separata montare anche quella sostituendo la <span style="font-family: courier new,courier;">B</span> con il numero della partizione di boot:</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">mount</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sdLB <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>boot</div></div>
<p>Ora per ripristinare GRUB2 è sufficiente lanciare questo comando (purtroppo non molto facile da ricordare):</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> grub-install <span style="color: #660033;">--root-directory</span>=<span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sdL</div></div>
<p>A questo punto riavviando il PC dovreste riavere GRUB2 come bootloader <img src='http://www.jdsblog.it/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p>Come si può notare, se non si ha una partizione di boot separata, <strong>sono sufficienti due soli comandi per ripristinare GRUB2</strong>, naturalmente dando per scontato che il file <span style="font-family: courier new,courier;">grub.cfg</span> sia già presente e correttamente configurato.</p>
<p><strong>Opzionale:</strong> Se si è aggiornata o aggiunta una nuova versione di Windows sarà necessario <strong>aggiornare</strong> anche <strong>il menu di GRUB2</strong>.<br />
Essendo <strong>sconsigliata la modifica manuale</strong> del <span style="font-family: courier new,courier;">grub.cfg</span> conviene utilizzare il tool <span style="font-family: courier new,courier;">os-prober</span>:</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> os-prober</div></div>
<p>Lanciando questo comando <span style="font-family: courier new,courier;">os-prober</span> <strong>rileverà i vari sistemi operativi</strong> disponibili sul vostro computer. Una volta terminata la scansione si dovrà procedere con la <strong>rigenerazione del file</strong> <span style="font-family: courier new,courier;">grub.cfg</span> utilizzando questo comando:</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> update-grub</div></div>
<div class='stb-info_box' >Per problemi tecnici dovuti al mio ex fornitore di Web Hosting sono andate perse tutte le modifiche degli ultimi 5 giorni (articoli, commenti, correzioni) Sono quindi stato costretto a ripubblicare questo articolo, domando scusa per gli eventuali disagi che questa azione può comportare. Sfortunatamente è cambiato anche il post id associato all&#8217;articolo e, conseguentemente, l&#8217;indirizzo dell&#8217;articolo stesso, vi invito pertanto ad aggiornare gli eventuali preferiti.</div>
<strong><p>Note all'articolo:</strong></p><ol class="footnotes"><li id="footnote_0_963" class="footnote">Per visualizzare l’elenco delle partizioni potete utilizzare il comando <span style="font-family: courier new,courier;">sudo fdisk -l</span></li></ol>]]></content:encoded>
			<wfw:commentRss>http://www.jdsblog.it/informatica/963/ripristinare-rapidamente-grub2-dopo-aver-reinstallato-windows/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Generare password casuali da console</title>
		<link>http://www.jdsblog.it/informatica/478/generare-password-casuali-da-console/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=generare-password-casuali-da-console</link>
		<comments>http://www.jdsblog.it/informatica/478/generare-password-casuali-da-console/#comments</comments>
		<pubDate>Sat, 07 Nov 2009 14:50:25 +0000</pubDate>
		<dc:creator>JD</dc:creator>
				<category><![CDATA[CLI]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[CHMOD]]></category>
		<category><![CDATA[console]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[password]]></category>
		<category><![CDATA[terminale]]></category>

		<guid isPermaLink="false">http://www.jdsblog.it/?p=478</guid>
		<description><![CDATA[Alcuni metodi per generare password casuali sfruttando una console GNU/Linux]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-240" title="Tango Terminal" src="http://www.jdsblog.it/wp-content/uploads/2009/06/icon.tango.terminal.png" alt="Tango Terminal" width="64" height="64" />Mi è capitato diverse volte di avere la necessità di generare una <strong>password casuale</strong> e in passato la soluzione più veloce che utilizzavo di solito era <strong>digitare in Google</strong> &#8220;random password generator&#8221;. Questa soluzione però oltre ad essere <strong>scomoda</strong> (richiede una connessione ad internet ed un browser web) <strong>non è</strong> neanche molto <strong>sicura</strong>.<br />
In Ubuntu, e in genere in qualunque altra distribuzione GNU/Linux, esistono <strong>metodi molto più sicuri e pratici</strong> per generare una password.<span id="more-478"></span></p>
<p>Il più comodo e veloce consiste nell&#8217;<strong>installare il pacchetto pwgen</strong>:</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> pwgen</div></div>
<p>Questo software permette di generare <strong>password facili da ricordare</strong>, pur mantenendo alto il livello di sicurezza. Se invece non interessa generare password facilmente memorizzabili e si preferisce avere delle <strong>password completamente random</strong> si può utilizzare l&#8217;<strong>opzione <span style="font-family: courier new,courier;">-s</span></strong>. Sono presenti <strong>molte altre opzioni</strong> che permettono ad esempio di evitare caratteri simili (1 e l, 0 e O) e di impostare la lunghezza e il numero delle password generate. Per l&#8217;elenco di tutte le opzioni disponibili consiglio la lettura della <strong>manpage di pwgen</strong>:</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">man</span> pwgen</div></div>
<p>Se non è possibile/non si vuole installare il pacchetto pwgen è possibile <strong>generare</strong> delle <strong>buone password</strong> casuali sfruttando i tools messi a disposizione <strong>dalla console</strong>.</p>
<p>Ad esempio per <strong>generare 4 password di 8 caratteri alfanumerici</strong> sarà sufficiente digitare in un terminale la seguente stringa:</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>urandom <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">tr</span> <span style="color: #660033;">-dc</span> <span style="color: #ff0000;">'a-zA-Z0-9'</span> <span style="color: #000000; font-weight: bold;">|</span> fold <span style="color: #660033;">-w</span> <span style="color: #000000;">8</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">head</span> <span style="color: #660033;">-n</span> <span style="color: #000000;">4</span></div></div>
<p>Per aumentare il livello di sicurezza della password è possibile <strong>aggiungere altri caratteri non alfanumerici</strong>, come ad esempio <span style="font-family: courier new,courier;">_!@#$%^&amp;*()+[]|:&lt;&gt;?=</span>:</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>urandom <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">tr</span> <span style="color: #660033;">-dc</span> <span style="color: #ff0000;">'a-zA-Z0-9-_!@#$%^&amp;*()+[]|:&lt;&gt;?='</span> <span style="color: #000000; font-weight: bold;">|</span> fold <span style="color: #660033;">-w</span> <span style="color: #000000;">8</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">head</span> <span style="color: #660033;">-n</span> <span style="color: #000000;">4</span></div></div>
<p>Se si vuole <strong>essere sicuri che</strong> la password <strong>contenga almeno un carattere speciale</strong> è necessario aggiungere un grep al comando precedente:</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>urandom <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">tr</span> <span style="color: #660033;">-dc</span> <span style="color: #ff0000;">'a-zA-Z0-9-_!@#$%^&amp;*()+[]|:&lt;&gt;?='</span> <span style="color: #000000; font-weight: bold;">|</span> fold <span style="color: #660033;">-w</span> <span style="color: #000000;">8</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #660033;">-i</span> <span style="color: #ff0000;">'[_!@#$%^&amp;*()+|:&lt;&gt;?=]'</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">head</span> <span style="color: #660033;">-n</span> <span style="color: #000000;">4</span></div></div>
<h3>Perché urandom al posto di random?</h3>
<p>Qualcuno potrebbe domandarsi perché utilizzo il &#8220;meno sicuro&#8221; urandom al posto di random. Prima di spiegare il motivo riporto la manpage dei due dispositivi kernel:</p>
<div class="codecolorer-container text geshi codecolorer-noborder" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">I file speciali a caratteri /dev/random e /dev/urandom (presenti sin da<br />
Linux 1.3.30) forniscono un'interfaccia al &nbsp;generatore &nbsp;del &nbsp;kernel &nbsp;di<br />
numeri aleatori. Il file /dev/random ha numero primario 1 e numero sec‐<br />
ondario 8. Il file /dev/urandom ha numero primario 1 &nbsp;e &nbsp;numero &nbsp;secon‐<br />
dario 9.<br />
<br />
Il &nbsp;generatore &nbsp;di numeri aleatori raccoglie rumore di fondo dai device<br />
driver e da altre sorgenti nel pozzo d'entropia. Il generatore mantiene<br />
anche &nbsp;una &nbsp;stima del numero di bit di rumore nel pozzo di entropia. Da<br />
questo pozzo di entropia vengono creati i numeri aleatori.<br />
<br />
Quando viene letto, /dev/random restituisce &nbsp;solo &nbsp;un &nbsp;numero &nbsp;di &nbsp;byte<br />
aleatori &nbsp;compatibili &nbsp;con &nbsp;la &nbsp;stima &nbsp;dei &nbsp;bit &nbsp;di &nbsp;rumore &nbsp;nel &nbsp;pozzo<br />
d'entropia. /dev/random dovrebbe essere adatto ad usi che richiedono un<br />
alto &nbsp;grado &nbsp;di &nbsp;aleatorietà, &nbsp;come la generazione di chiavi. Quando il<br />
pozzo d'entropia è vuoto, le letture di &nbsp;/dev/random &nbsp;vengono &nbsp;bloccate<br />
finché non viene raccolto abbastanza rumore ambientale.<br />
<br />
Quando &nbsp;viene letto, /dev/urandom restituisce tanti byte quanti ne sono<br />
stati richiesti. Di conseguenza, se non &nbsp;c'è &nbsp;abbastanza &nbsp;entropia &nbsp;nel<br />
pozzo &nbsp;d'entropia, i valori restituiti sono teoricamente vulnerabili ad<br />
un attacco criptografico sull'algoritmo usato &nbsp;dal &nbsp;dispositivo. &nbsp;Nella<br />
letteratura &nbsp;(non coperta da segreto militare) non c'è conoscenza di un<br />
metodo per fare ciò, ma è in teoria &nbsp;possibile &nbsp;che &nbsp;esista &nbsp;un &nbsp;simile<br />
metodo. &nbsp;Se questo è fonte di problemi per il proprio programma, si usi<br />
invece /dev/random.</div></div>
<p>Leggendo la manpage si intuisce che <strong>urandom è più veloce</strong> perché «restituisce tanti byte quanti ne sono stati richiesti» a discapito del grado  di  aleatorietà, ma quanto è più veloce? Scopriamolo con <strong>un test pratico</strong>.</p>
<p>Prima proviamo a generare una <strong>password di 10 caratteri sfruttando urandom</strong>:</p>
<div class="codecolorer-container text geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ time cat /dev/urandom | tr -dc 'a-zA-Z0-9-_!@#$%^&amp;*()+{}|:&lt;&gt;?=' | fold -w 10 | grep -i '[!@#$%^&amp;*()_+{}|:&lt;&gt;?=]' | head -n 1<br />
bzNHI}6w:h<br />
<br />
real&nbsp; &nbsp; 0m0.024s<br />
user&nbsp; &nbsp; 0m0.004s<br />
sys 0m0.024s</div></div>
<p>E ora facciamo la <strong>stessa cosa con random</strong>:</p>
<div class="codecolorer-container text geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ time cat /dev/random | tr -dc 'a-zA-Z0-9-_!@#$%^&amp;*()+{}|:&lt;&gt;?=' | fold -w 10 | grep -i '[!@#$%^&amp;*()_+{}|:&lt;&gt;?=]' | head -n 1<br />
^C<br />
<br />
real&nbsp; &nbsp; 131m14.400s<br />
user&nbsp; &nbsp; 0m0.012s<br />
sys 0m0.036s</div></div>
<p><strong>La differenza è <span style="color: #ff0000;">abissale</span></strong>: urandom ha impiegato solamente <strong>24 millesimi di secondo</strong> (0.024 secondi) mentre random <strong>dopo 2 ore 11 minuti e 14 secondi</strong> non aveva ancora terminato! Ho <strong>interrotto manualmente</strong> con un CTRL+C. E il test non è stato fatto su un 486SX a 25MHz, ma su un <strong>Intel Core2 Quad Processor Q9450</strong>.<br />
Considerando che «nella letteratura (non coperta da segreto militare) <strong>non c&#8217;è conoscenza di un metodo</strong>» per effettuare un attacco criptografico sui valori generati da urandom, mi sento di consigliare <strong>urandom per la generazione di password</strong> <img src='http://www.jdsblog.it/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jdsblog.it/informatica/478/generare-password-casuali-da-console/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Far riconoscere l&#8217;HTC Dream G1 all&#8217;Android SDK/ADB/Fastboot sotto Ubuntu 9.10 Karmic Koala</title>
		<link>http://www.jdsblog.it/informatica/797/far-riconoscere-lhtc-dream-g1-allandroid-sdkadbfastboot-sotto-ubuntu-9-10-karmic-koala/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=far-riconoscere-lhtc-dream-g1-allandroid-sdkadbfastboot-sotto-ubuntu-9-10-karmic-koala</link>
		<comments>http://www.jdsblog.it/informatica/797/far-riconoscere-lhtc-dream-g1-allandroid-sdkadbfastboot-sotto-ubuntu-9-10-karmic-koala/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 10:54:55 +0000</pubDate>
		<dc:creator>JD</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[ADB]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[Fastboot]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[HTC Dream]]></category>

		<guid isPermaLink="false">http://www.jdsblog.it/?p=797</guid>
		<description><![CDATA[Guida su come far riconoscere un HTC Dream G1 all'Android SDK/ADB/Fastboot sotto Ubuntu 9.10 Karmic Koala]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-803" title="Logo Android" src="http://www.jdsblog.it/wp-content/uploads/2009/10/android_logo.png" alt="Logo Android" width="64" height="64" />Sono oramai sette giorni esatti che smanetto col mio nuovo HTC Dream G1. E solo ora ho trovato il tempo per scrivere qualche guida che lo riguarda.</p>
<p>In questo articolo cercherò di spiegare come <strong>far riconoscere il Dream all&#8217;Android SDK e ai tools ADB e Fastboot sotto Ubuntu 9.10 Karmic Koala</strong><sup><a href="http://www.jdsblog.it/informatica/797/far-riconoscere-lhtc-dream-g1-allandroid-sdkadbfastboot-sotto-ubuntu-9-10-karmic-koala/#footnote_0_797" id="identifier_0_797" class="footnote-link footnote-identifier-link" title="questa procedura dovrebbe funzionare comunque anche sotto Ubuntu 9.04 Jaunty Jackalope">1</a></sup>.<span id="more-797"></span></p>
<p>Per prima cosa si deve scaricare l&#8217;<a href="http://developer.android.com/sdk/">Android SDK per Linux</a>. Terminato il download e decompresso l&#8217;archivio ci si deve recare con un terminale nella sottodirectory <span style="font-family: courier new,courier;">tools/</span> dell&#8217;SDK che contiene l&#8217;eseguibile <span style="font-family: courier new,courier;">adb</span>.</p>
<p>Adesso sarà necessario digitare i seguenti comandi per permettere il corretto riconoscimento del device da parte di Ubuntu:</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">su</span></div></div>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'SUBSYSTEM==&quot;usb&quot;, SYSFS{idVendor}==&quot;0bb4&quot;, MODE=&quot;0666&quot;'</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">tee</span> <span style="color: #660033;">-a</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>udev<span style="color: #000000; font-weight: bold;">/</span>rules.d<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">50</span>-android.rules</div></div>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'SUBSYSTEM==&quot;usb&quot;, ATTR{idVendor}==&quot;0bb4&quot;, MODE=&quot;0666&quot;'</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">tee</span> <span style="color: #660033;">-a</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>udev<span style="color: #000000; font-weight: bold;">/</span>rules.d<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">90</span>-android.rules</div></div>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">exit</span></div></div>
<p>Con i comandi sopra riportati si sono creati due files contenenti delle regole per il device manager del kernel Linux, ora si devono rendere eseguibili questi files:</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chmod</span> a+rx <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>udev<span style="color: #000000; font-weight: bold;">/</span>rules.d<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">50</span>-android.rules</div></div>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chmod</span> a+rx <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>udev<span style="color: #000000; font-weight: bold;">/</span>rules.d<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">90</span>-android.rules</div></div>
<p>A questo punto rimane solo da riavviare udev:</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> service udev restart</div></div>
<p>Per poter comunicare con adb è necessario <strong>abilitare USB Debugging</strong> sull’HTC Dream.</p>
<p>Prendendo in mano il Dream e partendo dalla Home compiamo in sequenza le seguenti azioni: Tasto Menu -&gt; Impostazioni -&gt; Applicazioni -&gt; Sviluppo -&gt; Abilitare Debug USB.</p>
<p>Se già non lo è, collegare il Dream tramite il cavo USB e, accertandosi di essere nella directory <span style="font-family: courier new,courier;">tools/</span> dell&#8217;Android SDK, digitiare:</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> .<span style="color: #000000; font-weight: bold;">/</span>adb kill-server</div></div>
<p>Seguito da un:</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> .<span style="color: #000000; font-weight: bold;">/</span>adb devices</div></div>
<p>L&#8217;output del comando dovrebbe restituire un qualcosa di simile:</p>
<p style="padding-left: 30px;">
<div class="codecolorer-container text geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">* daemon not running. starting it now *<br />
* daemon started successfully *<br />
List of devices attached<br />
HT93XXXXXXXX&nbsp; &nbsp; device</div></div>
<p>A questo punto il vostro HTC Dream G1 dovrebbe essere perfettamente riconosciuto da qualunque tool.</p>
<h2>Fastboot</h2>
<p>Approfitto di questo articolo per riportare anche le semplici istruzioni su come scaricare e avviare fastboot sotto Linux.</p>
<p>I passi sono veramente semplici: si deve scaricare il tool da <a href="http://developer.htc.com/adp.html#s2" target="_blank"><strong>questo</strong></a> indirizzo, decomprimerlo nella sottodirectory <span style="font-family: courier new,courier;">tools/</span> dell&#8217;Android SDK e assegnargli i permessi di esecuzione (tasto destro sul file, Proprietà, Permessi e mettere la spunta su «Consentire l&#8217;<span style="text-decoration: underline;">e</span>secuzione del file come programma»).</p>
<strong><p>Note all'articolo:</strong></p><ol class="footnotes"><li id="footnote_0_797" class="footnote">questa procedura dovrebbe funzionare comunque anche sotto Ubuntu 9.04 Jaunty Jackalope</li></ol>]]></content:encoded>
			<wfw:commentRss>http://www.jdsblog.it/informatica/797/far-riconoscere-lhtc-dream-g1-allandroid-sdkadbfastboot-sotto-ubuntu-9-10-karmic-koala/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>JDInstaller: ovvero come riempire di software l&#8217;installazione base di Ubuntu</title>
		<link>http://www.jdsblog.it/informatica/551/jdinstaller-ovvero-come-riempire-di-software-linstallazione-base-di-ubuntu/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=jdinstaller-ovvero-come-riempire-di-software-linstallazione-base-di-ubuntu</link>
		<comments>http://www.jdsblog.it/informatica/551/jdinstaller-ovvero-come-riempire-di-software-linstallazione-base-di-ubuntu/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 14:46:54 +0000</pubDate>
		<dc:creator>JD</dc:creator>
				<category><![CDATA[CLI]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[PPA]]></category>
		<category><![CDATA[repository]]></category>

		<guid isPermaLink="false">http://www.jdsblog.it/?p=551</guid>
		<description><![CDATA[Ho appena finito di pubblicare una pagina dedicata a JDInstaller, uno script che ho creato e che permette di installare in modo automatico tutta una serie di applicazioni secondo me indispensabili/utili che mancano nell&#8217;installazione di default di Ubuntu (es.: plugin flash, vim, skype, vlc, ubuntu-restricted-extras, etc). Per maggiori dettagli e per scaricare lo script cliccate [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-236" title="Logo Ubuntu" src="http://www.jdsblog.it/wp-content/uploads/2009/06/UbuntuLogo.png" alt="Logo Ubuntu" width="64" height="64" />Ho appena finito di pubblicare una pagina dedicata a JDInstaller, uno script che ho creato e che permette di installare in modo automatico tutta una serie di applicazioni secondo me indispensabili/utili che mancano nell&#8217;installazione di default di Ubuntu (es.: plugin flash, vim, skype, vlc, ubuntu-restricted-extras, etc).</p>
<p>Per maggiori dettagli e per scaricare lo script cliccate su <a href="http://www.jdsblog.it/jdinstaller/">JDInstaller</a>, nel menu in alto a fianco del pulsante Home.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jdsblog.it/informatica/551/jdinstaller-ovvero-come-riempire-di-software-linstallazione-base-di-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hosting gratuito Django (e non solo) con DB PostgreSQL e accesso SSH</title>
		<link>http://www.jdsblog.it/informatica/375/hosting-gratuito-django-e-non-solo-con-db-postgresql-e-accesso-ssh/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=hosting-gratuito-django-e-non-solo-con-db-postgresql-e-accesso-ssh</link>
		<comments>http://www.jdsblog.it/informatica/375/hosting-gratuito-django-e-non-solo-con-db-postgresql-e-accesso-ssh/#comments</comments>
		<pubDate>Fri, 10 Jul 2009 09:35:56 +0000</pubDate>
		<dc:creator>JD</dc:creator>
				<category><![CDATA[Hosting]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Web design]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[Web Hosting]]></category>

		<guid isPermaLink="false">http://www.jdsblog.it/?p=375</guid>
		<description><![CDATA[Breve recensione di un ottimo servizio di free hosting Django, con tanto di accesso SSH e database PostgreSQL!]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-376 alignright" title="alwaysdata.com" src="http://www.jdsblog.it/wp-content/uploads/2009/07/alwaysdata.png" alt="alwaysdata.com" width="80" height="86" />Nei mesi scorsi mi son trovato a dover realizzare un sito in Django, un framework open source per lo sviluppo di applicazioni web, scritto in linguaggio Python, seguendo il pattern <a href="http://it.wikipedia.org/wiki/Model-View-Controller" target="_blank">Model-View-Controller</a>. Devo dire di essere rimasto favorevolmente stupito da questo framework, veramente semplice e potente.</p>
<p>Uno dei più grandi inconvenienti è però la carenza quasi totale di hosting gratuiti (e il prezzo generalmente elevato di quelli a pagamento).<br />
Dopo svariate ricerche su google sono incappato in quello che credo essere l&#8217;unico hosting gratuito di Django per ora esistente: <a href="http://www.alwaysdata.com/" target="_blank">www.alwaysdata.com</a>.</p>
<p>Essendo l&#8217;unico servizio ad offrire free hosting non mi aspettavo grandi cose. Mi sono però dovuto ricredere alla grande. L&#8217;azienda francese offre infatti il supporto a tutte le principali versioni di Django  (1.0.2 e SVN compresa), oltre ad <strong>accesso SSH</strong><strong> <img src='http://www.jdsblog.it/wp-includes/images/smilies/icon_eek.gif' alt='8-O' class='wp-smiley' /> </strong>, database PosgreSQL e dominio di terzo livello!<span id="more-375"></span></p>
<p>Ma ecco in dettaglio cosa offre il pacchetto gratuito:</p>
<ul>
<li>Spazio su disco: 10 MB <span style="font-size: x-small;">(non è tanto ma meglio di niente&#8230; Comunque basta hostare i file di grandi dimensioni altrove <img src='http://www.jdsblog.it/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> )</span></li>
<li>Traffico mensile: 1 GB</li>
<li>Memoria: 40 MB</li>
<li>PHP 5 con  <strong>php.ini personalizzabile</strong></li>
<li><strong>Python 2.4 e 2.5</strong></li>
<li>Ruby 1.8.6</li>
<li>Perl 5.8.8</li>
<li><strong>Supporto a Django (0.90, </strong><strong>0.91.3, </strong><strong>0.95.4, </strong><strong>0.96.3, </strong><strong>1.0, 1.0.1, 1.0.2, SVN) </strong></li>
<li>Supporto a Ruby on Rails</li>
<li>MySQL 5.0</li>
<li><strong>PostgreSQL 8.3</strong> et PostGIS</li>
<li>Numero di database illimitato</li>
<li>phpMyAdmin e phpPgAdmin</li>
<li>Supporto IMAP(S), POP3(S), SMTP(S)</li>
<li>Dominio di terzo livello su alwaysdata.net</li>
<li><strong>Completo accesso SSH (vim, emacs, gcc, mutt, lynx, etc)<br />
</strong></li>
<li>Uptime &gt; 99,9 %</li>
<li>Accesso FTP, SFTP, WebDAV</li>
<li>Supporto tramite ticket 7 giorni su 7</li>
</ul>
<p>Portare il mio progetto sviluppato interamente in locale su alwaysdata.com è stato semplicissimo. Mi sono limitato ad eseguire una rapida ricerca nel wiki dell&#8217;azienda dove ho trovato le istruzioni passo passo in francese. Mi sono preso la briga di tradurre la <a href="http://wiki.alwaysdata.com/wiki/D%C3%A9ployer_une_application_Django" target="_blank">sezione del wiki relativa a Django</a> per chi non masticasse bene la lingua dei cugini d&#8217;oltralpe:</p>
<h2>Importare una applicazione Django</h2>
<h4>Primo passo</h4>
<p>Innanzi tutto è necessario creare una directory <span style="font-family: courier new,courier;">public</span> nella radice del vostro progetto. All&#8217;interno va creato il file <span style="font-family: courier new,courier;">django.fcgi</span> contenente il seguente codice python:</p>
<div class="codecolorer-container python geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">#!/usr/bin/python</span><br />
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">os</span>, <span style="color: #dc143c;">sys</span><br />
<br />
_PROJECT_DIR = <span style="color: #dc143c;">os</span>.<span style="color: black;">path</span>.<span style="color: black;">dirname</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">os</span>.<span style="color: black;">path</span>.<span style="color: black;">dirname</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">os</span>.<span style="color: black;">path</span>.<span style="color: black;">abspath</span><span style="color: black;">&#40;</span>__file__<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><br />
<span style="color: #dc143c;">sys</span>.<span style="color: black;">path</span>.<span style="color: black;">insert</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>, _PROJECT_DIR<span style="color: black;">&#41;</span><br />
<span style="color: #dc143c;">sys</span>.<span style="color: black;">path</span>.<span style="color: black;">insert</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>, <span style="color: #dc143c;">os</span>.<span style="color: black;">path</span>.<span style="color: black;">dirname</span><span style="color: black;">&#40;</span>_PROJECT_DIR<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><br />
<br />
_PROJECT_NAME = _PROJECT_DIR.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'/'</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span>-<span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><br />
<span style="color: #dc143c;">os</span>.<span style="color: black;">environ</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">'DJANGO_SETTINGS_MODULE'</span><span style="color: black;">&#93;</span> = <span style="color: #483d8b;">&quot;%s.settings&quot;</span> <span style="color: #66cc66;">%</span> _PROJECT_NAME<br />
<br />
<span style="color: #ff7700;font-weight:bold;">from</span> django.<span style="color: black;">core</span>.<span style="color: black;">servers</span>.<span style="color: black;">fastcgi</span> <span style="color: #ff7700;font-weight:bold;">import</span> runfastcgi<br />
runfastcgi<span style="color: black;">&#40;</span>method=<span style="color: #483d8b;">&quot;threaded&quot;</span>, daemonize=<span style="color: #483d8b;">&quot;false&quot;</span><span style="color: black;">&#41;</span></div></div>
<p>Vanno poi dati i diritti di esecuzione al file (tramite SSH : <span style="font-family: courier new,courier;">chmod +x django.fcgi</span>).</p>
<h4>Secondo passo</h4>
<p>Sempre all&#8217;interno della directory <span style="font-family: courier new,courier;">public</span>, creare un file <span style="font-family: courier new,courier;">.htaccess</span> contenente:</p>
<div class="codecolorer-container text geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">AddHandler fcgid-script .fcgi<br />
RewriteEngine On<br />
RewriteCond %{REQUEST_FILENAME} !-f<br />
RewriteRule ^(.*)$ django.fcgi/$1 [QSA,L]</div></div>
<h4>Terzo passo</h4>
<p>Questo passo è necessario solo se si utilizza l&#8217;interfaccia di amministrazione di Django.</p>
<p>Sempre all&#8217;interno della directory <span style="font-family: courier new,courier;">public</span>, creare un link simbolico che punta ai file media dell&#8217;admin Django:</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">ln</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>python<span style="color: #000000; font-weight: bold;">/</span>django<span style="color: #000000; font-weight: bold;">/</span>1.0.2<span style="color: #000000; font-weight: bold;">/</span>django<span style="color: #000000; font-weight: bold;">/</span>contrib<span style="color: #000000; font-weight: bold;">/</span>admin<span style="color: #000000; font-weight: bold;">/</span>media<span style="color: #000000; font-weight: bold;">/</span> media</div></div>
<p>Rimpiazzate eventualmente <span style="font-family: courier new,courier;">1.0.2</span> con la versione di Django che utilizzate.</p>
<h4>Quarto passo</h4>
<p>Per garantire la sicurezza dei vostri file e permettere all&#8217;amministrazione Django di funzionare, questo passo è obbligatorio.</p>
<p>Dall&#8217;<a href="http://admin.alwaysdata.com/" target="_blank">interfaccia d&#8217;amministrazione alwaysdata</a>, fate puntare il vostro sottodominio verso la directory <span style="font-family: courier new,courier;">public</span> del vostro progetto.</p>
<p>Ad esempio, se il vostro progetto è in <span style="font-family: courier new,courier;">/home/myaccount/www/myproject</span> dovete impostare la directory di destinazione del vostro dominio <span style="font-family: courier new,courier;">myaccount.alwaysdata.net</span> in modo che punti verso <span style="font-family: courier new,courier;">/myproject/public</span>.</p>
<h4>Alla fine</h4>
<p>L&#8217;albero delle directory dovrà assomigliare a questo:</p>
<div class="codecolorer-container text geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">myproject/<br />
&nbsp; &nbsp; __init__.py<br />
&nbsp; &nbsp; manage.py<br />
&nbsp; &nbsp; public/<br />
&nbsp; &nbsp; &nbsp; &nbsp; django.fcgi<br />
&nbsp; &nbsp; &nbsp; &nbsp; .htaccess<br />
&nbsp; &nbsp; &nbsp; &nbsp; media/<br />
&nbsp; &nbsp; settings.py<br />
&nbsp; &nbsp; urls.py<br />
&nbsp; &nbsp; myapp/<br />
&nbsp; &nbsp; &nbsp; &nbsp; views.py<br />
&nbsp; &nbsp; &nbsp; &nbsp; models.py</div></div>
<h2>Connettersi tramite SSH</h2>
<p>Per prima cosa dovete abilitare il vostro account SSH (per questioni di sicurezza è disattivato di default):<br />
Nell&#8217;interfaccia di amministrazione selezionare <a title="http://admin.alwaysdata.com/ssh/" rel="nofollow" href="http://admin.alwaysdata.com/ssh/">Accès distant &gt; SSH</a>. Cliccate sull&#8217;icona « Modifier » e selezionate « Activer », per finire cliccate su « Modifier ».</p>
<p>Per effettuare una connessione da terminale è sufficiente digitare il comando sottostante (sostituite <span style="font-family: courier new,courier;">myaccount</span> con il nome del vostro account):</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">ssh</span> myaccount<span style="color: #000000; font-weight: bold;">@</span>ssh.alwaysdata.com</div></div>
<p>Se necessario è possibile <a href="http://ssh.alwaysdata.com/" target="_blank">accedere tramite SSH anche da interfaccia web</a>.</p>
<p>I programmi disponibi sono parecchi:</p>
<ul>
<li> <strong>editors</strong> : emacs, vim, nano&#8230;</li>
<li><strong>development</strong>: gcc, autoconf, automake, binutils, bison, flex, doxygen, make, cvs, subversion, bazaar, git, mercurial, darcs&#8230;</li>
<li> <strong>internet</strong> : mutt, fetchmail, slrn, lynx, curl&#8230;</li>
</ul>
<h2>Connettersi tramite FTP</h2>
<p>I dati per accedere tramite FTP sono i seguenti:</p>
<ul>
<li><strong>Server Host</strong>: ftp.alwaysdata.com</li>
<li><strong>Porta</strong>: 21</li>
<li><strong>User</strong>: Il nome dell&#8217;utente FTP,  di defaut è il nome del vostro account</li>
<li><strong>Password</strong>: la password associata all&#8217;utente FTP, di défaut è la password utilizzata durante l&#8217;isctrizione.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.jdsblog.it/informatica/375/hosting-gratuito-django-e-non-solo-con-db-postgresql-e-accesso-ssh/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>CHMOD ricorsivo di directory o files</title>
		<link>http://www.jdsblog.it/informatica/gnulinux/cli/26/chmod-ricorsivo-di-directory-o-files/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=chmod-ricorsivo-di-directory-o-files</link>
		<comments>http://www.jdsblog.it/informatica/gnulinux/cli/26/chmod-ricorsivo-di-directory-o-files/#comments</comments>
		<pubDate>Sat, 13 Jun 2009 11:28:28 +0000</pubDate>
		<dc:creator>JD</dc:creator>
				<category><![CDATA[CLI]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[CHMOD]]></category>
		<category><![CDATA[console]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[terminale]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.leinardi.com/?p=26</guid>
		<description><![CDATA[Due semplici comandi che permettono di cambiare in modo ricorsivo i permessi solamente dei files o delle directory.]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-240" title="Tango Terminal" src="http://www.jdsblog.it/wp-content/uploads/2009/06/icon.tango.terminal.png" alt="Tango Terminal" width="64" height="64" />Il mese scorso, in occasione dell&#8217;uscita di <a href="http://www.ubuntu-it.org/news/227/32/Rilasciato-Ubuntu-9-04.shtml" target="_blank">Jaunty Jackalope</a>, mi è capitato di dover migrare il filesystem del mio portatile da ReiserFS a Ext4.<br />
Non avendo sufficiente spazio libero sul fisso per un backup della partizione ho chiesto in prestito a mio padre il suo box USB da 500GB suddiviso in 2 partizioni da 250GB, una ReiserFS e una NTFS.<br />
Non riuscendo a salvare tutto sulla Reiser ho dovuto copiare alcune directory sulla partizione NTFS per poi trasferirle sulla nuova partizione Ext4 del portatile.<br />
Il problema è che nel passaggio da Raiser a NTFS sono andati persi tutti i permessi di files e directory, sostituiti con pessimo 777.</p>
<p>Fortunatamente la console, come sempre accade, ci viene in aiuto:</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">find</span> . <span style="color: #660033;">-type</span> d <span style="color: #660033;">-exec</span> <span style="color: #c20cb9; font-weight: bold;">chmod</span> <span style="color: #000000;">755</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span><span style="color: #7a0874; font-weight: bold;">&#125;</span> \;</div></div>
<p>Con il comando soprastante si vanno a cambiare in modo ricorsivo tutti i permessi delle sole directory.</p>
<p>Se invece si vogliono cambiare i permessi dei files è sufficiente sostituire il tipo da <em>d</em> a <em>f</em>:</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">find</span> . <span style="color: #660033;">-type</span> f <span style="color: #660033;">-exec</span> <span style="color: #c20cb9; font-weight: bold;">chmod</span> <span style="color: #000000;">644</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span><span style="color: #7a0874; font-weight: bold;">&#125;</span> \;</div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.jdsblog.it/informatica/gnulinux/cli/26/chmod-ricorsivo-di-directory-o-files/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Cercare una stringa all&#8217;interno di files</title>
		<link>http://www.jdsblog.it/informatica/gnulinux/cli/19/cercare-una-stringa-allinterno-di-files/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=cercare-una-stringa-allinterno-di-files</link>
		<comments>http://www.jdsblog.it/informatica/gnulinux/cli/19/cercare-una-stringa-allinterno-di-files/#comments</comments>
		<pubDate>Sat, 13 Jun 2009 10:14:12 +0000</pubDate>
		<dc:creator>JD</dc:creator>
				<category><![CDATA[CLI]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[console]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[terminale]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.leinardi.com/?p=19</guid>
		<description><![CDATA[Alcuni semplici comandi che permettono di cercare una stringa all'interno di files di testo.]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-240" title="Tango Terminal" src="http://www.jdsblog.it/wp-content/uploads/2009/06/icon.tango.terminal.png" alt="Tango Terminal" width="64" height="64" />Mettendo su questo blog mi è capitato di dover cercare una stringa (il nome di un&#8217;immagine .gif) all&#8217;interno dei vari files .php di WordPress. Sotto Windows avrei utilizzato il fido <a href="http://www.ghisler.com/" target="_blank">Total Commander</a>,non essendoci però una versione per Linux sono ricorso alla vecchia e cara console:</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">find</span> . <span style="color: #660033;">-name</span> <span style="color: #ff0000;">&quot;*.php&quot;</span> <span style="color: #660033;">-type</span> f <span style="color: #660033;">-print</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">xargs</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #660033;">-i</span> <span style="color: #ff0000;">&quot;immagine.gif&quot;</span></div></div>
<p>In comando soprastante restituisce il nome del file seguito dalla frase che contiene la stringa e si utilizza nel seguente modo:</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">find</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>PERCORSO<span style="color: #7a0874; font-weight: bold;">&#125;</span> <span style="color: #660033;">-name</span> <span style="color: #ff0000;">&quot;{ESTENSIONE}&quot;</span> <span style="color: #660033;">-type</span> f <span style="color: #660033;">-print</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">xargs</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #660033;">-i</span> <span style="color: #ff0000;">&quot;{TESTO}&quot;</span></div></div>
<p>Se non vi interessa la frase che contiene la stringa ma solo il nome del file potete utilizzare questa variante:</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">find</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>PERCORSO<span style="color: #7a0874; font-weight: bold;">&#125;</span> <span style="color: #660033;">-name</span> <span style="color: #ff0000;">'{ESTENSIONE}'</span> <span style="color: #660033;">-print0</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">xargs</span> <span style="color: #660033;">-r</span> <span style="color: #660033;">-0</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #660033;">-l</span> <span style="color: #ff0000;">'{TESTO}'</span></div></div>
<p>Ecco un esempio:</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">find</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www <span style="color: #660033;">-name</span> <span style="color: #ff0000;">'*.php'</span> <span style="color: #660033;">-print0</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">xargs</span> <span style="color: #660033;">-r</span> <span style="color: #660033;">-0</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #660033;">-l</span> <span style="color: #ff0000;">'.ico'</span></div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.jdsblog.it/informatica/gnulinux/cli/19/cercare-una-stringa-allinterno-di-files/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
