<?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>PHPBlog.it &#187; php</title>
	<atom:link href="http://phpblog.it/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://phpblog.it</link>
	<description>Solo un altro blog targato WordPress</description>
	<lastBuildDate>Mon, 31 May 2010 20:12:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>phpDay 2010 &#8211; seconda giornata</title>
		<link>http://phpblog.it/2010/05/15/phpday-2010-secondo-giorno/</link>
		<comments>http://phpblog.it/2010/05/15/phpday-2010-secondo-giorno/#comments</comments>
		<pubDate>Sat, 15 May 2010 11:56:39 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[In evidenza]]></category>
		<category><![CDATA[corropoli]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpday2010]]></category>

		<guid isPermaLink="false">http://phpblog.it/?p=326</guid>
		<description><![CDATA[Passata la prima giornata dedicata ai workshop eccoci giunti al secondo giorno del phpDay 2010 a Corropoli (Te) pronti a seguire un gran numero di talk interessanti.]]></description>
			<content:encoded><![CDATA[<p>Passata la prima giornata dedicata ai workshop eccoci giunti al  secondo giorno del phpDay 2010 a Corropoli (Te) pronti a seguire un gran  numero di talk interessanti. A volte è stato difficile fare delle  scelte, ma non potendo seguire tutto qualcosa va sacrificato (pensavo di  proporre per il prossimo anno un serialize dei talk per evitare  collisioni, 16 ore di fila, che dite?).</p>
<p><span id="more-326"></span></p>
<p><img title="Continua..." src="http://phpblog.it/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" alt="" /></p>
<h2>YQL &amp; PHP</h2>
<p>Lasciatemi esordire così: che figata pazzesca! Se non avete mai  sentito parlare di <a title="YQL" href="http://developer.yahoo.com/yql/" target="_blank">YQL</a> vi  consiglio caldamente di dargli un&#8217;occhiata, anche due. Giocate un po&#8217;  con la console e restate impressionati dalle <strong>745</strong> &#8220;tables&#8221; che  vengono messe a disposizione gratuitamente. YQL permette di consumare o,  volendo, esporre dati utilizzando una sintassi simile all&#8217;SQL senza  doversi preoccupare di capire come le api di un dato servizio  funzionino. Un unico modo per parlare con tutti i maggiori servizi web e  creare così altre applicazioni/mashup o semplicemente utilizzare dei  dati ignorando completamente ciò che realmente c&#8217;è sotto. Va provato per  capirne la portata, ho visto gente perdere quasi il senno dopo il talk  <img src='http://phpblog.it/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Dependency Injection in PHP</h2>
<p>Che il concetto di DI sia di una facilità e chiarezza disarmante era  ormai chiaro. Molti sicuramente applicano giornalmente la DI anche senza  saperlo, farlo con consapevolezza forse sarebbe ancora meglio. Non così  semplice il concetto e l&#8217;applicazione dei DIC (dependency injection  containers), nonostante Fabien habbia mostrato di essere capace di farlo  con 40 righe di codice. Ma se la DI è una buona pratica da seguire i  DIC vanno presi un po&#8217; più con le molle e non si deve per forza cercare  di applicarli ovunque visto che ci sono situazioni in cui è giusto  vengano utilizzati mentre in altre occasioni sarebbe sbagliato.</p>
<h2>Testare l&#8217;ignoto</h2>
<p>Michele Orselli e Filippo De Santis, del team di Ideato, parlano di  strumenti dedicati al testing funzionale ed unitaro per realizzare un  ambiente di  test per le proprie necessità. Nello specifico l&#8217;esperienza  da cui hanno ricavato le informazioni è scaturita dalla necessità di  testare eZPublish ricorrendo all&#8217;utilizzo di strumenti come Selenium IDE  / RC e PHPUnit.</p>
<p>Come sempre conoscere esperienze reali di utilizzo di tecniche di  testing, in ambienti eterogenei, è molto interessante. Confrontarsi  porta a migliorarsi. Un problema sentito particolarmente, e che più di  qualcuno ha evidenziato, è stato forse quello relativo al livello di  complessità degli esempi affrontati: introduzione o percorso avanzato?  Qualcuno già skillato sull&#8217;argomento spera sempre di spingersi oltre ai  limiti attuali mentre chi è agli inizi o addirittura non ha mai  affrontato l&#8217;argomento si augura che qualcuno lo prenda per mano e lo  conduca in questo fantastico mondo.</p>
<p>Che sia il caso di trovare nuove forme di analisi per stabilire il  livello di un talk coinvolgendo a priori i possibili spettatori? Credo  ne scriverò in futuro.</p>
<h2>Caching in PHP: get better perfomance for your web applications</h2>
<p>Enrico Zimuel di Zend presenta un interessante carellata sugli attuali strumenti di caching presenti nel panorama PHP attraverso uno studio sulle performance che ha condotto personalmente negli ultimi mesi e che dovrebbe vedere la luce tra non molto. Visto l&#8217;alto numero di interventi da parte dei presenti non si è riusciti ad analizzare tutti i dati ricavati dallo studio, tuttavia ci si è accorti che APC, XCache e Zend Cache primeggiano su tutti quando si ha a che fare con un&#8217;infrastruttura a singola macchina; da valutare separatamente il caso di cluster in cui memcached dovrebbe ripagare ciò che perde in prestazioni grazie al fatto di poter gestire in modo centralizzato i dati per i vari nodi del cluster.</p>
<p>A brevissimo mi troverò ad utilizzare uno di questi prodotti per risolvere un po&#8217; il problema inverso: contatori ad alta concorrenza. Quindi qualcosa che avrebbe bisogno di fare qualche migliaio di scritture al minuto sul db che chiaramente non è uno scenario auspicabile. Scrivere in memoria e ad intervalli recuperare il dato per aggiornare il database è la soluzione ideale. Vi farò sapere.</p>
]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2010/05/15/phpday-2010-secondo-giorno/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IPC Karlsruhe: seconda giornata</title>
		<link>http://phpblog.it/2009/11/25/ipc-karlsruhe-seconda-giornata/</link>
		<comments>http://phpblog.it/2009/11/25/ipc-karlsruhe-seconda-giornata/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 21:09:36 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[eventi]]></category>
		<category><![CDATA[international php conference]]></category>
		<category><![CDATA[ipc]]></category>
		<category><![CDATA[karlsruhe]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://phpblog.it/?p=291</guid>
		<description><![CDATA[Eccoci qua a fare un breve riassunto della seconda giornata dell’International PHP Conference di Karlsruhe. Dopo i workshop e la giornata di lunedì si continua con i talk classici. Sempre buon numero di partecipanti e incontri interessanti da fare.]]></description>
			<content:encoded><![CDATA[<p>Eccoci qua a fare un breve riassunto della seconda giornata dell’International PHP Conference di Karlsruhe. Dopo i <a title="IPC Karlsruhe 2009 workshop" href="http://phpblog.it/2009/11/16/ipc-karlsruhe-workshop-day/" target="_blank">workshop</a> e la <a title="IPC Karlsruhe 2009 lunedì" href="http://phpblog.it/2009/11/17/ipc-karlsruhe-prima-giornata/">giornata di lunedì</a> si continua con i talk classici. Sempre buon numero di partecipanti e incontri interessanti da fare.</p>
<p><strong>Building configurable applications for the web</strong> &#8211; Tom Melendez</p>
<p>Primo talk della giornata dedicato ad un argomento che spesso viene trascurato: configurabilità delle applicazioni. Configurabilità per renderle indipendenti dall&#8217;infrastruttura su cui vengono eseguite e per potersi adattare in modo semplice a situazioni poco piacevoli. Se per il primo argomento può venire subito in mente qualche esempio di dati inseriti in modo poco ortodosso (hardcoded), il secondo può sfuggire. Si tratta di poter trarre vantaggio da una serie di accorgimenti per una degradazione pianificata di un servizio: l&#8217;esempio portato è stato quello di Yahoo! News nelle cui pagine sono state identificate diverse aree (articolo, letture suggerite, banner&#8230;) assegnando loro dei valori in base all&#8217;importanza che assumono per il business dell&#8217;applicazione. All&#8217;occorrenza (picchi di traffico, eventi non pianificati) si dovrebbe poter escludere tale porzione dalla pagina in modo da ridurre l&#8217;utilizzo delle risorse necessarie alla pubblicazione della pagina stessa. Quante volte avete &#8220;ridotto&#8221; la home page di un sito a causa dell&#8217;alto traffico? A me è successo, poterlo fare in modo semplice e veloce può rendere le cose molto più semplici&#8230;</p>
<p><strong>Indexing the MySQL Index: Guide to Performance Enhancement</strong> &#8211; Sonali Minocha, Vineet Agrawal</p>
<p>Quando si lavora su piccoli progetti o in piccole aziende non è sempre possibile avere a disposizione un DBA che si occupa di tutte le problematiche relative ai database utilizzati dalle applicazioni su cui si lavora. Molte volte quindi è lo sviluppatore ad avere molto a che fare con il database, anche quando si accusano problemi di performance della base di dati su cui si fa affidamento. Il talk sull&#8217;utilizzo corretto degli index è stato molto interessante per me visto che mi ha introdotto ad alcune problematiche che personalmente ignoravo andando più in profondità e presentando strumenti di controllo che se non altro possono darci la possibilità di analizzare e capire quali sono i colli di bottiglia e come risolvere i problemi che ne derivano.</p>
<p><strong>The future of web technologies</strong> &#8211; Patrick Lauke</p>
<p>Keynote in sala plenaria a cura di Patrick Lauke (Opera) che parla di HTML5 presentando un po&#8217; di novità che già da tempo si vedono nei vari articoli presenti in rete. HTML5 è ciò che aspettiamo tutti noi sviluppatori, per me bastano già le novità relative ai video e per voi? Ciò che più ci si chiede è quanto tempo ci vorrà prima che tutti i player là fuori diano supporto ad HTML5?</p>
<p>Panel su <strong>Cloud computing</strong></p>
<p>A causa di o grazie alla cancellazione di un talk per cause di forza maggiore è stato organizzato un panel sul cloud computing, argomento ben presente a questa edizione dell&#8217;IPC. E&#8217; stato possibile sentire qualche esperienza diretta dei presenti relativamente all&#8217;utilizzo ed alle aspettative riposte nel cloud computing, tuttavia come obiettato da qualcuno pareva più una marketta che qualcosa di tecnico visto che i presenti erano per la maggior parte sviluppatori interessati a tecnicismi piuttosto che a nomi&#8230;</p>
<p><strong>Validating XML &#8211; Avoiding the pain</strong> &#8211; Arne Blankerts, Tobias Schlitt</p>
<p>Qualche prova live durante il talk per l&#8217;utilizzo di DTD, XML Schema e RelaxNG per la validazione degli XML non solo parlando di risultati. Qualcosa che non incontro spesso e che può tornare utile nell&#8217;ottica di distribuzione dati tramite XML. Qualche problema con l&#8217;IDE che non ha permesso di vedere tutti gli esempi, peccato.</p>
<p><strong>Symfony Components: What&#8217;s in for you?</strong> &#8211; Fabien Potencier</p>
<p>Interessante panoramica sui components di symfony da parte di Fabien Potencier, ogni esempio supportato da del codice esemplificativo. Stranamente poche persone a seguire il talk ma nello stesso tempo negli altri canali erano attivi relatori molto interessanti specialmente in lingua tedesca&#8230;</p>
<p>Si chiude la giornata al centro congressi con un buffet / aperitivo con &#8220;free beer&#8221; e possibilità di networking. Vista la scarsa partecipazione abbiamo poi deciso di uscire a cena con Fabien Potencier come ospite d&#8217;onore: due italiani (io e Francesco Fullone), un norvegese (Morten Amundsen) e un francese (Fabien Potencier)&#8230;no non è una barzelletta!</p>
]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2009/11/25/ipc-karlsruhe-seconda-giornata/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IPC Karlsruhe: prima giornata</title>
		<link>http://phpblog.it/2009/11/17/ipc-karlsruhe-prima-giornata/</link>
		<comments>http://phpblog.it/2009/11/17/ipc-karlsruhe-prima-giornata/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 00:10:19 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[eventi]]></category>
		<category><![CDATA[international php conference]]></category>
		<category><![CDATA[ipc]]></category>
		<category><![CDATA[karlsruhe]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://phpblog.it/?p=276</guid>
		<description><![CDATA[Eccoci qua a fare un breve riassunto della prima giornata dell'International PHP Conference di Karlsruhe. Dopo i workshop di ieri oggi si è iniziato con i talk classici, si è iniziato a fare sul serio anche con il numero di partecipanti che ha dato mostra di sè durante il primo keynote dell'evento.]]></description>
			<content:encoded><![CDATA[<p>Eccoci qua a fare un breve riassunto della prima giornata dell&#8217;International PHP Conference di Karlsruhe. Dopo i workshop di ieri oggi si è iniziato con i talk classici, si è iniziato a fare sul serio anche con il numero di partecipanti che ha dato mostra di sè durante il primo keynote dell&#8217;evento.</p>
<p><strong>Web Application Architecture</strong> &#8211; Stefan Priebsch<br />
Si apre subito a tutta velocità con il talk sull&#8217;architettura delle applicazioni web. Ci si vuole concentrare sull&#8217;importanta che tali decisioni hanno nella fase di progettazione di un&#8217;applicazione e sull&#8217;impatto che hanno sul prodotto stesso. Il paragone è con l&#8217;architettura strutturale di chiese, campanili, ponti&#8230;insomma entità di un certo calibro. La differenza sostanziale è che nel software è piuttosto &#8220;semplice&#8221; sostituire intere porzioni di architettura (avendo scritto tutti i test del caso) senza far crollare tutto come potrebbe capitare sostituento le fondamenta della<br />
torre di Pisa&#8230;</p>
<p><strong>NetBeans IDE &#8211; The choice for PHP development</strong> &#8211; Petr Pisl<br />
Novità relative alla versione 6.8 di NetBeans che da qualche tempo utilizzo in versione beta del nightly builds. Il rilascio è fissato per il 10 dicembre. Tra tutte le novità il supporto per symfony è ciò che principalmente mi interessa visto che sono passato da Zend Studio For Eclipse (utilizzato brevemente) a NetBeans principalmente per il framework francese. Lanciare i comandi dell&#8217;ide invece che dalla shell, interrogare direttamente i database senza utilizzare un altro client, avere pieno supporto a PHP5.3&#8230;insomma tutto ciò di cui si può avere bisogno ad un prezzo contenuto in termini di ram e cpu. Mi devo informare se è possibile ottenere l&#8217;integrazione per il code coverage con Lime come già presente per PHPUnit.</p>
<p><strong>PHP in the Cloud</strong> &#8211; Ralph Schindler<br />
Keynote a cura di Schindler (Zend Technologies) che argomenta su alcuni temi che di sicuro riguarderanno il futuro dell&#8217;ecosistema che gravita attorno a PHP: NoSQL, Cloud&#8230;alcuni argomenti prenderanno piede prima di altri, che magari non riusciranno a fare breccia tra gli sviluppatori e le aziende. Personalmente vedo il cloud già come il presente, per il NoSQL credo ci si debba perdere qualche tempo e toccare con mano&#8230;</p>
<p><strong>Building real-time Applications with XMPP</strong> &#8211; Travis Swicegood<br />
Questo forse il talk da cui ci si aspettava di più per sporcarsi le mani con un po&#8217; di codice senza restare tanto sul teorico. La presentazione è sembrata proprio un&#8217;introduzione all&#8217;argomento, cosa che ad una conferenza del genere si dovrebbe dare per scontata. Non tanto perchè tutti devono sapere tutto ma perchè in grado di documentarsi da soli sulle basi&#8230;</p>
<p><strong>Towards the Cloud: Event-driven Architectures in PHP</strong> &#8211; Benjamin Eberlei<br />
Disaccoppiare i componenti delle applicazioni per riuscire a scalare meglio ed avere più flessibilità nell&#8217;utilizzo di nuove risorse come il cloud. Per fare questo viene presentata una tecnica di progettazione architetturale che si basa sugli eventi per scatenare le azioni da eseguire (in symfony event dispatcher vi dice qualcosa vero?) piuttosto che ricorrere a soluzioni come i cron che sono single threaded, possono ritardare fino ad un minuto l&#8217;esecuzione di qualcosa (ricordo che con i cron il minuti è la misura più piccola), in alcuni casi piuttosto difficile in termini di scalabilità. Spunto interessante per un progetto su cui sto lavorando proprio in questo periodo nel quale effettivamente qualche evento potrebbe proprio rimpiazzare dei cron jobs&#8230;da valutare attentamente.</p>
<p>Nell&#8217;insieme una giornata positiva. A domani per la seconda puntata!</p>
]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2009/11/17/ipc-karlsruhe-prima-giornata/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IPC Karlsruhe: workshop day</title>
		<link>http://phpblog.it/2009/11/16/ipc-karlsruhe-workshop-day/</link>
		<comments>http://phpblog.it/2009/11/16/ipc-karlsruhe-workshop-day/#comments</comments>
		<pubDate>Sun, 15 Nov 2009 23:31:42 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[eventi]]></category>
		<category><![CDATA[international php conference]]></category>
		<category><![CDATA[ipc]]></category>
		<category><![CDATA[karlsruhe]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[workshop]]></category>

		<guid isPermaLink="false">http://phpblog.it/?p=272</guid>
		<description><![CDATA[Giornata di workshop all'International PHP Conference di Karlsruhe. Non ci sono molti presenti ma è domenica ed i workshop, come mi è stato fatto notare, sono per pochi intimi. Ho seguito due workshop molto interessanti riguardanti MapReduce e Scrum.]]></description>
			<content:encoded><![CDATA[<p>Giornata di workshop all&#8217;International PHP Conference di Karlsruhe. Non ci sono molti presenti ma è domenica ed i workshop, come mi è stato fatto notare, sono per pochi intimi. Infatti non ricordo di aver trovato sul sito la possibilità di prenotare anche la giornata di domenica per il proprio pass. Ma veniamo a ciò che vi interessa veramente, ciò che ho potuto seguire: <strong>An introduction to MapReduce</strong> e<strong> Scrum &#8211; Just do it!.</strong></p>
<p><strong>An introduction to MapReduce</strong> &#8211; David Zülke</p>
<p>Eravamo decisamente in pochi, una decina occhio e croce. Argomento che inizialmente pare lontano: <strong>gestire grandi quantità di dati per ricavare informazioni aggregate</strong>. E quando si parla di grandi quantità si portano esempi come Facebook, Yahoo! et simili con ordini di grandezza di PB.</p>
<p>Non è il mio caso potreste pensare, un po&#8217; come ho fatto io inizialmente, salvo ricredermi quando ho messo a fuoco l&#8217;argomento sotto un altro punto di vista come per esempio l&#8217;analisi dei log del webserver per un grosso sito.</p>
<p>Personalmente ho avuto modo di mettere in pratica qualcosa che ignoravo: eseguire delle operazioni in due fasi distinte di <strong>mapping</strong> e poi di <strong>reduce</strong> per ottenere dati specifici partendo da una grande quantità di dati che presi in maniera grezza non danno un grosso valore.</p>
<p>Per un grosso cliente m&#8217;è capitato proprio di dover fare in modo che ogni ora i log creati dal webserver venissero utilizzati per ricavare il numero di impression generate da ogni banner presente sulle pagine del suo sito. Elaborare all&#8217;incirca 200MB di log ogni ora non è come lavorare con ordini dei PB ma inizia ad essere un&#8217;attività piuttosto time consuming quando da qualche decina o centinaia di migliaia di righe vogliamo ottenere una manciata di numeri.</p>
<p>Gli esempi presentati e le idee proposte forse mi permetteranno di migliorare questo compito: voto 8.</p>
<p><strong>Scrum &#8211; Just do it! &#8211; </strong>Sebastian Schürmann, Dominik Jungowski</p>
<p>Agile non è solo XP, esistono vari filoni che mettono in pratica il manifesto agile e avere una visione più completa anche sulle altre metodologie non fa di certo male. Il workshop mi ricorda molto quello ormai collaudatissimo che Jacopo Romei e Francesco Trucchia propongono con grande successo e che seguo sempre volentieri in Italia. Anche qui è una coppia coach-developer a tenere il talk da quanto mi pare di capire, uno più tecnico e l&#8217;altro più dedito al management dei team ed al coaching.</p>
<p>Interessante il gioco della palla in team per simulare l&#8217;evoluzione delle stime del team stesso e di come in poche iterazioni si riesca a raffinare la decisione finale per rispondere in modo corretto ad una certa project velocity.</p>
<p>Proposta anche qui la partita a carte per il <strong>game planning</strong>, non si parla di XP o Scrum ma di Agile. Le affinità sono molte, per lunghi tratti le cose sono coincidenti, per molti altri le differenze sono poche. L&#8217;idea di fondo è solo una, il manifesto agile, metterlo in pratica correttamente non permette di allontanarsi molto ipotizzando soluzioni &#8220;creative&#8221;. Ecco quindi che nascono le affinità.</p>
<p>Ognuno è poi libero di crearsi il metodo che meglio si adatta ai propri clienti ed al proprio mercato, allargare le vedute è fondamentale: voto 8.</p>
]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2009/11/16/ipc-karlsruhe-workshop-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Framework e template engine: mi dite la vostra?</title>
		<link>http://phpblog.it/2009/10/13/framework-e-template-engine-mi-dite-la-vostra/</link>
		<comments>http://phpblog.it/2009/10/13/framework-e-template-engine-mi-dite-la-vostra/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 09:28:24 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[framework]]></category>
		<category><![CDATA[phpblog]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[template engine]]></category>

		<guid isPermaLink="false">http://phpblog.it/?p=256</guid>
		<description><![CDATA[Template: PHP si, PHP no. Pare essere il tormentone della settimana. L'approccio dei vari framework là fuori è eterogeneo, il più delle volte la decisione è lasciata allo sviluppatore che adatta lo strumento alle proprie abitudini. Che si tratti di integralismo o di convinzioni fondate la discussione è sempre aperta.]]></description>
			<content:encoded><![CDATA[<p>La scorsa settimana Fabien Potencier ha pubblicato <a title="Twig" href="http://www.twig-project.org/" target="_blank"><strong>Twig</strong></a>, un template language per PHP, che entra di fatto a far parte dei prodotti di Sensio Labs. Twig, inizialmente sviluppato da <a title="Armin Ronacher" href="http://lucumr.pocoo.org/" target="_blank">Armin Ronacher</a>, è subito piaciuto a Potencier che ci ha messo del suo per portare il progetto verso quelle che sono le sue idee riguardo a quanto un template engine dovrebbe essere.</p>
<p>Sul <a title="suo blog" href="http://fabien.potencier.org/article/34/templating-engines-in-php">suo blog</a> Potencier ha espresso un po&#8217; di idee sullo stato attuale dell&#8217;arte in termini di template engine paragonando ciò che la rete offre, ha anche pubblicato alcuni test comparativi delle performance dei vari prodotti. Risultato: poco meno di 90 commenti in nemmeno una settimana ed <a title="un post in risposta da parte di Eli White" href="http://eliw.wordpress.com/2009/10/07/in-response-to-fabien-potencier-twig-php-templating/" target="_blank">un post in risposta da parte di Eli White</a> che solleva alcuni dubbi. Il cerchio si chiude con <a title="la risposta di Potencier in un altro post" href="http://fabien.potencier.org/article/35/templating-engines-in-php-follow-up" target="_blank">la risposta di Potencier in un altro post</a>. Consiglio la lettura dei post e di tutti i commenti visto che ci sono degli spunti davvero interessanti su cui non voglio soffermarmi al momento.</p>
<p><strong>Quello di cui vorrei parlare è ad un livello un po&#8217; più alto: template engine si o no? </strong></p>
<p>Personalmente negli ultimi anni ho sviluppato applicazioni con un framework, sviluppato internamente dall&#8217;azienda per cui lavoro, basato su Smarty per la creazione dei template. Da quando ho iniziato ad usare symfony, che ricordo è un MVC, mi sono sempre chiesto se mi mancasse davvero Smarty visto che i template si realizzano direttamente in PHP.</p>
<p>La risposta non la so ancora dare, posso tuttavia esprimere dei pareri sulle due strade che si possono seguire:</p>
<p><strong>PHP</strong></p>
<ul>
<li>creare i template direttamente in PHP evita di aggiungere un ulteriore layer al tutto</li>
<li>non si deve imparare un altro linguaggio (per semplice che sia)</li>
<li>permette più libertà (con attenzione)</li>
</ul>
<p><strong>TEMPLATE ENGINE</strong></p>
<ul>
<li>rende più leggibili i template, specialmente quelli più complessi</li>
<li>rende più accessibili, in termini di manutenzione, i template anche ai non sviluppatori</li>
<li>aiuta ad essere più aderenti al design pattern MVC</li>
</ul>
<p>Quello che più è importante secondo me, che si usi PHP od un template engine, è fare in modo che nella vista (V, di MVC) ci si limiti a presentare i dati e non ad elaborarli. <strong>PHP è uno strumento potente più del necessario per &#8220;mostrare&#8221; dei dati</strong>, va usato nel modo giusto. <strong>Un template engine dal canto suo</strong>, più scarno e povero di funzioni, <strong>potrebbe aiutare in tal senso</strong> a patto che non lo si vada ad estendere con mille plugin sviluppati ad hoc per tutte le occorrenze. A quel punto tanto vale restare con PHP&#8230;</p>
<p>E voi come agite? Quali sono le vostre esperienze in merito?</p>
]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2009/10/13/framework-e-template-engine-mi-dite-la-vostra/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Estatica passa a Symfony: migrazione passo passo</title>
		<link>http://phpblog.it/2009/05/07/estatica-passa-a-symfony-migrazione-passo-passo/</link>
		<comments>http://phpblog.it/2009/05/07/estatica-passa-a-symfony-migrazione-passo-passo/#comments</comments>
		<pubDate>Thu, 07 May 2009 08:00:13 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[dalla rete]]></category>
		<category><![CDATA[estatica]]></category>
		<category><![CDATA[migrazione]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://phpblog.it/2009/05/07/estatica-passa-a-symfony-migrazione-passo-passo/</guid>
		<description><![CDATA[Ricevo questa segnalazione da Fabrizio Pucci e volentieri la pubblico su PHPBlog.it, si tratta della prima puntata di una serie dedicata alla migrazione di Estatica verso Symfony il framework di sviluppo PHP. In questa serie di articoli voglio condividere vari aspetti tecnici delle fasi di migrazione di un grosso sito web come Estatica (enciclopedia di [...]]]></description>
			<content:encoded><![CDATA[<p>Ricevo questa segnalazione da Fabrizio Pucci e volentieri la pubblico su PHPBlog.it, si tratta della prima puntata di una serie dedicata alla <a title="Estatica migra a Symfony" href="http://www.estatica.it/letture.php?azione=articolo&amp;testo=migrazione-di-estatica-al-framework-symfony-parte-1">migrazione di Estatica verso Symfony</a> il framework di sviluppo PHP.</p>
<blockquote><p>In questa serie di articoli voglio condividere vari aspetti tecnici delle fasi di migrazione di un grosso sito web come <a href="http://www.estatica.it/">Estatica</a> (enciclopedia di musica italiana), all&#8217;utilizzo del framework open source PHP Symfony.</p></blockquote>
<p>La serie è potenzialmente molto interessante visto che potrebbe affrontare molti di quei problemi che lo sviluppatore può incontrare durante la migrazione di un&#8217;applicazione già esistente. Buona lettura!</p>
]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2009/05/07/estatica-passa-a-symfony-migrazione-passo-passo/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>10 suggerimenti per migliorare il proprio codice</title>
		<link>http://phpblog.it/2008/11/24/10-suggerimenti-per-migliorare-il-proprio-codice/</link>
		<comments>http://phpblog.it/2008/11/24/10-suggerimenti-per-migliorare-il-proprio-codice/#comments</comments>
		<pubDate>Mon, 24 Nov 2008 06:00:32 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[dalla rete]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[smashingmagazine]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://phpblog.it/2008/11/24/10-suggerimenti-per-migliorare-il-proprio-codice/</guid>
		<description><![CDATA[Smashing Magazine è sempre una fonte interessante di articoli su vari aspetti del mondo informatico ed oggi vi segnalo una lettura che riguarda chiaramente la programmazione in PHP ed è stata scritta da Glen Stansberry. Nell&#8217;articolo vengono proposti 10 suggerimenti per migliorare la propria qualità di programmazione o quantomeno del codice prodotto, alcuni sono davvero [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.smashingmagazine.com/" title="Smashing Magazine"><strong>Smashing Magazine</strong></a> è sempre una fonte interessante di articoli su vari aspetti del mondo informatico ed oggi vi segnalo una lettura che riguarda chiaramente la programmazione in PHP ed è stata scritta da Glen Stansberry. <a href="http://www.smashingmagazine.com/2008/11/18/10-advanced-php-tips-to-improve-your-progamming/" title="10 advanced PHP tips to improve your programming">Nell&#8217;articolo vengono proposti <strong>10 suggerimenti</strong></a><strong> per migliorare la propria qualità di programmazione</strong> o quantomeno del codice prodotto, alcuni sono davvero interessanti.</p>
]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2008/11/24/10-suggerimenti-per-migliorare-il-proprio-codice/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>24hrsCamp</title>
		<link>http://phpblog.it/2008/11/12/24hrscamp/</link>
		<comments>http://phpblog.it/2008/11/12/24hrscamp/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 06:00:09 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[eventi]]></category>
		<category><![CDATA[24hrsCamp]]></category>
		<category><![CDATA[milano]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programmatori]]></category>

		<guid isPermaLink="false">http://phpblog.it/2008/11/12/24hrscamp/</guid>
		<description><![CDATA[Ricevo questa richiesta e pubblico volentieri visto il campo di nostro interesse. Se qualcuno fosse interessato si faccia avanti tramite il sito ufficiale dell&#8217;evento. 24hrsCamp è un evento di 24 ore che mira alla realizzazione concreta di un progetto umanitario. Si terra&#8217; a Milano il sabato 15 e domenica 16 Novembre ed e&#8217; alla ricerca [...]]]></description>
			<content:encoded><![CDATA[<p><em>Ricevo questa richiesta e pubblico volentieri visto il campo di nostro interesse. Se qualcuno fosse interessato si faccia avanti tramite il sito ufficiale dell&#8217;evento. </em></p>
<p><strong>24hrsCamp</strong> è un evento di 24 ore che mira alla realizzazione concreta di un progetto umanitario. Si terra&#8217; a Milano il sabato 15 e domenica 16 Novembre ed e&#8217; alla ricerca di sviluppatori PHP ma non solo! 24hrsCamp, nato dalle frustrazioni, dalle delusioni e dalle speranze infrante della vita lavorativa di tutti i giorni, si propone di realizzare qualcosa.</p>
<p><span id="more-197"></span>Come? Attraverso eventi di 24 ore, in cui chiunque può partecipare e dare il proprio contributo. Ognuno di noi è portatore di idee, conoscenza, metodi e procedure che, per qualche motivo, non riesce a concretizzare. Il nostro obiettivo, ambizioso, è di organizzare eventi dove lasciarsi alle spalle tutto questo! 24 ore per progettare, al termine delle quali si chiude un progetto e lo si consegna alla comunità Internet.</p>
<p>Il nostro obiettivo è quello di creare un nuovo format di evento che superi i normali limiti del puro brainstorming e cerchi di capire quanto sia possibile progettare e fare in un arco di tempo delle 24 ore. Non pensate solo ad un idea per tecnici, in realtà il nostro desiderio sarebbe quello di vedere in atto un esperimento pluridisciplinare.</p>
<p>Maggiori informazioni sul sito ufficiale: <a href="http://24hrscamp.org/?page_id=3">http://24hrscamp.org/?page_id=3</a></p>
]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2008/11/12/24hrscamp/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Come criptare i nostri scripts in PHP &#8211; Zend Guard</title>
		<link>http://phpblog.it/2008/10/15/criptare-i-nostri-scripts-in-php-zend-guard/</link>
		<comments>http://phpblog.it/2008/10/15/criptare-i-nostri-scripts-in-php-zend-guard/#comments</comments>
		<pubDate>Wed, 15 Oct 2008 05:00:13 +0000</pubDate>
		<dc:creator>Davide Martignetti</dc:creator>
				<category><![CDATA[phpblog]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[sicurezza]]></category>
		<category><![CDATA[cifrare]]></category>
		<category><![CDATA[criptare]]></category>
		<category><![CDATA[decode]]></category>
		<category><![CDATA[encode]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[zend]]></category>
		<category><![CDATA[zend guard]]></category>
		<category><![CDATA[zend optimizer]]></category>

		<guid isPermaLink="false">http://phpblog.it/2008/10/15/criptare-i-nostri-scripts-in-php-zend-guard/</guid>
		<description><![CDATA[Questo articolo è un approfondimento di “Offuscare o proteggere il nostro codice PHP &#8211; Introduzione“, analizzeremo le funzionalità, i pregi ed i difetti di Zend Guard al fine di criptare uno script PHP. Zend Guard non è l&#8217;unico programma che permette di cifrare uno script in PHP, per la lista completa vi rimando a Offuscare [...]]]></description>
			<content:encoded><![CDATA[<p>Questo articolo è un approfondimento di “<a href="http://phpblog.it/2008/07/21/offuscare-o-proteggere-il-nostro-codice-php-introduzione/" title="Offuscare o proteggere il nostro codice PHP - Introduzione">Offuscare o proteggere il nostro codice PHP &#8211; Introduzione</a>“, analizzeremo le funzionalità, i pregi ed i difetti di Zend Guard al fine di criptare uno script PHP.<br />
Zend Guard non è l&#8217;unico programma che permette di cifrare uno script in PHP, per la lista completa vi rimando a <a href="http://phpblog.it/2008/07/21/offuscare-o-proteggere-il-nostro-codice-php-introduzione/" title="Offuscare o proteggere il nostro codice PHP - Introduzione">Offuscare o proteggere il nostro codice PHP &#8211; Introduzione</a>.</p>
<p><span id="more-155"></span></p>
<h3>Zend Guard</h3>
<p>Zend Guard è senz&#8217;altro il più usato strumento a pagamento ( 600$ ) che permette di criptare i files PHP, forse perchè si integra perfettamente nell&#8217;interfaccia di Zend Studio, usandolo potrete anche creare delle licenze per i vostri prodotti, l&#8217;interfaccia è semplice ed intuitiva così come la sua installazione. Per usare Zend Guard è però necessario avere installato sul nostro webserver Zend Optimizer (Zend Optimizer è gratuito).<br />
Seppur il più usato Zend Guard non è di certo lo strumento più sicuro al quale affidare i nostri script. Esistono vari servizi gratuiti e a pagamento offerti dalla comunità online, di questi, però, troviamo online solamente quelli a pagamento: primo fra tutti <a href="http://www.zendecode.com/">Zend Decode</a> ( 50$ &#8211; per PHP4 e PHP5, solo per Windows ).<br />
Per provare Zend Guard scaricate ed installate Zend Guard [<br />
<a href="http://www.zend.com/en/products/guard/downloads">Scarica</a> ] ed anche Zend Optimizer [ <a href="http://www.zend.com/en/products/guard/downloads">Scarica</a> - Quando lo si installa fare molta attenzione a non premere invio senza curarsi di ciò che ci viene chiesto perchè è molto importante configurarlo correttamente! ].</p>
<p>Ecco come si presenta un semplicissimo script prima e dopo essere stato criptato ( ho usato la versione demo ):</p>
<h3>Prima</h3>
<p>[source:Php]&lt;?php<br />
function isOnline($address=&#8221;localhost&#8221;, $port=&#8221;80&#8243;, $timeout=&#8221;1&#8243;)<br />
{<br />
@$fp=fsockopen($address,$port,$err_no,$errstr,$timeout);<br />
if($fp)<br />
{<br />
return 1;<br />
fclose($fp);<br />
}<br />
else<br />
{<br />
echo &#8220;Errore numero $err_no: $errstr\n&#8221;;<br />
return 0;<br />
}<br />
}<br />
?&gt;[/source]</p>
<h3>Dopo</h3>
<p>[source:Php]&lt;?php @Zend;<br />
4123;<br />
/* ñ!This is not a text file!Þí */<br />
print &lt;&lt;&lt;EOM<br />
&lt;html&gt;&lt;body&gt;&lt;a href=&#8221;http://www.zend.com/products/zend_guard&#8221;&gt;&lt;img border=&#8221;0&#8243; src=&#8221;http://www.zend.com/images/store/safeguard_optimizer_img.gif&#8221; align=&#8221;right&#8221;&gt;&lt;/a&gt;&lt;center&gt;&lt;h1&gt;Zend Optimizer not installed&lt;/h1&gt;&lt;/center&gt;&lt;p&gt;This file was encoded by the &lt;a href=&#8221;http://www.zend.com/products/zend_guard&#8221;&gt;Zend Guard&lt;/a&gt;. In order to run it, please install the &lt;a href=&#8221;http://www.zend.com/products/zend_optimizer&#8221;&gt;Zend Optimizer&lt;/a&gt; (available without charge), version 3.0.0 or later. &lt;/p&gt;&lt;h2&gt;Seeing this message instead of the website you expected?&lt;/h2&gt;This means that this webserver is not configured correctly. In order to view this website properly, please contact the website&#8217;s system administrator/webmaster with the following message:&lt;tt&gt;The component &#8220;Zend Optimizer&#8221; is not installed on the Web Server and therefore cannot service encoded files. Please download and install the Zend Optimizer (available without charge) on the Web Server.&lt;/tt&gt;&lt;b&gt;Note&lt;/b&gt;: Zend Technologies cannot resolve issues related to this message appearing on websites not belonging to &lt;a href=&#8221;http://www.zend.com&#8221;&gt;Zend Technologies&lt;/a&gt;. &lt;h2&gt;What is the Zend Optimizer?&lt;/h2&gt;&lt;p&gt;The Zend Optimizer is one of the most popular PHP plugins for performance-improvement, and has been available without charge, since the early days of PHP 4. It improves performance by scanning PHP&#8217;s intermediate code and passing it through multiple Optimization Passes to replace inefficient code patterns with more efficient code blocks. The replaced code blocks perform exactly the same operations as the original code, only faster. &lt;/p&gt;&lt;p&gt;In addition to improving performance, the Zend Optimizer also enables PHP to transparently load files encoded by the Zend Guard. &lt;/p&gt;&lt;p&gt;The Zend Optimizer is a free product available for download from &lt;a href=&#8221;http://www.zend.com&#8221;&gt;Zend Technologies&lt;/a&gt;. Zend Technologies also developed the PHP scripting engine, known as the &lt;a href=&#8221;http://www.zend.com/products/zend_engine&#8221;&gt;Zend Engine&lt;/a&gt;.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;<br />
EOM;<br />
exit();<br />
__halt_compiler();<br />
?&gt;<br />
200407220335061262xù<br />
Ÿ2}W½N#1ö!t‚,Ez„Ñƒvìõ=5=Wœ¢Ä›5ò&amp;Å=Â½/Á# ^€Ž’††‚&#8217;@ºæüŸÍÖÍ|ãÙùÆóc»æ©šéè¼qƒÆØa:×Z`_ÊJÉ¬f%a˜2iŠ¿LW‹ÅŸÓñtjœq‰f­ž\ëÕ@)¥ Bº[ïlRëVœ#’k„ûT‹þ×’w™{/‘ÒøzÜÚWÃS~ú$š·º©çŠ©.¬àÂœ<br />
ñïè¨¶õ.ìBISÈ´Y†# ö8ZÎJ¯ºB_­n…ð¯aüq¦òù~o©õd\_év‡åÑ0„&lt;éâ¬‹‘Hõ}žwI‰d%@u^w¾<br />
uêoÊé¸-³ÝžFµ‹ÜIÀ5Ö‡m~Žð0Ã¸?d˜D˜táÃW®¶Ã8Â´ßïvî»rMÏ¿#_zô0šÝl2;ö/ÈÌ¼5‘ÐbëààmvŒÇRº91Cÿ¾Ë[èŒÿÓ¢BçÆh£FÍj¡Œm$2Fw(öÓ£ãMkvõ<br />
¼uâüÙÀSÏ€}Úö4{„z&amp;HÞ°­É…ÈÐ:çö Â5ƒP^Ì¡”Øö˜Ny<br />
(ã¸â üneÌïF )'„b^Ea»4N(JV²Š#ò¤’Àyjîÿrý—Ä<br />
[/source]</p>
<p><img src="http://172.18.0.13/wordpress/wp-content/uploads/2008/10/encode.png" alt="Come criptare i nostri scripts in PHP - Zend Guard" /></p>
<p>Se volete provare il programma dovete creare un nuovo progetto seguendo le istruzioni, una volta creato vi comparirà una schermata, sulla destra della sezione centrale cliccate sull&#8217;opzione &#8220;Encode project&#8221;, vi troverete il file criptato nella path specificata alla voce &#8220;Output Location&#8221;.</p>
<p><strong>Conclusioni:</strong> Il programma è caro, richiede zend optimizer installato sul webserver e la protezione è facilmente aggirabile, a mio parere esistono alternative più valide e più economiche  .</p>
]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2008/10/15/criptare-i-nostri-scripts-in-php-zend-guard/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Come criptare i nostri scripts in PHP &#8211; Source Guardian</title>
		<link>http://phpblog.it/2008/10/08/come-criptare-i-nostri-scripts-in-php-source-guardian/</link>
		<comments>http://phpblog.it/2008/10/08/come-criptare-i-nostri-scripts-in-php-source-guardian/#comments</comments>
		<pubDate>Wed, 08 Oct 2008 05:00:09 +0000</pubDate>
		<dc:creator>Davide Martignetti</dc:creator>
				<category><![CDATA[phpblog]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[sicurezza]]></category>
		<category><![CDATA[cifrare]]></category>
		<category><![CDATA[criptare]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[source guardian]]></category>

		<guid isPermaLink="false">http://phpblog.it/2008/10/08/come-criptare-i-nostri-scripts-in-php-source-guardian/</guid>
		<description><![CDATA[Questo articolo è un approfondimento di &#8220;Offuscare o proteggere il nostro codice PHP &#8211; Introduzione&#8220;, analizzeremo le funzionalità, i pregi ed i difetti di Zend Guard al fine di criptare uno script PHP. Source Guardian non è l&#8217;unico programma che permette di cifrare uno script in PHP, per la lista completa vi rimando a Offuscare [...]]]></description>
			<content:encoded><![CDATA[<p>Questo articolo è un approfondimento di &#8220;<a href="http://phpblog.it/2008/07/21/offuscare-o-proteggere-il-nostro-codice-php-introduzione/" title="Offuscare o proteggere il nostro codice PHP - Introduzione">Offuscare o proteggere il nostro codice PHP &#8211; Introduzione</a>&#8220;, analizzeremo le funzionalità, i pregi ed i difetti di Zend Guard al fine di criptare uno script PHP.<br />
Source Guardian non è l&#8217;unico programma che permette di cifrare uno script in PHP, per la lista completa vi rimando a <a href="http://phpblog.it/2008/07/21/offuscare-o-proteggere-il-nostro-codice-php-introduzione/" title="Offuscare o proteggere il nostro codice PHP - Introduzione">Offuscare o proteggere il nostro codice PHP &#8211; Introduzione</a>.</p>
<h3>Source Guardian</h3>
<p>Source Guardian (250$, windows, linux, mac), tramite un&#8217;interfaccia che lascia un po&#8217; a desiderare vi permette di criptare il vostro codice. Il primo approcio con la versione Demo è stato ottimo, l&#8217;interfaccia scarna del programma è compensata da una semplicità di utilizzo veramente alta. Con pochi clicks guidati potremo visualizzare il nostro sorgente criptato.</p>
<p><span id="more-160"></span></p>
<p><img src="http://172.18.0.13/wordpress/wp-content/uploads/2008/10/encode.jpg" alt="Encode" /></p>
<p>I nodi giungono però al pettine dopo poco tempo: al momento dell&#8217;esecuzione dello script comparirà la richiesta di installazione di Source Guardian loader, dopo una ricerca un po&#8217; macchinosa sono giunto ad una pagina (nei files di installazione di source guardian) che spiega come effettuarne l&#8217;installazione:</p>
<p><img src="http://172.18.0.13/wordpress/wp-content/uploads/2008/10/error.jpg" alt="Error" /></p>
<h3>Prima</h3>
<p>[source:php]<br />
&lt;?php<br />
function isOnline($address=&#8221;localhost&#8221;, $port=&#8221;80&#8243;, $timeout=&#8221;1&#8243;)<br />
{<br />
@$fp=fsockopen($address,$port,$err_no,$errstr,$timeout);<br />
if($fp)<br />
{<br />
return 1;<br />
fclose($fp);<br />
}<br />
else<br />
{<br />
echo &#8220;Errore numero $err_no: $errstr\n&#8221;;<br />
return 0;<br />
}<br />
}<br />
?&gt;[/source]</p>
<h3>Dopo</h3>
<p>[source:php]&lt;?php @SourceGuardian; 1051555483; 2602881255; //v7.0 evaluation<br />
if(!function_exists(&#8216;sg_load&#8217;)){$__v=phpversion();$__u=strtolower(substr(php_uname(),0,3));$__f=$__f0=&#8217;ixed.&#8217;.substr($__v,0,strpos($__v,&#8217;.',3)).&#8217;ev.&#8217;.$__u;$__ff=$__ff0=&#8217;ixed.&#8217;.$__v.&#8217;ev.&#8217;.$__u;$__ed=ini_get(&#8216;extension_dir&#8217;);if(!$__e=realpath($__ed)) die(&#8216;extension_dir does not exists &#8216;.$__ed);if(file_exists($__e.&#8217;/&#8217;.$__ff)) dl($__ff);else if(file_exists($__e.&#8217;/&#8217;.$__f)) dl($__f);else {$__d=getcwd();if(@$__d[1]==&#8217;:'){$__d=str_replace(&#8216;\\&#8217;,'/&#8217;,substr($__d,2));$__e=str_replace(&#8216;\\&#8217;,'/&#8217;,substr($__e,2));}$__e.=($__h=str_repeat(&#8216;/..&#8217;,substr_count($__e,&#8217;/')));$__f=&#8217;/ixed/&#8217;.$__f;$__ff=&#8217;/ixed/&#8217;.$__ff;while(!file_exists($__e.$__d.$__ff) &amp;&amp; !file_exists($__e.$__d.$__f) &amp;&amp; strlen($__d)&gt;1){$__d=dirname($__d);}if (file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff);else if (file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists(&#8216;sg_load&#8217;)){die(&#8216;PHP script &lt;B&gt;&#8217;.__FILE__.&#8217;&lt;/B&gt; is protected by &lt;A href=&#8221;http://www.sourceguardian.com/&#8221;&gt;SourceGuardian&lt;/A&gt; and requires the SourceGuardian loader &lt;B&gt;&#8217;.$__f0.&#8217;&lt;/B&gt;. The SourceGuardian loader has not been installed, or is not installed correctly. Please find the required loader in the ixed subdirectory within your SourceGuardian installation directory.&#8217;);exit();}}return sg_load(&#8216;AAQAAAAMAAAABHAAAACABAAAAAAAAAD/MPqWt4A0hGDqoOPTsBY0RZWEFiSW1kqExXhlpjyQDLwnMRC8v35pX6HyAI+7v3Ow8PdnvlntxY0OSjK47/S16KIMnwGoGnn+RS3NZU/IK+RUOGKterxnfOUmdRO7scw5higAnljyrSheIJ9xpznOtXu84okXfng7KaDUJVHQTnexmk67Hv9lmlTeB3qs7S2poluC+X9Orbf3jJUB81Fxq+mlXpAQ6vnsFPbcagkOm1jByfXqIif7NlZDTYjACjsYlN3SYQbDICuZrHrMp5wNgl+SFXGQ4FYaazeuCL3KTKGSOTPN/U4NVJuEl21MhJ+bfETcmKxSaEI4TjGgrp2PjKNelGWkrKCj7zrBo+UrOBXQaKjFvizt1t4pxNNEiKykkyTDN1X0v0+ivxOqBkIjX4hnR0NJpQ0rsdFN5EnnRJsgbxQIsmGHz+fDvPtuOZNenYtFl4/NKnlOJd9GAcnzUW2Vwnw6WsQ7jIERVeXy5m1720krTsE+DutbBGFe8kHgaXUXtUU0S9b8TwIk7rBkDkiOaITzGKdT+Rk7Xw4p8DEjOFDWZ0IA1IJflsNZuN1WZilX8m05xJzni+bc8fmWdHsblHnKtFKdUylX01gONZ11uSHWPMJoGEcp7uGBTGenLrt5AYUHUisEMjXU1muZi0ipz3DybGtaWVwDuQ59tTVGPViyVzXrPoV5dQTPTyY8zXW7xqEtkQBB5wLAcJo5IYJrjEjWS7M8WkssAf+Ib/eyI2JClqqd/ij2eRtd6XekeuQH5VjoenL5QNnP2QklrkncXzlNK4cwhvRy9sj2Zp11zBAcBWL0Ws7V80Sx/LAZf0frzxSwP0co5kWwf/OSDmNITmCWP8z2gXSu1ApmraB4664UdYxPUHTft8fUjaB5&#8242;);<br />
?&gt;[/source]</p>
<p><strong>Conclusioni:</strong> Source Guardian è un po&#8217; difficile da installare, ha un&#8217;interfaccia che di certo non è delle migliori ma pare che decifrare il codice sia più complicato. E&#8217; anche vero che costa molto meno di Zend Guard.</p>
]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2008/10/08/come-criptare-i-nostri-scripts-in-php-source-guardian/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
