<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Mirko Pagliai</title><link>http://www.mirkopagliai.it</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/mirkopagliai" /><description>La morale della domenica ed altre elucubrazioni</description><language>it-IT</language><lastBuildDate>Wed, 06 Feb 2013 04:48:37 PST</lastBuildDate><generator>http://wordpress.org/?v=3.5.1</generator><sy:updatePeriod xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">hourly</sy:updatePeriod><sy:updateFrequency xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">1</sy:updateFrequency><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/mirkopagliai" /><feedburner:info uri="mirkopagliai" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2Fmirkopagliai" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2Fmirkopagliai" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2Fmirkopagliai" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Fmirkopagliai" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fmirkopagliai" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fmirkopagliai" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fmirkopagliai" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2Fmirkopagliai" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2Fmirkopagliai" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><item><title>Debian: VirtualBox + kernel 3.7</title><link>http://feedproxy.google.com/~r/mirkopagliai/~3/eZODeXsrti0/</link><category>Guide GNU/Linux e Debian</category><category>Unix</category><category>Debian</category><category>kernel 3.7</category><category>modulo kernel VirtualBox</category><category>sources.list</category><category>Ubuntu</category><category>versione di Debian</category><category>versione di VirtualBox</category><category>VirtualBox</category><category>virtualbox-dkms</category><category>virtualbox-qt</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mirko Pagliai</dc:creator><pubDate>Wed, 06 Feb 2013 04:48:37 PST</pubDate><guid isPermaLink="false">http://www.mirkopagliai.it/?p=2392</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><img class="alignleft size-thumbnail wp-image-2400" alt="virtualbox" src="http://www.mirkopagliai.it/wp-content/uploads/2013/02/virtualbox_1_logo-180x177.jpg" width="180" height="177" />Su <strong>Debian</strong>, se state utilizzando il <strong>kernel 3.7</strong> (presente in experimental) avrete notato che si verifica un problema con il <strong>modulo per il kernel di VirtualBox</strong>:</p>
<pre class="brush: bash; light: true; title: ; notranslate">root@mirko-lenovo:/home/mirko# /etc/init.d/virtualbox restart
[ ok ] Stopping VirtualBox kernel modules.
[....] Starting VirtualBox kernel modules[....] No suitable module for running k[FAIL found ... failed!
 failed!
root@mirko-lenovo:/home/mirko# dpkg-reconfigure virtualbox-dkms

------------------------------
Deleting module version: 4.1.18
completely from the DKMS tree.
------------------------------
Done.
Loading new virtualbox-4.1.18 DKMS files...
Building only for 3.7-trunk-amd64
Building initial module for 3.7-trunk-amd64
Error! Bad return status for module build on kernel: 3.7-trunk-amd64 (x86_64)
Consult /var/lib/dkms/virtualbox/4.1.18/build/make.log for more information.
[ ok ] Stopping VirtualBox kernel modules.
[....] Starting VirtualBox kernel modules[....] No suitable module for running k[FAIL found ... failed!
 failed!
invoke-rc.d: initscript virtualbox, action &quot;restart&quot; failed.</pre>
<p>Andando a guardare il file di log segnalato (<em>/var/lib/dkms/virtualbox/4.1.18/build/make.log</em>), si notano alcuni errori (non riporto il contenuto integrale):</p>
<pre class="brush: plain; light: true; title: ; notranslate">/var/lib/dkms/virtualbox/4.1.18/build/vboxdrv/r0drv/linux/memobj-r0drv-linux.c:1451:38: error: ‘VM_RESERVED’ undeclared (first use in this function)
/var/lib/dkms/virtualbox/4.1.18/build/vboxdrv/r0drv/linux/memobj-r0drv-linux.c:1451:38: note: each undeclared identifier is reported only once for each function it appears in
make[4]: *** [/var/lib/dkms/virtualbox/4.1.18/build/vboxdrv/r0drv/linux/memobj-r0drv-linux.o] Error 1
make[3]: *** [/var/lib/dkms/virtualbox/4.1.18/build/vboxdrv] Error 2
make[2]: *** [_module_/var/lib/dkms/virtualbox/4.1.18/build] Error 2
make[1]: *** [sub-make] Error 2
make: *** [all] Error 2</pre>
<p>In attesa di aggiornamenti, si può risolvere utilizzando la <strong>versione di VirtualBox</strong> presente nei repository della casa madre. Innanzitutto puliamo l&#8217;installazione:</p>
<pre class="brush: bash; light: true; title: ; notranslate">apt-get purge virtualbox*</pre>
<p>Quindi aggiungete il nuovo repository nel vostro <em>sources.list</em>. Per conoscere il repository corretto, che varia a seconda della <strong>versione di Debian</strong> (vale anche per <strong>Ubuntu</strong>), potete guardare <a href="https://www.virtualbox.org/wiki/Linux_Downloads">qui</a>. Ad esempio, per Wheezy:</p>
<pre class="brush: plain; light: true; title: ; notranslate">deb http://download.virtualbox.org/virtualbox/debian wheezy contrib</pre>
<p>Quindi aggiungete la chiave del repository:</p>
<pre class="brush: bash; light: true; title: ; notranslate"># wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | apt-key add -</pre>
<p>Aggiornate i repository e reinstallate VirtualBox:</p>
<pre class="brush: bash; light: true; title: ; notranslate"># apt-get update
# apt-get install virtualbox-4.2</pre>
<p>Notare che i pacchetti presenti in questo repository hanno nel nome il numero della versione (cioè il pacchetto si chiama <em>virtualbox-4.2</em> per la versione 4.2) e che in questo caso <span style="text-decoration: underline;">non è necessario</span> installare né il pacchetto <em>*-dkms </em>(esempio <em>virtualbox-dkms</em>), né il pacchetto <em>*-qt</em> che contiene la gui di amministrazione (esempio <em>virtualbox-qt</em>). Il pacchetto installato da quei repository contiene già tutto il necessario. Lo stesso vale anche per gli altri pacchetti collegati a VirtualBox: noterete che, cercando di installarli, vi chiederà di rimuovere questa versione e installare quella presente nei repository ufficiali di Debian, che però è difettosa.</p>
<img src="http://feeds.feedburner.com/~r/mirkopagliai/~4/eZODeXsrti0" height="1" width="1"/>]]></content:encoded><description>Su Debian, se state utilizzando il kernel 3.7 (presente in experimental) avrete notato che si verifica un problema con il modulo per il kernel di VirtualBox: Andando a guardare il file di log segnalato (/var/lib/dkms/virtualbox/4.1.18/build/make.log), si notano alcuni errori (non riporto il contenuto integrale): In attesa di aggiornamenti, si può risolvere utilizzando la versione di [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.mirkopagliai.it/debian-virtualbox-kernel-3-7/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.mirkopagliai.it/debian-virtualbox-kernel-3-7/</feedburner:origLink></item><item><title>Checkgmail: “error 200 ok”</title><link>http://feedproxy.google.com/~r/mirkopagliai/~3/4-M_fNDPpLw/</link><category>Guide GNU/Linux e Debian</category><category>Unix</category><category>checkgmail</category><category>checkgmail patch</category><category>cookies support</category><category>fix checkgmail</category><category>problems with authentication</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mirko Pagliai</dc:creator><pubDate>Wed, 23 Jan 2013 04:31:33 PST</pubDate><guid isPermaLink="false">http://www.mirkopagliai.it/?p=2387</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>It seems that <em>CheckGmail</em> has again <strong>problems with authentication</strong>.</p>
<p><img class="alignnone size-full wp-image-2388" alt="checkgmail_error200" src="http://www.mirkopagliai.it/wp-content/uploads/2013/01/checkgmail_error200.jpg" width="193" height="62" /></p>
<p>The update (with the -<em>update</em> option) doesn&#8217;t work. It seems that you update something, but the result is the same.</p>
<p>On the web there&#8217;re suggestions that invite you to launch <em>CheckGmail</em> without the <strong>cookies support</strong> (-<em>no_cookies</em> option). Actually it works, but many functions are not available.</p>
<p>You can simply fix by downloading and applying <a href="http://linuxdeal.com/files/checkgmail.patch">this patch</a>:</p>
<pre class="brush: bash; light: true; title: ; notranslate">$ wget http://linuxdeal.com/files/checkgmail.patch
# patch /usr/bin/checkgmail checkgmail.patch</pre>
<p>After applying the patch, simply restart <em>CheckGmail</em>.</p>
<img src="http://feeds.feedburner.com/~r/mirkopagliai/~4/4-M_fNDPpLw" height="1" width="1"/>]]></content:encoded><description>It seems that CheckGmail has again problems with authentication. The update (with the -update option) doesn&amp;#8217;t work. It seems that you update something, but the result is the same. On the web there&amp;#8217;re suggestions that invite you to launch CheckGmail without the cookies support (-no_cookies option). Actually it works, but many functions are not available. [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.mirkopagliai.it/checkgmail-error-200-ok/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.mirkopagliai.it/checkgmail-error-200-ok/</feedburner:origLink></item><item><title>Mele A2000</title><link>http://feedproxy.google.com/~r/mirkopagliai/~3/MgZ7XPKDFTs/</link><category>Unix</category><category>4.0 ICS</category><category>access point</category><category>Android 2.3</category><category>diverse uscite video</category><category>Mele A2000</category><category>supporto per sata</category><category>wifi</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mirko Pagliai</dc:creator><pubDate>Mon, 21 Jan 2013 15:22:25 PST</pubDate><guid isPermaLink="false">http://www.mirkopagliai.it/?p=2383</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><img class="alignnone size-medium wp-image-2384" alt="http://mirkopagliai.it/complotti/" src="http://www.mirkopagliai.it/wp-content/uploads/2013/01/11-700x700-300x230.jpg" width="300" height="230" /></p>
<p>Mi è arrivato qualche settimana fa, l&#8217;ho comprato <a href="http://www.aliexpress.com/snapshot/210146510.html">qui</a>. Il venditore è cinese, me l&#8217;ha spedito qualche giorno dopo (ho scelto ovviamente FedEx e non le poste cinesi, anche solo per i tempi di consegna), sembra una persona seria e affidabile, inoltre ha buoni feedback. Il prezzo, comprensivo delle spese di spedizione, è stato di 76€, a cui si sono aggiunti 4,5€ per l&#8217;adattatore della presa di corrente (cinese, se non sbaglio di tipo &#8220;A&#8221;, la vedete <a href="http://docs.mirkopagliai.it/documents/mele-a2000/20130102_214453-1.jpg">qui</a>), per un totale quindi di 80,5€.</p>
<p>È comprensivo dei cavi video (tranne vga), dell&#8217;alimentatore e del telecomando. Il telecomando è del tipo &#8220;televisione&#8221; (con qualche funzione in più, adatta al caso) e in giro se ne trova un altro molto, ma molto più carino e più funzionale. Lo vedete <a href="http://www.aliexpress.com/store/product/Mele-A2000-TV-box-F10-sensor-remote-debug-board-pack/511685_556590006.html">qui</a>, dove si vende abbinato al Mele (non so se anche separatamente da qualche parte, cercare &#8220;mele a2000 sensor remote&#8221;), sul retro ha una tastiera come quella bluetooth che si vende per i cellulari.</p>
<p>Di base monta <strong>Android 2.3</strong>, ma si può aggiornare con facilità alla versione <strong>4.0 ICS</strong> scaricabile da <a href="http://www.kimdecent.com/tvbox/50.html">qui</a>. Notare che è disponibile sia una versione &#8220;brandizzata&#8221; (firmware B), che una &#8220;neutral&#8221; (firmware C), oltre a quella originale da fabbrica (firmware A). Consiglio ovviamente la seconda (la prima nemmeno l&#8217;ho provata).<br />
Android è nella versione per tablet, forse c&#8217;è qualche ottimizzazione per il caso (non ne sono sicuro, non avendo nessun tablet), come la &#8220;mouse mode&#8221; (appare il puntatore del mouse, che si può muovere tramite telecomando) o i pulsanti (del telecomando) assegnabili a determinate scorciatoie.</p>
<p>L&#8217;ho scelto per i seguenti punti di forza:</p>
<ol>
<li><strong>diverse uscite video</strong>, hdmi, vga, av. Normalmente questi dispositivi montano solo l&#8217;hdmi, al massimo hdmi+av, molto più raramente hdmi+vga. Unico dispositivo, per quello che sono riuscito a trovare io, con tutte e tre le opzioni. Il telecomando ha un tasto per switchare tra le uscite (non è necessario configurare o peggio riconfigurare nulla).</li>
<li><strong>supporto per sata</strong> da 2,5&#8243;. Anche qui, per quello che mi risulta, è l&#8217;unico dispositivo in commercio. Chi ne capisce un po&#8217;, sa che differenza corre tra l&#8217;usb e il sata vero e proprio;</li>
<li>ethernet+wifi. Il <strong>wifi</strong> può fare anche da <strong>access point</strong>. In rete si parla un po&#8217; male dell&#8217;ethernet (che è a 10/100Mbps), ma non ho avuto modo di verificare.</li>
</ol>
<p>Sul sito del produttore si trova una <a href="http://en.mele.cn/products/show/14.htm">scheda</a> con qualche informazione in più, in rete anche descrizioni più approfondite. Riporto le altre caratteristiche fondamentali:</p>
<ol>
<li>audio l/r + hdmi + uscita ottica per home theater;</li>
<li>sd interna da 4GB (per il sistema):</li>
<li>ram 512mb in ddr3;</li>
<li>processore ARM cortex A8 a 1Ghz;</li>
<li>3 usb (2.0);</li>
<li>lettore flash;</li>
<li>hd a 1080p.</li>
</ol>
<p>Per quanto mi riguarda, visto che prima di scegliere questo o quel modello, ho approfondito i prodotti presenti sul mercato, fermo restando quelli di altra categorie (sono due: quelli tipo chiavetta e quelli tipo box, ovviamente sono due mondi diversi&#8230;), non solo il <strong>Mele A2000</strong> è caratteristicamente il migliore, ma uno tra i migliori anche per rapporto qualità/prezzo.</p>
<p>Qualche foto che ho fatto:<br />
<a href="http://docs.mirkopagliai.it/documents/mele-a2000/20130102_094840.jpg">http://docs.mirkopagliai.it/documents/mele-a2000/20130102_094840.jpg</a><br />
<a href="http://docs.mirkopagliai.it/documents/mele-a2000/20130103_233835.jpg">http://docs.mirkopagliai.it/documents/mele-a2000/20130103_233835.jpg</a><br />
<a href="http://docs.mirkopagliai.it/documents/mele-a2000/20130103_233851.jpg">http://docs.mirkopagliai.it/documents/mele-a2000/20130103_233851.jpg</a><br />
<a href="http://docs.mirkopagliai.it/documents/mele-a2000/20130113_185023.jpg">http://docs.mirkopagliai.it/documents/mele-a2000/20130113_185023.jpg</a><br />
<a href="http://docs.mirkopagliai.it/documents/mele-a2000/20130113_185125.jpg">http://docs.mirkopagliai.it/documents/mele-a2000/20130113_185125.jpg</a><br />
<a href="http://docs.mirkopagliai.it/documents/mele-a2000/20130113_185604.jpg">http://docs.mirkopagliai.it/documents/mele-a2000/20130113_185604.jpg</a> (qui si nota la &#8220;mouse mode&#8221;)<br />
<a href="http://docs.mirkopagliai.it/documents/mele-a2000/20130113_212237.jpg">http://docs.mirkopagliai.it/documents/mele-a2000/20130113_212237.jpg</a><br />
<a href="http://docs.mirkopagliai.it/documents/mele-a2000/20130113_212342.jpg">http://docs.mirkopagliai.it/documents/mele-a2000/20130113_212342.jpg</a> (il telecomando)</p>
<p>Ora vorrei provare a installarci Debian, magari da chiavetta. In rete qualcuno ha già provato a montarci distribuzioni GNU/Linux, con risultati positivi. Per ora io l&#8217;ho attaccato alla tv di casa e l&#8217;ho datato di un sata da 500GB, così fa da media center (con brillanti risultati).</p>
<img src="http://feeds.feedburner.com/~r/mirkopagliai/~4/MgZ7XPKDFTs" height="1" width="1"/>]]></content:encoded><description>Mi è arrivato qualche settimana fa, l&amp;#8217;ho comprato qui. Il venditore è cinese, me l&amp;#8217;ha spedito qualche giorno dopo (ho scelto ovviamente FedEx e non le poste cinesi, anche solo per i tempi di consegna), sembra una persona seria e affidabile, inoltre ha buoni feedback. Il prezzo, comprensivo delle spese di spedizione, è stato di 76€, [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.mirkopagliai.it/mele-a2000/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.mirkopagliai.it/mele-a2000/</feedburner:origLink></item><item><title>Pulizia dopo aver utilizzato Wine</title><link>http://feedproxy.google.com/~r/mirkopagliai/~3/spzRVsmI0Fo/</link><category>Guide GNU/Linux e Debian</category><category>Unix</category><category>Debian</category><category>installati con Wine</category><category>menù di sistema</category><category>programmi installati con Wine</category><category>Wine</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mirko Pagliai</dc:creator><pubDate>Sat, 29 Dec 2012 04:19:24 PST</pubDate><guid isPermaLink="false">http://www.mirkopagliai.it/?p=2380</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Dopo aver utilizzato <strong>Wine</strong> (per qualsiasi necessità) e averlo disinstallato &#8211; incluso magari l&#8217;avere cancellato anche la directory <em>.wine</em> nella propria home, possono sussistere due tipi di problemi:</p>
<ol>
<li>il <strong>menù di sistema</strong> presenta ancora voci di programmi per Windows <strong>installati con Wine</strong>;</li>
<li>alcune tipologie di file rimangono associate a questi stessi programmi (ad esempio, documenti di testo con il famoso &#8220;Blocco note&#8221;).</li>
</ol>
<p>Il primo problema si può facilmente e velocemente risolvere modificando (ovvero cancellando) manualmente le voci residue del menù. Lo stesso dicasi per il secondo, andando a reimpostare in questo caso per tutti i tipi di file l&#8217;applicazione preferita (rimane però presente &#8211; come alternativa &#8211; l&#8217;altra, cioè quelle precedentemente presenti e installate da <em>Wine</em>), anche se in questo caso è molto più impegnativa e dispendiosa.</p>
<p>I due problemi sussistono ovviamente (ribadisco, semmai non fosse chiaro) anche se quei programmi non sono più installati e anche se lo stesso Wine non è più installato.</p>
<p>Dopo aver cercato approfonditamente in rete, ho trovato l&#8217;unica valida soluzione <a href="http://ubuntuforums.org/showpost.php?p=4468505&amp;postcount=7" target="_blank">qui</a>. E quindi, all&#8217;interno della propria home:</p>
<pre class="brush: bash; title: ; notranslate">rm -r .wine
rm -r .local/share/applications/wine*
rm -r .local/share/desktop-directories/wine*</pre>
<p>(probabilmente il primo passaggio l&#8217;avete già eseguito)</p>
<p>Fatto questo, i due problemi saranno risolti definitivamente.</p>
<img src="http://feeds.feedburner.com/~r/mirkopagliai/~4/spzRVsmI0Fo" height="1" width="1"/>]]></content:encoded><description>Dopo aver utilizzato Wine (per qualsiasi necessità) e averlo disinstallato &amp;#8211; incluso magari l&amp;#8217;avere cancellato anche la directory .wine nella propria home, possono sussistere due tipi di problemi: il menù di sistema presenta ancora voci di programmi per Windows installati con Wine; alcune tipologie di file rimangono associate a questi stessi programmi (ad esempio, documenti [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.mirkopagliai.it/pulizia-dopo-aver-utilizzato-wine/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.mirkopagliai.it/pulizia-dopo-aver-utilizzato-wine/</feedburner:origLink></item><item><title>Slugify: generare automaticamente lo slug</title><link>http://feedproxy.google.com/~r/mirkopagliai/~3/-S1fMv-NGlM/</link><category>Programmazione</category><category>jQuery</category><category>plugin per jQuery</category><category>slug</category><category>slugify.</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mirko Pagliai</dc:creator><pubDate>Mon, 24 Dec 2012 07:40:25 PST</pubDate><guid isPermaLink="false">http://www.mirkopagliai.it/?p=2369</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>L&#8217;esigenza: in un form ho bisogno di impostare in un campo lo <strong>slug</strong> della risorsa che sto creando, magari e probabilmente a partire da un altro campo. Ad esempio, creando un articolo o una pagina devo generare lo slug a partire da un campo che potrebbe in questi casi potrebbe essere il titolo.</p>
<p>Un&#8217;immagine esplicativa:<br />
<img class="wp-image-2370 alignnone" alt="Titolo e slug" src="http://www.mirkopagliai.it/wp-content/uploads/2012/12/Schermata.png" width="356" height="177" /></p>
<p>A questo scopo ho scritto un semplice ed efficace <strong>plugin per jQuery</strong>, chiamato <em>slugify</em>, che potete scaricare liberamente da <a href="http://docs.mirkopagliai.it/js/slugify.js" target="_blank">qui</a>.</p>
<p>Il funzionamento è molto semplice:</p>
<pre class="brush: jscript; title: ; notranslate">$(function() {
	$().slugify('#title', '#slug');
});</pre>
<p>Richiede semplicemente di indicare il campo sorgente e quello di destinazione (valgono le solite regole per i selettori). Bisogna quindi strutturare il form più o meno così:</p>
<pre class="brush: xml; title: ; notranslate">&lt;form&gt;
	&lt;input type=&quot;text&quot; id=&quot;title&quot; /&gt;
	&lt;input type=&quot;text&quot; id=&quot;slug&quot; /&gt;
