<?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>Davide Petrillo &#187; PHP</title>
	<atom:link href="http://petr.illodavi.de/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://petr.illodavi.de</link>
	<description>Tech blog, roba varia &#38; me stesso</description>
	<lastBuildDate>Mon, 12 Jul 2010 19:32:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>TiNoleggio &amp; Partners</title>
		<link>http://petr.illodavi.de/2010/07/tinoleggio-partners/</link>
		<comments>http://petr.illodavi.de/2010/07/tinoleggio-partners/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 20:46:28 +0000</pubDate>
		<dc:creator>Davide</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[parallelizzazione]]></category>
		<category><![CDATA[tinoleggio]]></category>

		<guid isPermaLink="false">http://petr.illodavi.de/?p=196</guid>
		<description><![CDATA[Non allarmatevi, non mi riferisco ad una  manifestazione con cantante lirico e ospiti internazionali, nè ad una  società di revisione conti, ma all&#8217;ultimo progetto che sto seguendo.
Parlo di www.tinoleggio.it, portale di  ricerca comparata per il noleggio di mezzi di trasporto, dall&#8217;automobile alla barca, creazione  di una giovane start-up milanese che nel [...]]]></description>
			<content:encoded><![CDATA[<p>Non allarmatevi, non mi riferisco ad una  manifestazione con cantante lirico e ospiti internazionali, nè ad una  società di revisione conti, ma all&#8217;ultimo progetto che sto seguendo.</p>
<p>Parlo di <a href="http://www.tinoleggio.it">www.tinoleggio.it</a>, portale di  ricerca comparata per il noleggio di mezzi di trasporto, dall&#8217;automobile alla barca, creazione  di una giovane start-up milanese che nel suo arsenale web  annovera anche <a href="http://www.tiprovo.it">www.tiprovo.it</a> e altri diversi progetti interessanti  ancora in cantiere. TiNoleggio permette di trovare le tariffe  (teoricamente) più basse sul mercato grazie alle numerose partnership  intrecciate con società di noleggio o altri aggregatori  di prezzi. Queste partnership commerciali devono naturalmente essere tradotte in  software: e qui arriviamo al perchè sono stato chiamato 15 giorni fa a dare il mio  contributo al progetto (se ve lo state chiedendo: sì, è squillato il  telefono rosso che tengo nascosto dietro il quadro di Rembrandt)</p>
<p>Ci sono due problemi da risolvere. Il  primo è che le modalità di accesso ai dati forniti dai partner, tramite le quali  effettuare le ricerche, sono abbastanza variegate: database, API, siti web sui quali lanciare spider. Il secondo è che, all&#8217;aumentare dei partner, aumenta anche il tempo computazionale di ricerca, ed è fondamentale evitare di raggiungere il famigerato TAU (Traguardo di Assopimento Utente).</p>
<h3>Uniformare i partner</h3>
<p>La soluzione al primo problema è semplice: incapsuliamo i partner e i loro meccanismi di ricerca all&#8217;interno di una serie di classi polimorfe. Abbiamo quindi diverse classi Partner, contenenti definizioni e dettagli relativi ai partner, e PartnerSearchEngine, che incorporano la logica di ricerca sui dati del partner. In questo modo viene definita una linea guida per creare un futuro partner, in modo totalmente indolore, in quanto il motore di ricerca di TiNoleggio non dovrà essere riadattato per gestire la nuova integrazione: saprà già quali metodi chiamare per ottenere ciò che gli serve.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://yuml.me/diagram/scruffy/class/[Partner]+-&gt;1[Partner Search Engine], [Partner]+-&gt;1[Partner Definition].jpg" alt="" width="395" height="176"  style="background-color: white;" /></p>
<h3>Parallelizzare le ricerche</h3>
<p>Anche qui non parliamo di rocket science: se 3 processi ci mettono 3, 5 e 7 secondi ad eseguirsi, e vogliamo che il tempo di esecuzione totale sia sotto i 15 secondi, dovremo eseguirli in parallelo. Il tempo di esecuzione totale sarà quello di esecuzione del processo più lento (in linea teorica; bisogna tenere in considerazione l&#8217;overhead e il maggior consumo di risorse hardware).<br />
In PHP, abbiamo due modi per eseguire processi paralleli: l&#8217;utilizzo delle fork e la chiamata di script lanciati in background (su Unix, in questo caso) Dato che le fork sono assolutamente sconsigliate in ambiente Apache, si ricade forzatamente sulla seconda opzione. Ci sono diverse funzioni che permettono di eseguire script in background: io ho utilizzato <a href="http://it.php.net/manual/en/function.proc-open.php">proc_open</a>, flessibile e potente.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://yuml.me/diagram/scruffy/class/[Partner]+-&gt;1[Partner Search Engine], [Search Engine]++-&gt;1[Search Engine Core], [Search Engine Core]^-[Parallel Search Engine Core], [Search Engine Core]^-.-[Serial Search Engine Core{bg:cornsilk}], [Search Engine Core]uses -.-&gt;*[Partner Search Engine], [Parallel Search Engine Core]send partner search engine-.-&gt;[note: Parallelization Library{bg:cornsilk}], [note: Parallelization Library{bg:cornsilk}]-[note: Background Script{bg:yellow}].jpg" alt=""  style="background-color: white;" /></p>
<p>Oltre alla parallelizzazione dei processi di ricerca dei partner, è stato implementato un ulteriore livello di parallelizzazione: quello delle richieste HTTP, nel caso in cui la ricerca preveda l&#8217;utilizzo di chiamate ad API del partner o spidering del loro sito. Tutto ciò è stato ottenuto utilizzando la libreria <a href="http://www.php.net/manual/en/book.curl.php">cURL</a> (modulo PHP da installare a parte), della quale ho incapsulato le funzinoalità in un paio di classi, per facilitarne l&#8217;utilizzo.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://yuml.me/diagram/scruffy/class/[Curl Parallelizer|-curls: Curl|+addCurl( Curl );+execute()]+-&gt;[Curl].jpg" alt="" width="365" height="101" style="background-color: white;" /></p>
<p style="text-align: left;">Come sempre, consigli e commenti sono sempre ben accetti!</p>
]]></content:encoded>
			<wfw:commentRss>http://petr.illodavi.de/2010/07/tinoleggio-partners/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La potenza degli iteratori in PHP</title>
		<link>http://petr.illodavi.de/2010/07/la-potenza-degli-iteratori-in-php/</link>
		<comments>http://petr.illodavi.de/2010/07/la-potenza-degli-iteratori-in-php/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 05:18:05 +0000</pubDate>
		<dc:creator>Davide</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[design pattern]]></category>
		<category><![CDATA[iterator]]></category>
		<category><![CDATA[iteratori]]></category>
		<category><![CDATA[spl]]></category>

		<guid isPermaLink="false">http://petr.illodavi.de/?p=190</guid>
		<description><![CDATA[Il titolo è forse un po&#8217; troppo ad effetto, però se siete arrivati a leggere fin qui è proprio perchè incuriositi dalla roboanza. Ora siete imprigionati in questo post e userete iteratori vita natural durante.
Ma cosa sono gli iteratori? Sono l&#8217;implementazione di un design pattern &#8211; l&#8217;Iterator, appunto &#8211; che ha come scopo quello di [...]]]></description>
			<content:encoded><![CDATA[<p>Il titolo è forse un po&#8217; troppo ad effetto, però se siete arrivati a leggere fin qui è proprio perchè incuriositi dalla roboanza. Ora siete imprigionati in questo post e userete iteratori vita natural durante.</p>
<p>Ma cosa sono gli iteratori? Sono l&#8217;implementazione di un design pattern &#8211; l&#8217;Iterator, appunto &#8211; che ha come scopo quello di risolvere un problema: manipolare collezioni di dati in maniera semplice, utilizzando un&#8217;interfaccia uniforme e comune a tutti gli iteratori.</p>
<p>Vi capitasse di fare un giro sulla documentazione della <a href="http://php.net/manual/en/book.spl.php">Standard PHP Library</a> vi si potrebbe aprire un mondo; per chi ha fretta, invece, ecco una serie di slide con un po&#8217; di applicazioni pratiche. Codice più uniforme, meno ripetizioni, meno errori.</p>
<div style="width:425px" id="__ss_15332"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/slidesharechaos/iterators-in-php" title="Iterators in PHP">Iterators in PHP</a></strong><object id="__sse15332" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=iterators-in-php-1572&#038;rel=0&#038;stripped_title=iterators-in-php" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse15332" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=iterators-in-php-1572&#038;rel=0&#038;stripped_title=iterators-in-php" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div>
]]></content:encoded>
			<wfw:commentRss>http://petr.illodavi.de/2010/07/la-potenza-degli-iteratori-in-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Certificazione, mission accomplished</title>
		<link>http://petr.illodavi.de/2010/05/certificazione-mission-accomplished/</link>
		<comments>http://petr.illodavi.de/2010/05/certificazione-mission-accomplished/#comments</comments>
		<pubDate>Thu, 06 May 2010 18:35:56 +0000</pubDate>
		<dc:creator>Davide</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[php certification]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://petr.illodavi.de/?p=184</guid>
		<description><![CDATA[Non siete stati abbastanza veloci nel rispondere al post precedente, così ho fatto (stranamente) di testa mia e, dopo ben mezz&#8217;ora di studio e inenarrabili lotte per trovare parcheggio vicino alla sede d&#8217;esame,  da stamane sono un (orgoglioso?) possessore di una Zend PHP 5 Certification, uno dei 60 in Italia (280 in UK, 400 in [...]]]></description>
			<content:encoded><![CDATA[<p>Non siete stati abbastanza veloci nel rispondere al <a href="http://petr.illodavi.de/2010/05/php-zend-certification-prenderla-o-no/">post precedente</a>, così ho fatto (stranamente) di testa mia e, dopo ben mezz&#8217;ora di studio e inenarrabili lotte per trovare parcheggio vicino alla sede d&#8217;esame,  da stamane sono un (orgoglioso?) possessore di una<a href="http://www.zend.com/services/certification/php-5-certification/"> Zend PHP 5 Certification</a>, uno dei 60 in Italia (280 in UK, 400 in Germania).</p>
<p>Ah, fosse stato così anche all&#8217;università!</p>
]]></content:encoded>
			<wfw:commentRss>http://petr.illodavi.de/2010/05/certificazione-mission-accomplished/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>PHP Zend Certification, prenderla o no?</title>
		<link>http://petr.illodavi.de/2010/05/php-zend-certification-prenderla-o-no/</link>
		<comments>http://petr.illodavi.de/2010/05/php-zend-certification-prenderla-o-no/#comments</comments>
		<pubDate>Mon, 03 May 2010 19:51:57 +0000</pubDate>
		<dc:creator>Davide</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[php certification]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://petr.illodavi.de/?p=182</guid>
		<description><![CDATA[Sono sempre stato scettico sulla certificazione PHP proposta dalla Zend: a volte basta davvero una chiacchierata, o un occhio ai lavori svolti, per testare l&#8217;effettiva competenza di una persona. Inoltre, il certificato certifica (appunto) quanto uno sviluppatore sa di PHP e delle problematiche che ruotano intorno a lui, ma non prende in considerazione logiche di [...]]]></description>
			<content:encoded><![CDATA[<p>Sono sempre stato scettico sulla certificazione PHP proposta dalla Zend: a volte basta davvero una chiacchierata, o un occhio ai lavori svolti, per testare l&#8217;effettiva competenza di una persona. Inoltre, il certificato certifica (appunto) quanto uno sviluppatore sa di PHP e delle problematiche che ruotano intorno a lui, ma non prende in considerazione logiche di programmazione e best practices.</p>
<p>Sto però iniziando ad avere qualche dubbio.</p>
<p>Poco tempo fa ho trovato un&#8217;offerta di lavoro della Nintendo in cui si specificava che la certificazione sarebbe stata titolo gradito; senza contare che in qualità di web developer ho sviluppato i miei progetti più grossi perchè girassero su intranet, e che quindi non ho un portfolio da portare in dote ad un eventuale colloquio di lavoro.</p>
<p>Oggi ho provato il test di certificazione online, acquistabile sul sito Zend: passato senza troppi patemi, ma l&#8217;impressione è che chi non ha una vasta esperienza con PHP possa avere difficoltà. E che quindi la certificazione possa essere una discriminante tra chi usa PHP come linguaggio tutto fare e chi lo usa per applicazioni complesse.</p>
<p>Insomma, che dite: mi iscrivo ad una sessione di esame?</p>
]]></content:encoded>
			<wfw:commentRss>http://petr.illodavi.de/2010/05/php-zend-certification-prenderla-o-no/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Netbeans, IDE per PHP</title>
		<link>http://petr.illodavi.de/2009/12/netbeans-ide-per-php/</link>
		<comments>http://petr.illodavi.de/2009/12/netbeans-ide-per-php/#comments</comments>
		<pubDate>Sat, 12 Dec 2009 17:43:40 +0000</pubDate>
		<dc:creator>Davide</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[gedit]]></category>
		<category><![CDATA[homesite]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[kate]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[phpunit]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[xdebug]]></category>

		<guid isPermaLink="false">http://petr.illodavi.de/?p=78</guid>
		<description><![CDATA[Si dice che l&#8217;IDE sia estensione stessa dello sviluppatore: se ne trova uno che abbia le funzionalità che ci servono e si impara ad usarlo in maniera veloce e produttiva.
Nella notte dei tempi usavo Homesite di Adobe, buono per creare pagine HTML tempestate di codice PHP (e viceversa) ma davvero poco per lo sviluppo serio [...]]]></description>
			<content:encoded><![CDATA[<p>Si dice che l&#8217;IDE sia estensione stessa dello sviluppatore: se ne trova uno che abbia le funzionalità che ci servono e si impara ad usarlo in maniera veloce e produttiva.</p>
<p>Nella notte dei tempi usavo <a href="http://www.adobe.com/products/homesite/">Homesite</a> di Adobe, buono per creare pagine HTML tempestate di codice PHP (e viceversa) ma davvero poco per lo sviluppo serio (infatti l&#8217;hanno dismesso). Poi c&#8217;è stato <a href="http://www.eclipse.org/pdt/">Eclipse PDT</a>, completo ma davvero troppo pesante e dal crash facile su Ubuntu. Mi sono quindi buttato su cose più leggere: Kate e GEdit (con le <a href="http://grigio.org/textmate_gedit_few_steps">modifiche trendy &amp; cool</a> per farlo assomigliare a TextMate).</p>
<p>Infine, eccoci qua: <a href="http://netbeans.org/features/php/">Netbeans</a>. Non l&#8217;avevo mai considerato perché non pensavo avesse un&#8217;estensione per PHP, e invece non solo ce l&#8217;ha ma, con sorpresa, gestisce tutto quello che mi può servire: debugging, unit testing (con PHPUnit), integrazione con Symfony. E quelle funzionalità base, come l&#8217;auto completamento del codice e la navigazione dei sorgenti, sviluppate in maniera intuitiva e che non richiedono troppi smanettamenti nella configurazione.</p>
]]></content:encoded>
			<wfw:commentRss>http://petr.illodavi.de/2009/12/netbeans-ide-per-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>phpDay 2009</title>
		<link>http://petr.illodavi.de/2009/05/phpday-2009/</link>
		<comments>http://petr.illodavi.de/2009/05/phpday-2009/#comments</comments>
		<pubDate>Sun, 17 May 2009 12:34:36 +0000</pubDate>
		<dc:creator>Davide</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[conferenze]]></category>
		<category><![CDATA[design pattern]]></category>
		<category><![CDATA[grusp]]></category>
		<category><![CDATA[phpday]]></category>
		<category><![CDATA[phpday2009]]></category>
		<category><![CDATA[programmazion]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[test driven development]]></category>
		<category><![CDATA[wordcamp]]></category>

		<guid isPermaLink="false">http://petr.illodavi.de/?p=69</guid>
		<description><![CDATA[Vi ricordate il post in cui affermavo di andare al Wordcamp? Beh &#8211; scordatelo, non ci andrò più, visto che sarò in Sardegna per una sessione di lavoro! (e no, non è un villaggio turistico)
In compenso, durante il weekend appena trascorso, ho avuto il piacere di partecipare al phpDay 2009, evento organizzato dal GrUSP, la [...]]]></description>
			<content:encoded><![CDATA[<p>Vi ricordate il <a href="http://petr.illodavi.de/2009/03/mi-sono-iscritto-al-wordcamp-2009/">post in cui affermavo di andare al Wordcamp</a>? Beh &#8211; scordatelo, non ci andrò più, visto che sarò in Sardegna per una sessione di lavoro! (e no, non è un villaggio turistico)</p>
<p>In compenso, durante il weekend appena trascorso, ho avuto il piacere di partecipare al <a href="http://www.phpday.it/site/">phpDay 2009</a>, evento organizzato dal <a href="http://www.grusp.it/">GrUSP</a>, la community italiana su PHP appunto.</p>
<p>I talk, tranne qualche &#8211; soporifero &#8211; caso, sono stati interessanti; evito di tediarvi con i verbali, ecco comunque le keyword che maggiormente mi sono rimaste impresse, o perchè ho avuto il riscontro della loro validità, o perchè sicuramente avrò voglia di approfondire:</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Cloud_computing">Cloud computing</a></li>
<li><a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">REST</a></li>
<li><a href="http://en.wikipedia.org/wiki/Test-driven_development">Test Driven Development</a></li>
<li><a href="http://en.wikipedia.org/wiki/Design_pattern_(computer_science)">Design Patterns</a></li>
</ul>
<p>Salta niente all&#8217;occhio? A me sì: nessuna di queste keyword è strettamente legata a PHP <img src='http://petr.illodavi.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://petr.illodavi.de/2009/05/phpday-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debugging con PHP e XDebug</title>
		<link>http://petr.illodavi.de/2009/01/debugging-con-php-e-xdebug/</link>
		<comments>http://petr.illodavi.de/2009/01/debugging-con-php-e-xdebug/#comments</comments>
		<pubDate>Tue, 06 Jan 2009 15:34:00 +0000</pubDate>
		<dc:creator>Davide</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[cachegrind]]></category>
		<category><![CDATA[debugger]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[profiler]]></category>
		<category><![CDATA[vim]]></category>
		<category><![CDATA[xdebug]]></category>

		<guid isPermaLink="false">http://petr.illodavi.de/?p=47</guid>
		<description><![CDATA[Diciamolo: a (quasi) tutti piace PHP per la propria facilità d&#8217;uso. Semplice da installare e configurare, altrettanto da programmare. Ma quando il gioco si fa duro, ecco che si sente la mancanza di quegli strumenti che rendono un linguaggio di programmazione solido. Nello specifico, di un debugger.
Ok lo ammetto, per anni anche io mi sono [...]]]></description>
			<content:encoded><![CDATA[<p>Diciamolo: a (quasi) tutti piace PHP per la propria facilità d&#8217;uso. Semplice da installare e configurare, altrettanto da programmare. Ma quando il gioco si fa duro, ecco che si sente la mancanza di quegli strumenti che rendono un linguaggio di programmazione solido. Nello specifico, di un debugger.</p>
<p>Ok lo ammetto, per anni anche io mi sono districato tra <code>echo</code> e <code>print_r</code> inseriti nelle pagine per andare alla ricerca degli errori. Naturalmente la musica è cambiata non appena ho perso quell&#8217;oretta necessaria ad installare e configurare un debugger PHP. Vediamo come.</p>
<p>Per prima cosa, installiamo Xdebug.<br />
Xdebug è un modulo PHP, probabilmente già disponibile attraverso il vostro pacchettizzatore di fiducia sotto Linux. Altrimenti, sorgente compilabile o modulo per Windows sono disponibili sul <a href="http://xdebug.org/">sito ufficiale</a>.</p>
<p>Il modulo va copiato nella extension_dir di PHP (verificarne la locazione nel php.ini).</p>
<p>Sempre nel php.ini, vanno aggiunti alcuni parametri di configurazione. Nel mio caso, ne sono stati necessari solo alcuni, ma controllate la documentazione in caso fosse necessario specificarne di diversi:</p>
<pre lang="ini">[XDebug]
zend_extension = "path/to/xdebug.so"
xdebug.remote_enable = On
xdebug.remote_log = "/path/to/logs/xdebug.log"
</pre>
<p>Riavviate quindi Apache e verificate la corretta installazione del modulo tramite il classico <code>phpinfo()</code>.</p>
<p>Ora che disponete del motore, passiamo all&#8217;abitacolo: il client. <a href="http://www.xdebug.org/docs/remote">La lista</a> è lunga, io ho fatto in tempo a testarne positivamente un paio, ovvero VIM e Eclipse. Eclipse in particolare, nella forma del <a href="http://www.eclipse.org/pdt/">PHP Development Tools</a>, permette un debugging completo, con breakpoints, watch e tutto il necessaire. La configurazione sotto Eclipse dovrebbe essere piuttosto semplice: basta settare XDebug come debugger principale, al posto dello Zend, gli altri parametri dovrebbero essere già a posto.</p>
<p>Un&#8217;altra funzionalità della quale non riesco più a fare a meno è quella del profiling. Tramite questo processo siamo in grado di individuare quali parti del nostro programma impiegano la maggior percentuale del tempo totale di esecuzione, permettendoci di risolvere eventuali colli di bottiglia.</p>
<p>Per abilitare il profiling, è necessario tornare sul php.ini e aggiungere queste righe:</p>
<pre lang="ini">xdebug.profiler_enable = On
xdebug.profiler_output_dir = "/path/to/profiles/"
</pre>
<p>Il profiler non necessita di un client; è sufficiente aggiungere il parametro <code>XDEBUG_PROFILE=1</code>  alla nostra pagina web per avviarlo (es. http://localhost/test.php?XDEBUG_PROFILE=1).</p>
<p>In quella che avete settato come directory di <code>xdebug.profiler_output_dir</code>, verranno creati dei file del formato cachegrind.out.xxxx; apriteli con kcachegrind (Linux) o <a href="http://sourceforge.net/projects/wincachegrind/">wincachegrind</a> (Windows) per vedere come si è comportato il vostro script.</p>
]]></content:encoded>
			<wfw:commentRss>http://petr.illodavi.de/2009/01/debugging-con-php-e-xdebug/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Javascript parser per PHP</title>
		<link>http://petr.illodavi.de/2008/10/javascript-parser-per-php/</link>
		<comments>http://petr.illodavi.de/2008/10/javascript-parser-per-php/#comments</comments>
		<pubDate>Wed, 15 Oct 2008 09:03:26 +0000</pubDate>
		<dc:creator>Davide</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[javascript parser]]></category>
		<category><![CDATA[spidermonkey]]></category>

		<guid isPermaLink="false">http://petr.illodavi.de/?p=46</guid>
		<description><![CDATA[Recentemente mi sono messo a cercare degli interpreti Javascript scritti in PHP.
Le ultime versioni dei browser eseguono senza problemi anche gli applicativi Javascript piu&#8217; avanzati (chi si ricorda gli online desktop di un paio di anni fa?), senza contare che i vari framework JS sono sempre piu&#8217; ottimizzati e veloci.
Tuttavia, volevo sondare quanto fosse possibile [...]]]></description>
			<content:encoded><![CDATA[<p>Recentemente mi sono messo a cercare degli interpreti Javascript scritti in PHP.</p>
<p>Le ultime versioni dei browser eseguono senza problemi anche gli applicativi Javascript piu&#8217; avanzati (chi si ricorda gli online desktop di un paio di anni fa?), senza contare che i vari framework JS sono sempre piu&#8217; ottimizzati e veloci.</p>
<p>Tuttavia, volevo sondare quanto fosse possibile delegare parte della computazione Javascript, lasciandola al PHP e quindi al server.</p>
<p>Beh, i risultati sono sconsolanti; i parser che ho visionato sono lenti, elementari e ancora in fase beta.<br />
Comunque sia, a scopo informativo, eccoli qui:</p>
<p><a href="http://www.aurore.net/projects/php-js/" target="_self">PHP-JS</a> (utilizza il Mozilla SpiderMonkey)</p>
<p><a href="http://j4p5.sourceforge.net/" target="_self">J4P5</a></p>
]]></content:encoded>
			<wfw:commentRss>http://petr.illodavi.de/2008/10/javascript-parser-per-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
