<?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>Zulin's Blog</title>
	<atom:link href="http://www.zulin.org/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.zulin.org</link>
	<description>io, me e un po' di codice</description>
	<lastBuildDate>Sun, 18 Oct 2009 14:54:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>nWire &#8211; PHP source navigation made easy</title>
		<link>http://www.zulin.org/?p=439</link>
		<comments>http://www.zulin.org/?p=439#comments</comments>
		<pubDate>Sun, 18 Oct 2009 14:54:07 +0000</pubDate>
		<dc:creator>Arsenio [zulin] Siani</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[webdesign]]></category>

		<guid isPermaLink="false">http://www.zulin.org/?p=439</guid>
		<description><![CDATA[nWire è un plugin per eclipse Galileo e per Zend Studio 7 che offre la possibilità di navigare nel codice in maniera veloce e intuitiva.
Si propone come uno strumento indispensabile per la gestione di grandi progetti con migliaia di file e centinaia di classi da gestire.
Gli IDE di ultima generazione hanno ormai tutti integrati dei [...]]]></description>
			<content:encoded><![CDATA[<p><strong><a href="http://www.nwiresoftware.com">nWire</a></strong> è un plugin per <a href="http://www.eclipse.org">eclipse Galileo</a> e per <a href="http://www.zend.com">Zend Studio 7</a> che offre la possibilità di <strong>navigare nel codice in maniera veloce e intuitiva</strong>.<br />
Si propone come uno strumento <strong>indispensabile</strong> per la gestione di <strong>grandi progetti</strong> con migliaia di file e centinaia di classi da gestire.<br />
Gli IDE di ultima generazione hanno ormai tutti integrati dei sistemi di analisi del codice, che semplificano la navigazione del codice, permettendo ad esempio di saltare con un click al punto in cui una costante è stata definita; oppure di saltare alla definizione di una classe semplicemente cliccando sul nome della classe stessa.<br />
Tutte queste semplificazioni aiutano il programmatore a muoversi con maggiore <strong><a href="http://en.wikipedia.org/wiki/Agile_software_development">agilità</a></strong> all‘interno del progetto.<br />
Purtroppo però data l‘incredibile versatilità del php l‘editor non è sempre in grado di capire di che tipo è una determinata variabile; </p>
<p><img src="http://www.zulin.org/wp-content/uploads/2009/10/ZendStudio5.png" alt="ZendStudio5.png" width="462" height="165" /></p>
<p>In aiuto vengono i commenti nel formato PHPDoc che forniscono preziose informazioni all‘inspector.</p>
<p><img src="http://www.zulin.org/wp-content/uploads/2009/10/ZendStudio13.png" alt="ZendStudio13.png" width="428" height="188" /></p>
<p>Altri, come Zend Studio ad esempio, propongono anche una sintassi di commenti comprensibile dal suo inspector, in modo da istruirlo sul tipo di variabile:</p>
<p><img src="http://www.zulin.org/wp-content/uploads/2009/10/ZendStudio23.png" alt="ZendStudio23.png" width="360" height="162" /></p>
<p>Ovviamente tutte queste soluzioni impongono al programmatore uno stile di codice che magari non gli appartiene, ma che è costretto a rispettare se vuole godere dei benefici dell‘inspector.</p>
<p>Proprio qui entra in gioco <strong>nWire</strong>, che offre molte più possibilità dell‘inspector nativo dell‘editor, ma non obbliga a mantenere uno stile di codifica differente da quello che si è abituati a usare.</p>
<p><span style="font-size: 15pt;"><strong>Installazione</strong></span><br />
L‘installazione è <strong>semplicissima</strong>; grazie anche alle funzionalità (decisamente migliorate) di Eclipse Galileo nella gestione dei repository di plugins.<br />
Basta infatti <strong>aggiungere un nuovo sito</strong> nella sezione dedicata alla gestione dei siti, ed ecco che le funzionalità di questo plugin sono pronte per essere installate.</p>
<p><img src="http://www.zulin.org/wp-content/uploads/2009/10/ZendStudioadd3.png" alt="ZendStudioadd3.png" width="473" height="250" /></p>
<p>Il plugin offre <strong>2 vesti diverse</strong>, una specifica per <strong>PHP</strong> e una specifica per <strong>JAVA</strong>, ovviamente ho provato quella dedicata a PHP.<br />
<img src="http://www.zulin.org/wp-content/uploads/2009/10/Install13.png" alt="Install13.png" width="540" height="509" /><br />
<span style="font-size: 15pt;"><strong>Primo impatto</strong></span><br />
A dire il vero sono rimasto sorpreso, immaginavo che questo plugin una volta installato mi inondasse l‘IDE con pulsanti inutili e con pannelli criptici, e invece <strong>non ho notato nessun cambiamento nel‘IDE</strong>, tanto da credere che fosse andato qualcosa storto nell‘installazione.<br />
Dopo qualche minuto a spulciare la documentazione ho notato i due pulsanti che erano stati aggiunti nella barra in alto.</p>
<p><img src="http://www.zulin.org/wp-content/uploads/2009/10/ZendStudiobar3.png" alt="ZendStudiobar3.png" width="647" height="87" /></p>
<p>Il pulsante a sinistra una volta cliccato apre l‘<strong>overview testuale</strong> dell‘inspector, quello a destra apre invece la <strong>ricerca veloce</strong>.<br />
Inoltre è stata aggiunta una nuova voce nel menù contestuale del progetto che permette di abilitare o disabilitare l‘inspector su quel progetto.</p>
<p><img src="http://www.zulin.org/wp-content/uploads/2009/10/ZendStudio203.png" alt="ZendStudio203.png" width="484" height="658" /></p>
<p><span style="font-size: 15pt;"><strong>L‘overview</strong></span><br />
Qui la cosa si fa interessante. L‘overview le legata all‘editor: <strong>si aggiorna al volo</strong> mostrando il contesto in cui il cursore si trova in quel momento, se ad esempio il cursore si trova all‘interno di una classe, ma all‘esterno dei metodi, l‘overview fa partire la sua analisi dalla classe, mostrandoci l‘elenco dei metodi e delle proprietà, quante volte la classe viene istanziata, il partent. etc. Se ci spostiamo sul nome di un metodo, ecco che la visuale cambia, e il focus si concentra sul metodo, mostrandoci cose come i metodi di cui questo fa l‘override, quante volte è invocato, quali proprietà della classe intacca, etc.</p>
<p><img src="http://www.zulin.org/wp-content/uploads/2009/10/currentline2.png" alt="currentline2.png" width="697" height="619" /><br />
Una volta indicato cosa ispezionare il plugin fornisce queste informazioni:</p>
<ul style="list-style-type: disc">
<li>la classe parent e tutte le eventuali classi che estendono questa</li>
<li>quante volte e dove è istanziata una classe</li>
<li>quante volte e dove è usata una istanza di quella classe</li>
<li>quali metodi (nell‘intero scope del progetto) restituiscono un oggetto che è una istanza di quella classe</li>
<li>quante volte e dove un metodo viene invocato</li>
<li>quali metodi e funzioni un metodo invoca</li>
<li>quante volte e dove un file è incluso</li>
<li>quali metodi modificano la proprietà di una classe</li>
</ul>
<p><img src="http://www.zulin.org/wp-content/uploads/2009/10/modifyed.png" alt="modifyed.png" width="669" height="597" /></p>
<p>Ovviamente è possibile navigare anche usando l‘overview stessa, basta cliccare l‘elemento che si vuole ispezionare e si apre un nuovo pannello sulla destra che mostra le informazioni desiderate e così via.</p>
<p><span style="font-size: 15pt;"><strong>Prestazioni</strong></span><br />
Temevo che l‘indicizazione del progetto da parte di questo plugin <strong>inchiodasse l‘IDE</strong>, invece impiega un po‘ <strong>meno del tempo che ci mette Zend Studio a fare la build</strong> del progetto stesso. La parte scocciante è forse solo quando il plugin si accorge di <strong>modifiche strutturali al codice</strong> e lancia di nuovo l‘indicizazione, questo inchioda l‘editor per <strong>qualche secondo</strong>; ma è un settaggio che si può modificare nelle preferenze del plugin stesso.<br />
<em>Per completezza riporto un po‘ di dati sullo scenario in cui ho provato nWire:<br />
Grandezza del progetto: <strong>+60MB di file sorgenti</strong><br />
Numero di classi: <strong>+6.000</strong><br />
Computer: <strong>MAC Pro dual Core con 2 GB di ram</strong></em></p>
<p><strong>Overview Grafica</strong><br />
Sinceramente <strong>non l‘ho trovata molto utile</strong>. Non è altro che la <strong>visualizzazione con blocchi e frecce</strong> dell‘overview testuale. Navigabile alla stessa maniera, ma che non offre nulla in più. A mio avviso sarebbe stato un <strong>ottimo addon anche senza questa funzionalità</strong></p>
<p><img src="http://www.zulin.org/wp-content/uploads/2009/10/ZendStudiobox.png" alt="ZendStudiobox.png" width="691" height="202" /></p>
<p><span style="font-size: 15pt;"><strong>Ricerca rapida</strong></span><br />
L‘ho trovata davvero utile! Un aggiunta molto potente alla ricerca integrata nell‘IDE, la funzionalità che più mi ha colpito è quella che permette la ricerca in base al CameCase dei nomi: basta infatti scrivere nella ricerca “gH“ e è come aver scritto “g*H*“.</p>
<p><img src="http://www.zulin.org/wp-content/uploads/2009/10/ZendStudioquicksearch.png" alt="ZendStudioquicksearch.png" width="238" height="231" /></p>
<p><span style="font-size: 15pt;"><strong>Conclusioni</strong></span><br />
Sono convito che se si manutiene un progetto di grosse dimensioni e si intende refattorizzare spesso l‘architettura del codice, questo sia uno strumento più che indispensabile. L‘ho usato per solo 2 ore e ho trovato decide i posti in cui non avevo aggiornato il codice per adeguarlo ad un refactoring recente (<em>si lo so&#8230; <strong>i tests</strong>&#8230; ma non tutti i meandri del progetto sono coperti dai tests, non scordate che sono 60MB di sorgenti!</em>).<br />
Sul costo non mi esprimo (59$ per la versione solo PHP), visto che secondo la mia esperienza, se un tool è indispensabile al proprio lavoro.. il costo è l‘ultimo aspetto da considerare. Una nota però va fatta: i ragazzi di nWire offrono una copia gratuita del plugin se si possiede un blog e si scrive un post che lo valuti <img src='http://www.zulin.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.zulin.org/?feed=rss2&amp;p=439</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Riconoscitore facciale in puro PHP</title>
		<link>http://www.zulin.org/?p=289</link>
		<comments>http://www.zulin.org/?p=289#comments</comments>
		<pubDate>Fri, 26 Jun 2009 15:31:21 +0000</pubDate>
		<dc:creator>Arsenio [zulin] Siani</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://www.zulin.org/?p=289</guid>
		<description><![CDATA[Ho scovato questo interessante frammento di codice a questo indirizzo.
In sostanza si tratta del porting in php di una routine scritta in javascript che identifica i volti in una foto. Mi vengono in mente decine di interessanti applicazioni (specie nei prossimi tempi) che possono avvalersi di questa interessante tecnologia.
Già google ha introdotto una funzione nella [...]]]></description>
			<content:encoded><![CDATA[<p>Ho scovato questo interessante frammento di codice a <a target="_blank" href="http://svay.com/blog/index/post/2009/06/19/Face-detection-in-pure-PHP-(without-OpenCV)">questo indirizzo</a>.<br />
In sostanza si tratta del porting in php di una routine scritta in javascript che <strong>identifica i volti in una foto</strong>. Mi vengono in mente decine di interessanti applicazioni (specie nei prossimi tempi) che possono avvalersi di questa interessante tecnologia.<br/><br />
Già google ha introdotto una funzione nella ricerca delle immagini che permette di <strong>filtrare le immagini in modo che compaiano sono quelle in cui è presente una faccia</strong> (<a target="_blank" href="http://images.google.it/images?imgtype=face&#038;as_st=y&#038;hl=it&#038;rlz=1C1CHMG_it___IT328&#038;um=1&#038;sa=1&#038;q=bill+gates&#038;btnG=Cerca+immagini&#038;aq=f&#038;oq=">qui un esempio</a>); per ora google si limita a <strong>indovinare</strong> il nome il tizio nella foto dal <em>nome del file</em>, o dal <em>testo che si trova nella pagina</em> in cui la foto è pubblicata.<br/><br />
Non mi sorprenderei se nel prossimo futuro il <em>Gigate</em> se ne venisse fuori con un prodotto che permette di cercare tutte le foto presenti sulla rete in cui <strong>appare il volto di una persona</strong> (<em>brrr!</em>)</p>
<h2>Utilizzo del codice</h2>
<p>Usare questa classe è relativamente semplice, basta istanziarla, passandonle come argomento un file (detection.dat appunto) con le direttive di detecting che si può scaricare <a  target="_blank" href="http://svay.com/experiences/face-detection/detection.dat">a questo indirizzo</a>; si invoca poi la routine su una immagine caricata. Il risultato lo potete vedere imemdiatamente sotto</p>
<div class="dean_ch" style="white-space: nowrap;">
<span class="kw2">&lt;?php</span><br />
<span class="re0">$detector</span> = <span class="kw2">new</span> Face_Detector<span class="br0">&#40;</span><span class="st0">&#8216;detection.dat&#8217;</span><span class="br0">&#41;</span>;<br />
<span class="re0">$detector</span>-&gt;<span class="me1">face_detect</span><span class="br0">&#40;</span><span class="st0">&#8216;maurice_svay_150.jpg&#8217;</span><span class="br0">&#41;</span>;<br />
<span class="re0">$detector</span>-&gt;<span class="me1">toJpeg</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp;</div>
</p>
<p>Ecco l&#8217;output.<br/><br />
<img src="http://svay.com/blog/public/images/2009-06-19/detection.jpg" /></p>
<h2>Veniamo al codice</h2>
<div class="dean_ch" style="white-space: nowrap;">
<span class="kw2">&lt;?php</span><br />
<span class="co1">// </span><br />
<span class="co1">// This program is free software; you can redistribute it and/or</span><br />
<span class="co1">// modify it under the terms of the GNU General Public License</span><br />
<span class="co1">// as published by the Free Software Foundation; either version 2</span><br />
<span class="co1">// of the License, or (at your option) any later version.</span><br />
<span class="co1">// </span><br />
<span class="co1">// This program is distributed in the hope that it will be useful,</span><br />
<span class="co1">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br />
<span class="co1">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span><br />
<span class="co1">// GNU General Public License for more details.</span><br />
<span class="co1">// </span><br />
<span class="co1">// You should have received a copy of the GNU General Public License</span><br />
<span class="co1">// along with this program; if not, write to the Free Software</span><br />
<span class="co1">// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. &nbsp; &nbsp; </span><br />
<span class="co1">// </span><br />
<span class="co1">// @Author Karthik Tharavaad </span><br />
<span class="co1">// &nbsp; &nbsp; &nbsp; &nbsp; karthik_tharavaad@yahoo.com</span><br />
<span class="co1">// @Contributor Maurice Svay</span><br />
<span class="co1">// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;maurice@svay.Com</span></p>
<p><span class="kw2">class</span> Face_Detector <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; protected <span class="re0">$detection_data</span>;<br />
&nbsp; &nbsp; protected <span class="re0">$canvas</span>;<br />
&nbsp; &nbsp; protected <span class="re0">$face</span>;<br />
&nbsp; &nbsp; <span class="kw2">private</span> <span class="re0">$reduced_canvas</span>;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">function</span> __construct<span class="br0">&#40;</span><span class="re0">$detection_file</span> = <span class="st0">&#8216;detection.dat&#8217;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/is_file"><span class="kw3">is_file</span></a><span class="br0">&#40;</span><span class="re0">$detection_file</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;<span class="me1">detection_data</span> = <a href="http://www.php.net/unserialize"><span class="kw3">unserialize</span></a><span class="br0">&#40;</span><a href="http://www.php.net/file_get_contents"><span class="kw3">file_get_contents</span></a><span class="br0">&#40;</span><span class="re0">$detection_file</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; throw <span class="kw2">new</span> Exception<span class="br0">&#40;</span><span class="st0">&quot;Couldn&#8217;t load detection data&quot;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//$this-&gt;detection_data = json_decode(file_get_contents(&#8217;data.js&#8217;));</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">function</span> face_detect<span class="br0">&#40;</span><span class="re0">$file</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>!<a href="http://www.php.net/is_file"><span class="kw3">is_file</span></a><span class="br0">&#40;</span><span class="re0">$file</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; throw <span class="kw2">new</span> Exception<span class="br0">&#40;</span><span class="st0">&quot;Can not load $file&quot;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;<span class="me1">canvas</span> = imagecreatefromjpeg<span class="br0">&#40;</span><span class="re0">$file</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$im_width</span> = imagesx<span class="br0">&#40;</span><span class="re0">$this</span>-&gt;<span class="me1">canvas</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$im_height</span> = imagesy<span class="br0">&#40;</span><span class="re0">$this</span>-&gt;<span class="me1">canvas</span><span class="br0">&#41;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Resample before detection?</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$ratio</span> = <span class="nu0">0</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$diff_width</span> = <span class="nu0">320</span> &#8211; <span class="re0">$im_width</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$diff_height</span> = <span class="nu0">240</span> &#8211; <span class="re0">$im_height</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$diff_width</span> &gt; <span class="re0">$diff_height</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$ratio</span> = <span class="re0">$im_width</span> / <span class="nu0">320</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$ratio</span> = <span class="re0">$im_height</span> / <span class="nu0">240</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$ratio</span> != <span class="nu0">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;<span class="me1">reduced_canvas</span> = imagecreatetruecolor<span class="br0">&#40;</span><span class="re0">$im_width</span> / <span class="re0">$ratio</span>, <span class="re0">$im_height</span> / <span class="re0">$ratio</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; imagecopyresampled<span class="br0">&#40;</span><span class="re0">$this</span>-&gt;<span class="me1">reduced_canvas</span>, <span class="re0">$this</span>-&gt;<span class="me1">canvas</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="re0">$im_width</span> / <span class="re0">$ratio</span>, <span class="re0">$im_height</span> / <span class="re0">$ratio</span>, <span class="re0">$im_width</span>, <span class="re0">$im_height</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$stats</span> = <span class="re0">$this</span>-&gt;<span class="me1">get_img_stats</span><span class="br0">&#40;</span><span class="re0">$this</span>-&gt;<span class="me1">reduced_canvas</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;<span class="me1">face</span> = <span class="re0">$this</span>-&gt;<span class="me1">do_detect_greedy_big_to_small</span><span class="br0">&#40;</span><span class="re0">$stats</span><span class="br0">&#91;</span><span class="st0">&#8216;ii&#8217;</span><span class="br0">&#93;</span>, <span class="re0">$stats</span><span class="br0">&#91;</span><span class="st0">&#8216;ii2&#8242;</span><span class="br0">&#93;</span>, <span class="re0">$stats</span><span class="br0">&#91;</span><span class="st0">&#8216;width&#8217;</span><span class="br0">&#93;</span>, <span class="re0">$stats</span><span class="br0">&#91;</span><span class="st0">&#8216;height&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;<span class="me1">face</span><span class="br0">&#91;</span><span class="st0">&#8216;x&#8217;</span><span class="br0">&#93;</span> *= <span class="re0">$ratio</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;<span class="me1">face</span><span class="br0">&#91;</span><span class="st0">&#8216;y&#8217;</span><span class="br0">&#93;</span> *= <span class="re0">$ratio</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;<span class="me1">face</span><span class="br0">&#91;</span><span class="st0">&#8216;w&#8217;</span><span class="br0">&#93;</span> *= <span class="re0">$ratio</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$stats</span> = <span class="re0">$this</span>-&gt;<span class="me1">get_img_stats</span><span class="br0">&#40;</span><span class="re0">$this</span>-&gt;<span class="me1">canvas</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;<span class="me1">face</span> = <span class="re0">$this</span>-&gt;<span class="me1">do_detect_greedy_big_to_small</span><span class="br0">&#40;</span><span class="re0">$stats</span><span class="br0">&#91;</span><span class="st0">&#8216;ii&#8217;</span><span class="br0">&#93;</span>, <span class="re0">$stats</span><span class="br0">&#91;</span><span class="st0">&#8216;ii2&#8242;</span><span class="br0">&#93;</span>, <span class="re0">$stats</span><span class="br0">&#91;</span><span class="st0">&#8216;width&#8217;</span><span class="br0">&#93;</span>, <span class="re0">$stats</span><span class="br0">&#91;</span><span class="st0">&#8216;height&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="br0">&#40;</span><span class="re0">$this</span>-&gt;<span class="me1">face</span><span class="br0">&#91;</span><span class="st0">&#8216;w&#8217;</span><span class="br0">&#93;</span> &gt; <span class="nu0">0</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">function</span> toJpeg<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$color</span> = imagecolorallocate<span class="br0">&#40;</span><span class="re0">$this</span>-&gt;<span class="me1">canvas</span>, <span class="nu0">255</span>, <span class="nu0">0</span>, <span class="nu0">0</span><span class="br0">&#41;</span>; <span class="co1">//red</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; imagerectangle<span class="br0">&#40;</span><span class="re0">$this</span>-&gt;<span class="me1">canvas</span>, <span class="re0">$this</span>-&gt;<span class="me1">face</span><span class="br0">&#91;</span><span class="st0">&#8216;x&#8217;</span><span class="br0">&#93;</span>, <span class="re0">$this</span>-&gt;<span class="me1">face</span><span class="br0">&#91;</span><span class="st0">&#8216;y&#8217;</span><span class="br0">&#93;</span>, <span class="re0">$this</span>-&gt;<span class="me1">face</span><span class="br0">&#91;</span><span class="st0">&#8216;x&#8217;</span><span class="br0">&#93;</span>+<span class="re0">$this</span>-&gt;<span class="me1">face</span><span class="br0">&#91;</span><span class="st0">&#8216;w&#8217;</span><span class="br0">&#93;</span>, <span class="re0">$this</span>-&gt;<span class="me1">face</span><span class="br0">&#91;</span><span class="st0">&#8216;y&#8217;</span><span class="br0">&#93;</span>+ <span class="re0">$this</span>-&gt;<span class="me1">face</span><span class="br0">&#91;</span><span class="st0">&#8216;w&#8217;</span><span class="br0">&#93;</span>, <span class="re0">$color</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/header"><span class="kw3">header</span></a><span class="br0">&#40;</span><span class="st0">&#8216;Content-type: image/jpeg&#8217;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; imagejpeg<span class="br0">&#40;</span><span class="re0">$this</span>-&gt;<span class="me1">canvas</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">function</span> toJson<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="st0">&quot;{&#8217;x':&quot;</span> . <span class="re0">$this</span>-&gt;<span class="me1">face</span><span class="br0">&#91;</span><span class="st0">&#8216;x&#8217;</span><span class="br0">&#93;</span> . <span class="st0">&quot;, &#8216;y&#8217;:&quot;</span> . <span class="re0">$this</span>-&gt;<span class="me1">face</span><span class="br0">&#91;</span><span class="st0">&#8216;y&#8217;</span><span class="br0">&#93;</span> . <span class="st0">&quot;, &#8216;w&#8217;:&quot;</span> . <span class="re0">$this</span>-&gt;<span class="me1">face</span><span class="br0">&#91;</span><span class="st0">&#8216;w&#8217;</span><span class="br0">&#93;</span> . <span class="st0">&quot;}&quot;</span>;<br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">function</span> getFace<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="re0">$this</span>-&gt;<span class="me1">face</span>;<br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; protected <span class="kw2">function</span> get_img_stats<span class="br0">&#40;</span><span class="re0">$canvas</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$image_width</span> = imagesx<span class="br0">&#40;</span><span class="re0">$canvas</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$image_height</span> = imagesy<span class="br0">&#40;</span><span class="re0">$canvas</span><span class="br0">&#41;</span>; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$iis</span> = &nbsp;<span class="re0">$this</span>-&gt;<span class="me1">compute_ii</span><span class="br0">&#40;</span><span class="re0">$canvas</span>, <span class="re0">$image_width</span>, <span class="re0">$image_height</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;width&#8217;</span> =&gt; <span class="re0">$image_width</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;height&#8217;</span> =&gt; <span class="re0">$image_height</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;ii&#8217;</span> =&gt; <span class="re0">$iis</span><span class="br0">&#91;</span><span class="st0">&#8216;ii&#8217;</span><span class="br0">&#93;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;ii2&#8242;</span> =&gt; <span class="re0">$iis</span><span class="br0">&#91;</span><span class="st0">&#8216;ii2&#8242;</span><span class="br0">&#93;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span>; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; protected <span class="kw2">function</span> compute_ii<span class="br0">&#40;</span><span class="re0">$canvas</span>, <span class="re0">$image_width</span>, <span class="re0">$image_height</span> <span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$ii_w</span> = <span class="re0">$image_width</span><span class="nu0">+1</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$ii_h</span> = <span class="re0">$image_height</span><span class="nu0">+1</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$ii</span> = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$ii2</span> = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="re0">$i</span>=<span class="nu0">0</span>; <span class="re0">$i</span>&lt;<span class="re0">$ii_w</span>; <span class="re0">$i</span>++ <span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$ii</span><span class="br0">&#91;</span><span class="re0">$i</span><span class="br0">&#93;</span> = <span class="nu0">0</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$ii2</span><span class="br0">&#91;</span><span class="re0">$i</span><span class="br0">&#93;</span> = <span class="nu0">0</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="re0">$i</span>=<span class="nu0">1</span>; <span class="re0">$i</span>&lt;<span class="re0">$ii_w</span>; <span class="re0">$i</span>++ <span class="br0">&#41;</span><span class="br0">&#123;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$ii</span><span class="br0">&#91;</span><span class="re0">$i</span>*<span class="re0">$ii_w</span><span class="br0">&#93;</span> = <span class="nu0">0</span>; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$ii2</span><span class="br0">&#91;</span><span class="re0">$i</span>*<span class="re0">$ii_w</span><span class="br0">&#93;</span> = <span class="nu0">0</span>; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$rowsum</span> = <span class="nu0">0</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$rowsum2</span> = <span class="nu0">0</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="re0">$j</span>=<span class="nu0">1</span>; <span class="re0">$j</span>&lt;<span class="re0">$ii_h</span>; <span class="re0">$j</span>++ <span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$rgb</span> = ImageColorAt<span class="br0">&#40;</span><span class="re0">$canvas</span>, <span class="re0">$j</span>, <span class="re0">$i</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$red</span> = <span class="br0">&#40;</span><span class="re0">$rgb</span> &gt;&gt; <span class="nu0">16</span><span class="br0">&#41;</span> &amp; 0xFF;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$green</span> = <span class="br0">&#40;</span><span class="re0">$rgb</span> &gt;&gt; <span class="nu0">8</span><span class="br0">&#41;</span> &amp; 0xFF;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$blue</span> = <span class="re0">$rgb</span> &amp; 0xFF;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$grey</span> = <span class="br0">&#40;</span> <span class="nu0">0.2989</span>*<span class="re0">$red</span> + <span class="nu0">0.587</span>*<span class="re0">$green</span> + <span class="nu0">0.114</span>*<span class="re0">$blue</span> <span class="br0">&#41;</span>&gt;&gt;<span class="nu0">0</span>; &nbsp;<span class="co1">// this is what matlab uses</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$rowsum</span> += <span class="re0">$grey</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$rowsum2</span> += <span class="re0">$grey</span>*<span class="re0">$grey</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$ii_above</span> = <span class="br0">&#40;</span><span class="re0">$i</span><span class="nu0">-1</span><span class="br0">&#41;</span>*<span class="re0">$ii_w</span> + <span class="re0">$j</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$ii_this</span> = <span class="re0">$i</span>*<span class="re0">$ii_w</span> + <span class="re0">$j</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$ii</span><span class="br0">&#91;</span><span class="re0">$ii_this</span><span class="br0">&#93;</span> = <span class="re0">$ii</span><span class="br0">&#91;</span><span class="re0">$ii_above</span><span class="br0">&#93;</span> + <span class="re0">$rowsum</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$ii2</span><span class="br0">&#91;</span><span class="re0">$ii_this</span><span class="br0">&#93;</span> = <span class="re0">$ii2</span><span class="br0">&#91;</span><span class="re0">$ii_above</span><span class="br0">&#93;</span> + <span class="re0">$rowsum2</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st0">&#8216;ii&#8217;</span>=&gt;<span class="re0">$ii</span>, <span class="st0">&#8216;ii2&#8242;</span> =&gt; <span class="re0">$ii2</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; protected <span class="kw2">function</span> do_detect_greedy_big_to_small<span class="br0">&#40;</span> <span class="re0">$ii</span>, <span class="re0">$ii2</span>, <span class="re0">$width</span>, <span class="re0">$height</span> <span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$s_w</span> = <span class="re0">$width</span>/<span class="nu0">20.0</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$s_h</span> = <span class="re0">$height</span>/<span class="nu0">20.0</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$start_scale</span> = <span class="re0">$s_h</span> &lt; <span class="re0">$s_w</span> ? <span class="re0">$s_h</span> : <span class="re0">$s_w</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$scale_update</span> = <span class="nu0">1</span> / <span class="nu0">1.2</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="re0">$scale</span> = <span class="re0">$start_scale</span>; <span class="re0">$scale</span> &gt; <span class="nu0">1</span>; <span class="re0">$scale</span> *= <span class="re0">$scale_update</span> <span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$w</span> = <span class="br0">&#40;</span><span class="nu0">20</span>*<span class="re0">$scale</span><span class="br0">&#41;</span> &gt;&gt; <span class="nu0">0</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$endx</span> = <span class="re0">$width</span> &#8211; <span class="re0">$w</span> &#8211; <span class="nu0">1</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$endy</span> = <span class="re0">$height</span> &#8211; <span class="re0">$w</span> &#8211; <span class="nu0">1</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$step</span> = <a href="http://www.php.net/max"><span class="kw3">max</span></a><span class="br0">&#40;</span> <span class="re0">$scale</span>, <span class="nu0">2</span> <span class="br0">&#41;</span> &gt;&gt; <span class="nu0">0</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$inv_area</span> = <span class="nu0">1</span> / <span class="br0">&#40;</span><span class="re0">$w</span>*<span class="re0">$w</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="re0">$y</span> = <span class="nu0">0</span>; <span class="re0">$y</span> &lt; <span class="re0">$endy</span> ; <span class="re0">$y</span> += <span class="re0">$step</span> <span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="re0">$x</span> = <span class="nu0">0</span>; <span class="re0">$x</span> &lt; <span class="re0">$endx</span> ; <span class="re0">$x</span> += <span class="re0">$step</span> <span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$passed</span> = <span class="re0">$this</span>-&gt;<span class="me1">detect_on_sub_image</span><span class="br0">&#40;</span> <span class="re0">$x</span>, <span class="re0">$y</span>, <span class="re0">$scale</span>, <span class="re0">$ii</span>, <span class="re0">$ii2</span>, <span class="re0">$w</span>, <span class="re0">$width</span><span class="nu0">+1</span>, <span class="re0">$inv_area</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span> <span class="re0">$passed</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st0">&#8216;x&#8217;</span>=&gt;<span class="re0">$x</span>, <span class="st0">&#8216;y&#8217;</span>=&gt;<span class="re0">$y</span>, <span class="st0">&#8216;w&#8217;</span>=&gt;<span class="re0">$w</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="co1">// end x</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="co1">// end y</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> &nbsp;<span class="co1">// end scale</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw2">null</span>;<br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; protected <span class="kw2">function</span> detect_on_sub_image<span class="br0">&#40;</span> <span class="re0">$x</span>, <span class="re0">$y</span>, <span class="re0">$scale</span>, <span class="re0">$ii</span>, <span class="re0">$ii2</span>, <span class="re0">$w</span>, <span class="re0">$iiw</span>, <span class="re0">$inv_area</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$mean</span> = <span class="br0">&#40;</span> <span class="re0">$ii</span><span class="br0">&#91;</span><span class="br0">&#40;</span><span class="re0">$y</span>+<span class="re0">$w</span><span class="br0">&#41;</span>*<span class="re0">$iiw</span> + <span class="re0">$x</span> + <span class="re0">$w</span><span class="br0">&#93;</span> + <span class="re0">$ii</span><span class="br0">&#91;</span><span class="re0">$y</span>*<span class="re0">$iiw</span>+<span class="re0">$x</span><span class="br0">&#93;</span> &#8211; <span class="re0">$ii</span><span class="br0">&#91;</span><span class="br0">&#40;</span><span class="re0">$y</span>+<span class="re0">$w</span><span class="br0">&#41;</span>*<span class="re0">$iiw</span>+<span class="re0">$x</span><span class="br0">&#93;</span> &#8211; <span class="re0">$ii</span><span class="br0">&#91;</span><span class="re0">$y</span>*<span class="re0">$iiw</span>+<span class="re0">$x</span>+<span class="re0">$w</span><span class="br0">&#93;</span> &nbsp;<span class="br0">&#41;</span>*<span class="re0">$inv_area</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$vnorm</span> = &nbsp;<span class="br0">&#40;</span> <span class="re0">$ii2</span><span class="br0">&#91;</span><span class="br0">&#40;</span><span class="re0">$y</span>+<span class="re0">$w</span><span class="br0">&#41;</span>*<span class="re0">$iiw</span> + <span class="re0">$x</span> + <span class="re0">$w</span><span class="br0">&#93;</span> + <span class="re0">$ii2</span><span class="br0">&#91;</span><span class="re0">$y</span>*<span class="re0">$iiw</span>+<span class="re0">$x</span><span class="br0">&#93;</span> &#8211; <span class="re0">$ii2</span><span class="br0">&#91;</span><span class="br0">&#40;</span><span class="re0">$y</span>+<span class="re0">$w</span><span class="br0">&#41;</span>*<span class="re0">$iiw</span>+<span class="re0">$x</span><span class="br0">&#93;</span> &#8211; <span class="re0">$ii2</span><span class="br0">&#91;</span><span class="re0">$y</span>*<span class="re0">$iiw</span>+<span class="re0">$x</span>+<span class="re0">$w</span><span class="br0">&#93;</span> &nbsp;<span class="br0">&#41;</span>*<span class="re0">$inv_area</span> &#8211; <span class="br0">&#40;</span><span class="re0">$mean</span>*<span class="re0">$mean</span><span class="br0">&#41;</span>; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$vnorm</span> = <span class="re0">$vnorm</span> &gt; <span class="nu0">1</span> ? <a href="http://www.php.net/sqrt"><span class="kw3">sqrt</span></a><span class="br0">&#40;</span><span class="re0">$vnorm</span><span class="br0">&#41;</span> : <span class="nu0">1</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$passed</span> = <span class="kw2">true</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="re0">$i_stage</span> = <span class="nu0">0</span>; <span class="re0">$i_stage</span> &lt; <a href="http://www.php.net/count"><span class="kw3">count</span></a><span class="br0">&#40;</span><span class="re0">$this</span>-&gt;<span class="me1">detection_data</span><span class="br0">&#41;</span>; <span class="re0">$i_stage</span>++ <span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$stage</span> = <span class="re0">$this</span>-&gt;<span class="me1">detection_data</span><span class="br0">&#91;</span><span class="re0">$i_stage</span><span class="br0">&#93;</span>; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$trees</span> = <span class="re0">$stage</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>; &nbsp;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$stage_thresh</span> = <span class="re0">$stage</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$stage_sum</span> = <span class="nu0">0</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="re0">$i_tree</span> = <span class="nu0">0</span>; <span class="re0">$i_tree</span> &lt; <a href="http://www.php.net/count"><span class="kw3">count</span></a><span class="br0">&#40;</span><span class="re0">$trees</span><span class="br0">&#41;</span>; <span class="re0">$i_tree</span>++ <span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$tree</span> = <span class="re0">$trees</span><span class="br0">&#91;</span><span class="re0">$i_tree</span><span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$current_node</span> = <span class="re0">$tree</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$tree_sum</span> = <span class="nu0">0</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">while</span><span class="br0">&#40;</span> <span class="re0">$current_node</span> != <span class="kw2">null</span> <span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$vals</span> = <span class="re0">$current_node</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$node_thresh</span> = <span class="re0">$vals</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$leftval</span> = <span class="re0">$vals</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$rightval</span> = <span class="re0">$vals</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$leftidx</span> = <span class="re0">$vals</span><span class="br0">&#91;</span><span class="nu0">3</span><span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$rightidx</span> = <span class="re0">$vals</span><span class="br0">&#91;</span><span class="nu0">4</span><span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$rects</span> = <span class="re0">$current_node</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$rect_sum</span> = <span class="nu0">0</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span> <span class="re0">$i_rect</span> = <span class="nu0">0</span>; <span class="re0">$i_rect</span> &lt; <a href="http://www.php.net/count"><span class="kw3">count</span></a><span class="br0">&#40;</span><span class="re0">$rects</span><span class="br0">&#41;</span>; <span class="re0">$i_rect</span>++ <span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$s</span> = <span class="re0">$scale</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$rect</span> = <span class="re0">$rects</span><span class="br0">&#91;</span><span class="re0">$i_rect</span><span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$rx</span> = <span class="br0">&#40;</span><span class="re0">$rect</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>*<span class="re0">$s</span>+<span class="re0">$x</span><span class="br0">&#41;</span>&gt;&gt;<span class="nu0">0</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$ry</span> = <span class="br0">&#40;</span><span class="re0">$rect</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span>*<span class="re0">$s</span>+<span class="re0">$y</span><span class="br0">&#41;</span>&gt;&gt;<span class="nu0">0</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$rw</span> = <span class="br0">&#40;</span><span class="re0">$rect</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span>*<span class="re0">$s</span><span class="br0">&#41;</span>&gt;&gt;<span class="nu0">0</span>; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$rh</span> = <span class="br0">&#40;</span><span class="re0">$rect</span><span class="br0">&#91;</span><span class="nu0">3</span><span class="br0">&#93;</span>*<span class="re0">$s</span><span class="br0">&#41;</span>&gt;&gt;<span class="nu0">0</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$wt</span> = <span class="re0">$rect</span><span class="br0">&#91;</span><span class="nu0">4</span><span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$r_sum</span> = <span class="br0">&#40;</span> <span class="re0">$ii</span><span class="br0">&#91;</span><span class="br0">&#40;</span><span class="re0">$ry</span>+<span class="re0">$rh</span><span class="br0">&#41;</span>*<span class="re0">$iiw</span> + <span class="re0">$rx</span> + <span class="re0">$rw</span><span class="br0">&#93;</span> + <span class="re0">$ii</span><span class="br0">&#91;</span><span class="re0">$ry</span>*<span class="re0">$iiw</span>+<span class="re0">$rx</span><span class="br0">&#93;</span> &#8211; <span class="re0">$ii</span><span class="br0">&#91;</span><span class="br0">&#40;</span><span class="re0">$ry</span>+<span class="re0">$rh</span><span class="br0">&#41;</span>*<span class="re0">$iiw</span>+<span class="re0">$rx</span><span class="br0">&#93;</span> &#8211; <span class="re0">$ii</span><span class="br0">&#91;</span><span class="re0">$ry</span>*<span class="re0">$iiw</span>+<span class="re0">$rx</span>+<span class="re0">$rw</span><span class="br0">&#93;</span> <span class="br0">&#41;</span>*<span class="re0">$wt</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$rect_sum</span> += <span class="re0">$r_sum</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$rect_sum</span> *= <span class="re0">$inv_area</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$current_node</span> = <span class="kw2">null</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span> <span class="re0">$rect_sum</span> &gt;= <span class="re0">$node_thresh</span>*<span class="re0">$vnorm</span> <span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span> <span class="re0">$rightidx</span> == <span class="nu0">-1</span> <span class="br0">&#41;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$tree_sum</span> = <span class="re0">$rightval</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$current_node</span> = <span class="re0">$tree</span><span class="br0">&#91;</span><span class="re0">$rightidx</span><span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span> <span class="re0">$leftidx</span> == <span class="nu0">-1</span> <span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$tree_sum</span> = <span class="re0">$leftval</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$current_node</span> = <span class="re0">$tree</span><span class="br0">&#91;</span><span class="re0">$leftidx</span><span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$stage_sum</span> += <span class="re0">$tree_sum</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span> <span class="re0">$stage_sum</span> &lt; <span class="re0">$stage_thresh</span> <span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw2">false</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw2">true</span>;<br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span><br />
&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://www.zulin.org/?feed=rss2&amp;p=289</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Dwoo Template Engine</title>
		<link>http://www.zulin.org/?p=268</link>
		<comments>http://www.zulin.org/?p=268#comments</comments>
		<pubDate>Thu, 11 Jun 2009 19:59:45 +0000</pubDate>
		<dc:creator>Arsenio [zulin] Siani</dc:creator>
				<category><![CDATA[webdesign]]></category>

		<guid isPermaLink="false">http://www.zulin.org/?p=268</guid>
		<description><![CDATA[Dwoo Template Engine, è un nuovo Template Engine (ma va?!) per PHP.
Perchè un template engine?
Beh se si affronta un progetto un po&#8217; più grande del sito di una salumeria, avere un approccio MVC è quanto mento d&#8217;obbligo.
Perchè non Smarty?
Smarty è senza dubbio un ottimo template engine, ed esiste da tanti anni da potersi considerare più che robusto. Tuttavia Smarty non [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://dwoo.org/" target="_blank">Dwoo Template Engine</a>, è un nuovo Template Engine (ma va?!) per PHP.</p>
<h3><strong>Perchè un template engine?</strong></h3>
<p style="text-align: justify;"><strong></strong>Beh se si affronta un progetto un po&#8217; più grande del sito di una salumeria, avere un approccio <a href="http://en.wikipedia.org/wiki/Model-view-controller" target="_blank">MVC</a> è quanto mento d&#8217;obbligo.</p>
<h3><strong>Perchè</strong><strong> non </strong><strong>Smarty</strong><strong>?</strong></h3>
<p style="text-align: justify;"><strong></strong><a href="http://www.smarty.net" target="_blank">Smarty</a> è senza dubbio un ottimo template engine, ed esiste da tanti anni da potersi considerare più che robusto. Tuttavia Smarty non viene aggiornato da parecchio, è basato ancora su PHP4 (che php.net ha dismesso e definito obsoleto!!), ed è rimasto lo stesso da più di due anni (non una sola riga di codice di aggiornamento!!). Va detto per onor di cronaca che la comunità attorno a smarty si è recentemente svegliata, annunciando la versione 3 del motore di templates. Peccato che abbiano rilasciato solo 2 aggiornamenti (il secondo è servito per correggere un bug introdotto nel primo O_o). Le premesse di smarty 3 sono più che ottime, ma è necessario OGGI un template engine al passo con gli aggiornamenti del PHP.</p>
<h3><strong>Dwoo</strong><strong>?</strong></h3>
<p style="text-align: justify;"><strong></strong>Un po&#8217; nascosto, ho scovato <a href="http://dwoo.org/" target="_blank">questo motore, dwoo appunto</a>, di templates, le sue premesse non sono da meno rispetto a quelle di Smarty 3, con la sola differenza che Dwoo è pronto oggi, adesso. Vi riepilogo in breve le caratteristiche principali:</p>
<ul style="text-align: justify;">
<li>scritto interamente from scratch.</li>
<li>scritto completamente ad oggetti e in puro php5</li>
<li>UTF-8 ready</li>
<li>il codice compilato è completamente  E_STRICT compliant (vale a dire che php non lancerà nessun NOTICE durante la sua esecuzione)</li>
<li>Utilizza un sistema di cache dei templates simile a smarty</li>
<li>ha una sintassi smarty-like (a dirla tutta, riesce a compilare QUASI tutti i template scritti per smarty)</li>
<li>introduce una sintassi migliorata per rendere più scorrevole la scrittura del template</li>
<li>riconosce da solo i blocchi di javascrip e CSS (<em> grazie Dwoo!!</em> )</li>
<li>implementa l&#8217;ereditarietà dei templates (<em>grazie anche per questo</em>)</li>
<li>estenderlo con dei plugins è molto semplice.</li>
</ul>
<p>Scrivere il template è più facile e scorrevole; infatti per chiudere una tag si può usare {/} che ha la magica funzione di chiudere l&#8217;ultimo che è stato aperto</p>
<div class="dean_ch" style="white-space: nowrap;">
<span class="br0">&#123;</span><a href="http://wiki.dwoo.org/index.php/Blocks:foreach"><span class="kw1">foreach</span></a> $array item<span class="br0">&#125;</span><br />
&nbsp; bla bla bla..<br />
<span class="br0">&#123;</span>/<a href="http://wiki.dwoo.org/index.php/Blocks:foreach"><span class="kw1">foreach</span></a><span class="br0">&#125;</span><br />
&nbsp;</div>
<p>oppure</p>
<div class="dean_ch" style="white-space: nowrap;">
<span class="br0">&#123;</span><a href="http://wiki.dwoo.org/index.php/Blocks:foreach"><span class="kw1">foreach</span></a> $array item<span class="br0">&#125;</span><br />
&nbsp; bla bla bla..<br />
<span class="br0">&#123;</span>/<span class="br0">&#125;</span><br />
&nbsp;</div>
<p>Interessante anche la funzionalità del tag {dynamic} che indica al compilatore dwoo che quel blocco di template va rieseguito ad ogni invocazione e non deve essere cachato.</p>
<div class="dean_ch" style="white-space: nowrap;">
Questo contentuto sarà messo nella cache di dwoo<br />
<span class="br0">&#123;</span>dynamic<span class="br0">&#125;</span><br />
&nbsp; tutto quello che sta qui dentro non verrà mai cachato ma sarà<br />
&nbsp; reinterpretato ogni volta, molto utile per la gestione dei banner ad esempio.<br />
<span class="br0">&#123;</span>/<span class="br0">&#125;</span><br />
anche questo contenuto finirà nella cache<br />
&nbsp;</div>
<p>La funzionalità più importante a mio avviso resta la capacità del compilatore di riconoscere javascript e css (per le parentesi graffe).<br />
Con smarty era necessario chiudere il blocchi JS e CSS tra i tag {literal}&#8230;{/literal} che disabilitano l&#8217;interprete di template.</p>
<div class="dean_ch" style="white-space: nowrap;">
<span class="br0">&#123;</span>literal<span class="br0">&#125;</span><br />
.table <span class="br0">&#123;</span><br />
&nbsp; color: #FFF;<br />
&nbsp; border: 1px solid #<span class="nu0">000</span>;<br />
<span class="br0">&#125;</span><br />
<span class="br0">&#123;</span>/literal<span class="br0">&#125;</span><br />
&nbsp;</div>
<p>che può essere un compromesso accettabile.. ma spesso capita di dover passare in smarty dei valori che devono finire nel CSS o nel JS, e per fare ciò era necessario chiudere il tag {/literal} prima della variabile e riaprirlo subito dopo.</p>
<div class="dean_ch" style="white-space: nowrap;">
<span class="br0">&#123;</span>literal<span class="br0">&#125;</span><br />
.table <span class="br0">&#123;</span><br />
&nbsp; color: #FFF;<br />
&nbsp; border: <span class="br0">&#123;</span>/literal<span class="br0">&#125;</span><span class="br0">&#123;</span>$border_width<span class="br0">&#125;</span><span class="br0">&#123;</span>literal<span class="br0">&#125;</span>px solid #000;<br />
}<br />
<span class="br0">&#123;</span>/literal<span class="br0">&#125;</span><br />
&nbsp;</div>
<p>Questo è decisamente un compromesso meno facile a cui scendere. Dwoo risolve questo dilemma semplicemente: ignorando i tags che dopo la parentesi quadra hanno uno spazio o un caratte accapo.<br />
Il seguente blocco di codice in Dwoo è perfettamente legittimo.</p>
<div class="dean_ch" style="white-space: nowrap;">
<span class="br0">&#123;</span>literal<span class="br0">&#125;</span><br />
.table <span class="br0">&#123;</span><br />
&nbsp; color: #FFF;<br />
&nbsp; border: <span class="br0">&#123;</span>$border_width<span class="br0">&#125;</span>px solid #000;<br />
}<br />
<span class="br0">&#123;</span>/literal<span class="br0">&#125;</span><br />
&nbsp;</div>
<p>Infine Dwoo introduce l&#8217;ereditarietà, che resta la caratteristica più interessante e potente del motore. Seguo un esempio per spiegarlo:<br/><br />
<br />
Un file <b>base.tpl</b> con questo contenuto:</p>
<div class="dean_ch" style="white-space: nowrap;">
&lt;html&gt;<br />
&nbsp; &lt;head&gt;<br />
&nbsp; &nbsp; &lt;title&gt;<span class="br0">&#123;</span><a href="http://wiki.dwoo.org/index.php/Blocks:block"><span class="kw1">block</span></a> <span class="st0">&quot;title&quot;</span><span class="br0">&#125;</span>Il mio Sito<span class="br0">&#123;</span>/<a href="http://wiki.dwoo.org/index.php/Blocks:block"><span class="kw1">block</span></a><span class="br0">&#125;</span>&lt;/title&gt;<br />
&nbsp; &nbsp; <span class="coMULTI">{* css etc. *}</span><br />
&nbsp; &lt;/head&gt;<br />
&nbsp; &lt;body&gt;<br />
&nbsp; &nbsp; &lt;h1&gt;<span class="br0">&#123;</span><a href="http://wiki.dwoo.org/index.php/Blocks:block"><span class="kw1">block</span></a> <span class="st0">&quot;page-title&quot;</span><span class="br0">&#125;</span>Default page title<span class="br0">&#123;</span>/<a href="http://wiki.dwoo.org/index.php/Blocks:block"><span class="kw1">block</span></a><span class="br0">&#125;</span>&lt;/h1&gt;<br />
&nbsp; &nbsp; &lt;div id=&quot;content&quot;&gt;<br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><a href="http://wiki.dwoo.org/index.php/Blocks:block"><span class="kw1">block</span></a> <span class="st0">&quot;content&quot;</span><span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; Benvenuto!!<br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>/<a href="http://wiki.dwoo.org/index.php/Blocks:block"><span class="kw1">block</span></a><span class="br0">&#125;</span><br />
&nbsp; &nbsp; &lt;/div&gt;<br />
&nbsp; &lt;/body&gt;<br />
&lt;/html&gt;<br />
&nbsp;</div>
<p>Viene esteso dal file <b>gallery.tpl</b>, che sovrascrive il blocco <em>&#8220;title&#8221;</em></p>
<div class="dean_ch" style="white-space: nowrap;">
<span class="br0">&#123;</span><a href="http://wiki.dwoo.org/index.php/Functions:extends"><span class="kw2">extends</span></a> <span class="st0">&quot;base.html&quot;</span><span class="br0">&#125;</span><br />
<span class="br0">&#123;</span><a href="http://wiki.dwoo.org/index.php/Blocks:block"><span class="kw1">block</span></a> <span class="st0">&quot;title&quot;</span><span class="br0">&#125;</span><br />
Photo Gallery<br />
<span class="br0">&#123;</span>/<a href="http://wiki.dwoo.org/index.php/Blocks:block"><span class="kw1">block</span></a><span class="br0">&#125;</span><br />
&nbsp;</div>
<p>Infine il file <b>photo_gallery.tpl</b> estende <b>gallery.tpl</b> sovrascrivendo altri blocchi di contenuto.</p>
<div class="dean_ch" style="white-space: nowrap;">
<span class="br0">&#123;</span><a href="http://wiki.dwoo.org/index.php/Functions:extends"><span class="kw2">extends</span></a> <span class="st0">&quot;gallery_base.html&quot;</span><span class="br0">&#125;</span><br />
<span class="br0">&#123;</span><a href="http://wiki.dwoo.org/index.php/Blocks:block"><span class="kw1">block</span></a> <span class="st0">&quot;title&quot;</span><span class="br0">&#125;</span>Home &#8211; <span class="br0">&#123;</span>$dwoo.<span class="me1">parent</span><span class="br0">&#125;</span><span class="br0">&#123;</span>/<a href="http://wiki.dwoo.org/index.php/Blocks:block"><span class="kw1">block</span></a><span class="br0">&#125;</span><br />
<span class="br0">&#123;</span><a href="http://wiki.dwoo.org/index.php/Blocks:block"><span class="kw1">block</span></a> <span class="st0">&quot;page-title&quot;</span><span class="br0">&#125;</span>Gallery home<span class="br0">&#123;</span>/<a href="http://wiki.dwoo.org/index.php/Blocks:block"><span class="kw1">block</span></a><span class="br0">&#125;</span><br />
<span class="br0">&#123;</span><a href="http://wiki.dwoo.org/index.php/Blocks:block"><span class="kw1">block</span></a> <span class="st0">&quot;content&quot;</span><span class="br0">&#125;</span><br />
&nbsp; <span class="br0">&#123;</span><a href="http://wiki.dwoo.org/index.php/Blocks:foreach"><span class="kw1">foreach</span></a> $images img<span class="br0">&#125;</span><br />
&nbsp; &nbsp; &lt;img src=&quot;<span class="br0">&#123;</span>$img.<span class="me1">url</span><span class="br0">&#125;</span>&quot; alt=&quot;<span class="br0">&#123;</span>$img.<span class="me1">description</span><span class="br0">&#125;</span>&quot; /&gt;<br />
&nbsp; <span class="br0">&#123;</span>/<a href="http://wiki.dwoo.org/index.php/Blocks:foreach"><span class="kw1">foreach</span></a><span class="br0">&#125;</span><br />
<span class="br0">&#123;</span>/<a href="http://wiki.dwoo.org/index.php/Blocks:block"><span class="kw1">block</span></a><span class="br0">&#125;</span><br />
&nbsp;</div>
<p>Compilando il file <b>photo_gallery.tpl</b> si ottiene il seguente output:</p>
<div class="dean_ch" style="white-space: nowrap;">
&lt;html&gt;<br />
&nbsp; &lt;head&gt;<br />
&nbsp; &nbsp; &lt;title&gt;Home &#8211; Gallery&lt;/title&gt;<br />
&nbsp; &lt;/head&gt;<br />
&nbsp; &lt;body&gt;<br />
&nbsp; &nbsp; &lt;h1&gt;Gallery home&lt;/h1&gt;<br />
&nbsp; &nbsp; &lt;div id=&quot;content&quot;&gt;<br />
&nbsp; &nbsp; &nbsp; &lt;img src=&quot;/example.jpg&quot; alt=&quot;image&quot; /&gt;<br />
&nbsp; &nbsp; &nbsp; &lt;img src=&quot;/example2.jpg&quot; alt=&quot;image&quot; /&gt;<br />
&nbsp; &nbsp; &nbsp; &lt;img src=&quot;/example3.jpg&quot; alt=&quot;image&quot; /&gt;<br />
&nbsp; &nbsp; &lt;/div&gt;<br />
&nbsp; &lt;/body&gt;<br />
&lt;/html&gt;<br />
&nbsp;</div>
<h3><strong>Ma è un linguaggio di programmazione, non è adatto a un grafico</strong></h3>
<p>
Questa è l&#8217;accusa più ovvia da cui un motore come Dwoo deve difendersi. Tuttavia nei miei anni di lavoro non ho mai incontrato un grafico web (intendo il tizio che scrive HTML e CSS per far somigliare il più possibile una pagina web ad un file fatto con photoshop) che non avesse abbastanza nozioni per capire cosa è una variabile, un ciclo o una inclusione. Non vedo perchè non possa sforzarsi di capire anche cosa è l&#8217;ereditarietà.
</p>
<h3><strong>In conclusione</strong></h3>
<p>
Ho lavorato usando smarty per tanti anni (5?, 6?) e non lo avrei mai abbandonato se non avessi sentito così forte l&#8217;esigenza di un template engine costruito su una piattaforma non obsoleta. l&#8217;esigenza di <a href="http://www.astarita.org/blog/2009/02/22/perche-e-indispensabile-fare-refactoring/">refattorizzare</a> esigeva un&#8217;evoluzione.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zulin.org/?feed=rss2&amp;p=268</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>dell&#8217;uguaglianza</title>
		<link>http://www.zulin.org/?p=260</link>
		<comments>http://www.zulin.org/?p=260#comments</comments>
		<pubDate>Fri, 02 Jan 2009 17:29:40 +0000</pubDate>
		<dc:creator>Arsenio [zulin] Siani</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://www.zulin.org/?p=260</guid>
		<description><![CDATA[[ragionamento_a_cervello_libero]
Sono cresciuto in una famiglia di cristiani.
Ho frequentato l&#8217;asilo presso un istituto religioso.
Ho frequentato le scuole elementari presso un istituto religioso.
Frequento, ad oggi, una associazione religiosa.
In tutti gli insegnamenti cristiani che ricevevo, vi era sempre un precetto semplice, tanto semplice da passare inosservato per quanto fosse scontato:
tutti gli uomini sono uguali.
Oggi classifico questa affermazione come [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-262" style="border: 1px solid #333;" title="uguaglianza" src="http://www.zulin.org/wp-content/uploads/2009/01/uguaglianza.jpg" alt="uguaglianza" width="182" height="199" />[ragionamento_a_cervello_libero]<br />
Sono cresciuto in una famiglia di cristiani.<br />
Ho frequentato l&#8217;asilo presso un istituto religioso.<br />
Ho frequentato le scuole elementari presso un istituto religioso.<br />
Frequento, ad oggi, una associazione religiosa.</p>
<p>In tutti gli insegnamenti cristiani che ricevevo, vi era sempre un precetto semplice, tanto semplice da passare inosservato per quanto fosse scontato:<br />
<strong>tutti gli uomini sono uguali</strong>.</p>
<p>Oggi classifico questa affermazione come una menzogna.<br />
Gli uomini NON sono tutti uguali, certi sono migliori di altri (questo è innegabile), e non solo per fortuna, o condizioni economiche, ambientali, religiose o familiari; semplicemente c<em>erta gente è migliore di altra gente</em> (per grazia ricevuta, per opera dello spirito santo, per quello-che-vi-pare).</p>
<p>Quando sulla terra non vi erano esseri umani, e Dio fece i primi due, si preoccupò di crearne uno subordinato all&#8217;altro. Niente uguaglianza. Niente &#8220;siete tutti figli miei&#8221;.<br />
E quando un po&#8217; di tempo più avanti, arriva Gesù a spiegarci meglio le cose, aggiunge &#8220;io sono qui per servire, non per essere servito; sono il servo, non il padrone&#8221;, a sottoscrivere l&#8217;esistenza di chi comanda e di chi viene servito.<br />
[/ragionamento_a_cervello_libero]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zulin.org/?feed=rss2&amp;p=260</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>51 risposte a 51 pensieri atei</title>
		<link>http://www.zulin.org/?p=258</link>
		<comments>http://www.zulin.org/?p=258#comments</comments>
		<pubDate>Tue, 16 Dec 2008 16:41:58 +0000</pubDate>
		<dc:creator>Arsenio [zulin] Siani</dc:creator>
				<category><![CDATA[La parola di zulin]]></category>
		<category><![CDATA[aforisma]]></category>
		<category><![CDATA[opinioni]]></category>

		<guid isPermaLink="false">http://www.zulin.org/?p=258</guid>
		<description><![CDATA[un po&#8217; di tempo fa postai questa raccolta di aforismi atei.
mi pare giusto, almeno per &#8220;par codicio&#8221; postare una mia &#8220;personalissima&#8221; replica ai signori che hanno elargito le loro perle di saggezza.

Io credo in Dio, solo che lo chiamo Natura. &#8211; Frank Lloyd Wright
Beh, alcuni lo chiamano Geova, altri Allha.. non ci vedo niente di [...]]]></description>
			<content:encoded><![CDATA[<p>un po&#8217; di tempo fa postai <a href="http://www.zulin.org/?p=180" target="_blank">questa raccolta di aforismi atei</a>.<br />
mi pare giusto, almeno per &#8220;par codicio&#8221; postare una mia &#8220;personalissima&#8221; replica ai signori che hanno elargito le loro perle di saggezza.</p>
<ol>
<li><em>Io credo in Dio, solo che lo chiamo Natura.</em> &#8211; Frank Lloyd Wright<br />
<strong>Beh, alcuni lo chiamano Geova, altri Allha.. non ci vedo niente di male se lo vuoi chiamare Natura.</strong></li>
<li><em>Fede vuol dire non voler conoscere la verità.</em> &#8211; Friedrich Nietzsche<br />
<strong>Fede vuol dire riconoscere di non essere in grado di comprendere la verità.</strong></li>
<li><em>Un uomo è accettato in chiesa per le cose che crede, ed è cacciato via per le cose che conosce.</em> &#8211; Samuel Clemens (Mark Twain)<br />
<strong>Benchè le cose che conosco mi portano a malgiudicare la chiesa a voce alta; non sono mai stato cacciato via (e vi giuro che di cose ne ho dette!).</strong></li>
<li><em>La religione è considerata vera dalla maggior parte delle persone, falsa dai saggi, e utile dai potenti.</em> &#8211;  Seneca<br />
<strong>&#8230;ed è considerata un buon argomento di discussione da quelli che non sanno come passare la serata.</strong></li>
<li><em>La filosofia è una domanda a cui non bisognerebbe rispondere. La religione è la risposta alle domande che non si dovrebbero porre.</em> &#8211; Anonimo<br />
<strong>La fede è una risposta ad una domanda che non è necessario porre.</strong></li>
<li><em>Non solo Dio non esiste, ma avete mai provato a trovare un idraulico nel fine settimana?</em> &#8211; Woody Allen<br />
<strong>Mio cugino è idraulico&#8230; come la mettiamo adesso?<br />
</strong></li>
<li><em>Se non fossi stato ateo, avrei creduto in un Dio che salva le persone non sulla base delle cose che dicono, ma sulla base del loro modo di vivere. Avrei creduto in un Dio che preferisce salvare un onesto e rispettoso ateo e non un predicatore televisivo le cui parole sono DIO DIO DIO ma le cui azioni sono SBAGLIO SBAGLIO SBAGLIO.</em> &#8211; Isaac Asimov<br />
<strong>Mi sa che è come dici tu, sai?<br />
</strong></li>
<li><em>Credere nel sopranaturale è il riflesso di uno sbaglio dell’immaginazione.</em> &#8211; Edward Abbey<br />
<strong>Credere che il soprannaturale e il divino siano la stessa cosa è un limite dell&#8217;immaginazione.<br />
</strong></li>
<li><em>Con o senza religione avremmo avuto lo stesso persone buone che fanno cose buone e persone cattive che fanno cose cattive. Ma per avere persone buone che fanno cose cattive è necessaria la religione.</em> &#8211; Steven Weinberg<br />
<strong>Così come serve la comicità per avere persone intelligenti che dicono cose stupide, o la politica per avere persone stupide che dicono cose intelligenti. Ciononostante continuiamo a ridere e a essere governati da migliaia di anni sempre alla stessa maniera.</strong></li>
<li><em>Al mondo ci sono due categorie di persone: persone intelligenti senza religione e persone religiose senza intelligenza.</em> &#8211; Abu’l‐Ala al Ma’arri<br />
<strong>Abbiamo due modi diversi di misurare l&#8217;intelligenza</strong></li>
<li><em>Dato che la chiesa e la bibbia si sono sbagliate dicendoci da dove veniamo, come possiamo credergli quando ci dicono dove stiamo andando?</em>- Anonimo<br />
<strong>Dove è che si sono sbagliate dicendoci da dove veniamo?</strong></li>
<li><em>Diffido di quelle persone che sanno così bene cosa Dio vuole che loro facciano, perché noto che coincide sempre con quello che loro desiderano fare.</em> &#8211; Susan B. Anthony<br />
<strong>In alcune culture Dio si chiama entusiasmo.</strong></li>
<li><em>Le cose</em> che non si vedono e le cose che non esistono si assomigliano davvero tanto.- Delos B. McKown<br />
<strong>Il vento non si vede, così come il caldo e il freddo; dimmi, neppure questi esistono?</strong></li>
<li><em>Due mani che lavorano fanno molto di più di mille religiosi in preghiera.</em> &#8211; Anonimo<br />
<strong>Sì, possono fare davvero tanto male, ma se mai qualcosa verrà fuori dalla preghiera di mille oratori&#8230; di certo non sarà male.<br />
</strong></li>
<li><em>Non è successo come racconta la Bibbia; non è stato Dio a creare l’uomo a sua immagine e somiglianza, ma il contrario. L’uomo ha creato Dio a sua immagine e somiglianza.</em> &#8211; Ludwig Feuerbach<br />
<strong>Solo perchè non se lo poteva immaginare diversamente. Prova te a disegnare il tramonto di tre soli, vediamo se non lo fai uguale al tramonto che conosci.</strong></li>
<li><em>La gente mi chiede cosa ne pensi dei preti donna. Cosa, un prete donna? Donne preti. Grande, magnifico. Così potrò non ascoltare preti di entrambi i sessi.</em> &#8211; Bill Hicks<br />
<strong>Sono d&#8217;accordo con Bill. Il prete non serve&#8230;perchè a essere importante è il messaggio, non il messaggero.<br />
</strong></li>
<li><em>Tutti i miracoli della bibbia alla fine scompariranno col progredire della scenza.</em> &#8211; Matthew Arnold<br />
<strong>Sì, è possibile, ma temo che il progredire della scienza non leverà la fede ad un solo credente.<br />
</strong></li>
<li><em>La fede cieca è un ironico regalo da restituire al creatore dell’intelligenza umana.</em> &#8211; Anonimo<br />
<strong>La fede è una <span style="text-decoration: underline;">dimostrazione di successo</span> da ritornare al creatore della SAGGEZZA umana</strong>.</li>
<li><em>Ringraziare di avere una vita è forse il vano e presuntuoso desiderio di volerne una seconda.</em> &#8211; Richard Dawkins<br />
<strong>&#8230;o forse il modo migliore di ricorda a se stessi che la vita non va sprecata, questione di punti di vista.</strong></li>
<li><em>Ciò che si può affermare senza prove lo si può anche negare senza prove.</em> &#8211; Christopher Hitchens<br />
<strong>Sì, ma che bello quando ti convinci di una cosa e non ti servono prove per crederci.</strong></li>
<li><em>Nella cristianità né la morale né la religione entrano mai in contatto con la realtà.</em> &#8211; Friedrich Nietzsche<br />
<strong>Uhhm&#8230; davvero?</strong></li>
<li><em>Il vanto più grande delle donne è quello di non aver mai contribuito con una sola riga alla Bibbia.</em> &#8211; George W. Foote<br />
<strong>&#8230;e anche quello di non essere annotate negli annali storici tra il peggiori assasini e dittatori.</strong></li>
<li><em>Il primo giorno l’uomo creò Dio.</em> &#8211; Anonimo<br />
<strong>Facciamo che sono nati nello stesso istante e non se ne parla più&#8230;. ok?<br />
</strong></li>
<li><em>Suppongo che siamo entrambi atei. Io semplicemente credo in un dio appena minore del tuo. Quando capirai perché rinneghi tutti gli altri dei possibili capirai perché io rinnego il tuo.</em> &#8211; Stephen Roberts<br />
<strong>Ma tu capisci perchè io comprendo che tutti gli altri possibili dei SONO il mio.</strong></li>
<li><em>Non hai bisogno della bibbia per giustificare l’amore, ma non esiste strumento migliore per giustificare l’odio.</em> &#8211; Richard A. Weatherwax</li>
<li><em>Chi è Dio? Hai presente quando desideri tanto qualcosa che chiudi gli occhi e chiedi di ottenerla? Beh, Dio è il tizio che ti ignora.</em> &#8211; Steve Buscemi (Dal film “The Island”)<br />
<strong>I bambini che ottengono sempre quello che chiedono crescono viziati&#8230; Questo lo sa ogni genitore, e lo ritiene giusto; tutti i bambini invece concordano che sia ingiusto.</strong></li>
<li><em>Dai a un uomo un pesce e lui mangerà oggi; insegna ad un uomo a pescare e lui mangerà tutta la vita; dai a un uomo la religione e lui morirà pregando di ottenere un pesce.</em> &#8211; Anonimo<br />
<strong>Dai allo stesso uomo la fede e non avrà fame (questa non l&#8217;ho capita ancora neppure io.. ma è la risposta più pertinente).<br />
</strong></li>
<li><em>Dire che l’ateismo è una religione è come dire che la calvizie è un colore di capelli.</em> &#8211; Don Hirschberg<br />
<strong>L&#8217;ateismo NON è una religione, è uno stato passeggero (per i più fortunati).</strong></li>
<li><em>Dio dovrebbe essere giudicato per crimini contro l’umanità.</em> &#8211; Bryan Emmanuel Gutierrez<br />
<strong>Che sarebbe dei giudici se fossero giudicati dai loro imputati?</strong></li>
<li><em>Non ho paura della morte. Sono stato morto per miliardi e miliardi di anni prima di nascere e non ho sofferto il minimo inconveniente.</em> &#8211; Mark Twain<br />
<strong>Ti invidio.<br />
</strong></li>
<li><em>Di tutte le religioni il cristianesimo è senza dubbio quella che instilla la maggiore tolleranza, ciononostante ad oggi i cristiani sono tra i meno tolleranti degli uomini.</em> &#8211; Voltaire<br />
<strong>Non saprei&#8230; insomma.. pure gli ebrei non sono tanto da meno&#8230; e i mussulmani poi&#8230; quelli si che sono intolleranti!&#8230;.. Maddai??!?!? Siamo ancora a questo?</strong></li>
<li><em>Se ci fosse stato davvero un Dio non credo che l’avrebbe fatta passare tanto liscia a quelli che dubitavano della sua esistenza.</em> &#8211; Bertrand Russell<br />
<strong>Dannato libero arbitrio. </strong></li>
<li><em>Dio ha voglia di eliminare il male ma non ne è capace? Allora non è onnipotente! É capace ma non vuole? Allora è malvagio. </em><em>É entrambe le cose? Allora da dove viene il male? Non è nessuna delle cose? Allora perchè lo chiamiamo Dio?</em>- Epicuro<br />
<strong>Riguardo al male vedi la domanda 26</strong></li>
<li><em>Io sono poliateo; ci sono molti Dei in cui non credo.</em> &#8211; Dan Fouts<br />
<strong>Basta che ne neghi solo uno a favore degli altri e saresti comunque nello sbaglio.</strong></li>
<li><em>Una bugia è una bugia, anche se tutti ci credono. La verità è la verità anche se nessuno lo crede..</em> &#8211; David Stevens<br />
<strong>Hai appena detto il contrario di quello che avresti dovuto dire&#8230; La verità è tale solo quando TUTTI ci credono.<br />
</strong></li>
<li><em>La religione fa tre cose efficacemente: Divide i popoli, controlla i popoli, delude i  popoli.</em> &#8211; Carlespie Mary Alice McKinney</li>
<li><em>La storia ci insegna che nessuna causa ha fatto tanti morti quanto la parola di Dio.</em> &#8211; Giulian Buzila<br />
<strong>è vero.<br />
</strong></li>
<li><em>L’ateismo è una organizzazione non profetica.</em> &#8211; George Carlin<br />
&#8230;.</li>
<li><em>Se letta attentamente la Bibbia è lo strumento più efficace di evangelizzazione Atea.</em> &#8211; Isaac Asimov<br />
<strong>Sono daccordo, la bibbia necessita di una riorganizzazione.</strong></li>
<li><em>Dio non uccide le persone, sono le persone di Dio che uccidono le persone.</em> &#8211; David Viaene<br />
<strong>Quannto hai ragione!</strong></li>
<li><em>La religione è l’oppio delle masse.</em> &#8211; Karl Marx<br />
<strong>Se dio ha creato pure l&#8217;oppio, una ragione ci sarà.. no?</strong></li>
<li><em>La religione è come una pillola che deve essere ingoiata senza masticare</em> &#8211; Anonymous<br />
<strong>Se l&#8217;effetto rimane lo stesso&#8230; non vedo il problema</strong></li>
<li><em>Non è abbastanza vedere un giardino per dire che è meravliglioso? Dobbiamo per forza anche credere che si sono delle fate nascoste tra i cespugli?</em> &#8211; Douglas Adams<br />
<strong>Solo pochi sono capaci di stupirsi dell&#8217;ordinario. </strong></li>
<li><em>Per essere davvero liberi è necessaria una mente libera.</em> &#8211; Alexander Loutsis<br />
<strong>una mente libera è necessaria anche per comprendere i meccanismi divini.</strong></li>
<li><em>Gli animali non hanno un Dio, loro sono più astuti.</em> &#8211; Ronnie Snow<br />
<strong>Sì, loro sono decisamente più astuti: benchè sappiano che c&#8217;è Dio, non hanno sentito la necessità di dargli un nome. </strong><a href="http://www.zulin.org/?p=76">Dai un occhio qua.</a></li>
<li><em>La morte è la verità più agghiacciante che un uomo deve affrontare. La religione rappresenta la distrazione perfetta.</em> &#8211; Anonimo<br />
<strong>una risposta migliore di quella che potrei dare io <a href="http://quidveritas.blogspot.com/2008/09/qev-il-tempo-e-la-felicit.html" target="_blank">la trovi qui</a></strong></li>
<li><em>L’interpretazione della bibbia dipende dall’ignoranza delle persone che la leggono.</em> &#8211; Robert G. Ingersoll<br />
<strong>Qui hai ragione. Ma che ci vuoi fare? non puoi controllare in mano a chi vanno a finire gli scritti, sarà per questo che Gesù preferiva parlare che scrivere.<br />
</strong></li>
<li><em>La fede non da risposte, semplicemente non fa porre la domanda.</em> &#8211; Frater Ravus<br />
<strong>Ecco! giusto, non ci poniamo la domanda quando siamo certi della risposta! <a href="http://www.zulin.org/?p=76">Dai sempre un occhio qua</a>.<br />
</strong></li>
<li><em>Dio è una cosa fragile, può essere cancellato da un soffio di scienza o da un po’ di buon senso.</em> &#8211; Chapman Cohen<br />
<strong>&#8230;</strong></li>
<li><em>Se tutti i cristiani che almeno una volta hanno detto di un altro cristiano:”Quello non è un buon cristiano” scomparissero, non resterebbero più cristiani.</em> &#8211; Anonimo<br />
<strong>Ahimè è vero&#8230;. il peccato originale ce lo abbiamo tutti&#8230; </strong></li>
<li><em>Il fatto che un credente è più felice di uno scettico è tanto vero quanto il fatto che un ubriaco è più felice di uno sobrio.</em> &#8211; George Bernard Shaw<br />
<strong>Cosa ha di meno la felicità di un ebbro rispetto alla felicità di un sobrio? </strong></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.zulin.org/?feed=rss2&amp;p=258</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Tempus Vernum</title>
		<link>http://www.zulin.org/?p=251</link>
		<comments>http://www.zulin.org/?p=251#comments</comments>
		<pubDate>Wed, 10 Dec 2008 22:48:36 +0000</pubDate>
		<dc:creator>Arsenio [zulin] Siani</dc:creator>
				<category><![CDATA[La parola di zulin]]></category>
		<category><![CDATA[frase del giorno]]></category>
		<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://www.zulin.org/?p=251</guid>
		<description><![CDATA[
Tempus vernum è quando vedi il sole lì in fondo, ma non sai se sta salendo o scomparendo.
Tempus vernum è quando il cielo è terso, il sole brilla, ma tu senti freddo.
Tempus vernum è quando una poesia parla di te.
Tempus vernum è quando non sai dove andare, ma non ti senti perso.
Tempus vernum è quando [...]]]></description>
			<content:encoded><![CDATA[<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="449" height="40" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="wmode" value="window" /><param name="allowScriptAccess" value="always" /><param name="flashvars" value="hostname=cowbell.grooveshark.com&amp;widgetID=213563&amp;style=metal" /><param name="src" value="http://listen.grooveshark.com/songWidget.swf" /><embed type="application/x-shockwave-flash" width="449" height="40" src="http://listen.grooveshark.com/songWidget.swf" flashvars="hostname=cowbell.grooveshark.com&amp;widgetID=213563&amp;style=metal" allowscriptaccess="always" wmode="window"></embed></object><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="1" height="1" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="id" value="W48f3f305ad1283e449403eb485ef37fb" /><param name="wmode" value="transparent" /><param name="allowNetworking" value="all" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://widgets.clearspring.com/o/48f3f305ad1283e4/49403eb485ef37fb/48f3f3053cbe0b4e/4a6388e8" /><embed id="W48f3f305ad1283e449403eb485ef37fb" type="application/x-shockwave-flash" width="1" height="1" src="http://widgets.clearspring.com/o/48f3f305ad1283e4/49403eb485ef37fb/48f3f3053cbe0b4e/4a6388e8" allowscriptaccess="always" allownetworking="all" wmode="transparent"></embed></object></p>
<p>Tempus vernum è quando vedi il sole lì in fondo, ma non sai se sta salendo o scomparendo.<br />
Tempus vernum è quando il cielo è terso, il sole brilla, ma tu senti freddo.<br />
Tempus vernum è quando una poesia parla di te.<br />
Tempus vernum è quando non sai dove andare, ma non ti senti perso.<br />
Tempus vernum è quando ti riaddormenti sperando che il sogno interrotto continui.<br />
Tempus vernum è quando riesci a vedere un prodigio, ma non lo sai spiegare agli altri.<br />
Tempus vernum è quando al mattino sei di buon umore.<br />
Tempus vernum è quando punti il dito e attorno non c&#8217;è niente.<br />
Tempus vernum è quando finalmente apri gli occhi e quello che vedi non ti piace.<br />
Tempus vernum è quando un cantante dice meglio di te come ti senti.<br />
Tempus vernum infondo è un buon augurio&#8230; Vernum vuol dire &#8220;Cambiamento&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zulin.org/?feed=rss2&amp;p=251</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Linux Day 2008</title>
		<link>http://www.zulin.org/?p=247</link>
		<comments>http://www.zulin.org/?p=247#comments</comments>
		<pubDate>Mon, 27 Oct 2008 09:04:47 +0000</pubDate>
		<dc:creator>Arsenio [zulin] Siani</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[politics]]></category>

		<guid isPermaLink="false">http://www.zulin.org/?p=247</guid>
		<description><![CDATA[Lo scorso WeekEnd si è tenuto l&#8217;annuale LinuxDay; quest&#8217;anno l&#8217;evento è stato organizzato con la  collaborazione di 3 LUG campani: IrLUG HCSSLUG e XaLUG, che hanno organizzato una due-giornate all&#8217;insegna dell&#8217;opensource. La prima (venerdì) nelle aule della facoltà di informatica dell&#8217;Università si Salerno, e la seconda (sabato) ad Avellino in un centro sociale.
Il contributo del [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.zulin.org/wp-content/uploads/2008/10/ld08.png"><img class="alignleft size-full wp-image-249" style="margin: 5px" title="ld08" src="http://www.zulin.org/wp-content/uploads/2008/10/ld08.png" alt="" width="202" height="285" /></a>Lo scorso WeekEnd si è tenuto l&#8217;annuale LinuxDay; quest&#8217;anno l&#8217;evento è stato organizzato con la  collaborazione di 3 LUG campani: <a href="http://www.irlug.it/">IrLUG</a> <a href="http://www.hcsslug.org/">HCSSLUG</a> e <a href="http://xalug.tuxlab.org/">XaLUG</a>, che hanno organizzato una due-giornate all&#8217;insegna dell&#8217;opensource. La prima (venerdì) nelle aule della facoltà di informatica dell&#8217;Università si Salerno, e la seconda (sabato) ad Avellino in un centro sociale.</p>
<p>Il contributo del lug (XaLUG, appunto) di cui faccio parte si è concretizzato in un talk su &#8220;Iternet e webservices&#8221;. Il talk l&#8217;ho tenuto io, che, con questo intervento ho portato la bandiera dello Xalug a questo evento. Su <a href="http://www.slideshare.net">slideshare</a> potete trovare l<a href="http://www.slideshare.net/guest3de08c/linux-day-2008-presentation">e slides della mia presentazione</a>.</p>
<p>Al prossimo anno.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zulin.org/?feed=rss2&amp;p=247</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Cristiano, a qualunque costo!</title>
		<link>http://www.zulin.org/?p=242</link>
		<comments>http://www.zulin.org/?p=242#comments</comments>
		<pubDate>Tue, 07 Oct 2008 13:49:44 +0000</pubDate>
		<dc:creator>Arsenio [zulin] Siani</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://www.zulin.org/?p=242</guid>
		<description><![CDATA[Diversi anni fa, decisi di trasferirmi a Bologna. Durante i miei raid cittadini alla ricerca di sistemazione, trovai PRIMA la chiesa dove sarei andato a sentire messa e DOPO la casa dove sarei andato a dormire.
Ricordo che alla prima messa a cui partecipai era presente un parroco missionario, che stava ringraziando la platea per la [...]]]></description>
			<content:encoded><![CDATA[<p>Diversi anni fa, decisi di trasferirmi a Bologna. Durante i miei raid cittadini alla ricerca di sistemazione, trovai PRIMA la chiesa dove sarei andato a sentire messa e DOPO la casa dove sarei andato a dormire.</p>
<p>Ricordo che alla prima messa a cui partecipai era presente un parroco missionario, che stava ringraziando la platea per la recente raccolta di fondi a favore di una missione in Africa: i soldi raccolti non erano tanti da soddisfare le sue speranze, ma abbastanza per le sue aspettative.</p>
<div id="attachment_243" class="wp-caption alignright" style="width: 401px"><a href="http://www.zulin.org/wp-content/uploads/2008/10/schermata2.png"><img class="size-full wp-image-243" title="mission to africa" src="http://www.zulin.org/wp-content/uploads/2008/10/schermata2.png" alt="" width="391" height="293" /></a><p class="wp-caption-text">Missione cattolica in Africa in un episodio di SouthPark</p></div>
<p>Il parroco ci tenne a spiegare l&#8217;importanza delle missioni in Africa: &#8220;<em>Dovete sapere che l&#8217;Africa è piena di popolazioni che non conoscono Dio, che non sanno cosa è il divino o la religione. Questa raccolta di soldi è importante, perchè spesso i testimoni di Geova arrivano prima di noi </em>(!!)<em>, e quando un villaggio è stato evangelizzato a Geova poi, è difficilissimo riconvertirlo al vangelo: è importante arrivare prima degli altri</em>&#8220;.<br />
So bene che il fine di quelle parole era un altro, ma ascoltandolo, la grottesca immagine qui al lato mi è sembrata quasi verosimile.<br />
Il prete poi continuò: &#8220;<em>Sapete, ci sono voluti ben 5 anni per ottenere il battesimo di un nativo</em>&#8220;.<br />
Ma come? Ottenere il battesimo?<br />
E le cure? le medicine? l&#8217;AIDS? Il cibo? L&#8217;acqua? E i pozzi?<br />
In seguito scoprii che tutte queste cose c&#8217;erano nel programma della missione, non se ne erano dimenticati, ma non ho mai potuto levarmi dalla mente l&#8217;agghiacciante idea che l&#8217;efficacia di una missione <strong>si misura con la quantità di battesimi fatti</strong>, con la quantità di <strong>Anime e non di Vite salvate</strong>. (sarà per questo che si va a costruire prima la <em>chiesa</em> e poi l&#8217;<em>ospedale</em>).</p>
<p><strong>C&#8217;è bisogno di cristiani.</strong></p>
<p>Quando il cristianesimo era solo una setta, i fedeli rischiavano la vita per andare a partecipare all&#8217;eucarestia, per mantenere viva la &#8220;memoria di Lui&#8221;. Allora non aveva importanza che la messa si celebrasse in un bosco o in una grotta o nella cantina di qualcuno: un posto valeva l&#8217;altro.</p>
<p><img class="alignleft" src="http://i169.photobucket.com/albums/u234/DarthKiljoy/Jeez-It.jpg" alt="" width="175" height="202" /></p>
<p>Oggi non più.<br />
Mia madre è convinta che ascoltare la messa nella <strong>basilica di Pompei</strong> valga di più che nella cappelletta sotto casa, e che visitare la <strong>Chiesa di Padre Pio</strong> valga di più che assistere alla funzione nella basilica di Pompei.<br />
Ogni tanto la prendo in giro chiedendole come sta procedendo la sua raccolta di <strong>Bollini Paradiso</strong>.</p>
<p>Mi domando: se Padre Pio avesse avuto a disposizione tutti i soldi che ci sono voluti per mettere in piedi la sua chiesa, avrebbe scelto di farla costruire?<br />
Mi sono convinto che per la cristianità (e la chiesa) ha molto più valore <em>l&#8217;Immagine di Padre Pio</em> che non <em>le sue idee</em>. (Lo scontro tra l&#8217;<strong>essenza delle cose</strong> e la <strong>forma delle cose</strong> (<em>essere e apparire</em>) è trattato nella Bibbia, no?).</p>
<p>Quindi, ben vengano paramenti lucciosi e cattedrali enormi, l&#8217;aria solenne e le vesti dorate. Se anche un solo profano si lascia affascinare dal luogo e dall&#8217;oro; allora il target è raggiunto: un nuovo fedele ingrassa le fila dei cristiani.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zulin.org/?feed=rss2&amp;p=242</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Ancora simboli</title>
		<link>http://www.zulin.org/?p=239</link>
		<comments>http://www.zulin.org/?p=239#comments</comments>
		<pubDate>Tue, 07 Oct 2008 08:36:24 +0000</pubDate>
		<dc:creator>Arsenio [zulin] Siani</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[politics]]></category>

		<guid isPermaLink="false">http://www.zulin.org/?p=239</guid>
		<description><![CDATA[
Ho aggiunto il simbolo che skarabeo mi ha segnalato.
Il numero dei simboli è salito a 12. Sulla mappa trovate i dettagli.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.zulin.org/wp-content/uploads/2008/10/img_0130.jpg"><img class="aligncenter size-medium wp-image-238" title="img_0130" src="http://www.zulin.org/wp-content/uploads/2008/10/img_0130-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>Ho aggiunto il simbolo che skarabeo mi ha segnalato.</p>
<p>Il numero dei simboli è salito a 12. Sulla <a href="http://maps.google.com/maps/ms?ie=UTF8&amp;hl=en&amp;msa=0&amp;msid=111809981287524826543.00045819665aa19a31539&amp;z=16">mappa</a> trovate i dettagli.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zulin.org/?feed=rss2&amp;p=239</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Segni e simboli</title>
		<link>http://www.zulin.org/?p=209</link>
		<comments>http://www.zulin.org/?p=209#comments</comments>
		<pubDate>Tue, 30 Sep 2008 15:47:40 +0000</pubDate>
		<dc:creator>Arsenio [zulin] Siani</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[politics]]></category>

		<guid isPermaLink="false">http://www.zulin.org/?p=209</guid>
		<description><![CDATA[
In questo ultimo mese nel mio paese: Angri, sono comparsi degli strani segni sui muri e sui marciapiedi.
Non ci facevo caso più di tanto. Ma quando il numero è diventato considerevole mi sono preso la briga di contarli.
E sapete una cosa? Sono davvero tanti!
A prima vista potrebbe sembrare un graffio senza senso, ma in giro [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.zulin.org/wp-content/uploads/2008/09/img_0677.jpg"><img class="size-medium wp-image-222 aligncenter" title="img_0677" src="http://www.zulin.org/wp-content/uploads/2008/09/img_0677-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>In questo ultimo mese nel mio paese: <a href="http://it.wikipedia.org/wiki/Angri">Angri</a>, sono comparsi degli strani segni sui muri e sui marciapiedi.<br />
Non ci facevo caso più di tanto. Ma quando il numero è diventato considerevole mi sono preso la briga di contarli.<br />
E sapete una cosa? Sono davvero tanti!</p>
<p>A prima vista potrebbe sembrare un graffio senza senso, ma in giro ce ne sono troppi (e da troppo tempo).<br />
Non sono un esperto in materia di graffiti, ma non credo neppure che si tratti della <a href="http://en.wikipedia.org/wiki/Image:Tag_in_Malm%C3%B6.jpg">TAG di un writer</a>.</p>
<p>Linkata qui in basso trovate la mappa con le posizioni dei simboli che ho notato.</p>
<p><a href="http://maps.google.com/maps/ms?ie=UTF8&amp;hl=en&amp;msa=0&amp;msid=111809981287524826543.00045819665aa19a31539&amp;z=16"><img class="aligncenter size-full wp-image-221" title="schermata1" src="http://www.zulin.org/wp-content/uploads/2008/09/schermata1.png" alt="" width="472" height="338" /></a></p>
<p>Senza sbilanciarmi più di tanto&#8230; direi che questi segni hanno a che vedere con la materia religiosa; non sono un esperto neppure in questa materia, ma ho notato una vaghissima somiglianza con li simbolo dell&#8217;<a href="http://it.wikipedia.org/wiki/Induismo">Induismo</a> (<a href="http://it.wikipedia.org/wiki/Aum">OM</a>).</p>
<p>PS: Se avete notizia di qualche segno che mi è sfuggito, segnalatemelo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zulin.org/?feed=rss2&amp;p=209</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Felicità</title>
		<link>http://www.zulin.org/?p=203</link>
		<comments>http://www.zulin.org/?p=203#comments</comments>
		<pubDate>Fri, 19 Sep 2008 13:32:09 +0000</pubDate>
		<dc:creator>Arsenio [zulin] Siani</dc:creator>
				<category><![CDATA[La parola di zulin]]></category>
		<category><![CDATA[movies]]></category>
		<category><![CDATA[nice videos]]></category>
		<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://www.zulin.org/?p=203</guid>
		<description><![CDATA[Qualche giorno fa, sul blog di Paolo Depa è comparso un post molto interessate, che partendo dal film Hancock, si perde in una digressione sulla ricerca della felicità.
Ho promesso di scrivere un post sull&#8217;argomento: ed eccolo qua.
La domanda che ci si pone (semplificando all&#8217;inverosimile) è: &#8220;come si diventa felici? Come si trova la felicità?&#8221;
Quella della [...]]]></description>
			<content:encoded><![CDATA[<p>Qualche giorno fa, sul <a href="http://quidveritas.blogspot.com/">blog di Paolo Depa</a> è comparso <a href="http://quidveritas.blogspot.com/2008/09/qev-il-tempo-e-la-felicit.html">un post molto interessate</a>, che partendo dal film <a href="http://www.imdb.com/title/tt0448157/">Hancock</a>, si perde in una digressione sulla ricerca della felicità.<br />
<a href="http://quidveritas.blogspot.com/2008/09/qev-il-tempo-e-la-felicit.html#comments">Ho promesso</a> di scrivere un post sull&#8217;argomento: ed eccolo qua.</p>
<p>La domanda che ci si pone (semplificando all&#8217;inverosimile) è: &#8220;come si diventa felici? Come si trova la felicità?&#8221;</p>
<p>Quella della felicità è una ricerca che tento di semplificare.<br />
Diciamo che la ricerca della felicità è un po&#8217; come la ricerca delle chiavi di casa (!!) (è capitato a tutti di perdere un mazzo di chiavi, no?).</p>
<p>Bene, mettiamo che abbiamo perso le chiavi; e che le stiamo cercando diligentemente; scorriamo con la mente tutti i posti in cui si possono trovare, le andiamo a stanare la dove crediamo di trovarle e restiamo delusi quando non le vediamo là, dove credevamo che potessero essere. Continuiamo a fare così fin quando non ci arrendiamo o fin quando non troviamo le dannate chiavi.</p>
<p>Ora, <strong>quale è la prima cosa che si fa quando troviamo quello che stavamo cercando?</strong> Cosa facciamo appena troviamo il mazzo di chiavi?<br />
I più abituati ai miei discorsi risponderebbero: <em>&#8220;cominciamo a cercare un&#8217;altra cosa&#8221;</em>.<br />
Questo è vero&#8230; ma prima, prima ancora, succede qualcos&#8217;altro: smettiamo di cercare quello che abbiamo appena trovato.<br />
<strong>Appena troviamo le chiavi, la prima cosa che facciamo è smettere di cercarle.</strong></p>
<p>Questi due eventi (trovare qualcosa e smettere di cercarla) sono talmente vicini che si può dire che avvengono nello stesso istante.</p>
<p>Il fatto eccezionale è che l&#8217;accadimento di uno di questi due eventi invoca l&#8217;altro.</p>
<p>Detto in parole povere: <strong>se smettiamo di cercare le chiavi, queste si fanno trovare</strong>.<br />
E non dite che non vi è mai capitato! A tutti capita di ritrovarsi inaspettatamente in mano qualcosa che si stava cercando qualche giorno fa, e che (per un motivo o per un altro) si era rinunciato a trovare.</p>
<p>Una frase che sento ripetere spesso è: &#8220;<em>piantala di cercarlo, vedrai che quando non ti serve più esce da solo</em>&#8220;. E l&#8217;ho sentita tanto spesso da convincermi che dice qualcosa di vero.</p>
<p>Non è un caso, ma un meccanismo (!!): appena la nostra volontà la smette di desiderare una cosa, qualcosa cambia, e la cosa che desideravamo appare.<br />
<em>(mi rendo conto che detta così pare il motto di una di quelle religioni esoteriche, ma sto cercando di farla semplice, il più possibile)</em></p>
<p>Lo stesso vale per la felicità: <strong>appena si smette di cercare di essere felici, la felicità arriva</strong>, oppure, detta forse meglio: <strong>la ricerca della felicità causa, di per se, infelicità</strong>.</p>
<p>Una illuminazione può venire da questo filmato (tratto dal film <a href="http://www.imdb.com/title/tt0129290/">Patch Addams</a>):</p>
<p><a href="http://www.zulin.org/?p=203"><em>Click here to view the embedded video.</em></a></p>
<p>Beh, rileggendomi mi convinco sempre di più che farei bene a fermarmi <a href="http://www.demotivateus.com/posters/hot-reality-girl-soccer-demotivational-poster.jpg">sulle chiappe della tipa</a> abbracciata al palo, fregandomene di quello che c&#8217;è scritto sotto: sarei senza dubbio più <strong>felice</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zulin.org/?feed=rss2&amp;p=203</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Il danno, la beffa</title>
		<link>http://www.zulin.org/?p=201</link>
		<comments>http://www.zulin.org/?p=201#comments</comments>
		<pubDate>Sat, 06 Sep 2008 10:03:50 +0000</pubDate>
		<dc:creator>Arsenio [zulin] Siani</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[politics]]></category>

		<guid isPermaLink="false">http://www.zulin.org/?p=201</guid>
		<description><![CDATA[Di qualche giorno fa la notizia su republica dei vergognosi atti vandalici commessi dai tifosi napoletani in trasferta. Non commento la notizia perchè non ne sono in grado, ma non ho potuto non notare la grottesca combinazione &#8220;Notizia &#60;-&#62; Spot&#8221; che il quotidiano ha piazzato in HomePage, tanto che ho voluto scattare una istantanea e [...]]]></description>
			<content:encoded><![CDATA[<p>Di qualche giorno fa la notizia su <a href="http://www.repubblica.it">republica</a> dei vergognosi atti vandalici commessi dai tifosi napoletani in trasferta. Non commento la notizia perchè non ne sono in grado, ma non ho potuto non notare la grottesca combinazione &#8220;<strong>Notizia &lt;-&gt; Spot</strong>&#8221; che il quotidiano ha piazzato in HomePage, tanto che ho voluto scattare una<strong> istantanea</strong> e farvela vedere.</p>
<p><a href="http://www.zulin.org/wp-content/uploads/2008/09/screen-capture.png"><img class="aligncenter size-full wp-image-200" title="screen-capture" src="http://www.zulin.org/wp-content/uploads/2008/09/screen-capture.png" alt="" width="636" height="419" /></a></p>
<p>Mi domando se questa sia solo una coincidenza oppure un abbinamento ben architettato. Già un&#8217;altra volta <em>repubblica.it</em> ha commesso una gaff del genere: mentre a sinistra il titolo della notizia citava: &#8220;<em>Alitalia: in progetto tagli alle tratte italiane</em>&#8220;, accanto un banner pubblicitario di Ryanair (o EasyJet non ricordo), annunciava l&#8217;incremento dei voli e delle tratte da Malpensa.<br />
Insomma, una bella rappresentazione del danno e della beffa.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zulin.org/?feed=rss2&amp;p=201</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>51 pensieri atei</title>
		<link>http://www.zulin.org/?p=180</link>
		<comments>http://www.zulin.org/?p=180#comments</comments>
		<pubDate>Sun, 31 Aug 2008 20:06:32 +0000</pubDate>
		<dc:creator>Arsenio [zulin] Siani</dc:creator>
				<category><![CDATA[La parola di zulin]]></category>
		<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://www.zulin.org/?p=180</guid>
		<description><![CDATA[Pare che 51 sia un numero ricorrente in questo Blog  

Io credo in Dio, solo che lo chiamo Natura. &#8211; Frank Lloyd Wright
Fede vuol dire non voler conoscere la verità. &#8211; Friedrich Nietzsche
Un uomo è accettato in chiesa per le cose che crede, ed è cacciato via per le cose che conosce. &#8211; Samuel [...]]]></description>
			<content:encoded><![CDATA[<p>Pare che 51 sia un numero ricorrente in questo Blog <img src='http://www.zulin.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<ol>
<li><em>Io credo in Dio, solo che lo chiamo Natura.</em> &#8211; Frank Lloyd Wright</li>
<li><em>Fede vuol dire non voler conoscere la verità.</em> &#8211; Friedrich Nietzsche</li>
<li><em>Un uomo è accettato in chiesa per le cose che crede, ed è cacciato via per le cose che conosce.</em> &#8211; Samuel Clemens (Mark Twain)</li>
<li><em>La religione è considerata vera dalla maggior parte delle persone, falsa dai saggi, e utile dai potenti.</em> &#8211;  Seneca</li>
<li><em>La filosofia è una domanda a cui non bisognerebbe rispondere. La religione è la risposta alle domande che non si dovrebbero porre.</em> &#8211; Anonimo</li>
<li><em>Non solo Dio non esiste, ma avete mai provato a trovare un idraulico nel fine settimana?</em> &#8211; Woody Allen</li>
<li><em>Se non fossi stato ateo, avrei creduto in un Dio che salva le persone non sulla base delle cose che dicono, ma sulla base del loro modo di vivere. Avrei creduto in un Dio che preferisce salvare un onesto e rispettoso ateo e non un predicatore televisivo le cui parole sono DIO DIO DIO ma le cui azioni sono SBAGLIO SBAGLIO SBAGLIO.</em> &#8211; Isaac Asimov</li>
<li><em>Credere nel sopranaturale è il riflesso di uno sbaglio dell&#8217;immaginazione.</em> &#8211; Edward Abbey</li>
<li><em>Con o senza religione avremmo avuto lo stesso persone buone che fanno cose buone e persone cattive che fanno cose cattive. Ma per avere persone buone che fanno cose cattive è necessaria la religione.</em> &#8211; Steven Weinberg</li>
<li><em>Al mondo ci sono due categorie di persone: persone intelligenti senza religione e persone religiose senza intelligenza.</em> &#8211; Abu’l‐Ala al Ma’arri</li>
<li><em>Dato che la chiesa e la bibbia si sono sbagliate dicendoci da dove veniamo, come possiamo credergli quando ci dicono dove stiamo andando?</em>- Anonimo</li>
<li><em>Diffido di quelle persone che sanno così bene cosa Dio vuole che loro facciano, perché noto che coincide sempre con quello che loro desiderano fare.</em> &#8211; Susan B. Anthony</li>
<li><em>Le cose</em> che non si vedono e le cose che non esistono si assomigliano davvero tanto.- Delos B. McKown</li>
<li><em>Due mani che lavorano fanno molto di più di mille religiosi in preghiera.</em> &#8211; Anonimo</li>
<li><em>Non è successo come racconta la Bibbia; non è stato Dio a creare l&#8217;uomo a sua immagine e somiglianza, ma il contrario. L&#8217;uomo ha creato Dio a sua immagine e somiglianza.</em> &#8211; Ludwig Feuerbach</li>
<li><em>La gente mi chiede cosa ne pensi dei preti donna. Cosa, un prete donna? Donne preti. Grande, magnifico. Così potrò non ascoltare preti di entrambi i sessi.</em> &#8211; Bill Hicks</li>
<li><em>Tutti i miracoli della bibbia alla fine scompariranno col progredire della scenza.</em> &#8211; Matthew Arnold</li>
<li><em>La fede cieca è un ironico regalo da restituire al creatore dell&#8217;intelligenza umana.</em> &#8211; Anonimo</li>
<li><em>Ringraziare di avere una vita è forse il vano e presuntuoso desiderio di volerne una seconda.</em> &#8211; Richard Dawkins</li>
<li><em>Ciò che si può affermare senza prove lo si può anche negare senza prove.</em> &#8211; Christopher Hitchens</li>
<li><em>Nella cristianità né la morale né la religione entrano mai in contatto con la realtà.</em> &#8211; Friedrich Nietzsche</li>
<li><em>Il vanto più grande delle donne è quello di non aver mai contribuito con una sola riga alla Bibbia.</em> &#8211; George W. Foote</li>
<li><em>Il primo giorno l&#8217;uomo creò Dio.</em> &#8211; Anonimo</li>
<li><em>Suppongo che siamo entrambi atei. Io semplicemente credo in un dio appena minore del tuo. Quando capirai perché rinneghi tutti gli altri dei possibili capirai perché io rinnego il tuo.</em> &#8211; Stephen Roberts</li>
<li><em>Non hai bisogno della bibbia per giustificare l&#8217;amore, ma non esiste strumento migliore per giustificare l&#8217;odio.</em> &#8211; Richard A. Weatherwax</li>
<li><em>Chi è Dio? Hai presente quando desideri tanto qualcosa che chiudi gli occhi e chiedi di ottenerla? Beh, Dio è il tizio che ti ignora.</em> &#8211; Steve Buscemi (Dal film “The Island”)</li>
<li><em>Dai a un uomo un pesce e lui mangerà oggi; Insegna ad un uomo a pescare e lui mangerà tutta la vita; dai a un uomo la religione e lui morirà pregando di ottenere un pesce.</em> &#8211; Anonimo</li>
<li><em>Dire che l&#8217;ateismo è una religione è come dire che la calvizie è un colore di capelli.</em> &#8211; Don Hirschberg</li>
<li><em>Dio dovrebbe essere giudicato per crimini contro l&#8217;umanità.</em> &#8211; Bryan Emmanuel Gutierrez</li>
<li><em>Non ho paura della morte. Sono stato morto per miliardi e miliardi di anni prima di nascere e non ho sofferto il minimo inconveniente.</em> &#8211; Mark Twain</li>
<li><em>Di tutte le religioni il cristianesimo è senza dubbio quella che instilla la maggiore tolleranza, ciononostante ad oggi i cristiani sono tra i meno tolleranti degli uomini.</em> &#8211; Voltaire</li>
<li><em>Se ci fosse stato davvero un Dio non credo che l&#8217;avrebbe fatta passare tanto liscia a quelli che dubitavano della sua esistenza.</em> &#8211; Bertrand Russell</li>
<li><em>Dio ha voglia di eliminare il male ma non ne è capace? Allora non è onnipotente! É capace ma non vuole? Allora è malvagio. </em><em>É entrambe le cose? Allora da dove viene il male? Non è nessuna delle cose? Allora perchè lo chiamiamo Dio?</em>- Epicuro</li>
<li><em>Io sono poliateo; ci sono molti Dei in cui non credo.</em> &#8211; Dan Fouts</li>
<li><em>Una bugia è una bugia, anche se tutti ci credono. La verità è la verità anche se nessuno lo crede..</em> &#8211; David Stevens</li>
<li><em>La religione fa tre cose efficacemente: Divide i popoli, controlla i popoli, delude i  popoli.</em> &#8211; Carlespie Mary Alice McKinney</li>
<li><em>La storia ci insegna che nessuna causa ha fatto tanti morti quanto la parola di Dio.</em> &#8211; Giulian Buzila</li>
<li><em>L&#8217;ateismo è una organizzazione non profetica.</em> &#8211; George Carlin</li>
<li><em>Se letta attentamente la Bibbia è lo strumento più efficace di evangelizzazione Atea.</em> &#8211; Isaac Asimov</li>
<li><em>Dio non uccide le persone, sono le persone di Dio che uccidono le persone.</em> &#8211; David Viaene</li>
<li><em>La religione è l&#8217;oppio delle masse.</em> &#8211; Karl Marx</li>
<li><em>La religione è come una pillola che deve essere ingoiata senza masticare</em> &#8211; Anonymous</li>
<li><em>Non è abbastanza vedere un giardino per dire che è meravliglioso? Dobbiamo per forza anche credere che si sono delle fate nascoste tra i cespugli?</em> &#8211; Douglas Adams</li>
<li><em>Per essere davvero liberi è necessaria una mente libera.</em> &#8211; Alexander Loutsis</li>
<li><em>Gli animali non hanno un Dio, loro sono più astuti.</em> &#8211; Ronnie Snow</li>
<li><em>La morte è la verità più agghiacciante che un uomo deve affrontare. La religione rappresenta la distrazione perfetta.</em> &#8211; Anonimo</li>
<li><em>L&#8217;interpretazione della bibbia dipende dall&#8217;ignoranza delle persone che la leggono.</em> &#8211; Robert G. Ingersoll</li>
<li><em>La fede non da risposte, semplicemente non fa porre la domanda.</em> &#8211; Frater Ravus</li>
<li><em>Dio è una cosa fragile, piò essere cancellato da un soffio di scienza o da un po&#8217; di buon senso.</em> &#8211; Chapman Cohen</li>
<li><em>Se tutti i cristiani che almeno una volta hanno detto di un altro cristiano:&#8221;Quello non è un buon cristiano&#8221; scomparissero, non resterebbero più cristiani.</em> &#8211; Anonimo</li>
<li><em>Il fatto che un credente è più felice di uno scettico è tanto vero quanto il fatto che un ubriaco è più felice di uno sobrio.</em> &#8211; George Bernard Shaw</li>
</ol>
<p>Ecco, ora spuntate le <strong>cazzate</strong> che sono elencate qui sopra; sono curioso di confrontarla con la lista di cazzate che ho trovato io.</p>
<p><em></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.zulin.org/?feed=rss2&amp;p=180</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>51 cose che un uomo deve fare prima di morire</title>
		<link>http://www.zulin.org/?p=185</link>
		<comments>http://www.zulin.org/?p=185#comments</comments>
		<pubDate>Wed, 27 Aug 2008 20:29:54 +0000</pubDate>
		<dc:creator>Arsenio [zulin] Siani</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[webdesign]]></category>

		<guid isPermaLink="false">http://www.zulin.org/?p=185</guid>
		<description><![CDATA[Premessa breve, il titolo spiega abbastanza. Questa è la mia lista:

Percorrere in auto o in moto la &#8220;Route 66&#8243; in America (a.k.a. Coast to Coast).
Picchiare qualcuno fino a farlo svenire.
Essere picchiato da qualcuno fino allo svenimento.
Giocare a Rugby.
Lanciarsi con l&#8217;elastico.
Ubriacarsi.
Percorrere a piedi il cammino di Santiago partendo almeno dalla Francia.
Assumere un allucinogeno (una sola volta [...]]]></description>
			<content:encoded><![CDATA[<p>Premessa breve, il titolo spiega abbastanza. Questa è la mia lista:</p>
<ol>
<li>Percorrere in auto o in moto la &#8220;Route 66&#8243; in America (a.k.a. Coast to Coast).</li>
<li>Picchiare qualcuno fino a farlo svenire.</li>
<li>Essere picchiato da qualcuno fino allo svenimento.</li>
<li>Giocare a Rugby.</li>
<li>Lanciarsi con l&#8217;elastico.</li>
<li>Ubriacarsi.</li>
<li>Percorrere a piedi il cammino di Santiago partendo almeno dalla Francia.</li>
<li>Assumere un allucinogeno (una sola volta credo basti).</li>
<li>Imparare a suonare uno strumento musicale.</li>
<li>Piangere in pubblico.</li>
<li>Scrivere una poesia/canzone d&#8217;amore.</li>
<li>Sparare con un&#8217;arma (non necessariamente a qualcuno).</li>
<li>Fare l&#8217;Autostop fino a un paese estero.</li>
<li>Restare digiuno per 72 ore di fila.</li>
<li>Passare da solo una notte nella foresta.</li>
<li>Prendere la metropolitana a Tokio.</li>
<li>Immergersi nell&#8217;oceano.</li>
<li>Andare a caccia, uccidere un animale, macellarlo, cucinarlo e mangiarselo.</li>
<li>Vivere una settimana in una suite di un hotel di lusso con almeno 5 stelle.</li>
<li>Imparare una lingua straniera.</li>
<li>Stringere la mano ad una persona che ha fatto qualcosa di grande per il mondo.</li>
<li>Vivere 10 giorni in Africa.</li>
<li>Vivere una settimana in tenda, in campeggio.</li>
<li>Scrivere le 51 cose che si vorrebbe fare nella propria vita (questa è dura).</li>
<li>Vedere l&#8217;aurora boreale.</li>
<li>Passare una notte sveglio solo per vedere l&#8217;alba.</li>
<li>Partecipare ad un Rave.</li>
<li>Entrare in una chiesta e trattenersi col prete a parlare di Dio.</li>
<li>Entrare in una sinagoga e trattenersi col rabbino a parlare di Dio.</li>
<li>Entrare in una moschea e trattenesi col sacerdote a parlare di Dio.</li>
<li>Viaggiare nel treno &#8220;espresso notte Milano-Messina&#8221; la sera del 23 Dicembre.</li>
<li>Imparare un&#8217;arte marziale.</li>
<li>Ballare il tango.</li>
<li>Correre con i tori a Pamplona.</li>
<li>Pilotare un carrarmato.</li>
<li>Visitare Roma.</li>
<li>Cavalcare un animale grosso.</li>
<li>Imparare ad combattere con la spada.</li>
<li>Scrivere un libro.</li>
<li>Fare l&#8217;amore con due donne contemporaneamente.</li>
<li>Andare all&#8217;OktoberFest</li>
<li>Nuotare con i delfini</li>
<li>Farsi la doccia in una cascata naturale</li>
<li>Passare un carnevale a Rio.</li>
<li>Partecipare a un triathlon.</li>
<li>Diventare il mentore di qualcuno (verso la fine).</li>
<li>Viaggiare sull&#8217;Orient Express.</li>
<li>Ascoltare una orchestra a Vienna</li>
<li>Parlare da una grande folla di gente.</li>
<li>Vedere un&#8217;eclissi totale di sole.</li>
<li>Imparare una poesia a memoria (quella che piace di più).</li>
</ol>
<p>Sono curioso di ascoltare la vostra.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zulin.org/?feed=rss2&amp;p=185</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Lumache</title>
		<link>http://www.zulin.org/?p=175</link>
		<comments>http://www.zulin.org/?p=175#comments</comments>
		<pubDate>Sun, 17 Aug 2008 19:54:18 +0000</pubDate>
		<dc:creator>Arsenio [zulin] Siani</dc:creator>
				<category><![CDATA[movies]]></category>
		<category><![CDATA[nice videos]]></category>

		<guid isPermaLink="false">http://www.zulin.org/?p=175</guid>
		<description><![CDATA[In questi giorni è emerso in me il ricordo di una scena del film Microcosmos. Scena che a suo tempo, mi fece rivalutare la considerazione che avevo delle lumache. Vi propongo la scena, godetevela.
]]></description>
			<content:encoded><![CDATA[<p>In questi giorni è emerso in me il ricordo di una scena del film <a href="http://www.imdb.com/title/tt0117040/">Microcosmos</a>. Scena che a suo tempo, mi fece rivalutare la considerazione che avevo delle lumache. Vi propongo la scena, godetevela.</p>
<p><a href="http://www.zulin.org/?p=175"><em>Click here to view the embedded video.</em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.zulin.org/?feed=rss2&amp;p=175</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