&lt;/form&gt;</pre>
<p>Notare che se non vengono passati sorgente e destinazione, di default utilizzerà &#8220;form #title&#8221; e &#8220;form #slug&#8221;. Quindi è possibile anche lanciarlo come:</p>
<pre class="brush: jscript; title: ; notranslate">$(function() {
	$().slugify();
});</pre>
<p>(in questo caso utilizzerà &#8221; form #title&#8221; e &#8220;form #slug&#8221;)</p>
<pre class="brush: jscript; title: ; notranslate">$(function() {
	$().slugify('#name');
});</pre>
<p>(utilizzerà &#8220;#name&#8221; e &#8220;form #slug&#8221;)</p>
<p>Simulando il comportamento di molti CMS e simili, come ad esempio proprio <em>WordPress</em>, <em>slugify</em>:</p>
<ol>
<li>agisce solo se il campo destinazione (dello slug) è vuoto. In altri termini, se lo slug era già stato impostato (generato o manualmente), non lo aggiorna, a meno che non lo si cancelli del tutto;</li>
<li>genera la destinazione anche a partire dalla destinazione, ovvero verificando che lo slug sia valido e modificandolo se non lo è.</li>
</ol>
<p>Nel generare lo slug:</p>
<ol>
<li>vengono sostituite le lettere accentate;</li>
<li>i simboli e lo spazio vengono convertiti in &#8220;-&#8221;.</li>
</ol>
<img src="http://feeds.feedburner.com/~r/mirkopagliai/~4/-S1fMv-NGlM" height="1" width="1"/>]]></content:encoded><description>L&amp;#8217;esigenza: in un form ho bisogno di impostare in un campo lo slug della risorsa che sto creando, magari e probabilmente a partire da un altro campo. Ad esempio, creando un articolo o una pagina devo generare lo slug a partire da un campo che potrebbe in questi casi potrebbe essere il titolo. Un&amp;#8217;immagine esplicativa: [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.mirkopagliai.it/slugify-generare-automaticamente-lo-slug/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.mirkopagliai.it/slugify-generare-automaticamente-lo-slug/</feedburner:origLink></item><item><title>Android: widget controllo energetico</title><link>http://feedproxy.google.com/~r/mirkopagliai/~3/qHPBXjJfXAQ/</link><category>Internet</category><category>Android</category><category>Android 4</category><category>controllo energetico</category><category>Google Play</category><category>Power Toggle</category><category>widget controllo energetico</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mirko Pagliai</dc:creator><pubDate>Mon, 22 Oct 2012 05:48:47 PDT</pubDate><guid isPermaLink="false">http://www.mirkopagliai.it/?p=2358</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><img class="alignleft  wp-image-2361" title="Power Toggle" src="http://www.mirkopagliai.it/wp-content/uploads/2012/10/power_toggle.png" alt="Power Toggle" width="99" height="99" />Sugli ultimi <strong>Android</strong> (presumibilmente tutti quelli con versione 4.x) manca un <strong>widget per il controllo energetico</strong>, presente invece nelle precedenti versioni. È vero, ci sono tutte le icone nell&#8217;area delle notifiche, che si possono scorrere in orizzontale, ma non è il massimo della comodità, personalmente preferisco il precedente metodo.</p>
<p>Su <em>Google Play</em> si possono trovare numerose alternative. Tra tutte, volevo segnalare <a href="https://play.google.com/store/apps/details?id=com.painless.pc">Power Toggle</a>, poiché &#8211; tra tutte quelle che ho provato, è l&#8217;unica ad essere contemporaneamente:</p>
<ol>
<li>gratuita e senza pubblicità di sorta;</li>
<li>altamente personalizzabile;</li>
<li>gestisce tutti gli aspetti energetici;</li>
<li>funziona (strano a dirsi, ma molti widget non riescono ad esempio a gestire la connessione dati).</li>
</ol>
<p>Qualche screen. Il widget:</p>
<p><a href="http://www.mirkopagliai.it/wp-content/uploads/2012/10/Screenshot_2012-10-22-14-29-10.png"><img class="alignnone  wp-image-2359" title="Power toggle widget" src="http://www.mirkopagliai.it/wp-content/uploads/2012/10/Screenshot_2012-10-22-14-29-10.png" alt="Power toggle widget" width="346" height="614" /></a></p>
<p>Il menù di impostazioni del widget:</p>
<p><a href="http://www.mirkopagliai.it/wp-content/uploads/2012/10/Screenshot_2012-10-22-14-37-04.png"><img class="alignnone  wp-image-2360" title="Power Toggle impostazioni" src="http://www.mirkopagliai.it/wp-content/uploads/2012/10/Screenshot_2012-10-22-14-37-04.png" alt="Power Toggle impostazioni" width="346" height="614" /></a></p>
<img src="http://feeds.feedburner.com/~r/mirkopagliai/~4/qHPBXjJfXAQ" height="1" width="1"/>]]></content:encoded><description>Sugli ultimi Android (presumibilmente tutti quelli con versione 4.x) manca un widget per il controllo energetico, presente invece nelle precedenti versioni. È vero, ci sono tutte le icone nell&amp;#8217;area delle notifiche, che si possono scorrere in orizzontale, ma non è il massimo della comodità, personalmente preferisco il precedente metodo. Su Google Play si possono trovare [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.mirkopagliai.it/android-widget-controllo-energetico/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.mirkopagliai.it/android-widget-controllo-energetico/</feedburner:origLink></item><item><title>Amule Adunanza su Debian Wheezy: problema di dipendenze</title><link>http://feedproxy.google.com/~r/mirkopagliai/~3/lUjAAogTwJs/</link><category>Unix</category><category>Amule Adunanza</category><category>amule-adunanza-daemon</category><category>Debian</category><category>Debian Wheezy</category><category>demone di Amule Adunanza</category><category>dipendenze mancanti</category><category>repository di Adunanza</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mirko Pagliai</dc:creator><pubDate>Mon, 01 Oct 2012 10:47:49 PDT</pubDate><guid isPermaLink="false">http://www.mirkopagliai.it/?p=2352</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><img class="alignleft size-thumbnail wp-image-1101" title="Amule" src="http://www.mirkopagliai.it/wp-content/uploads/2011/01/amule-123x150.jpg" alt="Amule" width="123" height="150" />Attualmente, cercando di installare il <strong>demone di Amule Adunanza</strong> (<em>amule-adunanza-daemon</em>) su <strong>Debian Wheezy</strong> (ma il problema potrebbe riguardare anche altre versioni di Debian) si ottiene il seguente problema dovuto a <strong>dipendenze mancanti</strong>:</p>
<pre class="brush: bash; light: true; title: ; notranslate"># aptitude install amule-adunanza-daemon
I seguenti pacchetti NUOVI (NEW) saranno installati:
  amule-adunanza-daemon{b} libcrypto++9{a}
