<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>arjuna del toso</title>
	
	<link>http://arjuna.deltoso.net</link>
	<description />
	<pubDate>Wed, 12 Aug 2009 22:08:51 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>it</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/adt-it" type="application/rss+xml" /><feedburner:browserFriendly></feedburner:browserFriendly><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Configurare xmonad window manager con xmobar e trayer</title>
		<link>http://arjuna.deltoso.net/articoli/configurare-xmonad-window-manager-con-xmobar-e-trayer/it/</link>
		<comments>http://arjuna.deltoso.net/articoli/configurare-xmonad-window-manager-con-xmobar-e-trayer/it/#comments</comments>
		<pubDate>Sat, 08 Aug 2009 13:41:42 +0000</pubDate>
		<dc:creator>Arjuna Del Toso</dc:creator>
		
		<category><![CDATA[articoli]]></category>

		<guid isPermaLink="false">http://arjuna.deltoso.net/?p=234</guid>
		<description><![CDATA[Per referenza futura scrivo velocemente in questo post la mia configurazione di xmonad, un window manager scritto in haskell. Il principale vantaggio di xmonad è che, decidendo lui il posizionamento delle finestre, riduce al minimo l&#8217;utilizzo del mouse e massimizza l&#8217;uso della superficie dello schermo (comportamento molto comodo quando si lavora con un portatile).
Software

xmonad (0.8) [...]]]></description>
			<content:encoded><![CDATA[<p>Per referenza futura scrivo velocemente in questo post la mia configurazione di <a href="http://xmonad.org/" target="_blank">xmonad</a>, un window manager scritto in <a href="http://www.haskell.org/" target="_blank">haskell</a>. Il principale vantaggio di xmonad è che, decidendo lui il posizionamento delle finestre, riduce al minimo l&#8217;utilizzo del mouse e massimizza l&#8217;uso della superficie dello schermo (comportamento molto comodo quando si lavora con un portatile).</p>
<h3>Software</h3>
<ol>
<li><a href="http://xmonad.org/" target="_blank">xmonad</a> (0.8) - il window manager</li>
<li><a href="http://code.haskell.org/~arossato/xmobar/" target="_blank">xmobar</a> (0.9) - una status bar per xmonad</li>
<li>trayer (1.0) - piccola app che fornisce una systray</li>
<li><a href="http://linuxbrit.co.uk/feh/" target="_blank">feh</a> (1.3.4) - per impostare l&#8217;immagine di sfondo</li>
<li>gdm, kmix, network-manager, &#8230;</li>
</ol>
<h3>Installazione</h3>
<p>Più o meno tutto il software si trova nei pacchetti delle maggiori distribuzioni (io ho usato ubuntu, credo fosse qualcosa come <em><code>apt-get install xmonad libghc6-xmonad-contrib-dev libghc6-xmonad-dev dwm-tools</code></em>), se cosi&#8217; non fosse l&#8217;installazione manuale è comunque semplice. Basta leggere il manuale.</p>
<h3>Configurazione</h3>
<p>Di seguito i file di configurazione dei vari software:</p>
<p><strong>xmonad</strong> - <code>~/.xmonad/xmonad.hs</code></p>
<pre>import XMonad
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Util.Run(spawnPipe)
import XMonad.Util.EZConfig(additionalKeys)
import System.IO

myManageHook = composeAll
    [ className =? "Gimp"      --&gt; doFloat
    , className =? "Vncviewer" --&gt; doFloat
    ]

main = do
    xmproc &lt;- spawnPipe "xmobar"
    xmonad $ defaultConfig
        { manageHook = manageDocks &lt;+&gt; myManageHook -- make sure to include myManageHook definition from above
                        &lt;+&gt; manageHook defaultConfig
        , layoutHook = avoidStruts  $  layoutHook defaultConfig
        , logHook = dynamicLogWithPP $ xmobarPP
                        { ppOutput = hPutStrLn xmproc
                        , ppTitle = xmobarColor "green" "" . shorten 50
                        }
        , modMask = mod4Mask     -- Rebind Mod to the Windows key
        } `additionalKeys`
        [ ((controlMask, xK_Print), spawn "sleep 0.2; scrot -s")
        , ((0, xK_Print), spawn "scrot")
        ]</pre>
<p><strong>xmobar</strong> - <code>~/.xmobarrc</code></p>
<pre>Config { font = "-misc-fixed-*-*-*-*-13-*-*-*-*-*-*-*"
       , bgColor = "black"
       , fgColor = "grey"
       , position = TopW L 85
       , commands = [ Run Network "wlan0" ["-L","0","-H","32","--normal","green","--high","red"] 10
                    , Run Cpu ["-L","15","-H","50","--normal","green","--high","red"] 10
                    , Run Memory ["-t","Mem: %"] 10
                    , Run Swap [] 10
                    , Run Date "%a %b %_d %Y %H:%M:%S" "date" 10
                    , Run StdinReader
                    ]
       , sepChar = "%"
       , alignSep = "}{"
       , template = "%StdinReader% }{ %cpu% | %memory% * %swap% | %wlan0% | %date%"
       }</pre>
<p><strong>gdm</strong> - <code>/usr/share/xsessions/xmonad.desktop</code></p>
<pre>[Desktop Entry]
Encoding=UTF-8
Name=XMonad
Comment=Leightweight tiling window manager
Exec=xmonad.start
Icon=xmonad.png
Type=XSession</pre>
<p>notare che xmonad.start è uno script personalizzato.</p>
<p><strong>xmonad.start</strong> - <code>/usr/local/bin/xmonad.start</code></p>
<pre>#!/bin/bash

xrdb -merge .Xresources

trayer --edge top --align right --SetDockType true --SetPartialStrut true --expand true --width 15 --height 12 --transparent true --tint 0x000000 &amp;

gnome-screensaver

gnome-settings-daemon

if [ -x /usr/bin/gnome-power-manager ] ; then
   sleep 1
   gnome-power-manager
fi

if [ -x /usr/bin/nm-applet ] ; then
   nm-applet --sm-disable &amp;
fi

kmix --keepvisibility

#feh --bg-scale /mnt/archivio/foto/2008-2009-dublino/2009-04-10-stefano/hapenny-desktop.jpg &amp;

exec xmonad</pre>
<p>Alcune note:</p>
<ul>
<li>usando gnome-settings-daemon (per i tasti multimediali ed un sacco di altre cose moderne) non è necessario usare feh per lo sfondo.</li>
</ul>
<h3>Screenshots</h3>
<p>Il desktop senza applicazioni (solo xmonad e trayer), l&#8217;immagine di sfondo è una fotografia di un ponte di Dublino fatta da <a href="http://www.panoramio.com/user/2081797" target="_blank">Steve</a>:</p>
<p><a href="http://arjuna.deltoso.net/wp-content/uploads/2009/08/2009-08-08-134614_1280x800_scrot.jpg"><img class="alignnone size-thumbnail wp-image-237" title="xmonad" src="http://arjuna.deltoso.net/wp-content/uploads/2009/08/2009-08-08-134614_1280x800_scrot-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>lo stesso desktop con un paio di applicazioni aperte:</p>
<p><a href="http://arjuna.deltoso.net/wp-content/uploads/2009/08/2009-08-08-142957_1280x800_scrot.jpg"><img class="alignnone size-thumbnail wp-image-239" title="xmonad, xmobar, traye, emacs, xterm, ..." src="http://arjuna.deltoso.net/wp-content/uploads/2009/08/2009-08-08-142957_1280x800_scrot-150x150.jpg" alt="" width="150" height="150" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://arjuna.deltoso.net/articoli/configurare-xmonad-window-manager-con-xmobar-e-trayer/it/feed/it/</wfw:commentRss>
		</item>
		<item>
		<title>Localizzazione in Italiano di Pligg 9.9.5</title>
		<link>http://arjuna.deltoso.net/progetti/localizzazione-in-italiano-di-pligg-995/it/</link>
		<comments>http://arjuna.deltoso.net/progetti/localizzazione-in-italiano-di-pligg-995/it/#comments</comments>
		<pubDate>Wed, 28 Jan 2009 22:40:24 +0000</pubDate>
		<dc:creator>Arjuna Del Toso</dc:creator>
		
		<category><![CDATA[progetti]]></category>

		<category><![CDATA[lingue]]></category>

		<category><![CDATA[pligg]]></category>

		<category><![CDATA[traduzioni]]></category>

		<guid isPermaLink="false">http://arjuna.deltoso.net/?p=220</guid>
		<description><![CDATA[Se usate Pligg e vi serve l&#8217;ultima versione in Italiano potrebbe tornarvi utile questo file:
Pligg 9.9.5 in Italiano
Come base ho usato un vecchia traduzione del local.conf trovata in rete (non riesco a risalire al traduttore, se sei tu lascia un messaggio e aggiungerò un link al tuo sito).
]]></description>
			<content:encoded><![CDATA[<p>Se usate Pligg e vi serve l&#8217;ultima versione in Italiano potrebbe tornarvi utile questo file:</p>
<h4><a href="http://file.deltoso.net/language_italian_pligg_9_9_5.zip">Pligg 9.9.5 in Italiano</a></h4>
<p>Come base ho usato un vecchia traduzione del local.conf trovata in rete (non riesco a risalire al traduttore, se sei tu lascia un messaggio e aggiungerò un link al tuo sito).</p>
]]></content:encoded>
			<wfw:commentRss>http://arjuna.deltoso.net/progetti/localizzazione-in-italiano-di-pligg-995/it/feed/it/</wfw:commentRss>
		</item>
		<item>
		<title>“The Fundamentals of Graphic Design” Wordpress Theme</title>
		<link>http://arjuna.deltoso.net/progetti/the-fundamentals-of-graphic-design-wordpress-theme/it/</link>
		<comments>http://arjuna.deltoso.net/progetti/the-fundamentals-of-graphic-design-wordpress-theme/it/#comments</comments>
		<pubDate>Wed, 24 Dec 2008 23:56:29 +0000</pubDate>
		<dc:creator>Arjuna Del Toso</dc:creator>
		
		<category><![CDATA[progetti]]></category>

		<category><![CDATA[design]]></category>

		<category><![CDATA[themes]]></category>

		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://arjuna.deltoso.net/?p=151</guid>
		<description><![CDATA[Di recente ho letto il libro &#8220;The Fundamentals of Graphic Design&#8221; di Gavin Ambrose &#38; Paul Harris (AVA Academia).
Siccome il design delle pagine mi piaceva l&#8217;ho usato come spunto per questo tema wordpress.

Il tema è stato selezionato dagli autori di Wordpress ed inserito nella directory ufficiale: http://wordpress.org/extend/themes/the-fundamentals-of-graphic-design
Tra le caratteristiche del tema c&#8217;è la sidebar con [...]]]></description>
			<content:encoded><![CDATA[<p>Di recente ho letto il libro &#8220;<a href="http://www.avabooks.ch/index.php/ava/bookdetails/978-2-940373-82-6" target="_blank">The Fundamentals of Graphic Design</a>&#8221; di Gavin Ambrose &amp; Paul Harris (AVA Academia).</p>
<p>Siccome il design delle pagine mi piaceva l&#8217;ho usato come spunto per questo tema wordpress.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-208" title="The Fundamentals of Graphics Design" src="http://arjuna.deltoso.net/wp-content/uploads/2009/01/screenshot.png" alt="" width="300" height="225" /></p>
<p style="text-align: left;">Il tema è stato <strong>selezionato dagli autori di Wordpress</strong> ed inserito nella directory ufficiale: <a href="http://wordpress.org/extend/themes/the-fundamentals-of-graphic-design">http://wordpress.org/extend/themes/the-fundamentals-of-graphic-design</a></p>
<p style="text-align: left;">Tra le caratteristiche del tema c&#8217;è la sidebar con i <strong>widgets configurabili</strong> e lo <strong>styling degli excerpt</strong> dei post. Inoltre attraverso il pannello di amministrazione si possono configurare alcune caratteristiche del tema (posizione e colori).</p>
]]></content:encoded>
			<wfw:commentRss>http://arjuna.deltoso.net/progetti/the-fundamentals-of-graphic-design-wordpress-theme/it/feed/it/</wfw:commentRss>
		</item>
		<item>
		<title>Start automatico di Oracle Database 10g all’avvio di Ubuntu Linux</title>
		<link>http://arjuna.deltoso.net/articoli/start-automatico-di-oracle-database-10g-allavvio-di-ubuntu-linux/it/</link>
		<comments>http://arjuna.deltoso.net/articoli/start-automatico-di-oracle-database-10g-allavvio-di-ubuntu-linux/it/#comments</comments>
		<pubDate>Wed, 15 Oct 2008 12:56:40 +0000</pubDate>
		<dc:creator>Arjuna Del Toso</dc:creator>
		
		<category><![CDATA[articoli]]></category>

		<category><![CDATA[Database]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://arjuna.deltoso.net/?p=107</guid>
		<description><![CDATA[Nel file /etc/oratab impostare il restart flag a &#8220;Y&#8221;, modificare la linea di configurazione relativa al database che si vuole avviare da
dbname:/u01/app/oracle/product/10.2.0/db_1:N
a
dbname:/u01/app/oracle/product/10.2.0/db_1:Y
Creare lo script di avvio /etc/init.d/dbora (in grassetto i valori da modificare in base all&#8217;installazione corrente):
#!/bin/sh
# description: Oracle auto start-stop script.
#
# Set ORA_HOME to be equivalent to the $ORACLE_HOME
# from which you wish to [...]]]></description>
			<content:encoded><![CDATA[<p>Nel file /etc/oratab impostare il restart flag a &#8220;Y&#8221;, modificare la linea di configurazione relativa al database che si vuole avviare da</p>
<p>dbname:/u01/app/oracle/product/10.2.0/db_1:<strong>N</strong></p>
<p>a</p>
<p>dbname:/u01/app/oracle/product/10.2.0/db_1:<strong>Y</strong></p>
<p>Creare lo script di avvio /etc/init.d/dbora (in grassetto i valori da modificare in base all&#8217;installazione corrente):</p>
<pre>#!/bin/sh
# description: Oracle auto start-stop script.
#
# Set ORA_HOME to be equivalent to the $ORACLE_HOME
# from which you wish to execute dbstart and dbshut;
#
# Set ORA_OWNER to the user id of the owner of the
# Oracle database in ORA_HOME.

ORACLE_HOME=<strong>/u01/app/oracle/product/10.2.0/db_1</strong>
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_HOME PATH

ORA_HOME=<strong>/u01/app/oracle/product/10.2.0/db_1</strong>
ORA_OWNER=oracle

if [ ! -f $ORA_HOME/bin/dbstart ]
then
    echo "Oracle startup: cannot start"
    exit
fi

case "$1" in
    'start')
        # Start the Oracle databases:
        # The following command assumes that the oracle login
        # will not prompt the user for any values
        su $ORA_OWNER -c "$ORA_HOME/bin/dbstart $ORA_HOME"
        ;;
    'stop')
        # Stop the Oracle databases:
        # The following command assumes that the oracle login
        # will not prompt the user for any values
        su $ORA_OWNER -c "$ORA_HOME/bin/dbshut $ORA_HOME"
        ;;
esac</pre>
<p>Assegnare i privilegi allo script:</p>
<p><code>chmod 750 /etc/init.d/dbora</code></p>
<p>Creare i link simbolici allo script nelle cartelle relative ai vari runlevel (con il comando ln -s target link_name) [avendo sempre usato Slackware non sono molto esperto del sistema di boot di Ubuntu, se ho scritto cavolate segnalatelo pure nei commenti]:</p>
<pre>ln -s /etc/init.d/dbora /etc/rc0.d/k01dbora
ln -s /etc/init.d/dbora /etc/rc1.d/k01dbora
ln -s /etc/init.d/dbora /etc/rc2.d/S99dbora
ln -s /etc/init.d/dbora /etc/rc3.d/S99dbora
ln -s /etc/init.d/dbora /etc/rc4.d/S99dbora</pre>
<p>al termine dovrebbero esserci i seguenti link simbolici:</p>
<pre>lrwxrwxrwx 1 root root   17 2008-07-16 14:16 /etc/rc0.d/k01dbora -&gt; /etc/init.d/dbora
lrwxrwxrwx 1 root root   17 2008-07-16 14:16 /etc/rc1.d/k01dbora -&gt; /etc/init.d/dbora
lrwxrwxrwx 1 root root   17 2008-07-16 14:16 /etc/rc2.d/S99dbora -&gt; /etc/init.d/dbora
lrwxrwxrwx 1 root root   17 2008-07-16 14:16 /etc/rc3.d/S99dbora -&gt; /etc/init.d/dbora
lrwxrwxrwx 1 root root   17 2008-07-16 14:16 /etc/rc4.d/S99dbora -&gt; /etc/init.d/dbora</pre>
<p>Nota per la &#8220;Release 2&#8243;: nello script /u01/app/oracle/product/10.2.0/db_1/bin/dbstart c&#8217;e&#8217; un bug che imperdirà al listener di avviarsi (l&#8217;errore riportato è Failed to auto-start Oracle Net Listener using /ade/vikrkuma_new/oracle/bin/tnslsnr); per risolvere modificare la linea 78 (circa) da:</p>
<pre>ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle/bin/tnslsnr</pre>
<p>a</p>
<pre>ORACLE_HOME_LISTNER=$ORACLE_HOME</pre>
<p><em>(script modificato a partire da <a href="http://www.oracle-base.com/articles/linux/AutomatingDatabaseStartupAndShutdownOnLinux.php" target="_blank">http://www.oracle-base.com/articles/linux/ AutomatingDatabaseStartupAndShutdownOnLinux.php</a>)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://arjuna.deltoso.net/articoli/start-automatico-di-oracle-database-10g-allavvio-di-ubuntu-linux/it/feed/it/</wfw:commentRss>
		</item>
		<item>
		<title>A List Apart - Sondaggio 2008 per persone che “fanno siti internet”</title>
		<link>http://arjuna.deltoso.net/articoli/a-list-apart-sondaggio-2008-per-persone-che-fanno-siti-internet/it/</link>
		<comments>http://arjuna.deltoso.net/articoli/a-list-apart-sondaggio-2008-per-persone-che-fanno-siti-internet/it/#comments</comments>
		<pubDate>Thu, 07 Aug 2008 11:24:37 +0000</pubDate>
		<dc:creator>Arjuna Del Toso</dc:creator>
		
		<category><![CDATA[articoli]]></category>

		<category><![CDATA[A List Apart]]></category>

		<category><![CDATA[Sondaggio]]></category>

		<guid isPermaLink="false">http://arjuna.deltoso.net/?p=77</guid>
		<description><![CDATA[Dopo i 33.000 questionari compilati lo scorso anno dai visitatori di A List Apart, anche quest&#8217;anno viene riproposto il sondaggio dedicato ai professionisti del Web (designer, sviluppatori, editori, ecc.).

Dal sondaggio 2007 è emerso nettamente l&#8217;identikit di chi &#8220;fa siti internet&#8220;: maschio (82,8%) bianco (84,6%), con un&#8217;età compresa tra i 25 e i 32 anni (43,6%), [...]]]></description>
			<content:encoded><![CDATA[<p>Dopo i 33.000 questionari compilati lo <a title="Link Esterno" href="http://www.alistapart.com/articles/webdesignsurvey" target="_blank">scorso anno</a> dai visitatori di <a title="Link Esterno" href="http://www.alistapart.com/" target="_blank">A List Apart</a>, anche quest&#8217;anno viene riproposto il <strong>sondaggio dedicato ai professionisti del Web</strong> (designer, sviluppatori, editori, ecc.).</p>
<p style="text-align: center;"><a href="http://www.alistapart.com/articles/survey2008"><img class="aligncenter size-full wp-image-78" title="i-took-the-2008-survey" src="http://arjuna.deltoso.net/wp-content/uploads/2008/08/i-took-the-2008-survey.gif" alt="" width="180" height="46" /></a></p>
<p>Dal sondaggio 2007 è emerso nettamente l&#8217;identikit di chi &#8220;<em>fa siti internet</em>&#8220;: maschio (82,8%) bianco (84,6%), con un&#8217;età compresa tra i 25 e i 32 anni (43,6%), con residenza negli Stati Uniti (48,1%) e di specializzazione sviluppatore (25,3%). Certamente il sondaggio in lingua inglese ha influito notevolmente su questi dati; per avere una visione globale del mondo del lavoro sul web speriamo che questo nuovo sondaggio venga compilato da un numero maggiore di professionisti delle altre nazioni.</p>
<p>I dati e i risultati del sondaggio 2007 sono disponibili a questa pagina <a title="Link Esterno" href="http://www.alistapart.com/articles/2007surveyresults" target="_blank">http://www.alistapart.com/articles/2007surveyresults</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://arjuna.deltoso.net/articoli/a-list-apart-sondaggio-2008-per-persone-che-fanno-siti-internet/it/feed/it/</wfw:commentRss>
		</item>
		<item>
		<title>Caricare il vocabolario MeSH all’interno di un database relazionale MySQL con uno script Java</title>
		<link>http://arjuna.deltoso.net/articoli/caricare-il-vocabolario-mesh-allinterno-di-un-database-relazionale-mysql-con-uno-script-java/it/</link>
		<comments>http://arjuna.deltoso.net/articoli/caricare-il-vocabolario-mesh-allinterno-di-un-database-relazionale-mysql-con-uno-script-java/it/#comments</comments>
		<pubDate>Tue, 05 Aug 2008 14:09:54 +0000</pubDate>
		<dc:creator>Arjuna Del Toso</dc:creator>
		
		<category><![CDATA[articoli]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[mesh]]></category>

		<category><![CDATA[mysql]]></category>

		<category><![CDATA[programmazione]]></category>

		<guid isPermaLink="false">http://arjuna.deltoso.net/?p=73</guid>
		<description><![CDATA[Il programmino qui sotto carica i termini MeSH (ed in particolare il valore del tag &#8220;/DescriptorRecordSet &#62; DescriptorRecord &#62; DescriptorName &#62; String&#8220;) dal file distribuito dal NML (http://www.nlm.nih.gov/mesh/filelist.html) in un database relazionale MySQL.
Scarica lo script oppure dagli un&#8217;occhiata (nel codice ci sono dei commenti per le personalizzazioni):

/**
 * @author Arjuna Del Toso
 * @url http://arjuna.deltoso.net/
 [...]]]></description>
			<content:encoded><![CDATA[<p>Il programmino qui sotto carica i termini MeSH (ed in particolare il valore del tag &#8220;<code>/DescriptorRecordSet &gt; DescriptorRecord &gt; DescriptorName &gt; String</code>&#8220;) dal file distribuito dal NML (<a title="Download MeSH vocabulary" href="http://www.nlm.nih.gov/mesh/filelist.html" target="_blank">http://www.nlm.nih.gov/mesh/filelist.html</a>) in un database relazionale MySQL.</p>
<p><a href="../wp-content/uploads/2008/07/mesh2database.zip">Scarica lo script</a> oppure dagli un&#8217;occhiata (nel codice ci sono dei commenti per le personalizzazioni):</p>
<div class="highlight">
<pre><span style="font-style: italic; color: #60a0b0;">/**</span>
<span style="font-style: italic; color: #60a0b0;"> * @author Arjuna Del Toso</span>
<span style="font-style: italic; color: #60a0b0;"> * @url http://arjuna.deltoso.net/</span>
<span style="font-style: italic; color: #60a0b0;"> * </span>
<span style="font-style: italic; color: #60a0b0;"> * @FAQ: what the hell is this?</span>

<span style="font-style: italic; color: #60a0b0;"> * A simple, very simple, program to load the MESH Terms to a MySQL database</span>
<span style="font-style: italic; color: #60a0b0;"> * </span>
<span style="font-style: italic; color: #60a0b0;"> * @USAGE</span>
<span style="font-style: italic; color: #60a0b0;"> * 1-configure some stuff in the code ("//: CHANGE A VALUE HERE" string is a placeholder for what to change);</span>
<span style="font-style: italic; color: #60a0b0;"> * 2-install the required packages (jdbc connector [http://www.mysql.com/products/connector/j/] and dom4j [http://www.dom4j.org/]);</span>
<span style="font-style: italic; color: #60a0b0;"> * 3-compile it ($javac mesh2database.java);</span>

<span style="font-style: italic; color: #60a0b0;"> * 4-put the MESH Descriptor XML file and the MESH Descriptor DTD file in the current directory;</span>
<span style="font-style: italic; color: #60a0b0;"> * 5-run the program ($java mesh2database) and wait;</span>
<span style="font-style: italic; color: #60a0b0;"> * 6-enjoy the 20.000+ records inserted in your database.</span>
<span style="font-style: italic; color: #60a0b0;"> * </span>
<span style="font-style: italic; color: #60a0b0;"> */</span>

<span style="font-style: italic; color: #60a0b0;">// Some imports in order to run this program; you need</span>

<span style="font-style: italic; color: #60a0b0;">// the jdbc driver for connecting to MySQL database</span>
<span style="font-style: italic; color: #60a0b0;">// and the dom4j package for XML manipulation</span>
import java.io.<span style="color: #666666;">F</span>ile<span style="color: #666666;">;</span>
import org.dom4j.<span style="color: #666666;">D</span>ocument<span style="color: #666666;">;</span>

import org.dom4j.<span style="color: #666666;">D</span>ocumentException<span style="color: #666666;">;</span>

import org.dom4j.<span style="color: #666666;">E</span>lement<span style="color: #666666;">;</span>
import org.dom4j.<span style="color: #666666;">E</span>lementHandler<span style="color: #666666;">;</span>
import org.dom4j.<span style="color: #666666;">E</span>lementPath<span style="color: #666666;">;</span>

import org.dom4j.io.<span style="color: #666666;">SAXR</span>eader<span style="color: #666666;">;</span>

import java.sql.<span style="color: #666666;">*;</span>

<span style="font-style: italic; color: #60a0b0;">// a very fanciful name</span>
public class mesh2database {

	<span style="font-style: italic; color: #60a0b0;">// all work done here</span>
	public static void main(<span style="color: #666666;">S</span>tring<span style="color: #666666;">[</span>] args) throws <span style="color: #666666;">SQLE</span>xception {

		<span style="font-style: italic; color: #60a0b0;">// load the jdbc driver</span>

		<span style="font-weight: bold; color: #007020;">try</span> {
			<span style="color: #666666;">C</span>lass.forName(<span style="color: #4070a0;">"com.mysql.jdbc.Driver"</span>).newInstance();
		} <span style="font-weight: bold; color: #007020;">catch</span> (<span style="color: #666666;">I</span>nstantiationException e1) {
		} <span style="font-weight: bold; color: #007020;">catch</span> (<span style="color: #666666;">I</span>llegalAccessException e1) {
		} <span style="font-weight: bold; color: #007020;">catch</span> (<span style="color: #666666;">C</span>lassNotFoundException e1) {}

		<span style="font-style: italic; color: #60a0b0;">// the connection to mysql db</span>

<span style="font-style: italic; color: #60a0b0;">//: CHANGE A VALUE HERE</span>
<span style="font-style: italic; color: #60a0b0;">//: set your database values</span>
		final <span style="color: #666666;">C</span>onnection con <span style="color: #666666;">=</span> <span style="color: #666666;">D</span>riverManager.getConnection(<span style="color: #4070a0;">"jdbc:mysql://localhost/table"</span><span style="color: #666666;">,</span> <span style="color: #4070a0;">"user"</span><span style="color: #666666;">,</span> <span style="color: #4070a0;">"password"</span>);
		<span style="font-style: italic; color: #60a0b0;">// a preparedStatement in the hope to improve speed</span>

<span style="font-style: italic; color: #60a0b0;">//: CHANGE A VALUE HERE</span>
<span style="font-style: italic; color: #60a0b0;">//: configure to match your database schema</span>
		final <span style="color: #666666;">P</span>reparedStatement s <span style="color: #666666;">=</span> con.prepareStatement(<span style="color: #4070a0;">"INSERT IGNORE INTO `table`.`mesh` (`id` , `mesh` ) VALUES (NULL , ?)"</span>);

		<span style="font-style: italic; color: #60a0b0;">// the MESH Descriptors XML file,</span>
		<span style="font-style: italic; color: #60a0b0;">// can be found at http://www.nlm.nih.gov/mesh/</span>

<span style="font-style: italic; color: #60a0b0;">//: CHANGE A VALUE HERE</span>
<span style="font-style: italic; color: #60a0b0;">//: insert the path to your mesh file</span>
		<span style="color: #666666;">F</span>ile file <span style="color: #666666;">=</span> <span style="font-weight: bold; color: #007020;">new</span> <span style="color: #666666;">F</span>ile(<span style="color: #4070a0;">"desc2007"</span>);

		<span style="font-style: italic; color: #60a0b0;">// enable pruning mode to call me back as each node is complete</span>

		<span style="color: #666666;">SAXR</span>eader reader <span style="color: #666666;">=</span> <span style="font-weight: bold; color: #007020;">new</span> <span style="color: #666666;">SAXR</span>eader(<span style="font-weight: bold; color: #007020;">false</span>);

		reader.addHandler( <span style="color: #4070a0;">"/DescriptorRecordSet/DescriptorRecord/DescriptorName/String"</span><span style="color: #666666;">,</span>
				<span style="font-weight: bold; color: #007020;">new</span> <span style="color: #666666;">E</span>lementHandler() {
			public void onStart(<span style="color: #666666;">E</span>lementPath path) {}
			public void onEnd(<span style="color: #666666;">E</span>lementPath path) {
				<span style="font-style: italic; color: #60a0b0;">// process a single element</span>

				<span style="color: #666666;">E</span>lement meshDescriptorValue <span style="color: #666666;">=</span> path.getCurrent();
				<span style="color: #666666;">E</span>lement descname <span style="color: #666666;">=</span> meshDescriptorValue.getParent();
				<span style="color: #666666;">E</span>lement descrecord <span style="color: #666666;">=</span> descname.getParent();

				<span style="font-style: italic; color: #60a0b0;">// remove .toLowerCase() if you are Case Sensitive <img src='http://arjuna.deltoso.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </span>

				<span style="color: #666666;">S</span>tring meshHeading <span style="color: #666666;">=</span> meshDescriptorValue.getText().toLowerCase();

				<span style="font-style: italic; color: #60a0b0;">// i just don't want something like</span>
				<span style="font-style: italic; color: #60a0b0;">// "DNA Degradation, Apoptotic"</span>
				<span style="font-style: italic; color: #60a0b0;">// as single record in my database</span>
				<span style="font-weight: bold; color: #007020;">if</span>(<span style="color: #666666;">!</span>meshHeading.contains(<span style="color: #4070a0;">","</span>)){

					<span style="font-style: italic; color: #60a0b0;">// simple debug code (outputs the MESH DESCRIPTORS) </span>

					<span style="color: #666666;">S</span>ystem.out.println(meshHeading);

					<span style="font-style: italic; color: #60a0b0;">// the database INSERTs executed here</span>
					<span style="font-weight: bold; color: #007020;">try</span> {
						<span style="font-style: italic; color: #60a0b0;">// insert current value in the preparedStatement</span>
						s.setString(<span style="color: #40a070;">1</span><span style="color: #666666;">,</span> meshHeading);
						<span style="font-style: italic; color: #60a0b0;">// execute the statement</span>

						s.executeUpdate();
					} <span style="font-weight: bold; color: #007020;">catch</span> (<span style="color: #666666;">SQLE</span>xception e1) {}
				}
				<span style="font-style: italic; color: #60a0b0;">// prune the tree</span>
				descrecord.detach();
			}
		}
		);

		<span style="font-style: italic; color: #60a0b0;">// just reading the file will do all the work</span>
		<span style="font-weight: bold; color: #007020;">try</span> {
			<span style="color: #666666;">D</span>ocument <span style="color: #007020;">document</span> <span style="color: #666666;">=</span> reader.read(file);
		} <span style="font-weight: bold; color: #007020;">catch</span> (<span style="color: #666666;">D</span>ocumentException e) {}

		<span style="font-style: italic; color: #60a0b0;">// closing statement and connection</span>

		s.close();
		con.close();
	}

}</pre>
</div>
<p>Grossomodo per eseguire il programmino dovrebbero bastarti un <a title="Download Java compiler" href="http://java.sun.com/" target="_blank">compilatore Java</a>, il <a title="MeSH on XML file" href="http://www.nlm.nih.gov/mesh/filelist.html" target="_blank">file XML con il vocabolario MeSH</a>, un <strong>database MySQL</strong> e le <em>due librerie Java</em> <a title="MySQL Java Connector" href="http://www.mysql.com/products/connector/j/" target="_blank">MySQL Connector/J</a> e <a title="DOM4J" href="http://www.dom4j.org/" target="_blank">dom4j</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://arjuna.deltoso.net/articoli/caricare-il-vocabolario-mesh-allinterno-di-un-database-relazionale-mysql-con-uno-script-java/it/feed/it/</wfw:commentRss>
		</item>
		<item>
		<title>Energy Renewable Source s.r.l.</title>
		<link>http://arjuna.deltoso.net/progetti/energy-renewable-source-srl/it/</link>
		<comments>http://arjuna.deltoso.net/progetti/energy-renewable-source-srl/it/#comments</comments>
		<pubDate>Fri, 02 May 2008 19:46:28 +0000</pubDate>
		<dc:creator>Arjuna Del Toso</dc:creator>
		
		<category><![CDATA[progetti]]></category>

		<category><![CDATA[energy renewable source]]></category>

		<category><![CDATA[web]]></category>

		<category><![CDATA[web site development]]></category>

		<category><![CDATA[wordpress]]></category>

		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://arjuna.deltoso.net/?p=58</guid>
		<description><![CDATA[http://www.energyrenewablesource.it/

La grande versatilità di Wordpress ha permesso di creare un sito web aziendale efficace e facilmente manutenibile.
Il sito è realmente efficace, a riprova di questo basta notare come in pochi mesi sia riuscito a posizionarlo nella prima pagina dei risultati di Google per tutta una serie di keyword come, ad esempio: &#8220;turbina a coclea&#8221; o [...]]]></description>
			<content:encoded><![CDATA[<h4><a href="http://www.energyrenewablesource.it/" title="Energy Renewable Source s.r.l." target="_blank">http://www.energyrenewablesource.it/</a></h4>
<p></p>
<p><em>La grande versatilità di <a href="http://wordpress.org/" taget="_blank">Wordpress</a> ha permesso di creare un sito web aziendale efficace e facilmente manutenibile.</em></p>
<p>Il sito è realmente efficace, a riprova di questo basta notare come in pochi mesi sia riuscito a posizionarlo nella prima pagina dei risultati di Google per tutta una serie di keyword come, ad esempio: &#8220;<a target="_blank" href="http://www.google.it/search?q=turbina+a+coclea&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.mozilla:it:official&amp;client=firefox-a">turbina a coclea</a>&#8221; o &#8220;<a target="_blank" href="http://www.google.com/search?ie=UTF-8&amp;oe=UTF-8&amp;sourceid=navclient&amp;gfns=1&amp;q=recupero+mulini">recupero mulini</a>&#8220;, per i termini &#8220;<a target="_blank" href="http://www.google.it/search?q=tipologie+di+miniidro&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.mozilla:it:official&amp;client=firefox-a">tipologie di miniidro</a>&#8221; il sito è addirittura in <strong>prima posizione</strong>, mentre per &#8220;<a target="_blank" href="http://www.google.it/search?q=coclea+idraulica&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.mozilla:it:official&amp;client=firefox-a">coclea idraulica</a>&#8221; è in <strong>seconda posizione</strong> =). E tutto questo senza scambio link, campagne pubblicitare o pratiche black hat SEO.</p>
<p>Gli argomenti trattati nel sito sono molto settoriali e, come appena visto, vanno dalle <a target="_blank" href="http://www.energyrenewablesource.it/energia-idroelettrica/coclea-idraulica/">turbine a coclea</a> per il <a target="_blank" href="http://www.energyrenewablesource.it/energia-idroelettrica/recupero-mulini-e-centrali/">recupero di vecchi mulini</a> nell&#8217;ottica del <a target="_blank" href="http://www.energyrenewablesource.it/energia-idroelettrica/miniidro-e-microidro/">MicroIdro e MiniIdro</a> alle ultime tecnologie per l&#8217;<a target="_blank" href="http://www.energyrenewablesource.it/">energia fotovoltaica e solare termica</a> (questa parte del sito è in fase di costruzione).</p>
]]></content:encoded>
			<wfw:commentRss>http://arjuna.deltoso.net/progetti/energy-renewable-source-srl/it/feed/it/</wfw:commentRss>
		</item>
		<item>
		<title>Installare apache 2.0.61 con mod_python 3.2.10 in NetBSD 3.1 con django dietro l’angolo</title>
		<link>http://arjuna.deltoso.net/articoli/installare-apache-2061-con-mod_python-3210-in-netbsd-31-con-django-dietro-l%e2%80%99angolo/it/</link>
		<comments>http://arjuna.deltoso.net/articoli/installare-apache-2061-con-mod_python-3210-in-netbsd-31-con-django-dietro-l%e2%80%99angolo/it/#comments</comments>
		<pubDate>Fri, 14 Mar 2008 19:04:44 +0000</pubDate>
		<dc:creator>Arjuna Del Toso</dc:creator>
		
		<category><![CDATA[articoli]]></category>

		<category><![CDATA[apache]]></category>

		<category><![CDATA[netbsd]]></category>

		<category><![CDATA[python]]></category>

		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://arjuna.deltoso.net/?p=28</guid>
		<description><![CDATA[E’ facile facile ma me lo segno per usi futuri (occhio che io lo uso per sviluppare le mie applicazioni a casa, se sei un amministratore di sistema e ti serve per installare un server di produzione dovresti sapere da te come fare).
Installare da qualche parte, spesso su un computer, NetBSD (io ho la 3.1 [...]]]></description>
			<content:encoded><![CDATA[<p><em>E’ facile facile ma me lo segno per usi futuri (occhio che io lo uso per sviluppare le mie applicazioni a casa, se sei un amministratore di sistema e ti serve per installare un server di produzione dovresti sapere da te come fare).</em></p>
<p>Installare da qualche parte, spesso su un computer, <a href="http://www.netbsd.org/docs/guide/en/part-install.html" target="_blank">NetBSD</a> (io ho la 3.1 per i386, se ti chiedi il perché la risposta è semplice: connessione a 56k).</p>
<p>Scaricare e installare il pacchetto di <a href="http://ftp.netbsd.org/pub/NetBSD/packages/3.1/i386/All/apache-2.0.61.tgz" target="_blank">apache</a>, <a href="http://ftp.netbsd.org/pub/NetBSD/packages/3.1/i386/All/python24-2.4.4.tgz" target="_blank">python</a> e <a href="http://ftp.netbsd.org/pub/NetBSD/packages/3.1/i386/All/ap2-py24-python-3.2.10.tgz" target="_blank">mod_python</a>, qualcosa del genere dovrebbe andare (come root):</p>
<pre>$wget http://ftp.netbsd.org/pub/NetBSD/packages/3.1/i386/All/apache-2.0.61.tgz

$pkg_add  apache-2.0.61.tgz

$wget http://ftp.netbsd.org/pub/NetBSD/packages/3.1/i386/All/python24-2.4.4.tgz

$pkg_add python24-2.4.4.tgz

$wget http://ftp.netbsd.org/pub/NetBSD/packages/3.1/i386/All/ap2-py24-python-3.2.10.tgz

$pkg_add ap2-py24-python-3.2.10.tgz</pre>
<p><em>Nota: io ho l&#8217;abitudine di scaricare a mano i pacchetti perché con la connesione 56k mi piace avere pineo controllo su quello che passa attraverso il modem. Se hai una connessione più fortunata puoi usare pkg_add direttamente sul repository, così facendo le dipendenze verranno installate in automatico.</em></p>
<p>Seguire le istruzioni date in output dai vari pacchetti come, ad esempio, la creazione degli script di avvio (<em>$cp /usr/pkg/share/examples/rc.d/apache /etc/rc.d/apache</em>) e la configurazione del <em>rc.conf</em>.</p>
<p>Configurare apache (il file di configurazione è in <em>/usr/pkg/etc/httpd/httpd.conf</em>, se manca alcune copie si trovano in <em>/usr/pkg/share/examples/httpd/*.conf</em>):</p>
<ul>
<li>ricordarsi di settare <em>Listen</em> e <em>ServerName</em>;</li>
<li>aggiungere “LoadModule python_module libexec/mod_python.so” come da <a href="http://www.modpython.org/live/current/doc-html/inst-apacheconfig.html" target="_blank">manuale</a> (se apache non lo trova basta farglielo trovare con <em>“$cp /usr/pkg/lib/httpd/mod_python.so /usr/pkg/libexec/mod_python.so”</em>);</li>
<li>IMPORTANTE: aggiungere alla configurazione questa opzione “<strong><em>PythonOption mod_python.mutex_locks 4</em></strong>” per evitare il problema <em>[emerg] (28)No space left on device: Couldn’t create accept lock (/var/run/accept.lock.16040)</em> oppure modificare il kernel di NetBSD (<a href="http://www.modpython.org/pipermail/mod_python/2007-July/024049.html" target="_blank">approfondisci</a>), se ve lo scordate apache non parte.</li>
</ul>
<p>Per fare qualche test, sempre da <a href="http://www.modpython.org/live/current/doc-html/inst-testing.html" target="_blank">manuale</a>, aggiungere alla configurazione di apache le seguenti linee:</p>
<pre>PythonPath "['/usr/pkg/lib/python2.4', '/usr/pkg/share/httpd/htdocs/test'] + sys.path"&lt;Directory /usr/pkg/share/httpd/htdocs/test/&gt;

AddHandler mod_python .py
PythonHandler mptest
PythonDebug On
AllowOverride FileInfo
&lt;/Directory&gt;

&lt;Location /mpinfo&gt;
SetHandler mod_python
PythonHandler mod_python.testhandler
&lt;/Location&gt;</pre>
<p>creare la directory <em>/usr/pkg/share/httpd/htdocs/test</em> (<em>$mkdir /usr/pkg/share/httpd/htdocs/test</em>) che poi starebbe dentro la document root di apache, creare il file <em><span class="file">mptest.py</span></em><span class="file"> dentro la directory <em>test</em> come spiegato <a href="http://www.modpython.org/live/current/doc-html/inst-testing.html" target="_blank">qui</a>.</span></p>
<p>Riavviare apache (<em>$apachectl stop</em> e poi <em>start</em>) e puntare il browser su <em>http://localhost/test/mptest.py</em> o <em>http://localhost/mpinfo</em>. Si dovrebbe vedere l’hello word o una schermata con utili informazioni a seconda della pagina aperta. Nel caso qualcosa sia andato “a merda”, mi si passi il francesismo, un occhio ai log puo’ essere d’aiuto (<em>$tail /var/log/httpd/error_log</em>).</p>
<p><strong>Se dopo aver letto questo post ti stai chiedendo cosa diavolo sia NetBSD, allora ti conviene leggere <a href="http://stacktrace.it/articoli/2007/12/panoramica-generale-dei-sistemi-bsd/" target="_blank">questo</a>; se invece sei molto più arguto e ti chiedi cosa centra django con tutto questo, devo ammetterlo: per ora niente (sarà argomento di un prossimo articolo)</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://arjuna.deltoso.net/articoli/installare-apache-2061-con-mod_python-3210-in-netbsd-31-con-django-dietro-l%e2%80%99angolo/it/feed/it/</wfw:commentRss>
		</item>
		<item>
		<title>OpenID, dire addio a tutte le password (meno una) in 5 minuti</title>
		<link>http://arjuna.deltoso.net/articoli/openid-dire-addio-a-tutte-le-password-meno-una-in-5-minuti/it/</link>
		<comments>http://arjuna.deltoso.net/articoli/openid-dire-addio-a-tutte-le-password-meno-una-in-5-minuti/it/#comments</comments>
		<pubDate>Wed, 23 Jan 2008 18:58:49 +0000</pubDate>
		<dc:creator>Arjuna Del Toso</dc:creator>
		
		<category><![CDATA[articoli]]></category>

		<category><![CDATA[openid]]></category>

		<category><![CDATA[password]]></category>

		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://arjuna.deltoso.net/?p=20</guid>
		<description><![CDATA[Oggigiorno un blogger rispettabile utilizza sicuramente un numero medio/alto di servizi (twitter, mybloglog, lloogg, google analytics, pownce, flickr, youtube, vimeo, gmail, e chissà quanti altri) per non contare il numero di forum e sitarelli vari a cui ci si trova, quasi involontariamente, iscritti.
I problemi nascono quasi subito, già  doversi ricordare 5 o 6  [...]]]></description>
			<content:encoded><![CDATA[<p>Oggigiorno un blogger <em>rispettabile</em> utilizza sicuramente un numero <strong>medio/alto di servizi</strong> (<a href="http://twitter.com/" target="_blank">twitter</a>, <a href="https://www.myopenid.com/signin" target="_blank">mybloglog</a>, <a href="http://lloogg.com/" target="_blank">lloogg</a>, <a href="http://www.google.com/analytics/" target="_blank">google analytics</a>, <a href="http://pownce.com/" target="_blank">pownce</a>, <a href="http://flickr.com/" target="_blank">flickr</a>, <a href="http://youtube.com/" target="_blank">youtube</a>, <a href="http://vimeo.com" target="_blank">vimeo</a>, <a href="http://gmail.com" target="_blank">gmail</a>, e chissà quanti altri) per non contare il numero di forum e sitarelli vari a cui ci si trova, quasi involontariamente, iscritti.</p>
<p>I problemi nascono quasi subito, già  doversi ricordare 5 o 6  accoppiate “utente+password” può diventare problematico. I motivi sono principalmente due:</p>
<ol>
<li>utilizzare una stessa password per tutti i siti è un chiaro <strong>problema di sicurezza</strong> (te la rubano in un sito e hanno tutti gli altri account chiavi in mano) e quindi sarebbe opportuno usare password diverse (in pratica non lo fa nessuno o, alla peggio, si usano a rotazione le stesse 2 o 3 password);</li>
<li>non sempre è possibile usare lo<strong> stesso username</strong> per tutte le registrazioni (ad esempio, potrebbe essere già occupato).</li>
</ol>
<p>Il progetto <strong><a href="http://www.openid.net/" target="_blank">OpenID</a></strong> si pone come obiettivo proprio il <strong>superamento di questo<em> fastidio 2.0</em></strong>. Ecco come funziona in due parole:</p>
<ul>
<li>ci si registra ad un<strong> fornitore di OpenID</strong> (sì, noto l’ironia di doversi iscrivere all’ennesimo sito, ma questo sarà  l’ultimo, lo giuro).</li>
<li>ottenuto il proprio OpenID, per registrarsi ad un servizio/sito di terze parti (ovviamente OpenID enabled) basterà  <strong>fornire quell’unico dato</strong> (niente password, nomi utente o indirizzi e-mail) al resto ci penserà  <em>automagicamente* </em>il sistema (notate che si deve essere autenticati all’interno del sito del fornitore di OpenID perché il tutto funzioni, se non si è autenticati, beh, basta farlo quando richiesto).</li>
</ul>
<p><strong>Esempietto pratico per meglio capire</strong></p>
<p>Il mio OpenID è questo <a href="http://arjuna.myopenid.com/" target="_blank">http://arjuna.myopenid.com/</a> gentilmente fornito da <a href="http://www.myopenid.com/" target="_blank">myopenid.com</a>, se volessi iscrivermi a <a href="http://www.welovelocal.com/" target="_blank">www.welovelocal.com</a> (non chiedetemi a cosa serva sto sito, l’ho preso a caso dall’elenco dei siti <a href="https://www.myopenid.com/directory" target="_blank">OpenID ready</a>) mi basterebbe andare alla <a href="http://www.welovelocal.com/register/" target="_blank">pagina di registrazione</a> ed inserire il mio OpenID (come da figura):</p>
<p><img class="alignnone size-full wp-image-21" title="openid01" src="http://arjuna.deltoso.net/wp-content/uploads/2008/07/openid01.png" alt="" width="414" height="160" /></p>
<p>ci penserà  poi il sito stesso ad <strong>autenticarmi e creare il mio utente</strong>. Tutto ciò che mi viene richiesto di fare è <strong>verificare o meno la mia identità </strong> (immagine seguente):</p>
<p><img class="alignnone size-full wp-image-22" title="openid02" src="http://arjuna.deltoso.net/wp-content/uploads/2008/07/openid02.png" alt="" width="500" height="275" /></p>
<p>Quindi, ogni volta che voglio registrarmi ad un sito o servizio, mi basta <strong>indicare il solo OpenID</strong>, nessuna password o nome utente da scegliere.</p>
<p>Dal punto di vista dell’utente <strong>è come utilizzare la stessa password per tutti i siti</strong> però, con la sostanziale differenza, che viene <strong>memorizzata solamente all’interno degli archivi del fornitore di OpenID</strong>. Per questo motivo la vostra futura unica password va consegnata ad un fornitore di fiducia (beh per ora di myopenid.com mi fido).</p>
<p><strong>Utilizzi avanzati e caratteristiche simpatiche</strong></p>
<p><a href="https://www.myopenid.com/" target="_blank">MyOpenID</a>, in <em>Account Settings -&gt; Certificate Settings</em> permette la creazione di <strong>certificati SSL</strong> da installare nel browser che utilizziamo di solito. Il vantaggio è che chiedendo al sistema (<a href="https://www.myopenid.com/" target="_blank">MyOpenID</a>) di autenticarci con il certificato <strong>non dobbiamo nemmeno inserire quell’unica volta la password</strong> e lo username.</p>
<p>Se non ci piace il nostro OpenID e poi, cavolo, siamo blogger di un certo livello, vogliamo che il <strong>nostro URL OpenID sia l’URL del blog</strong>, basta aggiungere nell’header dei sorgenti del blog personale il seguente codice:</p>
<pre>&lt;<span class="start-tag">link</span><span class="attribute-name"> rel</span>=<span class="attribute-value">"openid.server"
      </span><span class="attribute-name">href</span>=<span class="attribute-value">"http://www.myopenid.com/server" </span><span class="error"><span class="attribute-name">/</span></span>&gt;
&lt;<span class="start-tag">link</span><span class="attribute-name"> rel</span>=<span class="attribute-value">"openid.delegate"
      </span><span class="attribute-name">href</span>=<span class="attribute-value">"http://TUONOME.myopenid.com/" </span><span class="error"><span class="attribute-name">/</span></span>&gt;
&lt;<span class="start-tag">link</span><span class="attribute-name"> rel</span>=<span class="attribute-value">"openid2.local_id"
      </span><span class="attribute-name">href</span>=<span class="attribute-value">"http://TUONOME.myopenid.com" </span><span class="error"><span class="attribute-name">/</span></span>&gt;
&lt;<span class="start-tag">link</span><span class="attribute-name"> rel</span>=<span class="attribute-value">"openid2.provider"
      </span><span class="attribute-name">href</span>=<span class="attribute-value">"http://www.myopenid.com/server" </span><span class="error"><span class="attribute-name">/</span></span>&gt;
&lt;<span class="start-tag">meta</span><span class="attribute-name"> http-equiv</span>=<span class="attribute-value">"X-XRDS-Location"
      </span><span class="attribute-name">content</span>=<span class="attribute-value">"http://www.myopenid.com/xrds?username=TUONOME.myopenid.com" </span><span class="error"><span class="attribute-name">/</span></span>&gt;</pre>
<p>(occhio a sostituire TUONOME con il tuo nome) e d’ora in poi potremo <strong>usare l’url del blog come OpenID</strong> (io ad esempio uso arjuna.deltoso.net, se controllate i sorgenti vedrete il codice nell’header).</p>
<p><strong>Puntualizzazioni</strong></p>
<p>OpenID non ha lo scopo di <strong>aumentare la sicurezza </strong>delle nostre registrazioni (in pratica spesso lo fa, ma non è questo l’obiettivo) e quindi per il nostro <strong>on-line banking continueremo ad utilizzare un sistema ad hoc che non utilizza OpenID</strong>. Per tutto il resto come <em>blog, forum, chat, sitarelli social </em>e via dicendo invece risparmieremo neuroni, liberi dal doversi ricordare mille password.</p>
<p><em><strong>Fine.</strong></em></p>
<p><strong>Approfondimenti:</strong></p>
<ul>
<li>Sito ufficiale di OpenID  - <a href="http://www.openid.net/" target="_blank">http://www.openid.net/</a></li>
<li>Il blog italiano - <a href="http://blog.openid.it/" target="_blank">http://blog.openid.it/</a></li>
<li>Un articolo introduttivo di Nicola D’Agostino - <a href="http://www.nicoladagostino.net/articoli/attenzioneallidentita.html" target="_blank">Attenzione all&#8217;identita</a></li>
<li>Use your own URL as an OpenID - <a href="http://www.openidenabled.com/openid/use-your-own-url-as-an-openid" target="_blank">Delegation</a></li>
<li>I siti troppo avanti che già  implementano OpenID - <a href="https://www.myopenid.com/directory" target="_blank">OpenID site directory</a></li>
<li>“A step-by-step tutorial guide for implementing OpenID consumer-side support with a web site that already has users with accounts” - <a href="http://www.plaxo.com/api/openid_recipe" target="_blank">A Recipe for OpenID-Enabling Your Site</a></li>
</ul>
<p>* nei siti che implementano OpenID spesso viene chiesta qualche informazione aggiuntiva per la creazione del “profilo” utente (data di nascita, nazionalità , …), niente di eccessivo comunque =)</p>
]]></content:encoded>
			<wfw:commentRss>http://arjuna.deltoso.net/articoli/openid-dire-addio-a-tutte-le-password-meno-una-in-5-minuti/it/feed/it/</wfw:commentRss>
		</item>
		<item>
		<title>Installiamo il browser Mozilla Minimo per palmari in Linux</title>
		<link>http://arjuna.deltoso.net/articoli/installiamo-il-browser-mozilla-minimo-per-palmari-in-linux/it/</link>
		<comments>http://arjuna.deltoso.net/articoli/installiamo-il-browser-mozilla-minimo-per-palmari-in-linux/it/#comments</comments>
		<pubDate>Fri, 11 Jan 2008 18:41:19 +0000</pubDate>
		<dc:creator>Arjuna Del Toso</dc:creator>
		
		<category><![CDATA[articoli]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[mozilla minimo]]></category>

		<category><![CDATA[slackware]]></category>

		<guid isPermaLink="false">http://arjuna.deltoso.net/?p=10</guid>
		<description><![CDATA[Per motivi di studio mi sono trovato a dover scrivere (e quindi testare) una applicazione web per dispositivi mobili. Non avendo nessun tipo di dispositivo mobile su cui installare un browser, mi sono deciso a compilare  mozilla minimo su una linux box slackware 11, che poi sarebbe anche il mio desktop OS ;).

Compilare Mozilla [...]]]></description>
			<content:encoded><![CDATA[<p><em>Per motivi di studio mi sono trovato a dover scrivere (e quindi testare) una applicazione web per dispositivi mobili. Non avendo nessun tipo di dispositivo mobile su cui installare un browser, mi sono deciso a compilare  <a href="http://www.mozilla.org/projects/minimo/" target="_blank">mozilla minimo</a> su una linux box <a href="http://www.slackware.com/" target="_blank">slackware</a> 11, che poi sarebbe anche il mio desktop OS ;).</em></p>
<div>
<h4>Compilare Mozilla Minimo in Slackware 11</h4>
<h5>Introduzione</h5>
<p>Negli ultimi anni, con il veloce sviluppo e la sempre maggiore diffusione dei dispositivi mobili, sempre più spesso gli sviluppatori si trovano nella condizione di dover testare applicazioni web sviluppate appositamente per questi nuovi device. Non sempre però si dispone degli strumenti necessari, sia per il costo ancora eccessivo dei palmari sia per l’eterogeneità dei sistemi operativi preinstallati sui dispositivi.</p>
<p>Per risolvere parzialmente questi problemi vedremo come installare il browser web di casa Mozilla per dispositivi mobili, nome in codice <a href="http://www.mozilla.org/projects/minimo/">Minimo</a> (MINIMOzilla), sulla nostra linux box (<a href="http://www.slackware.com/announce/11.0.php">Slackware 11</a> installata di fresco).</p>
<h5>Checkout del codice e Configurazione</h5>
<p>Il codice che ci serve si trova nel repository CVS di mozilla, in diversi interventi sui vari forum dedicati si consiglia di non utilizzare il <em>trunk</em> ma basarsi sul pià stabile <em>branch 1.8</em>. Per fare questo posizionarsi da qualche parte nel filesystem (io ho utilizzato l’utente root per poter operare direttamente da <code>/opt</code>), creare una directory per contenere i sorgenti (<code>mkdir minimo</code>) e posizionarsi al suo interno (<code>cd minimo</code>, a questo punto ci troviamo in <code>/opt/minimo</code>). Di norma non si effettua mai direttamente il checkout dei sorgenti di progetti mozilla ma si utilizza il <code>client.mk</code> che si prende carico di tutte le fasi, per questo scaricheremo inizialmente dal repository soltanto pochi file:</p>
<pre>export CVSROOT=':pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot'
cvs co -r MOZILLA_1_8_BRANCH mozilla/client.mk mozilla/minimo/config/</pre>
<p>l’output di questi comandi dovrebbe assomigliare a:</p>
<pre>U mozilla/client.mk
cvs checkout: Updating mozilla/minimo/config
U mozilla/minimo/config/Makefile.in
U mozilla/minimo/config/linux_package.sh
U mozilla/minimo/config/version.txt
U mozilla/minimo/config/wince_buildinstaller.sh
U mozilla/minimo/config/wince_package.sh
cvs checkout: Updating mozilla/minimo/config/mozconfig
U mozilla/minimo/config/mozconfig/linux_x86
U mozilla/minimo/config/mozconfig/win32x86
U mozilla/minimo/config/mozconfig/wince_mozconfig
cvs checkout: Updating mozilla/minimo/config/wince
U mozilla/minimo/config/wince/eula.txt
U mozilla/minimo/config/wince/minimo.ico
U mozilla/minimo/config/wince/minimo.inf
U mozilla/minimo/config/wince/minimo_installer.ini
U mozilla/minimo/config/wince/readme.txt</pre>
<p>A questo punto possiamo personalizzare i parametri di compilazione:</p>
<pre>cp mozilla/minimo/config/mozconfig/linux_x86 mozilla/mozconfig
cd mozilla
pico -w mozconfig</pre>
<p>abilitiamo la modalità  debug (di default è disabilitata):</p>
<pre>ac_add_options --enable-debug</pre>
<p>se si dispone di un processore dual core si può impostare il multithreaded building per velocizzare la compilazione:</p>
<pre>mk_add_options MOZ_MAKE_FLAGS=-j3</pre>
<p>Il checkuot vero e proprio viene eseguito a questo punto con il comando:</p>
<pre>make -f client.mk checkout</pre>
<p>e dopo un’attesa più o meno lunga (con un 56k circa 4 ore) avremo i sorgenti pronti per la compilazione.</p>
<h5>Compilazione</h5>
<p>Per compilare i sorgenti è sufficente eseguire questo comando:</p>
<pre>make -f client.mk build_all</pre>
<p>ed attendere la fine del processo. Se non si verificano errori avremo il browser minimo pronto all’uso.</p>
<h5>Esecuzione</h5>
<p>Prima di poter eseguire minimo dobbiamo impostare alcune variabili d’ambiente:</p>
<pre>export MOZILLA_FIVE_HOME=$(pwd)/dist/bin
export LD_LIBRARY_PATH=$MOZILLA_FIVE_HOME</pre>
<p>ed in seguito, con il comando:</p>
<pre>dist/bin/minimo</pre>
<p>potremo finalmente eseguire il browser.</p>
<p><img class="alignnone size-full wp-image-11" title="minimo" src="http://arjuna.deltoso.net/wp-content/uploads/2008/07/minimo.png" alt="" width="248" height="349" /></p>
<h5>Goodies</h5>
<p>Se, come me, avete un solo utente sulla linux box con la necessità  di utilizzare minimo potreste valutare di offrire a questo utente maggiori diritti sulla directory /opt/minimo:</p>
<pre>chown -R [your user]:users /opt/minimo</pre>
<p>e, dopo essersi assicurati che la directory ~/bin esista e sia nel path (eseguire <code>echo $PATH</code> da utente), trovo comodo creare un semplice script bash per settare le variabili d’ambiente ed avviare minimo (come utente normale):</p>
<pre>cd ~/bin
pico -w minimo</pre>
<p>inserire nel file quanto segue:</p>
<pre>#!/bin/bash
export MOZILLA_FIVE_HOME=/opt/minimo/mozilla/dist/bin; export LD_LIBRARY_PATH=$MOZILLA_FIVE_HOME; /opt/minimo/mozilla/dist/bin/minimo</pre>
<p>e rendere lo script eseguibile:</p>
<pre>chmod 755 minimo</pre>
<p>Ora per lanciare minimo dovrebbe bastare eseguire il comando <code>minimo</code> da terminale.</p>
<h5>Altre Risorse Alternative</h5>
<p><a title="Simulatori del browser Opera Mini" href="http://www.operamini.com/beta/simulator/">Opera Mini Simulator</a> - This is a live demo of Opera Mini 4 beta that functions exactly like it would when installed on a handset.</p>
<p><a href="http://maemo.org/">Maemo</a> - Maemo provides an open source development platform for Nokia Internet Tablets and other Linux-based devices.</p>
<h5>Bibliografia</h5>
<p><a href="http://www.mozilla.org/projects/minimo/">Minimo Home Page</a></p>
<p><a href="http://www.mozilla.org/projects/minimo/build.html">Building Minimo for Linux</a> - Mozilla Official Page</p>
<p><a href="http://forums.mozillazine.org/viewtopic.php?t=552627">Building Minimo on x86 Linux</a> - MozillaZine Forum</p>
<p><em>Note: sebbene io abbia utilizzato slackware 11 con kernel 2.6.17.13 è molto probabile che questa guida permetta di installare minimo in tutte le distribuzioni linux recenti.</em></div>
]]></content:encoded>
			<wfw:commentRss>http://arjuna.deltoso.net/articoli/installiamo-il-browser-mozilla-minimo-per-palmari-in-linux/it/feed/it/</wfw:commentRss>
		</item>
	</channel>
</rss>
