<?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>AndreaCammarata.com</title>
	<atom:link href="http://www.andreacammarata.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.andreacammarata.com</link>
	<description></description>
	<lastBuildDate>Sat, 14 Jan 2012 22:31:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>ProgressBar &#124; Development &#8211; Part 2</title>
		<link>http://www.andreacammarata.com/tutorials/sencha-touch-2-tutorials/progressbar-development-part-2.html</link>
		<comments>http://www.andreacammarata.com/tutorials/sencha-touch-2-tutorials/progressbar-development-part-2.html#comments</comments>
		<pubDate>Sat, 14 Jan 2012 22:21:12 +0000</pubDate>
		<dc:creator>Andrea Cammarata</dc:creator>
				<category><![CDATA[Sencha Touch 2]]></category>

		<guid isPermaLink="false">http://www.andreacammarata.com/?p=858</guid>
		<description><![CDATA[Molto bene, spero che fino a qui sia tutto chiaro. Siamo finalmente arrivati alla parte in cui occorre letteralmente dare vita al nostro nuovo componente, andando a definire di fatto una semplice funzione che andrà ad impostare la larghezza della del &#8220;fillElement&#8221; e il valore percentuale associato all&#8217;interno del &#8220;textElement&#8221; in corrispondenza del valore impostato. [...]]]></description>
			<content:encoded><![CDATA[<p>Molto bene, spero che fino a qui sia tutto chiaro. Siamo finalmente arrivati alla parte in cui occorre letteralmente dare vita al nostro nuovo componente, andando a definire di fatto una semplice funzione che andrà ad impostare la larghezza della del &#8220;fillElement&#8221; e il valore percentuale associato all&#8217;interno del &#8220;textElement&#8221; in corrispondenza del valore impostato. Continuate quindi a leggere per rimanere assolutamente basiti dalla semplicità con cui è ottenibile questo risultato.</p>
<p><br/></p>
<h2>Diamogli Vita!</h2>
<p>A questo punto abbiamo già steso le basi del nostro componente, abbiamo infatti i parametri di configurazione e gli elementi HTML necessari al suo funzionamento. Come vi ho spiegato nell&#8217;articolo precedente, non occorre più definire le funzioni di get e set per tutti i parametri di configurazione che andiamo a definire, perché sarà il framework stesso ad andarle a creare automaticamente per noi,  ma allora, vi chiederete voi, come andiamo ad aggiornare il &#8220;fillElement&#8221; non appena viene impostato un valore diverso? Beh, la domanda sorge spontanea <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Quello che ancora non sapete, è che automaticamente, non appena viene richiamata la funzione set di un parametro di configurazione, verrà automaticamente richiamata anche la funzione <strong>update</strong>. Prima di spiegavi nel dettaglio questo concetto, diamo un&#8217;occhiata al codice della funzione in oggetto:</p>
<pre class="brush: jscript; title: ;">
/**
 * @class Ext.tux.ProgressBar
 * @extend Ext.Component
 * @author Andrea Cammarata
 */
Ext.define('Ext.tux.ProgressBar', {
	extend: 'Ext.Component',
	alternateClassName: 'Ext.ProgressBar',
	xtype: 'progressbar',
	config: {

		/**
		 * @cfg {Number} maxValue Il valore massimo raggiungibile
		 * dalla ProgressBar.
		 * @accessor
		 */
		maxValue: 100,

		/**
		 * @cfg {Number} value Il valore iniziale ProgressBar.
		 * @accessor
		 */
		value: 0

	},
	template: [
		{
			tag: 'div',
			className: Ext.baseCSSPrefix + 'progressbar',
			reference: 'progressBarElement',
			children: [
				{
					tag: 'span',
					className: Ext.baseCSSPrefix + 'progress-value',
					reference: 'textElement'
				},
				{
					tag: 'div',
					className: Ext.baseCSSPrefix + 'progress-fill',
					reference: 'fillElement'
				}
			]
		}
	],

	/**
	 * Aggiorna il valore all'interno del textElement.
	 * @param {Number} value Il nuovo valore percentuale da impostare.
	 * @private
	 */
	 updateValue: function(value) {

		var me = this,
			maxValue = this.getMaxValue();

		//Viene reimpostato il valore se minore di 0
        if (value &lt; 0) {
			value = 0;
		/* Viene reimpostato il valore se maggiore di quello
		 * massimo consentito impostato nella configurazione */
		}else if (value &gt; maxValue){
			value = maxValue;
		}

		//Aggiornamento del valore percentuale all'interno del textElement
		me.textElement.setHtml(value + '%');

		/* Viene richiamata la funzione di aggiornamento
		 * addetta ad impostare la larghezza del fillElement. */
		me.upadateProgress(value);

    },

	/**
	 * Aggiorna la dimensione del fillElement.
	 * @param {Number} value Il nuovo valore percentuale impostato.
	 * @private
	 */
	upadateProgress: function(value){

		var me = this;

		//Calcolo della larghezza del fillElement
		value = (value * 100) / me.getMaxValue();

		//Aggiornamento della larghezza del fillElement
		me.fillElement.setStyle('width', value + '%');

	}

});
</pre>
<p>Eccoci qua! Cominciamo con il dire che, come avrete potuto sicuramente notare, sono state aggiunte due nuove funzioni al nostro componente e, come leggete dai commenti, queste sono <strong>private</strong>, ovvero che non dovranno mai essere richiamate al di fuori del componente stesso. Come abbiamo detto poco fa, il framework si preoccuperà automaticamente di richiamare la funzione <strong>update</strong> del parametro di configurazione subito dopo aver richiamato quella di impostazione valore (set). Quindi, ricapitoliamo: se per ipotesi avessimo definito un parametro di configurazione &#8220;<strong>cloud</strong>&#8221; (non mi piacciono i nomi dei personaggi Walt Disney quindi userò quelli di Final Fantasy <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> , verranno automaticamente definite le funzioni <strong>getCloud</strong> e <strong>setCloud</strong>, che saranno pubbliche e quindi accessibili anche all&#8217;esterno del componente stesso al fine di reperire ed impostare il valore del parametro stesso. Inoltre, non appena richiamata la funzione &#8220;setCloud&#8221; verrà automaticamente richiamata la funzione <strong>updateCloud</strong>, che sarà privata e quindi non accessabile al di fuori del componente, ma che dovrà essere definita manualmente al fine di consentirci la gestione dei vari elementi che compongono il componente stesso. Quindi direi che non ci manca proprio niente <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Ma andiamo ad esaminare nel dettaglio le due nuove funzioni appena definite. La funzione <strong>updateValue</strong> come vi ho appena spiegato verrà richiamata automaticamente all&#8217;impostazione del valore specificato, quindi dobbiamo andare a gestire il ridimensionamento dell&#8217;elemento di riempimento della ProgressBar.  A tal proposito, alla riga 66, noterete la seguente riga di codice:</p>
<pre class="brush: jscript; title: ;">
me.textElement.setHtml(value + '%');
</pre>
<p>tramite questa semplice istruzione, verrà infatti impostato il contenuto html dello span corrispondente al &#8220;textElement&#8221; che abbiamo definito poco fa all&#8217;interno del template del componente. Vi faccio appunto notare come &#8220;textElement&#8221; sia il medesimo nome assegnato al parametro di configurazione &#8220;reference&#8221;, definito per l&#8217;elemento in questione. Il framework quindi, non solo a creato per noi l&#8217;elemento Html all&#8217;interno della pagina, ma ci ha anche reso disponibile una variabile di referenza, che ci permetterà di accedere direttamente a tale elemento. Ovviamente la stessa logica è applicata anche per tutti gli altri elementi definiti. Fantastico non vi pare? Vi faccio inoltre notare come alla riga 54, venga utilizzata la funzione <strong>getMaxValue</strong> automaticamente generata, al fine di prelevare il valore del parametro di configurazione &#8220;maxValue&#8221; che abbiamo definito. Su questo funzione quindi non aggiungerei altro in quanto mi sembra tutto abbastanza chiaro. Vengono infatti effettuati alcuni controlli sul nuovo valore che dovrà essere aggiornato al fine di evitare impostazioni fuori range, dopodiché viene aggiornato, come spiegato, il valore percentuale all&#8217;interno del &#8220;textElement&#8221;, ed infine richiamata l&#8217;altra nuova funzione &#8220;updateProgress&#8221; appena definita. Lo scopo di questa funzione è molto semplice: Viene infatti semplicemente calcolato il valore percentuale in corrispondenza del valore passato alla funzione stessa ed il <strong>maxValue</strong> impostato nella configurazione del componente e reperito tramite la funzione getter automaticamente creata <strong>getMaxValue</strong>. Infine, dopo aver calcolato tale valore, questo viene usato al fine di impostare il valore percentuale di larghezza che dovrà essere utilizzato dal <strong>fillElement</strong>, che, ricordiamo, è l&#8217;elemento addetto appunto a visualizzare la percentuale di avanzamento della nostra ProgressBar. Molto bene, a questo punto abbiamo creato tutte le funzioni base che permetteranno al componente di funzionare correttamente, a questo punto quindi, passiamo oltre, ed andiamo a definire tutti gli stili che la compongono utilizzando COMPASS, SASS e CSS3. Seguitemi quindi nel prossimo tutorial e scopriamo insieme come poterla rendere graficamente accattivante. La ProgressBar dovrà infatti essere, proprio come disse il grande Steve Jobs a Cordell Ratzlaff in merito alle ScrollBars di OS X, &#8220;bella a tal punto da volerla leccare&#8221; <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreacammarata.com/tutorials/sencha-touch-2-tutorials/progressbar-development-part-2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ProgressBar &#124; Development</title>
		<link>http://www.andreacammarata.com/tutorials/sencha-touch-2-tutorials/progressbar-development.html</link>
		<comments>http://www.andreacammarata.com/tutorials/sencha-touch-2-tutorials/progressbar-development.html#comments</comments>
		<pubDate>Sat, 17 Dec 2011 22:09:44 +0000</pubDate>
		<dc:creator>Andrea Cammarata</dc:creator>
				<category><![CDATA[Sencha Touch 2]]></category>

		<guid isPermaLink="false">http://www.andreacammarata.com/?p=805</guid>
		<description><![CDATA[Bene, eccoci arrivati alla parte più interessante, di questo tutorial, ovvero la scrittura del codice della ProgressBar vera e propria. Ricordate sempre che non occorre avere fretta, ma l&#8217;importante è che comprendiate al meglio ogni singola riga di codice che vi verrà proposta. Definizione base del componente Vediamo in primis le basi che ci permetteranno [...]]]></description>
			<content:encoded><![CDATA[<p>Bene, eccoci arrivati alla parte più interessante, di questo tutorial, ovvero la scrittura del codice della ProgressBar vera e propria.<br />
Ricordate sempre che non occorre avere fretta, ma l&#8217;importante è che comprendiate al meglio ogni singola riga di codice che vi verrà proposta.<br />
<br/><br />
<br/><br />
<br/></p>
<h2>Definizione base del componente</h2>
<p>Vediamo in primis le basi che ci permetteranno di creare un componente personalizzato, ovvero la definizione del componente stesso.<br />
Diamo quindi un&#8217;occhiata al codice che segue:</p>
<pre class="brush: jscript; title: ;">
/**
 * @class Ext.tux.ProgressBar
 * @extend Ext.Component
 * @author Andrea Cammarata
 */
Ext.define('Ext.tux.ProgressBar', {
	extend: 'Ext.Component',
	alternateClassName: 'Ext.ProgressBar',
	xtype: 'widget.progressbar'
});
</pre>
<p>Tramite queste poche righe di codice abbiamo steso le basi per il nostro componente che, di fatto, se incluso in un applicazione Sencha Touch 2, già funzionerebbe regolarmente. Certo con questo non voglio certo dire che abbiamo finito <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , ma semplicemente che questo componente è già riconosciuto dal framework e potrebbe teoricamente, già essere utilizzato, anche se non sarebbe certo di grande utilità in quanto non farebbe assolutamente nulla, ma è comunque stato registrato dal framework con il suo xtype &#8220;progressbar&#8221; associato.<br />
Ma entriamo nel dettaglio e vediamo di fatto cosa stanno ad indicare queste poche righe di codice appena scritte:</p>
<p>Tramite l&#8217;istruzione <strong>Ext.define</strong>, andiamo a definire di fatto un nuovo componente, assegnandogli, in questo caso, il nome <strong>ProgressBar</strong>, ed andando a collocarlo all&#8217;interno del namespace <strong>Ext.tux</strong>. Vi starete sicuramente chiedendo perché Ext.tux non è vero? Beh presto detto: sicuramente se come me avete esperienza di sviluppo tramite Ext, saprete che tutti i componenti personalizzati di quest&#8217;altro stupendo framework, venivano e vengono tutt&#8217;ora racchiusi all&#8217;interno del namespace &#8220;Ext.ux&#8221; che sta per l&#8217;appunto a significare &#8220;Ext User Extensions&#8221;. Bene, sicuramente ora vi è facile intuire che &#8220;Ext.tux&#8221; rappresenta invece tutti i componenti personalizzati sviluppati per Sencha Touch, da qui, quindi, &#8220;Ext Touch User Extensions&#8221;. Tenete comunque presente che al momento non vi è nessuna convenzione ufficiale che impone tale namespace per i vostri componenti, infatti al momento penso di essere il solo ad utilizzarlo. Molti sviluppatori preferiscono utilizzare quello ufficiale, ovvero semplicemente &#8220;Ext&#8221; oppure lo stessto utilizzato per Ext &#8220;Ext.ux&#8221; ma mi sento di consigliarvi la mia alternativa.<br />
Dopo questa piccola parentesi possiamo procedere.<br />
Tramite l&#8217;istruzione <strong>extend</strong> andiamo a definire la superclasse della ProgressBar, ovvero, il componente dal quale si andranno ad ereditare tutti i metodi, eventi e proprietà. Nella star grande maggioranza dei casi, vi troverete, come in questo caso, a dover estendere direttamente la classe &#8220;Ext.Component&#8221;, ma nulla vi vieta di poter estendere un &#8220;Ext.Panel&#8221;, &#8220;Ext.Carousel&#8221; o qualsiasi altro componente. Questo dipende solamente dalle vostre necessità. Altra nota essenziale su questo piccolo gruppetto di righe di codice è la configurazione <strong>alternateClassName</strong>. Tramite questa configurazione infatti, potremo infatti associare un nome alternativo al nostro componente in modo tale che questo possa essere agilmente creato tramite l&#8217;istruzione</p>
<pre class="brush: jscript; title: ;">
Ext.create('Ext.tux.ProgressBar');
</pre>
<p>oppure molto più facilmente tramite</p>
<pre class="brush: jscript; title: ;">
Ext.create('Ext.ProgressBar');
</pre>
<p>Certo, in questo caso non c&#8217;è molto differenza, ma provate a pensare in grande, ad un&#8217;applicazione molto più estesa e complessa.<br />
Potreste trovarvi nel caso in cui uno sei vostri componenti sia stato definito all&#8217;interno del namespace ClientApp.components.cards.AdvancedCarousel. Non sarebbe più facile creare questo componente utilizzando un nome di classe alternativo tipo &#8220;CP.AdvancedCarousel&#8221; ? Sono sicuro che siete d&#8217;accordo con me <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .<br />
Certo è anche vero che c&#8217;è un&#8217;altro modo per creare un componente, ovvero utilizzando l&#8217;istruzione &#8220;Ext.widget&#8221;, ed è proprio questo il motivo dell&#8217;ultimo parametro di configurazione impostato. Il parametro <strong>xtype</strong> infatti, vi permetterà di creare questo componente semplicemente tramite</p>
<pre class="brush: jscript; title: ;">
Ext.widget('progressbar')
</pre>
<p>ma anche di poterlo inserire agilmente tra gli &#8220;items&#8221; di una Toolbar tramite la sintassi che segue.</p>
<pre class="brush: jscript; highlight: [4]; title: ;">
var toolbar = Ext.widget('toolbar',{
	items: [
		{
			xtype: 'progressbar'
		}
	]
});
</pre>
<p>In questo modo si fornisce solamente la configurazione del componente che dovrà essere creato e sarà il framework che si preoccuperà automaticamente di crearlo non appena questo dovrà essere utilizzato. Inoltre, assolutamente da tenere in considerazione, è il fatto che l&#8217;impostazione di un &#8220;xtype&#8221; associato al componente, vi permetterà di creare i componenti delle vostre applicazioni server-side. Ma per ora, tralasciamo questo argomento, altrimenti rischiamo di confonderci le idee.</p>
<h2>Configs</h2>
<p>Bene, a questo punto è arrivato il momento di fornire al nostro componente alcuni parametri di configurazione che ci permetteranno, ad esempio, di impostare il valore corrente ed il valore massimo previsto dalla ProgressBar stessa, quindi aggiorniamo il codice come segue.</p>
<pre class="brush: jscript; highlight: [10,11,12,13,14,15,15,16,17,18,19,20,21,22,23,24,25]; title: ;">
/**
 * @class Ext.tux.ProgressBar
 * @extend Ext.Component
 * @author Andrea Cammarata
 */
Ext.define('Ext.tux.ProgressBar', {
	extend: 'Ext.Component',
	alternateClassName: 'Ext.ProgressBar',
	xtype: 'progressbar',
	config: {

		/**
		 * @cfg {Number} maxValue Il valore massimo raggiungibile
		 * dalla ProgressBar.
		 * @accessor
		 */
		maxValue: 100,

		/**
		 * @cfg {Number} value Il valore iniziale ProgressBar.
		 * @accessor
		 */
		value: 0

	}
});
</pre>
<p>Penso non servi fornire maggiori informazioni su questi parametri, in quanto i relativi commenti associati parlano chiaro.<br />
Tuttavia, voglio spendere un minuto per farvi notare qualcosa di veramente importante che occorre sempre tenere in mente relativo alla nuova Class System prima sviluppata per Ext 4, ed ora implementata anche su Sencha Touch 2. Ma di cosa starà mai parlando vi starete chiedendo? Beh, parlo proprio dell&#8217;oggetto <strong>Config</strong> appena definito. Questo oggetto infatti, vi permetterà di racchiudere tutti i parametri di configurazione che vorrete fornire al vostro componente generando automaticamente le rispettive funzioni Get e Set. Ma cosa vuol dire? Beh, questo vuol dire che per ogni parametro di configurazione non occorre andare a definire le funzioni, ad esempio:</p>
<pre class="brush: jscript; title: ;">
/**
 * Ritorna l'attuale valore di avanzamento impostato sulla ProgressBar.
 * @return {Number} Il valore corrente della ProgressBar.
 */
getValue: function(){
	return this.value;
}

/**
 * Imposta il valore di avanzamento della ProgressBar.
 * @param {Number} value Il nuovo valore di avanzamento della ProgressBar.
 */
setValue: function(value){
	this.value = value;
}
</pre>
<p>Assolutamente NO!!! Questo non è più necessario. Sarà infatti il ClassManager a preoccuparsi di creare tali funzioni automaticamente per voi, quindi in qualsiasi parte all&#8217;interno della ProgressBar, potremo reperire tali valori semplicemente tramite le istruzioni</p>
<pre class="brush: jscript; title: ;">
//Reperiamo il valore di avanzamento corrente impostato sulla ProgressBar
this.getValue();       //Ritorna 0

//Impostiamo il valore di avanzamento della ProgressBar
this.setValue(50);

//Reperiamo nuovamente di avanzamento corrente impostato sulla ProgressBar
this.getValue();       //Ritorna 50
</pre>
<p>Lo stessa logica, viene anche applicata al parametro di configurazione maxValue.<br />
Pasterà ricordarsi sempre di anteporre <strong>get</strong> seguito dal nome del parametro avente la prima lettera Maiuscola per poter reperire il valore di tale parametro, invece, se vogliamo impostarne uno nuovo, anteporremo <strong>set</strong> sempre seguito dal nome del parametro avente la prima lettera Maiuscola, e, questa volta, ricordandoci di specificare il nuovo parametro che dovrà essere utilizzato.<br />
Beh che dire? Fantastico no <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .<br />
Passiamo quindi oltre e vediamo come poter ora definire i vari elementi che comporranno la nostra ProgressBar definendo semplicemente un &#8220;Template&#8221;.</p>
<h2>Il Template</h2>
<p>Come abbiamo visto poco fa all&#8217;interno dell&#8217;articolo inerente alla progettazione di questo componente, la ProgressBar dovrà essere composta da due elementi div ed uno span addetto a contenere il testo da visualizzare al suo interno.<br />
Già, vi starete chiedendo, ma qual&#8217;è il modo migliore per farlo? Dobbiamo creare manualmente questi elementi ed aggiungerli al DOM?<br />
Assolutamente, no! Tutto ciò che dovrete fare è riassunto dal codice che segue.</p>
<pre class="brush: jscript; highlight: [26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44]; title: ;">
/**
 * @class Ext.tux.ProgressBar
 * @extend Ext.Component
 * @author Andrea Cammarata
 */
Ext.define('Ext.tux.ProgressBar', {
	extend: 'Ext.Component',
	alternateClassName: 'Ext.ProgressBar',
	xtype: 'progressbar',
	config: {

		/**
		 * @cfg {Number} maxValue Il valore massimo raggiungibile
		 * dalla ProgressBar.
		 * @accessor
		 */
		maxValue: 100,

		/**
		 * @cfg {Number} value Il valore iniziale ProgressBar.
		 * @accessor
		 */
		value: 0

	},
	template: [
		{
			tag: 'div',
			className: Ext.baseCSSPrefix + 'progressbar',
			reference: 'progressBarElement',
			children: [
				{
					tag: 'span',
					className: Ext.baseCSSPrefix + 'progress-value',
					reference: 'textElement'
				},
				{
					tag: 'div',
					className: Ext.baseCSSPrefix + 'progress-fill',
					reference: 'fillElement'
				}
			]
		}
	]
});
</pre>
<p>Ecco fatto <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Semplice non è vero? Ma vediamo nel dettaglio cos&#8217;ho fatto:<br />
Specificando un oggetto templare al componente, chiediamo al framework di creare automaticamente tutti gli elementi di tipo <strong>tag</strong>, impostandone la classe CSS <strong>className</strong> associata ed inoltre di referenziarlo all&#8217;interno del componente stesso mediante l&#8217;oggetto <strong>reference</strong>. Infine, chiediamo di fare lo stesso con tutti gli elementi <strong>children</strong> definiti. Forse spiegandovelo in questo modo vi ho un po confuso le idee, capisco. Quindi prendiamoci un po più di tempo per capire bene questa parte.<br />
In sintesi lo scopo principale dell&#8217;oggetto Template è quello di racchiudere un set di configurazione di tutti gli elementi HTML di cui vogliamo il nostro componente sia composto, e non appena il componente stesso verrà inizializzato, verranno automaticamente creati anche tutti gli elementi di cui abbiamo fornito la configurazione. Ma vediamo nel dettaglio quali sono i parametri forniti per ognuno degli elementi HTML che dovrà essere creato.</p>
<ul>
<li><strong>tag</strong>: tale parametro sta ad indicare per l&#8217;appunto la tipologia dell&#8217;elemento che dovrà essere creato. Per esempio, impostandone il valore a &#8220;div&#8221; verrà, come scontato, creato un elemento div all&#8217;interno del DOM associato a questo elemento. Un valore di tipo span invece&#8230;beh provate ad indovinare <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
<li><strong>className</strong>: questo parametro indica invece la classe CSS da applicare all&#8217;elemento. Questo parametro sarà di vitale importanza in fase di styling del componente. I più attenti di voi avranno sicuramente notato l&#8217;utilizzo del valore <strong>Ext.baseCSSPrefix</strong>. Bene, il valore corrispondente è &#8220;x-&#8221;. Tale prefisso viene di norma applicato a tutti gli elementi che compongono i vari componenti Sencha Touch. Per esempio: il classico Ext.Panel viene renderizzato tramite classe CSS &#8220;x-panel&#8221;; L&#8217;oggetto Ext.Slider tramite classe &#8220;x-slider&#8221; e via dicendo. Quindi, cerchiamo di rispettare gli standard, e assegniamo al nostro Progress Element la classe CSS &#8220;x-progressbar&#8221; e adottiamo lo stesso ragionamento per tutti gli elementi figli.</li>
<li><strong>reference</strong>: questo parametro è decisamente interessante. Specificandone un valore infatti, all&#8217;interno di qualsiasi funzione che andremo a definire all&#8217;interno del componente stesso, sarà possibile recuperare tale elemento tramite, ad esempio, &#8220;this.fillElement&#8221;. In questo modo, secondo le nostre necessità, potremo manipolare tali nodi DOM, a nostro piacimento. Per ora vi basti sapere questo, poiché, a breve, approfondiremo ulteriormente l&#8217;argomento.</li>
<li><strong>children</strong>: No. Per tutti quelli della mia generazione, vi interrompo subito, dicendovi che con questo parametro non sto parlando del celeberrimo hit anni &#8217;90 di Robert Miles <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ma semplicemente andiamo ad indicare che tale elemento dovrà contenere al suo interno altrettanti elementi, che seguiranno la medesima configurazione di cui abbiamo appena parlato.</li>
</ul>
<p>Molto bene ragazzi, ora abbiamo finalmente definito le basi che comporranno il nostro componente, quindi diamo un&#8217;occhiata alla console javascript al fine di osservare da vicino come questo componente verrà renderizzato all&#8217;interno della nostra applicazione Sencha Touch.</p>
<p><img src="http://www.andreacammarata.com/wp-content/uploads/2011/12/progressbar-console.jpg" alt="ProgressBar - javascript console" title="progressbar-console" width="600" height="318" class="aligncenter size-full wp-image-836" /></p>
<p>Come potete vedere da questa immagine, tutti gli elementi sono stati creati correttamente all&#8217;interno del DOM rispettando la gerarchia che abbiamo definito. Attenzione però, non fate confusione: Io sono in grado di vedere questo risultato perché ho di fatto inserito questo componente all&#8217;interno dei un form. La sola definizione del componente senza la relativa creazione, non vi permetterà di ottenere il medesimo risultato. Molto bene, siamo sulla buona strada.<br />
Passiamo quindi al prossimo articolo all&#8217;interno del quale andremo a definire le funzioni che permetteranno alla nostra ProgressBar di funzionare correttamente.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreacammarata.com/tutorials/sencha-touch-2-tutorials/progressbar-development.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ProgressBar &#124; Design</title>
		<link>http://www.andreacammarata.com/tutorials/sencha-touch-2-tutorials/progressbar-design.html</link>
		<comments>http://www.andreacammarata.com/tutorials/sencha-touch-2-tutorials/progressbar-design.html#comments</comments>
		<pubDate>Sat, 17 Dec 2011 21:58:39 +0000</pubDate>
		<dc:creator>Andrea Cammarata</dc:creator>
				<category><![CDATA[Sencha Touch 2]]></category>

		<guid isPermaLink="false">http://www.andreacammarata.com/?p=785</guid>
		<description><![CDATA[Prima di entrare nel vivo della progettazione di questo componente mi sembra doveroso spendere due parole sull&#8217; HTML5. Attualmente in stato di &#8220;Working Draft&#8221;, il W3C, prevede il tag &#8220;progress&#8221; , il quale permette di creare semplicemente una progressbar all&#8217;interno di una comune pagina web. Sfortunatamente, al momento della scrittura di questo articolo, tale tag [...]]]></description>
			<content:encoded><![CDATA[<p>Prima di entrare nel vivo della progettazione di questo componente mi sembra doveroso spendere due parole sull&#8217; HTML5.<br />
Attualmente in stato di &#8220;Working Draft&#8221;, il W3C, prevede il tag &#8220;<a href="http://www.w3.org/TR/html5/the-button-element.html#the-progress-element">progress</a>&#8221; , il quale permette di creare semplicemente una progressbar all&#8217;interno di una comune pagina web. Sfortunatamente, al momento della scrittura di questo articolo, tale tag è supportato solamente da alcuni browser da determinate versioni in poi, e, purtroppo, Safari non è tra questi, quindi possiamo scordarci di poterlo utilizzare su devices iOS.<br />
Attualmente il tag &#8220;progess&#8221; in oggetto è supportato dalle seguenti versioni dei browsers che seguono:</p>
<ul>
<li>Firefox Nightly 6.0a1</li>
<li>Opera 11.10</li>
<li>Chrome 11.0.696.65</li>
</ul>
<p>L&#8217;intento di questo articolo quindi, non è assoltamente quello di andare a rimpiazzare uno standard HTML5 o tantomento quello di creare un inutile componente che potrebbe essere semplicemente realizzato mediante un semplice tag già esistente, ma semplicemente quello di guidarvi attraverso i passaggi che vi permetteranno di realizzare un semplice, ma di fatto molto richiesto, componente Sencha Touch 2, in quanto al momento il framework, non ne mette a disposizione una versione ufficiale.</p>
<h2>Pronti&#8230;via!</h2>
<p>Procediamo dunque con calma, partendo dalla fase di progettazione, infatti, il primo step verso la creazione della nostra ProgressBar, è sicuramente quello di prendere visione di come questo dovrà essere composto da un punto di vista del DOM HTML., quindi, prima di andare oltre, soffermiamoci un istante a dare un&#8217;occhiata all&#8217;immagine che segue addetta a rappresentare le varie parti che la andranno a comporre.</p>
<p><img src="http://www.andreacammarata.com/wp-content/uploads/2011/12/progressbar-design.png" alt="PorgressBar Design" title="progressbar-design" width="640" height="260" class="aligncenter size-full wp-image-788" /></p>
<p>Come avete potuto constatare, il componente è davvero molto semplice da realizzare in quanto è composto dai seguenti tre elementi.</p>
<h3>ProgressBar Element</h3>
<p>Questo elemento può essere definito come il &#8220;wrapper&#8221;, ovvero quel nodo DOM che permetterà di fornire al componente stesso una base all&#8217;interno del quale poter racchiudere tutti gli elementi che comporranno la nostra ProgressBar. Inoltre, in fase di styling, potremo decidere di volerla personalizzare con un colore, o un&#8217;immagine di sfondo. Bene, in tal caso questo elemento farà proprio al caso nostro.</p>
<h3>Fill Element</h3>
<p>Beh, penso sia quasi inutile spendere molte parole su questo elemento.<br />
Vi basti sapere che questa div, rappresenterà il livello di avanzamento vero e proprio della ProgressBar andando a ridimensionarsi dinamicamente il corrispondenza al valore impostato.</p>
<h3>Text Element</h3>
<p>Anche ciò che riguarda questo elemento è abbastanza chiaro&#8230;all&#8217;interno di questo nodo infatti, andremo ad inserire il valore percentuale di avanzamento della ProgressBar, o, se al componente verrà conferita una particolare configurazione, un eventuale messaggio che vorremmo fosse visualizzato.</p>
<h2>Lo Scheletro</h2>
<p>Bene, ora che ci siamo fatti un&#8217;idea di quali dovranno essere gli elementi che andranno a comporre la ProgressBar, &#8220;indossiamo per un attimo gli occhiali a Raggi X&#8221; e osserviamo quello che potremmo definire &#8220;lo scheletro&#8221; del componente, ovvero, i tag HTML associati ad ognuno degli elementi sopra elencati, in modo tale da avere una visione completa e definitiva della sua struttura.</p>
<p><img src="http://www.andreacammarata.com/wp-content/uploads/2011/12/progressbar-design-dom.png" alt="" title="progressbar-design-dom" width="640" height="260" class="aligncenter size-full wp-image-796" /></p>
<p>Cosa ne dite? Tutto chiaro fin qui? Nulla di così complicato non vi pare?<br />
Il nostro componente sarà costituito da due div addette a rappresentare rispettivamente il &#8220;ProgressBar Element&#8221; ed il &#8220;Fill Element&#8221;, mentre un semplice &#8220;span&#8221; andrà a contenere il valore percentuale, o messaggio, che dovrà essere visualizzato al suo interno.<br />
Bene, penso non ci sia nient&#8217;altro da aggiungere, quindi possiamo proseguire verso la prima parte interessante, ovvero, la scrittura del componente vero e proprio.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreacammarata.com/tutorials/sencha-touch-2-tutorials/progressbar-design.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to develop a ProgressBar</title>
		<link>http://www.andreacammarata.com/tutorials/sencha-touch-2-tutorials/how-to-develop-a-progressbar.html</link>
		<comments>http://www.andreacammarata.com/tutorials/sencha-touch-2-tutorials/how-to-develop-a-progressbar.html#comments</comments>
		<pubDate>Sat, 17 Dec 2011 21:56:11 +0000</pubDate>
		<dc:creator>Andrea Cammarata</dc:creator>
				<category><![CDATA[Sencha Touch 2]]></category>

		<guid isPermaLink="false">http://www.andreacammarata.com/?p=777</guid>
		<description><![CDATA[Bene ragazzi, ormai la release stabile di Sencha Touch 2 sembra essere alle porte, quindi cerchiamo subito di entrare nel vivo del framework, spiegandovi nei minimi particolari, come poter creare componenti personalizzati da utilizzare nelle vostre applicazioni. Partiamo da qualcosa di relativamente semplice, ovvero, come poter creare una semplice ProgressBar, da poter inserire all&#8217;interno di [...]]]></description>
			<content:encoded><![CDATA[<p>Bene ragazzi, ormai la release stabile di Sencha Touch 2 sembra essere alle porte, quindi cerchiamo subito di entrare nel vivo del framework, spiegandovi nei minimi particolari, come poter creare componenti personalizzati da utilizzare nelle vostre applicazioni.<br />
Partiamo da qualcosa di relativamente semplice, ovvero, come poter creare una semplice ProgressBar, da poter inserire all&#8217;interno di Toolbars e FormPanel, conferendogli stili diversi a seconda di dove questo sia stato ancorato.<br />
Al fine di rendere tutto ciò possibile, passeremo attraverso le seguenti fasi di sviluppo:</p>
<p><center></p>
<ul class="card-list">
<li><a href="http://www.andreacammarata.com/tutorials/sencha-touch-2-tutorials/progressbar-design.html">La progettazione</a></li>
<li><a href="http://www.andreacammarata.com/tutorials/sencha-touch-2-tutorials/progressbar-development.html">La sviluppo del componente</a></li>
<li><a href="http://www.andreacammarata.com/tutorials/sencha-touch-2-tutorials/progressbar-development-part-2.html">La sviluppo del componente &#8211; Seconda Parte</a></li>
<li>Creazione dello stile utilizzando Compass e Sass</li>
<li>Ottimizzazione tramite l&#8217;aggiunta di piccoli dettagli</li>
</ul>
<p></center></p>
<p>Questo tutorial sarà molto esteso, quindi ho deciso di scomporlo in tanti piccoli articoli, ognuno dei quali tratterà le fasi appena elencate. Prestate comunque attenzione: Questo mini gruppo di articoli sono soprattutto rivolti agli sviluppatori con un minimo di familiarità con SenchaTouch 1, quindi, nel caso foste ancora &#8220;alle prime armi&#8221;, vi consiglio di partire con qualcosa di più semplice, cercando di fare un passo alla volta e, soprattutto, non abbiate fretta. Cercate di dedicare del tempo allo studio del framework stesso anziché partire subito con lo sviluppo di un&#8217;applicazione complessa. Tenete sempre bene a mente che stiamo sviluppando per dispositivi mobili, quindi creare un&#8217;applicazione &#8220;leggera&#8221; e performante non è un opzional, ma una necessità.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreacammarata.com/tutorials/sencha-touch-2-tutorials/how-to-develop-a-progressbar.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sencha Touch 2 PR3</title>
		<link>http://www.andreacammarata.com/news/sencha-touch-2-pr3.html</link>
		<comments>http://www.andreacammarata.com/news/sencha-touch-2-pr3.html#comments</comments>
		<pubDate>Sat, 10 Dec 2011 10:30:49 +0000</pubDate>
		<dc:creator>Andrea Cammarata</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Sencha Touch 2]]></category>

		<guid isPermaLink="false">http://www.andreacammarata.com/?p=757</guid>
		<description><![CDATA[This short post to announce that is now available the version PR3 of Sencha Touch. In addition to many bug fixes, in this version, that is supposed to be the last before the actual stable release, the dev team introduced a new component called &#8220;NavigationView&#8221;. This simple but very useful component allows you to easily [...]]]></description>
			<content:encoded><![CDATA[<p>This short post to announce that is now available the version PR3 of Sencha Touch. In addition to many bug fixes, in this version, that is supposed to be the last before the actual stable release, the dev team introduced a new component called &#8220;NavigationView&#8221;.<br />
This simple but very useful component allows you to easily create, with a number of lines of code greatly reduced, a classic multi-view navigation system that automatically takes care of the transition animation between a view and another, updating the title of the Toolbar and hiding / showing the button that will allow the user to go back to the previous view. An excellent component that will make life easier for many developers, making them very happy <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .<br />
You can find a simple example of this component to the link below</p>
<p style="text-align: center;"><a href="http://docs.sencha.com/touch/2-0/#!/example/navigationview/index.html" target="_blank">NavigationView Example</a></p>
<p>while its documentation, can be reached by this other address</p>
<p style="text-align: center;"><a href="http://docs.sencha.com/touch/2-0/#!/api/Ext.navigation.View" target="_blank">NavigationView Docs</a></p>
<p>I also point out that the entire Sencha Touch 2 documentation has been completely updated, so it&#8217;s now finally possible to see, for example, the complete list of all the events associated with each component as you can see from the screenshot below.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-759" style="border: solid 1px #FFF;" title="sencha-touch-2-events" src="http://www.andreacammarata.com/wp-content/uploads/2011/12/sencha-touch-2-events.png" alt="" width="600" height="547" /></p>
<p>So now you have no more excuses to find events of interest in the documentation by yourself, so just don&#8217;t ask the same questions in Sencha forums (joke of course <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ).<br />
Well, I only miss to show you the address where you can download the latest version of this wonderful framework and to wish you &#8220;Happy Coding&#8221; <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p style="text-align: center;"><strong><a href="http://cdn.sencha.io/touch/sencha-touch-2-pr3.zip" target="_blank">Download Sencha Touch 2 PR3</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreacammarata.com/news/sencha-touch-2-pr3.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SenchaCon 2011 &#8211; Il Viaggio</title>
		<link>http://www.andreacammarata.com/viaggi/senchacon-2011-the-flight.html</link>
		<comments>http://www.andreacammarata.com/viaggi/senchacon-2011-the-flight.html#comments</comments>
		<pubDate>Thu, 08 Dec 2011 22:23:08 +0000</pubDate>
		<dc:creator>Andrea Cammarata</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Viaggi]]></category>

		<guid isPermaLink="false">http://www.andreacammarata.com/?p=646</guid>
		<description><![CDATA[Beh che dire, forse non il modo migliore di raggiungere gli States ma non posso sicuramente lamentarmi! Sveglia alle 05.00 di Sabato 22 Ottobre, tempo di una doccia, un&#8217;abbondante colazione e via verso l&#8217;aeroporto Marconi di Bologna. Tenendo in considerazione la mia stanchezza dovuta al fatto che il giorno prima, sono stato costretto a svegliarmi [...]]]></description>
			<content:encoded><![CDATA[<p>Beh che dire, forse non il modo migliore di raggiungere gli States ma non posso sicuramente lamentarmi! Sveglia alle 05.00 di Sabato 22 Ottobre, tempo di una doccia, un&#8217;abbondante colazione e via verso l&#8217;aeroporto Marconi di Bologna.<br />
Tenendo in considerazione la mia stanchezza dovuta al fatto che il giorno prima, sono stato costretto a svegliarmi alle 03.00 per partecipare all&#8217;ennesima riunione del CSRPAD a Roma, potete sicuramente capire la modalità Zombie con la quale ho posato il piede giù dal letto a quell&#8217;ora. Ma sono bastati cinque minuti affinché il senso di torpore svanisse per lasciar posto ad un mix di eccitazione scatenata dalla consapevolezza di dover affrontare questa pazzesca esperienza.</p>
<p>Finalmente giungo in aeroporto intorno alle 06.00, ma il mio volo non partirà prima della 10.30. Essendo un volo intercontinentale, mi è stato vivamente consigliato dalle compagnie aeree di recarmi in aeroporto almeno tre ore prima dell&#8217;ora di partenza prevista, cosa che si è rilevata assolutamente inutile visto e considerato che non è stato possibile consegnare il bagaglio prima delle 09.00, non appena la Lufthansa ha dato il via per il check-in.<br />
In questo lasso di tempo che sembra non passare ma, trovo tuttavia un modo utile di ingannare il tempo: decido di avvolgere la mia amabile valigia in quello che ha tutto l&#8217;aspetto di essere un &#8220;condom&#8221; rosso fuoco <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-655" title="Safe Bag" src="http://www.andreacammarata.com/wp-content/uploads/2011/11/AcVrCInCAAAzq6n.jpg" alt="" width="300" height="400" /></p>
<p>Voglio precisare che questo rivestimento è una protezione che consente di impedire che il bagaglio venga aperto durante le procedure di smistamento, e visto che dovrò affrontare non uno, ma ben tre voli prima di mettere piede su suolo Americano, preferisco evitare in partenza spiacevoli inconvenienti. Quindi, ripeto, soprattutto a tutte quelle persone che una volta fatto scalo a Huston, osservandomi prelevare il mio bagaglio dal nastro trasportatore si sono avvicinate con compassione domandandomi; &#8220;Is that your baggage?&#8230;I&#8217;m so sorry for you!&#8221;, si tratta di un rivestimento protettivo, e non di un rattoppo improvvisato applicato al fine di rattoppare una valigia ormai distrutta dagli addetti dell&#8217;aeroporto, anche se, osservandola bene, posso ben capire il loro rammarico <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .<br />
Dopo questa piccola parentesi, passiamo oltre&#8230;<br />
Tra un giro in aeroporto qualche caffè e un po di tempo trascorso ad approfondire la mia conoscenza su CSS3 leggendo un ottimo libro acquistato dal Kindle Store, giungono finalmente le 10.30, quindi mi imbarco sull&#8217;Airbus A320 di Lufthansa per un volo di circa un ora e mezza, destinazione Francoforte.</p>
<p><center></p>
<table>
<tbody>
<tr>
<td><img class="size-medium wp-image-659 aligncenter" title="Airbus320_Lufthansa-1" src="http://www.andreacammarata.com/wp-content/uploads/2011/11/Airbus320_Lufthansa-1-300x187.jpg" alt="" width="300" height="187" /></td>
<td><img class="size-medium wp-image-660 aligncenter" title="Airbus320_Lufthansa-Interior" src="http://www.andreacammarata.com/wp-content/uploads/2011/11/Airbus320_Lufthansa-Interior-300x225.jpg" alt="" width="300" height="187" /></td>
</tr>
</tbody>
</table>
<p></center><br />
Il volo trascorre velocemente, così, dopo aver sgranocchiato uno snack e un caffè gentilmente offerti da Lufthansa, raggiungo serenamente la mia destinazione e mi incammino con passo spedito verso il terminal dal quale partirà il volo che mi permetterà di giungere finalmente negli States dopo un volo di circa dieci ore e mezzo. Così, dopo una chiacchierata con una simpatica coppia francese ed un&#8217;anziana signora che ci ha spiegato un po come funzionano le cose in America, salgo finalmente a bordo del Boing 777 della United Airlines.</p>
<p><center></p>
<table>
<tbody>
<tr>
<td><img class="aligncenter size-full wp-image-735" title="boeing-777" src="http://www.andreacammarata.com/wp-content/uploads/2011/12/boeing-777.jpg" alt="Boeing 777" width="300" height="187" /></td>
<td><img class="aligncenter size-full wp-image-736" title="boeing-777-inside" src="http://www.andreacammarata.com/wp-content/uploads/2011/12/boeing-777-inside.jpg" alt="Boeing 777 Layout" width="300" height="187" /></td>
</tr>
</tbody>
</table>
<p></center></p>
<p>Come potete immaginare, un volo intercontinentale richiede un aereo dalle dimensioni, oltre che dalle prestazioni, decisamente superiori rispetto all&#8217;Airbus di Lufthansa, e questo presenta tutte le caratteristiche richieste oltre a numerosi confort che mi permetteranno di affrontare comodamente questo lungo viaggio.<br />
Eccitato dal mio primo viaggio in territorio Americano, non riesco a chiudere occhio (a dire il vero non ci ho neanche provato), quindi decido di guardarmi qualche film direttamente dal monitor Touch Screen di undici pollici posto sul retro di ogni sedile. Il sistema di intrattenimento multimediale proposto è davvero ben fornito: posso infatti scegliere quale film guardare scegliendo da una libreria di circa duecento titoli, e selezionare la lingua tra una delle quattro disponibili: Italiano, Inglese, Tedesco e Spagnolo. Ovviamente la lingua selezionata è l&#8217;inglese per tutti e cinque film che mi hanno intrattenuto durante questo interminabile viaggio.</p>
<p>Intuisco che molto probabilmente non vi interessa sapere quali fossero, ma voglio elencarveli ugualmente <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<ul>
<li>Captain America</li>
<li>Bad Teacher</li>
<li>Cars 2</li>
<li>I Pinguini di Mr. Popper</li>
<li>Piovono Polpette</li>
</ul>
<p>Così in compagnia di questi film, dopo parecchi caffè e una cena precotta abbastanza gustosa, è giunta l&#8217;ora di portare le lancette dell&#8217;orologio indietro di otto ore: è finalmente giusto il momento l&#8217;ora dell&#8217;atterraggio a Huston. Sono le ore 17.35 locali, ovvero circa le 01.35 del mattino in Italia. Ma non è ancora finita..</p>
<p>Dopo il rituale controllo dei passaporti e la scansione delle impronte che mi vedono bloccato per circa mezz&#8217;ora nella coda destinata ai non &#8220;Non US Citizen&#8221;, posso ora ritirare il mio bagaglio, imbarcarlo per il prossimo volo, e, dopo aver superato con successo il &#8220;Body Scanner&#8221; mi dirigo con passo spedito verso il prossimo terminal.</p>
<p>Dopo una camminata di circa dieci minuti, raggiungo finalmente il terminal, e, mentre mi lascio tentare dall&#8217;acquisto di una delle tante felpe souvenir &#8220;Huston, abbiamo un problema&#8221; (alla quale non cederò <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ), incontro finalmente le prime facce conosciute, ovvero ragazzi con i quali ho parlato per anni sul forum Sencha, ma che non ho mai avuto il piacere di incontrare di persona. Tra queste anche <a title="Nils Dehl" href="http://twitter.com/#!/nilsdehl" target="_blank">Nils Dehl</a> il quale avrà un ruolo fondamentale durante la conferenza grazie alle sue eccellenti fotografie, un ottimo showcase di un&#8217;applicazione Sencha Touch che terrà nei prossimi giorni e anche grazie all&#8217;applicazione sviluppata durante l&#8217;Hackahon sponsorizzato dal Google Chrome Team. Ma di questo ne parleremo più avanti. Dopo qualche chiacchiera siamo finalmente pronti per l&#8217;imbarco, quindi, dopo aver preso posto sull&#8217;aereo e aver dato un&#8217;occhiata ad un piccolo match di football americano, è arrivato il momento di affrontare l&#8217;ultimo volo di circa un&#8217;oretta a bordo del Boeing 737-800 sempre della United Airlines.</p>
<p><center></p>
<table>
<tbody>
<tr>
<td><img class="aligncenter size-full wp-image-738" title="boeing-737-800" src="http://www.andreacammarata.com/wp-content/uploads/2011/12/boeing-737-800.jpg" alt="Boeing 737-800" width="300" height="187" /></td>
<td><img class="aligncenter size-full wp-image-739" title="boeing-737-800-layout" src="http://www.andreacammarata.com/wp-content/uploads/2011/12/boeing-737-800-layout.jpg" alt="Boeing 737-800 layout" width="300" height="187" /></td>
</tr>
</tbody>
</table>
<p></center></p>
<p>Dopo essere decollati alle ore 19.15 circa, sono finalmente giunte le ore 20.00 ed è il momento dell&#8217;atterraggio, quindi, solita solfa: dopo aver atteso e prelevato il mio bagaglio fortunatamente ancora integro (e sempre completamente avvolto dal condom color rosso vivo <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Ci dirigiamo all&#8217;esterno dove, per prima cosa, ripongo immediatamente il mio cappotto invernale visto la temperatura di circa 30°C, e dopo aver discusso su quale fosse il modo migliore per raggiungere l&#8217;Hilton hotel, optiamo per un taxi, quindi, dopo circa quindici minuti raggiungiamo finalmente la nostra destinazione finale. Ma questo è soltanto l&#8217;inizio&#8230; Seguitemi nel prossimo articolo dove parlerò in primis di questa enorme struttura alberghiera che è L&#8217;Austin Hilton Hotel&#8230;a dire il vero, più che un hotel sembra seriamente essere un intero quartiere <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreacammarata.com/viaggi/senchacon-2011-the-flight.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sencha Solutions Engineer</title>
		<link>http://www.andreacammarata.com/news/sencha-solutions-engineer.html</link>
		<comments>http://www.andreacammarata.com/news/sencha-solutions-engineer.html#comments</comments>
		<pubDate>Sun, 04 Dec 2011 17:32:24 +0000</pubDate>
		<dc:creator>Andrea Cammarata</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.andreacammarata.com/?p=707</guid>
		<description><![CDATA[Finalmente, ad ormai poco più di un mese di distanza, trovo il tempo di scrivere questo piccolo post per annunciare ufficialmente un&#8217;ottima news che mi vede coinvolto in prima persona. A partire dal 1 Novembre 2011 infatti, dopo essermi dimesso dal mio precedente impiego lavorativo, che mi vedeva spesso coinvolto in riunioni tecniche presso il [...]]]></description>
			<content:encoded><![CDATA[<p>Finalmente, ad ormai poco più di un mese di distanza, trovo il tempo di scrivere questo piccolo post per annunciare ufficialmente un&#8217;ottima news che mi vede coinvolto in prima persona. A partire dal 1 Novembre 2011 infatti, dopo essermi dimesso dal mio precedente impiego lavorativo, che mi vedeva spesso coinvolto in riunioni tecniche presso il ministero dei trasporti italiano, al fine di discutere e successivamente sviluppare software sulla base delle nuove normative emesse, ho il piacere di comunicarvi che il mio nuovo impiego professionale, mi vede far parte del team di sviluppo di una nota casa Americana, il cui quartier generale è ubicato a Redwood City (California). Se queste informazioni non vi suggerissero ancora nulla, beh, allora non mi resta che annunciarne il nome&#8230;sto parlando di <a href="http://www.sencha.com">Sencha</a> <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Sencha è specializzata nella realizzazione di frameworks all&#8217;avanguardia, destinati allo sviluppo di applicazioni web, grazie ad ExtJS, applicazioni mobili tramite Sencha Touch, ma anche avanzate animazioni HTML5 / CSS3 grazie al nuovo Sencha Animator. Dopo molti anni di esperienza ed un ricco portfolio di applicazioni sviluppate per diversi clienti europei ed Americani, dopo tutto questo tempo in cui ho visto crescere giorno dopo giorno la compagnia, e il mio interesse nella società si è spinto oltre al voler semplicemente realizzare nuove applicazioni utilizzando i loro prodotti fino al punto di voler fermamente entrare a farne parte della squadra, ma soprattutto, grazie a <a href="http://www.sencha.com/forum/member.php?22216-mitchellsimoens">Mitchell Simoens</a> e diversi membri dello staff che hanno creduto in me e nelle mie capacità dopo aver osservato il mio operato durante gli anni trascorsi, posso finalmente affermare di essere parte di questo grande team di sviluppo, con la qualifica di Sencha Solutions Engineer!</p>
<p>Attualmente il mio lavoro viene svolto da remoto qui in Italia, in attesa dell&#8217;imminente trasferimento in California.</p>
<p>In conclusione non mi resta che affermare di essere letteralmente elettrizzato da questa nuova esperienza all&#8217;interno di una società da me sempre stimata e conosciuta in tutto il mondo, e, aggiungo, con tutta onestà, che non vedo l&#8217;ora arrivi il momento del trasferimento oltreoceano, per abbandonare, se pur un po a malincuore, la mia patria ed affrontare una nuova sfida lavorativa, vivendo, come si suol dire &#8220;The American Dream&#8221; <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<div id="attachment_717" class="wp-caption aligncenter" style="width: 610px"><img class="size-full wp-image-717" title="sencha-andrea-cammarata" src="http://www.andreacammarata.com/wp-content/uploads/2011/12/sencha-andrea-cammarata.jpg" alt="" width="600" height="397" /><p class="wp-caption-text">Thanks to Nils Dehl for his great SenchaCon 2011 Pictures <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p></div>
<p><img class="aligncenter size-full wp-image-714" title="signature" src="http://www.andreacammarata.com/wp-content/uploads/2011/12/signature.png" alt="" width="500" height="100" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreacammarata.com/news/sencha-solutions-engineer.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SenchaCon 2011</title>
		<link>http://www.andreacammarata.com/viaggi/senchacon-2011.html</link>
		<comments>http://www.andreacammarata.com/viaggi/senchacon-2011.html#comments</comments>
		<pubDate>Sun, 13 Nov 2011 14:51:57 +0000</pubDate>
		<dc:creator>Andrea Cammarata</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Viaggi]]></category>

		<guid isPermaLink="false">http://www.andreacammarata.com/?p=672</guid>
		<description><![CDATA[Let&#8217;s start by saying..WOW! What a great week! Most likely the days spent in Austin (TX) are part of one of the best experience of my life. But before to tell you all the details of this intense week, I want to thanks Michael Mullany and all the Sencha staff, for giving me the opportunity [...]]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s start by saying..WOW! What a great week! Most likely the days spent in Austin (TX) are part of one of the best experience of my life. But before to tell you all the details of this intense week, I want to thanks Michael Mullany and all the Sencha staff, for giving me the opportunity to take part in the unforgettable SenchaCon 2011, paying for the trip and the hotel for all the conference days. So, <strong>really thank you guys!!! </strong><br />
I have a lot to say on the past days, so I&#8217;ve decided to split this post in some parts. This will give me the opportunity to take all the needed time I need to tell all the details of this great experience.<br />
I anticipate that I will need some weeks before I will find the time to write all these parts, so please be patient and I suggest you to come back on this post to check if I&#8217;ve added some new links. Below, you will find the list of links to all the already written parts.<br />
So, hoping to see you at the next Sencha conference, I which you a good read <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
<center></p>
<ul class="card-list">
<li>The flight</li>
<li>The Austin Hilton Hotel</li>
<li>Austin City(TX)</li>
<li>Sencha Team</li>
<li>Sencha Community</li>
<li>SenchaCon</li>
<li>Hackathon</li>
<li>Conclusions</li>
</ul>
<p></center></p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreacammarata.com/viaggi/senchacon-2011.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Minglle</title>
		<link>http://www.andreacammarata.com/news/minglle.html</link>
		<comments>http://www.andreacammarata.com/news/minglle.html#comments</comments>
		<pubDate>Sun, 02 Oct 2011 09:42:57 +0000</pubDate>
		<dc:creator>Andrea Cammarata</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.andreacammarata.com/?p=605</guid>
		<description><![CDATA[Here&#8217;s a preview of a new Sencha Touch application developed in record time (just one week), for Minglle LLC.Minglle is really an interesting application, in fact, thanks to LinkedIn API, it allows you to create and manage several events, and, thanks to some basic features, it allows to all the attendees to find people who [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a preview of a new Sencha Touch application developed in record time (just one week), for <a href="http://www.minglle.com/">Minglle LLC</a>.Minglle is really an interesting application, in fact, thanks to LinkedIn API, it allows you to create and manage several events, and, thanks to some basic features, it allows to all the attendees to find people who want to talk about common interests. It happens very often that attendees are completely lost trying to find those people. In these cases, Minglle comes to helps you! Thanks to his search feature, you will be able to find all the attendees on a common argument, and, when you find them, you can simply send a message to ask for a meet and&#8230;voilà! Les jeux sont fait! <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Take a look at the following videos that will allow you to understand better how to use Minglle. As always, I will never get tired to tell you, please feel you free to write any feedback about it.</p>
<p style="text-align: center;"><strong>Demonstration Video</strong></p>
<p style="text-align: center;"><iframe title="YouTube video player" class="youtube-player" type="text/html" width="640" height="360" src="http://www.youtube.com/embed/q0Yw6wzJe8k" frameborder="0" allowFullScreen="true"> </iframe></p>
<p style="text-align: center;">&nbsp;</p>
<p style="text-align: center;"><strong>Presenting Minglle at Startup Riot</strong></p>
<p style="text-align: center;"><iframe title="YouTube video player" class="youtube-player" type="text/html" width="640" height="360" src="http://www.youtube.com/embed/CkD_F20Vh58" frameborder="0" allowFullScreen="true"> </iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreacammarata.com/news/minglle.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Catalogo.mobi preview</title>
		<link>http://www.andreacammarata.com/news/catalogo-mobi-preview.html</link>
		<comments>http://www.andreacammarata.com/news/catalogo-mobi-preview.html#comments</comments>
		<pubDate>Sat, 01 Oct 2011 22:05:42 +0000</pubDate>
		<dc:creator>Andrea Cammarata</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.andreacammarata.com/?p=589</guid>
		<description><![CDATA[After some months of work, I&#8217;m finally proud to show you a preview of Catalogo.mobi, a Sencha Touch application developed for Ashnet Consulting and intended for commercial agents that will allow them to easily handle different kinds of catalogs directly on their iPad devices. Companies that are interested in using Catalogo.mobi, should subscribe a contract [...]]]></description>
			<content:encoded><![CDATA[<p>After some months of work, I&#8217;m finally proud to show you a preview of Catalogo.mobi, a Sencha Touch application developed for <a href="http://portal.ashnet.it/">Ashnet Consulting</a> and intended for commercial agents that will allow them to easily handle different kinds of catalogs directly on their iPad devices. Companies that are interested in using Catalogo.mobi, should subscribe a contract with Ashnet and, after some minutes, they will have immediately access to the online application that will allow them to create their catalogs and load the associated products. The application offers several features, so let me that I will list you some of them:</p>
<ul>
<li>View Catalogs and Products in different languages.</li>
<li>Orders creation.</li>
<li>Currency price lists.</li>
<li>Catalogs navigation by pages, types and brands.</li>
<li>View products pictures, PDF and videos.</li>
<li>Calculator.</li>
<li>And much more&#8230;</li>
</ul>
<p>Actually the application is at version 1.5.0, but we are waiting that the back-office development will be completed before to release it officially. In the meantime, I&#8217;m going to show you a funny commercial that was realize to sell the application.</p>
<p style="text-align: center;"><iframe title="YouTube video player" class="youtube-player" type="text/html" width="640" height="360" src="http://www.youtube.com/embed/M2DiRRy0hN4" frameborder="0" allowFullScreen="true"> </iframe></p>
<p style="text-align: center;">&nbsp;</p>
<p>Finally, you can see a demonstration video that will show you how the application works and which features it offers. Don&#8217;t care to much at the application layout, because it has to be completed by the graphic designer.</p>
<p style="text-align: center;"><iframe title="YouTube video player" class="youtube-player" type="text/html" width="640" height="360" src="http://www.youtube.com/embed/07e-N54H4Tc" frameborder="0" allowFullScreen="true"> </iframe></p>
<p style="text-align: center;">&nbsp;</p>
<p>As always, please feel you free to write any feedback about the application <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreacammarata.com/news/catalogo-mobi-preview.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