0 pacchetti aggiornati, 2 installati, 0 da rimuovere e 2 non aggiornati.
È necessario prelevare 3199 kB di archivi. Dopo l'estrazione, verranno occupati 9985 kB.
I seguenti pacchetti hanno dipendenze non soddisfatte:
 amule-adunanza-daemon : Dipende: libupnp3 (&gt;= 1.4.3) che è un pacchetto virtuale.
                         Dipende: libwxbase2.8-0 (&gt;= 2.8.10.1) but it is not going to be installed.
Le seguenti azioni permetteranno di soddisfare queste dipendenze:

     Mantenere i seguenti pacchetti alla versione attuale:
1)     amule-adunanza-daemon [Non installato]</pre>
<p>Questo accade perché la versione pacchettizzata presente nei repository (il <strong>repository di Adunanza</strong>) richiede delle dipendenze non più disponibili nei repository ufficiali di Debian. Per risolvere il problema, è momentaneamente necessario ricorrere alla versione più recente, presente sul progetto su <a href="http://sourceforge.net/projects/amule-adunanza/" target="_blank">Sourceforge</a>.</p>
<p>Semplicemente, installiamo le dipendenze necessarie:</p>
<pre class="brush: bash; light: true; title: ; notranslate">aptitude install libcrypto++9 libupnp6 libwxbase2.8-0</pre>
<p>Quindi con il browser apriamo <a href="http://sourceforge.net/projects/amule-adunanza/files/" target="_blank">questa pagina</a>, selezioniamo la versione di Debian in uso, poi procediamo fino a visualizzare la lista dei pacchetti disponibili (per Wheezy potete andare direttamente <a href="http://sourceforge.net/projects/amule-adunanza/files/aMule-AdunanzA%20%28Debian-Wheezy%29/Debian%20Wheezy%20latest%20available/" target="_blank">qui</a>). Scarichiamo quindi la versione di <em>amule-adunanza-daemon</em> adatta alla nostra architettura (<em>i386</em> per 32bit, <em>amd64</em> per 64bit). Al momento in cui scrivo, sono presenti i pacchetti:</p>
<ul>
<li>amule-adunanza-daemon_2010.1+2.2.6-1wheezy4_i386.deb</li>
<li>amule-adunanza-daemon_2010.1+2.2.6-1wheezy4_amd64.deb</li>
</ul>
<p>Una volta scaricato il pacchetto corretto, portiamoci nella directory e impartiamo il comando di installazione (valido per entrambe le architetture) tramite dpkg:</p>
<pre class="brush: bash; light: true; title: ; notranslate">dpkg -i amule-adunanza-daemon_2010.1+2.2.6-1wheezy4*.deb</pre>
<p>A questo punto possiamo procedere con la configurazione come da <a href="http://www.mirkopagliai.it/amuled-amuleweb-e-amulegui/" target="_blank">guida</a>.</p>
<img src="http://feeds.feedburner.com/~r/mirkopagliai/~4/lUjAAogTwJs" height="1" width="1"/>]]></content:encoded><description>Attualmente, cercando di installare il demone di Amule Adunanza (amule-adunanza-daemon) su Debian Wheezy (ma il problema potrebbe riguardare anche altre versioni di Debian) si ottiene il seguente problema dovuto a dipendenze mancanti: Questo accade perché la versione pacchettizzata presente nei repository (il repository di Adunanza) richiede delle dipendenze non più disponibili nei repository ufficiali di [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.mirkopagliai.it/amule-adunanza-su-debian-wheezy-problema-di-dipendenze/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.mirkopagliai.it/amule-adunanza-su-debian-wheezy-problema-di-dipendenze/</feedburner:origLink></item><item><title>RTS5229 card reader: how to work</title><link>http://feedproxy.google.com/~r/mirkopagliai/~3/Rj426EHUI7A/</link><category>Guide GNU/Linux e Debian</category><category>Unix</category><category>card reader</category><category>card reader on Debian</category><category>checkinstall</category><category>deb package</category><category>Debian</category><category>PCIE RTS5229 card reader driver for Linux</category><category>Realtek</category><category>RTS5229</category><category>RTS5229 card reader</category><category>RTS5229 PCI Express Card Reader</category><category>Thinkpad E530</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mirko Pagliai</dc:creator><pubDate>Tue, 18 Sep 2012 08:04:00 PDT</pubDate><guid isPermaLink="false">http://www.mirkopagliai.it/?p=2342</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><img class="alignleft size-thumbnail wp-image-629" title="Debian" src="http://www.mirkopagliai.it/wp-content/uploads/2010/10/debian_splash-150x150.png" alt="Debian" width="150" height="150" />I bought a <strong>Thinkpad E530</strong> which uses the <strong>RTS5229 card reader</strong>. The card reader doesn&#8217;t work out of the box and in the repositories of Debian there is no driver available. With <em>lspci</em> the card read is seen as:</p>
<pre class="brush: plain; light: true; title: ; notranslate">02:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS5229 PCI Express Card Reader (rev 01)</pre>
<p>Fortunately the <strong>Realtek</strong> provides its drivers available <a href="http://www.realtek.com.tw/Downloads/downloadsView.aspx?Langid=1&amp;PNid=15&amp;PFid=25&amp;Level=4&amp;Conn=3&amp;DownTypeID=3&amp;GetDown=false" target="_blank">here</a> (<em>PCIE RTS5229 card reader driver for Linux</em>, 1.07 version) that you should only compile.</p>
<p>First install everything that is needed to compile the sources:</p>
<pre class="brush: bash; light: true; title: ; notranslate">aptitude install linux-headers-`uname -r` build-essential</pre>
<p>Then download and unpack the driver. Inside the folder you will find the <em>README.txt</em> file that explains you how to compile:</p>
<pre class="brush: plain; light: true; title: ; notranslate">1) make
2) make install
3) depmod
4) reboot your computer

