<?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>Francesco (cphp) Trucchia &#187; LinkedIn</title>
	<atom:link href="http://www.cphp.it/tag/linkedin/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cphp.it</link>
	<description>metodi agili per il web, con un pizzico di php.</description>
	<lastBuildDate>Thu, 04 Aug 2011 14:10:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Integrazione con un &#8220;SMTP relay on the cloud&#8221;</title>
		<link>http://www.cphp.it/2011/08/04/integrazione-con-un-smtp-relay-on-the-cloud/</link>
		<comments>http://www.cphp.it/2011/08/04/integrazione-con-un-smtp-relay-on-the-cloud/#comments</comments>
		<pubDate>Thu, 04 Aug 2011 14:09:36 +0000</pubDate>
		<dc:creator>cphp</dc:creator>
				<category><![CDATA[Di tutto un po'...]]></category>
		<category><![CDATA[ideato]]></category>
		<category><![CDATA[LinkedIn]]></category>
		<category><![CDATA[sviluppo agile]]></category>

		<guid isPermaLink="false">http://www.cphp.it/?p=360</guid>
		<description><![CDATA[Recentemente ho dovuto affrontare il problema di monitorare il corretto invio di e-mail da un sito web verso gli utenti destinatari. Non essendo questo il core business del sito web mi sono subito chiesto se ci fosse qualche servizio esterno che si potesse occupare della cosa al posto mio. La risposta è arrivata presto ed [...]]]></description>
			<content:encoded><![CDATA[<p>Recentemente ho dovuto affrontare il problema di <a href="http://blog.oltretata.it/leducatrice-ha-ricevuto-il-mio-messaggio">monitorare il corretto invio di e-mail da un sito web</a> verso gli utenti destinatari. Non essendo questo il core business del sito web mi sono subito chiesto se ci fosse qualche servizio esterno che si potesse occupare della cosa al posto mio. La risposta è arrivata presto ed ha preso il nome di SendGrid.</p>
<p>Direttamente dal sito del produttore leggiamo:</p>
<blockquote><p>SendGrid&#8217;s cloud-based email infrastructure relieves  businesses of the cost and complexity of maintaining custom email  systems. <a href="http://sendgrid.com"> SendGrid</a> provides reliable delivery, scalability and real-time  analytics along with flexible API&#8217;s that make custom integration a  breeze.</p></blockquote>
<p>Attraverso SendGrid in sostanza è possibile semplificare l&#8217;invio delle email aggiungendo simpatiche funzionalità come:</p>
<ul>
<li>Monitoraggio real time dell&#8217;invio, apertura, spam, rifiuto, ecc di una email</li>
<li>Possibilità di inserire una &#8220;signature&#8221; su tutte le mail</li>
<li>Possibilità attraverso degli header della mail di categorizzare le email per poter fare analitiche</li>
<li>Invio di newsletter</li>
<li>Invio dei report di spam</li>
<li>Possibilità di integrare la propria piattaforma ad ogni evento collegato al workflow di delivery di email</li>
</ul>
<p>Questa ultima funzionalità è stata particolarmente importante per il mio progetto, poichè molto facilemente ora riesco a far conoscere agli utentei del mio sito web se un certo messaggio è stato inviato e soprattutto se è stato aperto.</p>
<p>Se siete interessati anche voi ad integrare anche la vostra piattaforma web con questo servizio non esitate a contattarmi!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cphp.it/2011/08/04/integrazione-con-un-smtp-relay-on-the-cloud/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Geolocalizzazione in PHP</title>
		<link>http://www.cphp.it/2011/07/06/geolocalizzazione-in-php/</link>
		<comments>http://www.cphp.it/2011/07/06/geolocalizzazione-in-php/#comments</comments>
		<pubDate>Wed, 06 Jul 2011 15:40:15 +0000</pubDate>
		<dc:creator>cphp</dc:creator>
				<category><![CDATA[Di tutto un po'...]]></category>
		<category><![CDATA[ideato]]></category>
		<category><![CDATA[LinkedIn]]></category>
		<category><![CDATA[sviluppo agile]]></category>

		<guid isPermaLink="false">http://www.cphp.it/?p=346</guid>
		<description><![CDATA[Negli ultimi mesi ho lavorato ad un mio progetto personale, Oltre Tata, probabilmente alcuni di voi ne avranno già sentito parlare. In pratica un motore di ricerca geolocalizzato attraverso il quale agevolare l&#8217;incontro tra domanda ed offerta di educatrice familiari e famiglie.
In questo progetto ho esplorato in maniera dettagliata vari servizi esterni di geolocalizzazione, in [...]]]></description>
			<content:encoded><![CDATA[<p>Negli ultimi mesi ho lavorato ad un mio progetto personale, <a href="http://www.oltretata.it">Oltre Tata</a>, probabilmente alcuni di voi ne avranno già <a href="http://www.facebook.com/oltretata">sentito parlare</a>. In pratica un motore di ricerca geolocalizzato attraverso il quale agevolare l&#8217;incontro tra domanda ed offerta di educatrice familiari e famiglie.</p>
<p>In questo progetto ho esplorato in maniera dettagliata vari servizi esterni di geolocalizzazione, in pratica dei servizi web che prendono in input un indirizzo e restituiscono come risultato un punto nello spazio terrestre identificato attraverso la latitudine e la longitudine.</p>
<p>Il mio requisito principale era quello di avere più di un servizio attivo in modo da diminuire il rischio di non avere una risposta in caso il servizio fosse down o non trovasse l&#8217;indirizzo stesso. Dato questo requisito ho iniziato a studiare i vari servizi in giro per la rete e alla fine ne ho scelti due: <a href="http://code.google.com/intl/it-IT/apis/maps/documentation/geocoding/">Google Geocoding</a> e <a href="http://wiki.openstreetmap.org/wiki/Nominatim">OpenStreetMap Nominatim</a>.</p>
<p>Scelti i due servizi ho deciso di creare un componente php 5.3 che fosse trasparente nelle configurazione dei servizi e nel modo in cui il mio codice potesse comunicare con loro ed è nato <a href="https://github.com/cphp/GeoAdapter">GeoAdapter</a>. Il componente è rilasciato sotto licenza MIT.</p>
<p>L&#8217;architettura del componente è suddivisa in una classe Search che si occupa di passare la query ai servizi. Due classi di servizio che adattano l&#8217;interfaccia di Google Geocoding e OpenStreetMap Nominatim all&#8217;interfaccia della classe Search, una classe SearchCache che serve a crare una cache delle richieste fatte in modo da abbassare il numero di chiamate che si fa al servizio e una classe Location che viene restituita come risultato della ricerca che rappresenta il punto cercato e implementa un metodo per cercare la distanza tra due punti.</p>
<p>Il componente è del tutto configurabile e estendendo l&#8217;interfaccia Service è possibile aggiungere altri servizi di geolocalizzazione. Di seguito un esempio di utilizzo del componente:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span>__DIR__<span style="color: #339933;">.</span><span style="color: #0000ff;">'/../lib/Geo/Autoload.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
Geo\Autoload<span style="color: #339933;">::</span><span style="color: #004000;">register</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> Search <span style="color: #000000; font-weight: bold;">extends</span> Geo\Search
<span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000000; font-weight: bold;">function</span> configure<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">addService</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> Geo\Service\OpenStreetMap\Nominatim<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">addService</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> Geo\Service\GoogleMap\GeoCode<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000088;">$search</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Search<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$search</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'via Montenapoleone, Milano'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$location_a</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$search</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getFirst</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$search</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'piazza Boccolino, Osimo'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$location_b</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$search</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getFirst</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Address1: via Montenapoleone, Milano'</span><span style="color: #339933;">.</span>PHP_EOL<span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Latitude: '</span><span style="color: #339933;">.</span><span style="color: #000088;">$location_a</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getLatitude</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>PHP_EOL<span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Longitude: '</span><span style="color: #339933;">.</span><span style="color: #000088;">$location_a</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getLongitude</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>PHP_EOL<span style="color: #339933;">.</span>PHP_EOL<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Address2: piazza Boccolino, Osimo'</span><span style="color: #339933;">.</span>PHP_EOL<span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Latitude: '</span><span style="color: #339933;">.</span><span style="color: #000088;">$location_b</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getLatitude</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>PHP_EOL<span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Longitude: '</span><span style="color: #339933;">.</span><span style="color: #000088;">$location_b</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getLongitude</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>PHP_EOL<span style="color: #339933;">.</span>PHP_EOL<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Distance from Address1 to Address2: '</span><span style="color: #339933;">.</span><span style="color: #000088;">$location_a</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">distance</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$location_b</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">' Km'</span><span style="color: #339933;">.</span>PHP_EOL<span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Questo codice restituirà il seguente output:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">Address1: via Montenapoleone, Milano
Latitude: <span style="color: #000000;">45.4685166</span>
Longitude: <span style="color: #000000;">9.1948891</span>
&nbsp;
Address2: piazza Boccolino, Osimo
Latitude: <span style="color: #000000;">43.4863912</span>
Longitude: <span style="color: #000000;">13.4825126</span>
&nbsp;
Distance from Address1 to Address2: <span style="color: #000000;">251.64</span> Km</pre></div></div>

<p>Attraverso questo componente sono ruscito a localizzare tutte le educatrici che si iscrivono ad <a href="http://www.oltretata.it">Oltre Tata</a> e a memorizzare in fase di regitrazione del loro profilo le loro coordinate geospaziali.</p>
<p>Una volta memorizzate le loro coordinate su database ho dovuto creare una query che dato il punto di ricerca della famiglia restituisse in un raggio di 30km tutte le educatrici disponibili. Un <a href="http://derickrethans.nl/spatial-indexes-calculating-distance.html">post di Derick</a> mi è corso in aiuto e dopo un&#8217;attenta lettura di tutte le funzioni trigonometriche per il calcolo delle distanze ho trovato la soluzione implementando la seguente formula in una query SQL:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">acos<span style="color: #7a0874; font-weight: bold;">&#40;</span> sin<span style="color: #7a0874; font-weight: bold;">&#40;</span>latA<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000; font-weight: bold;">*</span> sin<span style="color: #7a0874; font-weight: bold;">&#40;</span>latB<span style="color: #7a0874; font-weight: bold;">&#41;</span> +cos<span style="color: #7a0874; font-weight: bold;">&#40;</span>latA<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000; font-weight: bold;">*</span> cos<span style="color: #7a0874; font-weight: bold;">&#40;</span>latB<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000; font-weight: bold;">*</span> cos<span style="color: #7a0874; font-weight: bold;">&#40;</span>longB - longA<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000;">3956</span></pre></div></div>

<p>dove latA è la latitudine del punto A, latB è la latitudine del punto B, longB è la longitudine del punto B e longA è la longitudine del punto A. Alla fine della formula moltiplico tutto per 3956 per avere il totale in km. Tutti i valori di latitudine e longitudine devono essere dati in valoti radianti.</p>
<p>In questo modo ad esempio se voglio cercare <a href="http://www.oltretata.it/citta/milano">babysitter a milano</a> il sistema cerca prima il punto di ricerca e poi trova tutte le educatrici nelle vicinanze di quel punto, stessa cosa per le altre città come <a href="http://www.oltretata.it/citta/roma">Roma</a>, <a href="http://www.oltretata.it/citta/napoli">Napoli</a>, <a href="http://www.oltretata.it/citta/ancona">Ancona</a> e così via.</p>
<p>Sentitevi liberi di clonare GeoAdapeter e di aggiungere ulteriori servizi, o di migliorare il componente, però mi raccomando inviatemi le vostre pull request <img src='http://www.cphp.it/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  !!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cphp.it/2011/07/06/geolocalizzazione-in-php/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Interessati a fare refactoring del vostro codice php?</title>
		<link>http://www.cphp.it/2010/11/17/interessati-a-fare-refactoring-del-vostro-codice/</link>
		<comments>http://www.cphp.it/2010/11/17/interessati-a-fare-refactoring-del-vostro-codice/#comments</comments>
		<pubDate>Wed, 17 Nov 2010 07:57:41 +0000</pubDate>
		<dc:creator>cphp</dc:creator>
				<category><![CDATA[Di tutto un po'...]]></category>
		<category><![CDATA[ideato]]></category>
		<category><![CDATA[LinkedIn]]></category>
		<category><![CDATA[sviluppo agile]]></category>

		<guid isPermaLink="false">http://www.cphp.it/?p=333</guid>
		<description><![CDATA[Il 6 Dicembre 2010 alle ore 11:00 si terrà il primo webinar in collaborazione tra Zend ed Ideato sul refactoring del codice PHP. Di seguito un estratto direttamente dal sito ufficiale di zend:
Sono sempre più numerose le applicazioni legacy aziendali che sono diventate difficili da manutenere e da estendere. La riscrittura completa di un&#8217;applicazione non [...]]]></description>
			<content:encoded><![CDATA[<p>Il 6 Dicembre 2010 alle ore 11:00 si terrà il <a href="http://www.zend.com/it/company/news/event/webinar-pro-php-refactoring">primo webinar</a> in collaborazione tra <a href="http://www.zend.com/it/">Zend</a> ed <a href="http://www.ideato.it">Ideato</a> sul <a href="http://www.apress.com/book/view/9781430227274">refactoring del codice PHP</a>. Di seguito un estratto direttamente dal sito ufficiale di zend:</p>
<blockquote><p>Sono sempre più numerose le applicazioni legacy aziendali che sono diventate difficili da manutenere e da estendere. La riscrittura completa di un&#8217;applicazione non è quasi mai l&#8217;approccio corretto da seguire, soprattutto dal punto di vista business. In questo webinar si parlerà di come realizzare il refactoring di codice PHP e di alcune metodologie di ingegneria del software da seguire per non perdersi nei meandri del codice. Dal punto di vista degli strumenti da utilizzare si parlerà di PHPUnit e Selenium, per il testing automatico del codice PHP, e di Zend Studio, l&#8217;IDE di Zend Technologies per facilitare il refactoring e la gestione del codice PHP.<br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-weight: bold; padding: 0px; margin: 0px;">Presentano</span>: Francesco Trucchia, CTO di Ideato srl, Solution Partner di Zend Technologies e Enrico Zimuel, Senior Consultant &amp; Architect, Zend Technologies</p></blockquote>
<p>Il webinar è gratutito e in lingua italiana. <a href="http://www.zend.com/webinar/register/?eventNumber=571785893">Registratevi</a>!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cphp.it/2010/11/17/interessati-a-fare-refactoring-del-vostro-codice/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Alcune regole del Pair Programming</title>
		<link>http://www.cphp.it/2010/01/12/alcune-regole-del-pair-programming/</link>
		<comments>http://www.cphp.it/2010/01/12/alcune-regole-del-pair-programming/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 07:51:18 +0000</pubDate>
		<dc:creator>cphp</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[WebDeveloper]]></category>
		<category><![CDATA[ideato]]></category>
		<category><![CDATA[LinkedIn]]></category>
		<category><![CDATA[sviluppo agile]]></category>

		<guid isPermaLink="false">http://www.cphp.it/?p=310</guid>
		<description><![CDATA[Qualche settimana fa, una coppia di sviluppatori del team nel quale lavoro, mi ha chiesto:
&#8220;Ciccio, ma quali sono le regole del Pair Programming? Facciamo Pair Programming da alcuni mesi, ma a volte non ci sentiamo molto efficaci, perchè discutiamo troppo nel prendere decisioni condivise e perchè il nostro livello di conoscenza non è lo stesso.&#8221;
Quando [...]]]></description>
			<content:encoded><![CDATA[<p>Qualche settimana fa, una coppia di sviluppatori del <a href="http://www.theideatos.com">team nel quale lavoro</a>, mi ha chiesto:</p>
<blockquote><p>&#8220;Ciccio, ma quali sono le regole del <a href="http://en.wikipedia.org/wiki/Pair_programming">Pair Programming</a>? Facciamo Pair Programming da alcuni mesi, ma a volte non ci sentiamo molto efficaci, perchè discutiamo troppo nel prendere decisioni condivise e perchè il nostro livello di conoscenza non è lo stesso.&#8221;</p></blockquote>
<p>Quando dal team emergono queste domande, i miei occhi si illuminano, perchè solo di fronte alla consapevolezza si possono dare piccole regole per migliorare se stessi.</p>
<p>Di fronte alle loro domande non ho risposto subito, ho rinviato la discussione ad un <a href="http://www.ideato.it/Blog/In-primo-piano/I-dojo-di-Ideato">dojo</a> interno, che organizzeremo in <a href="http://www.ideato.it">ideato</a> a breve tempo.</p>
<p>Tuttavia, oggi, vorrei raccontarvi quando secondo me il Pair Programming è efficace.</p>
<p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em;">La metafora che uso spesso per far capire il Pair Programming è quella dei guidatori di rally, chi scrive codide è il guidatore, chi sta a fianco e osserva è il navigatore. Se il guidatore non si fida del navigatore, dove va a finire l&#8217;auto?</p>
<p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em;">Come in ogni coppia anche nel Pair Programming si è efficaci se si rispettano i ruoli.</p>
<ol>
<li><strong>Il guidatore si deve fidare del navigatore</strong>.<br />
Nella coppia ci deve essere fiducia. Il punto di vista predominante deve essere quello del navigatore. La coppia non può discutere ogni piccola decisione. Il guidatore si deve occupare di fare bene quello che gli viene detto dal navigatore. L&#8217;obiettivo è la risoluzione del problema. Se il guidatore non è d&#8217;accordo con il design emerso potrà fare refactoring quando sarà lui il navigatore, se necessario.</li>
<li><strong> Il guidatore deve stare attento alla tattica</strong>.<br />
Il compito del guidatore è quello di porre attenzione a quello che gli viene detto dal navigatore e al coding style.</li>
<li><strong> Il navigatore deve stare attento alla strategia.</strong><br />
Il compito del navigatore è quello di indicare la strada al guidatore. Il navigatore deve guardare più avanti e scegliere quale strategie attuare. E&#8217; il navigatore che fa emergere il design del codice.</li>
<li><strong>Per discutere si chiama un Time-Out</strong>.<br />
Durante la sessione di Pair Programming, se la coppia è in disaccordo, si possono chiamare dei Time-Out. I time out servono a discutere insieme quale strada percorrere e come risolvere un certo problema, o per chiedere aiuto a qualcuno se si è bloccati. Il numero massimo di time out che si possono chiamare durante una giornata non dovrebbero essere più di quattro. La durata di un Time-Out non deve essere superiore al pomodoro.</li>
<li><strong> Cambiarsi i ruoli</strong>.<br />
E&#8217; molto importante che nella coppia i ruoli vengano scambiati frequentemente. Un tempo ideale potrebbe essere ogni uno o due pomodori.</li>
</ol>
<p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em;"><strong><span style="font-weight: normal;">Nel dojo che organizzeremo in ideato, vedremo come rendere ancora più efficace il Pair Programming attravero il <a href="http://www.c2.com/cgi/wiki?PairProgrammingPingPongPattern">Ping Pong Pair Programming</a>. </span></strong></p>
<p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em;"><strong><span style="font-weight: normal;">E tu ti fidi del tuo navigatore?</span></strong></p>
<p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em;">
]]></content:encoded>
			<wfw:commentRss>http://www.cphp.it/2010/01/12/alcune-regole-del-pair-programming/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Il mio 2009</title>
		<link>http://www.cphp.it/2009/12/26/il-mio-2009/</link>
		<comments>http://www.cphp.it/2009/12/26/il-mio-2009/#comments</comments>
		<pubDate>Sat, 26 Dec 2009 16:44:33 +0000</pubDate>
		<dc:creator>cphp</dc:creator>
				<category><![CDATA[Di tutto un po'...]]></category>
		<category><![CDATA[ideato]]></category>
		<category><![CDATA[LinkedIn]]></category>

		<guid isPermaLink="false">http://www.cphp.it/?p=300</guid>
		<description><![CDATA[Anche un altro anno sta finendo e si lascia alle porte molte belle eperienze vissute e passate.
Ho partecipate alle seguenti conferenze:

eZ International Winter Conference &#8211; 29, 30 Gennaio 2009, Barcelona
PHPCon Italia 2009 &#8211; 18 &#8211; 20 Marzo 2009
PHPDay 2009 &#8211; 15, 16 Maggio 2009, Verona
PHP Test Fest &#8211; 19, 20, 21 Giugno 2009, Cesena
eZ Conference [...]]]></description>
			<content:encoded><![CDATA[<p>Anche un <a href="http://it.wikipedia.org/wiki/2009">altro anno</a> sta finendo e si lascia alle porte molte belle eperienze vissute e passate.</p>
<p>Ho partecipate alle seguenti conferenze:</p>
<ul>
<li><a href="http://ez.no/company/events/ez_international_winter_conferences_2009">eZ International Winter Conference</a> &#8211; 29, 30 Gennaio 2009, Barcelona</li>
<li><a href="http://www.phpcon.it/">PHPCon Italia 2009</a> &#8211; 18 &#8211; 20 Marzo 2009</li>
<li><a href="http://www.phpday.it/site/phpday-2009/">PHPDay 2009</a> &#8211; 15, 16 Maggio 2009, Verona</li>
<li><a href="http://wiki.grusp.it/eventi:phptestfest:riviera2009">PHP Test Fest</a> &#8211; 19, 20, 21 Giugno 2009, Cesena</li>
<li><a href="http://ez.no/company/ez_conference_awards">eZ Conference &amp; Awards 2009</a> &#8211; 24, 25, 26 Giugno 2009, Parigi</li>
<li><a href="http://www.javascriptcamp.com/">Javascript Camp</a> &#8211; 25 Settembre 2009, Cesena</li>
<li><a href="http://html5dojo.eventbrite.com/">HTML 5 Dojo</a> &#8211; 18 Dicembre 2009, Cesena</li>
</ul>
<p>Ho tenuto i seguenti talk:</p>
<ul>
<li>PHPCon Italia &#8211; <a href="http://entwickler.com/konferenzen/planer/show_details.php?konferenzid=94&amp;sessionid=9482">Extreme Programming and PHP</a></li>
<li>PHPDay &#8211; <a href="http://www.phpday.it/site/phpday-2009/calendario-conferenze/workshop/spaghetti-code-refactoring-dry-kiss-tdd/">Spaghetti Code Refactoring</a></li>
<li>Javscript Camp &#8211; Unit test con javascript</li>
</ul>
<p>A fine ottobre inoltre è uscito il mio primo libro &#8220;<a href="http://www.packtpub.com/ez-publish-4-enterprise-web-sites-step-by-step">eZ Publish 4: Enterprise Web Sites Step By Step</a>&#8221; ed ho iniziato a scrivere il mio secondo libro &#8220;<a href="http://www.apress.com/book/view/9781430227274">Pro PHP Refactoring with Test-Driven Design</a>&#8220;.</p>
<p>Inoltre con la mia azienda ho lavorato ai seguenti progetti:</p>
<ul>
<li><a href="http://www.tripshake.com">Tripshake.com</a></li>
<li><a href="http://www.eharmony.it/">eHarmony.it</a></li>
<li><a href="http://www.topgirl.it">TopGirl.it</a></li>
<li>Casa Vinicola Zonin e tenute</li>
<li>Planetek Italia</li>
</ul>
<p>e alle seguenti estensioni open source:</p>
<ul>
<li><a href="http://projects.ez.no/ezsync">eZ Deploy</a> &#8211; Deploy automatico con eZ Publish</li>
<li><a href="http://projects.ez.no/eztestbrowser">eZ Test Browser </a>- Test funzionali con eZ Publish</li>
</ul>
<p>Ho cercato di migliorare ogni giorno il processo produttivo all&#8217;interno di ideato, studiando e mettendo in pratica le metodologie agili.</p>
<p>Dire in conclusione un anno molto produttivo, ora vediamo che cosa il 2010 si riserverà.</p>
<p>Auguri a tutti e felice anno nuovo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cphp.it/2009/12/26/il-mio-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XPUG Marche</title>
		<link>http://www.cphp.it/2009/12/26/xpug-marche/</link>
		<comments>http://www.cphp.it/2009/12/26/xpug-marche/#comments</comments>
		<pubDate>Sat, 26 Dec 2009 15:44:03 +0000</pubDate>
		<dc:creator>cphp</dc:creator>
				<category><![CDATA[Di tutto un po'...]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[LinkedIn]]></category>

		<guid isPermaLink="false">http://www.cphp.it/?p=298</guid>
		<description><![CDATA[Nasce anche nelle marche il primo XP User Group.
Gruppo dedicato allo studio ed approfondimento delle pratiche dell&#8217;eXtreme Programming e dei processi agili in genere con sede in Ancona. (The group is focused at investigation and review of eXtreme Programming practices and agile processes in general based in Ancona, Italy).
Ho deciso di iscrivermi anch&#8217;io e penso [...]]]></description>
			<content:encoded><![CDATA[<p>Nasce anche nelle marche il primo <a href="http://www.linkedin.com/groups?about=&amp;gid=1885818&amp;trk=anet_ug_grppro">XP User Group</a>.</p>
<blockquote><p>Gruppo dedicato allo studio ed approfondimento delle pratiche dell&#8217;eXtreme Programming e dei processi agili in genere con sede in Ancona. (The group is focused at investigation and review of eXtreme Programming practices and agile processes in general based in Ancona, Italy).</p></blockquote>
<p>Ho deciso di <a href="http://groups.google.it/group/marche-xpug">iscrivermi</a> anch&#8217;io e penso che il 2010 mi vedrà impegnato in questa bella iniziativa.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cphp.it/2009/12/26/xpug-marche/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Corsi di formazione @ ideato: PHP Refactoring</title>
		<link>http://www.cphp.it/2009/10/08/corsi-di-formazione-ideato-php-refactoring/</link>
		<comments>http://www.cphp.it/2009/10/08/corsi-di-formazione-ideato-php-refactoring/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 20:38:54 +0000</pubDate>
		<dc:creator>cphp</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[ideato]]></category>
		<category><![CDATA[formazione]]></category>
		<category><![CDATA[LinkedIn]]></category>

		<guid isPermaLink="false">http://www.cphp.it/?p=278</guid>
		<description><![CDATA[Partono in ideato i corsi di formazione. Il primo corso di formazione si intitola &#8220;PHP Refactoring&#8221; e mi vedrà coinvolto come insegnante.
PHP Refactoring
Molte aziende ed organizzazioni hanno applicazioni business critical che dipendono da codice obsoleto e di difficile manutenzione.
Le ragioni dietro a questo genere di problema possono essere molte, dalla perdita di know-how relativo a chi ha sviluppato il [...]]]></description>
			<content:encoded><![CDATA[<p>Partono in ideato i corsi di formazione. Il primo corso di formazione si intitola &#8220;PHP Refactoring&#8221; e mi vedrà coinvolto come insegnante.</p>
<blockquote><p><strong>PHP Refactoring</strong><br />
Molte aziende ed organizzazioni hanno applicazioni business critical che dipendono da codice obsoleto e di difficile manutenzione.</p>
<p>Le ragioni dietro a questo genere di problema possono essere molte, dalla perdita di know-how relativo a chi ha sviluppato il prodotto, alla mancanza vera e propria di progettazione fino alla totale assenza pratiche di sviluppo che non hanno seguito pattern riconosciuti<br />
e consolidati.</p>
<p>Con questo corso si imparerà ad identificare questi problemi ed aggiornare, o creare, applicazioni più efficienti utilizzando pratiche di Test Driven Design.</p>
<p>Il corso di Refactoring di codice PHP obsoleto sarà basato sul libro, di prossima pubblicazione, scritto da <a href="http://www.cphp.it">Francesco Trucchia</a> e <a href="http://www.sviluppoagile.it">Jacopo Romei</a> intitolato &#8221;<a href="http://www.apress.com/book/view/9781430227274">Pro PHP Refactoring with Test-Driven Design</a>&#8220; e tenuto dagli stessi autori.</p>
<p>durata: 2 giorni<br />
maggiori informazioni: <a style="color: #1d1ece;" href="http://www.refactoring.it/" target="_blank">http://www.refactoring.it</a></p></blockquote>
<p>Se siete interessati a partecipare o volete avere maggiori informazioni contattateci all&#8217;indirizzo <a href="mailto:formazione@ideato.it">formazione@ideato.it</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cphp.it/2009/10/08/corsi-di-formazione-ideato-php-refactoring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Inizia una nuova avventura&#8230;</title>
		<link>http://www.cphp.it/2009/09/12/inizia-una-nuova-avventura/</link>
		<comments>http://www.cphp.it/2009/09/12/inizia-una-nuova-avventura/#comments</comments>
		<pubDate>Sat, 12 Sep 2009 16:03:59 +0000</pubDate>
		<dc:creator>cphp</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[eZ planet]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[ideato]]></category>
		<category><![CDATA[LinkedIn]]></category>

		<guid isPermaLink="false">http://www.cphp.it/?p=265</guid>
		<description><![CDATA[Inizia oggi per me e per Jacopo una nuova avventura. Saremo gli autori del nuovo libro dell&#8217;Apress &#8220;Pro PHP Refactoring with Test-Driven Design&#8220;.
Dopo il mio debutto con &#8220;eZ Publish 4: Enterprise Web Sites Step-by-Step&#8220;, del quale siamo nella fase di revisione tecnica, molto presto verrà pubblicato, ecco che ho deciso di buttarmi in una nuova [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="float: left;" src="http://www.apress.com/resource/bookcover/9781430227274?size=medium" alt="" width="125" height="165" />Inizia oggi per me e per <a href="http://www.sviluppoagile.it/la-prima-volta">Jacopo</a> una nuova avventura. Saremo gli autori del nuovo libro dell&#8217;<a href="http://www.apress.com">Apress</a> &#8220;<a href="http://www.phprefactoringwithtdd.com">Pro PHP Refactoring with Test-Driven Design</a>&#8220;.</p>
<p>Dopo il mio debutto con &#8220;<a href="http://www.packtpub.com/ez-publish-4-enterprise-web-sites-step-by-step">eZ Publish 4: Enterprise Web Sites Step-by-Step</a>&#8220;, del quale siamo nella fase di revisione tecnica, molto presto verrà pubblicato, ecco che ho deciso di buttarmi in una nuova sfida.</p>
<p>Credo che oggi come non mai ci sia interesse verso il valore del software. Io e Jacopo con questo libro cercheremo di spiegarvi come è possibile far crescere il vostro software php senza fallire e perderne valore.</p>
<blockquote>
<h2>Pro PHP Refactoring with Test-Driven Design</h2>
<p>Many businesses and organizations depend on older high-value PHP software that risks abandonment because it is impossible to maintain. The reasons for this may be that the software is not well designed; there is only one developer (the one who created the system) who can develop it because he didn’t use common design patterns and documentation; or the code is procedural, not object oriented. With this book, you’ll learn to identify problem code and refactor it to create more effective applications using test-driven design.</p>
<h3>What you’ll learn</h3>
<ul>
<li>What refactoring is and why you need to refactor code</li>
<li>What test-driven design is and why you need to test your code</li>
<li>How to write unit and functional tests with PHPUnit and Selenium Remote Control (RC)</li>
<li>How to detect “bad smells” in PHP code, and refactor them using test-driven design</li>
<li>How to refactor a large procedural application affected by many bad smells</li>
</ul>
<h3>Who is this book for?</h3>
<p>This book is for PHP developers, businesses, and developers relying on legacy PHP apps.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.cphp.it/2009/09/12/inizia-una-nuova-avventura/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>I test automatici come unità di misura del cambiamento</title>
		<link>http://www.cphp.it/2009/08/07/i-test-automatici-come-unita-di-misura-del-cambiamento/</link>
		<comments>http://www.cphp.it/2009/08/07/i-test-automatici-come-unita-di-misura-del-cambiamento/#comments</comments>
		<pubDate>Fri, 07 Aug 2009 11:45:07 +0000</pubDate>
		<dc:creator>cphp</dc:creator>
				<category><![CDATA[Di tutto un po'...]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[ideato]]></category>
		<category><![CDATA[LinkedIn]]></category>

		<guid isPermaLink="false">http://www.cphp.it/?p=259</guid>
		<description><![CDATA[In natura il cambiamento viene dimostrato dal confronto di due misure.
Ad esempio, se voglio dimostrare che il peso di un palloncino è diverso se riempito con acqua o con aria, eseguirò i seguenti passi:

peso in una bilancia il palloncino pieno di acqua
peso nella stessa bilancia il palloncino quello pieno d&#8217;aria
 confronto i due pesi

se la [...]]]></description>
			<content:encoded><![CDATA[<p>In natura il cambiamento viene dimostrato dal confronto di due misure.</p>
<p>Ad esempio, se voglio dimostrare che il peso di un palloncino è diverso se riempito con acqua o con aria, eseguirò i seguenti passi:</p>
<ol>
<li>peso in una bilancia il palloncino pieno di acqua</li>
<li>peso nella stessa bilancia il palloncino quello pieno d&#8217;aria</li>
<li> confronto i due pesi</li>
</ol>
<p>se la differenza è diversa da zero, significa che il palloncino pieno d&#8217;acqua pesa di più del palloncino pieno d&#8217;aria:</p>
<blockquote><p>Cambiamento = PesoPalloncinoAcqua &#8211; PesoPalloncinoAria</p></blockquote>
<p>Questa dimostrazione è possibile grazie alla bilancia che è il nostro strumento di misurazione tarato sull&#8217;unita di misura del peso, il grammo.</p>
<p>Quindi se il palloncino è la nostra applicazione, l&#8217;acqua la nostra vecchia feature che deve essere sostiutita con l&#8217;aria, come faccio a dimostrare che il codice è cambiato se non riesco a misurarlo?</p>
<p>Con i <a href="http://it.wikipedia.org/wiki/Unit_test"><strong>test automatici</strong></a>.</p>
<p><strong>Il test automatico è in grado di misurare il nostro codice e dimostrarne in maniera oggettiva il cambiamento</strong>.</p>
<p>E voi misurate il vostro codice? con quale unità di misura?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cphp.it/2009/08/07/i-test-automatici-come-unita-di-misura-del-cambiamento/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Pubblicato il video della eZ Conference 2009</title>
		<link>http://www.cphp.it/2009/07/18/pubblicato-il-video-della-ez-conference-2009/</link>
		<comments>http://www.cphp.it/2009/07/18/pubblicato-il-video-della-ez-conference-2009/#comments</comments>
		<pubDate>Sat, 18 Jul 2009 11:51:30 +0000</pubDate>
		<dc:creator>cphp</dc:creator>
				<category><![CDATA[eZ planet]]></category>
		<category><![CDATA[ideato]]></category>
		<category><![CDATA[Add new tag]]></category>
		<category><![CDATA[ezplanet]]></category>
		<category><![CDATA[LinkedIn]]></category>

		<guid isPermaLink="false">http://www.cphp.it/?p=258</guid>
		<description><![CDATA[Ecco il video riassunto della eZ Conference 2009. Al minuto 6:00 ci sono le immagini della mia premiazione!!

]]></description>
			<content:encoded><![CDATA[<p>Ecco il video riassunto della <a href="http://ez.no/company/ez_conference_awards">eZ Conference 2009</a>. Al minuto 6:00 ci sono le immagini della mia premiazione!!</p>
<p><object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/je6CqRWjwfo&#038;hl=it&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/je6CqRWjwfo&#038;hl=it&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cphp.it/2009/07/18/pubblicato-il-video-della-ez-conference-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

