<?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>BisonTech &#187; Programmazione</title>
	<atom:link href="http://www.bisontech.net/category/tutorial/programmazione-tutorial/feed" rel="self" type="application/rss+xml" />
	<link>http://www.bisontech.net</link>
	<description>Software &#124; free</description>
	<lastBuildDate>Thu, 09 Feb 2012 09:08:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>WordPress, rimuovere e disabilitare le revisioni</title>
		<link>http://www.bisontech.net/opensource/wordpress-rimuovere-e-disabilitare-le-revisioni.html</link>
		<comments>http://www.bisontech.net/opensource/wordpress-rimuovere-e-disabilitare-le-revisioni.html#comments</comments>
		<pubDate>Tue, 07 Feb 2012 09:48:08 +0000</pubDate>
		<dc:creator>Staff</dc:creator>
				<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.bisontech.net/?p=2465</guid>
		<description><![CDATA[Le revisioni sono una delle cose più utili introdotte in WordPress, permettono di mantenere varie versioni di un post/pagina permettendo cosi di tornare indietro a una versione precedente inoltre vengono usate per l&#8217;auto salvataggio&#8230; Il problema nasce quando non si ha bisogno di tornare a versioni precedenti sopratutto se chi crea/modifica i post sono poche [...]]]></description>
			<content:encoded><![CDATA[<p>Le revisioni sono una delle cose più utili introdotte in <strong>WordPress</strong>, permettono di mantenere varie versioni di un post/pagina permettendo cosi di tornare indietro a una versione precedente inoltre vengono usate per l&#8217;auto salvataggio&#8230;</p>
<p><span id="more-2465"></span></p>
<p>Il problema nasce quando non si ha bisogno di tornare a versioni precedenti sopratutto se chi crea/modifica i post sono poche persone, e le tabelle crescono a dismisura diminuendo cosi l&#8217;efficienza dell&#8217;intero sito, per questo può essere utile cancellare le revisioni ogni tot giorni, per dare un ottimizzazione generale al sito.</p>
<p>Con questa query è possibile cancellare le revisioni già create, ovviamente se avete usato dei prefix diversi dal wp_ dovete modificarla:</p>
<pre class="brush: sql; title: ; notranslate">DELETE a,b,c
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = 'revision';</pre>
<p>E&#8217; possibile disabilitare le revisioni in wordpress anche se non lo consiglio a meno che non si hanno seri problemi di prestazioni con tanti post.<br />
Per disabilitare le revisioni dobbiamo modificare il file wp-config.php aggiungendo questa linea:</p>
<pre class="brush: php; title: ; notranslate">
define('WP_POST_REVISIONS', false);
</pre>
<p>Una volta fatto non verranno più usate le revisioni quindi bisogna però far attenzione a quello che si fa con i post.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bisontech.net/opensource/wordpress-rimuovere-e-disabilitare-le-revisioni.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installiamo Node.JS e NPM su Ubuntu</title>
		<link>http://www.bisontech.net/opensource/installiamo-node-js-e-npm-su-ubuntu.html</link>
		<comments>http://www.bisontech.net/opensource/installiamo-node-js-e-npm-su-ubuntu.html#comments</comments>
		<pubDate>Mon, 21 Nov 2011 08:36:38 +0000</pubDate>
		<dc:creator>Staff</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Sistemi Operativi]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[NodeJS]]></category>

		<guid isPermaLink="false">http://www.bisontech.net/?p=2117</guid>
		<description><![CDATA[Node.js è un framework a eventi in grado di eseguire codice Javascript server side, per farlo implementa il V8 JavaScript Engine (il motore di Google Chrome) e vanta una elevata performance nel compilare codice Javascript, mentre NPM è un Package Manager per node (Node Package Manager), vediamo come installarli&#8230; Possiamo installare NodeJS con apt-get (Controllate [...]]]></description>
			<content:encoded><![CDATA[<p>Node.js è un framework a eventi in grado di eseguire codice Javascript server side, per farlo implementa il V8 JavaScript Engine (il motore di Google Chrome) e vanta una elevata performance nel compilare codice Javascript, mentre NPM è un Package Manager per node (Node Package Manager), vediamo come installarli&#8230;</p>
<p><span id="more-2117"></span><br />
Possiamo installare NodeJS con apt-get (Controllate che non sia troppo vecchia per NPM)</p>
<pre class="brush: bash; title: ; notranslate">
$sudo apt-get install nodejs
</pre>
<p>In caso di fallimento, oppure se vogliamo l&#8217;ultimissima versione, possiamo provare a compilarlo</p>
<pre class="brush: bash; title: ; notranslate">
$sudo apt-get update
$sudo apt-get install git-core curl build-essential openssl libssl-dev
$git clone https://github.com/joyent/node.git &amp;amp;&amp;amp; cd node
$./configure
$make
$sudo make install
$node -v
</pre>
<p>Attualmente l&#8217;ultima versione scaricabile dall&#8217;hub git è la 0.7 tuttavia NPM per ora supporta fino alla 0.6 con il risultato che non è possibile procedere all&#8217;installazione di NPM, quindi se avete questo genere di problema consiglio di scaricare il pacchetto di sorgente ver 0.6x dal <a title="download NodeJS" href="http://nodejs.org" target="_blank">sito ufficiale</a>.</p>
<p>Installiamo NPM:</p>
<pre class="brush: bash; title: ; notranslate">
$curl http://npmjs.org/install.sh | sudo sh
$npm -v
</pre>
<p>Questa serie di comandi vi farà scaricare e installare i tool per la compilazione necessari a compilare Node.js, inoltre scaricheremo dal repository git, Node e lo compiliamo e installiamo con i classici comandi (configure make e make install), questa fase può richiedere un pò di tempo quindi abbiate pazienza.<br />
in fine con curl andiamo a scaricare e installare npm.</p>
<p>Una volta scaricato NPM possiamo installare pacchetti con il comando:</p>
<pre class="brush: bash; title: ; notranslate">
$npm install cocos2d
</pre>
<p>In questo esempio andiamo a installare la libreria Cocos2D per creare giochi in Javascript.</p>
<p><code class="plain plain">node -v</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bisontech.net/opensource/installiamo-node-js-e-npm-su-ubuntu.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Come disattivare gli aggiornamenti di un tema WordPress</title>
		<link>http://www.bisontech.net/tutorial/come-disattivare-gli-aggiornamenti-di-un-tema-wordpress.html</link>
		<comments>http://www.bisontech.net/tutorial/come-disattivare-gli-aggiornamenti-di-un-tema-wordpress.html#comments</comments>
		<pubDate>Wed, 02 Nov 2011 07:41:10 +0000</pubDate>
		<dc:creator>Staff</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.bisontech.net/?p=2043</guid>
		<description><![CDATA[Come molti sapranno WordPress mostra notifiche per eventuali aggiornamenti del tema, del core o dei plugin, mentre gli ultimi 2 possono essere utili e andare effettivamente a fixare bug importanti, il tema è spesso soggetto a modifiche personalizzati, sopratutto per i temi più vecchi vediamo quindi come disattivare l&#8217;aggiornamento di un tema WordPress&#8230; Per prima [...]]]></description>
			<content:encoded><![CDATA[<p>Come molti sapranno <strong>WordPress</strong> mostra notifiche per eventuali aggiornamenti del tema, del core o dei plugin, mentre gli ultimi 2 possono essere utili e andare effettivamente a fixare bug importanti, il tema è spesso soggetto a modifiche personalizzati, sopratutto per i temi più vecchi vediamo quindi come disattivare l&#8217;aggiornamento di un tema WordPress&#8230;<span id="more-2043"></span></p>
<p>Per prima cosa apriamo il file function.php presente in genere nella cartella del tema (/wp-content/themes/&lt;nometema&gt;) in questo file sono presenti le funzioni usate all&#8217;interno del tema stesso, noi andremo a rimuovere delle action e ad aggiungere filtri per disabilitare l&#8217;aggiornamento del tema, per farlo aggiungiamo semplicemente le seguenti righe al file function.php:</p>
<pre class="brush: php; title: ; notranslate">

remove_action( 'load-themes.php', 'wp_update_themes');
remove_action( 'load-update.php', 'wp_update_themes');
remove_action( 'admin_init', '_maybe_update_themes');
remove_action( 'wp_update_themes', 'wp_update_themes');
add_filter( 'pre_transient_update_themes', create_function('$a', &quot;return null;&quot;));
remove_action( 'load-update-core.php', 'wp_update_themes');
add_filter( 'pre_site_transient_update_themes', create_function('$a', &quot;return null;&quot;));
</pre>
<p>L&#8217;ideale sarebbe però imparare a usare i temi figli, per poter cosi aggiornare  il tema principale senza intaccare le modifiche effettuate successivamente.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bisontech.net/tutorial/come-disattivare-gli-aggiornamenti-di-un-tema-wordpress.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Framework, simulare un browser web con PHP utilizzando Zend_Http_Client</title>
		<link>http://www.bisontech.net/tutorial/zend-framework-simulare-un-browser-web-con-php-utilizzando-zend_http_client.html</link>
		<comments>http://www.bisontech.net/tutorial/zend-framework-simulare-un-browser-web-con-php-utilizzando-zend_http_client.html#comments</comments>
		<pubDate>Wed, 10 Aug 2011 11:36:45 +0000</pubDate>
		<dc:creator>Staff</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[bot]]></category>
		<category><![CDATA[Zend]]></category>

		<guid isPermaLink="false">http://www.bisontech.net/?p=1681</guid>
		<description><![CDATA[Zend Framework è probabilmente uno dei migliori Framework PHP, non solo permette di realizzare applicazioni MVC, ma consente anche l&#8217;uso delle sue classi come libreria, una di queste classi piuttosto utili è lo Zend_Http_Client, vediamo come usarlo&#8230; Questo ci consentirà di usare PHP, per simulare un browser web, con pieno supporto anche dei cookie, molto [...]]]></description>
			<content:encoded><![CDATA[<p>Zend Framework è probabilmente uno dei migliori Framework PHP, non solo permette di realizzare applicazioni MVC, ma consente anche l&#8217;uso delle sue classi come libreria, una di queste classi piuttosto utili è lo Zend_Http_Client, vediamo come usarlo&#8230;<span id="more-1681"></span></p>
<p>Questo ci consentirà di usare PHP, per simulare un browser web, con pieno supporto anche dei cookie, molto utile per creare un sistema di api, o per leggere dati da un altro sito web, oppure ancora per scrivere un bot, potremmo scrivere qualcosa di simile anche usando le librerie curl, ma dovremmo implementarci a mano molte funzionalità più avanzate.<br />
Per prima cosa scarichiamo e scompattiamo il Framework Zend dal sito ufficiale e scompattiamolo in una directory dove è possibile includerla.</p>
<p>Poi includiamo Library/Zend/Http/Client.php come segue:</p>
<pre class="brush: php; title: ; notranslate">
inlcude('Zend/Http/Client.php');
$cl = new Zend_Http_Client();
$cl-&gt;setUri('http://www.example.com/');
$cl-&gt;setParameterPost('q','BisonTech.net');
$response = $cl-&gt;request(Zend_Http_Client::POST);
echo $response;
</pre>
<p>Volendo si può anche fare l&#8217;upload di un file usando il metodo setFileUpload, eccone un esempio:</p>
<pre class="brush: php; title: ; notranslate">
inlcude('Zend/Http/Client.php');
$cl = new Zend_Http_Client();
$cl-&gt;setUri('http://www.example.com/');
$cl-&gt;setFileUpload('backup.zip', 'backupfile'); // nome file, nome del campo
$response = $cl-&gt;request(Zend_Http_Client::POST);
echo $response;
</pre>
<p>Come si può vedere l&#8217;uso è molto semplice e con pochissime righe di codice possiamo fare davvero di tutto, se volete approfondire l&#8217;argomento consiglio di andare a leggere la <a title="Documentazione Zend_Http_Client" href="http://framework.zend.com/manual/en/zend.http.client.advanced.html" target="_blank" rel="nofollow">documentazione ufficiale</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bisontech.net/tutorial/zend-framework-simulare-un-browser-web-con-php-utilizzando-zend_http_client.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Delphi, leggere il contenuto di una directory&#8230;</title>
		<link>http://www.bisontech.net/tutorial/delphi-leggere-il-contenuto-di-una-directory.html</link>
		<comments>http://www.bisontech.net/tutorial/delphi-leggere-il-contenuto-di-una-directory.html#comments</comments>
		<pubDate>Mon, 04 Jul 2011 07:29:31 +0000</pubDate>
		<dc:creator>Staff</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://www.bisontech.net/?p=1531</guid>
		<description><![CDATA[Oggi vediamo un piccolo snippets delphi, una procedura che restituisce la lista di file e directory presenti in una cartella e che accetta i caratteri jolly, ecco la procedura e un piccolo esempio di come funziona&#8230;]]></description>
			<content:encoded><![CDATA[<p>Oggi vediamo un piccolo snippets delphi, una procedura che restituisce la lista di file e directory presenti in una cartella e che accetta i caratteri jolly, ecco la procedura e un piccolo esempio di come funziona&#8230;<span id="more-1531"></span></p>
<pre class="brush: delphi; title: ; notranslate">

procedure FindFiles (const Path: String;
                          Attr: Integer;
                          List: TStrings) ;
var
   Res: TSearchRec;
   EOFound: Boolean;
begin
   EOFound:= False;
   if FindFirst(Path, Attr, Res) &lt; 0 then
     exit
   else
     while not EOFound do begin
       List.Add(Res.Name) ;
       EOFound:= FindNext(Res) &lt;&gt; 0;
     end;
   FindClose(Res) ;
end; 

// ListBox1 è un componente TListBox presente sul form, in alternativa si può usare TStringList...
FindFiles('C:\Windows\*.exe',faAnyFile,ListBox1.Items);
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.bisontech.net/tutorial/delphi-leggere-il-contenuto-di-una-directory.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP, criptiare e decriptare una stringa con blowfish senza mcrypt</title>
		<link>http://www.bisontech.net/tutorial/php-criptiamo-una-stringa-con-blowfish-senza-mcrypt.html</link>
		<comments>http://www.bisontech.net/tutorial/php-criptiamo-una-stringa-con-blowfish-senza-mcrypt.html#comments</comments>
		<pubDate>Fri, 01 Jul 2011 08:05:58 +0000</pubDate>
		<dc:creator>Staff</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Criptare]]></category>
		<category><![CDATA[Decriptare]]></category>

		<guid isPermaLink="false">http://www.bisontech.net/?p=1527</guid>
		<description><![CDATA[Spesso si ha la necessità in un applicazione di dover criptare un informazione per poi decriptarla successivamente, il php mette a disposizione mcrypt una libreria lato server che ci consente di usare vari algoritmi di criptazione, tuttavia richiede l&#8217;installazione di questa libreria, oggi vedremo come criptare e decriptare una stringa senza bisogno di questa libreria [...]]]></description>
			<content:encoded><![CDATA[<p>Spesso si ha la necessità in un applicazione di dover criptare un informazione per poi decriptarla successivamente, il php mette a disposizione mcrypt una libreria lato server che ci consente di usare vari algoritmi di criptazione, tuttavia richiede l&#8217;installazione di questa libreria, oggi vedremo come criptare e decriptare una stringa senza bisogno di questa libreria ma usandone una in php&#8230;<span id="more-1527"></span></p>
<p>Il modo più veloce per criptare una stringa in php è il Blowfish, un algoritmo a chiave simmetrica a blocchi attualmente risulta inviolabile e la possibilità di usare chiavi molto lunghe lo rende anche resistente ai tentativi di brute force.</p>
<p>Per implementare il blowfish sul nostro sito è necessario importare una libreria php, e questa libreria possiamo prenderla direttamente da sorgente di PhpMyAdmin, e si chiama blowfish.php</p>
<p>Una volta copiata nella nostra applicazione per criptare una stringa si fa cosi:</p>
<pre class="brush: php; title: ; notranslate">
require_once &quot;blowfish.php&quot;;
$stringa = 'Stringa top secret';
$key = 'Passwordsegreta';
$stringa_criptata=PMA_blowfish_encrypt($stringa, $key);
var_dump($stringa_criptata);
//Per decriptare la stringa:
$stringa_decriptata=PMA_blowfish_decrypt($stringa_criptata, $key);
var_dump($stringa_decriptata);
</pre>
<p>Come potete vedere è molto semplice, phpmyadmin può essere <a title="PhpMyAdmin" rel="nofollow" href="http://www.phpmyadmin.net/home_page/downloads.php" target="_blank">scaricato da qui</a>&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bisontech.net/tutorial/php-criptiamo-una-stringa-con-blowfish-senza-mcrypt.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP, trasformiamo un immagine in testo ascii html</title>
		<link>http://www.bisontech.net/tutorial/php-trasformiamo-un-immagine-in-test-ascii.html</link>
		<comments>http://www.bisontech.net/tutorial/php-trasformiamo-un-immagine-in-test-ascii.html#comments</comments>
		<pubDate>Tue, 28 Jun 2011 07:54:05 +0000</pubDate>
		<dc:creator>Staff</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://www.bisontech.net/?p=1513</guid>
		<description><![CDATA[Avete presente le Ascii art? ossia i disegni fatti con i caratteri, ecco come creare una semplice pagina php che fa proprio questo a colori ovviamente&#8230; Una volta quando c&#8217;era soltanto la console di comandi (dos o unix) i disegni venivano fatti con una serie di caratteri che andavano a formare il disegno, nel tempo [...]]]></description>
			<content:encoded><![CDATA[<p>Avete presente le Ascii art? ossia i disegni fatti con i caratteri, ecco come creare una semplice pagina php che fa proprio questo a colori ovviamente&#8230;<span id="more-1513"></span></p>
<p>Una volta quando c&#8217;era soltanto la console di comandi (dos o unix) i disegni venivano fatti con una serie di caratteri che andavano a formare il disegno, nel tempo è diventata una cultura informatica e oggi è pieno il mondo di disegni fatti con i caratteri, oggi però vediamo come convertire un immagine o foto usando il php, queste istruzioni creano una pagina con tanti span contenenti &#8220;#&#8221; colorati minuscoli che vanno a formare il pixel colorato, trasformando cosi un immagine in testo.</p>
<p>Questa è una funzione didattica, praticamente si apre un immagine usando ImageCreateFromJpeg (perchè in questo caso è  jpg) e si scorre pixel per pixel la foto poi con la funzione ImageColorAt si prende a una determinata posizione il colore nel formato RGB, che verrà poi usato nel css inlinea (all&#8217;interno dell&#8217;attributo style).</p>
<p>Ecco il codice:</p>
<pre class="brush: php; title: ; notranslate">
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Ascii&lt;/title&gt;
&lt;style&gt;
body{
    line-height:1px;
    font-size:1px;
}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;?php 

$image = 'logo.jpg';
$img = ImageCreateFromJpeg($image);
$width = imagesx($img);
$height = imagesy($img);
for($h=0;$h&lt;$height;$h++){
    for($w=0;$w&lt;=$width;$w++){
        $rgb = ImageColorAt($img, $w, $h);
        $r = ($rgb &gt;&gt; 16) &amp; 0xFF;
        $g = ($rgb &gt;&gt; <img src='http://www.bisontech.net/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> &amp; 0xFF;
        $b = $rgb &amp; 0xFF;
        if($w == $width){
            echo '&lt;br&gt;';
        }else{
           echo '&lt;span style=&quot;color:rgb('.$r.','.$g.','.$b.');&quot;&gt;#&lt;/span&gt;';
        }
    }
}
?&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>volendo si può giocare anche con il carattere e la dimensione dei pixel o fare caricare all&#8217;utente la foto (controllate il formato che in base al formtato cambia la funzione usata per caricare l&#8217;immagine).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bisontech.net/tutorial/php-trasformiamo-un-immagine-in-test-ascii.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aggiungere o sottrare date in PHP</title>
		<link>http://www.bisontech.net/opensource/aggiungere-o-sottrare-date-in-php.html</link>
		<comments>http://www.bisontech.net/opensource/aggiungere-o-sottrare-date-in-php.html#comments</comments>
		<pubDate>Mon, 13 Jun 2011 16:06:21 +0000</pubDate>
		<dc:creator>Staff</dc:creator>
				<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.bisontech.net/?p=1462</guid>
		<description><![CDATA[Ecco un piccolo tutorial su come aggiungere o sottrarre date in php, utilizzando solo le funzioni base che il php stesso ci fornisce&#8230; Grazie alla funzione strtotime togliere giorni mesi anni o settimane da una determinata data è semplicissimo. Togliamo 3 giorni alla data: Aggiungiamo 2 anni alla data: Aggiungiamo 1 mese alla data: Aggiungiamo [...]]]></description>
			<content:encoded><![CDATA[<p>Ecco un piccolo tutorial su come aggiungere o sottrarre date in php, utilizzando solo le funzioni base che il php stesso ci fornisce&#8230;<span id="more-1462"></span></p>
<p>Grazie alla funzione strtotime togliere giorni mesi anni o settimane da una determinata data è semplicissimo.</p>
<p>Togliamo 3 giorni alla data:</p>
<pre class="brush: php; title: ; notranslate">
$date = &quot;2011-06-14&quot;;
$newdate = strtotime ( '-5 day' , strtotime ( $date ) ) ; // facciamo l'operazione
$newdate = date ( 'Y-m-d' , $newdate ); //trasformiamo la data nel formato accettato dal db YYYY-MM-DD

echo $newdate;
</pre>
<p>Aggiungiamo 2 anni alla data:</p>
<pre class="brush: php; title: ; notranslate">
$date = &quot;2011-06-14&quot;;
$newdate = strtotime ( '+2 year' , strtotime ( $date ) ) ; // facciamo l'operazione
$newdate = date ( 'Y-m-d' , $newdate ); //trasformiamo la data nel formato accettato dal db YYYY-MM-DD

echo $newdate;
</pre>
<p>Aggiungiamo 1 mese alla data:</p>
<pre class="brush: php; title: ; notranslate">
$date = &quot;2011-06-14&quot;;
$newdate = strtotime ( '+1 month' , strtotime ( $date ) ) ; // facciamo l'operazione
$newdate = date ( 'Y-m-d' , $newdate ); //trasformiamo la data nel formato accettato dal db YYYY-MM-DD

echo $newdate;
</pre>
<p>Aggiungiamo 3 settimane alla data:</p>
<pre class="brush: php; title: ; notranslate">
$date = &quot;2011-06-14&quot;;
$newdate = strtotime ( '+3 week' , strtotime ( $date ) ) ; // facciamo l'operazione
$newdate = date ( 'Y-m-d' , $newdate ); //trasformiamo la data nel formato accettato dal db YYYY-MM-DD

echo $newdate;
</pre>
<p>Come è facile intuire è sufficiente cambiare il sengno dei mesi, giorni, anni o settimane per aggiungerli o rimuoverli da una data.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bisontech.net/opensource/aggiungere-o-sottrare-date-in-php.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Calcolare l&#8217;età in php</title>
		<link>http://www.bisontech.net/tutorial/calcolare-leta-in-php.html</link>
		<comments>http://www.bisontech.net/tutorial/calcolare-leta-in-php.html#comments</comments>
		<pubDate>Thu, 12 May 2011 08:07:18 +0000</pubDate>
		<dc:creator>Staff</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://www.bisontech.net/?p=1337</guid>
		<description><![CDATA[Ecco una semplice funzione per calcolare l&#8217;età con il php, la funzione riceve in entrata la data del compleanno (dob) in formato YYYY-MM-DD e ritorna l&#8217;età&#8230; Ecco come: Esempio d&#8217;uso:]]></description>
			<content:encoded><![CDATA[<p>Ecco una semplice funzione per calcolare l&#8217;età con il php, la funzione riceve in entrata la data del compleanno (dob) in formato YYYY-MM-DD e ritorna l&#8217;età&#8230;<span id="more-1337"></span></p>
<p>Ecco come:</p>
<pre class="brush: php; title: ; notranslate">

function getAge ($birthday){
    list($year,$month,$day) = explode(&quot;-&quot;,$birthday);
    $year_diff  = date(&quot;Y&quot;) - $year;
    $month_diff = date(&quot;m&quot;) - $month;
    $day_diff   = date(&quot;d&quot;) - $day;
    if ($day_diff &lt; 0 || $month_diff &lt; 0)
       $year_diff--;
     return $year_diff;
 }
</pre>
<p>Esempio d&#8217;uso:</p>
<pre class="brush: php; title: ; notranslate">
$age =  getAge('1983-05-12');
 echo &quot;Et&amp;agrave;:&quot; . $age;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.bisontech.net/tutorial/calcolare-leta-in-php.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP, Scaricare una pagina web utilizzando curl</title>
		<link>http://www.bisontech.net/tutorial/php-scaricare-una-pagina-web-utilizzando-curl.html</link>
		<comments>http://www.bisontech.net/tutorial/php-scaricare-una-pagina-web-utilizzando-curl.html#comments</comments>
		<pubDate>Fri, 01 Apr 2011 10:03:47 +0000</pubDate>
		<dc:creator>Staff</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[curl]]></category>

		<guid isPermaLink="false">http://www.bisontech.net/?p=997</guid>
		<description><![CDATA[Curl è uno dei moduli più potenti di php, permette di inviare post e get a un sito web e di recuperarne il risultato, ci sono molti sistemi per scaricare una pagina web dal propio sito sicuramente usare curl (o una libreria che lo utilizza) è la cosa migliore, questa funzione è il primo passo [...]]]></description>
			<content:encoded><![CDATA[<p>Curl è uno dei moduli più potenti di php, permette di inviare post e get a un sito web e di recuperarne il risultato, ci sono molti sistemi per scaricare una pagina web dal propio sito sicuramente usare curl (o una libreria che lo utilizza) è la cosa migliore, questa funzione è il primo passo verso la realizzazione di un bot, diamo un occhiata su come funziona curl&#8230;<span id="more-997"></span></p>
<p>Vediamo come effettuare una semplice chiamata a una pagina web utilizzando la libreria curl, in questo esempio andremo a fare una ricerca su google, ma la funzione è piuttosto generale e può essere usata con diversi siti, per completezza c&#8217;è da aggiungere che per questa operazione si poteva usare anche la funzione get_file_contents nativa di php, tuttavia usando get_file_contents non era possibile settare quasi nulla e molti siti bloccano le richieste da parte di client senza agent o referer settato.<br />
Ecco la funzione getWebPage e il suo uso con google:</p>
<pre class="brush: php; title: ; notranslate">
 function getWebPage( $url ){
		/**
		 * Qui settiamo le opzioni base, in caso ci fosse bisogno di post si può usare:
	         * CURLOPT_POST 		   =&gt; 1,  		//Diciamo a curl che vogliamo usare il post.
		 * CURLOPT_POSTFIELDS 	   =&gt; 'parametro1=ciao  //impostiamo i field di post
		**/
        $options = array(
            CURLOPT_RETURNTRANSFER =&gt; true,     // ritorna la pagina
            CURLOPT_HEADER                =&gt; false,    // non ritornare l'header
	    CURLOPT_REFERER	       =&gt; $url, 	// settiamo il referer
            CURLOPT_FOLLOWLOCATION =&gt; true,     // seguiamo i redirects
            CURLOPT_ENCODING             =&gt; &quot;&quot;,       // tutti gli encodings
            CURLOPT_USERAGENT           =&gt; &quot;Mozilla/5.0 (Windows NT 6.1; rv:2.0) Gecko/20100101 Firefox/4.0&quot;,  // L'identità del browser
            CURLOPT_AUTOREFERER        =&gt; true,     // setta il referer nel redirect
            CURLOPT_CONNECTTIMEOUT  =&gt; 120,      // timeout sulla connessione
            CURLOPT_TIMEOUT                =&gt; 120,      // timeout sulla risposta
            CURLOPT_MAXREDIRS           =&gt; 10,       // fermati dopo il decimo redirect
        );

        $ch      = curl_init( $url );    // impostiamo l'url per il download
        curl_setopt_array( $ch, $options ); //settiamo le opzioni
        $content = curl_exec( $ch ); //facciamo richiesta della pagina
        $err     = curl_errno( $ch );
        $errmsg  = curl_error( $ch );
        $header  = curl_getinfo( $ch );
        curl_close( $ch );

        $header['errno']   = $err;     //eventuali errori
        $header['errmsg']  = $errmsg;  //header
        $header['content'] = $content; //il contenuto della pagina quello che ci interessa

        return $header['content'];
    }

    //	Chiamata d'esempio
    $query_search = 'BisonTech.net';
    var_dump(getWebPage('http://www.google.it/search?q=' . $query_search));
</pre>
<p>Una volta ottenuto il codice è possibile parsare o scambiare dati con altri siti usando xml o json.<br />
Come potete vedere nella funzione c&#8217;è la possibilità di usare il Post aggiungendo le opzioni CURLOPT_POST e CURLOPT_POSTFIELDS, tuttavia se vi serve il post forse dovreste prendere in considerazione qualcosa di più alto livello delle chiamate dirette al curl, un buon esempio è l&#8217;oggetto<strong> Zend_Http_Client</strong> dello<strong> Zend Framework</strong> che offre un vero e proprio client web.<br />
<strong> Attenzione:</strong> NON abusate di questo sistema poichè molti siti (compreso google) bannano gli ip se si usa il loro servizio con sistemi automatici. Inoltre se dovete usare funzioni del genere in produzione su siti di medio/alto traffico consiglio di prevedere una sorta di sistema di cache ne gioverà sia il vostro sito che quello target, ad esempio se 2 utenti nel giro di 1 ora fanno la stessa ricerca su google, è inutile ripetere la ricerca basta memorizzare il risultato da qualche parte in locale e restituire quello alla seconda ricerca.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bisontech.net/tutorial/php-scaricare-una-pagina-web-utilizzando-curl.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 1.034 seconds -->