Note: Root privilege is required in step 2 and 3</pre>
<p>I suggest to you to use <em>checkinstall</em> instead of <em>make install</em>, so in the future you have the <strong>deb package</strong> already prepared. In this case:</p>
<pre class="brush: bash; light: true; title: ; notranslate"># aptitude install checkinstall
$ make
# checkinstall
# depmod</pre>
<p>And eventually reboot the system.</p>
<p>If anything could be useful, I have already prepared a deb package that you can find <a href="http://docs.mirkopagliai.it/packages/rts5229/rts5229_1.07_3.2.0-3-amd64.deb" target="_blank">here</a> (for <em>3.2.0-3-amd64</em> kernel) and <a href="http://docs.mirkopagliai.it/packages/rts5229/rts5229_1.07_3.5-trunk-amd64.deb" target="_blank">here</a> (for <em>3.5-trunk-amd64</em> kernel) and that it should <em>only work on 64bit systems</em> (I don&#8217;t guarantee it).</p>
<img src="http://feeds.feedburner.com/~r/mirkopagliai/~4/Rj426EHUI7A" height="1" width="1"/>]]></content:encoded><description>I bought a Thinkpad E530 which uses the RTS5229 card reader. The card reader doesn&amp;#8217;t work out of the box and in the repositories of Debian there is no driver available. With lspci the card read is seen as: Fortunately the Realtek provides its drivers available here (PCIE RTS5229 card reader driver for Linux, 1.07 [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.mirkopagliai.it/rts5229-card-reader-how-to-work/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.mirkopagliai.it/rts5229-card-reader-how-to-work/</feedburner:origLink></item><item><title>CakePHP: id or slug? Both of them!</title><link>http://feedproxy.google.com/~r/mirkopagliai/~3/rayOHDRJ0CQ/</link><category>Programmazione</category><category>a number or a numeric string</category><category>CakePHP</category><category>id and slug</category><category>is_numeric() function</category><category>non-numeric string</category><category>retrieve records in database</category><category>search condition</category><category>ternary operator</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mirko Pagliai</dc:creator><pubDate>Sat, 15 Sep 2012 14:31:22 PDT</pubDate><guid isPermaLink="false">http://www.mirkopagliai.it/?p=2331</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><a href="http://cakephp.org/" target="_blank"><img class=" wp-image-2168 alignleft" title="CakePHP" src="http://www.mirkopagliai.it/wp-content/uploads/2012/01/cake-logo.png" alt="CakePHP" width="126" height="126" />CakePHP</a> works very well if you only use the id to <strong>retrieve records in database</strong>. The problem is when you want to use more than one method to retrieve the same record, for example both the id and the slug.</p>
<p>Yes, you can use two different actions (for example, <em>viewBySlug()</em> for slugs), you can also give the same url using the routing (look <a href="http://book.cakephp.org/2.0/en/development/routing.html#route-elements" target="_blank">here</a>, route elements with regular expressions), but why not use a single action and make your life easier?</p>
<p>The same action, the same logic, the same view: just understand what is the parameter received from the (user) request and shape the <strong>search condition</strong>.<br />
You can implement a callback function to determine the correct database field. If the choice is between <strong>id and slug</strong> simply use <em>is_numeric()</em> function (<a href="http://php.net/manual/en/function.is-numeric.php" target="_blank">documentation</a>)!</p>
<p>Just an example:</p>
<pre class="brush: php; title: ; notranslate">// app/Controller/YourModelNameController.php
public function view($param = null) {
	//There is a parameter?
	if(empty($param))
		throw new NotFoundException(__('Object does not exist'));

	$data = $this-&gt;Post-&gt;find('first', array(
		'conditions' =&gt; is_numeric($param) ? array('id' =&gt; $param) : array('slug' =&gt; $param),
		'fields' =&gt; array('title', 'text', 'created', 'modified'),
	));

	//Found at least one record?
	if(empty($data))
		throw new NotFoundException(__('Object does not exist'));

	$this-&gt;set('data', $data);
}</pre>
<p>All this is possible thanks to the line 10:</p>
<pre class="brush: php; light: true; title: ; notranslate">'conditions' =&gt; is_numeric($param) ? array('id' =&gt; $param) : array('slug' =&gt; $param)</pre>
<p>If <em>$param</em> is <strong>a number or a numeric string</strong> and then if it&#8217;s an id, then the search condition will be:</p>
<pre class="brush: php; light: true; title: ; notranslate">'conditions' =&gt; array('id' =&gt; '1')</pre>
<p>Alternatively, if <em>$param</em> is a string (<strong>non-numeric string</strong>), the search condition will be:</p>
<pre class="brush: php; light: true; title: ; notranslate">'conditions' =&gt; array('slug' =&gt; 'your-post-title')</pre>
<p>If you do not understand what happens, I advise you to review the <strong>ternary operator</strong>. As described in the documentation:</p>
<blockquote><p>The expression <strong><em>(expr1) ? (expr2) : (expr3)</em></strong> evaluates to <em>expr2</em> if <em>expr1</em> evaluates to <strong>TRUE</strong>, and <em>expr3</em> if <em>expr1</em> evaluates to <strong>FALSE</strong>.</p></blockquote>
<p>Is this clear?</p>
<p>Note: please do not confuse <em>is_numeric()</em> with <em>is_int()</em> or <em>is_integer()</em> (<a href="http://www.php.net/manual/en/function.is-int.php">documentation</a>). The<em> is_int()</em> and the <em>is_integer()</em> function <span style="text-decoration: underline;">find whether the type of a variable is integer and not a numeric string</span>, as in this case. If you&#8217;ll use <em>is_int()</em> or <em>is_integer()</em>, integers passed as parameters (get or post) will be always seen as strings, because <span style="text-decoration: underline;">they are numeric strings and not integer</span>.</p>
<img src="http://feeds.feedburner.com/~r/mirkopagliai/~4/rayOHDRJ0CQ" height="1" width="1"/>]]></content:encoded><description>CakePHP works very well if you only use the id to retrieve records in database. The problem is when you want to use more than one method to retrieve the same record, for example both the id and the slug. Yes, you can use two different actions (for example, viewBySlug() for slugs), you can also [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.mirkopagliai.it/cakephp-id-or-slug-both-of-them/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.mirkopagliai.it/cakephp-id-or-slug-both-of-them/</feedburner:origLink></item><item><title>Script bash per backup</title><link>http://feedproxy.google.com/~r/mirkopagliai/~3/yjM0BW_8998/</link><category>Programmazione</category><category>Unix</category><category>backup</category><category>backup con rsync</category><category>bash</category><category>Debian</category><category>GNU/Linux</category><category>rsync</category><category>script bash</category><category>sincronizzazione backup</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mirko Pagliai</dc:creator><pubDate>Sat, 01 Sep 2012 10:15:44 PDT</pubDate><guid isPermaLink="false">http://www.mirkopagliai.it/?p=2327</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Uno <strong>script bash</strong> molto semplice che utilizzo per fare il <strong>backup</strong> di alcune directory dalla mia home (e non solo&#8230;) su un disco esterno (<em>/media/archive</em>).</p>
<p>Non starò qui a spiegarne il funzionamento, anche perché mi sembra comprensibilissimo. Mi limito a far notare che:</p>
<ol>
<li>viene utilizzato <em>rsync</em>. L&#8217;assenza dell&#8217;opzione <em>&#8211;progress</em> fa sì che non venga generato nessun output, l&#8217;assenza dell&#8217;opzione  <em>&#8211;delete</em> evita che vengano cancellati nella destinazione file non presenti nella sorgente (modificare se ritenuto opportuno, avendo sotto mano il manuale di <em>rsync</em>);</li>
<li>la variabile <em>FROM</em> è un array che indica le directory sorgente. Una directory per riga, racchiusa tra apici, come si vede chiaramente;</li>
<li>la variabile <em>TO</em>, invece, indica la directory destinazione;</li>
<li>ho notato che lo script ha difficoltà se i nomi delle sorgenti contengono spazi, anche se agli spazi viene correttamente anteposto il carattere di escape (&#8220;\&#8221;). Non essendo per me un problema, non ho indagato sulla cosa.</li>
</ol>
<pre class="brush: bash; title: ; notranslate">#!/bin/bash

#Directory sorgente
FROM=(
	&quot;/home/mirko/Calibre&quot;
	&quot;/home/mirko/Documentazioni&quot;
	&quot;/home/mirko/Documenti&quot;
	&quot;/home/mirko/Icone&quot;
	&quot;/home/mirko/Pacchetti&quot;
	&quot;/home/mirko/Server&quot;
	&quot;/media/crypted&quot;
)
#Directory destinazione
TO=&quot;/media/archive&quot;

#Colori
RED=&quot;\e[1;31m&quot; 		# Rosso
GREEN=&quot;\e[1;32m&quot; 	# Verde
YELLOW=&quot;\e[1;33m&quot; 	# Giallo
Z=&quot;\e[0m&quot; 		# Reset!

#Se la directory destinazione è scrivibile
if [ -w $TO ]; then
	#Cicla le directory sorgente
	for i in ${FROM[@]}; do
		#Se la directory sorgente è scrivibile
		if [ -r $i ]; then
			#Se la sincronizzazione è andata a buon termine
			if rsync -az ${i} $TO; then
				echo -e $GREEN&quot;${i} sincronizzata&quot;$Z
			#Altrimenti
			else
				echo -e $RED&quot;${i} non sincronizzata&quot;$Z
			fi
		#Altrimenti
		else
			echo -e $YELLOW&quot;${i} non esiste o non è leggibile&quot;$Z
		fi
	done
#Altrimenti
else
	echo -e $RED&quot;$TO non è scrivibile&quot;$Z
fi

exit 0</pre>
<img src="http://feeds.feedburner.com/~r/mirkopagliai/~4/yjM0BW_8998" height="1" width="1"/>]]></content:encoded><description>Uno script bash molto semplice che utilizzo per fare il backup di alcune directory dalla mia home (e non solo&amp;#8230;) su un disco esterno (/media/archive). Non starò qui a spiegarne il funzionamento, anche perché mi sembra comprensibilissimo. Mi limito a far notare che: viene utilizzato rsync. L&amp;#8217;assenza dell&amp;#8217;opzione &amp;#8211;progress fa sì che non venga generato [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.mirkopagliai.it/script-bash-per-backup/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.mirkopagliai.it/script-bash-per-backup/</feedburner:origLink></item><item><title>Affittasi appartamento a Vallevò (Rocca S. Giovanni, CH)</title><link>http://feedproxy.google.com/~r/mirkopagliai/~3/CIP4Bvs8-Y0/</link><category>Blog</category><category>Affittasi appartamento</category><category>Rocca San Giovanni</category><category>stagione estiva</category><category>Vallevò</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mirko Pagliai</dc:creator><pubDate>Tue, 19 Jun 2012 11:27:08 PDT</pubDate><guid isPermaLink="false">http://www.mirkopagliai.it/?p=2311</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><strong>Affittasi appartamento</strong> a <strong>Rocca San Giovanni</strong>, località contrada <strong>Vallevò</strong>, in provincia di Chieti. Disponibile da subito e per tutta la <strong>stagione estiva</strong>.</p>
<p>Soggiorno con angolo cottura, camera doppia, camera singola, bagno, due balconi, due posti auto in garage.<br />
Secondo piano, vista mare.</p>
<p>Per informazioni potete contattarmi tramite email (contatti <a href="http://www.mirkopagliai.it/contatti/" target="_blank">qui</a>), telefono (327 719 3985) o Facebook (<a href="https://www.facebook.com/mirko.pagliai" target="_blank">profilo</a>).</p>
<p>Posizione su Google Maps (la casa è quella centrata in mappa): <a href="http://goo.gl/maps/EpSX" target="_blank">link</a>.</p>
<p>Di seguito, foto dell&#8217;appartamento.</p>
<p><span id="more-2311"></span></p>
<p><a href="http://docs.mirkopagliai.it/documents/foto-vallevo/dsc02170rid.jpg"><img class="alignnone" src="http://docs.mirkopagliai.it/documents/foto-vallevo/dsc02170rid.jpg" alt="" width="800" height="600" /></a></p>
<p><a href="http://docs.mirkopagliai.it/documents/foto-vallevo/dsc02171rid.jpg"><img class="alignnone" src="http://docs.mirkopagliai.it/documents/foto-vallevo/dsc02171rid.jpg" alt="" width="800" height="600" /></a></p>
<p><a href="http://docs.mirkopagliai.it/documents/foto-vallevo/dsc02172.jpg"><img class="alignnone" src="http://docs.mirkopagliai.it/documents/foto-vallevo/dsc02172.jpg" alt="" width="800" height="600" /></a></p>
<p><a href="http://docs.mirkopagliai.it/documents/foto-vallevo/dsc02178rid.jpg"><img class="alignnone" src="http://docs.mirkopagliai.it/documents/foto-vallevo/dsc02178rid.jpg" alt="" width="800" height="600" /></a></p>
<p><a href="http://docs.mirkopagliai.it/documents/foto-vallevo/dsc02180.jpg"><img class="alignnone" src="http://docs.mirkopagliai.it/documents/foto-vallevo/dsc02180.jpg" alt="" width="800" height="600" /></a></p>
<div class="wp-caption alignnone" style="width: 650px"><a href="http://docs.mirkopagliai.it/documents/foto-vallevo/dsc02182.jpg"><img src="http://docs.mirkopagliai.it/documents/foto-vallevo/dsc02182.jpg" alt="" width="640" height="480" /></a><p class="wp-caption-text">Vista mare dal balcone</p></div>
<p><img class="alignnone" src="http://docs.mirkopagliai.it/documents/foto-vallevo/dsc02187.jpg" alt="" width="480" height="640" /></p>
<p><a href="http://docs.mirkopagliai.it/documents/foto-vallevo/dsc02188.jpg"><img class="alignnone" src="http://docs.mirkopagliai.it/documents/foto-vallevo/dsc02188.jpg" alt="" width="480" height="640" /></a></p>
<p><a href="http://docs.mirkopagliai.it/documents/foto-vallevo/dsc02190.jpg"><img class="alignnone" src="http://docs.mirkopagliai.it/documents/foto-vallevo/dsc02190.jpg" alt="" width="640" height="480" /></a></p>
<p><a href="http://docs.mirkopagliai.it/documents/foto-vallevo/dsc02191.jpg"><img class="alignnone" src="http://docs.mirkopagliai.it/documents/foto-vallevo/dsc02191.jpg" alt="" width="640" height="480" /></a></p>
<p><a href="http://docs.mirkopagliai.it/documents/foto-vallevo/dsc02192.jpg"><img class="alignnone" src="http://docs.mirkopagliai.it/documents/foto-vallevo/dsc02192.jpg" alt="" width="640" height="480" /></a></p>
<p><a href="http://docs.mirkopagliai.it/documents/foto-vallevo/dsc02193.jpg"><img class="alignnone" src="http://docs.mirkopagliai.it/documents/foto-vallevo/dsc02193.jpg" alt="" width="640" height="480" /></a></p>
<div class="wp-caption alignnone" style="width: 650px"><a href="http://docs.mirkopagliai.it/documents/foto-vallevo/dsc02195.jpg"><img src="http://docs.mirkopagliai.it/documents/foto-vallevo/dsc02195.jpg" alt="" width="640" height="480" /></a><p class="wp-caption-text">Posto auto garage</p></div>
<img src="http://feeds.feedburner.com/~r/mirkopagliai/~4/CIP4Bvs8-Y0" height="1" width="1"/>]]></content:encoded><description>Affittasi appartamento a Rocca San Giovanni, località contrada Vallevò, in provincia di Chieti. Disponibile da subito e per tutta la stagione estiva. Soggiorno con angolo cottura, camera doppia, camera singola, bagno, due balconi, due posti auto in garage. Secondo piano, vista mare. Per informazioni potete contattarmi tramite email (contatti qui), telefono (327 719 3985) o [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.mirkopagliai.it/affittasi-appartamento-a-vallevo-rocca-s-giovanni-ch/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.mirkopagliai.it/affittasi-appartamento-a-vallevo-rocca-s-giovanni-ch/</feedburner:origLink></item><item><title>VPN: utilizzare solo risorse sulla rete del server</title><link>http://feedproxy.google.com/~r/mirkopagliai/~3/ESQiP5efl3c/</link><category>Guide GNU/Linux e Debian</category><category>configurazione di OpenVPN</category><category>configurazione OpenVPN</category><category>Network Manager</category><category>OpenVPN</category><category>vpn</category><category>vpn connessione server</category><category>vpn non usare connessione server</category><category>vpn solo risorse rete</category><category>vpn utilizza connessione server</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mirko Pagliai</dc:creator><pubDate>Fri, 25 May 2012 05:32:16 PDT</pubDate><guid isPermaLink="false">http://www.mirkopagliai.it/?p=2307</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Oggi mi sono ritrovato a lavorare con una <strong>vpn</strong> (<em>OpenVPN</em>, precisamente). Dopo averla configurata anche sul client, l&#8217;ho lanciata tramite <em>Network Manager</em> (ha l&#8217;apposito plugin), notando però che il client tentava di utilizzare la connessione del server. Subito dopo ho anche notato che al momento del lancio della connessione vpn, <em>Network Manager</em> provvedeva automaticamente a disconnettere qualsiasi altra connessione (ethernet o wifi).</p>
<p>Ho cercato un bel po&#8217;, ma non sono riuscito a capire se dipendesse proprio dalla <strong>configurazione di OpenVPN</strong>, sia quella sul client (che <em>Network Manager</em>, volendo, va a leggere), sia a quella sul server. Soltanto grazie a un forum ho scoperto un&#8217;opzione che finora non conoscevo, anche perché è ben nascosta: modificare la connessione vpn, cliccare sul tab &#8220;Impostazioni IPv4&#8243;, cliccare sul pulsante &#8220;Instradamenti&#8230;&#8221; e quindi mettere la spunta (=abilitare) all&#8217;opzione &#8220;Usare questa connessione solo per risorse sulla sua rete&#8221;.</p>
<p>Immagine:</p>
<p><img class="aligncenter size-full wp-image-2308" title="Solo risorse rete - Network manager" src="http://www.mirkopagliai.it/wp-content/uploads/2012/05/solo_risorse_rete.jpg" alt="Solo risorse rete - Network manager" width="462" height="250" /></p>
<p>Soltanto successivamente, cercando questa opzione su internet, sono risalito &#8211; guarda un po&#8217; &#8211; una <a href="http://guide.debianizzati.org/index.php/VPN_Client_con_Network_Manager">guida</a> di <em>debianizzati.org</em>, che per l&#8217;appunto spiega:</p>
<blockquote><p>Dopo aver configurato una VPN, attivando la connessione il routing viene impostato in modo che tutte le connessioni passino per la VPN: questo significa che viene utilizzato il gateway della VPN non solo per le attività della connessione VPN, ma anche per la normale navigazione sul web.<br />
Per risolvere il problema basta impostare la connessione VPN in modo che il routing del sistema non sia sostituito e che venga aggiunta una regola per instradare le connessioni VPN solo per indirizzi e risorse di rete che si riferiscono alla VPN.<br />
In questo modo se, ad esempio, si naviga con il browser la connessione sarà instradata usando il normale gateway della propria connessione ad internet, mentre se si accede tramite ssh ad un indirizzo interno della LAN a cui è collegata la VPN la connessione sarà instradata tramite la VPN stessa.</p></blockquote>
<img src="http://feeds.feedburner.com/~r/mirkopagliai/~4/ESQiP5efl3c" height="1" width="1"/>]]></content:encoded><description>Oggi mi sono ritrovato a lavorare con una vpn (OpenVPN, precisamente). Dopo averla configurata anche sul client, l&amp;#8217;ho lanciata tramite Network Manager (ha l&amp;#8217;apposito plugin), notando però che il client tentava di utilizzare la connessione del server. Subito dopo ho anche notato che al momento del lancio della connessione vpn, Network Manager provvedeva automaticamente a [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.mirkopagliai.it/vpn-utilizzare-solo-risorse-sulla-rete-del-server/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.mirkopagliai.it/vpn-utilizzare-solo-risorse-sulla-rete-del-server/</feedburner:origLink></item><item><title>Nuova categoria: Guide GNU/Linux e Debian</title><link>http://feedproxy.google.com/~r/mirkopagliai/~3/wiE0U0KpkaU/</link><category>Blog</category><category>Debian</category><category>distribuzione GNU/Linux</category><category>GNU/Linux</category><category>guide Debian</category><category>guide GNU/Linux</category><category>guide GNU/Linux e Debian</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mirko Pagliai</dc:creator><pubDate>Thu, 24 May 2012 06:16:10 PDT</pubDate><guid isPermaLink="false">http://www.mirkopagliai.it/?p=2301</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Mi sono reso conto che su questo blog ho avuto modo di scrivere vere e proprie <strong>guide per GNU/Linux e Debian</strong>, nonché svariati tips and tricks di grande utilità riguardanti gli stessi temi.<br />
E non certamente per caso, semmai perché ogni volta che ho avuto modo di affrontare argomenti non documentati o scarsamente documentati sul web, ho ben pensato di prodigarmi per colmare personalmente queste lacune e nella speranza di poter essere utile ad altri utenti (piccolo auto-elogio, concedetemelo). Per dire, io stesso, quando mi trovo ad installare <strong>Debian</strong> o un&#8217;altra <strong>distribuzione GNU/Linux</strong> su una nuova macchina ricorro al mio blog per alcune questioni.</p>
<p>Fino ad oggi tutto questo materiale è sempre stato raccolto nella <a href="http://www.mirkopagliai.it/?cat=112">categoria Unix</a>, dove però è presente anche dell&#8217;altro come &#8211; per dire &#8211; news, commenti e via dicendo. Per valorizzarlo, ho quindi pensato di creare una nuova, specifica sotto-categoria (<em>Guide GNU/Linux e Debian</em>), nella cui <a href="http://www.mirkopagliai.it/category/unix/guide-gnulinux-e-debian/">pagina</a> gli articoli sono ordinati in lista per una più semplice individuazione consultazione (d&#8217;altronde i titoli sono sufficientemente auto-esplicativi).<br />
Per l&#8217;occasione, ho aggiunto anche un link diretto nella topbar (la barra superiore di questo blog), così da potervi accedere più velocemente.</p>
<p>Resta inteso che la precedente <a href="http://www.mirkopagliai.it/category/unix/guide-gnulinux-e-debian/">categoria Unix</a>, essendo &#8220;categoria padre&#8221; di questa sotto-categoria, continuerà a contenere questi articoli, oltre ovviamente ad altri.<br />
Per accedere agli articoli tramite categorizzazione, si possono inoltre utilizzare i tag (parole chiave) inseriti negli articoli: sulla barra laterale a destra c&#8217;è la tag-cloud.</p>
<img src="http://feeds.feedburner.com/~r/mirkopagliai/~4/wiE0U0KpkaU" height="1" width="1"/>]]></content:encoded><description>Mi sono reso conto che su questo blog ho avuto modo di scrivere vere e proprie guide per GNU/Linux e Debian, nonché svariati tips and tricks di grande utilità riguardanti gli stessi temi. E non certamente per caso, semmai perché ogni volta che ho avuto modo di affrontare argomenti non documentati o scarsamente documentati sul web, [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.mirkopagliai.it/nuova-categoria-guide-gnulinux-e-debian/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.mirkopagliai.it/nuova-categoria-guide-gnulinux-e-debian/</feedburner:origLink></item><item><title>Mirror ftp.it.debian.org e repository di Debian Lenny</title><link>http://feedproxy.google.com/~r/mirkopagliai/~3/j-sn82rbgTc/</link><category>Unix</category><category>/etc/apt/sources.list</category><category>archivi Debian</category><category>Debian</category><category>Debian archive</category><category>Debian Lenny</category><category>Debian Wheezy</category><category>Debianizzati.org</category><category>forum debianizzati.org</category><category>ftp.it.debian.org</category><category>gestione dei pacchetti</category><category>Lenny</category><category>mirror debian</category><category>mirror Fastweb</category><category>mirror più veloce</category><category>repository Debian</category><category>repository Debian Lenny</category><category>repository ftp.it.debian.org</category><category>repository Lenny</category><category>sources.list</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mirko Pagliai</dc:creator><pubDate>Wed, 23 May 2012 15:35:04 PDT</pubDate><guid isPermaLink="false">http://www.mirkopagliai.it/?p=2256</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><img class="alignleft  wp-image-629" title="Debian" src="http://www.mirkopagliai.it/wp-content/uploads/2010/10/debian_splash-150x150.png" alt="Debian" width="105" height="105" />Ultimamente molte delle discussioni aperte sul <a href="http://forum.debianizzati.org/">forum di debianizzati.org</a> riguardano due soli argomenti. Scrivo questo post sperando che venga ben indicizzato e che gli utenti riescano a trovarlo prima di aprire per l&#8217;ennesima volta la stessa discussione &#8211; anche perché costringete me a rispondere con un &#8220;fai una ricerca sul forum, l&#8217;argomento è già stato ampiamente trattato&#8221; :-)</p>
<p>Il mirror <em>ftp.it.debian.org</em> in questi giorni ha diversi problemi e spesso risulta <span style="text-decoration: underline;">offline</span>. Utilizzando un qualsiasi metodo di <strong>gestione dei pacchetti</strong> (<em>apt-get</em>, <em>aptitude</em>, <em>synaptic</em>, etc.) ricevete un errore simile a questo, ripetuto più volte:</p>
<pre class="brush: bash; light: true; title: ; notranslate"> Impossibile iniziare la connessione a ftp.it.debian.org:80 (2001:1418:13:1::5). - connect (101: La rete non è raggiungibile) [IP: 2001:1418:13:1::5 80]</pre>
<p>Potete sincerarvene semplicemente aprendo il mirror con il vostro browser (<a href="http://ftp.it.debian.org/debian/">http://ftp.it.debian.org/debian/</a>): se non lo riuscite a sfogliare così, significa appunto che non è momentaneamente disponibile. È sufficiente modificare il vostro <em>sources.list</em> con uno di questi (a scelta):</p>
<pre class="brush: plain; light: true; title: ; notranslate">http://debian.fastbull.org/debian/

http://debian.fastweb.it/debian

ftp://ftp.eutelia.it/Debian_Mirror

http://mi.mirror.garr.it/mirrors/debian/


http://ftp.bononia.it/debian/</pre>
<p>In un mio precedente post (<a href="http://www.mirkopagliai.it/debian-i-mirror-piu-veloci/">questo</a>) è spiegato come verificare qual è per voi il <strong>mirror più veloce</strong>. Vi consiglio di eseguire il test, poiché i risultati possono variare sia per la zona geografica, sia per l&#8217;operatore e tipo di linea che avete in uso (nel mio caso il più veloce è il <strong>mirror di Fastweb</strong>, ma forse non a caso sono proprio sotto Fastweb, è plausibile che sia così solo per chi si trova nella stessa condizione).</p>
<p>Altra questione riguarda <strong>Debian Lenny</strong>: è la old-stable, versione molto vecchia e semplicemente i <strong>repository di Lenny</strong> sono stati &#8220;spenti&#8221;, quindi qualsiasi operazione tentiate di compiere non andrà a buon fine. Il contenuto dei repository è stato spostato negli <a href="http://www.debian.org/distrib/archive">archivi Debian</a>, così che possa comunque essere ancora utilizzata. Ad ogni modo, per tutta una serie di motivi (questo è importante, ma non l&#8217;unico. Anzi&#8230;) sarebbe ora di aggiornare versione e passare almeno a <strong>Debian Wheezy</strong>, l&#8217;attuale stable.</p>
<img src="http://feeds.feedburner.com/~r/mirkopagliai/~4/j-sn82rbgTc" height="1" width="1"/>]]></content:encoded><description>Ultimamente molte delle discussioni aperte sul forum di debianizzati.org riguardano due soli argomenti. Scrivo questo post sperando che venga ben indicizzato e che gli utenti riescano a trovarlo prima di aprire per l&amp;#8217;ennesima volta la stessa discussione &amp;#8211; anche perché costringete me a rispondere con un &amp;#8220;fai una ricerca sul forum, l&amp;#8217;argomento è già stato [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.mirkopagliai.it/mirror-ftp-it-debian-org-e-repository-di-debian-lenny/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.mirkopagliai.it/mirror-ftp-it-debian-org-e-repository-di-debian-lenny/</feedburner:origLink></item><item><title>Amarok 1.4.10: aggiornamenti</title><link>http://feedproxy.google.com/~r/mirkopagliai/~3/Wekg7Tu8UB4/</link><category>Guide GNU/Linux e Debian</category><category>Unix</category><category>Amarok</category><category>Amarok 1.4.10</category><category>Debian</category><category>Debian 32bit</category><category>Debian 64bit</category><category>Debian Lenny</category><category>Debian Sid</category><category>Debian Squeeze</category><category>Debian stable</category><category>Debian unstable</category><category>dpkg</category><category>Synaptic</category><category>vecchia versione Amarok</category><category>versione di Debian</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mirko Pagliai</dc:creator><pubDate>Fri, 18 May 2012 03:19:03 PDT</pubDate><guid isPermaLink="false">http://www.mirkopagliai.it/?p=2246</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><img class="alignleft  wp-image-2191" title="Amarok logo" src="http://www.mirkopagliai.it/wp-content/uploads/2012/01/amarok-logo-180x180.jpg" alt="Amarok logo" width="88" height="88" />Avevo scritto questo <a href="http://www.mirkopagliai.it/amarok-1-4-10/">articolo</a> su come installare <strong>Amarok 1.4.10</strong> su recenti versioni di <strong>Debian</strong>, per chi preferisce la <strong>vecchia versione</strong> alla nuova. Visto che sono cambiate un po&#8217; di cose nei pacchetti disponibili, questo articolo è un aggiornamento della <a href="http://www.mirkopagliai.it/amarok-1-4-10/">precedente guida</a>.</p>
<p>Si cominci sempre con installare un po&#8217; di pacchetti necessari e che dovrebbero essere disponibili a prescindere dalla <strong>versione di Debian</strong> in uso:</p>
<pre class="brush: bash; light: true; title: ; notranslate">aptitude install libqt3-mt libifp4 libkarma0 libnjb5 libpq5 liblua50 liblualib50 libxine1 libesd0 oss-compat</pre>
<p>Fatto questo, abbiamo bisogno dei seguenti pacchetti:</p>
<pre class="brush: plain; light: true; title: ; notranslate">amarok
amarok-common
amarok-engine-xine
kdelibs4c2a
kdelibs-data
libarts1c2a
libartsc0
libaudiofile0
libavahi-qt3-1
libgpod3-nogtk
libmtp7
libmysqlclient15off
libtunepimp5</pre>
<p>Notare che:</p>
<ol>
<li>i primi tre pacchetti (<em>amarok</em>, <em>amarok-common</em> e <em>amarok-engine-xine</em>) devono essere alla versione 1.4.x;</li>
<li>alcuni di questi pacchetti sono disponibili solo per <strong>Debian Lenny</strong> (<em>oldstable</em>), altri anche se <strong>Debian Squeeze</strong> (attuale <em>stable</em>) e/o su <strong>Debian Sid</strong> (<em>unstable</em>).</li>
</ol>
<p>Se volete, quindi, potete procedere tramite pinning (<a href="http://www.mirkopagliai.it/debian-repository-e-pinning/">guida</a>), almeno per i pacchetti presenti su Squeeze e/o Unstable. Ma per agevolarvi il lavoro, ho creato due comodi archivi <em>.tar.gz</em>, uno per <strong>Debian a 32bit</strong> (<a href="http://docs.mirkopagliai.it/packages/amarok_32bit.tar.gz">qui</a>) e uno per <strong>Debian a 64bit</strong> (<a href="http://docs.mirkopagliai.it/packages/amarok_64bit.tar.gz">qui</a>).</p>
<p>Scaricate quello corrispondente alla vostra architettura. Per 32bit:</p>
<pre class="brush: bash; light: true; title: ; notranslate">http://docs.mirkopagliai.it/packages/amarok_32bit.tar.gz</pre>
<p>Per 64bit:</p>
<pre class="brush: bash; light: true; title: ; notranslate">http://docs.mirkopagliai.it/packages/amarok_64bit.tar.gz</pre>
<p>Decomprimete l&#8217;archivio:</p>
<pre class="brush: bash; light: true; title: ; notranslate">tar -zxvf amarok*.tar.gz</pre>
<p>Quindi portatevi all&#8217;interno della directory estratta e procedete all&#8217;installazione di tutti i file <em>.deb</em> tramite <em>dpkg</em>:</p>
<pre class="brush: bash; light: true; title: ; notranslate">cd amarok*
dpkg -i *.deb</pre>
<p>Ricordatevi, alla fine, di bloccare i pacchetti <em>amarok</em> e <em>amarok-common</em>, altrimenti vi chiederà continuamente di aggiornarli:</p>
<pre class="brush: bash; light: true; title: ; notranslate">aptitude hold amarok amarok-common</pre>
<p>(la stessa cosa va fatta all&#8217;interno di <strong>Synaptic</strong>, selezionando i pacchetti e poi scegliendo dal menù &#8220;Pacchetto&#8221; l&#8217;opzione &#8220;Blocca versione&#8221;)</p>
<p>Enjoy Amarok 1.4.10 ;-)</p>
<img src="http://feeds.feedburner.com/~r/mirkopagliai/~4/Wekg7Tu8UB4" height="1" width="1"/>]]></content:encoded><description>Avevo scritto questo articolo su come installare Amarok 1.4.10 su recenti versioni di Debian, per chi preferisce la vecchia versione alla nuova. Visto che sono cambiate un po&amp;#8217; di cose nei pacchetti disponibili, questo articolo è un aggiornamento della precedente guida. Si cominci sempre con installare un po&amp;#8217; di pacchetti necessari e che dovrebbero essere [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.mirkopagliai.it/amarok-1-4-10-aggiornamenti/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://www.mirkopagliai.it/amarok-1-4-10-aggiornamenti/</feedburner:origLink></item><item><title>Facebook regala antivirus? Rifiutate il regalo</title><link>http://feedproxy.google.com/~r/mirkopagliai/~3/mIs0so0m4yU/</link><category>Internet</category><category>acquisti suggeriti</category><category>acquisto acritico</category><category>Avast</category><category>Avg</category><category>Facebook</category><category>La Repubblica</category><category>licenze antivirus</category><category>licenze antivirus gratuite</category><category>Linux</category><category>marketing</category><category>passare a Linux</category><category>passate a Linux</category><category>proteggere dallo spam</category><category>prova gratuita di un prodotto commerciale</category><category>software antivirus</category><category>spam Facebook</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mirko Pagliai</dc:creator><pubDate>Thu, 26 Apr 2012 06:53:52 PDT</pubDate><guid isPermaLink="false">http://www.mirkopagliai.it/?p=2236</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Oggi è apparso <a href="http://www.repubblica.it/tecnologia/2012/04/26/news/facebook_sposa_gli_antivirus_sei_mesi_gratuiti_per_gli_utenti-33980772/">questo</a> articolo su <em>La Repubblica</em>. Da quanto riportato, sembrerebbe che <em>Facebook</em> offrirà ai suoi utenti <strong>licenze antivirus gratuite</strong> che vanno da sei mesi fino ad un anno. Nell&#8217;articolo si legge che</p>
<blockquote><p>Gli obbiettivi sono almeno due: rendere educare gli utenti alla protezione del computer, e rendere il social network più sicuro e gli iscritti meno vulnerabili agli attacchi di spam.</p></blockquote>
<p>Primo, un antivirus non protegge e non può <strong>proteggere dallo spam</strong>, tanto meno dalla <strong>spam presente su Facebook</strong>: se un altro utente vuole postare della pubblicità sulla vostra bacheca o se ricevete messaggi privati dagli stessi contenuti, un antivirus nulla può fare. Semmai dovrebbe essere <em>Facebook</em> a prevenire (a livello di codice della propria piattaforma) questi episodi, piuttosto che consigliare &#8220;soluzioni terze&#8221; di scarsa utilità.<br />
Secondo, si parla di &#8220;educazione&#8221;, ma non si capisce perché l&#8217;educazione debba passare tramite la <strong>prova gratuita di un prodotto commerciale</strong> (e semmai non fosse chiaro: vi regalano dai 6 ai 12 mesi di utilizzo gratuito, poi dovrete pagare), cosa che sembra piuttosto marketing &#8211; appunto &#8211; commerciale.</p>
<p>Ed è proprio di <strong>marketing</strong> che si parla: le case produttrici di <strong>software antivirus</strong> pagano <em>Facebook</em>, in cambio <em>Facebook</em> vi offre per inter-tramite i loro prodotti in prova gratuita, consigliando e suggerendo (e non è cosa da poco, perché ormai è fin dentro la nostra vita e molti si fidano); quando la prova gratuita termina, dovete procedere al pagamento della licenza annuale.<br />
Insomma, <em>Facebook</em> e le case produttrici (l&#8217;articolo riporta <em>Symantec</em>, <em>McAfee</em>, <em>Trend Micro</em>, <em>Sophos</em> e <em>Microsoft</em>) guadagno, voi intanto venite &#8220;educati&#8221;. Sì, educati all&#8217;<strong>acquisto acritico</strong> e di massa.</p>
<p>Diffidate di questi articoli, diffidate anche delle rubriche informatiche e tecnologiche dei vari quotidiani italiani, che sono di una superficialità spaventosa e si limitano soltanto a fare da vetrina per prodotti, diffidate soprattutto delle relative rubriche su <em>La Repubblica</em>, che in questo senso detiene un vero e proprio record. Diffidate anche degli &#8220;acquisti suggeriti&#8221; e dagli <strong>acquisti suggeriti</strong> in particolare da Facebook. Ma fin qui spero siate capaci di arrivarci anche da soli.</p>
<p>Se utilizzate Windows, guardate a soluzioni gratuite come <a href="http://www.avast.com/it-it/free-antivirus-download">Avast</a> e <a href="http://free.avg.com/it-it/pagina-iniziale">Avg</a>. È dimostrato, informaticamente parlando, come ad oggi queste soluzioni gratuite siano pari se non superiori a quelle a pagamento, quindi non si capisce perché scegliere diversamente, soprattutto perché dover essere educati diversamente, per giunta tramite metodi subdoli.<br />
Se volete fare cosa ancora migliore, allora<a href="http://www.istitutomajorana.it/passare-linux/index.html"> passate a Linux</a> e dormite sonni tranquilli.</p>
<img src="http://feeds.feedburner.com/~r/mirkopagliai/~4/mIs0so0m4yU" height="1" width="1"/>]]></content:encoded><description>Oggi è apparso questo articolo su La Repubblica. Da quanto riportato, sembrerebbe che Facebook offrirà ai suoi utenti licenze antivirus gratuite che vanno da sei mesi fino ad un anno. Nell&amp;#8217;articolo si legge che Gli obbiettivi sono almeno due: rendere educare gli utenti alla protezione del computer, e rendere il social network più sicuro e [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.mirkopagliai.it/facebook-regala-antivirus-rifiutate-il-regalo/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.mirkopagliai.it/facebook-regala-antivirus-rifiutate-il-regalo/</feedburner:origLink></item><item><title>Localepurge solo in manuale</title><link>http://feedproxy.google.com/~r/mirkopagliai/~3/oa75p3kaymI/</link><category>Guide GNU/Linux e Debian</category><category>Unix</category><category>/etc/apt/apt.conf.d/99-localepurge.</category><category>apt-get</category><category>aptitude</category><category>Debian</category><category>Debian Linux</category><category>GNU/Linux</category><category>localepurge</category><category>mantenere pulito il sistema</category><category>pacchetti di sistema</category><category>rimuovere file non necessari</category><category>Synaptic</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mirko Pagliai</dc:creator><pubDate>Sat, 21 Apr 2012 07:10:05 PDT</pubDate><guid isPermaLink="false">http://www.mirkopagliai.it/?p=2227</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Sulle mie <strong>Debian</strong> non manca mai <strong>localepurge</strong>, un ottimo tool per <strong>mantenere pulito il sistema</strong> e <strong>rimuovere file non necessari</strong>.</p>
<blockquote><p>Questo è uno script per recuperare lo spazio su disco sprecato per file locale, localizzazioni di Gnome/KDE e pagine di manuale localizzate non necessari. In base all&#8217;installazione, è possibile recuperare qualcosa come 200, 300 o più mega byte di spazio su disco dedicato alle localizzazioni che molto probabilmente non avrebbero nessun utilizzo. Sarà invocato automagicamente al termine di ogni processo di installazione di apt.</p>
<p>Notare che questo strumento è un trucco che *non* è integrato nel sistema di gestione dei pacchetti di Debian e perciò non è adatto ai deboli di cuore. Questo programma interferisce con la gestione dei pacchetti di Debian e provoca strani, ma di solito innocui, comportamenti nei programmi correlati ad apt/dpkg, come dpkg-repack, reportbug, ecc. La responsabilità e i possibili danni al sistema derivanti dal suo uso ricadono perciò nelle mani dell&#8217;amministratore di sistema (le vostre).</p>
<p>Ci si astenga categoricamente dal riportare uno qualsiasi di questi malfunzionamenti incolpando localepurge se il proprio sistema è stato danneggiato dal suo uso. Se non si sa quello che si sta facendo e non si possono risolvere autonomamente i danni derivanti dall&#8217;uso, allora semplicemente non si usi questo pacchetto.</p></blockquote>
<p>Tuttavia, se lo utilizzate avrete sicuramente notato come venga lanciato ogni qualvolta andiamo compiere una qualsiasi operazione con i <strong>pacchetti di sistema</strong> (con <em>apt-get</em> e <em>aptitude</em>, ma anche con <em>synaptic</em>). Comportamento &#8211; almeno per quanto mi riguarda &#8211; fastidioso e dispendioso, ma che può ovviamente essere disabilitato.</p>
<p>Durante la sua installazione, infatti, localepurge crea il file <em>/etc/apt/apt.conf.d/99-localepurge</em>, che si occupa appunto dell&#8217;autostart ogni volta che viene compiuta un&#8217;operazione inerente apt. Il contenuto del file:</p>
<pre class="brush: bash; title: ; notranslate">// Get rid of unneeded locale files after each package installation

