<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2italianfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>MaiNick Web</title>
	
	<link>http://www.mainickweb.com</link>
	<description>Tutorial e Risorse gratuite su jQuery, PHP e CSS</description>
	<lastBuildDate>Sun, 29 Jan 2012 10:17:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/MainickWeb" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="mainickweb" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FMainickWeb" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bloglines.com/sub/http://feeds.feedburner.com/MainickWeb" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FMainickWeb" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FMainickWeb" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FMainickWeb" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2FMainickWeb" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://add.my.yahoo.com/content?lg=it&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2FMainickWeb" src="http://eur.i1.yimg.com/eur.yimg.com/i/it/my/mioya1.gif">Subscribe with Mio Yahoo!</feedburner:feedFlare><item>
		<title>Semplici espressioni regolari</title>
		<link>http://www.mainickweb.com/semplici-espressioni-regolari/</link>
		<comments>http://www.mainickweb.com/semplici-espressioni-regolari/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 06:30:53 +0000</pubDate>
		<dc:creator>MaiNick</dc:creator>
				<category><![CDATA[snippets]]></category>
		<category><![CDATA[regular expressions]]></category>

		<guid isPermaLink="false">http://www.mainickweb.com/?p=738</guid>
		<description><![CDATA[Le espressioni regolari sono delimitate, di solito un carattere barra /, e queste contengono un modello che descrive una stringa. Di seguito alcuni semplici esempi: /c[ao]sa/ : corrisponde a &#8220;casa&#8221; e a &#8220;cosa&#8221; un&#8217;espressione che descrive qualcosa che contiene la lettera &#8220;c&#8221;, seguita da qualsiasi delle vocali &#8220;a&#8221; o &#8220;o&#8221;, seguito dalle lettere &#8220;sa&#8221;. Per [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-739" title="regular expressions" src="http://www.mainickweb.com/wp-content/2011/12/regular-expressions.jpg" alt="" width="733" height="308" /></p>
<p>Le <strong>espressioni regolari </strong>sono delimitate, di solito un carattere barra /, e queste contengono un modello che descrive una stringa.</p>
<p>Di seguito alcuni semplici esempi:</p>
<ul>
<li><code>/c[ao]sa/</code> : corrisponde a &#8220;casa&#8221; e a &#8220;cosa&#8221;</li>
</ul>
<p>un&#8217;espressione che descrive qualcosa che contiene la lettera &#8220;c&#8221;, seguita da qualsiasi delle vocali &#8220;a&#8221; o &#8220;o&#8221;, seguito dalle lettere &#8220;sa&#8221;.</p>
<p>Per indicare un intervallo di caratteri:</p>
<ul>
<li><code>/[0-9a-f]*/</code> : tutti valori esadecimale</li>
<li><code>/[0-9a-zA-Z]/</code> : corrisponde a tutte le stringhe alfanumeriche</li>
<li><code>/./</code> : il punto corrisponde a qualsiasi carattere</li>
<li><code>/\./</code> : si si vuole far corrispondere realmente un punto</li>
</ul>
<p>cercare un punto, ad esempio in nome a dominio, è necessario farlo precedere da un backslash.</p>
<p>Il quantificatore va messo dopo il carattere (o intervallo di caratteri) per indicare il <strong>numero di occorrenze</strong> che ci dovrebbero essere. E&#8217; possibile dare numeri precisi o utilizzare altri caratteri come:</p>
<ul>
<li>/ab{2}/ : corrisponde ad un stringa che contiene due caratteri &#8220;b&#8221; di seguito, ad esempio &#8220;abb&#8221;</li>
<li>/ab{2,5}/ : corrisponde ad una stringa che contiene minimo 2 caratteri &#8220;b&#8221; e massimo 5, ad esempio &#8220;abb&#8221;, &#8220;abbb&#8221;, &#8220;abbbb&#8221; e &#8220;abbbbb&#8221;</li>
<li>&#8220;?&#8221; : 0 o 1 occorrenza</li>
<li>&#8220;+&#8221; : 1 o più occorrenze</li>
<li>&#8220;*&#8221; : 0 o più occorrenze</li>
</ul>
<p>si noti che nei casi in cui indichiamo il numero di occorrenze massimo dobbiamo sempre specificare anche il numero di occorrenze minimo.</p>
<p>Facciamo un esempio:</p>
<ul>
<li><code>/c[ao]+sa/</code> : corrisponde a &#8220;casa&#8221; e a &#8220;cosa&#8221;, ma anche a &#8220;caasa&#8221;, &#8220;cooosa&#8221;, etc.</li>
</ul>
<p>C&#8217;è anche il simbolo <code>|</code>, che ha lo stesso significato dell&#8217;operatore OR:</p>
<ul>
<li><code>/Ciao|ciao/</code> : corrisponde alla stringa &#8220;Ciao&#8221; oppure &#8220;ciao&#8221;.</li>
</ul>
<p>Possiamo anche delimitare i modelli ad inizio e fine delle stringhe usando rispettivamente &#8220;^&#8221; e &#8220;$&#8221;:</p>
<ul>
<li><code>/^c[ao]sa/</code> : corrisponde a &#8220;casa&#8221; ma non a &#8220;andare a casa&#8221;.</li>
</ul>
<p>Se non ricordiamo tutte le regole per costruirci i nostri modelli di espressioni regolari possiamo utilizzare uno dei tanti <a title="Regular Expressions Cheat Sheet (V2)" href="http://www.addedbytes.com/cheat-sheets/regular-expressions-cheat-sheet/" target="_blank">cheat sheet stampabili</a> che si trovano in rete.</p>
<img src="http://feeds.feedburner.com/~r/MainickWeb/~4/i44QBxsPRmc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.mainickweb.com/semplici-espressioni-regolari/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Animazioni con jQuery in un sistema di votazione</title>
		<link>http://www.mainickweb.com/animazioni-con-jquery-in-un-sistema-di-votazione/</link>
		<comments>http://www.mainickweb.com/animazioni-con-jquery-in-un-sistema-di-votazione/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 06:30:27 +0000</pubDate>
		<dc:creator>MaiNick</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[animazione jquery]]></category>

		<guid isPermaLink="false">http://www.mainickweb.com/?p=726</guid>
		<description><![CDATA[Ho pensato di utilizzare il metodo animate() di jQuery per realizzare un sistema di votazione semplice ma bello da vedere. L&#8217;idea è quella di animare un div espandendolo ad ogni voto ricevuto, tramite la funzione animate, aggiungendo un stesso valore alla proprietà di lunghezza del div stesso. Documento html Foglio di stile CSS Effetti con [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-729" title="animazioni con jquery" src="http://www.mainickweb.com/wp-content/2011/09/animazioni-con-jquery.jpg" alt="" width="700" height="300" /></p>
<p>Ho pensato di utilizzare il <a title="Perform a custom animation of a set of CSS properties." href="http://api.jquery.com/animate/" target="_blank">metodo animate() di jQuery</a> per realizzare un sistema di votazione semplice ma bello da vedere.</p>
<p>L&#8217;idea è quella di animare un div espandendolo ad ogni voto ricevuto, tramite la funzione animate, aggiungendo un stesso valore alla proprietà di lunghezza del div stesso.</p>
<h2>Documento html</h2>
<pre class="brush: xml; title: ; notranslate">
&lt;div id=&quot;container&quot;&gt;
    &lt;span id=&quot;question&quot;&gt;Quale di questi framework PHP utilizzi?&lt;/span&gt;
    &lt;div&gt;&lt;span&gt;0&lt;/span&gt;&lt;a href=&quot;&quot;&gt;Vota&lt;/a&gt;Zend Framework&lt;/div&gt;
    &lt;div&gt;&lt;span&gt;0&lt;/span&gt;&lt;a href=&quot;&quot;&gt;Vota&lt;/a&gt;Symfony&lt;/div&gt;
    &lt;div&gt;&lt;span&gt;0&lt;/span&gt;&lt;a href=&quot;&quot;&gt;Vota&lt;/a&gt;CakePHP&lt;/div&gt;
    &lt;div&gt;&lt;span&gt;0&lt;/span&gt;&lt;a href=&quot;&quot;&gt;Vota&lt;/a&gt;CodeIgniter&lt;/div&gt;
    &lt;div&gt;&lt;span&gt;0&lt;/span&gt;&lt;a href=&quot;&quot;&gt;Vota&lt;/a&gt;Kohana&lt;/div&gt;
    &lt;div&gt;&lt;span&gt;0&lt;/span&gt;&lt;a href=&quot;&quot;&gt;Vota&lt;/a&gt;YII framework&lt;/div&gt;
&lt;/div&gt;
</pre>
<h2>Foglio di stile CSS</h2>
<pre class="brush: css; title: ; notranslate">
* {
  font-family: Arial, &quot;Free Sans&quot;;
}
body {
  margin: 0;
  padding: 0;
}
#container {
  margin-top: 20px;
  color: #fff;
}
#container #question {
  display: block;
  padding: 20px;
  font-weight: bold;
  letter-spacing: -3px;
  margin-bottom: 20px;
  padding: 10px;
  font-size: 40px;
  color: #333;
}
#container div {
  font-weight: bold;
  letter-spacing: -3px;
  background: #c00;
  margin-bottom: 15px;
  padding: 10px;
  font-size: 34px;
  color: #ffffff;
  border-left: 20px solid #333;
  width: 400px;
}
#container div a {
  border: 1px solid #40392C;
  border-radius: 5px;
  -webkit-border-radius: 5px;
  -moz-border-radius: 5px;
  text-decoration: none;
  color: #0BBFEC;
  padding: 5px 15px;
  background: #2F2F2F;
  margin: 0 20px;
}
#container div a:hover {
  color: #fff;
}
</pre>
<h2>Effetti con jQuery</h2>
<p>Non dimentichiamoci di includere la libreria jQuery nell&#8217;intestazione head del documento, poi colleghiamo lo script che permette l&#8217;animazione:</p>
<pre class="brush: jscript; title: ; notranslate">
$(document).ready(function() {
  $(&quot;#container div a&quot;).click(function() {
    $(this).parent(&quot;div&quot;).animate({ width: '+=30px' }, 500);
    $(this).prev(&quot;span&quot;).html(parseInt($(this).prev().html()) + 1);
    return false;
  });
});
</pre>
<p>Come potete vedere è tutto molto semplice <img src='http://www.mainickweb.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Associamo una funzione all&#8217;evento click sul numero di voti: prendiamo il nodo/oggetto padre del link e sudi esso chiamiamo il metodo animate che genera l&#8217;animazione di allungamento in un tempo di 500 millisecondi, dunque incrementiamo il numero di voti.</p>
<p align="center">
	<a href="http://www.mainickweb.com/esempi/jquery/animazione-jquery.html" title="Demo animazioni con jQuery" class="codice minimal" target="_blank"><span>Demo</span></a> <a href="http://www.mainickweb.com/esempi/jquery/animazione-jquery.zip" title="Download codice animazioni con jQuery" class="codice minimal"><span>Download</span></a></p>
