<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Ciarpame {.com}</title>
	
	<link>http://www.ciarpame.com</link>
	<description>Useful stuffs for the masses. Useless things for few.</description>
	<lastBuildDate>Tue, 01 Dec 2009 13:03:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Ciarpame" /><feedburner:info uri="ciarpame" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FCiarpame" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FCiarpame" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FCiarpame" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/Ciarpame" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FCiarpame" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FCiarpame" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FCiarpame" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2FCiarpame" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://my.feedlounge.com/external/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2FCiarpame" src="http://static.feedlounge.com/buttons/subscribe_0.gif">Subscribe with FeedLounge</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2FCiarpame" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2FCiarpame" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FCiarpame" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare href="http://www.yourminis.com/subscribe.aspx?u=http%3A%2F%2Ffeeds.feedburner.com%2FCiarpame" src="http://www.yourminis.com/images/addtoyourminisbadge.gif">Subscribe with Yourminis.com</feedburner:feedFlare><feedburner:feedFlare href="http://download.attensa.com/app/get_attensa.html?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FCiarpame" src="http://www.attensa.com/blogs/attensa/WindowsLiveWriter/BadgeredintoBadges_10C02/attensa_feed_button5.gif">Subscribe with Attensa for Outlook</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FCiarpame" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare href="http://hub.netomat.net/account/account.autoSubscribe.jspa?urls=http%3A%2F%2Ffeeds.feedburner.com%2FCiarpame" src="http://www.netomat.net/blogger/images/icon_netomat_feedbutton.gif">Subscribe with netomat Hub</feedburner:feedFlare><feedburner:feedFlare href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2FCiarpame" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FCiarpame" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.flurry.com/pushRssFeed.do?r=fb&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2FCiarpame" src="http://www.flurry.com/images/flurry_rss_logo2.gif">Subscribe with Flurry</feedburner:feedFlare><feedburner:feedFlare href="https://intouch.particls.com/download/?mode=2&amp;feed=http%3A%2F%2Ffeeds.feedburner.com%2FCiarpame" src="https://intouch.particls.com/resources/buttons/it-button2.gif">Subscribe with Particls</feedburner:feedFlare><feedburner:feedFlare href="http://www.addtoany.com/?linkname=Ciarpame%20%7B.com%7D&amp;linkurl=http%3A%2F%2Ffeeds.feedburner.com%2FCiarpame&amp;type=feed" src="http://www.addtoany.com/addfr-b.gif">Add to Any Feed Reader</feedburner:feedFlare><feedburner:feedFlare href="http://www.fwicki.com/users/default.aspx?addfeed=http%3A%2F%2Ffeeds.feedburner.com%2FCiarpame" src="http://www.fwicki.com/images/ui/fwicki_clicklet.png">Subscribe with fwicki</feedburner:feedFlare><item>
		<title>La funzione __autoload di PHP</title>
		<link>http://feedproxy.google.com/~r/Ciarpame/~3/LZt-iCWnEbQ/</link>
		<comments>http://www.ciarpame.com/2009/12/01/la-funzione-__autoload-di-php/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 12:54:41 +0000</pubDate>
		<dc:creator>Mattia Palugan</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[autoloading]]></category>
		<category><![CDATA[classes]]></category>
		<category><![CDATA[oop]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.ciarpame.com/?p=667</guid>
		<description><![CDATA[La funzione __autoload di PHP è una funzione molto utile per includere delle classi solo quando servono e senza doverle includere a mano. Se esiste, questa funzione, infatti, viene richiamata quando si tenta di utilizzare una classe o un&#8217;interfaccia che non è stata ancora dichiarata. Ha un unico parametro che è il nome della classe [...]]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/PK1mS0WDOZZnymFgjiOnc2Kftp0/0/da"><img src="http://feedads.g.doubleclick.net/~a/PK1mS0WDOZZnymFgjiOnc2Kftp0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/PK1mS0WDOZZnymFgjiOnc2Kftp0/1/da"><img src="http://feedads.g.doubleclick.net/~a/PK1mS0WDOZZnymFgjiOnc2Kftp0/1/di" border="0" ismap="true"></img></a></p><p>La funzione <a title="PHP: Autoloading Classes" href="http://www.php.net/autoload">__autoload</a> di PHP è una funzione molto utile per includere delle classi solo quando servono e senza doverle includere a mano.<br />
<span id="more-667"></span><br />
Se esiste, questa funzione, infatti, viene richiamata quando si tenta di utilizzare una classe o un&#8217;interfaccia che non è stata ancora dichiarata.<br />
Ha un unico parametro che è il nome della classe che è possibile manipolare per arrivare al nome del file che la include e non restituisce nulla.<br />
Ecco un esempio dove le classi sono contenute in una cartella con il percorso definito nella costante <em>_CLASS</em> e in file con il nome “nomeclasse.class.php”:</p>

<div class="wp_codebox"><table><tr id="p6672"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code" id="p667code2"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #009933; font-style: italic;">/**
* Autoload delle classi
* @param string $c nome della classe
*/</span>
<span style="color: #000000; font-weight: bold;">function</span> __autoload<span style="color: #009900;">&#40;</span><span style="color: #000088;">$class_name</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$path</span> <span style="color: #339933;">=</span>  _CLASS<span style="color: #339933;">.</span><span style="color: #990000;">strtolower</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$class_name</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'.class.php'</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$path</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$path</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #990000;">unset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$path</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Ciarpame?a=LZt-iCWnEbQ:gOjPfy8Ka5Y:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=LZt-iCWnEbQ:gOjPfy8Ka5Y:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=LZt-iCWnEbQ:gOjPfy8Ka5Y:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=LZt-iCWnEbQ:gOjPfy8Ka5Y:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=LZt-iCWnEbQ:gOjPfy8Ka5Y:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=LZt-iCWnEbQ:gOjPfy8Ka5Y:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=LZt-iCWnEbQ:gOjPfy8Ka5Y:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=LZt-iCWnEbQ:gOjPfy8Ka5Y:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=LZt-iCWnEbQ:gOjPfy8Ka5Y:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=LZt-iCWnEbQ:gOjPfy8Ka5Y:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=LZt-iCWnEbQ:gOjPfy8Ka5Y:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=LZt-iCWnEbQ:gOjPfy8Ka5Y:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=LZt-iCWnEbQ:gOjPfy8Ka5Y:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Ciarpame/~4/LZt-iCWnEbQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ciarpame.com/2009/12/01/la-funzione-__autoload-di-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.ciarpame.com/2009/12/01/la-funzione-__autoload-di-php/</feedburner:origLink></item>
		<item>
		<title>SIS – Google Adwords {Free Download!}</title>
		<link>http://feedproxy.google.com/~r/Ciarpame/~3/OdZBjDPEs60/</link>
		<comments>http://www.ciarpame.com/2009/07/15/sis-google-adwords-free-download/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 15:15:34 +0000</pubDate>
		<dc:creator>Sebastiano Riva</dc:creator>
				<category><![CDATA[Download]]></category>
		<category><![CDATA[Web Marketing]]></category>
		<category><![CDATA[Resources]]></category>
		<category><![CDATA[Risorse]]></category>
		<category><![CDATA[Web Trends]]></category>

		<guid isPermaLink="false">http://www.ciarpame.com/?p=659</guid>
		<description><![CDATA[In Download gratuito un documento molto utile per tutti coloro che si vogliono accostare al mondo del Web Marketing tramite l&#8217;utilizzo di Google Adwords. SIS_Google_Adwords.pdf]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/dElh0kzMmZMJlcSWj1WjNmWSRfE/0/da"><img src="http://feedads.g.doubleclick.net/~a/dElh0kzMmZMJlcSWj1WjNmWSRfE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/dElh0kzMmZMJlcSWj1WjNmWSRfE/1/da"><img src="http://feedads.g.doubleclick.net/~a/dElh0kzMmZMJlcSWj1WjNmWSRfE/1/di" border="0" ismap="true"></img></a></p><p>In Download gratuito un documento molto utile per tutti coloro che si vogliono accostare al mondo del Web Marketing tramite l&#8217;utilizzo di Google Adwords.</p>
<table border="0">
<tbody>
<tr>
<td><img class="alignleft size-full wp-image-385" title="download" src="http://www.ciarpame.com/wp-content/uploads/2008/11/download1.jpg" alt="download" width="20" height="20" /></td>
<td><a href="http://www.soluzionisis.com/inc/doc/SIS_Google_Adwords.pdf" target="_blank">SIS_Google_Adwords.pdf</a></td>
</tr>
</tbody>
</table>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Ciarpame?a=OdZBjDPEs60:xO83Mov4Mxs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=OdZBjDPEs60:xO83Mov4Mxs:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=OdZBjDPEs60:xO83Mov4Mxs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=OdZBjDPEs60:xO83Mov4Mxs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=OdZBjDPEs60:xO83Mov4Mxs:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=OdZBjDPEs60:xO83Mov4Mxs:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=OdZBjDPEs60:xO83Mov4Mxs:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=OdZBjDPEs60:xO83Mov4Mxs:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=OdZBjDPEs60:xO83Mov4Mxs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=OdZBjDPEs60:xO83Mov4Mxs:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=OdZBjDPEs60:xO83Mov4Mxs:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=OdZBjDPEs60:xO83Mov4Mxs:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=OdZBjDPEs60:xO83Mov4Mxs:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Ciarpame/~4/OdZBjDPEs60" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ciarpame.com/2009/07/15/sis-google-adwords-free-download/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.ciarpame.com/2009/07/15/sis-google-adwords-free-download/</feedburner:origLink></item>
		<item>
		<title>Case Study: ottimizzazione di un sito web – parte 1</title>
		<link>http://feedproxy.google.com/~r/Ciarpame/~3/t3H-tuY-5ws/</link>
		<comments>http://www.ciarpame.com/2009/06/26/case-study-ottimizzazione-di-un-sito-web-parte-1/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 20:33:21 +0000</pubDate>
		<dc:creator>Egidio Imbrogno</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Web Marketing]]></category>
		<category><![CDATA[Restyling]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[W3C]]></category>
		<category><![CDATA[Web Trends]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://www.ciarpame.com/?p=633</guid>
		<description><![CDATA[PREMESSA: per motivi di privacy e rispetto del brand del cliente, il nome vero del sito analizzato è stato sostituito con sitogenerico.it Analisi  Sitogenerico.it Sitogenerico.it è il sito ufficiale di una famosa e stimata rivista mensile italiana. La rivista tratta la compravendita di armi e accessori per armi di qualunque tipo e genere. Punto forte [...]]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/QFeZPP2uaVWlHGhJSy6ItLX0XPs/0/da"><img src="http://feedads.g.doubleclick.net/~a/QFeZPP2uaVWlHGhJSy6ItLX0XPs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/QFeZPP2uaVWlHGhJSy6ItLX0XPs/1/da"><img src="http://feedads.g.doubleclick.net/~a/QFeZPP2uaVWlHGhJSy6ItLX0XPs/1/di" border="0" ismap="true"></img></a></p><p style="text-align: left;"><strong>PREMESSA: per motivi di privacy e rispetto del brand del cliente, il nome vero del sito analizzato è stato sostituito con sitogenerico.it</strong></p>
<p style="text-align: left;"><em><strong>Analisi  Sitogenerico.it</strong></em></p>
<p>Sitogenerico.it è il sito ufficiale di una famosa e stimata rivista mensile italiana. La rivista tratta la compravendita di armi e accessori per armi di qualunque tipo e genere. Punto forte e basilare della rivista e del sito  è il servizio “annunci”, dedicato a inserzionisti privati e aziendali (nella fattispecie armerie), che intendono comprare o vendere armi.</p>
<p><span id="more-633"></span></p>
<p><strong><span style="text-decoration: underline;">Situazione pre-intervento:</span></strong></p>
<p>A primo impatto il sito in oggetto si presenta in maniera confusionale e “pesante”. Le ripetute animazioni in flash e la presenza di troppi banner posizionati in maniera massiva nelle pagine, rendono difficoltosa la navigazione degli utenti  e rallentano il caricamento delle pagine stesse. I contenuti sono totalmente assenti per i motori di ricerca in quanto vi si accede solo dopo la registrazione tramite il form di login. Oltre all’assenza di contenuto,  a penalizzare fortemente il posizionamento del sito nei motori di ricerca, è la presenza di frame che contribuiscono a rendere difficoltosa l’indicizzazione del sito, facendo così perdere il giusto riscontro con gli internauti.</p>
<p><img class="size-full wp-image-644 alignleft" title="Pre_Analytics_1" src="http://www.ciarpame.com/wp-content/uploads/2009/06/prima1.jpg" alt="Pre" width="660" height="268" /></p>
<p><img class="alignleft size-full wp-image-650" title="Pre_Analytics_2" src="http://www.ciarpame.com/wp-content/uploads/2009/06/prima2.jpg" alt="prima2" width="660" height="465" /></p>
<p><strong><span style="text-decoration: underline;">Obiettivi:</span></strong></p>
<p>L’obiettivo principale è quello di revisionare totalmente il sito già esistente, migliorandone la navigabilità e l’usabilità, intervenendo: sulla struttura, sul contenuto e sul design. Successivamente bisognerà rendere accessibili i contenuti dell’intero sito a tutti i visitatori, con determinate restrizioni ai visitatori non iscritti. Infine si intende promuovere e rivalorizzare l’immagine online del sito, tramite azioni e strategie di search engine optimization per conquistare le prime posizioni delle serp inerenti gli argomenti trattati dalla rivista, rispettando l’ethical seo.</p>
<p><strong><span style="text-decoration: underline;">Interventi:</span></strong></p>
<ol>
<li>Si è deciso di migliorare la <span style="text-decoration: underline;">navigabilità</span>, revisionando totalmente l’itera struttura E/R del DB, creando categorie e macrocategorie totalmente nuove per agevolare la ricerca degli annunci e la navigabilità degli utenti.</li>
<li>Si è deciso di migliorare <span style="text-decoration: underline;">l’usabilità</span> utilizzando il linguaggio XHTML in modo da rendere accessibile il sito anche da nuove piattaforme (in costante crescita) come ipod e iphone.</li>
<li>Si è deciso di modernizzare il <span style="text-decoration: underline;">design</span> retrò della prima versione del sito.
<ul>
<li>Sono stati eliminati i frame, assolutamente inutili, e le tabelle in favore dei div.</li>
<li>Dopo un attenta analisi, si è deciso di eliminare il 95% degli elementi in flash e di sistemare i numerosi banner,  disposti in maniera confusionale nella prima versione.</li>
</ul>
</li>
<li>Si è deciso di presentare <span style="text-decoration: underline;">il contenuto</span> dell’intero sito web sotto forma di annunci, illustrando in dettaglio le descrizioni e le foto dei prodotti in vendita.</li>
<li>Dopo un attenta analisi e studio delle keyword (parole chiavi), si è deciso di personalizzare i meta-tag di tutte le pagine che compongono il sito, in modo tale da <span style="text-decoration: underline;">conquistare le principali serp</span> di google, yahoo e msn. L’ottimizzazione e la promozione del web site si è concentrata maggiormente  su questi search engine in quanto smistano più dell’80% degli internauti globali giornalieri.</li>
</ol>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong><span style="text-decoration: underline;">Prime conclusioni dopo un mese:</span></strong></p>
<p>Fin dai primi giorni dalla pubblicazione della nuova versione del sito, google ha risposto bene, indicizzando un numero sempre più elevato di pagine. Oggi, tutte le pagine del sito sitogenerico.it sono indicizzate correttamente e godono di posizionamenti elevati per le principali query previste, ottenendo sostanziali aumenti:</p>
<ul>
<li>+43,54%  visite</li>
<li>+60%        visitatori unici</li>
<li>+200%      pagine visualizzate</li>
<li>+100%      media pagine visualizzate</li>
</ul>
<p><img class="alignleft size-full wp-image-646" title="Post_Analytics_1" src="http://www.ciarpame.com/wp-content/uploads/2009/06/dopo.jpg" alt="dopo" width="660" height="269" /></p>
<p><img class="alignleft size-full wp-image-647" title="Post_Analytics_2" src="http://www.ciarpame.com/wp-content/uploads/2009/06/dopo2.jpg" alt="dopo2" width="660" height="470" /></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Ciarpame?a=t3H-tuY-5ws:-Pm1xuNA5Dg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=t3H-tuY-5ws:-Pm1xuNA5Dg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=t3H-tuY-5ws:-Pm1xuNA5Dg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=t3H-tuY-5ws:-Pm1xuNA5Dg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=t3H-tuY-5ws:-Pm1xuNA5Dg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=t3H-tuY-5ws:-Pm1xuNA5Dg:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=t3H-tuY-5ws:-Pm1xuNA5Dg:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=t3H-tuY-5ws:-Pm1xuNA5Dg:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=t3H-tuY-5ws:-Pm1xuNA5Dg:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=t3H-tuY-5ws:-Pm1xuNA5Dg:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=t3H-tuY-5ws:-Pm1xuNA5Dg:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=t3H-tuY-5ws:-Pm1xuNA5Dg:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=t3H-tuY-5ws:-Pm1xuNA5Dg:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Ciarpame/~4/t3H-tuY-5ws" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ciarpame.com/2009/06/26/case-study-ottimizzazione-di-un-sito-web-parte-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.ciarpame.com/2009/06/26/case-study-ottimizzazione-di-un-sito-web-parte-1/</feedburner:origLink></item>
		<item>
		<title>La funzione serialize di PHP</title>
		<link>http://feedproxy.google.com/~r/Ciarpame/~3/IsV9a0sQnjA/</link>
		<comments>http://www.ciarpame.com/2009/06/02/la-funzione-serialize-di-php/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 13:31:40 +0000</pubDate>
		<dc:creator>Mattia Palugan</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[serialize]]></category>
		<category><![CDATA[unserialize]]></category>

		<guid isPermaLink="false">http://www.ciarpame.com/?p=630</guid>
		<description><![CDATA[Delle volte programmando in PHP si ha bisogno di salvare in un database o in una costante una variabile complessa come un array o un oggetto per poterla utilizzare in seguito. Per farlo si può utilizzare la funzione serialize. La funzione serialize accetta un parametro, che è la variabile da serializzare, e restituisce una stringa. [...]]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/9_aaPpTkVGHYSx2H7a3PvA5FnNk/0/da"><img src="http://feedads.g.doubleclick.net/~a/9_aaPpTkVGHYSx2H7a3PvA5FnNk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/9_aaPpTkVGHYSx2H7a3PvA5FnNk/1/da"><img src="http://feedads.g.doubleclick.net/~a/9_aaPpTkVGHYSx2H7a3PvA5FnNk/1/di" border="0" ismap="true"></img></a></p><p>Delle volte programmando in PHP si ha bisogno di salvare in un database o in una costante una variabile complessa come un array o un oggetto per poterla utilizzare in seguito. Per farlo si può utilizzare la funzione <a title="PHP: serialize" href="http://it.php.net/serialize">serialize</a>.<br />
<span id="more-630"></span><br />
La funzione <strong>serialize</strong> accetta un parametro, che è la variabile da serializzare, e restituisce una stringa. Il parametro può essere dei seguenti tipi: booleano, intero, numero con virgola mobile, stringhe, array o oggetto.<br />
La stringa restituita può essere riportata allo stato precedente utilizzando la funzione <a title="PHP: unserialize" href="http://it.php.net/unserialize">unserialize</a>. In caso di errore restituisce falso e un errore di tipo <em>Notice</em>.<br />
Inoltre la funzione <strong>serialize</strong>, in caso il parametro da serializzare sia un oggetto, cercherà di invocare, se presente, il metodo magico <em>__sleep()</em>. Allo stesso modo la funzione unserialize cercherà di invocare il metodo magico <em>__wakeup()</em>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Ciarpame?a=IsV9a0sQnjA:OOy57LhI0Kg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=IsV9a0sQnjA:OOy57LhI0Kg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=IsV9a0sQnjA:OOy57LhI0Kg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=IsV9a0sQnjA:OOy57LhI0Kg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=IsV9a0sQnjA:OOy57LhI0Kg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=IsV9a0sQnjA:OOy57LhI0Kg:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=IsV9a0sQnjA:OOy57LhI0Kg:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=IsV9a0sQnjA:OOy57LhI0Kg:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=IsV9a0sQnjA:OOy57LhI0Kg:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=IsV9a0sQnjA:OOy57LhI0Kg:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=IsV9a0sQnjA:OOy57LhI0Kg:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=IsV9a0sQnjA:OOy57LhI0Kg:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=IsV9a0sQnjA:OOy57LhI0Kg:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Ciarpame/~4/IsV9a0sQnjA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ciarpame.com/2009/06/02/la-funzione-serialize-di-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.ciarpame.com/2009/06/02/la-funzione-serialize-di-php/</feedburner:origLink></item>
		<item>
		<title>SSHKeychain: errore “The following install step failed: run postinstall script for SSHKeychain”</title>
		<link>http://feedproxy.google.com/~r/Ciarpame/~3/3o40Hdectmk/</link>
		<comments>http://www.ciarpame.com/2009/05/29/sshkeychain-errore-the-following-install-step-failed-run-postinstall-script-for-sshkeychain/#comments</comments>
		<pubDate>Fri, 29 May 2009 10:15:35 +0000</pubDate>
		<dc:creator>Giovanni Savastano</dc:creator>
				<category><![CDATA[Linux&Co.]]></category>
		<category><![CDATA[Tricks]]></category>
		<category><![CDATA[Usefulware]]></category>

		<guid isPermaLink="false">http://www.ciarpame.com/?p=625</guid>
		<description><![CDATA[Se volete installare SSHKeychain 0.8.2 su Mac e viene visualizzato l&#8217;errore &#8220;The following install step failed: run postinstall script for SSHKeychain&#8221; c&#8217;è un modo molto semplice per risolvere il problema. Copiate il pkg dell&#8217;installazione sul Desktop (o nel percorso che preferite) Fate tasto destro sul pkg-&#62;mostra contenuto pacchetto Entrate nella directory Contents -&#62; Resources Editate [...]]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/PEqqs3TRTtlyStcqngkkKK9L-nk/0/da"><img src="http://feedads.g.doubleclick.net/~a/PEqqs3TRTtlyStcqngkkKK9L-nk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/PEqqs3TRTtlyStcqngkkKK9L-nk/1/da"><img src="http://feedads.g.doubleclick.net/~a/PEqqs3TRTtlyStcqngkkKK9L-nk/1/di" border="0" ismap="true"></img></a></p><p>Se volete installare SSHKeychain 0.8.2 su Mac e viene visualizzato l&#8217;errore &#8220;The following install step failed: run postinstall script for SSHKeychain&#8221; c&#8217;è un modo molto semplice per risolvere il problema.</p>
<p><span id="more-625"></span></p>
<ol>
<li>Copiate il pkg dell&#8217;installazione sul Desktop (o nel percorso che preferite)</li>
<li>Fate tasto destro sul pkg-&gt;mostra contenuto pacchetto</li>
<li>Entrate nella directory Contents -&gt; Resources</li>
<li>Editate con Textedit o quello che preferite (MA NON FATE doppio click) il file <strong>postinstall</strong></li>
<li>modificate la riga 2:
<ul>
<li>da: chown -R $USER:$USER &#8220;$2/SSHKeychain.app&#8221;</li>
<li>a: chown -R $USER:`id -gn` &#8220;$2/SSHKeychain.app&#8221;</li>
</ul>
</li>
<li>salvate il file ed uscite</li>
<li>cliccate due volte sul file pkg e fate ripartire l&#8217;installazione</li>
</ol>
<p>voilà! fatto.</p>
<p>Gio</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Ciarpame?a=3o40Hdectmk:wNXPBcV9XjM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=3o40Hdectmk:wNXPBcV9XjM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=3o40Hdectmk:wNXPBcV9XjM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=3o40Hdectmk:wNXPBcV9XjM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=3o40Hdectmk:wNXPBcV9XjM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=3o40Hdectmk:wNXPBcV9XjM:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=3o40Hdectmk:wNXPBcV9XjM:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=3o40Hdectmk:wNXPBcV9XjM:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=3o40Hdectmk:wNXPBcV9XjM:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=3o40Hdectmk:wNXPBcV9XjM:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=3o40Hdectmk:wNXPBcV9XjM:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=3o40Hdectmk:wNXPBcV9XjM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=3o40Hdectmk:wNXPBcV9XjM:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Ciarpame/~4/3o40Hdectmk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ciarpame.com/2009/05/29/sshkeychain-errore-the-following-install-step-failed-run-postinstall-script-for-sshkeychain/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.ciarpame.com/2009/05/29/sshkeychain-errore-the-following-install-step-failed-run-postinstall-script-for-sshkeychain/</feedburner:origLink></item>
		<item>
		<title>Utilizzare Gravatar nel proprio sito</title>
		<link>http://feedproxy.google.com/~r/Ciarpame/~3/XU6CxZ18UUk/</link>
		<comments>http://www.ciarpame.com/2009/01/23/utilizzare-gravatar-nel-proprio-sito/#comments</comments>
		<pubDate>Fri, 23 Jan 2009 08:08:25 +0000</pubDate>
		<dc:creator>Mattia Palugan</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[gravatar]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.ciarpame.com/?p=613</guid>
		<description><![CDATA[Gravatar è l&#8217;abbreviazione di globally recognized avatar. È un servizio creato da Tom Werner che permette di utilizzare lo stesso avatar su più siti. Ogni utente ha la possibilità di inserire più indirizzi e-mail a cui associare degli avatar da poter utilizzare sui siti che utilizzano Gravatar. Per molti CMS (Joomla, WordPress, ecc.) esistono già [...]]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/vRlCuiIq7Pesd-P8wdGiA93tmjA/0/da"><img src="http://feedads.g.doubleclick.net/~a/vRlCuiIq7Pesd-P8wdGiA93tmjA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/vRlCuiIq7Pesd-P8wdGiA93tmjA/1/da"><img src="http://feedads.g.doubleclick.net/~a/vRlCuiIq7Pesd-P8wdGiA93tmjA/1/di" border="0" ismap="true"></img></a></p><p><a title="Gravatar - Globally Recognized Avatars" href="http://www.gravatar.com/" target="_blank">Gravatar</a> è l&#8217;abbreviazione di <em>globally recognized avatar</em>. È un servizio creato da Tom Werner che permette di utilizzare lo stesso avatar su più siti. Ogni utente ha la possibilità di inserire più indirizzi e-mail a cui associare degli avatar da poter utilizzare sui siti che utilizzano Gravatar.<br />
Per molti CMS (Joomla, WordPress, ecc.) esistono già dei plug-in specifici per utilizzare Gravatar, ma se non si utilizzano questi CMS non è molto difficile implementare uno script adatto allo scopo.<br />
<span id="more-613"></span><br />
Bisogna inserire un&#8217;immagine dinamica richiamandola dai server di Gravatar.com. La prima parte dell&#8217;indirizzo è “http://www.gravatar.com/avatar/” e la seconda è l&#8217;hash <a title="MD5 - Wikipedia" href="http://it.wikipedia.org/wiki/MD5" target="_blank">MD5</a> dell&#8217;indirizzo e-mail dell&#8217;utente seguito dell&#8217;estensione “.jpg”.<br />
A questo punto possiamo aggiungere tutti i parametri facoltativi come query string (metodo get).<br />
Con il parametro “size” o “s” possiamo decidere la dimensione in pixel dell&#8217;avatar che può andare da un minimo di 1 a un massimo di 512. Il valore di default è 80 pixel.<br />
Con il parametro “rating” o “r” possiamo indicare il tipo di avatar (da quello adatto per tutti a quello che include contenuti espliciti) che può essere “g”, “pg”, “r” o “x”. Il valore di default è “g”.<br />
Con il parametro “default” o “d” possiamo scegliere quale immagine visualizzare se l&#8217;e-mail non è presente nel database di Gravatar. Si può inserire il percorso di un&#8217;immagine oppure si possono inserire i valori <a title="WP_Identicon" href="http://scott.sherrillmix.com/blog/blogger/wp_identicon/" target="_blank">“identicon”</a>, <a title="WP_MonsterID" href="http://scott.sherrillmix.com/blog/blogger/wp_monsterid/" target="_blank">“monsterid”</a> o <a title="Wavatars" href="http://www.shamusyoung.com/twentysidedtale/?p=1462" target="_blank">“wavatar”</a>. Se non viene specificato, si visualizzerà il simbolo di Gravatar (una G) in grigio.<br />
Ecco quindi un esempio di Gravatar con il mio indirizzo e-mail, 100 pixel di lato, adatto a tutti i tipi di visitatori e, se non è presente, verrà visualizzato il logo della <a title="SiS s.r.l. - Soluzioni Informatiche e di Sistema" href="http://www.soluzionisis.com/" target="_blank">SiS s.r.l.</a>:</p>
<div class="wp-caption aligncenter" style="width: 110px"><a href="http://www.gravatar.com/avatar/36ac00adbe6247f505c702d904f7f44a.jpg?s=100&amp;r=g&amp;d=http%3A%2F%2Fwww.soluzionisis.com%2Finc%2Fimg%2Flogo.jpg"><img title="Esempio di Gravatar" src="http://www.gravatar.com/avatar/36ac00adbe6247f505c702d904f7f44a.jpg?s=100&amp;r=g&amp;d=http%3A%2F%2Fwww.soluzionisis.com%2Finc%2Fimg%2Flogo.jpg" alt="Esempio di Gravatar" width="100" height="100" /></a><p class="wp-caption-text">Esempio di Gravatar</p></div>
<p><a href="http://www.gravatar.com/avatar/36ac00adbe6247f505c702d904f7f44a.jpg?s=100&amp;r=g&amp;d=http%3A%2F%2Fwww.soluzionisis.com%2Finc%2Fimg%2Flogo.jpg" target="_blank">http://www.gravatar.com/avatar/36ac00adbe6247f505c702d904f7f44a.jpg?s=100&amp;r=g&amp;d=http%3A%2F%2Fwww.soluzionisis.com%2Finc%2Fimg%2Flogo.jpg</a></p>
<p>Per avere lo stesso risultato in PHP si può utilizzare questo script:</p>

<div class="wp_codebox"><table><tr id="p6134"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p613code4"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$email</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'indirizzo@email.it'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$size</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">100</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$rating</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'g'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$default</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'http://www.soluzionisis.com/inc/img/logo.jpg'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$url</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'http://www.gravatar.com/avatar/'</span><span style="color: #339933;">.</span><span style="color: #990000;">md5</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">strtolower</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$email</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'.jpg?s='</span><span style="color: #339933;">.</span><span style="color: #000088;">$size</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&amp;amp;r='</span><span style="color: #339933;">.</span><span style="color: #000088;">$rating</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&amp;amp;d='</span><span style="color: #339933;">.</span><span style="color: #990000;">urlencode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$default</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;img src=&quot;'</span><span style="color: #339933;">.</span><span style="color: #000088;">$url</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&quot; alt=&quot;Avatar&quot; width=&quot;'</span><span style="color: #339933;">.</span><span style="color: #000088;">$size</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&quot; height=&quot;'</span><span style="color: #339933;">.</span><span style="color: #000088;">$size</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&quot; /&gt;'</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Ciarpame?a=XU6CxZ18UUk:BM-5hwdwxjo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=XU6CxZ18UUk:BM-5hwdwxjo:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=XU6CxZ18UUk:BM-5hwdwxjo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=XU6CxZ18UUk:BM-5hwdwxjo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=XU6CxZ18UUk:BM-5hwdwxjo:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=XU6CxZ18UUk:BM-5hwdwxjo:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=XU6CxZ18UUk:BM-5hwdwxjo:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=XU6CxZ18UUk:BM-5hwdwxjo:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=XU6CxZ18UUk:BM-5hwdwxjo:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=XU6CxZ18UUk:BM-5hwdwxjo:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=XU6CxZ18UUk:BM-5hwdwxjo:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=XU6CxZ18UUk:BM-5hwdwxjo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=XU6CxZ18UUk:BM-5hwdwxjo:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Ciarpame/~4/XU6CxZ18UUk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ciarpame.com/2009/01/23/utilizzare-gravatar-nel-proprio-sito/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.ciarpame.com/2009/01/23/utilizzare-gravatar-nel-proprio-sito/</feedburner:origLink></item>
		<item>
		<title>Primi passi di CSS</title>
		<link>http://feedproxy.google.com/~r/Ciarpame/~3/qZ_LYj7XPuo/</link>
		<comments>http://www.ciarpame.com/2009/01/21/primi-passi-di-css/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 09:03:42 +0000</pubDate>
		<dc:creator>Fabio Lenotti</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Valori CSS]]></category>
		<category><![CDATA[W3C]]></category>

		<guid isPermaLink="false">http://www.ciarpame.com/?p=528</guid>
		<description><![CDATA[Salve a tutti sono ancora io Fabio Lenotti. Dopo aver imparato l’HTML qui alla SIS.Srl mi hanno insegnato anche il CSS ora vi spiego cos’è. Detti anche fogli di stile a cascata o fogli di stile i file CSS(dall&#8217;inglese CSS Cascading Style Sheets) vengono usati per definire la rappresentazione di documenti HTML e XHTML. L&#8217;introduzione [...]]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/Lv0i0D0qfhcku-Jk3UymogdYOZA/0/da"><img src="http://feedads.g.doubleclick.net/~a/Lv0i0D0qfhcku-Jk3UymogdYOZA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Lv0i0D0qfhcku-Jk3UymogdYOZA/1/da"><img src="http://feedads.g.doubleclick.net/~a/Lv0i0D0qfhcku-Jk3UymogdYOZA/1/di" border="0" ismap="true"></img></a></p><p class="MsoNormal">Salve a tutti sono ancora io Fabio Lenotti.</p>
<p class="MsoNormal">Dopo aver imparato l’HTML qui alla SIS.Srl mi hanno insegnato anche il CSS ora vi spiego cos’è.</p>
<p class="MsoNormal">Detti anche <span>fogli di stile a cascata</span> o fogli di stile i file CSS(dall&#8217;inglese <span>CSS</span> <em>Cascading Style Sheets</em>) vengono usati per definire la rappresentazione di documenti HTML e XHTML.</p>
<p class="MsoNormal">L&#8217;introduzione dei fogli di stile si è resa necessaria per <span>separare i contenuti dalla<em> </em>formattazion<em>e</em></span> e permettere una programmazione più chiara e facile da utilizzare, sia per gli autori delle pagine HTML che per gli utenti.</p>
<p class="MsoNormal">Per impararle a fare i fogli a cascata andate su <a href="http://www.w3schools.com/css/default.asp" target="_blank">http://www.w3schools.com/css/default.asp</a><span> </span>anche il CSS come l’HTML su questo sito è diviso il Basic e Advanced e alla fine è presente un quiz per vedere cosa avete appreso.</p>
<p class="MsoNormal"><span id="more-528"></span></p>
<p class="MsoNormal">Anche il sito del CSS è scritto in inglese ma se volete vi posso consigliare anche dei siti in italiano dove trovate la spiegazione dei fogli a cascata tipo <a href="http://it.wikipedia.org/wiki/Foglio_di_stile" target="_blank">http://it.wikipedia.org/wiki/Foglio_di_stile</a><span> </span>oppure <a href="http://css.html.it/guide/leggi/2/guida-css-di-base/" target="_blank">http://css.html.it/guide/leggi/2/guida-css-di-base/</a> .</p>
<p class="MsoNormal">
<h1>Proprietà del CSS</h1>
<h3>TESTO</h3>
<table class="tbl_data1" border="0">
<tbody>
<tr>
<th class="tbl_data1_th4">attributo</th>
<th class="tbl_data1_th2">valori</th>
<th class="tbl_data1_th3">descrizione</th>
</tr>
<tr>
<td>color:</td>
<td>valore</td>
<td>Colore, sia in inglese che in codice ascii.Es. black oppure #000000</td>
</tr>
<tr>
<td>text-decoration:</td>
<td>overline</p>
<p>underline</p>
<p>line-through</p>
<p>none</td>
<td>Decorazione del testo</td>
</tr>
<tr>
<td>text-align:</td>
<td>left</p>
<p>right</p>
<p>center</p>
<p>justify</td>
<td>Allineamento del testo rispetto a ciò che lo circonda</td>
</tr>
<tr>
<td>text-indent:</td>
<td>lunghezza</p>
<p>percentuale</td>
<td>Rientro della prima riga di un testo</td>
</tr>
<tr>
<td>text-transform:</td>
<td>uppercase</p>
<p>lowercase</p>
<p>capitalize</p>
<p>none</td>
<td>Trasforma rispettivamente in maiuscola, minuscola, maiuscola la prima lettera oppure default (none) per nessun cambiamento</td>
</tr>
<tr>
<td>line-height:</td>
<td>normal</p>
<p>numero</p>
<p>lunghezza</p>
<p>percentuale</td>
<td>Altezza riga testo</td>
</tr>
<tr>
<td>letter-spacing:</td>
<td>numero</td>
<td>Spazio fra le lettere di un testo</td>
</tr>
<tr>
<td>vertical-align:</td>
<td>baseline</p>
<p>sub</p>
<p>super</p>
<p>top</p>
<p>middle</p>
<p>bottom</p>
<p>text-top</p>
<p>text-bottom</td>
<td>Allineamento in verticale del testo rispetto ad un oggetto</td>
</tr>
<tr>
<td>white-space:</td>
<td>normal</p>
<p>pre</p>
<p>nowrap</td>
<td>Regola la tabulazione di un testo (gli a capo).<br />
Nell&#8217;ordine:<br />
normal :Lascia dafault browser<br />
pre :Scrive come è scritto nel codice html (come &lt;pre&gt; e &lt;/pre&gt; in html)<br />
nowrap : aspetta il &lt;br&gt; per andare a capo</td>
</tr>
<tr>
<td>word-spacing:</td>
<td>normal</p>
<p>valore</td>
<td>Regola lo spazio fra le parole del testo.<br />
normal lascia decidere al browser, altrimenti possiamo inserire un valore (in px, in pt ecc&#8230;).</td>
</tr>
</tbody>
</table>
<h3>CARATTERE</h3>
<table class="tbl_data1" border="0">
<tbody>
<tr>
<th class="tbl_data1_th4">attributo</th>
<th class="tbl_data1_th2">valori</th>
<th class="tbl_data1_th3">descrizione</th>
</tr>
<tr>
<td>font:</td>
<td>attributi</td>
<td>font può raccogliere tutti gli attributi dei font senza la loro esplicita dichiarazione.<br />
Es. font:italic bold 12px arial;</td>
</tr>
<tr>
<td>font-family:</td>
<td>verdana</p>
<p>arial</p>
<p>&#8230;.</td>
<td>Descrive il tipo di scrittura da usare. Ne possiamo inserire più di uno, in questo caso se il computer non ha un font in memoria carica il successivo e via di seguito.</td>
</tr>
<tr>
<td>font-size:</td>
<td>numero</td>
<td>Dimensioni del carattere, es. 10px. 10%</td>
</tr>
<tr>
<td>font-style:</td>
<td>normal</p>
<p>italic</p>
<p>oblique</td>
<td>Scrittura corsiva</td>
</tr>
<tr>
<td>font-</td>
<td>normal</td>
<td>Tutto in maiuscolo</td>
</tr>
<tr>
<td>variant:</td>
<td>small-caps</td>
<td>Tutte le lettere in minuscolo sono convertite in maiuscolo</td>
</tr>
<tr>
<td>font-weight:</td>
<td>bold</p>
<p>bolder</p>
<p>lighter</p>
<p>normal</td>
<td>Regola la grandezza del grassetto. Possiamo inserire anche un numero multiplo di 100 fino a 900.</td>
</tr>
</tbody>
</table>
<h3>COLORE e SFONDO</h3>
<p>Non tutti sanno che in  si può utilizzare in contemporanea un colore con una immagine (se in generale l&#8217;immagine è di misure inferiori alle misure degli schermi pc).</p>
<table class="tbl_data1" border="0">
<tbody>
<tr>
<th class="tbl_data1_th4">attributo</th>
<th class="tbl_data1_th2">valori</th>
<th class="tbl_data1_th3">descrizione</th>
</tr>
<tr>
<td>background:</td>
<td>valore</td>
<td>Può raccogliere tutti gli altri attributi senza una loro esplicita definizione.<br />
Esempio:background:#00ff00 url(&#8216;ciao.gif&#8217;) no-repeat fixed center;</td>
</tr>
<tr>
<td>background-color:</td>
<td>valore</td>
<td>Colore di sfondo, sia in inglese che in codice ascii.<br />
Es. black oppure #000000</td>
</tr>
<tr>
<td>background-image: url (&#8230;)</td>
<td>url immagine</td>
<td>Immagine di sfondo, al posto dei punti (&#8230;) inserire l&#8217;url.<br />
Es. &#8220;ciao.gif&#8221; Se è nella stessa cartella, &#8220;icone/ciao.gif&#8221; se è in una cartella diversa.</td>
</tr>
<tr>
<td>background-repeat:</td>
<td>repeat</p>
<p>repeat-x</p>
<p>repeat-y</p>
<p>no-repeat</td>
<td>Da usare con background-image descrive come posizionare l&#8217;immagine di sfondo</td>
</tr>
<tr>
<td>background-attachment:</td>
<td>scroll</p>
<p>fixed</td>
<td>Descrive se l&#8217;immagine di sfondo deve essere fissa oppure no</td>
</tr>
</tbody>
</table>
<h3>MARGINI</h3>
<p>Applicabile ad ogni oggetto, compreso , in questo caso tutte le pagine o gli oggetti che si riferiranno a questo parametro saranno spostati dai bordi come indicato.</p>
<table class="tbl_data1" border="0">
<tbody>
<tr>
<th class="tbl_data1_th4">attributo</th>
<th class="tbl_data1_th2">valori</th>
<th class="tbl_data1_th3">descrizione</th>
</tr>
<tr>
<td>margin:</td>
<td>valore</td>
<td>Dichiara la distanza dei 4 margini senza la loro singola dichiarazione. Il primo valore è top, ed a scalare abbiamo right, bottom e left.<br />
Es. margin: 10px 20px 10px auto;</td>
</tr>
<tr>
<td>margin-</td>
<td>top</p>
<p>right</p>
<p>bottom</p>
<p>left</td>
<td>Inserire un valore numerico.<br />
Es. 10px oppure 10pt &#8230;..</td>
</tr>
</tbody>
</table>
<h3>POSIZIONE e FORMA</h3>
<table class="tbl_data1" border="0">
<tbody>
<tr>
<th class="tbl_data1_th4">attributo</th>
<th class="tbl_data1_th2">valori</th>
<th class="tbl_data1_th3">descrizione</th>
</tr>
<tr>
<td>position:</td>
<td>static</p>
<p>absolute</p>
<p>relative</td>
<td>Il tipo di posizionamento rispetto al foglio od altro elemento.<br />
Static dafault browser.<br />
Absolute indica la posizione rispetto a tutto il foglio (necessita la dichiarazione di left, top, right, e bottom).<br />
Relative indica la posizione rispetto alla posizione cha assumerebbe di dafault.</td>
</tr>
<tr>
<td>position:</td>
<td>top</p>
<p>left</p>
<p>height</td>
<td>Distanza dal margine es. 100px 100pt ecc.</td>
</tr>
<tr>
<td>visibility:</td>
<td>visible</p>
<p>hidden</td>
<td>Visibilità dell&#8217;oggetto (hidden=nascosto). Molto utile per alcuni script javascript dove le immagini possono apparire o scomparire).</td>
</tr>
<tr>
<td>z-index:</td>
<td>valore</td>
<td>Priorità di visualizzazione rispetto ad altri oggetti, può anche avere valore negativo. Il numero dipende da quanti oggetti lo possono sovrapporre.</td>
</tr>
<tr>
<td>overflow:</td>
<td>visible</p>
<p>hidden</p>
<p>scroll</p>
<p>auto</p>
<p>fixed</td>
<td>Indica come gestire del testo in esubero se inserito in un blocco con le misure dei margini e bordi definiti.<br />
visibel si allunga il contenitore e mostra tutto il testo<br />
hidden nasconde il testo in eccedenza<br />
scroll inserisce una barra di scorrimento laterale<br />
autodafault browser</td>
</tr>
<tr>
<td>clip:</td>
<td>auto</p>
<p>valori</td>
<td>Con clip possiamo regolare la misura di un oggetto, per esempio lo possiamo utilizzare se abbiamo inserito un&#8217;immagine in una cella di tabella con misure definite e non vogliamo allargare la cella per esubero misure immagine.<br />
Es. clip: 100px 50px 100px 50px; con clip definiamo in ordine top, right, bottom e left dai bordi contenitore.</td>
</tr>
</tbody>
</table>
<h3>ALTEZZE e LARGHEZZE</h3>
<table class="tbl_data1" border="0">
<tbody>
<tr>
<th class="tbl_data1_th4">attributo</th>
<th class="tbl_data1_th2">valori</th>
<th class="tbl_data1_th3">descrizione</th>
</tr>
<tr>
<td>height:</td>
<td>numero</p>
<p>percentuale</td>
<td>Altezza dell&#8217;oggetto</td>
</tr>
<tr>
<td>min-height:</td>
<td>numero</p>
<p>percentuale</td>
<td>Altezza minima dell&#8217;oggetto.</td>
</tr>
<tr>
<td>max-height:</td>
<td>numero</p>
<p>percentuale</td>
<td>Altezza massima dell&#8217;oggetto.</td>
</tr>
<tr>
<td>width:</td>
<td>numero</p>
<p>percentuale</td>
<td>Larghezza dell&#8217;oggetto.</td>
</tr>
<tr>
<td>min-wight:</td>
<td>numero</p>
<p>percentuale</td>
<td>Larghezza minima dell&#8217;oggetto.</td>
</tr>
<tr>
<td>max-wight:</td>
<td>numero</p>
<p>percentuale</td>
<td>Larghezza massima dell&#8217;oggetto.</td>
</tr>
</tbody>
</table>
<h3>MOUSE</h3>
<p>(solo per Internet Explorer):</p>
<table class="tbl_data1" border="0">
<tbody>
<tr>
<th class="tbl_data1_th4">attributo</th>
<th class="tbl_data1_th2">valori</th>
<th class="tbl_data1_th3">descrizione</th>
</tr>
<tr>
<td>cursor:</td>
<td>Auto</p>
<p>Crosshair</p>
<p>Default</p>
<p>Hand</p>
<p>Move</p>
<p>e-resize</p>
<p>ne-resize</p>
<p>nw-resize</p>
<p>n-resize</p>
<p>se-resize</p>
<p>sw-resize</p>
<p>s-resize</p>
<p>w-resize</td>
<td>Prova a passare il mouse sopra le scritte dei valori</td>
</tr>
</tbody>
</table>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Ciarpame?a=qZ_LYj7XPuo:iEn91IpTSwE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=qZ_LYj7XPuo:iEn91IpTSwE:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=qZ_LYj7XPuo:iEn91IpTSwE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=qZ_LYj7XPuo:iEn91IpTSwE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=qZ_LYj7XPuo:iEn91IpTSwE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=qZ_LYj7XPuo:iEn91IpTSwE:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=qZ_LYj7XPuo:iEn91IpTSwE:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=qZ_LYj7XPuo:iEn91IpTSwE:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=qZ_LYj7XPuo:iEn91IpTSwE:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=qZ_LYj7XPuo:iEn91IpTSwE:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=qZ_LYj7XPuo:iEn91IpTSwE:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=qZ_LYj7XPuo:iEn91IpTSwE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=qZ_LYj7XPuo:iEn91IpTSwE:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Ciarpame/~4/qZ_LYj7XPuo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ciarpame.com/2009/01/21/primi-passi-di-css/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.ciarpame.com/2009/01/21/primi-passi-di-css/</feedburner:origLink></item>
		<item>
		<title>Primi passi di HTML</title>
		<link>http://feedproxy.google.com/~r/Ciarpame/~3/GuYJZOgTQz4/</link>
		<comments>http://www.ciarpame.com/2009/01/20/primi-passi-di-html/#comments</comments>
		<pubDate>Tue, 20 Jan 2009 14:59:14 +0000</pubDate>
		<dc:creator>Fabio Lenotti</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Tags]]></category>
		<category><![CDATA[W3C]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://www.ciarpame.com/?p=477</guid>
		<description><![CDATA[Salve a tutti mi chiamo Fabio Lenotti e per una settimana sono andato a “lavorare” presso la ditta SIS.Srl di Varese. Durante il periodo di stage mi è stato chiesto di imparare i rudimenti dell&#8217;html, linguaggio alla base del web. Me lo aspettavo molto più difficile e complicato, forse però mi è sembrato  facile perche [...]]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/f69MxJA7u12-hr8_Ipa7WX0vDEo/0/da"><img src="http://feedads.g.doubleclick.net/~a/f69MxJA7u12-hr8_Ipa7WX0vDEo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/f69MxJA7u12-hr8_Ipa7WX0vDEo/1/da"><img src="http://feedads.g.doubleclick.net/~a/f69MxJA7u12-hr8_Ipa7WX0vDEo/1/di" border="0" ismap="true"></img></a></p><p>Salve a tutti mi chiamo Fabio Lenotti e per una settimana sono andato a “lavorare” presso la ditta SIS.Srl di Varese.<br />
Durante il periodo di stage mi è stato chiesto di imparare i rudimenti dell&#8217;html, linguaggio alla base del web.<br />
Me lo aspettavo molto più difficile e complicato, forse però mi è sembrato  facile perche ho appreso solo i concetti base di questo linguaggio.</p>
<p>Va bene per tutti coloro che vorrebbero imparare qualcosa sull’HTML vi spiego come ho fatto.</p>
<p><span id="more-477"></span></p>
<p>Nella mia settimana di lavoro non ero da solo, ma ero seguito dal mio tutor aziendale Giovanni Savastano che mi ha insegnato tante cose riguardanti il mondo del web, comunque se volete provare ad apprendere l’HTML vi consiglio di andare sul sito <a title="W3Schools" href="http://www.w3schools.com/html/default.asp" target="_blank">http://www.w3schools.com/html/default.asp</a> è un sito tutto in inglese ma scritto in modo chiaro e semplice e quindi molto facile da tradurre.<br />
Questo sito ha diviso l’HTML in Basic e Advanced, nel primo impari i concetti base e nel secondo scopri qualche tag in più per rendere ancora più bella e interessante la tua pagina web, la cosa che rende semplice e chiaro l’HTML in questo sito sono gli esempi che fa ogni volta che ti spiega qualcosa.</p>
<p>Alla fine vi consiglio di fare il quiz che trovata, per vedere cosa avete appreso e cosa dovete riguardare, io li ho fatti e mi sono serviti molto.<br />
Come ambiente di sviluppo vi consiglio un ottimo sofware gratis: Notepad++. Potete scaricarlo da <a title="Notepad++" href="http://notepad-plus.sourceforge.net/it/site.htm" target="_blank">http://notepad-plus.sourceforge.net/it/site.htm</a><br />
È un programma che ti permette di scrivere in molti linguaggi di programmazione tra cui l’HTML, scaricatevi anche <a title="Firebug" href="http://getfirebug.com/" target="_blank">firebug</a>, questa estensione di Firefox ti permette di vedere come è scritto il file (.html) di tutti i siti web è molto utile.</p>
<p>Se volete vedere ed imparare anche l’XHTML andate sul sito <a title="W3Schools" href="http://www.w3schools.com/xhtml/default.asp" target="_blank">http://www.w3schools.com/xhtml/default.asp</a><br />
L&#8217;XHTML (acronimo di eXtensible HyperText Markup Language, Linguaggio di marcatura di ipertesti estensibile) è un linguaggio di marcatura che associa alcune proprietà dell&#8217;XML con le caratteristiche dell&#8217;HTML: un file XHTML è un pagina HTML scritta in conformità con lo standard XML.<br />
L&#8217;XHTML è nato ufficialmente il 26 gennaio 2000 come standard del World Wide Web Consortium (W3C), e può essere definito tecnicamente una riformulazione dell&#8217;HTML 4.01 in XML 1.0; è una sorta di &#8220;ponta&#8221; tra questi due linguaggi.<br />
Il linguaggio prevede un uso più restrittivo dei tag HTML; solo la struttura della pagina è scritta in XHTML, mentre il layout è imposto dai fogli di stile a cascata (Cascading Style Sheets, CSS).</p>
<h1>Tag del HTML</h1>
<h3>GENERALE</h3>
<p>(impostazioni obbligatorie del documento ipertestuale)</p>
<table class="tbl_data1" border="0">
<tbody>
<tr>
<th class="tbl_data1_th1">tag</th>
<th class="tbl_data1_th2">descrizione</th>
</tr>
<tr>
<td>&lt;HTML&gt;&lt;/HTML&gt;</td>
<td>(inizio e fine del tag, tag obbligatorio)tipo di documento</td>
</tr>
<tr>
<td>&lt;HEAD&gt;&lt;/HEAD&gt;</td>
<td>(descrizioni varie come il titolo e il matename)testa</td>
</tr>
<tr>
<td>&lt;TITLE&gt;&lt;/TITLE&gt;</td>
<td>(nome del documento, contenuto in head)titolo del documento</td>
</tr>
<tr>
<td>&lt;BODY&gt;&lt;/BODY&gt;</td>
<td>(corpo del file)contenuto</td>
</tr>
</tbody>
</table>
<h3>FORMATTAZIONE DEL TESTO</h3>
<table class="tbl_data1" border="0">
<tbody>
<tr>
<th class="tbl_data1_th1">tag</th>
<th class="tbl_data1_th2">descrizione</th>
</tr>
<tr>
<td>&lt;H?&gt;&lt;/H?&gt;</td>
<td>(sono disponibili 6 diversi livelli di grandezza ed importanza: h1, h2, etc.)titolo di paragrafo e capitoli</td>
</tr>
<tr>
<td>&lt;H? ALIGN=LEFT|CENTER|RIGHT&gt;&lt;/H?&gt;</td>
<td>(alliniamento titolo)</td>
</tr>
<tr>
<td>&lt;DIV&gt;&lt;/DIV&gt;</td>
<td>(usato per porzioni di testo o paragrafi)divisione di un blocco</td>
</tr>
<tr>
<td>&lt;DIV ALIGN=LEFT|RIGHT|JUSTIFY|CENTER&gt;&lt;/DIV&gt;</td>
<td>(allineamento del blocco)</td>
</tr>
</tbody>
</table>
<h3>FORMATTAZIONI PARTICOLARI</h3>
<table class="tbl_data1" border="0">
<tbody>
<tr>
<th class="tbl_data1_th1">tag</th>
<th class="tbl_data1_th2">descrizione</th>
</tr>
<tr>
<td>&lt;BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;</td>
<td>(rientrato)citazioni</td>
</tr>
<tr>
<td>&lt;EM&gt;&lt;/EM&gt;</td>
<td>(corsivo)evidenziato</td>
</tr>
<tr>
<td>&lt;STRONG&gt;&lt;/STRONG&gt;</td>
<td>(neretto)molto marcato</td>
</tr>
<tr>
<td>&lt;CITE&gt;&lt;/CITE&gt;</td>
<td>(corsivo)citazione</td>
</tr>
<tr>
<td>&lt;CODE&gt;&lt;/CODE&gt;</td>
<td>(programmi)codice programmi</td>
</tr>
<tr>
<td>&lt;SAMP&gt;&lt;/SAMP&gt;</td>
<td>(esempio)</td>
</tr>
<tr>
<td>&lt;KBD&gt;&lt;/KBD&gt;</td>
<td>(carattere a spaziatura fissa)immissione da tastiera</td>
</tr>
<tr>
<td>&lt;VAR&gt;&lt;/VAR&gt;</td>
<td>(variabile)</td>
</tr>
<tr>
<td>&lt;DFN&gt;&lt;/DFN&gt;</td>
<td>(definizione)</td>
</tr>
<tr>
<td>&lt;ADDRESS&gt;&lt;/ADDRESS&gt;</td>
<td>(indirizzo dell&#8217;autore)</td>
</tr>
<tr>
<td>&lt;BIG&gt;&lt;/BIG&gt;</td>
<td>(font grande)</td>
</tr>
<tr>
<td>&lt;SMALL&gt;&lt;/SMALL&gt;</td>
<td>(font piccolo)</td>
</tr>
<tr>
<td>&lt;B&gt;&lt;/B&gt;</td>
<td>(grossetto)</td>
</tr>
<tr>
<td>&lt;I&gt;&lt;/I&gt;</td>
<td>(corsivo)</td>
</tr>
<tr>
<td>&lt;U&gt;&lt;/U&gt;</td>
<td>(sottolineato)</td>
</tr>
<tr>
<td>&lt;S&gt;&lt;/S&gt;</td>
<td>(depennato)strikeout</td>
</tr>
<tr>
<td>&lt;SUB&gt;&lt;/SUB&gt;</td>
<td>(pedice)</td>
</tr>
<tr>
<td>&lt;SUP&gt;&lt;/SUP&gt;</td>
<td>(apice)</td>
</tr>
<tr>
<td>&lt;TT&gt;&lt;/TT&gt;</td>
<td>(spazziatura fissa)font non scalabile</td>
</tr>
<tr>
<td>&lt;PRE&gt;&lt;/PRE&gt;</td>
<td>(mantiene gli allineamenti originali)preformattato</td>
</tr>
<tr>
<td>&lt;PRE WIDTH&gt;&lt;/PRE&gt;</td>
<td>(in caratteri)larghezza</td>
</tr>
<tr>
<td>&lt;CENTER&gt;&lt;/CENTER&gt;</td>
<td>(sia per testo che immagini)centrato</td>
</tr>
<tr>
<td>&lt;BLINK&gt;&lt;/BLINK&gt;</td>
<td>(Intermittente)</td>
</tr>
<tr>
<td>&lt;FONT FACE=&#8221;Verdana,Arial,Helvetica,Geneva&#8221;&gt;</td>
<td>(pecifica il tipo di Font)</td>
</tr>
<tr>
<td>&lt;FONT SIZE=?&gt;&lt;/FONT&gt;</td>
<td>(valori da 1 a 7)randezza del Font</td>
</tr>
<tr>
<td>&lt;FONT SIZE=+|-&gt;&lt;/FONT&gt;</td>
<td>(cambia la grandezza del font)</td>
</tr>
<tr>
<td>&lt;BASEFONT SIZE=?&gt;</td>
<td>(da 1 a 7; il valore di default e&#8217; 3)grandezza font di base</td>
</tr>
<tr>
<td>&lt;FONT Color=&#8221;#$$$$$$&#8221;&gt;&lt;/FONT&gt;</td>
<td>(colore del Font )</td>
</tr>
</tbody>
</table>
<h3>COLLEGAMENTI NEL TESTO E AD ALTRI FILE</h3>
<table class="tbl_data1" border="0">
<tbody>
<tr>
<th class="tbl_data1_th1">tag</th>
<th class="tbl_data1_th2">descrizione</th>
</tr>
<tr>
<td>&lt;A HREF=&#8221;URL&#8221;&gt;&lt;/A&gt;</td>
<td>(collegamento di base)</td>
</tr>
<tr>
<td>&lt;A HREF=&#8221;URL#$$$$&#8221;&gt;&lt;/A&gt;&lt;A HREF=&#8221;#$$$$&#8221;/&gt;&lt;/A&gt;</td>
<td>il primo(in altro file)il secondo(nello stesso file)link ad un&#8217; ancora nel file</td>
</tr>
<tr>
<td>&lt;A HREF=&#8221;URL&#8221; TARGET=&#8221;$$$$&#8221;&gt;&lt;/A&gt;</td>
<td>(nello stesso file)ad un file indicando la destinazione</td>
</tr>
<tr>
<td>&lt;A NAME=&#8221;$$$$&#8221;&gt;&lt;/A&gt;</td>
<td>(Definizione di ancora nel file)</td>
</tr>
</tbody>
</table>
<h3>IMMAGINI</h3>
<table class="tbl_data1" border="0">
<tbody>
<tr>
<th class="tbl_data1_th1">tag</th>
<th class="tbl_data1_th2">descrizione</th>
</tr>
<tr>
<td>&lt;IMG SRC=&#8221;URL&#8221;&gt;</td>
<td>(Inserimento di una immagine )</td>
</tr>
<tr>
<td>&lt;IMG SRC=&#8221;URL&#8221; ALIGN=TOP|BOTTOM|MIDDLE&gt;</td>
<td>(Allineamento )</td>
</tr>
<tr>
<td>&lt;IMG SRC=&#8221;URL&#8221; ALIGN= LEFT|RIGHT|TEXTTOP |ABSMIDDLE|BASELINE&gt;</td>
<td>(Allineamento)</td>
</tr>
<tr>
<td>&lt;IMG SRC=&#8221;URL&#8221; ALT=&#8221;$$$$&#8221;&gt;</td>
<td>(quando non viene visualizzata l&#8217;immagine si vedra&#8217; il testo carattere)testo alternativo</td>
</tr>
<tr>
<td>&lt;IMG SRC=&#8221;URL&#8221; ISMAP&gt;</td>
<td>(richiede un script)Mappa navigabile</td>
</tr>
<tr>
<td>&lt;IMG SRC=&#8221;URL&#8221; USEMAP=&#8221;URL#$$$$&#8221;&gt;</td>
<td>(Mappa navigabile client-side o locale)</td>
</tr>
<tr>
<td>&lt;IMG SRC=&#8221;URL&#8221; WIDTH=&#8221;?&#8221; HEIGHT=&#8221;?&#8221;&gt;</td>
<td>(in pixel)Dimensioni</td>
</tr>
<tr>
<td>&lt;IMG SRC=&#8221;URL&#8221; BORDER=?&gt;</td>
<td>(in pixel)Bordi</td>
</tr>
<tr>
<td>&lt;IMG SRC=&#8221;URL&#8221; LOWSRC=&#8221;URL&#8221;&gt;</td>
<td>(Bassa risoluzione)</td>
</tr>
<tr>
<td>&lt;IMG SRC=&#8221;URL&#8221; HSPACE=? VSPACE=?&gt;</td>
<td>(Spaziatura)</td>
</tr>
</tbody>
</table>
<h3>MAPPE</h3>
<p>Occorre conoscere in molti casi la directory sul server per posizionare il file .map di definizione.<br />
Usando però un tipo di dichiarazione Client-Side il file .map non è più necessario. La definizione di mappa può essere dichiarata all&#8217;interno del file documento HTML. Per la dichiarazione si usa il codice</p>
<map name="nome della mappa"></map>
<p>come indicato sotto.</p>
<table class="tbl_data1" border="0">
<tbody>
<tr>
<th class="tbl_data1_th1">tag</th>
<th class="tbl_data1_th2">descrizione</th>
</tr>
<tr>
<td>&lt;MAP NAME=&#8221;$$$$&#8221;;&gt;&lt;/MAP&gt;</td>
<td>(descrive la mappa)Specifica della mappa</td>
</tr>
<tr>
<td>&lt;AREA SHAPE=&#8221;RECT|CIRCLE|POLYGON&#8221; COORDS=&#8221;,,,&#8221; HREF=&#8221;URL&#8221;|NOHREF&gt;</td>
<td>(Sezione mappa)</td>
</tr>
</tbody>
</table>
<h3>SEGNI DI PARAGRAFO ED ARGOMENTO</h3>
<table class="tbl_data1" border="0">
<tbody>
<tr>
<th class="tbl_data1_th1">tag</th>
<th class="tbl_data1_th2">descrizione</th>
</tr>
<tr>
<td>&lt;P&gt;&lt;/P&gt;</td>
<td>(lascia due righe bianche)Paragrafo</td>
</tr>
<tr>
<td>&lt;P ALIGN=LEFT|CENTER|RIGHT&gt;&lt;/P&gt;</td>
<td>(Allineamento)</td>
</tr>
<tr>
<td>&lt;BR&gt;</td>
<td>(ritorno a capo)Interruzione riga</td>
</tr>
<tr>
<td>&lt;HR&gt;</td>
<td>(riga orizzontale)</td>
</tr>
<tr>
<td>&lt;HR ALIGN=LEFT|CENTER|RIGHT&gt;</td>
<td>(Allineamento)</td>
</tr>
<tr>
<td>&lt;HR SIZE=?&gt;</td>
<td>(spessore in pixel)</td>
</tr>
<tr>
<td>&lt;HR WIDTH=?&gt;</td>
<td>(lunghezza in pixel)</td>
</tr>
<tr>
<td>&lt;HR WIDTH=%&gt;</td>
<td>(lunghezza in %)</td>
</tr>
<tr>
<td>&lt;HR NOSHADE&gt;</td>
<td>(No effetto 3D)</td>
</tr>
</tbody>
</table>
<h3>LISTE</h3>
<p>Elenchi semplici, composti, numerati o puntati</p>
<table class="tbl_data1" border="0">
<tbody>
<tr>
<th class="tbl_data1_th1">tag</th>
<th class="tbl_data1_th2">descrizione</th>
</tr>
<tr>
<td>&lt;UL&gt;&lt;LI&gt;&lt;/UL&gt;</td>
<td>(&lt;LI&gt; prima di ogni elemento)Liste libere</td>
</tr>
<tr>
<td>&lt;UL TYPE=DISC|CIRCLE|SQUARE&gt;&lt;LI TYPE=DISC|CIRCLE|SQUARE&gt;</td>
<td>(valido per tutta la lista)Punto</td>
</tr>
<tr>
<td>&lt;OL&gt;&lt;LI&gt;&lt;/OL&gt;</td>
<td>(&lt;LI&gt; prima di ogni elemento)Liste numerate</td>
</tr>
<tr>
<td>&lt;OL TYPE=A|a|I|i|1&gt;&lt;LI TYPE=A|a|I|i|1gt;</td>
<td>(valido per per tutta la lista)Tipo di numero</td>
</tr>
<tr>
<td>&lt;OL VALUE=?&gt;&lt;LI VALUE=?&gt;</td>
<td>(per tutta la lista)Numero di partenza</td>
</tr>
<tr>
<td>&lt;DL&gt;&lt;DT&gt;&lt;DD&gt;&lt;/DL&gt;</td>
<td>(Molto usata nella definizione dei menu )Lista di definizioni</td>
</tr>
</tbody>
</table>
<h3>SFONDI E DEFINIZIONE DI COLORE</h3>
<table class="tbl_data1" border="0">
<tbody>
<tr>
<th class="tbl_data1_th1">tag</th>
<th class="tbl_data1_th2">descrizione</th>
</tr>
<tr>
<td>&lt;BODY BGCOLOR=&#8221;#$$$$$$&#8221;&gt;</td>
<td>(in ordine di RGB)Colore di sfondo</td>
</tr>
<tr>
<td>&lt;BODY LINK=&#8221;#$$$$$$&#8221;&gt;</td>
<td>(colore dei collegamenti)</td>
</tr>
<tr>
<td>&lt;BODY VLINK=&#8221;#$$$$$$&#8221;&gt;</td>
<td>(colore dei collegamenti visitati )</td>
</tr>
<tr>
<td>&lt;BODY TEXT=&#8221;#$$$$$$&#8221;&gt;</td>
<td>(colore del testo)</td>
</tr>
<tr>
<td>&lt;BODY ALINK=&#8221;#$$$$$$&#8221;&gt;</td>
<td>(colore del collegamento in corso)</td>
</tr>
<tr>
<td>&lt;BODY BACKGROUND=&#8221;URL&#8221;&gt;</td>
<td>(immagine di sfondo)</td>
</tr>
</tbody>
</table>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Ciarpame?a=GuYJZOgTQz4:Sju-J8SIDL4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=GuYJZOgTQz4:Sju-J8SIDL4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=GuYJZOgTQz4:Sju-J8SIDL4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=GuYJZOgTQz4:Sju-J8SIDL4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=GuYJZOgTQz4:Sju-J8SIDL4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=GuYJZOgTQz4:Sju-J8SIDL4:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=GuYJZOgTQz4:Sju-J8SIDL4:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=GuYJZOgTQz4:Sju-J8SIDL4:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=GuYJZOgTQz4:Sju-J8SIDL4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=GuYJZOgTQz4:Sju-J8SIDL4:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=GuYJZOgTQz4:Sju-J8SIDL4:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=GuYJZOgTQz4:Sju-J8SIDL4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=GuYJZOgTQz4:Sju-J8SIDL4:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Ciarpame/~4/GuYJZOgTQz4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ciarpame.com/2009/01/20/primi-passi-di-html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.ciarpame.com/2009/01/20/primi-passi-di-html/</feedburner:origLink></item>
		<item>
		<title>Far Future Expires Header: come e perchè (IIS, Apache, Tomcat, PHP, ASP, JSP)</title>
		<link>http://feedproxy.google.com/~r/Ciarpame/~3/zxOQhC86xBU/</link>
		<comments>http://www.ciarpame.com/2009/01/14/far-future-expires-header-come-e-perche-iis-apache-tomcat-php-asp-jsp/#comments</comments>
		<pubDate>Wed, 14 Jan 2009 11:42:12 +0000</pubDate>
		<dc:creator>Giovanni Savastano</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tricks]]></category>
		<category><![CDATA[Web Servers]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[ASP]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[JSP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tomcat]]></category>

		<guid isPermaLink="false">http://www.ciarpame.com/?p=415</guid>
		<description><![CDATA[Sempre più spesso, nel mondo dello sviluppo web, si sente parlare di aumento delle performance, dimunuzione delle richieste HTTP, caching di contenuti dinamici, compressione di immagini e altre tecniche orientate all&#8217;allegerimento delle pagine di un sito e all&#8217;aumento della visualizzazione sul computer del nostro caro visitatore. Sicuramente una condizione ottimale per ottenere prestazioni migliori della [...]]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/sjEq90NrTHyMWEZ8iqSYiZs-uzU/0/da"><img src="http://feedads.g.doubleclick.net/~a/sjEq90NrTHyMWEZ8iqSYiZs-uzU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/sjEq90NrTHyMWEZ8iqSYiZs-uzU/1/da"><img src="http://feedads.g.doubleclick.net/~a/sjEq90NrTHyMWEZ8iqSYiZs-uzU/1/di" border="0" ismap="true"></img></a></p><p>Sempre più spesso, nel mondo dello sviluppo web, si sente parlare di aumento delle performance, dimunuzione delle richieste HTTP, caching di contenuti dinamici, compressione di immagini e altre tecniche orientate all&#8217;allegerimento delle pagine di un sito e all&#8217;aumento della visualizzazione sul computer del nostro caro visitatore.</p>
<p>Sicuramente una condizione ottimale per ottenere prestazioni migliori della propria web app o del proprio sito web è impostare il cosidetto <span style="text-decoration: underline;">Far Future Expire Header</span> degli elementi prensenti nelle pagine e delle pagine stesse.</p>
<p>In questo post cercherò di descrivere alcune tecniche per impostare tale condizione.</p>
<p><span id="more-415"></span></p>
<p>Cito dal sito di <a title="YSlow for Firebug" href="http://developer.yahoo.com/yslow/" target="_blank">YSlow</a>:</p>
<blockquote><p>Web page designs are getting richer and richer, which means more scripts, stylesheets, images, and Flash in the page. A first-time visitor to your page may have to make several HTTP requests, but by using the Expires header you make those components cacheable. This avoids unnecessary HTTP requests on subsequent page views. Expires headers are most often used with images, but they should be used on <em>all</em> components including scripts, stylesheets, and Flash components.</p></blockquote>
<p>Quindi in pratica che fa?:-)</p>
<p>L&#8217;Expire Header definisce la scadenza dell&#8217;oggetto che il browser preleva dal server e deposita nella cache del client. Impostando la &#8220;data di scadenza&#8221; ad un periodo molto lontano (Far Future per l&#8217;appunto) diciamo al browser di non richiamare più tale componente durante le succesive visite alla pagina che lo conteneva, rendendo di fatto la navigazione più veloce. Inoltre, applicando questa tecnica ad elementi comuni a tutte le pagine (es: background o file javascript o file css) l&#8217;utente usufruirà dei benefici di questa tecnica fin dalla seconda pagina che andrà a visualizzare sul nostro sito.</p>
<p>Vediamo come fare.</p>
<p><strong>Tramite l&#8217;uso di .htaccess (Apache)</strong></p>

<div class="wp_codebox"><table><tr id="p41515"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p415code15"><pre class="shell" style="font-family:monospace;">&lt;FilesMatch &quot;\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf|php|html|htm|php4|php5)$&quot;&gt;
Header set Expires &quot;Thu, 2 Feb 2010 20:00:00 GMT&quot;
&lt;/FilesMatch&gt;</pre></td></tr></table></div>

<p>con l&#8217;istruzione FileMatch indichiamo a quale tipo di file applicare le regole all&#8217;interno del blocco di codice e con &#8220;Header set Expires&#8221; andremo a dire ad Apache di <i>servire</i> il contenuto indicato con una data di scadenza molto lontana. Nell&#8217;esempio ho usato il 2 Febbraio 2010, alle 8 di sera.</p>
<p><strong>Tramite le impostazioni di IIS 6.0</strong></p>
<ol>
<li>Aprite il pannello di controllo di Internet Information Services (IIS).</li>
<li>Espandete &#8220;LocalMachine&#8221; sul pannelo di sinistra e succesivamente cliccate su Web Sites</li>
<li>Click con il tasto destro sul sito interessato e selezionate Properties.</li>
<li>Nel tab HTTP Headers, attivate la checkbox &#8220;Enable Content Expiration&#8221; e succesivamente selezionate l&#8217;opzione &#8220;Expire On&#8221;. e impostare il 2 Febbraio 2010 alle 8 di sera</li>
<li>Riavviate tutti i servizi IIS.</li>
</ol>
<p><strong>Con PHP</strong><br />
File far_future_loader.php</p>

<div class="wp_codebox"><table><tr id="p41516"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p415code16"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Content-type: text/javascript; charset: UTF-8&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Cache-Control: must-revalidate&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Expires: &quot;</span> <span style="color: #339933;">.</span> <span style="color: #990000;">gmdate</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;D, d M Y H:i:s&quot;</span><span style="color: #339933;">,</span><span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">60</span> <span style="color: #339933;">*</span> <span style="color: #cc66cc;">60</span> <span style="color: #339933;">*</span> <span style="color: #cc66cc;">24</span> <span style="color: #339933;">*</span> <span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot; GMT&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">include</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">dirname</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">__FILE__</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'/scripts.js'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>con il codice sopra potete, ad esempio, raggruppare tutti i vostri file javascript in un unico grande file .php, modificare l&#8217;header Content-type in modo che venga interpretato correttamente dal browser come text/javascript e poi modificarne a piaciemento la deata di scandenza.<br />
Successivamente nell&#8217;header delle vostre pagine, anzichè includere i singoli file javascript con l&#8217;istruzione:</p>

<div class="wp_codebox"><table><tr id="p41517"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p415code17"><pre class="html" style="font-family:monospace;">&lt;script type=&quot;text/javascript&quot; src=&quot;js/scripts.js&quot;&gt;&lt;/script&gt;</pre></td></tr></table></div>

<p>userete</p>

<div class="wp_codebox"><table><tr id="p41518"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p415code18"><pre class="html" style="font-family:monospace;">&lt;script type=&quot;text/javascript&quot; src=&quot;js/far_future_loader.php&quot;&gt;&lt;/script&gt;</pre></td></tr></table></div>

<p>Potete usare il file far_future_loader.php per ogni tipo di file, semplicemente cambiano il Content-type dei file che andrete ad includere, ad esempio, se volete averne uno anche per i file .css dovrete scrivere:</p>

<div class="wp_codebox"><table><tr id="p41519"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p415code19"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Content-type: text/css; charset: UTF-8&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Cache-Control: must-revalidate&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Expires: &quot;</span> <span style="color: #339933;">.</span> <span style="color: #990000;">gmdate</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;D, d M Y H:i:s&quot;</span><span style="color: #339933;">,</span><span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">60</span> <span style="color: #339933;">*</span> <span style="color: #cc66cc;">60</span> <span style="color: #339933;">*</span> <span style="color: #cc66cc;">24</span> <span style="color: #339933;">*</span> <span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot; GMT&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">include</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">dirname</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">__FILE__</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'/style.css'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>e successivamente nell&#8217;header delle vostre pagine, esattamente come avete fatto per il file javascript, sostituirete l&#8217;istruzione:</p>

<div class="wp_codebox"><table><tr id="p41520"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p415code20"><pre class="html" style="font-family:monospace;">&lt;link rel=&quot;stylesheet&quot; href=&quot;css/style.css&quot; type=&quot;text/css&quot; /&gt;</pre></td></tr></table></div>

<p>con</p>

<div class="wp_codebox"><table><tr id="p41521"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p415code21"><pre class="html" style="font-family:monospace;">&lt;link rel=&quot;stylesheet&quot; href=&quot;css/far_future_loader.php&quot; type=&quot;text/css&quot; /&gt;</pre></td></tr></table></div>

<p><strong>Con ASP</strong><br />
la procedura è identica a quella per PHP con la sola differenza che in ASP gli header si setttano con i seguenti comandi:</p>

<div class="wp_codebox"><table><tr id="p41522"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p415code22"><pre class="asp" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;%</span> <span style="color: #990099; font-weight: bold;">Response</span>.<span style="color: #330066;">CacheControl</span> <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #cc0000;">&quot;must-revalidate&quot;</span> <span style="color: #000000; font-weight: bold;">%&gt;</span>
<span style="color: #000000; font-weight: bold;">&lt;%</span> <span style="color: #990099; font-weight: bold;">Response</span>.<span style="color: #330066;">Expires</span> <span style="color: #006600; font-weight: bold;">=</span> -<span style="color: #800000;">1</span> <span style="color: #000000; font-weight: bold;">%&gt;</span></pre></td></tr></table></div>

<p><strong>Con JSP (Tomcat)</strong><br />
Grazie a <a href="http://www.jguru.com/guru/viewfaqs.jsp?EID=1168738" target="_blank">Byron Tymvios</a> su <a target="_blank" href="http://www.jguru.com/faq/view.jsp?EID=1311010">jGuru</a><br />
E&#8217; possibile ottenere l&#8217;identico risultato avuto con PHP o ASP tramite i filtri. Ad esempio:</p>

<div class="wp_codebox"><table><tr id="p41523"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
</pre></td><td class="code" id="p415code23"><pre class="jsp" style="font-family:monospace;">package com.xyz
&nbsp;
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
&nbsp;
public class CacheFilter implements javax.servlet.Filter {
  FilterConfig filterConfig = null;
&nbsp;
  public void init(FilterConfig filterConfig){
    this.filterConfig = filterConfig;
  }
&nbsp;
  public void doFilter(ServletRequest req,
     ServletResponse res,
     FilterChain chain)
     throws IOException, ServletException {
    String sCache = filterConfig.getInitParameter(&quot;cache&quot;);
&nbsp;
    if(sCache != null){       ((HttpServletResponse)res).setHeader(&quot;Cache-Control&quot;, sCache);
&nbsp;
    }
&nbsp;
    chain.doFilter(req, res);
  }
&nbsp;
  public void destroy(){
    this.filterConfig = null;
  }
}</pre></td></tr></table></div>

<p>e poi impostare nel file web.xml il filtro per ogni contenuto desiderato. Ecco l&#8217;esempio per i file .jpg:</p>

<div class="wp_codebox"><table><tr id="p41524"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code" id="p415code24"><pre class="jsp" style="font-family:monospace;">&lt;filter&gt;
  &lt;filter-name&gt;Cache&lt;/filter-name&gt;
  &lt;filter-class&gt;com.xyz.CacheFilter&lt;/filter-class&gt;
  &lt;init-param&gt;
    &lt;param-name&gt;cache&lt;/param-name&gt;
    &lt;param-value&gt;public, max-age=2592000&lt;/param-value&gt;
  &lt;/init-param&gt;
&lt;/filter&gt;
&lt;filter-mapping&gt;
  &lt;filter-name&gt;Cache&lt;/filter-name&gt;
  &lt;url-pattern&gt;*.jpg&lt;/url-pattern&gt;
&lt;/filter-mapping&gt;</pre></td></tr></table></div>

<p>è tutto <img src='http://www.ciarpame.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /><br />
nella prossimo post parleremo degli ETag.<br />
Giovanni</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Ciarpame?a=zxOQhC86xBU:qe3THU3lqcw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=zxOQhC86xBU:qe3THU3lqcw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=zxOQhC86xBU:qe3THU3lqcw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=zxOQhC86xBU:qe3THU3lqcw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=zxOQhC86xBU:qe3THU3lqcw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=zxOQhC86xBU:qe3THU3lqcw:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=zxOQhC86xBU:qe3THU3lqcw:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=zxOQhC86xBU:qe3THU3lqcw:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=zxOQhC86xBU:qe3THU3lqcw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=zxOQhC86xBU:qe3THU3lqcw:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=zxOQhC86xBU:qe3THU3lqcw:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=zxOQhC86xBU:qe3THU3lqcw:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=zxOQhC86xBU:qe3THU3lqcw:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Ciarpame/~4/zxOQhC86xBU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ciarpame.com/2009/01/14/far-future-expires-header-come-e-perche-iis-apache-tomcat-php-asp-jsp/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.ciarpame.com/2009/01/14/far-future-expires-header-come-e-perche-iis-apache-tomcat-php-asp-jsp/</feedburner:origLink></item>
		<item>
		<title>ActiveRecord: da Rails a PHP, programmare agilmente (2)</title>
		<link>http://feedproxy.google.com/~r/Ciarpame/~3/Wfin_98I2p4/</link>
		<comments>http://www.ciarpame.com/2009/01/12/activerecord-da-rails-a-php-programmare-agilmente-2/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 11:04:52 +0000</pubDate>
		<dc:creator>Daniele Veratti</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tricks]]></category>
		<category><![CDATA[ActiveRecord]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://www.ciarpame.com/?p=459</guid>
		<description><![CDATA[Rieccoci di nuovo a parlare di active record. Nella scorsa puntata avevamo visto una implementazione base del pattern. Essa però è orfana di qualsiasi metodo per la ricerca dei record. Vediamo ora come è possibile farlo. Rails mette a disposizione diversi metodi per recuperare record dalle tabelle di un database. Il primo è quello di [...]]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/BKnQP_QggEs9qGdyL3FvbVCQpbM/0/da"><img src="http://feedads.g.doubleclick.net/~a/BKnQP_QggEs9qGdyL3FvbVCQpbM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/BKnQP_QggEs9qGdyL3FvbVCQpbM/1/da"><img src="http://feedads.g.doubleclick.net/~a/BKnQP_QggEs9qGdyL3FvbVCQpbM/1/di" border="0" ismap="true"></img></a></p><p>Rieccoci di nuovo a parlare di active record. Nella scorsa puntata avevamo visto una implementazione base del pattern. Essa però è orfana di qualsiasi metodo per la ricerca dei record. Vediamo ora come è possibile farlo.<br />
<span id="more-459"></span><br />
Rails mette a disposizione diversi metodi per recuperare record dalle tabelle di un database. Il primo è quello di utilizzare il costruttore della classe passando come parametro l&#8217;id del record che vogliamo leggere. In molti linguaggi di programmazione Object-Oriented è possibile effettuare l&#8217;overload del costruttore, ovvero definire più costruttori per una stessa classe, dove in ogni costruttore cambiano i parametri per numero e/o tipo. In PHP non esiste tale meccanismo (e neanche in Ruby da quanto mi risulta!). Abbiamo visto nella puntata precedente come il costruttore della classe php ActiveRecordBase accetti come unico parametro un array contenente i campi che vogliamo dare ad un nuovo record. Simuliamo ora l&#8217;overloading del costruttore in modo che accetti sia l&#8217;array che un numero che identifichi l&#8217;ID del record.</p>

<div class="wp_codebox"><table><tr id="p45930"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code" id="p459code30"><pre class="php" style="font-family:monospace;">abstract <span style="color: #000000; font-weight: bold;">class</span> ActiveRecordBase <span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;"># qui ci va la dichiarazione degli attributi della classe che tralasciamo
</span>  <span style="color: #666666; font-style: italic;"># .....
</span>  <span style="color: #666666; font-style: italic;">#
</span>  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #339933;">=</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
     <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>__db <span style="color: #339933;">=</span> <span style="color: #339933;">&amp;</span>MDB2<span style="color: #339933;">::</span><span style="color: #004000;">connect</span><span style="color: #009900;">&#40;</span>DB_DSN<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">// DB_DSN è una stringa che contiene di dati accesso al DB</span>
     <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>__table <span style="color: #339933;">=</span> <span style="color: #990000;">strtolower</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">get_class</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
     <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">is_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #990000;">is_numeric</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
         <span style="color: #000088;">$sql</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;SELECT * FROM &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>__db<span style="color: #339933;">-&gt;</span><span style="color: #004000;">quoteIdentifier</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>__table<span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
                  <span style="color: #0000ff;">&quot; WHERE &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>__db<span style="color: #339933;">-&gt;</span><span style="color: #004000;">quoteIdentifier</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>__primary_key<span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; = &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>__db<span style="color: #339933;">-&gt;</span><span style="color: #004000;">quote</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         <span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>__db<span style="color: #339933;">-&gt;</span><span style="color: #004000;">queryRow</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$sql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
     <span style="color: #009900;">&#125;</span>
     <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$key</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #000088;">$key</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$value</span><span style="color: #339933;">;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fields</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$key</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #666666; font-style: italic;"># Qui prosegue il resto del codice della classe
</span><span style="color: #666666; font-style: italic;"># ....
</span><span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Con questa modifica la nostra classe continua a funzionare accettando 0 o 1 parametro di tipo numerico o array/hash.<br />
Vediamo ora l&#8217;implementazione di un metodo find() che permetta di passare come parametro l&#8217;ID del record che vogliamo ottenere. Per semplicità d&#8217;ora in avanti verranno omesse le dichiarazioni di classe quando non strettamente necessarie.</p>

<div class="wp_codebox"><table><tr id="p45931"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code" id="p459code31"><pre class="php" style="font-family:monospace;">    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> find<span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
         <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">is_numeric</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
         <span style="color: #000088;">$sql</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;SELECT * FROM &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>__db<span style="color: #339933;">-&gt;</span><span style="color: #004000;">quoteIdentifier</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>__table<span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; WHERE &quot;</span><span style="color: #339933;">.</span>
                  <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>__db<span style="color: #339933;">-&gt;</span><span style="color: #004000;">quoteIdentifier</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>__primary_key<span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; = &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>__db<span style="color: #339933;">-&gt;</span><span style="color: #004000;">quote</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         <span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>__db<span style="color: #339933;">-&gt;</span><span style="color: #004000;">queryRow</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
             <span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$key</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #000088;">$key</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$value</span><span style="color: #339933;">;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fields</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$key</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
             <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span>
         <span style="color: #009900;">&#125;</span>
         <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Come potete vedere, l&#8217;implementazione di find() è molto simile a quella del costruttore. Ricordiamoci il principio DRY (= Don&#8217;t Repeat Yourself). Modifichiamo il costruttore e aggiungiamo un metodo privato che assegni a partire da un array i valori corrispondenti agli attributi della classe.<br />
__assignData sarà un metodo privato che assegna i valori agli attributi:</p>

<div class="wp_codebox"><table><tr id="p45932"><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code" id="p459code32"><pre class="php" style="font-family:monospace;">    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">function</span> __assignData<span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #339933;">=</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
             <span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$key</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #000088;">$key</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$value</span><span style="color: #339933;">;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fields</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$key</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
             <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span>
         <span style="color: #009900;">&#125;</span>
         <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Possiamo semplificare il metodo find():</p>

<div class="wp_codebox"><table><tr id="p45933"><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code" id="p459code33"><pre class="php" style="font-family:monospace;">    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> find<span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
         <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">is_numeric</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
         <span style="color: #000088;">$sql</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;SELECT * FROM &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>__db<span style="color: #339933;">-&gt;</span><span style="color: #004000;">quoteIdentifier</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>__table<span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; WHERE &quot;</span><span style="color: #339933;">.</span>
                  <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>__db<span style="color: #339933;">-&gt;</span><span style="color: #004000;">quoteIdentifier</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>__primary_key<span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; = &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>__db<span style="color: #339933;">-&gt;</span><span style="color: #004000;">quote</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         <span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>__db<span style="color: #339933;">-&gt;</span><span style="color: #004000;">queryRow</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         <span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>__assignData<span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>E ora rivediamo il costruttore:</p>

<div class="wp_codebox"><table><tr id="p45934"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code" id="p459code34"><pre class="php" style="font-family:monospace;">  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #339933;">=</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
     <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>__db <span style="color: #339933;">=</span> <span style="color: #339933;">&amp;</span>MDB2<span style="color: #339933;">::</span><span style="color: #004000;">connect</span><span style="color: #009900;">&#40;</span>DB_DSN<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">// DB_DSN è una stringa che contiene di dati accesso al DB</span>
     <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>__table <span style="color: #339933;">=</span> <span style="color: #990000;">strtolower</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">get_class</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
     <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">is_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #990000;">is_numeric</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
         <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">find</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
     <span style="color: #009900;">&#125;</span>
     <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>__assignData<span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Ciarpame?a=Wfin_98I2p4:EqthxLIrcgU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=Wfin_98I2p4:EqthxLIrcgU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=Wfin_98I2p4:EqthxLIrcgU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=Wfin_98I2p4:EqthxLIrcgU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=Wfin_98I2p4:EqthxLIrcgU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=Wfin_98I2p4:EqthxLIrcgU:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=Wfin_98I2p4:EqthxLIrcgU:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=Wfin_98I2p4:EqthxLIrcgU:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=Wfin_98I2p4:EqthxLIrcgU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=Wfin_98I2p4:EqthxLIrcgU:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=Wfin_98I2p4:EqthxLIrcgU:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Ciarpame?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Ciarpame?a=Wfin_98I2p4:EqthxLIrcgU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Ciarpame?i=Wfin_98I2p4:EqthxLIrcgU:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Ciarpame/~4/Wfin_98I2p4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ciarpame.com/2009/01/12/activerecord-da-rails-a-php-programmare-agilmente-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.ciarpame.com/2009/01/12/activerecord-da-rails-a-php-programmare-agilmente-2/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 7.440 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-07-30 01:43:26 -->