DPkg
{
Post-Invoke {&quot;if [ -x /usr/sbin/localepurge ] &amp;&amp; [ $(ps w -p $PPID | grep -c remove) != 1 ]; then /usr/sbin/localepurge; else exit 0; fi&quot;;};
};</pre>
<p>Ebbene &#8211; incredibile a dirsi :-) &#8211; per disabilitare l&#8217;autostart di localepurge è sufficiente commentare quelle quattro linee di codice (anteporre il carattere <em>#</em> alle linee 3-6). Viceversa, per ripristinarlo, togliere i commenti.</p>
<img src="http://feeds.feedburner.com/~r/mirkopagliai/~4/oa75p3kaymI" height="1" width="1"/>]]></content:encoded><description>Sulle mie Debian non manca mai localepurge, un ottimo tool per mantenere pulito il sistema e rimuovere file non necessari. Questo è uno script per recuperare lo spazio su disco sprecato per file locale, localizzazioni di Gnome/KDE e pagine di manuale localizzate non necessari. In base all&amp;#8217;installazione, è possibile recuperare qualcosa come 200, 300 o più mega byte [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.mirkopagliai.it/localepurge-solo-in-manuale/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.mirkopagliai.it/localepurge-solo-in-manuale/</feedburner:origLink></item><item><title>Php: array/menù a tendina con mesi di pubblicazione</title><link>http://feedproxy.google.com/~r/mirkopagliai/~3/-0TNJ00R-oY/</link><category>Programmazione</category><category>menù a tendina</category><category>menù a tendina con mesi</category><category>menù mesi di pubblicazione</category><category>php</category><category>scegliere il mese di pubblicazione</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mirko Pagliai</dc:creator><pubDate>Thu, 19 Apr 2012 05:56:18 PDT</pubDate><guid isPermaLink="false">http://www.mirkopagliai.it/?p=2218</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Oggi mi sono trovato di fronte a un&#8217;esigenza un po&#8217; particolare: per un piccolo motore di ricerca di articoli, creare un <strong>menù a tendina</strong> (<em>select</em>) per <strong>scegliere il mese di pubblicazione</strong>. La difficoltà sta nel realizzare un array ben curato con i valori da ciclare per poi creare il citato menù a tendina.</p>
<p>Il menù a tendina, ovviamente, di default dovrebbe partire dal momento attuale (cioè mese e anno corrente) e arrivare fino al mese di apertura del sito. Ad esempio, posto che l&#8217;eventuale sito abbia aperto a giugno 2010 e visto che ora siamo in aprile 2012, i valori dovrebbero essere questi:</p>
<pre class="brush: plain; light: true; title: ; notranslate">aprile 2012
marzo 2012
febbraio 2012
gennaio 2012
dicembre 2011
...
agosto 2010
luglio 2010
giugno 2010</pre>
<p>Dovrebbe tuttavia permettere anche di indicare valori di partenza e/o di arrivo diversi, oltre a quelli di default. Di seguito, la funzione che ho scritto, ben commentata (non dovrebbe necessitare di ulteriori spiegazioni):</p>
<pre class="brush: php; title: ; notranslate">/**
* Restituisce un array dei mesi (accompagnati dall'anno) in cui possono essere stati pubblicati degli articoli
* (l'array ha chiavi come &quot;2012-02&quot; e valori come &quot;febbraio 2012&quot;)
* @param int $final_month Mese di arrivo. Se non indicato, letto dalla configurazione
* @param int $final_year Anno di arrivo. Se non indica, letto dalla configurazione
* @param int $starting_month Mese di partenza. Se non indicato, impostato all'attuale
* @param int $starting_year Anno di arrivo. Se non indicato, impostato all'attuale
* @return array Array dei mesi
*/
function getPublicationMonths($final_month = null, $final_year = null, $starting_month = null, $starting_year=null) {
	//Se non è stato passato il mese o l'anno di arrivo, imposta dalle constanti di configurazione
	$final_month = !is_null($final_month) ? $final_month : FINAL_MONTH;
	$final_year = !is_null($final_year) ? $final_year : FINAL_YEAR;

	//Se non è stati passato il mese o l'anno di partenza, imposta al momento attuale
	$starting_month = !is_null($starting_month) ? $starting_month : date('n');
	$starting_year = !is_null($starting_year) ? $starting_year : date('Y');

	//Prepara l'array in cui inserire i dati
	$data = array();

	//Cicla i dati. Il ciclo ha fine quando vengono raggiunti mese e anno di arrivo
	while($starting_year != $final_year || $starting_month+1 != $final_month) {
		//Se il mese è valido (&gt;=0), aggiunge i dati all'array
		if($starting_month) {
			$data[$starting_year.'-'.date('m', mktime(0, 0, 0, $starting_month))] = strftime('%B', mktime(0, 0, 0, $starting_month)).' '.$starting_year;
			$starting_month -= 1;
		}
		//Se il mese non è valido, imposta il mese a dodice e decrementa l'anno
		else {
			$starting_month = 12;
			$starting_year -= 1;
		}
	}

	return($data);
}</pre>
<p>Giusto un aspetto che potrebbe non essere chiaro: se non viene indicato il mese e/o l&#8217;anno finali, utilizza le constanti <em>FINAL_MONTH</em> e/o <em>FINAL_YEAR</em> (che si suppone siano state già state impostate altrove e che riportano appunto mese e anno di apertura del sito. Comunque, nulla di impedisce di fare una query per selezionare l&#8217;articolo più vecchio e estrarre i dati da lì); se non viene indicato il mese e/o l&#8217;anno di partenza, utilizza mese e anno attuali.</p>
<p>Quindi, lanciandola così:</p>
<pre class="brush: php; light: true; title: ; notranslate">getPublicationMonths('6', '2010');</pre>
<p>(equivale a dire: da oggi (aprile 2012) a giugno 2010)</p>
<p>E utilizzando un altro ciclo per creare l&#8217;html del menù a tendina (perché la funzione restituisce solo un array), il risultato è questo:</p>
<pre class="brush: xml; title: ; notranslate">&lt;select&gt;
	&lt;option value=&quot;&quot;&gt;-- data --&lt;/option&gt;
	&lt;option value=&quot;2012-04&quot;&gt;aprile 2012&lt;/option&gt;
	&lt;option value=&quot;2012-03&quot;&gt;marzo 2012&lt;/option&gt;
	&lt;option value=&quot;2012-02&quot;&gt;febbraio 2012&lt;/option&gt;
	&lt;option value=&quot;2012-01&quot;&gt;gennaio 2012&lt;/option&gt;
	&lt;option value=&quot;2011-12&quot;&gt;dicembre 2011&lt;/option&gt;
	&lt;option value=&quot;2011-11&quot;&gt;novembre 2011&lt;/option&gt;
	&lt;option value=&quot;2011-10&quot;&gt;ottobre 2011&lt;/option&gt;
	&lt;option value=&quot;2011-09&quot;&gt;settembre 2011&lt;/option&gt;
	&lt;option value=&quot;2011-08&quot;&gt;agosto 2011&lt;/option&gt;
	&lt;option value=&quot;2011-07&quot;&gt;luglio 2011&lt;/option&gt;
	&lt;option value=&quot;2011-06&quot;&gt;giugno 2011&lt;/option&gt;
	&lt;option value=&quot;2011-05&quot;&gt;maggio 2011&lt;/option&gt;
	&lt;option value=&quot;2011-04&quot;&gt;aprile 2011&lt;/option&gt;
	&lt;option value=&quot;2011-03&quot;&gt;marzo 2011&lt;/option&gt;
	&lt;option value=&quot;2011-02&quot;&gt;febbraio 2011&lt;/option&gt;
	&lt;option value=&quot;2011-01&quot;&gt;gennaio 2011&lt;/option&gt;
	&lt;option value=&quot;2010-12&quot;&gt;dicembre 2010&lt;/option&gt;
	&lt;option value=&quot;2010-11&quot;&gt;novembre 2010&lt;/option&gt;
	&lt;option value=&quot;2010-10&quot;&gt;ottobre 2010&lt;/option&gt;
	&lt;option value=&quot;2010-09&quot;&gt;settembre 2010&lt;/option&gt;
	&lt;option value=&quot;2010-08&quot;&gt;agosto 2010&lt;/option&gt;
	&lt;option value=&quot;2010-07&quot;&gt;luglio 2010&lt;/option&gt;
	&lt;option value=&quot;2010-06&quot;&gt;giugno 2010&lt;/option&gt;
