<?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>davideferrero.com &#187; Programmazione</title>
	<atom:link href="http://blog.davideferrero.com/tag/programmazione/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.davideferrero.com</link>
	<description>&#62; Web developer for passion</description>
	<lastBuildDate>Sun, 13 Nov 2011 15:55:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Riempire dinamicamente una jTable in Java</title>
		<link>http://blog.davideferrero.com/2010/07/usare-jtable-in-java-esempi/</link>
		<comments>http://blog.davideferrero.com/2010/07/usare-jtable-in-java-esempi/#comments</comments>
		<pubDate>Sat, 10 Jul 2010 17:27:16 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Utility]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[jTable]]></category>
		<category><![CDATA[Programmazione]]></category>

		<guid isPermaLink="false">http://blog.davideferrero.com/?p=465</guid>
		<description><![CDATA[Ultimamente sto utilizzando intensamente Java per lavoro. Sto realizzando un gestionale abbastanza corposo, dove ho potuto sperimentare diverse cose interessanti. Nel disegnare le interfacce, uno degli oggetti che sto trovando sempre più utile, è la jTable, nient&#8217;altro che una semplice tabella (la vecchia DataGrid di visual basic). Inizialmente avevo trovato un po&#8217; ostico capire come [...]]]></description>
			<content:encoded><![CDATA[<p>Ultimamente sto utilizzando intensamente Java per lavoro. Sto realizzando un gestionale abbastanza corposo, dove ho potuto sperimentare diverse cose interessanti.</p>
<p>Nel disegnare le interfacce, uno degli oggetti che sto trovando sempre più utile, è la jTable, nient&#8217;altro che una semplice tabella (la vecchia DataGrid di visual basic). Inizialmente avevo trovato un po&#8217; ostico capire come funzionasse, nonostante ci fossero parecchi esempi che danno molti consigli su come usarle. Una delle pagine di esempi più complete è questa <a title="Esempi di utilizzo di una jTable" href="http://download.oracle.com/docs/cd/E17409_01/javase/tutorial/uiswing/components/table.html" target="_blank">sul sito oracle</a>.</p>
<p>Voglio però spendere qualche riga per spiegare come poter facilmente caricare una jTable leggendo i dati da un resultset o da un elenco qualsiasi.</p>
<p>Penso che il concetto più semplice per utilizzare al meglio le jTable sia implementare una List&lt;T&gt; (dove T può essere un array di Object o di String o una vostra classe personale, fate voi) con una ArrayList o una LinkedList. Questa lista terrà aggiornata la jTable.</p>
<p>Personalmente creo sempre un metodo che chiamo &#8220;refreshTable&#8221; che legge i dati dalla lista e li inserisce nella tabella. Il metodo non farà altro che usare un iteratore per scorrere la lista e creare una matrice di Object da passare alla nostra jTable per riempirla.</p>
<pre class="brush: java; title: ;">
        //Creo array di intestazioni
        String [] headers=this.getTableHeaders();
        //Creo matrice di dati
        Object[][] data=new Object[this.lista.size()][headers.length];
        int i=0;
        for(Iterator&lt;String[]&gt; it=lista.iterator();it.hasNext();){
            String[] tmp=it.next();
            for(int j=0;j&lt;tmp.length;j++){
                data[i][j]=tmp[j];
            }
            i++;
        }
        //Setto dati e intestazioni della tabella
        this.myJTable.setModel(new javax.swing.table.DefaultTableModel(data, headers){@Override public boolean isCellEditable(int rowIndex, int mColIndex) { return false; }});
        //Setto larghezza colonne
        this.setTableCellsSize(this.myJTable);
        //Imposto allinamento delle celle al centro
        DefaultTableCellRenderer renderer=new DefaultTableCellRenderer();
        renderer.setHorizontalAlignment(DefaultTableCellRenderer.CENTER);
        this.myJTable.setDefaultRenderer(this.myJTable.getColumnClass(0), renderer);
        this.myJTable.updateUI();
</pre>
<p>Così facendo abbia riempito la nostra jTable. Il metodo che fa ciò è il setModel(), al quale io passo sempre una matrice di Object che contiene i dati veri e propri e un array di String che contiene le intestazioni della tabella (che leggo dal mio metodo this.getTableHeaders() ). Oltre a questo ho creato un metodo (this.setTableCellsSize() ) che imposta la larghezza delle varie colonne della tabella:</p>
<pre class="brush: java; title: ;">
        int prefWidth=(this.getWidth()/2)/(this.getHeadersTable()).length;
        tbl.setAutoResizeMode(jTable.AUTO_RESIZE_OFF);

        tbl.getColumnModel().getColumn(0).setPreferredWidth(prefWidth+20);
        tbl.getColumnModel().getColumn(1).setPreferredWidth(prefWidth+100);
        tbl.getColumnModel().getColumn(2).setPreferredWidth(prefWidth+20);
        tbl.getColumnModel().getColumn(3).setPreferredWidth(prefWidth-30);
        tbl.getColumnModel().getColumn(4).setPreferredWidth(prefWidth+20);
        tbl.getColumnModel().getColumn(5).setPreferredWidth(prefWidth+20);
        tbl.getColumnModel().getColumn(6).setPreferredWidth(prefWidth-20);
        tbl.getColumnModel().getColumn(7).setPreferredWidth(prefWidth+20);
</pre>
<p>Nelle ultime righe ho invece dichiarato un Renderer per settare l&#8217;allineamento al centro delle celle della jTable.</p>
<p>Prestate attenzione alla linea dove viene eseguita la setModel(): qui ho riscritto il metodo isCellEditable, in modo che restituisca sempre false. Così facendo qualsiasi cella della nostra jTable non potrà essere editata.</p>
<p>Se vi servissero esempi più dettagliati (ad esempio per inserire delle checkbox in una delle colonne o per aprire menu al pressione del tasto destro del mouse sulla tabella) fate un fischio! ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2010/07/usare-jtable-in-java-esempi/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Javatar!</title>
		<link>http://blog.davideferrero.com/2010/06/java-vs-microsoft-net-javatar/</link>
		<comments>http://blog.davideferrero.com/2010/06/java-vs-microsoft-net-javatar/#comments</comments>
		<pubDate>Sat, 26 Jun 2010 17:26:25 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[Divertimento]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Risate]]></category>

		<guid isPermaLink="false">http://blog.davideferrero.com/?p=453</guid>
		<description><![CDATA[Ho trovato oggi su facebook questo fantastico trailer, e non vedo l&#8217;ora di andarlo a vedere al cinema! Chi viene? :-P]]></description>
			<content:encoded><![CDATA[<p>Ho trovato oggi su facebook questo fantastico trailer, e non vedo l&#8217;ora di andarlo a vedere al cinema! Chi viene? :-P</p>
<p align="center"><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/C-m4Htab1_E&amp;hl=it_IT&amp;fs=1?color1=0x3a3a3a&amp;color2=0x999999"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/C-m4Htab1_E&amp;hl=it_IT&amp;fs=1?color1=0x3a3a3a&amp;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2010/06/java-vs-microsoft-net-javatar/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Software</title>
		<link>http://blog.davideferrero.com/software/</link>
		<comments>http://blog.davideferrero.com/software/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 00:00:31 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[Senza categoria]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Interfaccia DB per PHP]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Sellbook]]></category>

		<guid isPermaLink="false">http://blog.davideferrero.com/?page_id=348</guid>
		<description><![CDATA[Ecco la sezione del mio blog dedicata ai miei software. Al momento ho rilasciato due progetti: Sellbook (tesi di laurea) Interfaccia Db per PHP (in fase di sviluppo) Tutti questi progetti sono rilasciati sotto licenza Creative Commons &#8220;Attribuzione-Condividi allo stesso modo 2.5 Italia&#8221;]]></description>
			<content:encoded><![CDATA[<p>Ecco la sezione del mio blog dedicata ai miei software.</p>
<p>Al momento ho rilasciato due progetti:</p>
<ul>
<li><a href="http://sbook.appspot.com/" target="_blank">Sellbook</a> (tesi di laurea)</li>
<li><a href="http://blog.davideferrero.com/?page_id=352" target="_self">Interfaccia Db per PHP</a> (in fase di sviluppo)</li>
</ul>
<p>Tutti questi progetti sono rilasciati sotto licenza Creative Commons &#8220;Attribuzione-Condividi allo stesso modo 2.5 Italia&#8221;</p>
<p style="text-align: center;"><a rel="license" href="http://creativecommons.org/licenses/by-sa/2.5/it/"><img class="aligncenter" style="border-width: 0px;" src="http://creativecommons.org/images/public/somerights20.png" alt="Creative Commons License" width="88" height="31" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nato di domenica&#8230;</title>
		<link>http://blog.davideferrero.com/2009/11/nato-di-domenica/</link>
		<comments>http://blog.davideferrero.com/2009/11/nato-di-domenica/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 16:23:35 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Web Developer]]></category>

		<guid isPermaLink="false">http://blog.davideferrero.com/?p=244</guid>
		<description><![CDATA[Ho scoperto oggi un trick davvero interessante, che permette in php di creare delle variabili con nomi dinamici&#8230; :-O Cosa vorra mai dire tutto ciò? Semplice: Se io voglio che una variabile prenda il nome del contenuto di un&#8217;altra variabile, posso farlo così: $a=&#34;pippo&#34;; ${$a}=&#34;pluto&#34;; echo $pippo;//a video verrà visualizzato: pluto Mi sono trovato di [...]]]></description>
			<content:encoded><![CDATA[<p>Ho scoperto oggi un <em>trick</em> davvero interessante, che permette in php di creare delle variabili con nomi <em>dinamici</em>&#8230; :-O Cosa vorra mai dire tutto ciò? Semplice:<br />
Se io voglio che una variabile prenda il nome del contenuto di un&#8217;altra variabile, posso farlo così:</p>
<pre class="brush: php; title: ;">$a=&quot;pippo&quot;;
${$a}=&quot;pluto&quot;;
echo $pippo;//a video verrà visualizzato: pluto</pre>
<p>Mi sono trovato di fronte a questo problema, quando stamattina dovevo leggere dei records da un db, e creare delle variabili che si chiamassero come i campi del db.</p>
<p>Siccome sono pigro (e da qui il titolo di questo post, infatti mio papà dice che sono nato di domenica :-P), per semplificarmi la vita i campi letti dal db sono all&#8217;interno di un array associativo del tipo <em>$array[0]['campodb']</em> e scorro i risultati con un:</p>
<pre class="brush: php; title: ;">foreach(array_keys($array[0]) as $k){ ... }</pre>
<p>Quindi sfruttando questa piccola scoperta in poche righe mi sono letto i valori dal db e creato le variabili contenenti i valori letti dal db.</p>
<p>Il codice finito risulta una cosa del tipo:</p>
<pre class="brush: php; title: ;">
$q=&quot;SELECT campo1,campo2,...,campo20 FROM tabella WHERE condizioni&quot;;
$db-&gt;query($q); /**/
if($db-&gt;numRows&gt;0){
   foreach(array_keys($db-&gt;rows[$i]) as $k){
      ${$k}=$db-&gt;rows[$i];
   }
}
</pre>
<p>Alla fine della fiera avrò una variabile per ogni campo presente nella <em>SELECT</em> con all&#8217;interno il valore letto dal db ($campo1, $campo2, &#8230; , $campo20).<br />
In alternativa qui sotto ci sono alcuni esempi dell&#8217;utilizzo di questa features in php (direttamente da <a href="http://www.php.net/manual/en/language.variables.variable.php#75669" target="_blank">php.net</a>)</p>
<pre class="brush: php; title: ;">
define('ONE', 1);
function one() {
    return 1;
}
$one = 1;

${&quot;foo$one&quot;} = 'foo';
echo $foo1; // foo
${'foo' . ONE} = 'bar';
echo $foo1; // bar
${'foo' . one()} = 'baz';
echo $foo1; // baz
</pre>
<p>Sapevate già tutto? D&#8217;oh! Sono sempre l&#8217;ultimo a scoprire le cose interessanti! ;-(<br />
[ad]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2009/11/nato-di-domenica/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Indici Full Text in MySQL</title>
		<link>http://blog.davideferrero.com/2009/10/indici-full-text-in-mysql/</link>
		<comments>http://blog.davideferrero.com/2009/10/indici-full-text-in-mysql/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 21:33:58 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Algoritmi]]></category>
		<category><![CDATA[DB]]></category>
		<category><![CDATA[Full Text]]></category>
		<category><![CDATA[Indici]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmazione]]></category>

		<guid isPermaLink="false">http://blog.davideferrero.com/?p=217</guid>
		<description><![CDATA[Post da nerd, astenersi perditempo&#8230; :-P [NERD MODE ON] Alcuni giorni fa sul lavoro mi sono cimentato in un nuovo esperimento. Tutto è partito dal problema di dover indicizzare dei contenuti, sui quali poi eseguira una ricerca &#8220;generica&#8221; in stile google (ovvero un unico campo che riceve un insieme di parole, che possono corrispondere a [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter" title="Php MySQL" src="http://lh5.ggpht.com/__IYVAt3JPe8/SuIPro8wh8I/AAAAAAAABys/XcqeHmFBZmY/s800/hosting-php-mysql.jpg" alt="" width="333" height="225" /></p>
<p>Post da <em>nerd</em>, astenersi perditempo&#8230; :-P</p>
<p><strong>[NERD MODE ON]</strong></p>
<p>Alcuni giorni fa sul lavoro mi sono cimentato in un nuovo esperimento.</p>
<p>Tutto è partito dal problema di dover indicizzare dei contenuti, sui quali poi eseguira una ricerca &#8220;generica&#8221; in stile google (ovvero un unico campo che riceve un insieme di parole, che possono corrispondere a diversi campi del db).</p>
<p>Bene non voglio stare qui a spiegare nei dettagli la soluzione che abbiamo deciso di adottare, ma in sostanza mi sono ritrovato con un campo testuale con dentro tutte le parole che corrispondono ad una chiave.</p>
<p>Ok, e ora? L&#8217;idea iniziale è stata quella di eseguire una query con &#8221; <em>LIKE &#8216;%parola%&#8217; </em>&#8221; in <em>OR</em> con altre <em>LIKE</em> simili, per ogni parola inserita dall&#8217;utente. Una volta implementata, tutto funzionava (avevo 3 record in quella tabella). Siccome per scrupolo avevo anche implementato un timer che misurasse il tempo di esecuzione, ho provato a fare un test <strong>pesante</strong>&#8230; Con python mi sono creato un programma per scrivere su file qualche centinaia di query di inserimento su quella tabella, lo eseguo e popolo il db. Ora ci sono 1000 record (non sono ancora abbastanza ma rende già l&#8217;idea), rilancio la ricerca e il timer segna 0,3 secondi. Buono no? sì ma sono 1000 record, se mai i record dovessero essere 100K o ancora di più? Mmm non mi soddisfa questa cosa. *Googleing*&#8230;.*Googleing*&#8230;.*Googleing* <strong>FULL TEXT INDEX</strong></p>
<p>Cos&#8217;è? In <a href="http://www.mysql.it" target="_blank">MySQL</a> è possibile definire su un campo di una tabella, un indice FULL TEXT, ovvero una struttura che indicizza in maniera ottimale tutte le parole presenti in uno o più campi. Ci sono <em>alcune restrizioni</em> però. Quella più importante è che la tabella non può essere creata con il motore InnoDB (il più comune perchè supporta query multiple in una singola transazione). Inoltre le stringhe da cercare con le query dovranno avere più di 3 caratteri (altrimenti bisogna andare a modificare le impostazioni di MySQL, cosa impossibile se non si ha accesso al server, e comunque relativamente complicata da fare).</p>
<p>Detto ciò i passi da fare sono i seguenti:<br />
<em> Definiamo la tabella e l&#8217;indice:</em></p>
<pre class="brush: sql; title: ;">CREATE TABLE test (
id INT UNSIGNED   AUTO_INCREMENT NOT NULL PRIMARY KEY,
keywords TEXT,
[keywords2] VARCHAR(255),
FULLTEXT (keywords[,keywords2])
);</pre>
<p>[Tra le parentesi quadre ho messo il secondo campo, spero si capisca che è opzionale...]</p>
<p>Fatto questo e dopo aver popolato la tabella, possiamo provare la nostra ricerca con la seguente query:</p>
<pre class="brush: sql; title: ;">SELECT * FROM test WHERE MATCH(keywords) AGAINST('pippo')</pre>
<p>In questo modo andremo a dire a MySQL di cercarci l&#8217;esatta parola &#8216;pippo&#8217; all&#8217;interno del campo keywords.</p>
<p>Una cosa che non si trova facilmente nelle guide che ho seguito (ho fatto perciò riferimento alla documentazione ufficiale di MySQL) è che così facendo si effettua una ricerca in <em>linguaggio naturale</em>, che è ottimale per indicizzare frasi di senso (più o meno) compiuto. Il &#8220;difetto&#8221; se può definirsi così, è che con questo tipo di ricerca alcune parole non verranno trovate, infatti MySQL utilizza un array di <em>stopwords</em> che verranno saltate a piè pari dalla ricerca. Per effettuare una ricerca su tutte le parole e utilizzando operatori logici (ad esempio &#8220;+&#8221; significa OR mentre &#8220;-&#8221; esclude la parole che segue questo simbolo) bisogna effettuare una ricerca IN BOOLEAN MODE, più lenta, ma più efficace. La nostra query dovrà quindi essere modificata in:</p>
<pre class="brush: sql; title: ;">SELECT * FROM test WHERE MATCH(keywords) AGAINST('*pippo*,*pluto*' IN BOOLEAN MODE)</pre>
<p>In questo modo si effettua una ricerca all&#8217;interno del campo keywords, delle parole che contengono al loro interno &#8220;pippo&#8221; o &#8220;pluto&#8221;. Il carattere &#8220;*&#8221; funziona un po&#8217; come il &#8220;%&#8221; nelle <em>LIKE</em>.</p>
<p>A questo punto manca un ultima chicca. La funzione MATCH (..) AGAINST(..) ritorna un valore che rappresenta la pertinenza delle parole cercate nel campo. Nel BOOLEAN MODE sarà il numero di parole trovate nel campo, mentre con la ricerca in linguaggio naturale ci sarà un algoritmo che calcola la pertinenza con delle regole <em>strane</em> ma che funzionano ;)</p>
<p>Quindi per sfruttare al massimo questo algoritmo bisognerà scrivere la query con:</p>
<pre class="brush: sql; title: ;">SELECT *, MATCH(keywords) AGAINST('*pippo*,*pluto*' IN BOOLEAN MODE) as pertinenza FROM test WHERE MATCH(keywords) AGAINST('*pippo*,*pluto*' IN BOOLEAN MODE) ORDER BY pertinenza DESC</pre>
<p>Così facendo ordiniamo i risultati dal più pertinente, a quello meno.</p>
<p>Risultato? sui miei 1000 records il tempo si è dimezzato, nel caso peggiore&#8230; Risultato accettabile no? :-)</p>
<p>Non vi resta che provare per credere, buon divertimento!</p>
<p><strong>[NERD MODE OFF]</strong><br />
[ad#ad-1]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2009/10/indici-full-text-in-mysql/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>jQuery User Interface: interfacce utente in javascript!</title>
		<link>http://blog.davideferrero.com/2009/10/jquery-user-interface-interfacce-utente-in-javascript/</link>
		<comments>http://blog.davideferrero.com/2009/10/jquery-user-interface-interfacce-utente-in-javascript/#comments</comments>
		<pubDate>Sat, 17 Oct 2009 16:06:45 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jquery ui]]></category>
		<category><![CDATA[Programmazione]]></category>

		<guid isPermaLink="false">http://blog.davideferrero.com/?p=197</guid>
		<description><![CDATA[Intanto benvenuti a tutti nel mio nuovo-vecchio blog. Ho solamente cambiato indirizzo, mantenendo tutto il vecchio blog e cambiando la veste grafica&#8230; Un piccolo aggiornamento contro la noia, insomma! ;-) Detto ciò in per inaugurare davideferrero.com, voglio portarvi a conoscenza di un tool molto utile, se non lo conoscete ancora. Come tutti ormai sapete (non [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://jqueryui.com/"><img class="aligncenter" title="jQuery UI" src="http://lh6.ggpht.com/__IYVAt3JPe8/StnnvNAEqcI/AAAAAAAABxE/oOQhPm8QVIQ/s800/jqueryUI.gif" alt="" width="235" height="55" /></a></p>
<p>Intanto benvenuti a tutti nel mio nuovo-vecchio blog. Ho solamente cambiato indirizzo, mantenendo tutto il vecchio blog e cambiando la veste grafica&#8230; Un piccolo aggiornamento contro la noia, insomma! ;-)</p>
<p>Detto ciò in per inaugurare <a href="http://www.davideferrero.com" target="_self">davideferrero.com</a>, voglio portarvi a conoscenza di un tool molto utile, se non lo conoscete ancora.</p>
<p>Come tutti ormai sapete (non lo sapete? <a href="http://blog.davideferrero.com/?s=jquery" target="_self">sapevatelo</a> :-P ) sono fan e infognato (leggi &#8220;addicted&#8221; che fa più figo) di jQuery, un javascript framework molto intuitivo, semplice e abbastanza leggero per animare e migliorare le proprio pagine web.</p>
<p>Bene, usando un po&#8217; jQuery noterete subito di aver bisogno di interfacce grafiche per l&#8217;utente, ad esempio per una scelta di date (ne avevo già parlato <a href="http://blog.davideferrero.com/?p=108" target="_self">qui</a>) o per creare dei blocchi trascinabili (<a href="http://jqueryui.com/demos/draggable/" target="_blank">drag&amp;drop</a>), <a href="http://jqueryui.com/demos/progressbar/" target="_blank">barre di caricamento</a>, pulsanti &#8220;<a href="http://jqueryui.com/demos/slider/" target="_blank">slider</a>&#8221; o dei <a href="http://jqueryui.com/demos/tabs/" target="_blank">tabs</a>&#8230; Ok, con jQuery UI tutto ciò è possibile, potete crearvi il vostro tema personalizzato scegliendo i colori e le caratteristiche dei vari oggetti e scaricarvi i file (javascript, css e immagini), personalizzandovi il pacchetto di download con solo gli oggetti di cui avete bisogno. Per tutte le personalizzazioni dei vari gadget, troverete un&#8217;<a href="http://jqueryui.com/demos/" target="_blank">ampia documentazione</a> che vi aiuterà nel caso aveste problemi a farli funzionare.</p>
<p>Appena pubblicheremo il progetto a cui sto ancora lavorando in ufficio, potrete vedere all&#8217;opera alcune di queste <em>UI</em>&#8230; a presto per i prossimi aggiornamenti su questo argomento!</p>
<p>PS: aggiornate il <a href="http://blog.davideferrero.com/?feed=rss2" target="_self">feed rss</a> facendolo puntare al nuovo indirizzo se non lo avete ancora fatto, ma soprattutto se vi eravate abbonati a quello vecchio&#8230; Se invece non lo avevate aggiunto tra i vostri preferiti, avete un motivo in più per farlo ora! ;-)<br />
[ad#ad-1]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2009/10/jquery-user-interface-interfacce-utente-in-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web &amp; Flash: risolvere tutti i problemi di compatibilità</title>
		<link>http://blog.davideferrero.com/2009/09/webflash-risolvere-tutti-i-problemi-di-compatibilita/</link>
		<comments>http://blog.davideferrero.com/2009/09/webflash-risolvere-tutti-i-problemi-di-compatibilita/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 21:05:14 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Programmazione]]></category>

		<guid isPermaLink="false">http://ilferre.setupstat.com/?p=164</guid>
		<description><![CDATA[Come spiega il titolo, in questi giorni, ho avuto qualche piccolo problema nell&#8217;embedding di oggetti flash in alcune pagine web a cui stavo lavorando. Chiunque si sia cimentato, anche solo per poco, nel mestiere del web developer, avrà certamente incontrato problemi nel rendere uguale per tutti i browser le pagine web. Con quasi tutti i [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/p/swfobject/"><img class="aligncenter" title="Swfobject" src="http://www.bobbyvandersluis.com/swfobject/img/swfobject_logo.gif" alt="" width="418" height="106" /></a></p>
<p>Come spiega il titolo, in questi giorni, ho avuto qualche piccolo problema nell&#8217;embedding di oggetti flash in alcune pagine web a cui stavo lavorando.</p>
<p>Chiunque si sia cimentato, anche solo per poco, nel <em>mestiere</em> del web developer, avrà certamente incontrato problemi nel rendere <em>uguale</em> per tutti i browser le pagine web. Con quasi tutti i browser, le pagine vengono renderizzate in un certo modo, mentre con <a href="http://www.microsoft.com/italy/windows/products/winfamily/ie/default.mspx" target="_blank">altri browser</a> no (notare, non c&#8217;è la &#8220;s&#8221; del plurale :-P ). E così è anche per gli oggetti flash. Il browser appena linkato pensa bene di riconoscere l&#8217;embedd come controllo Active X, e non lo visualizza (a meno che&#8230; ma la storia si fa lunga e tortuosa). Googleggiando, ci si imbatte quasi subito in <a href="http://code.google.com/p/swfobject/" target="_blank"><strong>swfobject</strong></a>, un oggetto javascript che ci toglie le castagne dal fuoco e mette in pista in un attimo il nostro lavoro. Il codice da scrivere è veramente ridotto all&#8217;osso, vi riporto l&#8217;esempio che faceva al caso mio con l&#8217;embedd del player flash di livestream.com (una piattaforma di streaming video):</p>
<ol>
<li>Includere la libreria nel tag <em>&lt;head&gt;</em>:
<pre>&lt;script type="text/javascript" src="swfobject.js"&gt;&lt;/script&gt;</pre>
</li>
<li>Creare il <em>div</em> che ospiterà l&#8217;oggetto flash:
<pre>&lt;div id="livestreamPlayer"&gt;&lt;/div&gt;</pre>
</li>
<li>Creare l&#8217;oggetto con il codice javascript:
<pre><span class="sc2"><span class="kw2">&lt;script</span> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">"text/javascript"</span><span class="kw2">&gt;</span></span>
	flashvars = { channel: 'livestreamearth' };
	params = { AllowScriptAccess: 'always' };
	swfobject.embedSWF("http://cdn.livestream.com/chromelessPlayer/wrappers/
SPlayer.swf","livestreamPlayer", "400", "300", "9.0.0", "expressInstall.swf",
flashvars, params);
<span class="sc2"><span class="kw2">&lt;/script&gt;</span></span></pre>
</li>
</ol>
<p>Come si può intuire la variabile <em>flashvars</em> conterrà le variabili di cui l&#8217;oggetto flash necessita per funzionare mentre <em>params</em> conterrà i settaggi flash per l&#8217;oggetto. Il primo parametro è invece il path dell&#8217;oggetto flash da embeddare, il secondo è l&#8217;id del div che lo conterrà nella nostra pagina, seguito da width e height, versione di flash richiesta e oggetto flash(fornito insieme ad swfobject) che consente di aggiornare la propria versione di flash installata sul pc.</p>
<p>Con questi semplici passi si otterrà il caricamente dell&#8217;oggetto flash tramite javascript, che consentirà di bypassare il blocco di alcuni browser e di eseguirlo senza problemi in tutti gli altri ;-).</p>
<p>Eccovi il link per scaricare lo zip contenente swfobject: <a href="http://bit.ly/3GWdi6" target="_blank">http://bit.ly/3GWdi6</a></p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 266px; width: 1px; height: 1px;">
<pre><code><strong>&lt;script type="text/javascript" src="swfobject.js"&gt;&lt;/script&gt;</strong>

</code></pre>
</div>
<p>[ad]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2009/09/webflash-risolvere-tutti-i-problemi-di-compatibilita/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress come CMS!</title>
		<link>http://blog.davideferrero.com/2009/08/wordpress-come-cms/</link>
		<comments>http://blog.davideferrero.com/2009/08/wordpress-come-cms/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 21:34:37 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Programmazione]]></category>

		<guid isPermaLink="false">http://ilferre.setupstat.com/?p=124</guid>
		<description><![CDATA[Come alcuni di voi già sanno, ultimamente, a lavoro, mi sono dovuto immergere all&#8217;interno del codice di wordpress. Bene, devo dire che ero un po&#8217; perplesso, ma ho voluto sperimentare e provare lo stesso&#8230; Al contrario di quanto pensassi, il codice di un tema è molto intuitivo e comprensibile. Basta masticare un po&#8217; di CSS [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter" title="Wordpress" src="http://lh6.ggpht.com/__IYVAt3JPe8/SndQHYgtgtI/AAAAAAAABtI/57cFuU6T4Xs/s144/finished-300x300.jpg" alt="" width="144" height="144" />Come alcuni di voi già sanno, ultimamente, a lavoro, mi sono dovuto immergere all&#8217;interno del codice di wordpress. Bene, devo dire che ero un po&#8217; perplesso, ma ho voluto sperimentare e provare lo stesso&#8230;</p>
<p>Al contrario di quanto pensassi, il codice di un tema è molto intuitivo e comprensibile. Basta masticare un po&#8217; di CSS e un po&#8217; di PHP. Se volete provare, potete scaricare <a title="Tema base con widget" href="http://www.worldpress.it/dwn/Tema-base(widget).zip" target="_blank">questo tema</a>. Io sono partito da qui e ho seguito la guida di <a title="Guida per la creazione di un tema wordpress" href="http://www.worldpress.it/?p=325" target="_blank">worldpress.it</a>.</p>
<p>La cosa più interessante è che wordpress può essere utilizzato anche come Content Mangement System (CMS). Alcuni ne sconsigliano questo tipo di utilizzo, mentre altri lo promuovono&#8230; Da parte mia devo dire che ci sono i pro e i contro, e ovviamente vi sconsiglio di utilizzarlo se dovete realizzare un sito complesso, che deve gestire parecchi utenti o situazioni complesse(e-commerce, per fare un esempio). Però wordpress permette di gestire pagine, e con semplici funzioni (le trovate tutte in <a title="Wordpress Function Reference" href="http://codex.wordpress.org/Function_Reference" target="_blank">questa guida ufficiale</a>) potete accedere e personalizzare tutti i vostri contenuti. E allora qual&#8217;è il vantaggio nell&#8217;usare wordpress? Ovviamente tutta la gestione dei contenuti già fatta(memorizzati su database mysql) e la rapidità di &#8220;costruzione&#8221; del sito web. Devo ammettere che in 2 giorni si possono realizzare siti web decenti (se non ci si fossilizza troppo sul layout grafico).</p>
<p>Quasi sicuramente lo utilizzerò altre volte, e soprattutto quando si devono realizzare siti standard e pronti &#8220;in pochi minuti&#8221;, allora potrebbe essere la soluzione giusta, a differenza di Joomla, Drupal o quant&#8217;altro che potrebbero risultare un po&#8217; complicati (in fase di personalizzazione del codice). Che dire, se lo provate, buon divertimento!<br />
[ad]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2009/08/wordpress-come-cms/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Un calendario con jquery!</title>
		<link>http://blog.davideferrero.com/2009/06/un-calendario-con-jquery/</link>
		<comments>http://blog.davideferrero.com/2009/06/un-calendario-con-jquery/#comments</comments>
		<pubDate>Sun, 14 Jun 2009 13:45:39 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://ilferre.setupstat.com/?p=108</guid>
		<description><![CDATA[Creare in pochi e semplici passi un calendario per le pagine web con jquery.]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://picasaweb.google.it/lh/photo/IziSgsgFs0LHq_kAlMc9aw?feat=embedwebsite"><img class=" aligncenter" title="jQuery" src="http://lh5.ggpht.com/__IYVAt3JPe8/SjT7xRczOhI/AAAAAAAABrE/_H5y5EVcofM/s800/JQuery.png" alt="" width="270" height="101" /></a></p>
<p>Sono ormai diventato un jquery addicted e per ogni problema trovo una soluzione in questo fantastico framework javascript&#8230;</p>
<p>L&#8217;altro giorno sul lavoro dovevo realizzare una maschera di input con alcuni filtri su una ricerca&#8230; Uno di questi filtri era proprio una data di inizio e data di fine&#8230; Siccome la pagina (jsp) era rivolta ad impiegati di un ufficio(che non sempre sono <em>good user</em>) mi è stato chiesto di realizzare un calendario per permettere una scelta di date&#8230;</p>
<p>Ovviamente la prima cosa che ho fatto è stato googleggiare cercando &#8220;calendar jquery&#8221;&#8230; il primo risultato mi ha rimandato a <a title="jQuery UI Datepicker" href="http://marcgrabanski.com/pages/code/jquery-ui-datepicker" target="_blank">questa pagina</a> dove ho trovato in pochi e semplici passi alcuni file (un js e un css) da scaricare e da includere nel mio progetto(che comprendeva già jquery). E così che con 1 istruzione</p>
<p style="padding-left: 30px;"><code>$("#idtextbox").datepicker({"dd/mm/yy"});</code></p>
<p>ho risolto il mio problema..<br />
Ecco a voi un semplice esempio (del tutto identico a quello che ho utilizzato io ;-):<br />
<div class="iframe-wrapper">
  <iframe src="http://jqueryui.com/demos/datepicker/default.html" frameborder="0" style="height:250px;width:400px;">Please upgrade your browser</iframe>
</div><br />
[ad]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2009/06/un-calendario-con-jquery/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Java Sharp!</title>
		<link>http://blog.davideferrero.com/2009/05/java-sharp/</link>
		<comments>http://blog.davideferrero.com/2009/05/java-sharp/#comments</comments>
		<pubDate>Tue, 19 May 2009 20:41:56 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Programmazione]]></category>

		<guid isPermaLink="false">http://ilferre.setupstat.com/?p=87</guid>
		<description><![CDATA[Da venerdì scorso mi sono buttato sul C#, un nuovo linguaggio (per me), che poi ho scoperto che tanto nuovo non è&#8230; Dovevo iniziare un&#8217;applicazione che facesse una scansione di una cartella su un server alla ricerca di file .zip. Trovati questi file, bisogna leggere dei file .dat che contengono delle chiavi con cui recuperare [...]]]></description>
			<content:encoded><![CDATA[<p>Da venerdì scorso mi sono buttato sul C#, un nuovo linguaggio (per me), che poi ho scoperto che tanto nuovo non è&#8230;</p>
<p>Dovevo iniziare un&#8217;applicazione che facesse una scansione di una cartella su un server alla ricerca di file <em>.zip</em>. Trovati questi file, bisogna leggere dei file <em>.dat</em> che contengono delle chiavi con cui recuperare dati da un database. Fatto ciò  si devono inviare gli zip ad un server ftp remoto e backuppare i file sul server. Interessante no? Il tutto era da fare in .net, per cui mi sono subito messo a googleggiare e ho trovato del codice abbastanza completo sul trasferimento ftp. Guardo bene&#8230; Ehi ma questo è Java&#8230; No C#&#8230;Ok proviamolo! Programma che ti programmi (?? :O) sono sempre più convinto che Microsoft non si smentisca, e abbia copiato un&#8217;altra volta&#8230; Qualcuno mi fa capire che differenze ci sono tra Java e C#? Altrimenti per me quello diventa <strong>Java Sharp</strong>![ad]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2009/05/java-sharp/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Librerie Jquery&#8230;for programmers only!</title>
		<link>http://blog.davideferrero.com/2009/05/librerie-jqueryfor-programmers-only/</link>
		<comments>http://blog.davideferrero.com/2009/05/librerie-jqueryfor-programmers-only/#comments</comments>
		<pubDate>Sat, 09 May 2009 15:27:08 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://ilferre.setupstat.com/?p=76</guid>
		<description><![CDATA[Librerie Jquery...for programmers only!]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://jquery.com"><img class="    aligncenter" title="JQuery" src="http://lh4.ggpht.com/__IYVAt3JPe8/SgWgQnqEl3I/AAAAAAAABVo/zGe0UOf8ZP4/s800/JQuery.png" alt="Librerie JQuery" /></a></p>
<p>Da qualche giorno sul lavoro ho dovuto realizzare un&#8217;applicazione in jsp che permettesse, al click su un link, di far comparire dei dati aggiuntivi&#8230; Appena ho sentito cosa dovevo fare, lo stack-trace della mia memoria era all&#8217;incirca questo:</p>
<blockquote><p>AJAX&#8230;AJAX&#8230;AJAX&#8230;AJAX&#8230;AJAX&#8230;AJAX&#8230;AJAX&#8230;AJAX&#8230;AJAX&#8230;AJAX&#8230;AJAX&#8230;AJAX</p></blockquote>
<p>Mi sono quindi sbattuto altamente&#8230; per cercare qualcosa che mi semplificasse il lavoro&#8230;:-P.</p>
<p>Dopo breve googleggiamento mi sono imbattuto in una libreria Javascript che dopo poco ho scoperto essere molto sciccosa&#8230; <a title="JQuery" href="http://jquery.com/" target="_blank">JQuery</a> mette a disposizione infatti molti strumenti, sia per creare effetti grafici con javascript, sia per gestire gli eventi sui vari oggetti presenti nella pagina  e non ultimo di utilizzare AJAX in modo molto semplice&#8230;</p>
<p>Bè ora potete <em>spassarvela</em> con queste librerie&#8230; Ah dimenticavo, vengono utilizzate da Google, Dell e molti altri ancora, anche per questo credo che siano davvero un ottimo strumento&#8230;</p>
<p>Se le volete provarle, il link per scaricarle è questo:  <a title="Download JQuery" href="http://docs.jquery.com/Downloading_jQuery" target="_blank">http://docs.jquery.com/Downloading_jQuery</a></p>
<p>Se non avete idea di metterci le mani dentro, vi basterà scaricare il <em>minified</em>, dovrebbe essere la versione compressa che funziona allo stesso modo del .js&#8230; Buon lavoro![ad]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2009/05/librerie-jqueryfor-programmers-only/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