<img src="http://feeds.feedburner.com/~r/MainickWeb/~4/2YXz54YZjGQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.mainickweb.com/animazioni-con-jquery-in-un-sistema-di-votazione/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Applicazioni Web Offline con HTML5</title>
		<link>http://www.mainickweb.com/applicazioni-web-offline-con-html5/</link>
		<comments>http://www.mainickweb.com/applicazioni-web-offline-con-html5/#comments</comments>
		<pubDate>Mon, 20 Jun 2011 06:00:00 +0000</pubDate>
		<dc:creator>MaiNick</dc:creator>
				<category><![CDATA[HMTL5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[cache manifest]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[web application offline]]></category>

		<guid isPermaLink="false">http://www.mainickweb.com/?p=722</guid>
		<description><![CDATA[HTML5 fornisce una nuova funzionalit&#224; di caching per supportare le applicazioni web in modalit&#224; offline. E&#8217; necessario specificare un determinato file chiamato &#8220;cache manifest&#8221; nella pagina web a cui vogliamo applicare il sistema di caching. L&#8217;URL del file cache manifest va specificato nel tag html del documento in cui vogliamo attivare la funzione di caching [...]]]></description>
			<content:encoded><![CDATA[<p><img style="display:block; margin-left:auto; margin-right:auto;" src="http://www.mainickweb.com/wp-content/2011/06/web-application-offline.jpg" alt="Web Application Offline" border="0" width="700" height="234" /></p>
<p>HTML5 fornisce una nuova <a href="http://www.w3.org/TR/offline-webapps/" title="Offline Web Applications" target="_blank">funzionalit&agrave; di caching</a> per supportare le <strong>applicazioni web in modalit&agrave; offline</strong>.</p>
<p>E&#8217; necessario specificare un determinato file chiamato <strong>&#8220;cache manifest&#8221;</strong> nella pagina web a cui vogliamo applicare il sistema di caching.<br />
L&#8217;URL del file cache manifest va specificato nel tag <code>html</code> del documento in cui vogliamo attivare la funzione di caching HTML5.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;!DOCTYPE HTML&gt;
&lt;html manifest=&quot;myapp.cache&quot;&gt;
...
</pre>
<p>E&#8217; importante che, per essere correttamente analizzato dal browser, il file di cache manifest deve avere come intestazione in <code>header</code> il tipo MIME <code>text/cache-manifest</code>; dunque &egrave; necessario aggiungere al web server l&#8217;associazione all&#8217;estensione del tipo di file o specificarlo manualmente, ad esempio utilizzando la direttiva <code>header</code> di PHP.</p>
<p>L&#8217;aspetto di un tipico file di cache manifest &egrave; il seguente:</p>
<pre class="brush: plain; title: ; notranslate">
CACHE MANIFEST
index.html
css/style.css
js/jquery.js
images/logo.png

NETWORK:
search.php
</pre>
<p>specifica diversi file di cache, e poi specifica che il file <em>search.php</em> non deve mai essere memorizzato nella cache, in modo da consentire che ad ogni tentativo di accesso al file &egrave; consentito di bypassare il file di cache.</p>
<p>Il procedimento di caching funziona nel momento in cui un utente fa richiesta o accede alla pagina corrispondente ad un documento a cui &egrave; associato un cache manifest, allora il browser deve prima controllare se su server quest&#8217;ultimo &egrave; stato modificato:</p>
<ul>
<li>se non &egrave; stato modificato, viene utilizzato il contenuto della cache</li>
<li>altrimenti se presente una nuova versione del cache manifest, il contenuto presente della cache viene considerato obsoleto e ricaricato dal server.</li>
</ul>
<p>Altra funzionalit&agrave; importante del cache manifest &egrave; che pu&ograve; contenere anche voci di ripiego (sotto la voce <code>FALLBACK</code>), utilizzate dal client/browser se non &egrave; possibile recuperare il contenuto originale.</p>
<pre class="brush: plain; title: ; notranslate">
CACHE MANIFEST
index.html
css/style.css
js/jquery.js
images/logo.png

NETWORK:
search.php

FALLBACK
images/thumb.php	error.png
</pre>
<p>nell&#8217;esempio viene utilizzata un&#8217;immagine statica quando il recupero di un&#8217;immagine generata dinamicamente fallisce.</p>
<p>In HTML5 sono definite delle <a href="http://www.whatwg.org/specs/web-apps/current-work/#application-cache-api" title="Application cache API" target="_blank">API</a> che permettono di attivare manualmente gli aggiornamenti della cache:</p>
<ul>
<li><strong>update()</strong>: aggiorna la cache per il documento corrente in background;</li>
<li><strong>swapCache()</strong>: passa alla cache dell&#8217;applicazione pi&ugrave; recente, se vi &egrave; una pi&ugrave; recente; valida anche per le successive richieste di risorse dalla cache;</li>
<li><strong>onchecking()</strong>: cattura l&#8217;evento <em>checking</em> che si manifesta quando il client/browser verifica se disponibile un aggiornamento o tenta di scaricare per la prima volta il file di cache manifest (questo &egrave; sempre il primo evento della sequenza);</li>
<li><strong>onerror()</strong>: cattura l&#8217;evento <em>error</em> che si manifesta per tutti gli errori che possono verificarsi del tipo: nello scaricare il cache manifest il client/browser ha ricevuto errore 404 o 410, non &egrave; stato possibile scariche le risorse elencate nel cache manifest, si &egrave; verificato un errore durante il recupero delle risorse;</li>
<li><strong>onnoupdate()</strong>: cattura l&#8217;evento <em>noupdate</em> che si manifesta quando il client/browser verifica se disponibile un aggiornamento il cache manifest non &egrave; cambiato;</li>
<li><strong>ondownloading()</strong>: cattura l&#8217;evento <em>downloading</em> che si manifesta quando il client/browser sta scaricando le risorse elencate nel cache manifest dopo aver verificato un aggiornamento di quel&#8217;ultimo;</li>
<li><strong>onprogress()</strong>: cattura l&#8217;evento <em>progress</em> che si manifesta quando il client/browser sta scaricando le risorse elencate nel cache manifest;</li>
<li><strong>onupdateready()</strong>: cattura l&#8217;evento <em>updateready</em> che si manifesta quando le risorse elencate nel cache manifest sono state appena ri-scaricate e lo script pu&ograve; utilizzare il metodo <code>swapCache()</code> per passare alla nuova cache;</li>
<li><strong>oncached()</strong>: cattura l&#8217;evento <em>cached</em> che si manifesta quando le risorse elencate nel cache manifest sono state scaricate e ora si trovano nella cache;</li>
<li><strong>onobsolete()</strong>: cattura l&#8217;evento <em>obsolete</em> che si manifesta quando per trovare il cache manifest il client/browser ha ricevuto l&#8217;errore 404 o 410, per cui la cache dell&#8217;applicazione viene cancellata;</li>
</ul>
<img src="http://feeds.feedburner.com/~r/MainickWeb/~4/Sj_IxOlG37k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.mainickweb.com/applicazioni-web-offline-con-html5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jCanvas: manipolare i Canvas con jQuery</title>
		<link>http://www.mainickweb.com/jcanvas-manipolare-i-canvas-con-jquery/</link>
		<comments>http://www.mainickweb.com/jcanvas-manipolare-i-canvas-con-jquery/#comments</comments>
		<pubDate>Mon, 23 May 2011 06:30:41 +0000</pubDate>
		<dc:creator>MaiNick</dc:creator>
				<category><![CDATA[HMTL5]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[html5]]></category>

		<guid isPermaLink="false">http://www.mainickweb.com/?p=718</guid>
		<description><![CDATA[Per chi cerca una soluzione facile per iniziare a giocare &#8211; dipingere &#8211; con i Canvas, elemento del nuovo standard HTML5, jCanvas &#232; un plugin jQuery che ne semplifica l&#8217;uso attraverso l&#8217;utilizzo dei metodi offerti. E&#8217; possibile definire la dimensione dell&#8217;elemento Canvas, le coordinate (X,Y) da cui partir&#224; il disegno. Molte delle forme sono gi&#224; [...]]]></description>
			<content:encoded><![CDATA[<p><img style="display:block; margin-left:auto; margin-right:auto;" src="http://www.mainickweb.com/wp-content/2011/05/jcanvas.jpg" alt="jCanvas" border="0" width="700" height="300" /></p>
<p>Per chi cerca una soluzione facile per iniziare a giocare &#8211; dipingere &#8211; con i <a href="http://www.w3.org/TR/html5/the-canvas-element.html" title="Elemento Canvas di HTML5" target="_blank">Canvas</a>, elemento del <strong>nuovo standard HTML5</strong>, <a href="http://calebevans.me/projects/jcanvas/" title="Manipolare i Canvas con jQuery" target="_blank"><strong>jCanvas</strong></a> &egrave; un plugin jQuery che <strong>ne semplifica l&#8217;uso</strong> attraverso l&#8217;utilizzo dei metodi offerti.</p>
<p>E&#8217; possibile definire la dimensione dell&#8217;<strong>elemento Canvas</strong>, le coordinate (X,Y) da cui partir&agrave; il disegno.<br />
Molte delle forme sono gi&agrave; pronte, come rettangoli, ellissi o archi, definite come oggetti, e molti metodi definiti per l&#8217;utilizzo delle immagini e dei testi.<br />
Per lo stile, tutto &egrave; reso pi&ugrave; semplice, sfumature o pattern, i colori possono essere indicati con i nomi, in HEX, RGB o RGBA.</p>
<p>Il plugin &egrave; in via di miglioramento e nuove funzionalit&agrave; sono aggiunte di continuo.<br />La pagina dedicata offre un&#8217;ottima documentazione da cui partire per iniziare nel migliore dei modi ad avvicinarsi agli elementi del nuovo linguaggio di markup HTML5.</p>
<p>Ecco come disegnare gli oggetti presenti dell&#8217;immagine postata all&#8217;inizio di questo articolo:</p>
<pre class="brush: jscript; title: ; notranslate">
$(&quot;canvas.test&quot;).drawRect({
  fillStyle: &quot;#000&quot;,
  x: 50, y: 50,
  width: 200,
  height: 100,
  fromCenter: false
});
$('canvas.test')
.drawArc({
fillStyle: '#729fcf',
x: 70, y: 70,
radius: 50
});
</pre>
<img src="http://feeds.feedburner.com/~r/MainickWeb/~4/AoavWSPoc1s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.mainickweb.com/jcanvas-manipolare-i-canvas-con-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Come rendere il database più sicuro</title>
		<link>http://www.mainickweb.com/come-rendere-il-database-pi-sicuro/</link>
		<comments>http://www.mainickweb.com/come-rendere-il-database-pi-sicuro/#comments</comments>
		<pubDate>Mon, 09 May 2011 06:30:00 +0000</pubDate>
		<dc:creator>MaiNick</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[database sicuro]]></category>
		<category><![CDATA[SQL Injection]]></category>

		<guid isPermaLink="false">http://www.mainickweb.com/?p=657</guid>
		<description><![CDATA[Se hai un sito web in cui memorizzi dati dell&#8217;utente &#232; probabile che si utilizzi un database, come MySQL, SQLite o altro, ed &#232; importante assicurarsi che il proprio database sia sicuro da e per gli utenti. Creare istruzioni di query al volo come la sequente: &#232; considerata una cattiva pratica che pu&#242; essere facilmente [...]]]></description>
			<content:encoded><![CDATA[<p><img style="display:block; margin-left:auto; margin-right:auto;" src="http://www.mainickweb.com/wp-content/2011/05/sql-inject.jpg" alt="SQL inject" border="0" width="600" height="260" /></p>
<p>Se hai un sito web in cui memorizzi dati dell&#8217;utente &egrave; probabile che si utilizzi un database, come MySQL, SQLite o altro, ed &egrave; importante assicurarsi che il proprio <strong>database sia sicuro</strong> da e per gli utenti.</p>
<p>Creare istruzioni di query al volo come la sequente:</p>
<pre class="brush: php; title: ; notranslate">$sql = &quot;INSERT INTO commenti (nome, commento) VALUES (&quot;.$nome.&quot;,&quot;.$commento.&quot;)&quot;;</pre>
<p>&egrave; considerata una cattiva pratica che pu&ograve; essere facilmente superata, eliminando la maggior parte dei problemi, utilizzando <strong>dichiarazioni SQL prepare</strong>.</p>
<p>Realizzare istruzioni SQL come la precedente pu&ograve; essere rischioso. Se un utente malizioso invia, tramite il modulo del commento, una istruzione SQL appositamente predisposta, &egrave; possibile eseguire query al database. Invece, &egrave; necessario utilizzare <strong>dichiarazioni prepare</strong> come questa:</p>
<pre class="brush: php; title: ; notranslate">$sql = $db-&gt;prepare('INSERT INTO commenti (nome, commento) VALUES (?,?)');</pre>
<p>aggiungere poi i valori singolarmente</p>
<pre class="brush: php; title: ; notranslate">
$sql-&gt;bindParam(1, $nome);
$sql-&gt;bindParam(2, $commento);
</pre>
<p>e infine eseguire la query</p>
<pre class="brush: php; title: ; notranslate">$sql-&gt;execute();</pre>
<p>Si trattano di poche righe in pi&ugrave;, ma che rendono il vostro <strong>codice molto pi&ugrave; sicuro</strong>.</p>
<p>Non solo il database deve essere al sicuro contro le query non intenzionali, ma anche gli utenti.<br />
Se qualcuno &egrave; in grado di memorizzare un commento che sar&agrave; visualizzato da tutti gli altri utenti, allora l&#8217;input deve essere limitato a quello che ci aspettiamo, come in questo caso solo testo. Se invece permettiamo di scrivere codice HTML, un utente malizioso potrebbe caricare un malware da un altro sito, il classico exploit XSS.</p>
<p>Una soluzione semplice pu&ograve; essere l&#8217;utilizzo di funzioni per <strong>sterilizzare l&#8217;input</strong>, dunque sostituire, come nel caso citato, i tag HTML con quelli innocui.<br />
Ad esempio, in un codice PHP che si interfaccia con un database MySQL &egrave; possibile utilizzare:</p>
<pre class="brush: php; title: ; notranslate">$nome = mysql_real_escape_string($_POST['nome']);</pre>
<p>che inserisce l&#8217;escape davanti a caratteri speciali in una istruzione SQL.</p>
<p>Puoi leggere l&#8217;articolo su come <a href="http://www.mainickweb.com/utilizzare-piu-istruzioni-sql-prepare-con-php-mysqli/" title="Utilizzare pi&ugrave; istruzioni SQL prepare con PHP">utilizzare pi&ugrave; istruzioni SQL prepare con PHP</a> per approfondire l&#8217;argomento, e risolvere il problema di utilizzare pi&ugrave; dichiarazioni SQL prepare per l&#8217;esecuzione.</p>
<img src="http://feeds.feedburner.com/~r/MainickWeb/~4/9IBLTu14HKQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.mainickweb.com/come-rendere-il-database-pi-sicuro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Menu Verticale con Effetto Fisarmonica – versione history</title>
		<link>http://www.mainickweb.com/menu-verticale-con-effetto-fisarmonica-versione-history/</link>
		<comments>http://www.mainickweb.com/menu-verticale-con-effetto-fisarmonica-versione-history/#comments</comments>
		<pubDate>Fri, 22 Apr 2011 06:30:30 +0000</pubDate>
		<dc:creator>MaiNick</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[menu effetto easing]]></category>
		<category><![CDATA[menu verticale]]></category>
		<category><![CDATA[menu verticale jquery]]></category>

		<guid isPermaLink="false">http://www.mainickweb.com/?p=606</guid>
		<description><![CDATA[Dopo aver ricevuto abbastanza e-mail e feedback in generale riguardo ad alcune richieste di modifiche, ho deciso di sviluppare una seconda versione del menu verticale con effetto a fisarmonica sperando di soddisfare la maggior parte degli utenti. In questa seconda versione del tutorial aggiungiamo la possibilità di aprire l&#8217;elenco a tendina tramite un secondo bottone [...]]]></description>
			<content:encoded><![CDATA[<p><img style="display: block; margin-left: auto; margin-right: auto; border: 0px initial initial;" title="Menu Verticale con jQuery" src="http://www.mainickweb.com/wp-content/2011/04/menu-verticale-jquery.jpg" border="0" alt="Menu Verticale con jQuery" width="500" height="280" /></p>
<p>Dopo aver ricevuto abbastanza e-mail e feedback in generale riguardo ad alcune richieste di modifiche, ho deciso di sviluppare una <strong>seconda versione del <a title="Menu Verticale con jQuery" href="http://www.mainickweb.com/menu-verticale-jquery-con-effetto-fisarmonica/">menu verticale con effetto a fisarmonica</a></strong> sperando di soddisfare la maggior parte degli utenti.</p>
<p>In questa seconda versione del tutorial aggiungiamo la possibilità di <strong>aprire l&#8217;elenco a tendina tramite un secondo bottone</strong> così da rimanere al link della voce del menu principale la sua funzione predefinita.</p>
<h2>Documento HTML</h2>
<p>Quello che andiamo a cambiare alla nostra pagina HTML è l&#8217;aggiunta di una <strong>freccia down che avrà la funzione di avviare l&#8217;effetto a fisarmonica per visualizzare le voci del sotto menu</strong>:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;li class=&quot;menu&quot;&gt; &lt;!-- costituisce ogni sezione del menu principale --&gt;
  &lt;ul&gt;
    &lt;!-- titolo della sezione che fa aprire il sotto menu --&gt;
    &lt;li class=&quot;title&quot;&gt;
		&lt;a href=&quot;http://www.mainickweb.com/category/firefox/&quot;&gt;Categoria Firefox&lt;/a&gt;
		&lt;img src=&quot;bullet_arrow_down.png&quot; /&gt;
	&lt;/li&gt;
    &lt;li class=&quot;sub-menu sub-menu-open&quot;&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;a href=&quot;http://www.mainickweb.com/hack-css-per-firefox-opera-safari-e-internet-explorer/&quot;&gt;Articolo 1&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;http://www.mainickweb.com/firefox-3-le-caratteristiche/&quot;&gt;Articolo 2&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/li&gt;
  &lt;/ul&gt;
&lt;/li&gt;
</pre>
<p>Aggiungiamo un&#8217;altra classe CSS <code>sub-menu-open</code> all&#8217;elenco del sotto menu per indicare quale di default è <strong>aperto inizialmente</strong> al caricamento della pagina.</p>
<h2>Foglio di stile CSS</h2>
<p>Abbiamo modificato le proprietà di alcuni selettori per utilizzare la <strong>freccia come bottone di apertura</strong>, aggiunta la classe per il sotto menu aperto di default e aggiunto il cursore di tipo puntatore quando andiamo sopra all&#8217;immagine:</p>
<pre class="brush: css; title: ; notranslate">
ul {
	margin: 0;
	padding: 0;
}

ul.container {
	width: 240px;
	margin: 0 auto;
	padding: 50px;
}

li {
	list-style: none;
	text-align: left;
}

li.menu {
	/* Voci dell'elenco principale */
	width: 100%;
	padding: 5px 0;
}

li.title {
	display: block;
	position: relative;
	width: 200px;
	height: 34px;
	padding: 10px 20px 0;
	-moz-border-radius: 5px;
	-webkit-border-radius: 5px;
	border-radius: 5px;
	background-color: #cc0000;
}

li.title:hover {
	background-color: #f40000;
}

li.title a {
	/* Voce del menu principale */
	color: #ffffff;
	font-family: BPreplay,Arial,Helvetica,sans-serif;
	font-size: 21px;
	overflow: hidden;
}

li.title a:hover {
	text-decoration: none;
}

li.title a span {
	/* Questo span agisce come parte finale della sezione title */
	display: block;
	position: absolute;
	top: 0;
	right: 0;
	width: 4px;
	height: 44px;
}

li.title img {
	/* freccia apertura sotto menu */
	float: right;
	cursor: pointer;
}

.sub-menu {
	/* Sotto menu */
	display: none;
	width: 100%;
	padding-top: 5px;
}

.sub-menu li {
	/* Voci del sotto menu */
	margin: 5px 0;
	padding: 4px 18px;
	border: 1px solid #40392c;
	background-color: #2F2F2F;
	color: #cccccc;
}

.sub-menu-open {
	display: block;
}
</pre>
<h2>Effetti con jQuery</h2>
<p>Gli script che andremo ad includere nella pagina sono gli stessi, ma bisogna dare uno sguardo allo script che gestisce l&#8217;effetto per vedere le modifiche apportate:</p>
<pre class="brush: jscript; title: ; notranslate">
$(document).ready(function(){

	/* Cambiare l'effetto da utilizzare */
	$.easing.def = &quot;easeOutBounce&quot;;

	/* Associare una funzione all'evento click sul link */
	$('li.title img').click(function(e){

		/* Trovare l'elenco a discesa che corrisponde al menu cliccato: */
		var subMenu = $(this).parent().next();

		/* Trovare il sotto menu che corrisponde alla voce cliccata */
		$('.sub-menu').not(subMenu).slideUp('slow');
		subMenu.stop(false,true).slideToggle('slow');

		/* Prevenire l'evento predefinito (che sarebbe di seguire il collegamento) */
		e.preventDefault();
	})

});
</pre>
<p>L&#8217;unica modifica effettuata riguarda il <strong>selettore</strong> su cui catturiamo l&#8217;evento <code>click</code> <strong>per aprire il corrispondente sotto menu</strong>.</p>
<h2>Versione History</h2>
<p>Ho deciso di chiamare questo secondo tutorial in questo modo perché un&#8217;altra importante richiesta ricevuta è quella di <strong>mantenere il sotto menu aperto</strong> nella pagina raggiunta da un link di uno dei sotto menu.</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php $array_label_menu = array('jquery' =&gt; '', 'php' =&gt; '', 'css' =&gt; '', 'firefox' =&gt; '') ?&gt;
&lt;?php $submenu_open = (isset($_GET['menu']) &amp;amp;&amp;amp; $_GET['menu']!='') ? $_GET['menu'] : 'php'; ?&gt;
&lt;?php $array_label_menu[$submenu_open] = 'sub-menu-open'; ?&gt;
</pre>
<p>Utilizzando un array indichiamo come chiavi di valori nulli le parole che specificano la nostra voce del menu principale e utilizzando una valore che ci inviamo tramite l&#8217;array globale <code>$_GET</code> andiamo a inserire la classe CSS <code>sub-menu-open</code> come valore alla chiave corrispondete al <code>$_GET['menu']</code> inviato.</p>
<p>Adesso vediamo come si modifica la parte riguardo al menu:</p>
<pre class="brush: php; title: ; notranslate">
&lt;li class=&quot;menu&quot;&gt; &lt;!-- costituisce ogni sezione del menu principale --&gt;
  &lt;ul&gt;
    &lt;!-- titolo della sezione che fa aprire il sotto menu --&gt;
    &lt;li class=&quot;title&quot;&gt;
		&lt;a href=&quot;http://www.mainickweb.com/category/firefox/?menu=firefox&quot;&gt;Categoria Firefox&lt;/a&gt;
		&lt;img src=&quot;bullet_arrow_down.png&quot; /&gt;
	&lt;/li&gt;
    &lt;li class=&quot;sub-menu &lt;?php echo $array_label_menu['firefox'] ?&gt;&quot;&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;a href=&quot;http://www.mainickweb.com/hack-css-per-firefox-opera-safari-e-internet-explorer/?menu=firefox&quot;&gt;Articolo 1&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;http://www.mainickweb.com/firefox-3-le-caratteristiche/?menu=firefox&quot;&gt;Articolo 2&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/li&gt;
  &lt;/ul&gt;
&lt;/li&gt;
</pre>
<p align="center"><a class="codice minimal" title="Demo menu verticale con jQuery versione History" href="http://www.mainickweb.com/esempi/jquery/menu-verticale-vers-history/menu-verticale.html" target="_blank"><span>Demo</span></a> <a class="codice minimal" title="Download codice menu verticale con jQuery versione History" href="http://www.mainickweb.com/esempi/jquery/menu-verticale-vers-history.zip"><span>Download</span></a></p>
<img src="http://feeds.feedburner.com/~r/MainickWeb/~4/MKveu8gBzRw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.mainickweb.com/menu-verticale-con-effetto-fisarmonica-versione-history/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Italia Unita 150</title>
		<link>http://www.mainickweb.com/italia-unita-150/</link>
		<comments>http://www.mainickweb.com/italia-unita-150/#comments</comments>
		<pubDate>Thu, 17 Mar 2011 12:11:21 +0000</pubDate>
		<dc:creator>MaiNick</dc:creator>
				<category><![CDATA[Eventi]]></category>
		<category><![CDATA[italia unita 150]]></category>

		<guid isPermaLink="false">http://www.mainickweb.com/?p=598</guid>
		<description><![CDATA[Cara Italia, perché giusto o sbagliato che sia questo è il mio paese con le sue grandi qualità ed i suoi grandi difetti. ﻿ Enzo Biagi]]></description>
			<content:encoded><![CDATA[<p><img style="display: block; margin-left: auto; margin-right: auto; border: 0px initial initial;" title="Italia Unita 150" src="http://www.mainickweb.com/wp-content/2011/03/italia-unita-1502.jpg" border="0" alt="Italia Unita 150" width="500" height="500" /></p>
<blockquote><p><span style="font-family: sans-serif; font-size: 13px; line-height: 19px;">Cara Italia, perché giusto o sbagliato che sia questo è il mio paese con le sue grandi qualità ed i suoi grandi difetti. ﻿</span></p>
<p><span style="font-family: sans-serif; font-size: 13px; line-height: 19px;"><em>Enzo Biagi</em></span></p></blockquote>
<p style="text-align: center;"><a href="http://www.mainickweb.com/italia-unita-150/"><img src="http://img.youtube.com/vi/F2Y8R-u_m3Q/default.jpg" width="130" height="97" border=0></a></p>
<p style="text-align: center;"><a href="http://www.mainickweb.com/italia-unita-150/"><img src="http://img.youtube.com/vi/Ng95Y-aooiQ/default.jpg" width="130" height="97" border=0></a></p>
<img src="http://feeds.feedburner.com/~r/MainickWeb/~4/JwRnBSe_cF0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.mainickweb.com/italia-unita-150/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TinyBox2: window modali standalone</title>
		<link>http://www.mainickweb.com/tinybox2-window-modali-standalone/</link>
		<comments>http://www.mainickweb.com/tinybox2-window-modali-standalone/#comments</comments>
		<pubDate>Wed, 16 Mar 2011 06:00:00 +0000</pubDate>
		<dc:creator>MaiNick</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[modal windows]]></category>

		<guid isPermaLink="false">http://www.mainickweb.com/?p=590</guid>
		<description><![CDATA[TinyBox2 &#232; il successore di TinyBox, una libreria JavaScript standalone, autonoma senza l&#8217;utilizzo di ulteriori framework come jQuery, per la realizzazione di finestre modali. Dal peso leggero (5 KB), supporta immagini, iframe, HTML e richieste AJAX native. Le finestre modali realizzabili sono molto personalizzabili nelle animazioni, livello di opacit&#224;, auto-hide, posizione personalizzate e molto altro. [...]]]></description>
			<content:encoded><![CDATA[<p><img style="display:block; margin-left:auto; margin-right:auto;" src="http://www.mainickweb.com/wp-content/2011/03/tinybox2.jpg" alt="TinyBox - windows modal" border="0" width="500" height="190" /></p>
<p><strong>TinyBox2</strong> &egrave; il successore di TinyBox, una <strong>libreria JavaScript standalone</strong>, autonoma senza l&#8217;utilizzo di ulteriori framework come jQuery, per la <strong>realizzazione di finestre modali</strong>.</p>
<p>Dal <strong>peso leggero (5 KB)</strong>, supporta immagini, iframe, HTML e richieste AJAX native. Le finestre modali realizzabili sono <strong>molto personalizzabili</strong> nelle animazioni, livello di opacit&agrave;, auto-hide, posizione personalizzate e molto altro. Come gi&agrave; ci hanno insegnato altri tipo di plugin con la stessa funzionalit&agrave;, &egrave; possibile chiudere le finestre cliccando sul pulsante di chiusura, cliccando ovunque al di fuori dell&#8217;area della finestra o tramite il tasto ESC della tastiera.</p>
<p>Inoltre possiamo implementare <strong>funzioni di callback</strong> per gli eventi di apertura o chiusura, e le finestre possono essere impostate con dimensioni fisse in larghezza e lunghezza o automatiche in base al loro contenuto.</p>
<p>E&#8217; semplice utilizzare TinyBox2, ecco una semplice chiamata di una pagina HTML in una finestra modale:</p>
<pre class="brush: jscript; title: ; notranslate">
TINY.box.show ({url: 'page-example.html' , larghezza: 300, altezza: 150});
</pre>
</p>
<p>Le opzioni disponibili sono:</p>
<ul>
<li><strong>html</strong>: contenuto HTML [false]</li>
<li><strong>iframe</strong>: URL for embedded iframe [false]</li>
<li><strong>url</strong>: path per chiamata AJAX [false]</li>
<li><strong>post</strong>: variabile post, usata in congiunzione con url [false]</li>
<li><strong>image</strong>: path immagine [false]</li>
<li><strong>width</strong>: larghezza finestra [false]</li>
<li><strong>height</strong>: altezza finestra [false]</li>
<li><strong>animate</strong>: attiva/disattiva animazione [true]</li>
<li><strong>close</strong>: visualizza bottone chiudi [true]</li>
<li><strong>openjs</strong>: generica funzione eseguita su evento apertura [null]</li>
<li><strong>closejs</strong>: generica funzione eseguita su evento chiusura [null]</li>
<li><strong>autohide</strong>: numero di secondi di attesa per l&#8217;auto-chiusura della finestra[false]</li>
<li><strong>fixed</strong>: imposta posizione della finestra fixed/static (css) [true]</li>
<li><strong>opacity</strong>: imposta opacit&agrave; della finestra da 0-100 [70]</li>
<li><strong>top</strong>: per la posizione assoluta della finestra, pixels di distanza dal&#8217;alto [null]</li>
<li><strong> left </strong>: per la posizione assoluta della finestra, pixels di distanza da sinistra [null]</li>
</ul>
<p>Questo script &egrave; testato in IE7+, Firefox, Chrome, Opera e Safari ed &egrave; disponibile gratuitamente sul sito dell&#8217;autore con per ulteriori <a href="http://www.scriptiny.com/2011/03/javascript-modal-windows/" title="javascript window modali" target="_blank">informazioni e demo</a>.</p>
<img src="http://feeds.feedburner.com/~r/MainickWeb/~4/VXqWsWhWvj0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.mainickweb.com/tinybox2-window-modali-standalone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mtrack: un completo tracker per lo sviluppo di progetti</title>
		<link>http://www.mainickweb.com/mtrack-un-completo-tracker-per-lo-sviluppo-di-progetti/</link>
		<comments>http://www.mainickweb.com/mtrack-un-completo-tracker-per-lo-sviluppo-di-progetti/#comments</comments>
		<pubDate>Mon, 14 Mar 2011 06:00:00 +0000</pubDate>
		<dc:creator>MaiNick</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Servizi]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[project management]]></category>

		<guid isPermaLink="false">http://www.mainickweb.com/?p=586</guid>
		<description><![CDATA[mtrack è un&#8217;applicazione open source, realizzata in PHP, per il completo controllo di un progetto software/web applicazione. Permette la gestione del progetto, navigazione del codice, wiki e caratteristiche di time tracking. L&#8217;applicazione ha un sistema di tracciamento dei componenti, priorità, gravità e tappe, in base anche alle stime di tempo e fatiche registrate. Inoltre si [...]]]></description>
			<content:encoded><![CDATA[<p><img style="display: block; margin-left: auto; margin-right: auto;" src="http://www.mainickweb.com/wp-content/2011/03/mtrack.jpg" border="0" alt="mtrack - software development tracker" width="500" height="362" /></p>
<p><a title="software development tracker" href="http://mtrack.wezfurlong.org/" target="_blank">mtrack</a> è un&#8217;applicazione open source, realizzata in PHP, per il <strong>completo controllo di un progetto</strong> software/web applicazione.</p>
<p>Permette la <strong>gestione del progetto</strong>, <strong>navigazione del codice</strong>, <strong>wiki</strong> e caratteristiche di <strong>time tracking</strong>. L&#8217;applicazione ha un sistema di tracciamento dei componenti, priorità, gravità e tappe, in base anche alle stime di tempo e fatiche registrate. Inoltre si integra perfettamente con i servizi di repository Subversion, Mercurial e Git per la <strong>gestione delle versioni del progetto</strong>.</p>
<p>Gli utenti possono ricevere notifiche di aggiornamento del codice del progetto o comunicare con gli altri collaboratori via e-mail.</p>
<p>Inoltre è possibile estendere o personalizzare ulteriormente mtrack attraverso le API offerte.</p>
<img src="http://feeds.feedburner.com/~r/MainickWeb/~4/ATff-LW99To" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.mainickweb.com/mtrack-un-completo-tracker-per-lo-sviluppo-di-progetti/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Xdebug: debugging e profiling delle applicazioni PHP</title>
		<link>http://www.mainickweb.com/xdebug-debugging-e-profiling-delle-applicazioni-php/</link>
		<comments>http://www.mainickweb.com/xdebug-debugging-e-profiling-delle-applicazioni-php/#comments</comments>
		<pubDate>Thu, 17 Feb 2011 15:18:41 +0000</pubDate>
		<dc:creator>MaiNick</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[debug php]]></category>
		<category><![CDATA[xdebug]]></category>

		<guid isPermaLink="false">http://www.mainickweb.com/?p=578</guid>
		<description><![CDATA[Xdebug è un&#8217;estensione PHP gratuita e open source che permette il debugging e il profiling degli script PHP in dettaglio. Considerando che è una estensione, l&#8217;utilizzo è facile e richiede pochissime configurazione per integrarlo nelle nostre applicazioni. Xdebug ti aiuta fornendo molte informazioni utili di debug: tracce di funzioni e di stack delle variabili nei [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter size-full wp-image-576" style="width: 500px; border: 0pt none;" title="Xdebug" src="http://www.mainickweb.com/wp-content/2011/02/xdebug-logo.png" alt="Xdebug estensione per il debug degli scripts PHP" width="500" height="290" /></p>
<p><a href="http://xdebug.org/" target="_blank">Xdebug</a> è un&#8217;estensione PHP gratuita e open source che <strong>permette il debugging e il profiling degli script PHP</strong> in dettaglio.</p>
<p>Considerando che è una estensione, l&#8217;utilizzo è facile e richiede <strong>pochissime configurazione</strong> per integrarlo nelle nostre applicazioni.<br />
Xdebug ti aiuta fornendo molte informazioni utili di debug:</p>
<ul>
<li>tracce di funzioni e di <strong>stack delle variabili</strong> nei messaggi di errore con la completa <strong>visualizzazione dei parametri delle funzioni definite dall&#8217;utente</strong>, il nome della funzione, il nome del file e il numero di linea nel codice in cui si è verificato l&#8217;errore.</li>
<li><strong>allocazione di memoria</strong></li>
<li>protezione da cicli infiniti</li>
</ul>
<p>Inoltre fornisce informazioni di profiling, un potente strumento che analizza il codice PHP e <strong>determina i colli di bottiglia</strong> o in generale <strong>individua le parti del codice più lente</strong>, analisi del code coverage ed ha la capacità di eseguire il debug in modo interattivo attraverso un interfaccia da browser, tramite estensioni per i browser di interagire con l&#8217;esecuzione degli scripts PHP.</p>
<img src="http://feeds.feedburner.com/~r/MainickWeb/~4/jb6wkDooGyQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.mainickweb.com/xdebug-debugging-e-profiling-delle-applicazioni-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