&lt;/select&gt;</pre>
<p>Che, graficamente, si traduce in questo:</p>
<p><img class="aligncenter size-full wp-image-2220" title="Menù a tendina con mesi" src="http://www.mirkopagliai.it/wp-content/uploads/2012/04/menu_a_tendina_con_mesi.jpg" alt="Menù a tendina con mesi" width="167" height="400" /></p>
<p>Come potete vedere dall&#8217;output html di cui sopra, il valore selezionato sarà nel formato (formato di <a href="http://it2.php.net/manual/en/function.date.php" target="_blank">date()</a>):</p>
<pre class="brush: plain; light: true; title: ; notranslate">Y-m</pre>
<p>Mentre i valori dell&#8217;array sono in questo formato (chiave =&gt; valore):</p>
<pre class="brush: plain; light: true; title: ; notranslate">Y-m =&gt; F Y</pre>
<img src="http://feeds.feedburner.com/~r/mirkopagliai/~4/-0TNJ00R-oY" height="1" width="1"/>]]></content:encoded><description>Oggi mi sono trovato di fronte a un&amp;#8217;esigenza un po&amp;#8217; particolare: per un piccolo motore di ricerca di articoli, creare un menù a tendina (select) per scegliere il mese di pubblicazione. La difficoltà sta nel realizzare un array ben curato con i valori da ciclare per poi creare il citato menù a tendina. Il menù [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.mirkopagliai.it/php-arraymenu-a-tendina-con-mesi-di-pubblicazione/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.mirkopagliai.it/php-arraymenu-a-tendina-con-mesi-di-pubblicazione/</feedburner:origLink></item><item><title>Tutorial Jquery: menù a tendina verso l’alto</title><link>http://feedproxy.google.com/~r/mirkopagliai/~3/9ZcSHseUknI/</link><category>Programmazione</category><category>codice html</category><category>codice Jquery</category><category>css</category><category>elementi html</category><category>fogli di stile</category><category>html</category><category>Javascript</category><category>jQuery</category><category>menù a tendina</category><category>menù a tendina verso l'alto</category><category>Tutorial Jquery</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mirko Pagliai</dc:creator><pubDate>Wed, 28 Mar 2012 09:34:44 PDT</pubDate><guid isPermaLink="false">http://www.mirkopagliai.it/?p=2208</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>In un precedente articolo <a href="http://www.mirkopagliai.it/tutorial-jquery-menu-a-tendina">Tutorial Jquery: menù a tendina</a> ho ricevuto il seguente commento:</p>
<blockquote><p>Ciao Mirko, ho seguito alla lettera il tuo tutorial… nel mio caso mi servirebbe un menu con una tendina che si aprisse verso l’alto e non verso il basso… sapresti darmi qualche suggerimento su come fare? ti ringrazio!</p></blockquote>
<p>Si può fare? Sì, vediamo subito di aiutare Paolo.</p>
<p>Il problema che si riscontra è generalmente questo: normalmente, gli <strong>elementi html</strong> vengono disposti dall&#8217;alto verso il basso (oltre che da sinistra verso destra). Noi dobbiamo invertire questo caso, ed è possibile solo utilizzando il posizionamento assoluto.</p>
<p>Partiamo dal <a href="http://www.mirkopagliai.it/tutorial-jquery-menu-a-tendina">precedente esempio</a>. Il <strong>codice html</strong> era questo:</p>
<pre class="brush: xml; title: ; notranslate">&lt;ul id=&quot;navbar&quot;&gt;
	&lt;li&gt;&lt;a href=&quot;pagina1.html&quot;&gt;Pagina 1&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;
            &lt;a href=&quot;#&quot;&gt;Pagina 2&lt;/a&gt;
            &lt;ul&gt;
               &lt;li&gt;&lt;a href=&quot;paginaA.html&quot;&gt;Pagina A&lt;/a&gt;&lt;/li&gt;
               &lt;li&gt;&lt;a href=&quot;paginaB.html&quot;&gt;Pagina B&lt;/a&gt;&lt;/li&gt;
               &lt;li&gt;&lt;a href=&quot;paginaC.html&quot;&gt;Pagina C&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
        &lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;pagina3.html&quot;&gt;Pagina 3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</pre>
