<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Howtoweb.it</title>
	<atom:link href="http://www.howtoweb.it/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.howtoweb.it</link>
	<description>Tutorial e risorse per chi lavora sul web</description>
	<lastBuildDate>Fri, 25 Jun 2010 09:04:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Utilizzare JQuery UI Autocomplete con PHP e Mysql</title>
		<link>http://www.howtoweb.it/articoli/utilizzare-jquery-ui-autocomplete-con-php-e-mysql/</link>
		<comments>http://www.howtoweb.it/articoli/utilizzare-jquery-ui-autocomplete-con-php-e-mysql/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 08:56:36 +0000</pubDate>
		<dc:creator>Mauro Accornero</dc:creator>
				<category><![CDATA[Articoli]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.howtoweb.it/?p=680</guid>
		<description><![CDATA[
In questo articolo vedremo come integrare facilmente il widget autocomplete di Jquery UI all&#8217;interno di pagine dinamiche.
L&#8217;utilizzo è molto semplice, come prima cosa è necessario scaricare il pacchetto completo di Jquery UI compreso di tema personalizzato o standard e collegare i rispettivi files alla pagina dinamica.
&#60;link rel="stylesheet" href="css/theme/ui.theme.css" type="text/css"/&#62;
&#60;script src="js/jquery.min.js" type="text/javascript"&#62;&#60;/script&#62;
&#60;script src="js/jquery-ui.min.js" type="text/javascript"&#62;&#60;/script&#62;
Ora possiamo aggiungere [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-687" title="autocomplete" src="http://www.howtoweb.it/wp-content/uploads/2010/06/autocomplete.jpg" alt="" width="580" height="200" /></p>
<p>In questo articolo vedremo come integrare facilmente il widget autocomplete di Jquery UI all&#8217;interno di pagine dinamiche.</p>
<p>L&#8217;utilizzo è molto semplice, come prima cosa è necessario scaricare il pacchetto completo di Jquery UI compreso di tema personalizzato o standard e collegare i rispettivi files alla pagina dinamica.</p>
<pre>&lt;link rel="stylesheet" href="css/theme/ui.theme.css" type="text/css"/&gt;
&lt;script src="js/jquery.min.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;script src="js/jquery-ui.min.js" type="text/javascript"&gt;&lt;/script&gt;</pre>
<p>Ora possiamo aggiungere l&#8217;elemento input che utilizzero per l&#8217;autocomplete, per comodità di selezione verrà aggiunto un id.</p>
<pre>&lt;input value="Insert your tag here" /&gt;</pre>
<p>Per ciò che riguarda javascript iniziamo applicando un autocomplete base al campo input</p>
<pre>$(function() {var myTags = ["tag1", "tag2", "anotherTag", "simpleTag"];
$("#tags").autocomplete({source: myTags});});</pre>
<p>In questo caso settiamo come opzione &#8220;source&#8221; che specifica come sorgente l&#8217;array &#8220;myTags&#8221;.Per rendere dinamico l&#8217;autocomplete modifichiamo la sorgente con un file dinamico che si occuperà di effettuare la ricerca</p>
<pre> $("#tags").autocomplete({source: "tagSearch.php"});</pre>
<p>Di seguito un esempio per tagSearch.php:</p>
<pre>//creazione di un array vuoto
$return_arr = array();

//dati di accesso a mysql e al db
$dbhost = 'YOUR_SERVER';
$dbuser = 'YOUR_USERNAME';
$dbpass = 'YOUR_PASSWORD';
$dbname = 'YOUR_DATABASE_NAME';

//definisco la variabile di ricerca dell'utente
$term = $_GET("term");

//connessione al a mysql
$conn = mysql_connect($dbhost, $dbuser, $dbpass)
or die ('Impossibile connettersi a Mysql');
//selezione ddb
mysql_select_db($dbname);
//se connesso
if ($conn)
{
//query select
$fetch = mysql_query("SELECT * FROM tags WHERE MATCH(tagName) AGAINST('".$term."*')");
//loop dei dati
while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) {
$row_array['value'] = $row['tagName '];
array_push($return_arr,$row_array);
}

}
//chiudo la connessione a mysql
mysql_close($conn);
//restituisco l'array in formato json
echo json_encode($return_arr);</pre>
<p>La variabile $terms viene ricavata dall&#8217;url, l&#8217;autocomplete di Jquery UI richiama infatti il file search.php con la variabile term (es. search.php?term=ciao) ad ogni change nel campo input.Considerato che la variabile term viene aggiornata e inviata ad ogni change del campo ho utilizzato MATCH AGAINST nella query affinchè ad ogni richiesta mysql cerchi l&#8217;input dell&#8217;utente seguito da altro.Il risultato è che a fronte di una ricerca &#8220;a&#8221; verranno restituiti tutti i dati che iniziano per &#8220;a&#8221;, aggiungendo lettere verranno restituiti solo i dati che corrispondono ai criteri della ricerca.</p>
<p>L&#8217;autocomplete di JQuery UI prevede una vasta serie di opzioni con le quali è possibile manipolare i dati prensenti nell&#8217;input e nei risultati, creare una cache dai dati e customizzare aspetto e animazioni dell&#8217;input.Per maggiori informazioni consiglio una lettura della documentazione disponibile sulla <a title="jquery ui autocomplete demo" href="http://jqueryui.com/demos/autocomplete/" target="_blank">pagina dedicata</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.howtoweb.it/articoli/utilizzare-jquery-ui-autocomplete-con-php-e-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Realizzare select multilingue con Jquery</title>
		<link>http://www.howtoweb.it/tutorial/realizzare-select-multilingue-con-jquery/</link>
		<comments>http://www.howtoweb.it/tutorial/realizzare-select-multilingue-con-jquery/#comments</comments>
		<pubDate>Mon, 14 Jun 2010 05:00:25 +0000</pubDate>
		<dc:creator>Mauro Accornero</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.howtoweb.it/?p=666</guid>
		<description><![CDATA[
In questo articolo vedremo come realizzare un selettore multilingue con html, css e jquery, per vedere l&#8217; esempio completo visitate la demo.
Per questo tutorial ho utilizzato world-flags-sprite, una soluzione css che offre una vasta gamma di bandiere di numerosi stati attraverso la tecnica degli sprites css, consiglio vivamente questa soluzione che permette di aggiungere facilmente [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-665" title="selectlanguageImage" src="http://www.howtoweb.it/wp-content/uploads/2010/06/selectlanguageImage.jpg" alt="" width="580" height="200" /></p>
<p>In questo articolo vedremo come realizzare un selettore multilingue con html, css e jquery, per vedere l&#8217; esempio completo visitate la <a href="http://www.howtoweb.it/wp-content/uploads/selectlanguage/" target="_self">demo</a>.</p>
<p>Per questo tutorial ho utilizzato <a title="world flags sprite" href="http://github.com/lafeber/world-flags-sprite" target="_blank">world-flags-sprite</a>, una soluzione css che offre una vasta gamma di bandiere di numerosi stati attraverso la tecnica degli sprites css, consiglio vivamente questa soluzione che permette di aggiungere facilmente le immagini per nuove lingue.<br />
Iniziamo creando un nuovo file html in cui inseriremo il nostro markup. L&#8217;esempio qui proposto è pensato in chiave statica ma può essere facilmente applicato anche a pagine dinamiche gestendo l&#8217;output del testo e delle classi.</p>
<h3>HTML</h3>
<pre>
<div id="_mcePaste">&lt;ul&gt;</div>
<div id="_mcePaste">&lt;li&gt;</div>
<div id="_mcePaste">&lt;a href="http://www.mywebsite.it/index.html?lang=it" title="Italy"&gt;</div>
<div id="_mcePaste">&lt;span&gt;&lt;/span&gt;Italy</div>
<div id="_mcePaste">&lt;/a&gt;</div>
<div id="_mcePaste">&lt;/li&gt;</div>
<div id="_mcePaste">&lt;li&gt;</div>
<div id="_mcePaste">&lt;a href="http://www.mywebsite.it/index.html?lang=us" title="Usa"&gt;</div>
<div id="_mcePaste">&lt;span&gt;&lt;/span&gt;Usa</div>
<div id="_mcePaste">&lt;/a&gt;</div>
<div id="_mcePaste">&lt;/li&gt;</div>
<div id="_mcePaste">&lt;li&gt;</div>
<div id="_mcePaste">&lt;a href="http://www.mywebsite.it/index.html?lang=uk" title="England"&gt;</div>
<div id="_mcePaste">&lt;span&gt;&lt;/span&gt;England</div>
<div id="_mcePaste">&lt;/a&gt;</div>
<div id="_mcePaste">&lt;/li&gt;</div>
<div id="_mcePaste">&lt;li&gt;</div>
<div id="_mcePaste">&lt;a href="http://www.mywebsite.it/index.html?lang=fr" title="France"&gt;</div>
<div id="_mcePaste">&lt;span&gt;&lt;/span&gt;France</div>
<div id="_mcePaste">&lt;/a&gt;</div>
<div id="_mcePaste">&lt;/li&gt;</div>
<div id="_mcePaste">&lt;li&gt;</div>
<div id="_mcePaste">&lt;a href="http://www.mywebsite.it/index.html?lang=es" title="Spain"&gt;</div>
<div id="_mcePaste">&lt;span&gt;&lt;/span&gt;Spain</div>
<div id="_mcePaste">&lt;/a&gt;</div>
<div id="_mcePaste">&lt;/li&gt;</div>
<div id="_mcePaste">&lt;li&gt;</div>
<div id="_mcePaste">&lt;a href="http://www.mywebsite.it/index.html?lang=de" title="Germany"&gt;</div>
<div id="_mcePaste">&lt;span&gt;&lt;/span&gt;Germany</div>
<div id="_mcePaste">&lt;/a&gt;</div>
<div id="_mcePaste">&lt;/li&gt;</div>
<div id="_mcePaste">&lt;/ul&gt;</div>
</pre>
<p>Definiamo una lista non ordinata con  all&#8217;interno degli elementi &#8220;li&#8221; che conterranno le singole lingue. In ogni singola voce definiamo un link che conterrà l&#8217;url al sito nella rispettiva lingua.In questo esempio ogni link rimanda ad una pagina fittizia a cui viene aggiunta una variabile per la selezione della lingua. Nel link inseriremo un elemento span che utilizzaremo come contenitore per l&#8217;immagine della bandiera e il testo della lingua.</p>
<p>Le classi presenti sull&#8217;elemento &#8220;ul&#8221; sono relative al layout della lista (.langSelect) e al template applicato (&#8220;.black&#8221;,&#8221;.white&#8221; oppure &#8220;.grey&#8221;). Le classi &#8220;.f16&#8243; e &#8220;flag&#8221; sono relative a flags16.css e servono per mostrare l&#8217;immagine delle rispettive bandiere.</p>
<h3>CSS</h3>
<p>La prima parte del css è dedicata al template. Colori, bordi e immagini di fondo sono gestiti dalle classi &#8220;.black&#8221; , &#8220;.white&#8221; e &#8220;.grey&#8221;.</p>
<pre>/*black theme*/
.black{background-color:#000;border:1px solid #444;}
.black li:first-child{background-position:right top;}
.black a{color:#fff;}
.black a:hover{background:#111;}
.black li:first-child + li{border-top:1px solid #444;}
/*white theme*/
.white{background-color:#eee;border:1px solid #bbb;}
.white li:first-child{background-position:right -25px;}
.white a{color:#333;}
.white a:hover{background:#ddd;}
.white li:first-child + li{border-top:1px solid #bbb;}
/*grey theme*/
.grey{background-color:#ccc;border:1px solid #eee;}
.grey li:first-child{background-position:right -50px;}
.grey a{color:#000;}
.grey a:hover{background:#999;}
.grey li:first-child + li{border-top:1px solid #aaa;}</pre>
<p>La seconda parte del css gestisce il layout della lista definendo dimensioni, spaziature e larghezza.</p>
<pre>.langSelect{
    width:150px;
    -moz-border-radius:10px;
    -webkit-border-radius:10px;
    border-radius:10px;
    text-align:left;
    list-style:none;
}
.langSelect li{
    line-height:25px;
    position:relative;
}
.langSelect a{
    padding-left:35px;
    position:relative;
    text-decoration:none;
    display:block;
}
.langSelect li:first-child a:hover{
    background:transparent;
}
.langSelect li:first-child{
    background-image:url(../img/bg_lang_select.png);
    background-repeat:no-repeat;
    -moz-border-radius:10px;
    -webkit-border-radius:10px;
    border-radius:10px;
}
.langSelect li:last-child a:hover{
    -moz-border-radius:0 0 10px 10px;
    -webkit-border-radius:0 0 10px 10px;
    border-radius:0 0 10px 10px;
}
.langSelect a span{
    width:16px;
    height:16px;
    position:absolute;
    top:50%;
    margin-top:-8px;
    left:10px;
}</pre>
<p>In questo modo è possibile creare stili customizzati in poco tempo e senza dover metter mano al layout.</p>
<h3>JQUERY E JAVASCRIPT</h3>
<p>Prima di inizare con il codice javascript assicuratevi di aver incluso la libreria  jquery nella pagina, la potete trovare sul <a title="jquery" href="http://www.jquery.com/" target="_blank">sito di jquery</a> o in alternativa caricarla attraverso le <a title="google ajax libraries api" href="http://code.google.com/apis/ajaxlibs/" target="_blank">Google AJAX Libraries API</a>.<br />
Lo script può essere incluso sia internamente che esternamente alla pagina html.</p>
<p>Il codice verifica innanzitutto il caricamento della pagina.</p>
<pre> $(function() {</pre>
<p>Una volta certo della presenza degli elementi nel DOM inizia nascondendo tutti gli elementi &#8220;li&#8221; successivi al primo.</p>
<p>$(&#8220;.langSelect li:first-child&#8221;).nextAll().hide();</p>
<p>La seguente istruzione verifica l&#8217;hover del mouse sulla lista.</p>
<pre> $(".langSelect").hover(function(){</pre>
<p>Al mouseover anima gli elementi successivi al primo &#8220;li&#8221; mostrandoli.</p>
<pre> $(this).find("li:first-child").nextAll().not(":animated").slideDown(500);</pre>
<p>Mentre al mouseout li nasconde</p>
<pre> $(this).find("li:first-child").nextAll().not(":animated").slideUp(500);</pre>
<p>Una piccola nota su questo passaggio, è possibile notare l&#8217;utilizzo di .not(&#8220;:animated&#8221;) questa aggiunta impedisce che le animazioni partano o si ripetano quando gli elementi sono ancora animati.<br />
Una volta completate le istruzioni sull&#8217;animazione definiamo il codice da eseguire al click della singola voce.</p>
<pre> $(".langSelect li").click(function(){</pre>
<p>Come prima cosa è necessario verificare se la voce cliccata sia quella già selezionata.</p>
<pre> if($("li").index(this) == 0){</pre>
<p>in quel caso annulliamo la chiamata del link e non eseguiamo ulteriori istruzioni</p>
<pre> return false;</pre>
<p>In questo caso return false sull&#8217;elemento li annulla la chiamata del link al suo interno impedendo la chiamata alla pagina su cui l&#8217;utente già si trova.<br />
Nel caso l&#8217;utente clicchi su una lingua diversa da quella selezionata spostiamo questa voce come prima della lista.</p>
<pre> $(this).prependTo($(this).parent("ul"));</pre>
<p>Subito dopo animo il menu per nascondere le altre lingue.</p>
<pre> $(this).parent("ul").find("li:first-child").nextAll().slideUp(400,</pre>
<p>E aggiungo una funzione di callback che al completamento dell&#8217;animazione rimanda l&#8217;utente all&#8217;url presente nel link della lingua cliccata.</p>
<pre> function (){
 location.href = $(this).find("a").attr("href");
 });</pre>
<p>Per concludere annullo la chiamata del link tradizionale ed evitare l&#8217;immediata chiamata alla pagina in questione.</p>
<pre> return false;</pre>
<p>Per vedere l&#8217; esempio completo visitate la <a href="http://www.howtoweb.it/wp-content/uploads/selectlanguage/">demo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.howtoweb.it/tutorial/realizzare-select-multilingue-con-jquery/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Lezioni di HTML 5 Lezione 4 &#8211; L&#8217;elemento video</title>
		<link>http://www.howtoweb.it/articoli/lezioni-di-html-5-lezione-4-lelemento-video/</link>
		<comments>http://www.howtoweb.it/articoli/lezioni-di-html-5-lezione-4-lelemento-video/#comments</comments>
		<pubDate>Wed, 19 May 2010 22:19:30 +0000</pubDate>
		<dc:creator>Mauro Accornero</dc:creator>
				<category><![CDATA[Articoli]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html 5]]></category>
		<category><![CDATA[web design]]></category>

		<guid isPermaLink="false">http://www.howtoweb.it/?p=635</guid>
		<description><![CDATA[
Una delle funzionalità più interessanti dell&#8217;HTML 5 è senza dubbio rappresentata dalla possibilità di inserire filmati video all&#8217;interno della pagina web.
Questo elemento cambia notevolmente il modo in cui gli utenti possono usufruire dei video su internet permettendo la visione del contenuto senza un player flash.
L&#8217;attuale supporto per questo elemento è riservato alle ultime versioni di [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-573" title="html5_lesson1" src="http://www.howtoweb.it/wp-content/uploads/2010/04/html5_lesson1.jpg" alt="" width="580" height="200" /></p>
<p>Una delle funzionalità più interessanti dell&#8217;HTML 5 è senza dubbio rappresentata dalla possibilità di inserire filmati video all&#8217;interno della pagina web.</p>
<p>Questo elemento cambia notevolmente il modo in cui gli utenti possono usufruire dei video su internet permettendo la visione del contenuto senza un player flash.</p>
<p>L&#8217;attuale supporto per questo elemento è riservato alle ultime versioni di firefox, safari e chrome ma la stessa microsoft ha annunciato il supporto per Internet explorer 9 mentre per Opera dalla versione 10 (10.5).</p>
<h3>Per iniziare</h3>
<p>Prima di iniziare con il codice è indispensabile ricordare che non tutti i browser supportano gli stessi contenitori e gli stessi codecs audio/video. Un file video è di fatti composto da un contenitore (mpeg4,flash video, ogg ecc), un codec audio (mpeg1,vorbis, ecc) e un codec video (mpeg4 asp, h.264, theora).<br />
Per portare un po&#8217; di ordine in questa situazione è utile tener presente ciò che è supportato dai browser e preparare due files. Uno con theora,vorbis e ogg e il secondo con h.624,aac e mp4.</p>
<p>Il primo files sarà supportato da firefox, opera e chrome il secondo da chrome, safari, iphone e android.</p>
<p>Per la conversione dei files di questo esempio sono stati utilizzati <a href="http://v2v.cc/~j/ffmpeg2theora/" target="_blank">ffmpeg2theora</a> ed <a href="http://handbrake.fr/" target="_blank">handbrake</a> .</p>
<h3>L&#8217;elemento video</h3>
<p>Per integrare nella pagina web il nostro video utilizziamo l&#8217;elemento video con chiusura esplicita.</p>
<pre>&lt;video&gt;&lt;/video&gt;</pre>
<p>Al suo interno è possibile specificare un contenuto alternativo nel caso il browser non supporti questo elemento.</p>
<pre>&lt;video&gt;
&lt;p&gt;Spiacente il tuo browser non supporta l'elemento video&lt;/p&gt;
&lt;/video&gt;</pre>
<p>Considerato che l&#8217;elemento video si comporta come l&#8217;elemento immagine necessita sempre di avere un altezza e una larghezza specifica.</p>
<pre>&lt;video width="640" height="480"&gt;
&lt;p&gt;Spiacente il tuo browser non supporta l'elemento video&lt;/p&gt;
&lt;/video&gt;</pre>
<p>Per inserire il video sorgente aggiungiamo l&#8217;attributo src con la path relativa alla risorsa.</p>
<pre>&lt;video src="miovideo.ogv" width="640" height="480"&gt;
&lt;p&gt;Spiacente il tuo browser non supporta l'elemento video&lt;/p&gt;
&lt;/video&gt;</pre>
<p>Per rendere visibili i controlli del video è sufficiente aggiungere l&#8217;attributo controls.</p>
<pre>&lt;video src="miovideo.ogv" width="640" height="480" controls&gt;
&lt;p&gt;Spiacente il tuo browser non supporta l'elemento video&lt;/p&gt;
&lt;/video&gt;</pre>
<p>Se desideriamo che il video venga scaricato non appena la pagina è caricata possiamo aggiungere l&#8217;attributo preload.</p>
<pre>&lt;video src="miovideo.ogv" width="640" height="480" preload&gt;
&lt;p&gt;Spiacente il tuo browser non supporta l'elemento video&lt;/p&gt;
&lt;/video&gt;</pre>
<p>O in caso contrario specificare &#8220;none&#8221; come valore.</p>
<pre>&lt;video src="miovideo.ogv" width="640" height="480" preload="none"&gt;
&lt;p&gt;Spiacente il tuo browser non supporta l'elemento video&lt;/p&gt;
&lt;/video&gt;</pre>
<p>Un&#8217;ultima opzione viene offerta dall&#8217;attributo autoplay che fa partire automaticamente il filmato.</p>
<pre>&lt;video src="miovideo.ogv" width="640" height="480" autoplay&gt;
&lt;p&gt;Spiacente il tuo browser non supporta l'elemento video&lt;/p&gt;
&lt;/video&gt;</pre>
<p>Un&#8217;ultima nota va dedicata al fatto che abbiamo due file da inserire e non uno, l&#8217;attributo src non è quindi sufficiente e dobbiamo utilizzare l&#8217;elemento source con l&#8217;attributo src per definire la risorsa.<br />
In aggiunta è necessario specificare il mime del file e i codecs per far sì che il browser sappia a priori cosa andrà a caricare e se è supporta lo specifico file.</p>
<pre>&lt;video  width="640" height="480" autoplay&gt;
&lt;source src="miovideo.m4v" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'&gt;
&lt;source src="miovideo.ogv" type='video/ogg; codecs="theora, vorbis"'&gt;
&lt;p&gt;Spiacente il tuo browser non supporta l'elemento video&lt;/p&gt;
&lt;/video&gt;</pre>
<h3>In conclusione</h3>
<p>Una volta applicato questo codice con i relativi percorsi ai rispettivi files si ottiene un risultato come in <a href="http://www.howtoweb.it/wp-content/uploads/video" target="_blank">questo esempio</a>.</p>
<p>Il video utilizzato nell&#8217;esempio è  visibile su <a href="http://www.youtube.com/watch?v=XB5qvfE92P8" target="_blank">youtube </a>ed è stato gentilmente fornito da <a href="http://blog.vialemarchinoguido.com/" target="_blank">Guido Viale Marchino</a> che ringrazio per l&#8217;aiuto.</p>
<p>Una funzionalità aggiuntiva per i browser che non supportano il tag video potrebbe essere quella di aggiungere un flash player come contenuto alternativo ma richiede una verifica del supporto dell&#8217;elemento video per il client utilizzato dall&#8217;utente.</p>
<p>Nel prossimo articolo vedremo come verificare il supporto delle varie funzionalità dell&#8217;HTML 5 nel browser dell&#8217;utente. Torna a trovarmi su howtoweb.it per le prossime lezioni di html 5 o <a href="http://www.howtoweb.it/feed/" target="_self">iscriviti agli rss</a> per rimanere sempre aggiornato sui nuovi articoli.</p>
<h3>Nota:</h3>
<p>Ho notato che inizialmente il video non veniva caricato correttamente su firefox e opera, il problema era il fatto che il mime video/ogg non veniva associato da apache al file in formato .ogv</p>
<p>Per risolvere ho aggiunto un file .htaccess nella cartella specificando a quali formati applicare il mime presente nela pagina html.</p>
<p>Nel caso incontriate la stessa problematica è possibile risolvere con questa linea di codice all&#8217;interno del file .htaccess</p>
<pre>AddType video/ogg .ogg .ogv</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.howtoweb.it/articoli/lezioni-di-html-5-lezione-4-lelemento-video/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>L&#8217;inutilità di sviluppare per Internet Explorer 6</title>
		<link>http://www.howtoweb.it/articoli/linutilita-di-sviluppare-per-internet-explorer-6/</link>
		<comments>http://www.howtoweb.it/articoli/linutilita-di-sviluppare-per-internet-explorer-6/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 14:12:05 +0000</pubDate>
		<dc:creator>Mauro Accornero</dc:creator>
				<category><![CDATA[Articoli]]></category>
		<category><![CDATA[web design]]></category>

		<guid isPermaLink="false">http://www.howtoweb.it/?p=624</guid>
		<description><![CDATA[
Nelle ultime settimane mi si sono presentate diverse occasioni per discutere sul supporto da offrire agli utenti di Internet Explorer 6 e ho notato che la questione risulta ben lontana dall&#8217;essere risolta.
Allo stato attuale i maggiori servizi di statistiche web delineano gli utenti di Internet Explorer 6 tra il 9% e il 18% dell&#8217;utenza mondiale.
Una [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-627" title="ie6" src="http://www.howtoweb.it/wp-content/uploads/2010/04/ie6.jpg" alt="" width="580" height="200" /></p>
<p>Nelle ultime settimane mi si sono presentate diverse occasioni per discutere sul supporto da offrire agli utenti di Internet Explorer 6 e ho notato che la questione risulta ben lontana dall&#8217;essere risolta.</p>
<p>Allo stato attuale i maggiori servizi di statistiche web delineano gli utenti di Internet Explorer 6 tra il 9% e il 18% dell&#8217;utenza mondiale.</p>
<p>Una statistica indubbiamente preoccupante considerato che superara gli utenti di safari, chrome ed opera messi insieme.</p>
<p>Detto questo prima di farsi prendere dal panico suggerirei di abbandonare le ricerce per ottenere un numero preciso di utenti IE6 sul pianeta e di basarsi su qualcosa di più oggettivo.</p>
<p>Sicuramente se vi siete posti il problema è perchè temete di perdere utenza tra coloro che utilizzano questo vetusto browser e prima di procedere oltre vi consiglierei di rispondere alla seguente domanda:</p>
<p><strong><span style="text-decoration: underline;">Quanti utenti con Internet Explorer 6 navigano sul vostro sito?</span></strong></p>
<p>Per fare un esempio su questo blog gli utenti con ie6 negli ultimi 4 mesi risultano meno dell&#8217;1% e lo stesso potrebbe essere per il vostro sito.</p>
<p>Non saprete mai di quanti utenti state parlando finchè non effettuerete delle verifiche sulle vostre statistiche.</p>
<p>Sicuramente questi dati sono molto più precisi delle statistiche globali, che essendo su grandi numeri e contesti diversi probabilmente non rappresentano il vostro caso.</p>
<p>Una volta verificati i numeri vi inviterei a valutare anche l&#8217;andamento delle visite degli utenti con IE6 da un anno fa ad oggi.</p>
<p>Sulla base di questi dati possiamo arrivare sicuramente ad almeno un paio di conclusioni:</p>
<p><strong>1) Gli attuali utenti con Internet Explorer 6 sono una minoranza</strong></p>
<p><strong>2) Gli attuali utenti con Internet Explorer 6 sono meno di un anno fa</strong></p>
<p>Queste sono realtà oggettive ricavabili dalle statistiche di qualunque sito web.</p>
<p>Perchè accade questo? Internet Explorer 6 è un browser obsoleto, uscito nel 2001 che ha visto alterni update fino al 2007/2008, da allora sono uscite 2 nuove versioni di questo browser e a breve ne vedremo una terza.Questo browser presenta innumerevoli problemi di sicurezza, performance e funzionalità, per questo motivo molte aziende quali Google hanno abbandonato il supporto a questo browser.</p>
<p>Per lo stesso motivo Microsoft sta portando avanti da tempo campagne a favore dell&#8217;aggiornamento a Internet Explorer 8.</p>
<p>Gli interventi necessari per il funzionamento delle attuali tecnologie su Internet Explorer 6 sono onerosi e in alcuni casi impossibili, richiedono lunghi tempi di produzione e di test, quindi grandi costi che potrebbero essere altrimenti destinati al miglioramento dell&#8217;accessibilità e dell&#8217;usabilità, all&#8217;ottimizzazione dei tempi di caricamento delle pagine e per i motori di ricerca che portano vantaggi concreti a tutta l&#8217;utenza del sito e non solo ad una minoranza in via d&#8217;estinzione.</p>
<p>Lavorare ad oggi per il supporto agli utenti di Internet Explorer 6 è di fatto uno spreco di tempo e risorse che non porta vantaggi a nessuno e rappresenta una completa opposizione al buon senso che attualmente caratterizza il mondo del web ed aziende del livello di Microsoft o Google.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.howtoweb.it/articoli/linutilita-di-sviluppare-per-internet-explorer-6/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Lezioni di HTML 5 Lezione 3 &#8211; Semantica</title>
		<link>http://www.howtoweb.it/articoli/lezioni-di-html-5-lezione-3-semantica/</link>
		<comments>http://www.howtoweb.it/articoli/lezioni-di-html-5-lezione-3-semantica/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 11:48:50 +0000</pubDate>
		<dc:creator>Mauro Accornero</dc:creator>
				<category><![CDATA[Articoli]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html 5]]></category>

		<guid isPermaLink="false">http://www.howtoweb.it/?p=615</guid>
		<description><![CDATA[
Nel precedente articolo abbiamo visto come utilizzare gli elementi semantici dell&#8217;HTML 5 nella nostra pagina web.
Oggi approfondiremo gli aspetti relativi alla semantica di questi tag.
Un principale vantaggio derivante dall&#8217;utilizzo di questi elementi è la standarizzazione degli elementi, ovvero a differenza dell&#8217;HTML 4.01 abbiamo una serie di elementi specifici da utilizzare per diverso scopo.
Questo di fatto [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-573" title="html5_lesson1" src="http://www.howtoweb.it/wp-content/uploads/2010/04/html5_lesson1.jpg" alt="" width="580" height="200" /></p>
<p><a title="nuovi tag html 5" href="http://www.howtoweb.it/articoli/lezione-di-html-5-lezione-2-usare-i-nuovi-tag/" target="_self">Nel precedente articolo</a> abbiamo visto come utilizzare gli elementi semantici dell&#8217;HTML 5 nella nostra pagina web.</p>
<p>Oggi approfondiremo gli aspetti relativi alla semantica di questi tag.</p>
<p>Un principale vantaggio derivante dall&#8217;utilizzo di questi elementi è la standarizzazione degli elementi, ovvero a differenza dell&#8217;HTML 4.01 abbiamo una serie di elementi specifici da utilizzare per diverso scopo.</p>
<p>Questo di fatto evita la definizione di div con classi ed id che risultano generici e variano a seconda delle abitudini di chi sviluppa la pagina.</p>
<p>Oltre a questo l&#8217;HTML 5 presenta un nuovo algoritmo per la definizione dell&#8217;outline del documento che modifica il normale modo di definire le intestazioni nel file html.</p>
<p>Facciamo un passo indietro, nell&#8217;HTML 4.01 l&#8217;unico modo per definire l&#8217;outline del documento è quello di utilizzare gli elementi h1/h6 con il rispettivo valore semantico.</p>
<p>Per esempio:</p>
<pre>&lt;h1&gt;Titolo del sito&lt;/h1&gt;
 &lt;h2&gt;sottotitolo del sito&lt;/h2&gt;</pre>
<pre>&lt;h3&gt;Titolo del post&lt;/h3&gt;
 &lt;h4&gt;Sottotitolo del post&lt;/h4&gt;</pre>
<pre>&lt;h3&gt;Titolo del post&lt;/h3&gt;
 &lt;h4&gt;Sottotitolo del post&lt;/h4&gt;</pre>
<p>Notate come h1 sia univoco nella pagina e rappresenti il titolo del sito, il sottotitolo del sito è definito con &lt;h2&gt;, mentre h3 e h4 rappresentano rispettivamente titolo e sottotitolo di una sezione/contenuto della pagina.</p>
<p>In HTML 5 possiamo modificare questa situazione come segue:</p>
<pre>&lt;header&gt;
 &lt;hgroup&gt;
 &lt;h1&gt;Titolo del sito&lt;/h1&gt;
 &lt;h2&gt;sottotitolo del sito&lt;/h2&gt;
 &lt;/hgroup&gt;
 &lt;/header&gt;</pre>
<pre>&lt;article&gt;
 &lt;hgroup&gt;
 &lt;h1&gt;Titolo del post&lt;/h1&gt;
 &lt;h2&gt;Sottotitolo del post&lt;/h2&gt;
 &lt;/hgroup&gt;
 &lt;/article&gt;</pre>
<pre>&lt;article&gt;
 &lt;hgroup&gt;
 &lt;h1&gt;Titolo del post&lt;/h1&gt;
 &lt;h2&gt;Sottotitolo del post&lt;/h2&gt;
 &lt;/hgroup&gt;
 &lt;/article&gt;</pre>
<p>Analizziamo nel dettaglio le differenze.</p>
<h3>L&#8217;elemento h1 si ripete</h3>
<p>Nell&#8217;HTML 5 l&#8217;utilizzo dell&#8217;elemento &lt;article&gt; definisce una sezione indipendente della pagina dove appunto posso riutilizzare l&#8217;elemento h1 dove avrà valore di titolo della sezione/contenuto e non della pagina.</p>
<h3>Utilizzo di hgroup</h3>
<p>L&#8217;utilizzo di hgroup ha lo scopo di raggruppare insieme intestazioni diverse, nel caso del primo elemento all&#8217;interno dell&#8217;header h1 avrà valore di titolo e h2 di sottotitolo, questo permette di utilizzare un&#8217;intestazione con valore associato ad altre intestazioni presenti in quel contesto senza che il significato venga mistificato da elementi uguali presenti sulla pagina.</p>
<p>Come abbiamo visto l&#8217;HTML 5 tratta diversamente la semantica degli elementi da altri linguaggi di markup ma offre indubbiamente una serie di vantaggi che rendono il codice molto più modulare e semantico.</p>
<p>Nel prossimo articolo vedremo come verificare il supporto delle funzionalità più avanzate dell&#8217;HTML5 sul browser dell&#8217;utente.</p>
<p>Passate a trovarmi come sempre su howtoweb.it o abbonatevi ai feed rss per rimanere aggiornati sugli ultimi articoli.</p>
<p>Alla prossima</p>
]]></content:encoded>
			<wfw:commentRss>http://www.howtoweb.it/articoli/lezioni-di-html-5-lezione-3-semantica/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Lezione di HTML 5 Lezione 2 &#8211; Usare i nuovi tag</title>
		<link>http://www.howtoweb.it/articoli/lezione-di-html-5-lezione-2-usare-i-nuovi-tag/</link>
		<comments>http://www.howtoweb.it/articoli/lezione-di-html-5-lezione-2-usare-i-nuovi-tag/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 05:00:29 +0000</pubDate>
		<dc:creator>Mauro Accornero</dc:creator>
				<category><![CDATA[Articoli]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html 5]]></category>

		<guid isPermaLink="false">http://www.howtoweb.it/?p=605</guid>
		<description><![CDATA[
Nella lezione precedente abbiamo visto come impostare il nostro file in HTML 5 definendo un doctype shorted, un corretto charset e gestendo css e javascript senza enunciazione del mime.
Oggi vedremo invece alcuni tag che utilizzeremo per definire il layout della nostra pagina web.
Prima di procedere, dobbiamo però risolvere un dubbio cruciale.
I nuovi elementi dell&#8217;HTML 5 [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-573" title="html5_lesson1" src="http://www.howtoweb.it/wp-content/uploads/2010/04/html5_lesson1.jpg" alt="" width="580" height="200" /></p>
<p>Nella lezione precedente abbiamo visto come impostare il nostro file in HTML 5 definendo un doctype shorted, un corretto charset e gestendo css e javascript senza enunciazione del mime.</p>
<p>Oggi vedremo invece alcuni tag che utilizzeremo per definire il layout della nostra pagina web.</p>
<p>Prima di procedere, dobbiamo però risolvere un dubbio cruciale.</p>
<h3>I nuovi elementi dell&#8217;HTML 5 sono supportati dai browser attuali?</h3>
<p>La maggior parte dei browser non incontriamo problemi nell&#8217;utilizzo di questi tag, normalmente il browser individua l&#8217;elemento lo aggiunge al DOM della pagina e gli attribuisce dei valori di default in base alle informazioni in suo possesso e nel caso possiamo sovrascrivere stili customizzati con un normale css.</p>
<p>La vera problematica è Internet Explorer che fino alla versione attuale (8) rappresenta l&#8217;elemento sconosciuto nel DOM come un nodo vuoto, rendendo impossibile definire un qualunque stile per l&#8217;elemento.</p>
<h3>La soluzione per Internet Explorer</h3>
<p>Prima di disperarci e tornare ad insultare per l&#8217;ennesima volta il browser di mamma Microsoft sappiate che esiste una soluzione molto semplice al problema.</p>
<p>Possiamo infatti pensare di creare un elemento sconosciuto a Internet Explorer prima della creazione del DOM.</p>
<p>Senza aggiungere l&#8217;elemento a mano nel codice possiamo utilizzare javascript per creare a priori l&#8217;elemento e permetter così di stilizzarlo con i css.</p>
<pre>&lt;script&gt;document.createElement("header");&lt;/script&gt;</pre>
<p>Per fare in modo che il workaround funzioni, è necessario mantenere lo script nell&#8217;head della pagina, una buona norma può essere quella di inserire lo script in un commento condizionale per IE.</p>
<pre>&lt;!--[if IE]&gt;
&lt;script&gt;document.createElement("header");&lt;/script&gt;
&lt;![endif]--&gt;</pre>
<p>Lo script creerà così un elemento &lt;header&gt; prima della creazione del DOM solo per IE, permettendo di stilizzare tale elemento con i css.</p>
<h3>Una scelta migliore,  HTML5 enabling script</h3>
<p>Considerato che i nuovi elementi dell&#8217;HTML 5 sono numerosi potremmo pensare di aggiungerli a mano ma una soluzione sicuramente più comoda e più sicura è rappresentata da questo <a title="HTML 5 Enabling script" href="http://remysharp.com/2009/01/07/html5-enabling-script/" target="_blank">script javascript di Remy Sharp</a> che oltre a velocizzare la realizzazione considera anche problematiche più peculiari come i css per la stampa dove i javascript non vengono eseguiti.</p>
<h3>Al markup!</h3>
<p>Ora che siamo certi di un funzionamento crossbrowser possiamo iniziare ad aggiungere qualche nuovo tag al nostro file.</p>
<h3>Header</h3>
<p>L&#8217;elemento &lt;header&gt; ha come scopo quello di racchiudere una porzione di codice che avrà ruolo di testata della pagina.</p>
<p>Per esempio</p>
<pre>&lt;header&gt;
&lt;!-- il logo ed eventuale intestazione al sito --&gt;
&lt;/header&gt;</pre>
<h3>Hgroup</h3>
<p>L&#8217;elemento &lt;hgroup&gt; racchiude una porzione di codice composta da intestazioni</p>
<pre>&lt;header&gt;
&lt;hgroup&gt;
&lt;h1&gt;Titolo del sito&lt;/h1&gt;
&lt;h2&gt;Sottotitolo&lt;/h2&gt;
&lt;/hgroup&gt;
&lt;/header&gt;</pre>
<h3>Article</h3>
<p>L&#8217;elemento &lt;article&gt; racchiude una porzione di codice semanticamente indipendente dal resto della pagina e sì possiamo utilizzarla al posto del solito &lt;div&gt; di wordpress :)</p>
<pre>&lt;article&gt;
&lt;header&gt;
&lt;hgroup&gt;
&lt;h1&gt;Titolo del sito&lt;/h1&gt;
&lt;h2&gt;Sottotitolo&lt;/h2&gt;
&lt;/hgroup&gt;
&lt;/header&gt;
&lt;/article&gt;</pre>
<h3>Time</h3>
<p>L&#8217;elemento &lt;time&gt; rappresenta una data di pubblicazione.</p>
<pre>&lt;time datetime="2010-04-21" pubdate&gt;21 Aprile 2009&lt;/time&gt;</pre>
<p>L&#8217;attributo datetime accetta sia date che in aggiunta l&#8217;ora in formato leggibile per la macchina</p>
<p>L&#8217;attributo pubdate determina a scelta la data di pubblicazione di un contenuto specifico (se all&#8217;interno di &lt;article&gt;) o la data di pubblicazione della pagina se lasciato all&#8217;esterno.</p>
<h3>Nav</h3>
<p>L&#8217;elemento &lt;nav&gt; specifica una porzione di codice destinato ala navigazione per esempio la lista di un menu.</p>
<pre>&lt;nav&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#"&gt;link&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#"&gt;link&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/nav&gt;</pre>
<h3>Aside</h3>
<p>L&#8217;elemento &lt;aside&gt; viene utilizzato per definire una porzione di codice destinata correlata al contenuto ma comunque separata come per esempio una sidebar</p>
<h3>Footer</h3>
<p>L&#8217;elemento &lt;footer&gt; definisce una porzione di codice che rappresenta di fatto il piede della pagina o del contenuto specifico.</p>
<pre>&lt;footer&gt;Make with love and HTML5!&lt;/footer&gt;
</pre>
<p>un esempio completo della pagina è il seguente.</p>
<pre>&lt;!doctype html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;titolo della pagina&lt;/title&gt;
&lt;meta charset=utf-8&gt;
&lt;!--[if IE]&gt;
&lt;script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"&gt;
&lt;/script&gt;
&lt;![endif]--&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;header&gt;
&lt;hgroup&gt;
&lt;h1&gt;Titolo del sito&lt;/h1&gt;
&lt;h2&gt;Sottotitolo del sito&lt;/h2&gt;
&lt;/hgroup&gt;
&lt;/header&gt;
&lt;nav&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#"&gt;link&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#"&gt;link&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/nav&gt;
&lt;article&gt;
&lt;header&gt;
&lt;hgroup&gt;
&lt;h1&gt;Titolo dell'articolo&lt;/h1&gt;
&lt;h2&gt;Sottotitolo dell'articolo&lt;/h2&gt;
&lt;/hgroup&gt;
&lt;/header&gt;
&lt;time datetime="2010-04-21" pubdate&gt;21 Aprile 2009&lt;/time&gt;
&lt;p&gt;Testo di prova&lt;/p&gt;
&lt;/article&gt;
&lt;aside&gt;contenuto relazionato ma indipendente&lt;/aside&gt;
&lt;footer&gt;Make with love and HTML 5&lt;/footer&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Un&#8217;ultima nota sui tag visti in questo articolo, la loro funzione è altamente semantica ed è quindi utile sapere come utilizzarli correttamente nel contesto specifico.<br />
Nel prossimo articolo parleremo della semantica nell&#8217;HTML 5 e dei cambiamenti che comporta.</p>
<p>Per oggi è tutto, tornate a trovarmi oppure abonatevi agli RSS per rimane aggornati sulle ultime novità.</p>
<p>Alla prossima!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.howtoweb.it/articoli/lezione-di-html-5-lezione-2-usare-i-nuovi-tag/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Importare dati da Excel a Mysql (compreso Wordpress)</title>
		<link>http://www.howtoweb.it/articoli/importare-dati-da-excel-a-mysql-compreso-wordpress/</link>
		<comments>http://www.howtoweb.it/articoli/importare-dati-da-excel-a-mysql-compreso-wordpress/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 05:00:32 +0000</pubDate>
		<dc:creator>Mauro Accornero</dc:creator>
				<category><![CDATA[Articoli]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.howtoweb.it/?p=586</guid>
		<description><![CDATA[
Normalmente un Cms è la soluzione più richiesta ed utilizzata nei progetti web, questo perchè permette una gestione facilitata dei contenuti anche per i non addetti ai lavori.
Questo tipo di soluzione ha però un rovescio della medaglia, per consentire l&#8217;aggiunta, la modifica e l&#8217;eliminazione dei contenuti questi sono gestiti singolarmente causando così evidenti rallentamenti nel [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-589" title="excel_to_database" src="http://www.howtoweb.it/wp-content/uploads/2010/04/excel_to_database.jpg" alt="" width="580" height="200" /></p>
<p>Normalmente un Cms è la soluzione più richiesta ed utilizzata nei progetti web, questo perchè permette una gestione facilitata dei contenuti anche per i non addetti ai lavori.</p>
<p>Questo tipo di soluzione ha però un rovescio della medaglia, per consentire l&#8217;aggiunta, la modifica e l&#8217;eliminazione dei contenuti questi sono gestiti singolarmente causando così evidenti rallentamenti nel caso sia necessario aggiungere una quantità considerevole e diversa di contenuti.</p>
<p>Per quanto sembri un problema da poco, rappresenta uno scoglio per ogni messa online, creato il sito e preparata la struttura normalmente ci si scontra con la triste realtà che scrivere testi richiede tempo, posticipando così il termine del progetto.</p>
<p>Come triste conseguenza ci si trova in ritardo rispetto alle scadenze ma con tutti i contenuti ancora da inserire ed un&#8217;ovvia lotteria per decidere chi dovrà farsi carico del lavoro di data entry.</p>
<p>In casi come questo l&#8217;unica soluzione intelligente che mi sento di suggerire è quella di suddividere il lavoro per renderlo più veloce e concludere quanto prima.</p>
<h3>Preparare il file Excel</h3>
<p>Un passo indispensabile per cercare di raggiungere il risultato è quella di richiede che i contenuti siano in qualche modo formattati, in modo che possano essere facilmente convertiti ed inseriti in modo massiccio.</p>
<p>Ad esempio, avere i contenuti del sito in un file excel già suddiviso in colonne è un grande vantaggio rispetto ad un file word.</p>
<h3>Esportare in CSV</h3>
<p>In questo modo è infatti possibile esportare il file in formato .csv che risulta più facile da importare nel database e di conseguenza nel sito che dobbiamo popolare di contenuti.</p>
<h3>Prima di procedere&#8230;</h3>
<p>E&#8217; opportuno fare una prova prima di intervenire su un sito online, create un backup dei files e del database, installate in locale modificando i parametri necessari e testate, anche in caso di test positivo salvate per precauzione una copia del database e dei files.</p>
<p>Nel caso sia una giornata sbagliata e per qualche motivo l&#8217;import non andasse a buon fine potete sempre ripristinare database e files e rimettere in piedi il sito in poco temo grazie ad una copia di backup.</p>
<h3>Importazione del CSV con phpmyadmin</h3>
<p><img class="alignnone size-full wp-image-590" title="phpmyadmin" src="http://www.howtoweb.it/wp-content/uploads/2010/04/phpmyadmin.jpg" alt="" width="580" height="260" /></p>
<p>Per procedere in questo modo esistono diversi modi, un approccio molto diretto ci viene fornito direttamente da phpmyadmin che permette di importare direttamente un file csv all&#8217;interno di una specifica tabella.</p>
<h3>Importazione del CSV con script PHP</h3>
<p><img class="alignnone size-full wp-image-591" title="php-csv-parser" src="http://www.howtoweb.it/wp-content/uploads/2010/04/php-csv-parser.jpg" alt="" width="580" height="260" /></p>
<p>Considerato che phpmyadmin è comunque un&#8217;applicazione scritta in php potremmo pensare di creare da zero uno script per l&#8217;importazione dei dati piuttosto che utilizzare uno script preconfezionato come ad esempio <a title="php csv parser" href="http://code.google.com/p/php-csv-parser/" target="_blank">php-csv-parser</a> che permette di inputare un file csv e di ottenere un array con i dati come output.</p>
<h3>Importazione del CSV su Wordpress</h3>
<p><img class="alignnone size-full wp-image-592" title="wordpress" src="http://www.howtoweb.it/wp-content/uploads/2010/04/wordpress.jpg" alt="" width="580" height="260" /></p>
<p>Nel caso in cui le vostre necessità siano più specifiche ed orientate all&#8217;import su un sito basato su wordpress consiglio <a title="wordpress csv importer" href="http://wordpress.org/extend/plugins/csv-importer/" target="_blank">csv importer</a>, un semplice plugin che facilita l&#8217;inserimento di articoli dal csv al database.</p>
<p>Le opzioni offerte facilitano l&#8217;importazione rintracciando automaticamente le categorie esistenti e creandone di nuove nel caso non esistano, oltre a questo è possibile limitare la ricerca ad una specifica categoria padre.Stesso discorso per l&#8217;autore, nel caso il dato sia omesso verrà utilizzato l&#8217;utente con il quale siete loggati.</p>
<p>Unici dati indispensabili per l&#8217;import sono a scelta il titolo, il contenuto o il contenuto estratto (excerpt per intenderci :) ).</p>
<p>L&#8217;unico passaggio fondamentale per un&#8217;importazione di successo dventa quindi la formattazione del csv che deve separare i vari articoli su più linee e i vari dati tra apici doppi separati da virgola.</p>
<p>Nel caso abbiate qualche dubbio riguardo a come formattare il vostro file csv vi consiglio di visionare il file sample.csv all&#8217;interno della cartella del plugin.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.howtoweb.it/articoli/importare-dati-da-excel-a-mysql-compreso-wordpress/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Lezioni di HTML 5 Lezione 1 &#8211; Impostare il file HTML</title>
		<link>http://www.howtoweb.it/tutorial/lezioni-di-html-5-lezione-1-impostare-il-file-html/</link>
		<comments>http://www.howtoweb.it/tutorial/lezioni-di-html-5-lezione-1-impostare-il-file-html/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 05:00:44 +0000</pubDate>
		<dc:creator>Mauro Accornero</dc:creator>
				<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.howtoweb.it/?p=568</guid>
		<description><![CDATA[
L&#8217;HTML 5 è ormai una realtà affermata, le attuali specifiche attendono solo gli ultimi commenti prima di essere dichiarate ufficiali e i browser già permettono un valido  supporto che permette di iniziare ad utilizzare parte delle features offerte da questo linguaggio per i propri progetti.
Vediamo quindi come iniziare ad impostare una pagina in HTML 5 [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-573" title="html5_lesson1" src="http://www.howtoweb.it/wp-content/uploads/2010/04/html5_lesson1.jpg" alt="" width="580" height="200" /></p>
<p>L&#8217;HTML 5 è ormai una realtà affermata, le attuali specifiche attendono solo gli ultimi commenti prima di essere dichiarate ufficiali e i browser già permettono un valido  supporto che permette di iniziare ad utilizzare parte delle features offerte da questo linguaggio per i propri progetti.</p>
<p>Vediamo quindi come iniziare ad impostare una pagina in HTML 5 per un eventuale sito web.</p>
<h3>Sintassi</h3>
<p>Per creare il nostro primo file HTML è sufficiente definire un nuovo file testuale con estensione .html o .htm, al suo interno possiamo iniziare a definire la struttura della nostra pagina.</p>
<pre>&lt;html&gt;
&lt;head&gt;&lt;/head&gt;
&lt;body&gt;&lt;/body&gt;
&lt;/html&gt;</pre>
<p>L&#8217;HTML 5 come tutti i linguaggi di marcatura ipertestuale presenta una struttura base racchiusa nell&#8217;elemento &lt;html&gt; con all&#8217;interno i due elementi &lt;head&gt; e &lt;body&gt; per una corretta suddivisione tra informazioni e contenuto.</p>
<h3>Il doctype</h3>
<p>Una delle caratteristiche più importanti dell&#8217;HTML 5 è lo shorten doctype o doctype dtdless</p>
<pre>&lt;!doctype html&gt;</pre>
<p>Questo doctype privo di indicazioni sul dtd o sul linguaggio utilizzato, forza automaticamente il browser in modalità standard senza l&#8217;aggiunta di ulteriore codice.<br />
Nonostante la sua semplicità vanta un ottimo supporto, non a caso è utilizzato da tempo sulla homepage di Google e da molti altri siti.</p>
<h3>Gli attributi</h3>
<p>Non vi sono grandi differenze negli attributi rispetto ad altre versioni dell&#8217;HTML. Per enunciare l&#8217;attributo è sufficiente utilizzare il nome seguito da un = e il valore. Nell&#8217;HTML 5 il valore dell&#8217;attributo può essere dichiarato a scelta senza apici, con apici singoli o apici doppi. Tuttavia il mio consiglio è quello di utilizzare sempre apici singoli o doppi per mantenere più ordinato il codice.</p>
<pre>&lt;html lang="it"&gt;</pre>
<h3>Dichiarazione del Charset</h3>
<p>Per la dichiarazione del charset della pagina è possibile utilizzare la classica sintassi:</p>
<pre id="line1">&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
</pre>
<p>o in alternativa una versione contratta altrettanto compatibile e funzionante</p>
<pre>&lt;meta charset="utf-8"&gt;</pre>
<p>In ogni caso è sempre opportuno (se non doveroso) esplicitare un charset valido per la pagina, possibilmente un UTF-8 piuttosto dell&#8217;ISO (questo per ragioni che in effetti sarebbe opportuno trattare in un altro post :) ).</p>
<h3>CSS e JAVASCRIPT</h3>
<p>Per il collegamento a risorse diverse dall&#8217;HTML, per esempio i javascript possiamo tranquillamente omettere l&#8217;attributo type.</p>
<pre>&lt;script&gt;
//script javascript interno
&lt;/script&gt;</pre>
<p>anche nel caso di javascript interni alla pagina</p>
<pre>&lt;script src="js/javascriptesterno.js"&gt;&lt;/script&gt;</pre>
<p>Stesso discorso vale per i fogli stile con l&#8217;aggiunta di un attributo rel che diventa fondamentale nel caso si utilizzi il tag link.</p>
<pre>&lt;link href="css/fogliodistileesterno.css" rel="stylesheet"&gt;</pre>
<p>Nel caso si utilizzi l&#8217;elemento style per definire fogli di stile interni, l&#8217;attributo rel non è necessario</p>
<pre>&lt;style&gt;
/*foglio di stile interno*/
&lt;/style&gt;</pre>
<p>Ed infine ecco il nostro file in HTML 5:</p>
<pre>&lt;!doctype html&gt;
&lt;html lang="it"&gt;
&lt;head&gt;
&lt;meta charset="utf-8"&gt;
&lt;title&gt;La mia prima pagina in HTML 5&lt;/title&gt;
&lt;link href="css/fogliodistileesterno.css" rel="stylesheet"&gt;
&lt;style&gt;
/*foglio di stile interno*/
&lt;/style&gt;
&lt;script src="js/javascriptesterno.js"&gt;&lt;/script&gt;
&lt;script&gt;
//script javascript interno
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Nel caso voleste fare un test, potete provare a validare il codice nel <a title="W3C VALIDATOR" href="http://validator.w3.org/" target="_blank">validatore w3c</a> per l&#8217;HTML 5. Il validatore  è ancora sperimentale ma è basato sulle attuali specifiche disponibili.</p>
<h3>E i nuovi tag? Canvas? Video?</h3>
<p>C&#8217;è molto da dire sull&#8217;HTML 5, per questioni pratiche ho pensato di suddividere i vari argomenti in più post, nei prossimi articoli vedremo come verificare la compatibilità del browser con le varie features dell&#8217;HTML 5,  i nuovi elementi messi a disposizione e il loro funzionamento,  semantica del linguaggio e altro ancora.<br />
Che dire&#8230; passate a trovarmi su <a title="Howtoweb.it" href="http://www.howtoweb.it" target="_self">howtoweb.it</a> oppure controllate i <a title="Howtoweb.it - Rss Feed" href="http://www.howtoweb.it/feed/" target="_blank">feed rss</a> per rimanere aggiornati sugli ultimi post.</p>
<p>Alla prossima!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.howtoweb.it/tutorial/lezioni-di-html-5-lezione-1-impostare-il-file-html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mercurial il nuovo Sistema di Controllo Versione User friendly</title>
		<link>http://www.howtoweb.it/risorse/mercurial-il-nuovo-sistema-di-controllo-versione-user-friendly/</link>
		<comments>http://www.howtoweb.it/risorse/mercurial-il-nuovo-sistema-di-controllo-versione-user-friendly/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 05:00:44 +0000</pubDate>
		<dc:creator>Mauro Accornero</dc:creator>
				<category><![CDATA[Risorse]]></category>

		<guid isPermaLink="false">http://www.howtoweb.it/?p=562</guid>
		<description><![CDATA[
Coloro che lavorano in team, si trovano spesso a dover sviluppare &#8220;a più mani&#8221; un progetto e saranno ormai abituati ad utilizzare un software di controllo versione per mantenere più versioni degli stessi file del progetto.
L&#8217;utilizzo di questi software permette di creare più &#8220;rami&#8221; contenenti i diversi files sviluppati da diverse persone, dando così la [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-563" title="mercurial" src="http://www.howtoweb.it/wp-content/uploads/2010/04/mercurial.jpg" alt="" width="580" height="150" /></p>
<p>Coloro che lavorano in team, si trovano spesso a dover sviluppare &#8220;a più mani&#8221; un progetto e saranno ormai abituati ad utilizzare un software di controllo versione per mantenere più versioni degli stessi file del progetto.</p>
<p>L&#8217;utilizzo di questi software permette di creare più &#8220;rami&#8221; contenenti i diversi files sviluppati da diverse persone, dando così la possibilità di sviluppare singolarmente una porzione del progetto ed unirla in seguito alle modifiche effettuate da altri.</p>
<p>Oltre a questo risulta vantaggioso mantenere le copie versionate dei files nel caso sia necessario recuperare una parte del lavoro fatto in precedenza.</p>
<p>A tanti vantaggi seguono però sempre delle controindicazioni, utilizzare un sistema di controllo versione rallenta di fatto il lavoro, imponendo alla normale produzione numerose pause per aggiornare, committare ed unire le diverse versioni dei files.</p>
<p>Una valida alternativa, a mio parere da provare è <a title="mercurial" href="http://mercurial.selenic.com/" target="_blank">Mercurial</a>, nuovo scm open source che permette un approccio più semplice e veloce rispetto ai tradizionali sistemi di controllo versione.</p>
<p>Tra le caratteristiche più interessanti c&#8217;è fatto di lavorare sempre su rami indipendenti in quanto vengono creati nuovi repository ogni volta che il progetto si divide in rami differenti. Il progetto viene infatti gestito per intero e non a cartelle permettendo di aggiornare localmente evitando l&#8217;unione di versioni differenti.</p>
<p>Nel caso siate abituati al altri sistemi di controllo versione potreste rimanere un po&#8217; disorientati da alcuni comandi (per un ripristino file si utilizza &#8220;revert&#8221; e non &#8220;update&#8221; per esempio) ma sul sito di mercurial trovate una <a title="Mercurial tutorial" href="http://mercurial.selenic.com/wiki/Tutorial" target="_blank">guida completa</a> ricca anche di contributi degli utenti.</p>
<p>Suggerisco vivamente la lettura di questo <a title="Mercurial tutorial" href="http://hginit.com/" target="_blank">simpatico tutorial creato da Joel Spolsky</a>, che personalmente ho trovato molto utile ma soprattutto molto divertente per gli esempi utilizzati.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.howtoweb.it/risorse/mercurial-il-nuovo-sistema-di-controllo-versione-user-friendly/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Migliorare i tempi di Rendering ottimizzando i selettori css</title>
		<link>http://www.howtoweb.it/articoli/migliorare-i-tempi-di-rendering-ottimizzando-i-selettori-css/</link>
		<comments>http://www.howtoweb.it/articoli/migliorare-i-tempi-di-rendering-ottimizzando-i-selettori-css/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 05:00:51 +0000</pubDate>
		<dc:creator>Mauro Accornero</dc:creator>
				<category><![CDATA[Articoli]]></category>

		<guid isPermaLink="false">http://www.howtoweb.it/?p=549</guid>
		<description><![CDATA[
Ottimizzare un sito web per migliorane i tempi di caricamento è una pratica ormai comune, ma questo rappresenta solo una parte del lavoro necessario per ridurre i tempi di attesa per l&#8217;utente.
Bisogna infatti ricordare, che le risorse che compongo una pagina web, oltre ad essere richieste al server e poi ricevute sulla macchina dell&#8217;utente devono [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-551" title="css_rendering_performance" src="http://www.howtoweb.it/wp-content/uploads/2010/04/css_rendering_performance.jpg" alt="css_rendering_performance" width="580" height="127" /></p>
<p>Ottimizzare un sito web per migliorane i tempi di caricamento è una pratica ormai comune, ma questo rappresenta solo una parte del lavoro necessario per ridurre i tempi di attesa per l&#8217;utente.</p>
<p>Bisogna infatti ricordare, che le risorse che compongo una pagina web, oltre ad essere richieste al server e poi ricevute sulla macchina dell&#8217;utente devono in seguito essere renderizzate nel browser.</p>
<p>Di questo compito si occupa il motore di rendering del browser che andrà ad applicare i fogli di stile alla pagina caricata. Questa operazione di fatto utilizza le risorse macchina dell&#8217;utente e può essere rallentata dalla scarsa disponibilità di ram  al momento del rendering, oltre a ciò i tempi variano a seconda della complessità del sito e del software utilizzato.</p>
<p>Diventa quindi utile capire come ottimizzare i tempi di rendering della pagina attraverso una più attenta compilazione dei fogli di stile.</p>
<h3>Come vengono letti i selettori css</h3>
<p>Il motore di rendering legge i selettori css da destra verso sinistra, partendo dal primo selettore cerca un riscontro nella pagina HTML se non rintraccia l&#8217;elemento specifico passa al selettore successivo fino a che non rintraccia l&#8217;elemento su cui applicare la regola.</p>
<p>Prendiamo per esempio</p>
<pre>#menu li a{...}</pre>
<p>Il motore di rendering cercherà prima di tutto il selettore a (il primo selettore viene definito &#8220;chiave&#8221; o &#8220;key&#8221;), dopo cercherà il genitore li fino a che non trova riscontro nell&#8217;elemento menu.</p>
<p>Sulla base di quanto detto possiamo definire delle metodologie per ottimizzare i tempi di rendering dei fogli di stile</p>
<h3>Eliminare le regole non necessarie</h3>
<p>Se esistono regole che non vengono applicate ad alcun elemento è meglio eliminarle, anche se la regola non viene applicata il motore effettua comunque una ricerca dell&#8217;elemento gravando sui tempi di rendering. Oltre a questo non bisognerebbe mai tenere codice superfluo nei files,  questo aumenta inutilmente il peso del file e rende più complesso il mantenimento e la compilazione.</p>
<h3>Non utilizzare il selettore universale *</h3>
<p>Il selettore universale * seleziona tutti gli elementi presenti sulla pagina, è normalmente utilizzato per le regole di formattazione.</p>
<pre>*{margin:0;padding:0;}</pre>
<p>Considerato che non tutti gli elementi html hanno un valore di default per margine e padding  e che difficilmente si utilizzano tutti gli elementi HTML in una singola pagina, sarebbe utile specificare in altro modo questa regola evitando una così vasta ricerca al motore di rendering.</p>
<pre>h1,h2,h3,h4,h5,h6,p,
form,fieldset,label,input,textarea,select,button,
ul,ol,dl,dd,li{margin:0;padding:0;}</pre>
<p>Questa regola  formatta margine e padding per intestazioni, paragrafi, form, elementi del form e liste con maggiore specificità e minore dispendio di risorse.</p>
<h3>Limitare la discendenza</h3>
<p>Specificare una discendenza prolissa per una regola può essere utile in alcuni contesti per gestire la gerarchia delle regole, ma nella norma è possibile evitarlo.</p>
<p>Prendiamo per esempio</p>
<pre>body #content #menu li a{...}</pre>
<p>Essendo #menu un id, quindi un elemento univoco sulla pagina è possibile semplificare la regola in questo modo</p>
<pre>#menu li a{...}</pre>
<p>Ottimizzando così i tempi di ricerca dell&#8217;elemento da parte del motore di rendering</p>
<h3>Evitare espressioni ricorsive</h3>
<p>Quando si utilizzano classi e id si specificano implicitamente un gruppo di tag o un tag specifico rendendo così superflua una definizione del selettore tag</p>
<p>ad esempio</p>
<pre>div#menu{...}</pre>
<pre>li.selected{...}</pre>
<p>sono chiaramente ricorsivi e possono essere ottimizzati come segue</p>
<pre>#menu{...}</pre>
<pre>.selected{...}</pre>
<h3>Limitare l&#8217;utilizzo di :hover all&#8217;elemento &lt;a&gt;</h3>
<p>E&#8217; noto come l&#8217;utilizzo della pseudoclasse :hover su elementi diversi da &lt;a&gt; non sia supportato da Internet Explorer in assenza di un doctype strict e causa notevoli rallentamenti anche in presenza di questo specifico doctype.</p>
<p>Una  valida alternativa  è rappresentata dalla trasformazione dell&#8217;elemento &lt;a&gt; in elemento di blocco per una più semplice gestione da css.</p>
<pre>a{display:block;width:100px;height:100px;padding:5px;background:#000;}
a:hover{background:#c00;}</pre>
<h3>Specificare&#8230;sempre!</h3>
<p>Ottimizzare il rendering del css è più una metodologia che non una serie di soluzioni standard, i selettori hanno specificità diversa e questo riduce o aumenta i tempi di rcerca del motore di rendering della pagina.</p>
<p>Per esempio gli ID sono elementi univoci e in quanto tali hanno tempi di ricerca più ridotti di tutti gli altri selettori.</p>
<p>Le classi rappresentano gruppi di elementi, sono meno performanti degli ID ma più dei selettori tag.</p>
<p>I tag sono selettori meno specifici perchè si riferiscono a tutti i tag di quel tipo presenti sulla pagina.</p>
<p>I selettori fratello (+) o figlio (-) sono meno vantaggiosi di una classe o un id ma più vantaggiosi di un selettore tag perchè riducono la ricerca del motore a due elementi (il selettore e l&#8217;eventuale padre o fratello).</p>
<p>Sulla base di quanto detto potremmo pensare di rivedere per esempio la nostra regola di formattazione vista in precedenza da così:</p>
<pre>h1,h2,h3,h4,h5,h6,p,
form,fieldset,label,input,textarea,select,button,
ul,ol,dl,dd,li{margin:0;padding:0;}</pre>
<p>a così</p>
<pre>.format{margin:0;padding:0;}</pre>
<p>Modificando così la regola la ricerca viene limitata ad un gruppo più ristretto di elementi e la lunghezza della regola nel css viene ridotta.</p>
<p>Non a caso rintracciamo soluzioni analoghe in script molto utilizzati come ad esempio jquery ui che utilizza una classe .ui-helper-reset per la formattazione degli elementi.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.howtoweb.it/articoli/migliorare-i-tempi-di-rendering-ottimizzando-i-selettori-css/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
