<?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/"
	xmlns:series="http://unfoldingneurons.com/"
	>

<channel>
	<title>Francesco Corsentino .net &#187; framework</title>
	<atom:link href="http://corsentino.net/tag/framework/feed/" rel="self" type="application/rss+xml" />
	<link>http://corsentino.net</link>
	<description>blogger // writer // student</description>
	<lastBuildDate>Thu, 29 Jul 2010 07:48:01 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Le 5 regole di un buon programmatore</title>
		<link>http://corsentino.net/2010/07/le-5-regole-di-un-buon-programmatore/</link>
		<comments>http://corsentino.net/2010/07/le-5-regole-di-un-buon-programmatore/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 15:08:53 +0000</pubDate>
		<dc:creator>Kiko</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[best-practices]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://corsentino.net/?p=920</guid>
		<description><![CDATA[Mai come in questo periodo mi sono trovato a scrivere codice e leggere codice (il mio e quello degli altri). Ho dovuto rimettere mano a vecchio codice prodotto, a piccole librerie create in passato (che a distanza di anni non valuto certo con voti altissimi). Mi sono ritrovato a confrontare un vecchio lavoro con quelli [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcorsentino.net%2F2010%2F07%2Fle-5-regole-di-un-buon-programmatore%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcorsentino.net%2F2010%2F07%2Fle-5-regole-di-un-buon-programmatore%2F" height="61" width="51" /></a></div><p>Mai come in questo periodo mi sono trovato a scrivere codice e leggere codice (il mio e quello degli altri). Ho dovuto rimettere mano a vecchio codice prodotto, a piccole librerie create in passato (che a distanza di anni non valuto certo con voti altissimi). Mi sono ritrovato a confrontare un vecchio lavoro con quelli attuali, notando incredibili differenze in fatto di qualità del codice, prima ancora delle qualità delle conosocenze. A quel punto è stato facile derivare un paio di fattori chiave che potrebbero distinguere un buon programmatore da un ottimo programmatore, in attesa di capire la categoria nella quale sistemarmi. Sperando di poter regalare al lettore qualche utile consiglio.</p>
<h2>1. Documentare il codice</h2>
<p><a href="http://corsentino.net/wp-content/uploads/comment.jpg"><img class="alignleft size-medium wp-image-925" title="Documentare il codice" src="http://corsentino.net/wp-content/uploads/comment-300x75.jpg" alt="" width="300" height="75" /></a>Scrivere chiari e precisi commenti è impagabile. Permettono di <strong>leggere più facilmente il codice</strong> senza impazzire dietro ad algoritmi o funzioni o parametri conditi di mistero e di cui se ne disconosce la funzione, il significato e il motivo della loro esistenza. Gli stessi commenti devono essere scritti con coscienza, senza badare troppo alla forma magari, ma senza rinunciare a una certa formalità e un certo stile. Bisogna cercare di essere sempre chiari nelle spiegazioni e di non dare nulla per scontato. Prolissi e completi quando è rischiesto dal contesto, concisi quando è inutile divagare o spiegare cose ovvie e facilmente deducibili. Quando a distanza di tempo ci toccherà rimettere mano a un codice che abbiamo scritto di nostro pugno e di cui non ricordiamo molto, una veloce lettura dei commenti ci permette in pochi secondi di ritornare nella dimensione di quel progetto. Una buona documentazione del codice permette un alto livello di <em><a href="http://en.wikipedia.org/wiki/Maintainability" target="_blank">maintainability</a> </em>dello stesso. Nel caso, poi, ci fosse la necessità di collaborare con altri sviluppatori, il non dover chiedere costantemente chiarimenti su una funzione o un parametro permette di velocizzare il lavoro e migliorarlo sotto tutti i punti di vista, in quanto troveremo tutte le risposte dentro i commenti.</p>
<p>E&#8217; possibile, in ultimo, estrarre dal codice sorgente i commenti formattati in un certo modo e produrre così un manuale per gli sviluppatori o una <em>reference</em>. Tutto in modo automatico ed evitando un doppio e tedioso lavoro. Uno strumento molto apprezzato, in tale contesto, è <a href="http://www.phpdoc.org/" target="_blank">phpDoc</a> (facile immagine per quale linguaggio).</p>
<p>Ultima raccomandazione, che a molti potrà suonare <em>strana</em> o esagerata. Se pensate che il vostro codice possa essere degno del panorama internazionale, cioè di un pubblico non solo italiano, allora è bene cominciare a prendere confidenza con l&#8217;inglese-scritto e commentare il codice in questa lingua.</p>
<h2>2. Scrivere buon codice</h2>
<p>E&#8217; difficile in poche righe capire cosa significa &#8220;scrivere buon codice&#8221;, ma ci provo. Fra l&#8217;altro è una delle prime cose che uno studente si sente dire da un buon professore. Il pieno significato di un simile avvertimento dal sapore di consiglio lo si coglie solo quando si lavora seriamente a qualche progetto. O quando ci si confronterà con altri sviluppatori. Scrivere buon codice significa <strong>scrivere i nomi delle funzioni scegliendo i migliori termini</strong>, i più espressivi in assoluto. Conviene eliminare inutili abbreviazioni, solo per risparmiare qualche carattere e guadagnare qualche decimo di secondo in più sulla digitazione. Significa scrivere un codice la cui sola lettura è bastevole per capirne l&#8217;implementazione. Generalmente una funzione chilometrica è sintomo di scarsa progettazione del codice, il che non vuol dire che poi le cose non funzionano. La migliore palestra, in tal senso, è la lettura di codice dei migliori programmatori che potete trovare in rete e l&#8217;analisi di progetti dal codice aperto.</p>
<h2>3. Framework e librerie</h2>
<p><a href="http://corsentino.net/wp-content/uploads/framework.jpg"><img class="alignright size-medium wp-image-926" title="Quale framework?" src="http://corsentino.net/wp-content/uploads/framework-300x199.jpg" alt="" width="300" height="199" /></a><strong>Spesso ci si trova a riscrivere del codice che in realtà esiste già</strong> e probabilmente risulta più completo del nostro, oltre che più efficace. Pertanto prima di buttarsi a capofitto nella scrittura di nuove classi occorre capire cosa offre Internet. Esistono diversi utilissimi siti dove poter trovare del buon codice (citiamo su tutti <a href="http://sourceforge.net/" target="_blank">Sourceforge</a>). Ed esiste Google per cercare eventuali librerie già pronte per essere usate nei nostri progetti. Se nulla ci soddisfa allora non resta che scrivere quanto abbiamo di bisogno. Se abbiamo intrapreso quest&#8217;ultima strada è buona cosa pensare non al progetto in sé, quanto piuttosto ai problemi generali che intendiamo risolvere. E&#8217; questo infatti il caso migliore per pensare a una libreria riutilizzabile pure in altri progetti. Se poi siamo soliti lavorare su applicazioni che in qualche modo hanno molte somiglianze fra di loro, beh allora conviene pensare a qualche <a href="http://corsentino.net/tag/framework/">framework</a>. Generalmente una grande società di software ne progetta uno e provvede a usarlo nei vari lavori. Uno sviluppatore indipendente può lanciare a se stesso la stuzzicante sfida di costruirne uno nuovo, o studiare per bene un framework esistente.</p>
<p>In tal senso <strong>un buon framework</strong> (<a href="http://rubyonrails.org/" target="_blank">Rails</a> per i programmatori Ruby, <a href="http://framework.zend.com/" target="_blank">Zend</a> o <a href="http://www.symfony-project.org/" target="_blank">Symfony</a> per i programmatori <a href="http://corsentino.net/tag/php/">PHP</a>, <a href="http://www.djangoproject.com/" target="_blank">Django</a> per gli appassionati di <a href="http://corsentino.net/tag/python/">Python</a>) <strong>potrebbe essere una ottima base per sviluppare una grande applicazione</strong>. Ma occorre valutare per bene ogni fattore. Spesso un framework rischia di appesantire lo sviluppo e se non riusciamo ad ottimizzarne la configurazione rischiamo pure di ottenere un prodotto dalle scarse performance. E&#8217; opportuno inoltre non focalizzarsi soltanto su un prodotto, ma studiarne più di uno per capire realmente benefici e svantaggi di ognuno di loro. A quel punto, e solo a quel punto, conviene sceglierne uno e provare a padroneggiarlo al meglio. In altre parole: non limitarsi a leggere qualche articolo su Internet (raramente ho scovato delle analisi pienamente oggettive sui software e sui framework), ma sperimentare le soluzioni. Quindi specializzarsi su un prodotto.</p>
<h2>4. Standard e best practices</h2>
<p>I design pattern vanno studiati, compresi e quindi usati. Spesso ci si accorge che bravi programmatori li disconoscono ed è un male. Pattern quali <a href="http://it.wikipedia.org/wiki/Model-View-Controller" target="_blank">MVC</a> offrono una potenza incredibile. E numerosi altri pattern offrono una soluzione ottimale a ricorrenti problemi per quanto riguarda la programmazione (che è poi la definizione di <a href="http://en.wikipedia.org/wiki/Design_pattern_(computer_science)" target="_blank">Design Pattern</a>).</p>
<p>Quando parliamo di <em>best practices</em> ci riferiamo a delle esperienze che altri hanno già maturato in qualche settore professionale e nelle quali hanno raggiunto ottimi risultati. Potete pensare a delle regole generali, più o meno formalizzate, o a degli esempi opportunamente descritti e commentati. Per quanto mi riguarda mi sono stati utilissimi i libri di ingegneria del software che ho letto e sui quali ho trovato diversi riferimenti a ulteriori libri e articoli. Potete recuperare su internet diverse interviste a eminenti sviluppatori che raccontano le loro esperienze e le loro idee.</p>
<h2>5. Pensare. Poi scrivere codice</h2>
<p><strong><a href="http://corsentino.net/wp-content/uploads/thinking.jpg"><img class="alignleft size-medium wp-image-927" title="Pensare pensare pensare" src="http://corsentino.net/wp-content/uploads/thinking-234x300.jpg" alt="" width="234" height="300" /></a>Lontano da una schermo e una tastiera si riesce meglio a programmare</strong>. Sembra un paradosso, invece è la pura realtà. Provate a pensare alla vostra architettura fuori da una finestra di Mac o di Windows o di Linux. Fogli di carta, penna, matita e idee. Non è tempo sprecato, anzi tutto il contrario. Uno schermo con icone e testo, una tastiera e un mouse possono risultare degli elementi destabilizzanti e di distrazione. Si è tentati di scrivere subito del codice funzionante, salvo poi scoprire che una funzione poteva essere scritta meglio, o un insieme di classi poteva essere progettato in modo più intelligente. A quel punto tornare indietro è complicato. <a href="http://en.wikipedia.org/wiki/Code_refactoring" target="_blank">Rifattorizzare</a> equivale a partire da zero (e a un livello iniziale non si parla certo di <em>refactoring</em>) e, si realizzerà con estremo rammarico, di aver buttato via preziose ore di lavoro.</p>
<p><strong>Ponderare bene le scelte</strong>: tracciare diagrammi, appuntare note e idee, provare a scrivere un piano di sviluppo. Anche senza badare alla forma, una sorta di <a href="http://www.kikoweb.org/blog/100/brainstorming-what-is-it" target="_blank">brainstorming</a> solitario. Fate una lista dei problemi da risolvere, delle possibili soluzioni cui avete pensato e, dopo una pausa lontano da tutti e tutto, rileggete con attenzione quanto avete scritto e cercate di capire se è l&#8217;ora di mettersi a scrivere codice o conviene dedicare ancora qualche minuto a questa meditazione pre-sviluppo.</p>
<p>Non esiste un libro delle soluzioni in informatica. Esiste però una quantità smisurata di <em>handle</em> di soluzioni. Queste <em>maniglie</em> altro non sono che il codice e gli applicativi che altri programmatori hanno già realizzato e rilasciato. <strong>Dare uno sguardo all&#8217;interno del codice scritto da terzi</strong> (e dovete ovviamente scegliere i migliori terzi, perché conviene imparare soltanto dai migliori) si rivelerà presto preziosa lettura e fonte di soluzioni. Il che non vuol dire che dovete copiare, ma certamente ispirarvi. O, più umilmente, imparare.</p>
]]></content:encoded>
			<wfw:commentRss>http://corsentino.net/2010/07/le-5-regole-di-un-buon-programmatore/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Un CMS e un framework: è Silverstripe</title>
		<link>http://corsentino.net/2010/06/un-cms-e-un-framework-e-silverstripe/</link>
		<comments>http://corsentino.net/2010/06/un-cms-e-un-framework-e-silverstripe/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 05:30:09 +0000</pubDate>
		<dc:creator>Kiko</dc:creator>
				<category><![CDATA[Resources]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[silverstripe]]></category>

		<guid isPermaLink="false">http://corsentino.net/?p=907</guid>
		<description><![CDATA[Voglio Joomla! E&#8217; la richiesta espressa da un cliente. I colloqui iniziali sono molto interessanti e mi aiutano a capire molto della persona che ho di fronte, più che del committente. Si ragiona, si discute e, se si può, si opera direttamente a computer. La gente tende a usare quello che conosce e il cambiamento [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcorsentino.net%2F2010%2F06%2Fun-cms-e-un-framework-e-silverstripe%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcorsentino.net%2F2010%2F06%2Fun-cms-e-un-framework-e-silverstripe%2F" height="61" width="51" /></a></div><p><em>Voglio Joomla!</em> E&#8217; la richiesta espressa da un cliente. I colloqui iniziali sono molto interessanti e mi aiutano a capire molto della persona che ho di fronte, più che del committente. Si ragiona, si discute e, se si può, si opera direttamente a computer. La gente tende a usare quello che conosce e il cambiamento non è contemplato. Questo però vale solo per le persone testarde e poco informate, o per le persone stupide. Sebbene sia una cosa normale affidarsi a quanto già si conosce, è bene pure prendere in considerazione quanto ti viene detto da gente esperta, o quanto meno più esperta di te. Ragionevolmente si riesce sempre a fare un bilancio dello stato dell&#8217;arte e se, tu sviluppatore, riesci bene a giocarti la carta del convincimento-per-fatti allora il discorso può continuare in modo proficuo e si riesce a lavorare davvero molto bene. Durante l&#8217;ultimo incontro è saltata fuori una domanda: &#8220;ok, che CMS mi suggerisci?&#8221;. Rispondere non è semplice perché la situazione va studiata a fondo e quindi bisognerà adattare un prodotto già esistente o costruire un applicativo<em> ex-novo</em> (problema del <a href="http://it.wikipedia.org/wiki/Make_or_buy" target="_blank">make or buy</a>, presente in tutti i libri di testo di Ingegneria del Software). Prima che riuscissi a rispondere mi viene detto &#8220;che ne pensi di Silverstripe?&#8221;. Lo confesso, non lo conoscevo, avendone sentito parlare soltanto su <a href="http://blog.html.it/21/06/2010/wordpress-30-e-con-noi/" target="_blank">questo post</a>. Ho bluffato e ci siamo promessi di fissare un nuovo incontro per andare più a fondo. Intanto però, ho provato <a href="http://www.silverstripe.org/" target="_blank">Silverstripe</a>.</p>
<p>E&#8217; un CMS molto interessante. Il fatto che abbia vinto il <em>Most Promising Open Source CMS</em> di per sé non dice nulla, oppure può dire tanto. E&#8217; leggero e senza fronzoli, con un numero discreto di plugin e template (certo non l&#8217;esercito di materiale a disposizione per Joomla o WordPress, tanto per citare due concorrenti). La cosa più stimolante di Silverstripe è <a href="http://silverstripe.org/sapphire/" target="_blank">Sapphire</a>, il framework usato per costruirlo e che ogni sviluppatore dovrebbe <a href="http://doc.silverstripe.org/tutorials" target="_blank">studiare</a> per estendere l&#8217;applicazione. Il <a href="http://corsentino.net/tag/framework/">framework</a>, interamente implementato in <a href="http://corsentino.net/tag/php/">PHP</a> versione 5, è davvero ben fatto e consente di modellare in lungo e largo Silverstripe adattandolo al problema. Dentro trovate un po&#8217; di tutto, ovviamente <a href="http://it.wikipedia.org/wiki/Object-relational_mapping" target="_blank">ORM</a> e <a href="http://en.wikipedia.org/wiki/Model–view–controller" target="_blank">MVC</a>. Assolutamente da <a href="http://programmazione.it/index.php?entity=eitem&amp;idItem=44971" target="_blank">provare</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://corsentino.net/2010/06/un-cms-e-un-framework-e-silverstripe/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Definitive Guide to Django</title>
		<link>http://corsentino.net/2010/05/the-definitive-guide-to-django/</link>
		<comments>http://corsentino.net/2010/05/the-definitive-guide-to-django/#comments</comments>
		<pubDate>Tue, 25 May 2010 05:30:00 +0000</pubDate>
		<dc:creator>Kiko</dc:creator>
				<category><![CDATA[In biblioteca]]></category>
		<category><![CDATA[Publications]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://corsentino.net/?p=860</guid>
		<description><![CDATA[Lo sviluppo di software è un&#8217;arte e come tale viene insegnata nei corsi universitari; poi però l&#8217;ambiente di produzione reale è leggermente diverso. Benché le nozioni rimangano inalterate, nella sostanza dei fatti a uno sviluppatore viene richiesto anche altro, pur avendo come obiettivo primario costruire un prodotto efficace e potente. Ciò vale pure per sviluppatori [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcorsentino.net%2F2010%2F05%2Fthe-definitive-guide-to-django%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcorsentino.net%2F2010%2F05%2Fthe-definitive-guide-to-django%2F" height="61" width="51" /></a></div><p>Lo sviluppo di software è un&#8217;arte e come tale viene insegnata nei corsi universitari; poi però l&#8217;ambiente di produzione reale è leggermente diverso. Benché le nozioni rimangano inalterate, nella sostanza dei fatti a uno sviluppatore viene richiesto anche altro, pur avendo come obiettivo primario costruire un prodotto efficace e potente. Ciò vale pure per sviluppatori che lavorano in proprio. Quell&#8217;altro cui accennavo prima è la rapidità con la quale si riesce a completare la scrittura del codice. Nel mondo informatico di oggi, così frenetico e dove il tempo non presenta mai pause, la velocità di produzione è una caratteristica spesso determinante.</p>
<p>Sembrerebbe una introduzione avulsa dal testo che tratta di Django e fondamentalmente di <a href="http://corsentino.net/tag/python/">Python</a>, invece quanto detto ha molta attinenza con l&#8217;argomento del <a href="http://apress.com/book/view/143021936X" target="_blank">libro di Holovaty e Kaplan-Moss</a>. Alla base della creazione di <a href="http://corsentino.net/tag/django/">Django</a> c&#8217;è infatti quanto espresso nelle primissime righe di questa recensione: arte, potenza e velocità. Le prime due caratteristiche sembrano discendere direttamente dal linguaggio di riferimento e cioè Python. Molto si è detto e molto si è scritto su questo favoloso strumento e recentemente abbiamo pure recensito <a href="http://corsentino.net/2010/01/dive-into-python-3/">uno dei migliori libri in circolazione</a>.</p>
<p>[...]</p>
<p>In definitiva il <a href="http://apress.com/book/view/143021936X" target="_blank">libro di Holovaty e Kaplan-Moss</a> è certamente la prima fonte di informazioni per chi intende approcciarsi a Django. Lo stile è di quelli che permettono al lettore di iniziare subito a sperimentare, senza noiose e interminabili letture, alla fine delle quali spesso ci si dimentica di nozioni e dettagli. Manca all&#8217;interno del testo un progetto completo, ma a conti fatti non mi sembra un punto a sfavore. D&#8217;altra parte il libro risulta particolarmente prezioso anche quando bisogna velocemente rivedere qualche dettaglio di implementazione. Il testo si riferisce alla versione 1.1 del framework.</p>
<p>[Via <a href="http://programmazione.it/index.php?entity=eitem&amp;idItem=44599" target="_blank">Programmazione.it</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://corsentino.net/2010/05/the-definitive-guide-to-django/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>SproutCore per costruire web application</title>
		<link>http://corsentino.net/2010/03/sproutcore-per-costruire-web-application/</link>
		<comments>http://corsentino.net/2010/03/sproutcore-per-costruire-web-application/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 06:30:37 +0000</pubDate>
		<dc:creator>Kiko</dc:creator>
				<category><![CDATA[Publications]]></category>
		<category><![CDATA[Resources]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[web-application]]></category>

		<guid isPermaLink="false">http://corsentino.net/?p=813</guid>
		<description><![CDATA[Come si costruiscono applicazioni web potenti? E magari di pari valore a quelle desktop e tradizionali? Generalmente la risposta a queste domande fa uso di qualche buon framework che permetta di risolvere comodamente tutta una serie di compiti. SproutCore è molto potente. Supporta HTML5 e costruisce codice Javascript che renderà il nostro prodotto funzionante e [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcorsentino.net%2F2010%2F03%2Fsproutcore-per-costruire-web-application%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcorsentino.net%2F2010%2F03%2Fsproutcore-per-costruire-web-application%2F" height="61" width="51" /></a></div><p>Come si costruiscono applicazioni web potenti? E magari di pari valore a quelle desktop e tradizionali? Generalmente la risposta a queste domande fa uso di qualche buon framework che permetta di risolvere comodamente tutta una serie di compiti. <a href="http://sproutcore.com/" target="_blank">SproutCore</a> è molto potente. Supporta HTML5 e costruisce codice Javascript che renderà il nostro prodotto funzionante e performante. La Apple lo ha scelto recentemente per sviluppare la parte online di iWork e <a href="http://www.apple.com/it/mobileme/" target="_blank">MobileMe</a>. Una sicurezza.</p>
<blockquote><p>SproutCore non è una semplice libreria al pari di jQuery o Prototype, ma di qualcosa di diverso e di ancora più potente: lo sviluppatore potrà gestire eventi complessi come per le applicazioni desktop. Per il salvataggio dei dati lato server il framework fa uso di chiamate AJAX.</p>
<p>[Via <a href="http://programmazione.it/index.php?entity=eitem&amp;idItem=44060" target="_blank">Programmazione.it</a>]</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://corsentino.net/2010/03/sproutcore-per-costruire-web-application/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Intervista ai creatori di JAMP, framework per lo sviluppo web</title>
		<link>http://corsentino.net/2010/02/intervista-ai-creatori-di-jamp-framework-per-lo-sviluppo-web/</link>
		<comments>http://corsentino.net/2010/02/intervista-ai-creatori-di-jamp-framework-per-lo-sviluppo-web/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 06:30:37 +0000</pubDate>
		<dc:creator>Kiko</dc:creator>
				<category><![CDATA[A tu per tu]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[interviews]]></category>
		<category><![CDATA[jamp]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[web-application]]></category>

		<guid isPermaLink="false">http://corsentino.net/?p=706</guid>
		<description><![CDATA[Un&#8217;idea tutta italiana. Un framework che ha la parvenza di essere molto di più. Orientato al Web, sfrutta le recenti tecnologie in ambito Internet per offrire un supporto potente per quanti vogliono costruire la propria web-application. Di qualunque genere e complessità. Ne avevo già parlato in un recente articolo, ma la curiosità non si è [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcorsentino.net%2F2010%2F02%2Fintervista-ai-creatori-di-jamp-framework-per-lo-sviluppo-web%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcorsentino.net%2F2010%2F02%2Fintervista-ai-creatori-di-jamp-framework-per-lo-sviluppo-web%2F" height="61" width="51" /></a></div><p>Un&#8217;idea tutta italiana. Un framework che ha la parvenza di essere molto di più. Orientato al Web, sfrutta le recenti tecnologie in ambito Internet per offrire un supporto potente per quanti vogliono costruire la propria web-application. Di qualunque genere e complessità. Ne avevo già parlato in un recente articolo, ma la curiosità non si è esaurita. Così mi sono tuffato sul sito ufficiale alla ricerca di quanto più materiale possibile. Alla fine ho deciso di fare la cosa che mi è sembrata più logica: tributare gli autori di <a href="http://corsentino.net/2010/01/jamp-framework-per-lo-sviluppo-web-tutto-italiano/">JAMP</a> con una intervista.</p>
<h3><span style="font-weight: normal;">Non posso non partire dalla presentazione iniziale. Non facco fatica a nascondervi il mio stupore quando ho scoperto il team che sta dietro a JAMP. Mi aspettavo una lunga lista, alla luce dello sforzo incredibile che sta dietro questo progetto, invece ho appuntato due soli nomi. </span><span style="text-decoration: underline;"><span style="font-weight: normal;">Da chi è composto, allora, il team di JAMP? Qual è il vostro background e quale il vostro lavoro?</span></span></h3>
<p>I fondatori e sviluppatori di JAMP siamo Ruben Patanè e Giampiero Ancilletta. E&#8217; comunque corretto da parte nostra ringrazie le molte persone che nel corso della nostra avventura ci hanno dato e continuano a darci una mano in consigli, segnalazioni bug e supporto morale che non guasta mai.</p>
<p><em>Ruben</em>: <em>fino a 19 anni ho vissuto a Torino dove mi sono diplomato perito elettronico, ho iniziato come sistemista presso il Ministero di Grazia e Giustizia e da sempre sono stato uno sviluppatore indipendente, da circa otto anni lavoro presso STMicroelectronics di Catania.</em></p>
<p><em>Giampiero: ho conseguito il diploma di perito informatico e poi la laurea di primo livello in ingegneria elettronica, dopo pochi mesi ho iniziato a lavorare come programmatore nell&#8217;ambito dei sistemi informativi. Dal 2004 lavoro presso la STMicroelectronics sede di Catania ramo IT.</em></p>
<p>Nel 2006 Io e Ruben abbiamo fondato l&#8217; ALYX SOFTWARE INNOVATION, azienda che si occupava di programmazione e configurazione di reti e servizi nell&#8217;ambito dell&#8217;open source. Infine, da circa un&#8217;anno e mezzo è nata l&#8217;avventura di JAMP.</p>
<h3><span style="font-weight: normal;">In poche righe ho cercato di sintetizzare quello che JAMP rappresenta, sicuramente voi farete meglio. Quindi: </span><span style="text-decoration: underline;"><span style="font-weight: normal;">cosa è JAMP? Cosa si può fare con la vostra creatura e perchè uno sviluppatore dovrebbe decidere di scaricare il vostro codice e studiarne l&#8217;accurata documentazione?</span></span></h3>
<p>JAMP è una struttura a supporto dello sviluppo di applicazioni web. Lo scopo principale del framework è in generale quello che hanno, o dovrebbero avere, tutti i framework: fornire classi e metodi avanzati per facilitare il lavoro di programmazione, riducendo di conseguenza tempi e costi di produzione, ma anche quello di offrire delle soluzioni più robuste grazie alla risoluzione di problematiche comuni. In alcuni casi abbiamo potuto constatare che si può arrivare a risparmiare circa l&#8217;80% del codice necessario a scrivere un&#8217;applicazione. Ci sono altre importanti caratteristiche che JAMP pensiamo possieda e non sempre sono contenute negli altri framework, o almeno non tutte insieme:</p>
<ol>
<li><em>Flessibilità</em>: un elevato livello di flessibilità data dal fatto che lo sviluppatore ha la possibilità di aggiungere liberamente il proprio codice PHP e JavaScript. Naturalmente la massima utilità nell&#8217;utilizzo del framework la si ottiene quando si utilizzano le funzionalità automatiche che il framework offre oppure interagendo con le funzioni già esistenti.</li>
<li><em>Facile</em>: un aspetto che ci viene spesso riconosciuto da molti utenti e che spesso porta a sceglire JAMP è sicuramente la sua facilità di apprendimento unita ad una discreta documentazione. Questo dà modo anche ad utenti meno esperti di avvicinarsi al framework ma permette anche ad utenti più esperti di avere maggior cognizione e controllo delle operazioni svolte dal framework.</li>
<li><em>Modulare</em>: ogni oggetto svolge un determinato compito. Questo ha permesso facili integrazioni di nuove funzionalità.</li>
<li><em>Performance</em>: le applicazioni sviluppate con JAMP non risentono della presenza del framework, cosa che invece spesso accade in altri framework i quali non sempre puntano all&#8217;ottimizzazione del codice necessario e ciò rallenta l&#8217;esecuzione dell&#8217;applicazione.</li>
<li><em>Licenza libera</em>: JAMP è distributito con licenza GPL e quindi si ha la completa libertà di analizzare e/o modificare il codice.</li>
</ol>
<h3><span style="font-weight: normal;">Non si arriva a sviluppare un codice di simile portata senza una causa scatenante. </span><span style="text-decoration: underline;"><span style="font-weight: normal;">Cosa vi ha spinto ad accettare questa sfida?</span></span></h3>
<p>JAMP nasce innanzitutto da una nostra esigenza di programmatori. Volevamo un valido strumento per poter sviluppare in maniera veloce e robusta applicazioni web.</p>
<p>Nel corso della nostra carriera abbiamo provato diversi framework, ma sfortunatamente &#8211; o fortunatamente, dipende dai punti di vista &#8211; non ne abbiamo mai trovato uno che realmente ci soddisfacesse e quindi abbiamo deciso di scriverlo noi.</p>
<h3><span style="font-weight: normal;">Nel momento in cui ho preparato questa intervista, l&#8217;homepage di JAMP recitava questo numero: 8877. Sono le ore che sono servite per costruire JAMP, con tutte le attività connesse alla semplice scrittura del codice ovviamente. </span><span style="text-decoration: underline;"><span style="font-weight: normal;">Quante energie sono servite per sviluppare JAMP? Quante ne servono per continuarne lo sviluppo? Inoltre, quale è il vostro modello di lavoro? E come organizzate le vostre giornate?</span></span></h3>
<p>Sicuramente le energie e gli sforzi messi in campo sono stato notevoli perchè, come ricordavi tu, il lavoro è stato svolto da due sole persone. Da sottolineare che JAMP lo abbiamo sviluppato al di fuori del nostro normale orario di lavoro.</p>
<p>Nel corso di questi circa 18 mesi dalla nascita di JAMP ci piace ricordare che oltre al framework, alla documentazione, al sito, al forum e alla partecipazione ad eventi, abbiamo parallelamente sviluppato diverse applicazioni come <em>jpresenze</em>, <em>jfood</em> e <em>jestionale</em> che vengono regolarmente utilizzate da nostri clienti. Tali applicazioni da un lato sono state utili per trovare spunti  e testare le funzionalità del framwework, dall&#8217;altro sono servite per dimostrare che è possibile sviluppare applicazione complete. Probabilmente infatti, se non avessimo avuto JAMP a supporto avremmo speso questi 18 mesi solo per sviluppare tali applicazioni.</p>
<p>Non esiste un modello di lavoro o di organizzazione della giornata: tutto è lasciato libero per dar spazio alla creatività. Le ore presenti nel sito hanno valore indicativo, in realtà possono esserci giorni in cui dedichiamo un&#8217;ora al progetto, altri molte di più. Ammetto che il fatto di essere stati solo in due a sviluppare il framework ha avuto almeno il vantaggio di aver facilitato molto il lavoro di coordinamento. Adesso però che la struttura di JAMP è più matura desideriamo coinvolgere sempre più persone in modo da far evolvere il progetto.</p>
<h3><span style="font-weight: normal;">Ogni sviluppatore si affeziona nel corso della sua vita professionale a determinati ambienti e strumenti. </span><span style="text-decoration: underline;"><span style="font-weight: normal;">Quali sono i vostri software preferiti? E quali servizi web usate a supporto di JAMP?</span></span></h3>
<p>I software che utilizziamo sono molti e tutti quasi esclusivamente open source. Operiamo in ambiente Linux, testare il funzionamento di JAMP in altre piattaforme  preferiamo usare Virtual Box e le sue macchine virtuali. Per ospitare il sito di JAMP utilizziamo un normale servizio di hosting. Per lo sviluppo abbiamo un nostro server dedicato nel quale installiamo un pò di tutto in base all&#8217;occorenza: alcuni servizi base sono sicuramente la connessione ssh con chiave pubblica, apache, php, mysql, ldap.</p>
<h3><span style="font-weight: normal;">Avendo una passione sfrenata per il movimento del software libero non ho potuto che apprezzare la scelta di rilasciare JAMP sotto licenza GPL. A quanti ancora faticano a comprendere un simile pensiero, </span><span style="text-decoration: underline;"><span style="font-weight: normal;">potreste spiegare le motivazioni che vi hanno spinto a condividere i principi del free software?</span></span></h3>
<p>Nel corso della nostra vita di programmatori la vera crescita professionale la si ottiene grazie all&#8217;analisi di software scritto da programmatori esperti. Questo è possibile quando chi sviluppa il proprio codice decide di renderlo pubblico ed accessibile a tutti. Per noi è stato così e dunque  la scelta di rilasciare JAMP con licenza GPL ci è sembrata scontata.</p>
<h3><span style="font-weight: normal;">Ringraziandovi per il tempo che mi avete dedicato e augurandovi le migliori fortune, chiudo questa piacevole chiacchierata con quest&#8217;ultima domanda: </span><span style="text-decoration: underline;"><span style="font-weight: normal;">cosa volete fare da grandi? E quali novità dobbiamo aspettarci da JAMP?</span></span></h3>
<p>Quando abbiamo inziato il progetto JAMP avevamo tre sogni nel cassetto: creare un framework web utile a noi e ad altri programmatori, generare interesse verso il nostro prodotto attirando l&#8217;attenzione di professionisti ed aziende del settore, infine creare l&#8217;associazione ALYX aperta a tutti coloro che amassero la programmazione ed il software libero. I primi due desideri si sono già realizzati e adesso stiamo lavorando affinché lo sia anche il terzo.</p>
<p>Ti ringraziamo per l&#8217;intervista e per l&#8217;importante lavoro di informazione che svolgi.</p>
]]></content:encoded>
			<wfw:commentRss>http://corsentino.net/2010/02/intervista-ai-creatori-di-jamp-framework-per-lo-sviluppo-web/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>JAMP: framework per lo sviluppo web, tutto italiano</title>
		<link>http://corsentino.net/2010/01/jamp-framework-per-lo-sviluppo-web-tutto-italiano/</link>
		<comments>http://corsentino.net/2010/01/jamp-framework-per-lo-sviluppo-web-tutto-italiano/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 06:30:19 +0000</pubDate>
		<dc:creator>Kiko</dc:creator>
				<category><![CDATA[Publications]]></category>
		<category><![CDATA[Resources]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[web-application]]></category>

		<guid isPermaLink="false">http://corsentino.net/2010/01/jamp-framework-per-lo-sviluppo-web-tutto-italiano/</guid>
		<description><![CDATA[Tecnicamente JAMP è un framework per sviluppare applicazioni web, sfruttando quindi le attuali tecnologie che hanno reso grande Internet. Nella pratica, JAMP è anche qualcosa di più: è un vero e proprio ambiente di sviluppo, completo e potente; fornisce tutti gli strumenti essenziali per costruire la nostra applicazione, di qualunque genere e complessità essa sia.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcorsentino.net%2F2010%2F01%2Fjamp-framework-per-lo-sviluppo-web-tutto-italiano%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcorsentino.net%2F2010%2F01%2Fjamp-framework-per-lo-sviluppo-web-tutto-italiano%2F" height="61" width="51" /></a></div><p>Il progetto è assolutamente interessante, l&#8217;implementazione mi pare pure buona. Ho dato uno sguardo sommario e letta la documentazione. Un grande sforzo, una grande idea tutta italiana.</p>
<blockquote><p>Tecnicamente <a href="http://jamp.alyx.it/" target="_blank">JAMP</a> è un framework per sviluppare applicazioni web, sfruttando quindi le attuali tecnologie che hanno reso grande Internet. Nella pratica, JAMP è anche qualcosa di più: è un vero e proprio ambiente di sviluppo, completo e potente; fornisce tutti gli strumenti essenziali per costruire la nostra applicazione, di qualunque genere e complessità essa sia.</p>
<p>JAMP è perfettamente compatibile con i maggiori browser oggi in commercio; oltre a essere multipiattaforma JAMP porta con sé il grande pregio di non richiedere alcuna forma di installazione. Basta infatti scaricare il package dal sito ufficiale e scompattarlo nella root del nostro server per iniziare lo sviluppo.</p>
<p>[Via <a href="http://programmazione.it/index.php?entity=eitem&amp;idItem=43723" target="_blank">Programmazione.it</a>]</p></blockquote>
<p>Se qualcuno l&#8217;ha usato in progetti seri mi faccia uno squillo!</p>
]]></content:encoded>
			<wfw:commentRss>http://corsentino.net/2010/01/jamp-framework-per-lo-sviluppo-web-tutto-italiano/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