<p>Mentre il foglio di stile è disponibile <a href="http://docs.mirkopagliai.it/html/menu-tendina/style1.css">qui</a>.</p>
<p>Bene, la prima cosa da fare, come detto, è dare una posizione assoluta (<em>position: absolute</em>) ai sotto-menù. È però prima necessario indicare qual è l&#8217;elemento di riferimento (<em>position: relative</em>): nel nostro caso sarà <em>#navbar</em>, cioè il menù principale.<br />
Quindi la posizione: dal basso, dalla parte inferiore del menù principale (&#8220;bottom&#8221;) è sufficiente spostare il sotto-menù dello stesso numero di pixel dell&#8217;altezza del menù principale (che nel precedente esempio è di 25 pixel). Ovvero (riporto solo le regole che incidono su questo caso, per il resto &#8211; come già detto &#8211; guardate l&#8217;esempio precedente):</p>
<pre class="brush: css; title: ; notranslate">#navbar {
	height: 25px;
	position: relative;  /* Necessario perché fa da riferimento alla posizione dei sotto-menù (successiva regola) */
}
#navbar ul {
	bottom: 25px; /* Deve essere uguale all'altezza di #navbar (precedente regola) */
	position: absolute;
}</pre>
<p>Graficamente il nuovo menù apparirà così:<br />
<img class="aligncenter size-full wp-image-2209" title="jquery_submenu" src="http://www.mirkopagliai.it/wp-content/uploads/2012/03/jquery_submenu.jpg" alt="jquery_submenu" width="357" height="121" /></p>
<p>Anche qui, aggiungiamo ai sotto-menù la regola <em>display: none</em>, così che di default, al caricamento della pagina, non vengano mostrati.</p>
<p>Infine, proprio come nel precedente esempio, possiamo aggiungere lo stesso<strong> codice Jquery</strong>:</p>
<pre class="brush: jscript; title: ; notranslate">&lt;script src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
	$(document).ready(function(){
		$(&quot;#navbar li&quot;).hover(function (){
			$(this).children(&quot;ul&quot;).slideToggle();
		});
	});
