<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>davideferrero.com</title>
	<atom:link href="http://blog.davideferrero.com/category/informatica/howto/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.davideferrero.com</link>
	<description>&#62; Web developer for passion</description>
	<lastBuildDate>Sun, 13 Nov 2011 15:55:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Siri incontra Siri</title>
		<link>http://blog.davideferrero.com/2011/11/siri-incontra-siri-apple-iphone-4s/</link>
		<comments>http://blog.davideferrero.com/2011/11/siri-incontra-siri-apple-iphone-4s/#comments</comments>
		<pubDate>Sun, 13 Nov 2011 15:55:11 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Divertimento]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPhone 4S]]></category>
		<category><![CDATA[SIRI]]></category>

		<guid isPermaLink="false">http://blog.davideferrero.com/?p=569</guid>
		<description><![CDATA[Ecco cosa succede quando due iPhone 4S con Siri si incontrano:]]></description>
			<content:encoded><![CDATA[<p>Ecco cosa succede quando due iPhone 4S con Siri si incontrano:</p>
<p><iframe width="560" height="315" src="http://www.youtube.com/embed/XBRXA8zmJr8" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2011/11/siri-incontra-siri-apple-iphone-4s/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Commenti annidati in wordpress</title>
		<link>http://blog.davideferrero.com/2011/10/commenti-annidati-in-wordpress/</link>
		<comments>http://blog.davideferrero.com/2011/10/commenti-annidati-in-wordpress/#comments</comments>
		<pubDate>Sun, 23 Oct 2011 13:16:48 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[html]]></category>

		<guid isPermaLink="false">http://blog.davideferrero.com/?p=562</guid>
		<description><![CDATA[In questi giorni sono ritornato a lavorare un po&#8217; sul mio amato wordpress. Oltre a segnalarvi un fantastico restyle grafico del tema di backend per l&#8217;amministrazione del blog che potete trovare aggiornando wordpress alla versione 3 oggi voglio parlarvi di come modificare il tema dei commenti. Questa piccola modifica servirà per visualizzare i commenti annidati, [...]]]></description>
			<content:encoded><![CDATA[<p>In questi giorni sono ritornato a lavorare un po&#8217; sul mio amato <a title="Wordpress" href="http://wordpress.org/" target="_blank">wordpress</a>.</p>
<p>Oltre a segnalarvi un fantastico restyle grafico del tema di backend per l&#8217;amministrazione del blog che potete trovare aggiornando wordpress alla versione 3 oggi voglio parlarvi di come modificare il tema dei commenti.</p>
<p>Questa piccola modifica servirà per visualizzare i commenti annidati, ossia far comparire le risposte ad un commento all&#8217;interno del commento stesso, per migliorare la discussione e permettere a chi legge per la prima volta tutti i commenti, chi ha risposto a chi e così via.</p>
<p>WordPress ammette di default una profondità di 5 commenti annidati, ma potete impostarla a piacere tramite il menu &#8220;Impostazioni&#8221;-&gt;&#8221;Discussione&#8221;.</p>
<p>Se utilizzate uno dei tanti temi scaricati dall&#8217;archivio di wordpress verificate solamente che il tema sia aggiornato e di norma dovrebbe già includere questa funzione.</p>
<p>Se invece come me sviluppate spesso temi partendo da zero e partite da un tema semplice e magari non aggiornato alle ultime versioni, dovrete compiere alcuni semplici passi:</p>
<ol>
<li>Nell&#8217;header.php (il file della testata), aggiungete una riga sopra al &#8220;wp_head()&#8221; con questo codice:
<pre class="brush: php; title: ;">&lt;?php if( is_singular() ) wp_enqueue_script( ‘comment-reply’ ); ?&gt;</pre>
</li>
<li>Nel file comments.php dove troverete il tag &#8220;ol&#8221; con all&#8217;interno il tag &#8220;li&#8221; che ha come classe css &#8220;comment&#8221; sostituite tutto il blocco con la semplice riga
<pre class="brush: xml; title: ;">&lt;ol class=&quot;commentlist&quot;&gt;
&lt;?php wp_list_comments(); ?&gt;
&lt;/ol&gt;</pre>
</li>
<li>A questo punto non vi resta che editare il vostro css e inserire uno stile personalizzato per i vari livelli di profondità dei commenti, per selezionare il tag &#8220;li&#8221; relativo al tag &#8220;ul&#8221; dei commenti inserite in testa al selettore css la classe &#8220;.commentlist&#8221; e il gioco è fatto!</li>
</ol>
<p>In pochi e semplici passi avrete così una più chiara visione dei commenti e soprattutto della discussione.</p>
<p>Da notare è che il requisito minimo per poter sfruttare questa funzionalità è quello di avere wordpress 2.7 o versione superiore.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2011/10/commenti-annidati-in-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installare Django 1.3 su Mac OS X 10.7 Lion e XAMPP 1.7.3</title>
		<link>http://blog.davideferrero.com/2011/07/installare-django-1-3-mac-os-x-10-7-lion-xampp-1-7-3/</link>
		<comments>http://blog.davideferrero.com/2011/07/installare-django-1-3-mac-os-x-10-7-lion-xampp-1-7-3/#comments</comments>
		<pubDate>Sat, 30 Jul 2011 17:46:35 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Lion]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[XAMPP]]></category>

		<guid isPermaLink="false">http://blog.davideferrero.com/?p=558</guid>
		<description><![CDATA[Se anche voi come me siete curiosi utilizzatori di mac, in questi giorni sarete sicuramente stati tentati di installare l&#8217;ultima versione di OS X, ovvero la major release 10.7 denominata &#8220;Lion&#8221;. Se non avete ancora provveduto all&#8217;aggiornamento, ma siete in procinto di farlo, vi consiglio quest&#8217;ottima guida di macitynet (onde evitare problemi al primo avvio di [...]]]></description>
			<content:encoded><![CDATA[<p>Se anche voi come me siete curiosi utilizzatori di mac, in questi giorni sarete sicuramente stati tentati di installare l&#8217;ultima versione di OS X, ovvero la major release 10.7 denominata &#8220;Lion&#8221;.</p>
<p>Se non avete ancora provveduto all&#8217;aggiornamento, ma siete in procinto di farlo, vi consiglio <a title="Guida passo passo all'installazione di Lion" href="http://www.macitynet.it/macity/articolo/OS-X-10.7-Lion-guida-allinstallazione-passo-dopo-passo/aA52834" target="_blank">quest&#8217;ottima guida di macitynet</a> (onde evitare problemi al primo avvio di Lion).</p>
<p>Terminato l&#8217;aggiornamento sembrava tutto apparentemente funzionante, fino a quando non ho tentato di avviare il server di sviluppo di <a title="Django web framework" href="https://www.djangoproject.com/" target="_blank">django</a>. Non ricordo con precisione l&#8217;errore ma il succo era che il driver per la connessione al db non era più funzionante. Ingenuamente ho disinstallato <a title="Mysql-Python" href="http://sourceforge.net/projects/mysql-python/" target="_blank">mysql-python</a>(conosciuto anche come mysqldb) credendo fosse sufficiente una reinstallazione&#8230;. ripeto: ingenuo. ;-)</p>
<p>Lanciando il comando:</p>
<pre class="brush: python; title: ;">sudo python setup.py build</pre>
<p>ottenevo una <em>sbrodolata</em> di errori relativi a librerie gcc. A fiuto ho quindi reinstallato xcode (scaricabile gratuitamente dall&#8217;app store) e rilanciato la build di mysql-python&#8230; ancora errori, ma quelli precedenti sembravano risolti. Ora le rogne venivano dal mysql_config mancante&#8230; Ho scoperto che nella cartella di installazione di mysql-python c&#8217;è un file site.cfg che contiene questa famosa variabile mysql_config, la quale deve contenere il path al file mysql_config (file di configurazione di mysql). Per me che uso <a title="XAMPP 1.7.3 per Mac" href="http://www.apachefriends.org/it/xampp-macosx.html" target="_blank">XAMPP 1.7.3</a> su mac questo file si trova in &#8220;/Applications/XAMPP/xamppfiles/bin&#8221;.</p>
<p>Lanciando la build del driver ottengo errori dovuti alla mancanza degli headers di mysql, errore che avevo già riscontrato nell&#8217;installazione di Imagick su XAMPP per Mac, vado per cui diretto sul sito di <a title="XAMPP 1.7.3 per Mac" href="http://www.apachefriends.org/it/xampp-macosx.html" target="_blank">XAMPP 1.7.3</a>, scarico il <em>development package</em> e lo installo.</p>
<p>Sperando nella buona sorte rilancio per l&#8217;ennesima volta la build di mysql-python e incappo nell&#8217;ennesimo errore. Questa volta sembra che sia dovuto ad una errata versione di XCode, ma leggendo più approfonditamente noto che il problema è dovuto al mancato supporto power-pc (ppc) a partire da XCode 4. Per risolvere questo ennesimo problema si deve editare il famoso <em>mysql_config</em> (in &#8220;/Applications/XAMPP/xamppfiles/bin&#8221; per chi usa XAMPP) nel seguente modo.</p>
<p>Alla riga 97 sostituite la versione minima di mac osx, io ho modificato da 10.4 a 10.6 (vedete voi), la mia riga ora è così:</p>
<pre class="brush: bash; title: ;">ldflags='-L/Applications/XAMPP/xamppfiles/lib -I/Applications/XAMPP/xamppfiles/include -mmacosx-version-min=10.6 '</pre>
<p>Alla riga 122 riportate la versione di mac appena modificata e inoltre eliminate la voce -arch ppc, la mia riga ora si presenta così:</p>
<pre class="brush: bash; title: ;">cflags=&quot;-I$pkgincludedir  -I/Applications/XAMPP/xamppfiles/include -L/Applications/XAMPP/xamppfiles/lib -mmacosx-version-min=10.6 -arch i386 -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT  -DDONT_DECLARE_CXA_PURE_VIRTUAL &quot; #note: end space!</pre>
<p>A questo punto lanciate la build e per magia arriverà fino al termine senza più errori. Potete quindi installare il pacchetto lanciando il comando:</p>
<pre class="brush: python; title: ;">sudo python setup.py install</pre>
<p>A questo punto django sarà tornato alla normalità (a meno che voi utilizzaste le python image library, PIL, per cui dovrete reinstallare anche quelle, ma io non ho riscontrato problemi nel farlo).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2011/07/installare-django-1-3-mac-os-x-10-7-lion-xampp-1-7-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installare Ubuntu Server 10.04 LTS con RAID 10 e LVM</title>
		<link>http://blog.davideferrero.com/2011/05/installare-ubuntu-server-10-04-lts-con-raid-10-e-lvm/</link>
		<comments>http://blog.davideferrero.com/2011/05/installare-ubuntu-server-10-04-lts-con-raid-10-e-lvm/#comments</comments>
		<pubDate>Mon, 02 May 2011 05:00:05 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Ubuntu 10.04]]></category>
		<category><![CDATA[Ubuntu Server]]></category>
		<category><![CDATA[Ubuntu Server 10.04 LTS]]></category>

		<guid isPermaLink="false">http://blog.davideferrero.com/?p=550</guid>
		<description><![CDATA[Eccomi qua! Dopo un po&#8217; di tempo con poche &#8220;scoperte&#8221; interessanti, oggi ritorno con un articolo che riguarda i server. Ovviamente quando parlo di server, parlo di linux e ancora più nello specifico di Ubuntu. Ultimamente per andare sul sicuro mi sono abituato ad utilizzare solo più le versioni LTS ossia le Long Term Support, [...]]]></description>
			<content:encoded><![CDATA[<p>Eccomi qua! Dopo un po&#8217; di tempo con poche &#8220;scoperte&#8221; interessanti, oggi ritorno con un articolo che riguarda i server.</p>
<p>Ovviamente quando parlo di server, parlo di linux e ancora più nello specifico di <a title="Ubuntu Server" href="http://www.ubuntu.com/business/server/overview" target="_blank">Ubuntu</a>.</p>
<p>Ultimamente per andare sul sicuro mi sono abituato ad utilizzare solo più le versioni LTS ossia le Long Term Support, le versioni supportate per 3 anni, decisamente molto più stabili rispetto alle altre.</p>
<p>Quando si installa un server generalmente si ha a che fare con la necessità di mantenere il più possibile al sicuro i dati che vi verranno salvati e per fare ciò è buona norma gestire lo spazio a propria disposizione con il <a title="RAID" href="http://it.wikipedia.org/wiki/RAID" target="_blank">RAID</a> ossiamo un sistema di replica delle informazioni in tempo reale che tenta di ridurre al minimo le possibilità di perdita di dati (ridurre, non eliminare, ne ho le prove ;-) ).</p>
<p>L&#8217;installazione di Ubuntu consente di creare un RAID software nel caso in cui il server che stiamo preparando non abbia un sistema di RAID hardware.</p>
<p>Tralasciamo la discussione sulla scelta del RAID, per quello che ho potuto provare sulla mia pelle in genere è sempre meglio un RAID 0 o un RAID 1 o meglio ancora un RAID 1+0 detto anche RAID 10 perchè a differenza dell&#8217;alternativo RAID 5 lascia i dati in chiaro e quindi leggibili in qualsiasi momento, anche collegandolo su un&#8217;altra macchina (in caso di problemi). Detto ciò, veniamo a come preparare le partizioni per costruire il RAID.</p>
<p>Prendendo l&#8217;esempio di 2 dischi da 500 Gb vi conviene creare due partizioni primarie per ciascun disco (scegliete la voce &#8220;partizionamento manuale&#8221;): una dimensionata il doppio della ram presente sul server, e una con lo spazio rimanente. Ripetete la stessa cosa con le altre due partizioni dell&#8217;altro disco. Per ogni partizione alla voce &#8220;usare come&#8221; dobbiamo ricordarci di impostare &#8220;volume per il raid&#8221;. Fatto ciò possiamo terminare il partizionamento e configurare gli array raid tramite l&#8217;apposito menu, scegliendo il raid desiderato e settando quanti dischi usare per il raid (2) e quanti dischi di spare(0).</p>
<p>Come detto dobbiamo configurare due array, uno per la swap e uno per il sistema vero e proprio. Per il primo array scegliamo i due volumi a cui abbiamo assegnato il doppio della dimensione della ram, confermiamo e passiamo alla configurazione del secondo array con i restanti due volumi.</p>
<p>Finita la configurazione dei due array del raid possiamo terminare l&#8217;operazione e scrivere le modifiche.</p>
<p>Quando apparirà nuovamente la schermata con le tabelle delle partizioni potremo notare che sono state aggiunte due voci all&#8217;elenco, ossia quelle corrispondenti ai due arrays. A questo punto possiamo creare due partizioni (una per array) e impostare la voce &#8220;usare come&#8221; su &#8220;volume per LVM&#8221;.</p>
<p>L&#8217;<a title="Logical Volume Manager" href="http://it.wikipedia.org/wiki/Gestore_logico_dei_volumi" target="_blank">LVM</a> è un gestore dei volumi logici, ossia consente di creare dei volumi &#8220;estendibili&#8221; in qualsiasi momento. Infatti smontando i volumi si possono aumentare le loro dimensioni senza dover formattare e senza subire perdite di dati, e addiritture si possono raggruppare in un unico volume più dischi (anche aggiunti in un secondo momento). Un po&#8217; quello che si può fare tramite l&#8217;ormai conosciutissimo <a title="GParted" href="http://gparted.sourceforge.net/" target="_blank">GParted</a> in Ubuntu desktop.</p>
<p>Tornando all&#8217;installazione del nostro ubuntu server, una volta impostate le nostre partizioni come volumi per LVM possiamo procedere alla creazione dei due volumi logici, come già detto uno per lo swap e uno per il sistema. Una volta confermata la creazione dei due volumi logici (dovrete assegnare un nome ai volumi da creare, ad esempio &#8220;swap&#8221; e &#8220;srv&#8221;) nella tabelle delle partizioni troveremo altre due voci, rappresentati i due nuovi volumi appena creati.</p>
<p>A questo punto possiamo procedere alla creazione delle partizioni da far usare all&#8217;installazione di Ubuntu: una da impostare come &#8220;volume swap&#8221; e l&#8217;altra da impostare con ext4 (o ext3 per i più tradizionalisti :-P ). Ovviamente la partizione formattata con ext4 dovrà avere come punto di mount &#8220;/&#8221; (root). Confermate queste modifiche l&#8217;installazione procederà a gonfie vele, e in pochi minuti il vostro server sarà pronto per l&#8217;uso! :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2011/05/installare-ubuntu-server-10-04-lts-con-raid-10-e-lvm/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Calibrare la batteria di un Macbook Pro e non solo&#8230;</title>
		<link>http://blog.davideferrero.com/2011/02/calibrare-la-batteria-di-macbook-pro-e-pc-portatili/</link>
		<comments>http://blog.davideferrero.com/2011/02/calibrare-la-batteria-di-macbook-pro-e-pc-portatili/#comments</comments>
		<pubDate>Sat, 19 Feb 2011 10:27:03 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Utility]]></category>
		<category><![CDATA[Batteria]]></category>
		<category><![CDATA[Calibrazione]]></category>
		<category><![CDATA[Litio]]></category>
		<category><![CDATA[Macbook]]></category>
		<category><![CDATA[macbook pro]]></category>
		<category><![CDATA[Notebook]]></category>
		<category><![CDATA[Portatile]]></category>

		<guid isPermaLink="false">http://blog.davideferrero.com/?p=540</guid>
		<description><![CDATA[E&#8217; passato quasi un anno da quando ho abbandonato il mondo dei pc per passare a mac. Ma non voglio stressarvi su quanto mi trovi bene in questo mondo rispetto all&#8217;altro, per il momento siete salvi ;-). Voglio invece raccontarvi di una piccola scoperta fatta. Quando ho avuto tra le mani il mio Macbook Pro, [...]]]></description>
			<content:encoded><![CDATA[<p>E&#8217; passato quasi un anno da quando ho abbandonato il mondo dei pc per passare a mac. Ma non voglio stressarvi su quanto mi trovi bene in questo mondo rispetto all&#8217;altro, per il momento siete salvi ;-). Voglio invece raccontarvi di una piccola scoperta fatta.</p>
<p>Quando ho avuto tra le mani il mio Macbook Pro, una delle prime cose su cui mi sono documentato è stato il &#8220;come usare al meglio la batteria&#8221;. Viste le passate esperienze da ignorante su questo argomento, e dato che il mio vecchio pc era arrivato ad avere una quindicina di minuti di autonomia rispetto alle due ore e mezza iniziali, desideravo non ripetere l&#8217;esperienza negativa. Dopo poche ricerche sono finito su <a title="Ottimizzare le batterie dei Macbook Pro" href="http://www.apple.com/it/batteries/notebooks.html" target="_blank">questa pagina ufficiale di apple</a>.</p>
<p>Apple consiglia di usare a piacere il proprio mac senza preoccuparsi troppo della batteria, seguendo solo alcune semplici regole. L&#8217;elemento essenziale delle batterie al litio è quello di far &#8220;muovere&#8221; gli elettroni che stanno all&#8217;interno delle batterie, è sconsigliabile quindi lavorare sempre collegati alla rete elettrica. L&#8217;uso ottimale è quello di un pendolare che usa la batteria del suo mac sul treno mentre va a lavoro e poi una volta arrivato in ufficio lo collega alla rete, per poi fare la stessa cosa nel viaggio di ritorno.</p>
<p>Fortunatamente non tutti prendiamo il treno, e non mi sembra cosa buona e giusta prendere il treno solo per ottimizzare l&#8217;uso della propria batteria, ma ricordatevi di farla scaricare e ricaricare di tanto in tanto.</p>
<p>Oltre a ciò Apple consiglia di calibrare la batteria una volta ogni due mesi (o una volta al mese ancora meglio). La calibrazione non richiede nulla di troppo faticoso ma soltanto alcuni piccoli accorgimenti. Riporto di seguito i passi da seguire per effettuare la calibrazione della batteria del vostro mac (<a title="Calibrare la batteria di un Macbook o di un Macbook Pro" href="http://docs.info.apple.com/article.html?path=Mac/10.6/it/9036.html" target="_blank">la pagina ufficiale è questa</a>):</p>
<ol>
<li>Collegare l&#8217;alimentatore al proprio mac e caricarlo completamente fino a quando la luce del connettore non diventa verde o quando l&#8217;icona della batteria nella barra in alto non segnala la carica completata.</li>
<li>Lasciare l&#8217;alimentatore collegato al mac per due ore o più. Durante questa fase potete tranquillamente continuare ad usare il vostro mac.</li>
<li>Passate almeno le due ore, scollegare il cavo dell&#8217;alimentatore con il mac acceso e iniziare (o continuare) ad usarlo per scaricare la batteria.</li>
<li>Portare la carica della batteria al minimo, salvare i lavori e usare il mac fino a quando non va in stato di stop autonomamente.</li>
<li>A questo punto lasciare spento il mac per almeno 5 ore</li>
<li>Passate le 5 ore, ricollegare il mac all&#8217;alimentatore e caricarlo fino a raggiungere la carica completa (è possibile usare il mac in questa fase).</li>
</ol>
<p>Come vi dicevo ho fatto una scoperta: sul nuovo pc che uso per lavoro ho installato Ubuntu 10.04, il quale ha l&#8217;applicazione di gestione della batteria che segnala la carica di fabbrica della batteria in uso e l&#8217;ultima carica raggiunta. Vedendo che dopo alcune scariche e ricariche l&#8217;ultima carica raggiunta si allontanava dalla carica di fabbrica ho provato a seguire la stessa procedura che uso per calibrare la batteria del mac e&#8230;. funziona! ;-). Dopo aver calibrato la batteria, Ubuntu mi segnalava l&#8217;ultima carica raggiunta <span style="text-decoration: underline;">identica</span> alla carica di fabbrica.</p>
<p>In definitiva credo che tutti i notebook di ultima generazione (ovvero con batteria al litio) possano seguire questa procedura.</p>
<p>Grazie ad Apple per queste preziose indicazioni per mantenere al meglio le batterie dei nostri portatili! ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2011/02/calibrare-la-batteria-di-macbook-pro-e-pc-portatili/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Installare tomcat 6 e postgresql 8.4 su ubuntu server 10.04</title>
		<link>http://blog.davideferrero.com/2010/12/tomcat-postgresql-ubuntu-server-10-04/</link>
		<comments>http://blog.davideferrero.com/2010/12/tomcat-postgresql-ubuntu-server-10-04/#comments</comments>
		<pubDate>Sat, 18 Dec 2010 14:32:51 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Jdk]]></category>
		<category><![CDATA[Jsp]]></category>
		<category><![CDATA[Postgresql]]></category>
		<category><![CDATA[Tomcat6]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Ubuntu Server]]></category>

		<guid isPermaLink="false">http://blog.davideferrero.com/?p=525</guid>
		<description><![CDATA[L&#8217;ambiente più familiare (lato server) per realizzare applicazioni web su linux è senza ombra di dubbio un server LAMP (Linux Apache MySQL PHP). Ormai lo si riesce ad installare senza grosse difficoltà anche in ambiente linux, grazie (ancora una volta) ad ubuntu che mette a disposizione e ci configura tutti i pacchetti necessari per avere [...]]]></description>
			<content:encoded><![CDATA[<p>L&#8217;ambiente più familiare (lato server) per realizzare applicazioni web su linux è senza ombra di dubbio un server LAMP (Linux Apache MySQL PHP).</p>
<p>Ormai lo si riesce ad installare senza grosse difficoltà anche in ambiente linux, grazie (ancora una volta) ad ubuntu che mette a disposizione e ci configura tutti i pacchetti necessari per avere un ambiente completamente funzionante.</p>
<p>A volte risulta però necessario uscire dal seminato, cambiando magari <a title="DataBase Management System" href="http://it.wikipedia.org/wiki/Database_management_system" target="_blank">DBMS</a> o linguaggio di programmazione. Vuoi perchè si vuole avere un db più simile ad Oracle o vuoi perchè si preferisce un linguaggio più strutturato o più familiare ai programmatori.</p>
<p>Mi è successo alcuni giorni fa di provare a configurare sul mio server di casa, un ubuntu server 10.04 LTS, un gestionale web scritto in java compatibile con sql server o postgresql. Visto che, come saprà chi mi conosce, non amo molto le tecnologie microsoft e che non credo si riesca ad installare sql server su linux, ho deciso di buttarmi su postgresql ;-)&#8230;</p>
<p>Dovremmo quindi installare <a title="Apache Tomcat" href="http://tomcat.apache.org/" target="_blank">tomcat</a> per avere un server web java e <a title="Postgresql" href="http://www.postgresql.org/" target="_blank">postgresql</a> per il lato database.</p>
<p>Per prima cosa, assicuriamoci di avere il java development kit di <a title="Sun" href="http://www.oracle.com/us/sun/index.html" target="_blank">Sun</a> installato:</p>
<pre class="brush: bash; title: ;">sudo apt-get install sun-java6-jdk</pre>
<p>Ora possiamo procedere con l&#8217;installazione del server web tomcat:</p>
<pre class="brush: bash; title: ;">sudo apt-get install tomcat6
sudo apt-get install tomcat6-admin</pre>
<p>Una volta installati questi pacchetti il nostro server web sarà pronto per essere utilizzato e amministrato, potete verificarne il funzionamento digitanto da browser <strong>http://<em>ip_server</em>:8080/</strong>, dove <em>ipserver</em> sarà l&#8217;indirizzo ip della macchina su cui avete installato tomcat.</p>
<p>Per poter entrare nella sezione di amministrazione delle applicazioni installate in tomcat e verificare lo stato del server, si dovrà creare un utente e fornirgli i privilegi di amministrazione. Per fare ciò editate il file <strong>/etc/tomcat6/tomcat-users.xml</strong> inserendo le seguenti linee:</p>
<pre class="brush: bash; title: ;">&lt;role rolename=&quot;admin&quot;/&gt;
&lt;role rolename=&quot;manager&quot;/&gt;
&lt;user username=&quot;admin&quot; password=&quot;admin&quot; roles=&quot;admin,manager&quot;/&gt;</pre>
<p>Tomcat su linux usa di default le openjdk ovvero le jdk java open source e non quelle ufficiali sun, perciò potreste incorrere in problemi di incompatibilità se installate software non testato su questa piattaforma, per modificare le jdk usate editate il file <strong>/etc/default/tomcat6/</strong> e alla voce JAVA_HOME sostituite la linea con questa:</p>
<pre class="brush: bash; title: ;">JAVA_HOME=/usr/lib/jvm/java-6-sun</pre>
<p>Bene, ora che il server è installato e configurato possiamo passare all&#8217;installazione di postgresql:</p>
<pre class="brush: bash; title: ;">sudo apt-get install postgresql</pre>
<p>Ora che postgresql è installato configuriamo gli indirizzi ip sui quali il db server sarà in ascolto. Potrebbe non essere necessario fare questa configurazione se non desiderate gestire postgresql dall&#8217;esterno, ma <a title="PgAdmin" href="http://www.pgadmin.org/" target="_blank">pgadmin</a> è un tool di gestione per postgresql davvero comodo. Editate quindi il file <code><strong>/etc/postgresql/8.4/main/postgresql.conf</strong> così:<br />
</code></p>
<pre class="brush: bash; title: ;">listen_addresses = 'localhost,&lt;em&gt;ip_server&lt;/em&gt;'</pre>
<p>Dove <em>ip_server</em> sarà sempre l&#8217;ip della macchina su cui avete installato postgre.</p>
<p>Ora inseriamo la password per l&#8217;utente default <em>postgres</em>:</p>
<pre class="brush: bash; title: ;">sudo -u postgres psql template1</pre>
<p>Si aprirà la shell di postgre e dovremo eseguire la query:</p>
<pre class="brush: sql; title: ;">ALTER USER postgres with encrypted password 'password';</pre>
<p>Fatto ciò possiamo editare il file dei permessi di postgre <strong>/etc/postgresql/8.4/main/pg_hba.conf</strong>:</p>
<pre class="brush: bash; title: ;">local   all   all   md5
host   all   all   192.168.0.0/24   md5</pre>
<p>A questo punto possiamo riavviare sia tomcat sia postgre:</p>
<pre class="brush: bash; title: ;">sudo /etc/init.d/tomcat6 restart
sudo /etc/init.d/postgresql-8.4 restart</pre>
<p>&#8230;e andare a posizionare le nostre applicazioni in <strong>/var/lib/tomcat6/webapps/</strong> e gestire i database da shell o tramite pgadmin ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2010/12/tomcat-postgresql-ubuntu-server-10-04/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Il blog si rifà il look!</title>
		<link>http://blog.davideferrero.com/2010/12/design-minimal-tema-blog-wordpress/</link>
		<comments>http://blog.davideferrero.com/2010/12/design-minimal-tema-blog-wordpress/#comments</comments>
		<pubDate>Sun, 12 Dec 2010 11:10:52 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[Attualità]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Minimal]]></category>
		<category><![CDATA[Tema]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://blog.davideferrero.com/?p=519</guid>
		<description><![CDATA[Come avrete potuto notare visitando il mio blog, da oggi c&#8217;è una nuova grafica ad accogliervi! Ho lavorato qualche giorno(ma soprattutto qualche notte :-P) per realizzare il nuovo tema wordpress, cercando di seguire le linee guida dettate dal mio amico architetto Ermal Brahimaj. Discutendo insieme di cosa doveva avere il mio blog, e di come [...]]]></description>
			<content:encoded><![CDATA[<p>Come avrete potuto notare visitando il mio blog, da oggi c&#8217;è una nuova grafica ad accogliervi!</p>
<p>Ho lavorato qualche giorno(ma soprattutto qualche notte :-P) per realizzare il nuovo tema wordpress, cercando di seguire le linee guida dettate dal mio amico architetto <a title="Architetto Ermal Brahimaj" href="http://brahimaj.com" target="_blank">Ermal Brahimaj</a>.</p>
<p>Discutendo insieme di cosa doveva avere il mio blog, e di come doveva essere realizzato, mi ha dato alcune brillanti idee, analizzando il mio sito sotto il punto di vista di un utente che vede per la prima volta questo spazio. Il design è minimal (spero piacerà anche a <a title="Marco Viti su Twitter" href="http://twitter.com/marcoviti" target="_blank">@marcoviti</a> ;-) ) e utilizza solamente una scala di grigi. Ho eliminato tutto il superfluo, in modo che il lettore si possa concentrare solamente sul contenuto, il vero &#8220;succo&#8221; di questo sito. Proprio per accentuare questo concetto, (se provate a spostare il mouse sul testo dell&#8217;articolo ne avrete la prova) ho utilizzato <a title="jQuery, javascript framework" href="http://jquery.com" target="_blank">jQuery</a> per far &#8220;scomparire&#8221; il superfluo, ovvero il banner il menu e la ricer ca, così che il lettore non abbia distrazioni. Inoltre non ci sono linee che delimitino lo spazio del sito, proprio dare la sensazione di libertà, di respiro.</p>
<p>Spero piaccia anche a voi questo restyling, in ogni caso ringrazio davvero il mio amico Ermal per le idee che mi ha dato e vi invito, se non lo avete ancora fatto, a visitare il suo sito <a title="Architetto Ermal Brahimaj" href="http://brahimaj.com" target="_blank">brahimaj.com</a> e la sezione <em>progetti</em> per <a title="Progetti di Ermal Brahimaj" href="http://brahimaj.com/?sezione=progetti" target="_blank">dare un&#8217;occhiata ai suoi lavori</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2010/12/design-minimal-tema-blog-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Preparare un web server per django su ubuntu server 10.04</title>
		<link>http://blog.davideferrero.com/2010/11/web-server-django-ubuntu-server-10-04-mod-wsgi/</link>
		<comments>http://blog.davideferrero.com/2010/11/web-server-django-ubuntu-server-10-04-mod-wsgi/#comments</comments>
		<pubDate>Sun, 21 Nov 2010 14:11:01 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.davideferrero.com/?p=503</guid>
		<description><![CDATA[Poco tempo fa ho scoperto il favoloso mondo di Django, un web framework che consente di scrivere meno codice e creare applicazioni python davvero molto efficienti. Oltre ad essere un framework che implementa l&#8217;MVC(Model View Controller), la caratteristica che mi ha attratto maggiormente è una fantastica funzionalità di ORM(Object Relational Mapping).. cosa significa? In poche [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter" title="Django web framework" src="http://blog.davideferrero.com/image.php?i=42" alt="" width="117" height="41" /></p>
<p>Poco tempo fa ho scoperto il favoloso mondo di <a title="Django web framework" href="http://www.djangoproject.com/" target="_blank">Django</a>, un web framework che consente di scrivere meno codice e creare applicazioni python davvero molto efficienti.</p>
<p>Oltre ad essere un framework che implementa l&#8217;<a title="Model View Controller" href="http://it.wikipedia.org/wiki/Model-View-Controller" target="_blank">MVC</a>(Model View Controller), la caratteristica che mi ha attratto maggiormente è una fantastica funzionalità di <a title="Object Relational Mapping" href="http://it.wikipedia.org/wiki/Object-relational_mapping" target="_blank">ORM</a>(Object Relational Mapping).. cosa significa? In poche parole nel file che implementa il &#8220;Model&#8221; (models.py) dovrete dichiarare gli oggetti che verranno trasformati in tabelle del vostro database, al resto penserà django. Infatti una volta collegato un db e scritte le classi del modello, con la funzione syncdb verranno create le tabelle residenti sul db. Vi rimando però al <a title="Django tutorial" href="http://docs.djangoproject.com/en/dev/intro/tutorial01/" target="_blank">tutorial ufficiale</a> per capire davvero qualcosa in più su questo fantastico framework&#8230;</p>
<p>In questo post vi farò vedere i pochi e semplici passi per configurare un web server adatto ad ospitare un&#8217;applicazione django. Ovviamente il server linux girerà grazie ad <a title="Ubuntu Server" href="http://www.ubuntu.com/server" target="_blank">ubuntu server</a> ed in particolare nella versione LTS(long term support) 10.04. Salterò ovviamente i passi dell&#8217;installazione vera e propria del sistema operativo (anche perchè ormai è a prova di win-user :-P ).</p>
<p>Partendo da un sistema pulito, su cui non è stato installato nessun componente, dovremo per prima cosa assicurarci che il sistema sia aggiornato:</p>
<pre class="brush: bash; title: ;">sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get upgrade</pre>
<p>Fatto ciò possiamo procedere con l&#8217;installazione dei componenti necessari a mettere in piedi un server web, il che equivale ovviamente ad installare il buon vecchio <a title="Apache Software Foundation" href="http://www.apache.org/" target="_blank">Apache</a>:</p>
<pre class="brush: bash; title: ;">sudo apt-get install lamp-server^</pre>
<p>In questo modo installeremo tutti i pacchetti per avere un server LAMP ovvero con apache come detto, e con mysql per la parte di database (verrà installato anche php5 per poter utilizzare phpmyadmin, l&#8217;interfaccia per la gestione da web di mysql)</p>
<p>Attesi i dovuti tempi per lo scaricamento, l&#8217;installazione e la configurazione dei vari pacchetti (vi verrà chiesta la password per mysql) dovreste avere il vostro server web funzionante (potete testarlo collegandovi da un qualsiasi browser nella rete all&#8217;indirizzo ip del server es: http://192.168.0.1 ).</p>
<p>Bene, ora manca un ultimo componente per avere il server pronto: il <a title="Mod WSGI" href="http://code.google.com/p/modwsgi/" target="_blank">mod_wsgi</a> ovvero il modulo apache per l&#8217;interpretazione del codice python:</p>
<pre class="brush: bash; title: ;">sudo apt-get install libapache2-mod-wsgi</pre>
<p>Ora non ci resta che installare il driver per fare comunicare python e mysql, che come detto sarà per comodità il nostro dbms:</p>
<pre class="brush: bash; title: ;">sudo apt-get install python-mysqldb</pre>
<p>Ora possiamo procedere al download e installazione del framework dal <a title="Download django" href="http://www.djangoproject.com/download/" target="_blank">sito ufficiale di django</a>(vi risparmio il &#8220;wget&#8221;, mi sembrava troppo da nerd, ma si può fare ;-) ). Trasferite il tar.gz sul server se non è già lì, e scompattatelo (tar -xvzf nomefile.tar.gz per i <em>newbie</em>). Ora entrando nella cartella che avete ottenuto dalla scompattazione potete installare django:</p>
<pre class="brush: bash; title: ;">sudo python setup.py install</pre>
<p>Vi consiglio spassionatamente di installare la release ufficiale di django e non quella dagli archivi ubuntu per un puro fatto di aggiornamento della versione, infatti sul canale ufficiale sarete sicuri di avere l&#8217;ultima stable-release mentre ubuntu è sempre più indietro in queste cose&#8230;</p>
<p>Bene adesso abbiamo tutto ciò che ci serve(r) (battuta di bassissimo umorismo, non ci fate caso, è l&#8217;età :-P ).</p>
<p>Procediamo con la creazione del file python che darà le direttive al mod_wsgi sui percorsi della nostra applicazione, nella cartella del nostro progetto, creiamo il file django.wsgi:</p>
<pre class="brush: bash; title: ;">vim /home/user/py-srv/applicazione1/django.wsgi</pre>
<p>Ipotizzando che la nostra applicazione risieda in /home/user/py-srv/applicazione1 &#8230;</p>
<p>Il file dovrà contenere il seguente codice:</p>
<pre class="brush: python; title: ;">import os
import sys

sys.path.append('/home/user/py-srv/applicazione1')

os.environ['PYTHON_EGG_CACHE'] = '/home/user/py-srv/.python-egg'
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
</pre>
<p>Ora dobbiamo solamente dire ad apache quale sarà la cartella della nostra applicazione. Per fare ciò editiamo il file <em>default</em> nella cartella sites-available di apache (prima però facciamo una copia del file per sicurezza ;-) ) :</p>
<pre class="brush: bash; title: ;">sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/default.old
sudo vim /etc/apache2/sites-available/default</pre>
<p>Il file dovrà contenere le seguenti configurazioni:</p>
<pre class="brush: bash; title: ;">&lt;VirtualHost *:80&gt;
   DocumentRoot /home/user/py-srv/applicazione1/public_html

   WSGIScriptAlias / /home/user/py-srv/applicazione1/django.wsgi
   &lt;Directory /home/user/py-srv/applicazione1&gt;
      Order allow,deny
      Allow from all
   &lt;/Directory&gt;

   Alias /favicon.ico /home/user/py-srv/applicazione1/public_html/favicon.ico
   Alias /images /home/user/py-srv/applicazione1/public_html/images
   Alias /static /home/user/py-srv/applicazione1/public_html/static

   ErrorLog /home/user/py-srv/applicazione1/logs/error.log
   CustomLog /home/user/py-srv/applicazione1/logs/access.log combined
&lt;/VirtualHost&gt;
</pre>
<p>Come potete immaginare la cartella &#8220;public_html&#8221; sarà quella che conterrà i file html pubblici, ovvero i file del template della vostra applicazione.</p>
<p>Bene, se avete fatto tutto nel modo giusto, vi basterà collegarvi all&#8217;indirizzo ip che avete già usato prima per testare apache, e vedrete come per magia che funzionerà tutto!</p>
<p>(non funziona? non fate come me che avevo lasciato il vecchio path nel file settings.py, e ci ho perso mezz&#8217;ora per accorgermene :-P )</p>
<p>Buon divertimento!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2010/11/web-server-django-ubuntu-server-10-04-mod-wsgi/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Mai perdersi d&#8217;animo&#8230;</title>
		<link>http://blog.davideferrero.com/2010/10/mai-perdersi-danimo/</link>
		<comments>http://blog.davideferrero.com/2010/10/mai-perdersi-danimo/#comments</comments>
		<pubDate>Sun, 17 Oct 2010 22:18:56 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Divertimento]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Atomic Tom]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Metropolitana]]></category>
		<category><![CDATA[New York city]]></category>
		<category><![CDATA[NYC]]></category>

		<guid isPermaLink="false">http://blog.davideferrero.com/?p=500</guid>
		<description><![CDATA[Nella vita non bisogna mai scoraggiarsi, spesso lo sentiamo dire, ma questa notizia ci fa capire davvero cosa voglia dire il concetto&#8230; Un gruppo americano, fino ad oggi per me assolutamente sconosciuto (ma sono davvero una capra in fatto di musica, magari sono davvero bravi), gli Atomic Tom sono stati derubati di tutti i loro [...]]]></description>
			<content:encoded><![CDATA[<p>Nella vita non bisogna mai scoraggiarsi, spesso lo sentiamo dire, ma questa notizia ci fa capire davvero cosa voglia dire il concetto&#8230;</p>
<p>Un gruppo americano, fino ad oggi per me assolutamente sconosciuto (ma sono davvero una capra in fatto di musica, magari sono davvero bravi), gli Atomic Tom sono stati derubati di tutti i loro strumenti musicali.</p>
<p>Chiunque sarebbe andato alla polizia e avrebbe atteso il ritrovamento degli strumenti o ne avrebbe ricomprati di nuovi e invece&#8230;.. Hanno preso i loro iPhone (con le dovute app, acquistate dall&#8217;Apple App Store), sono saliti su un vagone della metro di New York city e hanno tenuto un mini concerto per i fortunati viaggiatori.</p>
<p>Vi lascio al video davvero divertente e singolare ;)</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/NAllFWSl998?fs=1&amp;hl=it_IT&amp;color1=0x3a3a3a&amp;color2=0x999999" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="640" height="385" src="http://www.youtube.com/v/NAllFWSl998?fs=1&amp;hl=it_IT&amp;color1=0x3a3a3a&amp;color2=0x999999" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2010/10/mai-perdersi-danimo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creare un web service con SOAP e PHP</title>
		<link>http://blog.davideferrero.com/2010/10/creare-un-web-service-con-soap-e-php/</link>
		<comments>http://blog.davideferrero.com/2010/10/creare-un-web-service-con-soap-e-php/#comments</comments>
		<pubDate>Fri, 15 Oct 2010 14:15:27 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Utility]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Client]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP6]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[Web services]]></category>
		<category><![CDATA[Wsdl]]></category>

		<guid isPermaLink="false">http://blog.davideferrero.com/?p=497</guid>
		<description><![CDATA[Ai tempi dell&#8217;università, nel corso di programmazione in rete tenuto dal Prof. Matteo Baldoni, avevamo realizzato un ottimo progetto in Java di agenti che interagivano tra di loro. Era anche questo una specie di servizio web anche se era realizzato con RMI ovvero Remote Method Invocation, ossia una funzione di java che consente di invocare [...]]]></description>
			<content:encoded><![CDATA[<p>Ai tempi dell&#8217;università, nel corso di programmazione in rete tenuto dal Prof. Matteo Baldoni, avevamo realizzato un ottimo progetto in Java di agenti che interagivano tra di loro.<br />
Era anche questo una specie di servizio web anche se era realizzato con <a title="Java RMI" href="http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136424.html" target="_blank">RMI</a> ovvero Remote Method Invocation, ossia una funzione di java che consente di invocare metodi di oggetti remoti da altre java virtual machine.</p>
<p>Oggi visto che sono ancora a casa per l&#8217;influenza, ho deciso di documentarmi sui web services in php, dato che probabilmente dovrò realizzare un progetto in cui potrebbero tornarmi utili.</p>
<p>Seguendo l&#8217;ottima guida <a title="PHP6" href="http://www.hoepli.it/libro/php6-guida-per-lo-sviluppatore/9788820343590.asp" target="_blank">&#8220;PHP 6, Guida per lo sviluppatore&#8221; di Lecky-Thompson, Novicki e Myer</a> (ve la consiglio vivamente se siete interessati all&#8217;argomento, è davvero ottima), ho deciso di riprodurre l&#8217;esempio di un client-server <a title="SOAP" href="http://it.wikipedia.org/wiki/SOAP" target="_blank">SOAP</a>(Simple Object Access Protocol). Innanzitutto SOAP è un protocollo per lo scambio di messaggi tra agenti software, ossia un client tramite soap può richiamare funzioni di un server inviando e ricevendo parametri. E fin qui nulla di strano mi direte voi&#8230; Infatti, la cosa interessante deve ancora arrivare! La peculiarità di scrivere software implementando SOAP è che client e server possono essere scritti in linguaggi diversi, essendo quest&#8217;ultimo appunto un protocollo e non una componente software. Tutti i linguaggi più comuni hanno delle classi che implementano SOAP, sia lato server sia lato client. Diventa così facile capire che una volta scritto un server SOAP che implementa alcune funzioni, possono esserci N client che sfruttano queste funzioni per leggere dati comuni o interagire con applicazioni sul web.</p>
<p>Ecco allora che ci spieghiamo come sia possibile che tutte le applicazioni web più famose, da quelle di <a title="Google" href="http://google.com" target="_blank">google</a>, a facebook fino a twitter, mettano a disposizione metodi per interagire dall&#8217;esterno con i loro servizi (le famose <a title="API" href="http://it.wikipedia.org/wiki/Application_programming_interface" target="_blank">API</a>, Application Programming Interface).</p>
<p>Come vi dicevo ho messo in pratica l&#8217;esempio che ho trovato sulla guida di PHP, potete raggiungerla a <a title="SOAP client" href="http://davideferrero.com/open-source/php/soap/client/" target="_blank">questo indirizzo</a>. L&#8217;esempio non fa altro che realizzare un server che ha un metodo che prende in input un nome e restituisce un saluto, comprensivo del nome inviato. Il client ovviamente preso in input il nome invia la richiesta al server e stampa il saluto ricevuto. Nulla di complicato, ma si riescono ad intuire le potenzialità di questo protocollo.</p>
<p>I due script in php come vedrete fra poco, sono molto semplici, e non richiedono più di una decina di righe di codice ciascuno, la parte fondamentale di questo esempio è però il file wsdl, ossia il file xml di dichiarazione dei metodi messi a disposizione dal server. Questo file non è indispensabile ma è utile a chi implementa i client per sfruttare tutte le funzioni messe a disposizione da SOAP.</p>
<p>Come vi dicevo dal lato server il codice php è semplice:</p>
<pre class="brush: php; title: ;">function sayHello($name){
    $salutation=&quot;Ciao &quot;.$name.&quot;, sarai lieto di sapere che sto funzionando!&quot;;
    return $salutation;
}
$server= new SoapServer(&quot;test.wsdl&quot;);
$server-&gt;addFunction(&quot;sayHello&quot;);
$server-&gt;handle();</pre>
<p>Il file xml per le dichiarazioni è invece un po&#8217; più complesso ma con un po&#8217; di attenzione non sarà difficile comprenderne il significato:</p>
<pre class="brush: xml; title: ;">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;
&lt;definitions name=&quot;test&quot;
targetNamespace=&quot;http://URL_CARTELLA_SERVER_SOAP&quot;
xmlns:tns=&quot;http://URL_CARTELLA_SERVER_SOAP&quot;
xmlns:soap=&quot;http://schemas.xmlsoap.org/wsdl/soap/&quot;
xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;
xmlns:soapenc=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;
xmlns:wsdl=&quot;http://schemas.xmlsoap.org/wsdl/&quot;
xmlns=&quot;http://schemas.xmlsoap.org/wsdl/&quot;&gt;

    &lt;message name=&quot;sayHelloRequest&quot;&gt;
        &lt;part name=&quot;name&quot; type=&quot;xsd:string&quot;/&gt;
    &lt;/message&gt;
    &lt;message name=&quot;sayHelloResponse&quot;&gt;
        &lt;part name=&quot;salutation&quot; type=&quot;xsd:string&quot;/&gt;
    &lt;/message&gt;

    &lt;portType name=&quot;sayHelloPortType&quot;&gt;
        &lt;operation name=&quot;sayHello&quot;&gt;
            &lt;input message=&quot;tns:sayHelloRequest&quot; /&gt;
            &lt;output message=&quot;tns:sayHelloResponse&quot; /&gt;
        &lt;/operation&gt;
    &lt;/portType&gt;

    &lt;binding name=&quot;sayHelloBinding&quot; type=&quot;tns:sayHelloPortType&quot;&gt;
        &lt;soap:binding style=&quot;rpc&quot; transport=&quot;http://schemas.xmlsoap.org/soap/http&quot; /&gt;
        &lt;operation name=&quot;sayHello&quot;&gt;
            &lt;soap:operation soapAction=&quot;&quot; /&gt;

            &lt;input&gt;
                &lt;soap:body use=&quot;encoded&quot; namespace=&quot;&quot; encodingStyle=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot; /&gt;
            &lt;/input&gt;
            &lt;output&gt;
                &lt;soap:body use=&quot;encoded&quot; namespace=&quot;&quot; encodingStyle=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot; /&gt;
            &lt;/output&gt;
        &lt;/operation&gt;
    &lt;/binding&gt;
    &lt;documentation&gt;UNA VOSTRA DESCRIZIONE DEL SERVIZIO&lt;/documentation&gt;
    &lt;service name=&quot;sayHelloService&quot;&gt;
        &lt;port name=&quot;sayHelloPort&quot; binding=&quot;sayHelloBinding&quot;&gt;
            &lt;soap:address location=&quot;http://URL_SCRIPT_PHP_SERVER_SOAP&quot; /&gt;
        &lt;/port&gt;
    &lt;/service&gt;
&lt;/definitions&gt;</pre>
<p>Fatto ciò, non ci resta che scrivere il codice per il client (tralascio il banale form html, ma metto a disposizione lo zip con tutto dentro):</p>
<pre class="brush: php; title: ;">$wsdl_url=&quot;http://URL_AL_DEL_FILE_WSDL&quot;;
if(isset($_POST['name'])){
    if($_POST['name']!=null){
        $client=new SoapClient($wsdl_url);
        print_r($client-&gt;sayHello(htmlentities($_POST['name'])));
    }
}</pre>
<p>La cosa fondamentale per poter utilizzare SOAP è che il vostro php abbia l&#8217;estensione php_soap abilitata, ma se ho capito bene, da php6 viene inclusa di default tra le funzioni del core di php. Tra l&#8217;altro essendo inclusa nelle funzioni default di php è scritta in C per cui molto più veloce rispetto a scrivere codice php, di conseguenza, in queste applicazioni l&#8217;unico collo di bottiglia potrebbe essere la lentezza della linea o i tempi di ping/risposta di client e/o server.</p>
<p>Se siete pigri e volete testare il codice senza dovervi sbattere, <a title="Soap project di Davide Ferrero" href="http://davideferrero.com/open-source/php/soap/soap.zip" target="_blank">eccolo qui</a>, pronto per voi già impacchettato ;-)</p>
<p>Prossimamente testerò anche <a title="Representational State Transfer" href="http://it.wikipedia.org/wiki/REST" target="_blank">REST</a> un altro metodo per realizzare web service con meno rogne, non serve infatti nessun file di dichiarazione, ma anche meno rigido e controllato.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2010/10/creare-un-web-service-con-soap-e-php/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>Inserire pulsanti &#8220;sociali&#8221; nel proprio sito</title>
		<link>http://blog.davideferrero.com/2010/10/social-gadget-facebook-like-mi-piace-e-google-buzz/</link>
		<comments>http://blog.davideferrero.com/2010/10/social-gadget-facebook-like-mi-piace-e-google-buzz/#comments</comments>
		<pubDate>Sun, 03 Oct 2010 15:09:56 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Facebook Like]]></category>
		<category><![CDATA[Google Buzz]]></category>
		<category><![CDATA[Social network]]></category>

		<guid isPermaLink="false">http://blog.davideferrero.com/?p=494</guid>
		<description><![CDATA[Per celebrare le (quasi) 1000 visite mensili del blog e ringraziarvi ho deciso di implementare una nuova funzionalità. Da oggi potete condividere gli articoli del blog che vi piacciono su facebook o buzz, cliccando sulle icone nel riquadro grigio al fondo dei post. Per quanto riguarda facebook, l&#8217;inserimento del plugin prevede l&#8217;utilizzo delle Facebook javascript [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="Facebook Like e Google Buzz" src="http://blog.davideferrero.com/image.php?i=41" title="Facebook Like e Google Buzz" class="aligncenter" width="530" height="354" /><br />
Per celebrare le (quasi) 1000 visite mensili del blog e ringraziarvi ho deciso di implementare una nuova funzionalità.</p>
<p>Da oggi potete condividere gli articoli del blog che vi piacciono su facebook o buzz, cliccando sulle icone nel riquadro grigio al fondo dei post.</p>
<p>Per quanto riguarda facebook, l&#8217;inserimento del plugin prevede l&#8217;utilizzo delle <a title="Facebook Javascript SDK" href="http://developers.facebook.com/docs/reference/javascript/" target="_blank">Facebook javascript SDK</a>. Per prima cosa si deve registrare il proprio sito come applicazione, in modo da ottenere un &#8220;application id&#8221;. Una volta fatto ciò potete aggiungere in fondo alla vostra pagina il codice javascript per caricare le sdk:</p>
<pre class="brush: jscript; title: ;">&lt;div id=&quot;fb-root&quot;&gt;&lt;/div&gt;
&lt;script&gt;
  window.fbAsyncInit = function() {
    FB.init({appId: 'your app id', status: true, cookie: true,
             xfbml: true});
  };
  (function() {
    var e = document.createElement('script'); e.async = true;
    e.src = document.location.protocol +
      '//connect.facebook.net/en_US/all.js';
    document.getElementById('fb-root').appendChild(e);
  }());
&lt;/script&gt;</pre>
<p>Ora potete aggiungere il tag FBML che caricherà il pulsante &#8220;mi piace&#8221;:</p>
<pre class="brush: xml; title: ;">&lt;fb:like href=&quot;URL da segnalare&quot; layout=&quot;button_count&quot;&gt;&lt;/fb:like&gt;</pre>
<p>Potete personalizzare il tipo di pulsante tramite il tag &#8220;layout&#8221;:</p>
<ul>
<li>&#8220;standard&#8221; per avere il pulsante con la frase a fianco</li>
<li>&#8220;button_count&#8221; per avere il pulsante con il contatore dei &#8220;like&#8221;</li>
<li>&#8220;box_count&#8221; per avere il pulsante e il contatore su due righe diverse</li>
</ul>
<p>e tramite il tag &#8220;colorscheme&#8221;:</p>
<ul>
<li>&#8220;light&#8221; per lo schema di colori default</li>
<li>&#8220;dark&#8221; per lo schema di colori grigio scuro</li>
</ul>
<p>Nel tag href dovete inserire l&#8217;url che volete sia segnalata quando qualcuno clicca sul pulsante.</p>
<p>Per quanto riguarda Google buzz invece, non è necessario registrare nessuna applicazione, si dovrà solamente includere il codice javascript per le Google Buzz SDK in fondo alla pagina:</p>
<pre class="brush: xml; title: ;">&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.com/buzz/api/button.js&quot;&gt;&lt;/script&gt;</pre>
<p>e il codice del pulsante per condividere il link</p>
<pre class="brush: xml; title: ;">&lt;a href=&quot;http://www.google.com/buzz/post&quot;
  class=&quot;google-buzz-button&quot; title=&quot;Google Buzz&quot;
  data-message=&quot;Here’s Buzz!&quot;
  data-url=&quot;http://www.google.com/buzz&quot;
  data-locale=&quot;it&quot;
  data-button-style=&quot;normal-count&quot;&gt;&lt;/a&gt;</pre>
<p>È anche possibile personalizzare il pulsante modificando il tag &#8220;data-url&#8221; inserendo l&#8217;url alla pagina che si vuole segnalare, e il tag &#8220;data-button-style&#8221; con le seguenti voci:</p>
<ul>
<li><code>normal-count<br />
</code></li>
<li><code>small-count</code></li>
<li><code>normal-button</code></li>
<li><code>small-button</code></li>
<li><code>link</code></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2010/10/social-gadget-facebook-like-mi-piace-e-google-buzz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apertura Apple Store Le Gru, Torino &#8211; Foto e Video</title>
		<link>http://blog.davideferrero.com/2010/09/apertura-apple-store-le-gru-torino-foto-e-video-evento/</link>
		<comments>http://blog.davideferrero.com/2010/09/apertura-apple-store-le-gru-torino-foto-e-video-evento/#comments</comments>
		<pubDate>Sat, 18 Sep 2010 16:23:00 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Divertimento]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Apple Store]]></category>
		<category><![CDATA[Le Gru]]></category>

		<guid isPermaLink="false">http://blog.davideferrero.com/?p=481</guid>
		<description><![CDATA[Come detto ieri, questa mattina Bove ed io ci siamo alzati all&#8217;alba e ci siamo recati al centro commerciale Le Gru di Grugliasco, a pochi km dal centro di Torino per l&#8217;apertura del terzo Apple Store italiano. Eccovi il video della giornata(disponibile anche in HD ;-) ) e le foto (per le quali ringrazio l&#8217;iFotografo [...]]]></description>
			<content:encoded><![CDATA[<p>Come detto ieri, questa mattina <a title="Matteo Bovetti website" href="http://www.matteobovetti.com" target="_blank">Bove</a> ed io ci siamo alzati all&#8217;alba e ci siamo recati al centro commerciale <a title="Shopville Le Gru" href="http://www.legru.it/" target="_blank">Le Gru</a> di Grugliasco, a pochi km dal centro di Torino per l&#8217;apertura del terzo Apple Store italiano. Eccovi il video della giornata(disponibile anche in HD ;-) ) e le foto (per le quali ringrazio l&#8217;iFotografo nonchè mio compagno di avventura iBove <a title="Matteo Bovetti website" href="http://www.matteobovetti.com" target="_blank">http://www.matteobovetti.com</a>).</p>
<p align="center"><iframe class="youtube-player" type="text/html" width="480" height="385" src="http://www.youtube.com/embed/nCpcXdTWlKk" frameborder="0"></iframe></p>
<p>Come potete notare al nostro arrivo, c&#8217;erano già i mac genius che distribuivano caffè e brioches per tutte le persone in coda.</p>
<p style="text-align: center;"><a href="http://blog.davideferrero.com/image.php?i=32"><img class="aligncenter" title="iBrioches e iCoffee" src="http://blog.davideferrero.com/image.php?i=32" alt="" width="400" height="268" /></a></p>
<p style="text-align: center;"><a href="http://blog.davideferrero.com/image.php?i=33"><img class="aligncenter" title="iBrioche" src="http://blog.davideferrero.com/image.php?i=33" alt="" width="400" height="268" /></a></p>
<p style="text-align: left;">Alle 7,45 avevamo già una cinquantina di persone davanti a noi&#8230;</p>
<p style="text-align: center;"><a href="http://blog.davideferrero.com/image.php?i=34"><img class="aligncenter" title="iCoda" src="http://blog.davideferrero.com/image.php?i=34" alt="" width="400" height="268" /></a></p>
<p style="text-align: center;"><a href="http://blog.davideferrero.com/image.php?i=35"><img class="aligncenter" title="iCoda 2" src="http://blog.davideferrero.com/image.php?i=35" alt="" width="400" height="268" /></a></p>
<p style="text-align: left;">Qualche minuto prima dell&#8217;apertura i dipendenti del negozio, sono usciti per fare il &#8220;giro d&#8217;onore&#8221; lungo la coda. Cantando cori da stadio e urlando schiacciavano &#8220;un cinque&#8221; alle persone in fila&#8230;</p>
<p style="text-align: center;"><a href="http://blog.davideferrero.com/image.php?i=36"><img class="aligncenter" title="giro d'onore dei Mac Genius" src="http://blog.davideferrero.com/image.php?i=36" alt="" width="400" height="268" /></a></p>
<p style="text-align: left;">Alle 10,00 in punto, le porte si sono aperte e i genius hanno accolto i primi della fila facendo la ola e distribuendo ad ognuno la maglietta celebrativa dell&#8217;evento (nera con la mela bianca e &#8220;Le Gru&#8221; scritto a fianco)</p>
<p style="text-align: center;"><a href="http://blog.davideferrero.com/image.php?i=37"><img class="aligncenter" title="Ingresso nell'apple store" src="http://blog.davideferrero.com/image.php?i=37" alt="" width="400" height="268" /></a></p>
<p style="text-align: center;"><a href="http://blog.davideferrero.com/image.php?i=38"><img class="aligncenter" title="Mac Genius accolgono i visitatori" src="http://blog.davideferrero.com/image.php?i=38" alt="" width="400" height="268" /></a></p>
<p style="text-align: center;"><a href="http://blog.davideferrero.com/image.php?i=39"><img class="aligncenter" title="Maglietta apple" src="http://blog.davideferrero.com/image.php?i=39" alt="" width="400" height="268" /></a></p>
<p style="text-align: center;"><a href="http://blog.davideferrero.com/image.php?i=40"><img class="aligncenter" title="Ingresso visitatori" src="http://blog.davideferrero.com/image.php?i=40" alt="" width="400" height="268" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2010/09/apertura-apple-store-le-gru-torino-foto-e-video-evento/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Apple Store Le Gru &#8211; prime immagini</title>
		<link>http://blog.davideferrero.com/2010/09/apple-store-le-gru-torino-prime-immagini/</link>
		<comments>http://blog.davideferrero.com/2010/09/apple-store-le-gru-torino-prime-immagini/#comments</comments>
		<pubDate>Fri, 17 Sep 2010 19:57:06 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Apple Store]]></category>
		<category><![CDATA[Le Gru]]></category>

		<guid isPermaLink="false">http://blog.davideferrero.com/?p=479</guid>
		<description><![CDATA[Oggi, uscito dall&#8217;ufficio di Beinasco dove ero a lavorare, mi son detto:&#8221;Sono a 3km da Le Gru perchè non fare un salto a vedere com&#8217;è l&#8217;Apple Store Le Gru in anteprima?&#8221;. E così che in meno di 10 minuti mi son ritrovato nel parcheggio del centro commerciale. Dopo un attimo di &#8220;smarrimento&#8221; ho trovato la [...]]]></description>
			<content:encoded><![CDATA[<p>Oggi, uscito dall&#8217;ufficio di Beinasco dove ero a lavorare, mi son detto:&#8221;Sono a 3km da Le Gru perchè non fare un salto a vedere com&#8217;è l&#8217;Apple Store Le Gru in anteprima?&#8221;.</p>
<p>E così che in meno di 10 minuti mi son ritrovato nel parcheggio del centro commerciale. Dopo un attimo di &#8220;smarrimento&#8221; ho trovato la retta via e ho notato un gruppetto di persone che scattavano foto in lontananza&#8230; Camminando in quella direzione mi son trovato di fronte a ciò che cercavo.</p>
<p>Come tutti gli Apple Store visti in foto, anche quello torinese è identico agli altri. Ampie vetrate con la mela bianca e luminosa piazzata in alto sulla vetrata centrale. Sulla destra due iPhone 4 giganti con al posto dello schermo due monitor che proiettano delle demo di iOs 4. Lo store è davvero molto grande (me lo aspettavo più piccolo e non ho visto gli altri dal vivo), ci sono diverse file degli ormai noti banconi in legno chiaro, con sopra tutti i vari dispositivi made in Cupertino.</p>
<p>Sono arrivato lì intorno alle 18,00 e il negozio era davvero molto affollato al suo interno nonostante l&#8217;apertura sia domani. Se gli occhi non mi hanno ingannato ho contato almeno una trentina di dipendenti (in rigorosa t-shirt blu) e credo che tutti i visitatori fossero addetti della carta stampata e da quanto ho visto venivano fatti entrare da un&#8217;entrata posteriore.</p>
<p>Per ora vi lascio alle prime immagini che ho scattato davanti allo store, per tutto il resto dovrete attendere domani, quando sarò di ritorno dalla gita torinese insieme al mio iSocio <a title="Matteo Bovetti website" href="http://www.matteobovetti.com" target="_blank">Bove</a> sperando di essere riusciti ad accaparrarci la tanto agognata maglietta! :)</p>
<p style="text-align: center;"><img class="aligncenter" title="Apple Store Le Gru 1" src="http://blog.davideferrero.com/image.php?i=28" alt="" width="400" height="300" /></p>
<p style="text-align: center;"><img class="aligncenter" title="Apple Store Le Gru 2" src="http://blog.davideferrero.com/image.php?i=29" alt="" width="400" height="300" /></p>
<p style="text-align: center;">
<p style="text-align: center;"><img class="aligncenter" title="Apple Store Le Gru 3" src="http://blog.davideferrero.com/image.php?i=30" alt="" width="400" height="300" /></p>
<p style="text-align: center;"><img class="aligncenter" title="Apple Store Le Gru 4" src="http://blog.davideferrero.com/image.php?i=31" alt="" width="400" height="300" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2010/09/apple-store-le-gru-torino-prime-immagini/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ci siamo! Apple Store a Torino!!</title>
		<link>http://blog.davideferrero.com/2010/09/apertura-nuovo-apple-store-a-torino-le-gru/</link>
		<comments>http://blog.davideferrero.com/2010/09/apertura-nuovo-apple-store-a-torino-le-gru/#comments</comments>
		<pubDate>Tue, 14 Sep 2010 08:46:31 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Divertimento]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Apple Store]]></category>
		<category><![CDATA[Gite]]></category>
		<category><![CDATA[Le Gru]]></category>
		<category><![CDATA[Torino]]></category>

		<guid isPermaLink="false">http://blog.davideferrero.com/?p=476</guid>
		<description><![CDATA[Ragazzi ci siamo, sabato prossimo (18 settembre 2010) aprirà il terzo Apple Store italiano presso il centro commerciale Le Gru a Torino. Io sto facendo un pensierino di una gita, chi si aggrega? Ci andrei più che altro per avere la maglietta dell&#8217;evento e partecipare alla iFesta ;-). Chi si vuole aggregare commenti il post, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.apple.com/it/retail/legru/"><img class="aligncenter" title="Apple Store Torino Le Gru" src="http://blog.davideferrero.com/image.php?i=27" alt="Apple Store Torino Le Gru" width="600" height="365" /></a>Ragazzi ci siamo, sabato prossimo (18 settembre 2010) aprirà il terzo Apple Store italiano presso il centro commerciale Le Gru a Torino. Io sto facendo un pensierino di una gita, chi si aggrega? Ci andrei più che altro per avere la maglietta dell&#8217;evento e partecipare alla iFesta ;-). Chi si vuole aggregare commenti il post, dicendomi quanti siete e da dove partite, così cerchiamo di organizzare le macchine. Fatemi sapere.</p>
<p>Ps: Se non ci credete, credeteci seguendo il link <a title="Apple Store a Torino presso Le Gru" href="http://www.apple.com/it/retail/legru/" target="_blank">http://www.apple.com/it/retail/legru/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2010/09/apertura-nuovo-apple-store-a-torino-le-gru/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sincronizzare Google Calendar con iCal su Mac e iPhone</title>
		<link>http://blog.davideferrero.com/2010/08/sincronizzare-google-calendar-con-ical-su-mac-e-iphone/</link>
		<comments>http://blog.davideferrero.com/2010/08/sincronizzare-google-calendar-con-ical-su-mac-e-iphone/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 11:35:27 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Utility]]></category>
		<category><![CDATA[Google Calendar]]></category>
		<category><![CDATA[iCal]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://blog.davideferrero.com/?p=473</guid>
		<description><![CDATA[Bentornati a tutti dalle vacanze, oggi ritorno con un articolo dedicato ai macachi come me. Avete bisogno di tener traccia dei vostri appuntamenti, eventi, ricorrenze? Be&#8217; esistono i calendari elettronici, oppure le agendine elettroniche, oppure le agende cartacee&#8230;. oppure Google Calendar Ieri sera, parlavo con Denny (che devo ringraziare per l&#8217;input di questa mattina, SENZA [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter" title="iCal e Google Calendar" src="http://blog.davideferrero.com/image.php?i=26" alt="iCal e Google Calendar" width="395" height="228" /></p>
<p>Bentornati a tutti dalle vacanze, oggi ritorno con un articolo dedicato ai <a title="Apple Mac" href="http://www.apple.com/mac/" target="_blank">macachi</a> come me.</p>
<p>Avete bisogno di tener traccia dei vostri appuntamenti, eventi, ricorrenze? Be&#8217; esistono i calendari elettronici, oppure le agendine elettroniche, oppure le agende cartacee&#8230;. oppure <a title="Google Calendar" href="http://www.google.com/intl/it/googlecalendar/about.html" target="_blank">Google Calendar</a></p>
<p>Ieri sera, parlavo con <a title="Denny Biasiolli" href="http://www.dennybiasiolli.com" target="_blank">Denny</a> (che devo ringraziare per l&#8217;input di questa mattina, SENZA di lui non sarei riuscito a scoprire questa sciccheria&#8230; :-P ) e mi ha detto che usava un&#8217;estensione di thunderbird per tenere traccia di tutti gli appuntamenti, eventi ecc&#8230; Siccome anche io, a lavoro, uso la stessa estensione per thunderbird, gli ho spiegato secondo me cosa non funzionava di quel sistema e cioè che gli eventi creati rimanevano sul pc e non c&#8217;era nessun metodo per ricevere avvisi via mail o meglio ancora sms. Avevo infatti provato <a title="Google Calendar login" href="http://calendar.google.com" target="_blank">Google Calendar</a> e notato che aveva la splendida funzionalità di impostare gli avvisi via sms.</p>
<p>Stamattina perciò dopo esserci ritrovati su <a title="Google Talk" href="http://www.google.com/talk/" target="_blank">gtalk</a> abbiamo cercato qualche sistema per sincronizzare i calendari software con il servizio di google, scoprendo che quasi tutti i calendari supportando lo standard <a title="CalDav" href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">calDav</a>.</p>
<p>Vi spiego ora come sincronizzare iCal, il software per il calendario su mac, con Google Calendar:</p>
<ul>
<li>nella barra dei menu, selezionare iCal-&gt;Preferenze</li>
<li>selezionare il tab &#8220;Account&#8221; e poi premere &#8220;+&#8221; per aggiungere un nuovo account.</li>
<li>come &#8220;Tipo account&#8221; dovreste già avere &#8220;Google&#8221;, se non ci fosse selezionate la voce &#8220;calDav&#8221;</li>
<li>a questo punto vi basterà inserire l&#8217;indirizzo del server google (google.com), la vostra mail completa che usate per accedere ai servizi di google e la relativa password</li>
</ul>
<p>Ora quando creerete un nuovo evento su iCal, questo verrà automaticamente sincronizzato on-line.</p>
<p>La stessa cosa può essere fatta su iPhone:</p>
<ul>
<li> per prima cosa collegatevi all&#8217;indirizzo <a title="Google Calendar iPhone select" href="https://www.google.com/calendar/iphoneselect " target="_blank">https://www.google.com/calendar/iphoneselect</a> e confermate di voler usare il calendario di google dal vostro iPhone.</li>
<li>ora andate nelle impostazioni e selezionate la voce &#8220;Mail, contatti, calendari&#8221;</li>
<li>selezionate la voce &#8220;aggiungi account&#8221; e scegliete &#8220;altro&#8221;</li>
<li>qui troverete la voce &#8220;aggiungi account calDav&#8221;</li>
<li>inserite di nuovo le informazioni relative al vostro login e al server google (google.com)</li>
</ul>
<p>Ora avrete iCal sul vostro mac e sul vostro iPhone che salverà le informazioni su google Calendar e in qualsiasi momento potrete accedere ai vostri appuntamenti, eventi e ricorrenze</p>
<p>Ancora grazie a <a title="Denny Biasiolli" href="http://www.dennybiasiolli.com" target="_blank">Denny</a> per il supporto, nonostante sia dichiaratamente anti-apple :-P</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2010/08/sincronizzare-google-calendar-con-ical-su-mac-e-iphone/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Installare un server VPN con OpenVPN su Ubuntu Server</title>
		<link>http://blog.davideferrero.com/2010/08/installare-un-server-vpn-con-openvpn-su-ubuntu-server/</link>
		<comments>http://blog.davideferrero.com/2010/08/installare-un-server-vpn-con-openvpn-su-ubuntu-server/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 21:46:37 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Utility]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Bridge]]></category>
		<category><![CDATA[OpenVPN]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Ubuntu 10.04]]></category>
		<category><![CDATA[VPN]]></category>

		<guid isPermaLink="false">http://blog.davideferrero.com/?p=469</guid>
		<description><![CDATA[Qualche giorno fa, a lavoro ho configurato il mio primo server vpn. Avevamo la necessità di accedere alla rete dell&#8217;ufficio anche dall&#8217;esterno. Insomma ci avrebbe fatto comodo essere &#8220;virtualmente&#8221; in ufficio quando fisicamente non è possibile. Avevo ricevuto consigli in merito a queste necessità, e mi era stato detto che come OpenVPN non ce n&#8217;erano [...]]]></description>
			<content:encoded><![CDATA[<p>Qualche giorno fa, a lavoro ho configurato il mio primo server vpn. Avevamo la necessità di accedere alla rete dell&#8217;ufficio anche dall&#8217;esterno. Insomma ci avrebbe fatto comodo essere &#8220;virtualmente&#8221; in ufficio quando fisicamente non è possibile. Avevo ricevuto consigli in merito a queste necessità, e mi era stato detto che come <a title="OpenVPN" href="http://openvpn.net/" target="_blank">OpenVPN</a> non ce n&#8217;erano molti. Ovviamente Open VPN è un software gratuito e multipiattaforma, aveva quindi tutti i prerequisiti necessari per piacermi.</p>
<p>Diciamo che prima di intraprendere il lavoro ho perso qualche minuto a cercare la documentazione necessaria, che mi avrebbe accompagnato durante il cammino.</p>
<p>Inizialmente avevo preso un pc davvero modesto (con processore AMD Duron, qualcosa di simile al Sempron ma un po&#8217; più vecchio ;-) ) con 40 <em>ghiga</em> di disco e 512 Mb di ram SO DIMM, credendo di usarlo come test per la macchina <em>vera</em>. Ovviamente ho installato <a title="Ubuntu" href="http://www.ubuntu.com/" target="_blank">Ubuntu</a> server come sistema operativo, scaricando l&#8217;ultima versione (10.04) siccome è un <a title="Ubuntu server 10.04 LTS" href="https://help.ubuntu.com/community/Server/TechSpecs/1004LTS" target="_blank">LTS</a>. Nell&#8217;installazione del S.O. non c&#8217;è stato alcun inghippo, oramai queste ultime versioni sono una pacchia, filano dritte dritte in pochi minuti verso il traguardo ;-).</p>
<p>Una volta installato Ubuntu ho seguito il wiki in inglese per la corretta installazione di open vpn. Come prima passo, la guida consiglia di configurare un bridge sulla scheda ethernet per consentire al segmento LAN di essere connesso al segmento WAN, consentendo (se si vuole) di filtrare i pacchetti che li attraversano con un firewall. Per fare ciò basta installare un pacchetto chiamato <em>bridge-utils</em> con il comando:</p>
<pre class="brush: bash; title: ;">sudo apt-get install bridge-utils</pre>
<p>Fatto ciò si deve editare il file di configurazione della rete con il comando:</p>
<pre class="brush: bash; title: ;">sudo vim /etc/network/interfaces</pre>
<p>modificarlo come segue:</p>
<pre class="brush: bash; title: ;">auto lo
iface lo inet loopback

auto br0
iface br0 inet static
        address 192.168.0.10
        network 192.168.0.0
        netmask 255.255.255.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
        bridge_ports eth0
        bridge_fd 9
        bridge_hello 2
        bridge_maxage 12
        bridge_stp off</pre>
<p>Così facendo si assegna il bridge all&#8217;interfaccia <em>eth0</em> con l&#8217;ip 192.168.0.10.</p>
<p>Adesso potete riavviare il servizio <em>networking</em>:</p>
<pre class="brush: bash; title: ;">sudo /etc/init.d/networking restart</pre>
<p>(per evitare di dover digitare sempre il comando sudo davanti ad ogni comando vi consiglio di digitare <em>sudo su</em> una volta per tutte)</p>
<p>Ora possiamo passare all&#8217;installazione vera e propria di OpenVPN:</p>
<pre class="brush: bash; title: ;">apt-get install openvpn</pre>
<p>Finita l&#8217;installazione del pacchetto creiamo una cartella che conterrà i programmi per generare le chiavi e le chiavi stesse:</p>
<pre class="brush: bash; title: ;">
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/
mv /etc/openvpn/2.0 /etc/openvpn/easy-rsa
</pre>
<p>Dopodichè editiamo il file vars in modo da modificare le seguenti linee con le informazioni che ci riguardano:</p>
<pre class="brush: bash; title: ;">export KEY_COUNTRY=&quot;US&quot;
export KEY_PROVINCE=&quot;NC&quot;
export KEY_CITY=&quot;Winston-Salem&quot;
export KEY_ORG=&quot;Example Company&quot;
export KEY_EMAIL=&quot;steve@example.com&quot;</pre>
<p>Salvate il file e chiudetelo. Accertandovi di essere loggati come utente di root, iniziate la procedura di generazione delle chiavi:</p>
<pre class="brush: bash; title: ;">cd /etc/openvpn/easy-rsa/
source ./vars
./clean-all
./build-dh
./pkitool --initca
./pkitool --server server
cd keys
openvpn --genkey --secret ta.key
cp server.crt server.key ca.crt dh1024.pem ta.key /etc/openvpn/</pre>
<p>Ora che abbiamo generato le chiavi e i certificati per il server procediamo a generare quelli per il client (basterà ripetere la prossima procedura modificando l&#8217;identificativo del client per generare altre chiavi/certificati):</p>
<pre class="brush: bash; title: ;">cd /etc/openvpn/easy-rsa/
source vars
./pkitool client1</pre>
<p>Copiate ora sul client i file:</p>
<ul>
<li> /etc/openvpn/ca.crt</li>
<li> /etc/openvpn/easy-rsa/keys/client1.crt</li>
<li> /etc/openvpn/easy-rsa/keys/client1.key</li>
<li> /etc/openvpn/ta.key</li>
</ul>
<p>Ora  non ci resta che editare i file di configurazione per server e client (partiamo da una configurazione di esempio):</p>
<pre class="brush: bash; title: ;">cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
gzip -d /etc/openvpn/server.conf.gz
vim /etc/openvpn/server.conf</pre>
<p>Accertatevi di correggere le seguenti linee con i vostri dati:</p>
<pre class="brush: bash; title: ;">local 192.168.0.10
dev tap0
script-security 3
up &quot;/etc/openvpn/up.sh br0&quot;
down &quot;/etc/openvpn/down.sh br0&quot;
proto tcp
;server 10.8.0.0 255.255.255.0
server-bridge 192.168.0.10 255.255.255.0 192.168.0.100 192.168.0.110
push &quot;route 192.168.0.1 255.255.255.0&quot;
tls-auth ta.key 0 # This file is secret
user nobody
group nogroup
cipher AES-256-CBC</pre>
<p>La voce <em>local</em> sarà quella corrispondente all&#8217;indirizzo del vostro bridge, come la prima voce accanto a <em>server-bridge</em>. La seconda voce di <em>server-bridge</em> sarà la subnet mask mentre la terza e la quarta sarà il range di ip che openvpn assegnerà ai client che si connetteranno alla rete.<br />
Il comando <em> push &#8220;route&#8230;</em> servirà per creare una rotta sugli indirizzi della LAN.<br />
Fatto ciò,  creiamo i due script per l&#8217;avvio e la chiusura dell&#8217;interfaccia virtuale (la tap0 che vedete nel file di configurazione). Creiamo il file up.sh come segue:</p>
<pre class="brush: bash; title: ;">vim /etc/openvpn/up.sh</pre>
<pre class="brush: bash; title: ;">
#!/bin/sh
BR=$1
DEV=$2
MTU=$3
/sbin/ifconfig $DEV mtu $MTU promisc up
/usr/sbin/brctl addif $BR $DEV</pre>
<p>e il file down.sh così:</p>
<pre class="brush: bash; title: ;">vim /etc/openvpn/down.sh</pre>
<pre class="brush: bash; title: ;">#!/bin/sh
BR=$1
DEV=$2
/usr/sbin/brctl delif $BR $DEV
/sbin/ifconfig $DEV down</pre>
<p>Rendiamoli eseguibili:</p>
<pre class="brush: bash; title: ;">chmod 755 /etc/openvpn/down.sh
chmod 755 /etc/openvpn/up.sh</pre>
<p>Ora che il server è correttamente configurato, possiamo dare una riavviata al servizion openvpn:</p>
<pre class="brush: bash; title: ;">/etc/init.d/openvpn/restart</pre>
<p>Adesso passiamo al file di configurazione del client:</p>
<pre class="brush: bash; title: ;">sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn</pre>
<p>Il quale dovrà contenere:</p>
<pre class="brush: bash; title: ;">dev tap
proto tcp
remote 192.168.0.10 1194
cert client1.crt
key client1.key
tls-auth ta.key 1
cipher AES-256-CBC</pre>
<p>Ora copiate nella cartella di configurazione del client il file appena editato (chiamatelo client1.conf o client1.ovpn). Ovviamente si presuppone che i file delle chiavi e dei certificati siano nella stessa cartella di quest&#8217;ultimo file (sul client). Riavviate anche qui openvpn e il gioco è quasi fatto. Dico quasi perchè per potervi connettere al server dall&#8217;esterno dovrete dire al vostro router di aprirvi la porta 1194 e reindirizzare il traffico proveniente dall&#8217;esterno verso l&#8217;ip 192.168.0.10 (quello del bridge).</p>
<p>Ora siete davvero pronti per collegarvi dall&#8217;esterno alla vostra LAN (così com&#8217;è stato configurato openvpn non è possibile accedere da dentro la LAN alla vpn appena creata).</p>
<p>Spero di non aver dimenticato niente! ;-)</p>
<p>Che ve ne pare?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2010/08/installare-un-server-vpn-con-openvpn-su-ubuntu-server/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Riempire dinamicamente una jTable in Java</title>
		<link>http://blog.davideferrero.com/2010/07/usare-jtable-in-java-esempi/</link>
		<comments>http://blog.davideferrero.com/2010/07/usare-jtable-in-java-esempi/#comments</comments>
		<pubDate>Sat, 10 Jul 2010 17:27:16 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Utility]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[jTable]]></category>
		<category><![CDATA[Programmazione]]></category>

		<guid isPermaLink="false">http://blog.davideferrero.com/?p=465</guid>
		<description><![CDATA[Ultimamente sto utilizzando intensamente Java per lavoro. Sto realizzando un gestionale abbastanza corposo, dove ho potuto sperimentare diverse cose interessanti. Nel disegnare le interfacce, uno degli oggetti che sto trovando sempre più utile, è la jTable, nient&#8217;altro che una semplice tabella (la vecchia DataGrid di visual basic). Inizialmente avevo trovato un po&#8217; ostico capire come [...]]]></description>
			<content:encoded><![CDATA[<p>Ultimamente sto utilizzando intensamente Java per lavoro. Sto realizzando un gestionale abbastanza corposo, dove ho potuto sperimentare diverse cose interessanti.</p>
<p>Nel disegnare le interfacce, uno degli oggetti che sto trovando sempre più utile, è la jTable, nient&#8217;altro che una semplice tabella (la vecchia DataGrid di visual basic). Inizialmente avevo trovato un po&#8217; ostico capire come funzionasse, nonostante ci fossero parecchi esempi che danno molti consigli su come usarle. Una delle pagine di esempi più complete è questa <a title="Esempi di utilizzo di una jTable" href="http://download.oracle.com/docs/cd/E17409_01/javase/tutorial/uiswing/components/table.html" target="_blank">sul sito oracle</a>.</p>
<p>Voglio però spendere qualche riga per spiegare come poter facilmente caricare una jTable leggendo i dati da un resultset o da un elenco qualsiasi.</p>
<p>Penso che il concetto più semplice per utilizzare al meglio le jTable sia implementare una List&lt;T&gt; (dove T può essere un array di Object o di String o una vostra classe personale, fate voi) con una ArrayList o una LinkedList. Questa lista terrà aggiornata la jTable.</p>
<p>Personalmente creo sempre un metodo che chiamo &#8220;refreshTable&#8221; che legge i dati dalla lista e li inserisce nella tabella. Il metodo non farà altro che usare un iteratore per scorrere la lista e creare una matrice di Object da passare alla nostra jTable per riempirla.</p>
<pre class="brush: java; title: ;">
        //Creo array di intestazioni
        String [] headers=this.getTableHeaders();
        //Creo matrice di dati
        Object[][] data=new Object[this.lista.size()][headers.length];
        int i=0;
        for(Iterator&lt;String[]&gt; it=lista.iterator();it.hasNext();){
            String[] tmp=it.next();
            for(int j=0;j&lt;tmp.length;j++){
                data[i][j]=tmp[j];
            }
            i++;
        }
        //Setto dati e intestazioni della tabella
        this.myJTable.setModel(new javax.swing.table.DefaultTableModel(data, headers){@Override public boolean isCellEditable(int rowIndex, int mColIndex) { return false; }});
        //Setto larghezza colonne
        this.setTableCellsSize(this.myJTable);
        //Imposto allinamento delle celle al centro
        DefaultTableCellRenderer renderer=new DefaultTableCellRenderer();
        renderer.setHorizontalAlignment(DefaultTableCellRenderer.CENTER);
        this.myJTable.setDefaultRenderer(this.myJTable.getColumnClass(0), renderer);
        this.myJTable.updateUI();
</pre>
<p>Così facendo abbia riempito la nostra jTable. Il metodo che fa ciò è il setModel(), al quale io passo sempre una matrice di Object che contiene i dati veri e propri e un array di String che contiene le intestazioni della tabella (che leggo dal mio metodo this.getTableHeaders() ). Oltre a questo ho creato un metodo (this.setTableCellsSize() ) che imposta la larghezza delle varie colonne della tabella:</p>
<pre class="brush: java; title: ;">
        int prefWidth=(this.getWidth()/2)/(this.getHeadersTable()).length;
        tbl.setAutoResizeMode(jTable.AUTO_RESIZE_OFF);

        tbl.getColumnModel().getColumn(0).setPreferredWidth(prefWidth+20);
        tbl.getColumnModel().getColumn(1).setPreferredWidth(prefWidth+100);
        tbl.getColumnModel().getColumn(2).setPreferredWidth(prefWidth+20);
        tbl.getColumnModel().getColumn(3).setPreferredWidth(prefWidth-30);
        tbl.getColumnModel().getColumn(4).setPreferredWidth(prefWidth+20);
        tbl.getColumnModel().getColumn(5).setPreferredWidth(prefWidth+20);
        tbl.getColumnModel().getColumn(6).setPreferredWidth(prefWidth-20);
        tbl.getColumnModel().getColumn(7).setPreferredWidth(prefWidth+20);
</pre>
<p>Nelle ultime righe ho invece dichiarato un Renderer per settare l&#8217;allineamento al centro delle celle della jTable.</p>
<p>Prestate attenzione alla linea dove viene eseguita la setModel(): qui ho riscritto il metodo isCellEditable, in modo che restituisca sempre false. Così facendo qualsiasi cella della nostra jTable non potrà essere editata.</p>
<p>Se vi servissero esempi più dettagliati (ad esempio per inserire delle checkbox in una delle colonne o per aprire menu al pressione del tasto destro del mouse sulla tabella) fate un fischio! ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2010/07/usare-jtable-in-java-esempi/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Nuovo tema per il blog!</title>
		<link>http://blog.davideferrero.com/2010/07/nuovo-tema-wordpress-per-il-blog/</link>
		<comments>http://blog.davideferrero.com/2010/07/nuovo-tema-wordpress-per-il-blog/#comments</comments>
		<pubDate>Sun, 04 Jul 2010 16:53:02 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HCI]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://blog.davideferrero.com/?p=459</guid>
		<description><![CDATA[Come (spero) vi siate accorti, sono riuscito finalmente ad ultimare il nuovo tema per il mio blog. Mi sono sempre promesso che prima o dopo avrei lavorato alla realizzazione di un mio tema, visto che fino ad oggi avevo sempre utilizzato temi scaricati dalla sezione apposita di wordpress e oggi ho finalmente un tema tutto [...]]]></description>
			<content:encoded><![CDATA[<p>Come (spero) vi siate accorti, sono riuscito finalmente ad ultimare il nuovo tema per il mio blog.</p>
<p>Mi sono sempre promesso che prima o dopo avrei lavorato alla realizzazione di un mio tema, visto che fino ad oggi avevo sempre utilizzato temi scaricati dalla sezione apposita di wordpress e oggi ho finalmente un tema tutto mio.</p>
<p>Ho cercato di renderlo più leggero del precedente, riducendo al minimo il codice javascript, alleggerendo il css ed ispirandomi a design minimalisti, senza troppi fronzoli per rendere il tema intuitivo e cercando di ricordare qualche regola di <a title="Human Computer Interaction" href="http://it.wikipedia.org/wiki/Interazione_uomo-computer" target="_blank">HCI</a>.</p>
<p>Spero vi piaccia, ma aspetto critiche e suggerimenti e ovviamente se trovate dei bugs, segnalatemeli, thanks!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2010/07/nuovo-tema-wordpress-per-il-blog/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>iOs 4 e iPhone 3G: prime impressioni e commenti (meditati)</title>
		<link>http://blog.davideferrero.com/2010/07/apple-ios-4-iphone-3g-prime-impressioni/</link>
		<comments>http://blog.davideferrero.com/2010/07/apple-ios-4-iphone-3g-prime-impressioni/#comments</comments>
		<pubDate>Sat, 03 Jul 2010 11:37:16 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[iOs]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://blog.davideferrero.com/?p=456</guid>
		<description><![CDATA[Come (quasi) tutti voi bene sapete, sono un felice possessore di iPhone 3G da ormai più di 1 anno e mezzo. Durante i primi 6 mesi di utilizzo (pre iOs 3) mancavano ancora diverse funzionalità che potevano rendere iPhone un telefono serio e non un giocattolo iper-tecnologico. Con l&#8217;arrivo dell&#8217;estate e l&#8217;introduzione di iOs 3 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.apple.com/iphone/ios4/"><img class="aligncenter" title="iOs 4" src="http://blog.davideferrero.com/image.php?i=25" alt="iOs4" width="272" height="117" /></a></p>
<p>Come (quasi) tutti voi bene sapete, sono un felice possessore di iPhone 3G da ormai più di 1 anno e mezzo.</p>
<p>Durante i primi 6 mesi di utilizzo (pre iOs 3) mancavano ancora diverse funzionalità che potevano rendere iPhone un telefono serio e non un giocattolo iper-tecnologico. Con l&#8217;arrivo dell&#8217;estate e l&#8217;introduzione di iOs 3 vennero apportate numerose aggiunte che resero iPhone un cellulare a tutti gli effetti, più <em>tutto il resto</em> (mentre prima era solo <em>tutto il resto</em>). E proprio quel &#8220;tutto il resto&#8221; permette di dire a chiunque che iPhone ha cambiato il mondo dei cellulari (non dite di no, perchè sapete di avere torto :-P ).</p>
<p>Quest&#8217;estate è stato nuovamente aggiornato il software di iPhone (insieme all&#8217;introduzione di iPhone 4) e dal 21 giugno scorso è disponibile per tutti i possessori di iPhone (dal 3G in avanti) <a title="Apple iOs 4" href="http://www.apple.com/iphone/ios4/" target="_blank">iOs 4</a>&#8230;</p>
<p>Be&#8217; di primo impatto si può pensare: figo, un telefono di 2 anni fa, che viene ancora aggiornato (gratuitamente, non dimentichiamocelo). Bisogna dire che ovviamente il mio <em>FerrePhone</em> non possiede tutte le nuove funzionalità, pari pari ad iPhone 4, però alcune migliorie ci sono state. Tralasciando il dock 3d (di cui non me ne potrebbe fregare di meno) e gli effetti grafici allo sblocco del telefono, la funzione che trovo più utile è la cosidetta &#8220;folder&#8221; ovvero la suddivisione in cartelle delle applicazioni. Trascinando l&#8217;icona di una app sopra un&#8217;altra, queste due vengono inserite in una cartella, che prende il nome automaticamente a seconda delle affinità che ci sono tra le due app (ma che si può tranquillamente modificare).</p>
<p>Dopo alcuni minuti di utilizzo però, mi sono accorto che iOs4 sul mio iPhone sembrava avere qualche difficoltà. Testandolo per qualche giorno mi sono accorto che effettivamente iOs4 ha bisogno (probabilmente) di hardware più prestante, si nota infatti in alcuni momenti un rallentamento nell&#8217;apertura delle app (anche quelle di default) o effetti grafici non perfettamente fluidi. A questo punto voi mi direte: &#8220;ma che cacchio pretendi da un telefono di 2 anni fa&#8217;?&#8221;. Ok avete ragione, non posso pretendere nulla, Apple ha probabilmente deciso di rilasciare iOs4 anche per iPhone 3G nonostante probabilmente si fosse accorta che non sarebbe stato così prestante, ma per evitare critiche che sarebbero piovute a raffica, se così non avessero fatto. Ovviamente queste difetti sono &#8220;minimi&#8221; e non pregiudicano l&#8217;utilizzo normale di tutti i giorni, ma ad un occhio critico risaltano abbastanza nell&#8217;immediato. Che dire? Speriamo che a breve Apple noti questo problema e rilasci qualche aggiornamento, anche se non credo si possa fare molto (se non passare ad iPhone 4 ;) )</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2010/07/apple-ios-4-iphone-3g-prime-impressioni/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Javatar!</title>
		<link>http://blog.davideferrero.com/2010/06/java-vs-microsoft-net-javatar/</link>
		<comments>http://blog.davideferrero.com/2010/06/java-vs-microsoft-net-javatar/#comments</comments>
		<pubDate>Sat, 26 Jun 2010 17:26:25 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[Divertimento]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Risate]]></category>

		<guid isPermaLink="false">http://blog.davideferrero.com/?p=453</guid>
		<description><![CDATA[Ho trovato oggi su facebook questo fantastico trailer, e non vedo l&#8217;ora di andarlo a vedere al cinema! Chi viene? :-P]]></description>
			<content:encoded><![CDATA[<p>Ho trovato oggi su facebook questo fantastico trailer, e non vedo l&#8217;ora di andarlo a vedere al cinema! Chi viene? :-P</p>
<p align="center"><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/C-m4Htab1_E&amp;hl=it_IT&amp;fs=1?color1=0x3a3a3a&amp;color2=0x999999"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/C-m4Htab1_E&amp;hl=it_IT&amp;fs=1?color1=0x3a3a3a&amp;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2010/06/java-vs-microsoft-net-javatar/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