&lt;/script&gt;</pre>
<p>Ed ecco il risultato finale:<br />
<a href="http://docs.mirkopagliai.it/html/menu-tendina/esempio6_versoalto.html">http://docs.mirkopagliai.it/html/menu-tendina/esempio6_versoalto.html</a></p>
<p>Notare che:</p>
<ol>
<li>per praticità, il codice css è nella stessa pagina html, non ho usato un foglio di stile esterno;</li>
<li>al menù principale (<em>#navbar</em>) ho aggiunto un margine superiore semplicemente per distanziarlo e rendere visibile l&#8217;effetto.</li>
</ol>
<img src="http://feeds.feedburner.com/~r/mirkopagliai/~4/9ZcSHseUknI" height="1" width="1"/>]]></content:encoded><description>In un precedente articolo Tutorial Jquery: menù a tendina ho ricevuto il seguente commento: Ciao Mirko, ho seguito alla lettera il tuo tutorial… nel mio caso mi servirebbe un menu con una tendina che si aprisse verso l’alto e non verso il basso… sapresti darmi qualche suggerimento su come fare? ti ringrazio! Si può fare? Sì, [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.mirkopagliai.it/tutorial-jquery-menu-a-tendina-verso-lalto/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><feedburner:origLink>http://www.mirkopagliai.it/tutorial-jquery-menu-a-tendina-verso-lalto/</feedburner:origLink></item><item><title>Debian: i mirror più veloci</title><link>http://feedproxy.google.com/~r/mirkopagliai/~3/wmcmCADDkaY/</link><category>Guide GNU/Linux e Debian</category><category>Unix</category><category>/etc/apt/sources.list</category><category>Debian</category><category>individuare il mirror italiano più veloce</category><category>lista dei mirror da testare</category><category>lista mirror</category><category>mirror debian</category><category>mirror italiano</category><category>mirror più veloce</category><category>mirror veloce</category><category>netselect</category><category>testare mirror</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mirko Pagliai</dc:creator><pubDate>Sat, 11 Feb 2012 08:19:06 PST</pubDate><guid isPermaLink="false">http://www.mirkopagliai.it/?p=2202</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Riporto qui sul blog l&#8217;ottimo suggerimento¹ di xtow sul forum <a href="http://forum.debianizzati.org/viewtopic.php?p=146572#p146572" target="_blank">debianizzati.org</a> su come <strong>individuare il mirror italiano più veloce</strong>.</p>
<p>Innanzitutto è necessario installare <em>netselect</em> e quindi:</p>
<pre class="brush: bash; light: true; title: ; notranslate">apt-get install netselect</pre>
<p>Va quindi lanciato col l&#8217;opzione <em>-vv</em> (&#8220;very verbose mode&#8221;), seguito dalla <strong>lista dei mirror da testare</strong>. Ad esempio:</p>
<pre class="brush: bash; light: true; title: ; notranslate">netselect -vv debian.bononia.it debian.fastweb.it ftp.it.debian.org debian.dynamica.it debian.fastbull.org freedom.dicea.unifi.it giano.com.dist.unige.it mi.mirror.garr.it mirror.units.it</pre>
<p>Nel mio caso:</p>
<pre class="brush: bash; light: true; title: ; notranslate">root@mirko-laptop:/home/mirko# netselect -vv debian.bononia.it debian.fastweb.it ftp.it.debian.org debian.dynamica.it debian.fastbull.org freedom.dicea.unifi.it giano.com.dist.unige.it mi.mirror.garr.it mirror.units.it
Running netselect to choose 1 out of 9 addresses.
...............................................................................
freedom.dicea.unifi.it                  82 ms  22 hops   90% ok ( 9/10) [  291]
debian.fastbull.org                     39 ms  16 hops  100% ok (10/10) [  101]
giano.com.dist.unige.it               9999 ms  30 hops    0% ok
debian.fastweb.it                       28 ms  12 hops   90% ok ( 9/10) [   68]
ftp.it.debian.org                       40 ms  17 hops   90% ok ( 9/10) [  121]
mi.mirror.garr.it                       29 ms  16 hops   75% ok ( 6/ 8) [  101]
debian.dynamica.it                      33 ms  14 hops   90% ok ( 9/10) [   88]
debian.bononia.it                     9999 ms  30 hops    0% ok
mirror.units.it                         40 ms  19 hops   90% ok ( 9/10) [  127]
   68 debian.fastweb.it</pre>
<p>Modificate il vostro <em>/etc/apt/sources.list</em> di conseguenza.</p>
<p>Per qualsiasi altra cosa, fate sempre riferimento al manuale:</p>
<pre class="brush: bash; light: true; title: ; notranslate">man netselect</pre>
<p><em>netselect</em></p>
<img src="http://feeds.feedburner.com/~r/mirkopagliai/~4/wmcmCADDkaY" height="1" width="1"/>]]></content:encoded><description>Riporto qui sul blog l&amp;#8217;ottimo suggerimento¹ di xtow sul forum debianizzati.org su come individuare il mirror italiano più veloce. Innanzitutto è necessario installare netselect e quindi: Va quindi lanciato col l&amp;#8217;opzione -vv (&amp;#8220;very verbose mode&amp;#8221;), seguito dalla lista dei mirror da testare. Ad esempio: Nel mio caso: Modificate il vostro /etc/apt/sources.list di conseguenza. Per qualsiasi [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.mirkopagliai.it/debian-i-mirror-piu-veloci/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">3</slash:comments><feedburner:origLink>http://www.mirkopagliai.it/debian-i-mirror-piu-veloci/</feedburner:origLink></item></channel></rss>
