<?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>Francesco Tinti &#187; open source</title>
	<atom:link href="http://www.francescotinti.com/software/open-source-software/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.francescotinti.com</link>
	<description>Blog sul web marketing e dintorni</description>
	<lastBuildDate>Fri, 16 Jul 2010 05:50:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<atom:link rel='hub' href='http://www.francescotinti.com/?pushpress=hub'/>
		<item>
		<title>Automatizzazione estrema :-)</title>
		<link>http://www.francescotinti.com/2010/07/16/automatizzazione-estrema/</link>
		<comments>http://www.francescotinti.com/2010/07/16/automatizzazione-estrema/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 05:50:33 +0000</pubDate>
		<dc:creator>Francesco</dc:creator>
				<category><![CDATA[open source]]></category>
		<guid isPermaLink="false">http://www.francescotinti.com/?p=803</guid>
		<description><![CDATA[Se hai letto fino a oggi questo blog probabilmente sai che mi occupo di consulenza SEO e web marketing. Un aspetto di cui non parlo molto è il mio background di programmatore, che solo riflettendoci più a fondo mi sono accorto essere &#8220;una marcia in più&#8221; molto comoda per automatizzare operazioni ripetitive e di routine. [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Se hai letto fino a oggi questo blog probabilmente sai che mi occupo di consulenza SEO e web marketing.</p>
<p>Un aspetto di cui non parlo molto è il mio <strong>background di programmatore</strong>, che solo riflettendoci più a fondo mi sono accorto essere <strong>&#8220;una marcia in più&#8221;</strong> molto comoda per automatizzare operazioni ripetitive e di routine.</p>
<p>Quante volte ti sarà capitato di cercare in rete qualcosa per:</p>
<ul>
<li>ripulire delle cartelle dai file temporanei ?</li>
<li>lavorare con &#8220;configurazioni&#8221; diversi di siti web  dinamici e applicazioni web a seconda che lavori in locale o nel server di produzione ?</li>
<li>dover fare backup al volo ?</li>
<li>dover sostituire in meno di 1 minuto su tutti i file di una cartella e relative sottocartelle stringhe diverse con altre ?</li>
</ul>
<p>Se hai pazienza di leggere questo post chilometrico scoprirai <strong>uno strumentino gratuito e open source</strong> che la community di Apache.org mette a tua disposizione per automatizzare al massimo la tua produttività (se devi lavorare con file, cartelle, ftp, siti e applicazioni web insomma).</p>
<h2>Automatizzazione con Apache Ant</h2>
<p>Lo strumento di cui ti voglio parlare è Apache Ant e lo trovi qua: <a href="http://ant.apache.org/">http://ant.apache.org/</a>.</p>
<p>Ant richiede <strong>Java</strong> quindi devi avere una <strong>Java Virtual Machine</strong> (JVM) installata sul tuo PC.</p>
<p>Personalmente ti consiglio di <a href="http://java.sun.com/javase/downloads/index.jsp">scaricare il JDK</a> dal sito ufficiale di Oracle/Sun per sfruttare Ant al 100%.</p>
<p>Questo perché alcuni task di Ant richiedono espressamente il JDK e non basta la semplice JVM: insomma il JDK occupa un pò più spazio ma la fatica è ripagata.</p>
<h2>Configurare JDK e Ant</h2>
<p>Dopo aver scaricato Ant, non c&#8217;è installazione: basta estrarre il file compresso in una cartella ad es. c:\ant .</p>
<p>Devi configurare JDK e Ant affinché funzionino nel tou PC.</p>
<p>Se usi un sistema Windows:</p>
<ol>
<li>vai Pannello di controllo &gt; Sistema &gt; Impostazioni avanzate</li>
<li>clicca su &#8220;Variabili d&#8217;ambiente&#8221;</li>
</ol>
<h3>Configurazione di JDK</h3>
<ol>
<li>nell&#8217;area dedicata alle Variabili di sistema clicca &#8220;Nuova&#8221;;</li>
<li>si apre una finestrina che chiede nome variabile e valore variabile;</li>
<li>inserisci JAVA_HOME nel nome variabile;</li>
<li>in valore scrivi il percorso dove hai installato il JDK (ad es. C:\Program Files\Java\jdk1.6.0_03).</li>
<li>conferma tutto cliccando ok.</li>
<li>tra le variabili di sistema cerca la variabile dal nome Path e selezionala facendo doppio click</li>
<li>alla fine del valore della variabile aggiungi ;%JAVA_HOME%\bin; (anche il punto e virgola iniziale, non è un errore!).</li>
</ol>
<h3>Configurazione di Ant</h3>
<p>Per configurare Ant i passaggi sono fondamentalmente identici a quelli della configurazione di JDK.</p>
<p>La variabile da aggiungere è ANT_HOME e stavolta il valore inserito deve puntare alla cartella dove hai installato Ant.</p>
<p>In questo caso devi aggiungere alla fine del valore di Path ;%ANT_HOME%\bin;</p>
<h2>Cosa è Ant e come funziona</h2>
<p>Inizialmente Ant era un <strong>tool a riga di comando</strong> molto usato in ambienti opensource e commerciali per gestire la parte del ciclo di vita del software (compilazione, test unitari, build delle release da distribuire) ma il tool è così versatile che con un pò di fantasia come vedrai si presta bene per tante altre cose.</p>
<p>Tutto quello che devi fare per usare Ant è <strong>descrivere in un file di progetto</strong> (build.xml) <strong>quali sono gli obiettivi</strong> (target) <strong>che vuoi Ant esegua al posto tuo</strong>.</p>
<p>So già cosa pensi&#8230; ma dai a cancellare dei file temporanei ci metto un attimo. Figuriamoci incasinarsi la vita con una roba così complessa.</p>
<p>Si, ti rispondo io. Questo ragionamento è giusto se lo fai una tantum e basta.</p>
<p>Ma se per caso cancelli anche solo 1 volta al giorno i file temporanei dalle tue cartelle alla fine del mese avrai perso davvero tempo che potevi destinare a risorse più importanti. Allora perché non investire 5 minuti del tuo tempo in qualcosa che una volta scritto funziona perfettamente a vita tutte le volte che vuoi ?</p>
<p>Vediamo il contenuto del file build.xml con un semplice task per rimuovere file di backup e thumbnails create da Windows:</p>
<pre>&lt;project basedir="."&gt;
 &lt;target name="clean"&gt;
 &lt;echo&gt;Avvio la cancellazione dei file&lt;/echo&gt;
 &lt;delete&gt;
 &lt;fileset dir="." includes="**/*.bak" /&gt;
 &lt;fileset dir="." includes="**/*.old" /&gt;
 &lt;fileset dir="." includes="**/~*" /&gt;
 &lt;fileset dir="." includes="**/Thumbs.db" /&gt;
 &lt;/delete&gt;
 &lt;echo&gt;File cancellati.&lt;/echo&gt;
 &lt;/target&gt;
&lt;/project&gt;
</pre>
<p>Il file build.xml contiene un progetto &lt;project&gt; e un obiettivo &lt;target&gt;. Il comando &lt;delete&gt; fa il resto.</p>
<p>Metti il file build.xml nella cartella root del tuo progetto e sei pronto al lancio.</p>
<h2>Prima del lancio &#8220;tarocchiamo&#8221; Windows</h2>
<p>Ant si esegue da riga di comando cioè da una <strong>finestra di DOS</strong> per cui le possibilità sono 2.</p>
<p>O ogni volta clicchi su Start poi digiti CMD + Invio, poi cambi cartella con i comandi DOS (CD \nomecartella).</p>
<p>Oppure fai in modo che, in qualsiasi cartella tu sia, Windows 7 mostri nel menu contestuale (quello che si apre con li pulsante destro) un&#8217;apposita voce per aprire la finestra di DOS.</p>
<p>Queste sono le chiavi da aggiungere al registro di Windows per ottenere il nostro risultato:</p>
<p>HKEY_CLASSES_ROOT\Directory\shell\opennew<br />
@=&#8221;Dos Prompt in that Directory&#8221;</p>
<p>HKEY_CLASSES_ROOT\Directory\shell\opennew\command<br />
@=&#8221;cmd.exe /k cd %1&#8243;</p>
<p>Ora che hai aperta la finestra di DOS sulla root del tuo progetto basta scrivere ant clean per <strong>veder eseguire in pochi secondi il nostro primo target</strong>.</p>
<p>Vedamo altri utilizzi di questo piccolo gioello di software opensource.</p>
<h2>Target per una copia selettiva</h2>
<p>Immaginiamo di lavorare in un sito web complesso e di voler pubblicare con l&#8217;avanzamento dei lavori solo le modifiche che riguardano alcune cartelle e/o pagine web.</p>
<p>Prima di tutto scegliamo una cartella dove copiare solo i file che abbiamo modificato.</p>
<p>Subito sotto &lt;project&gt; aggiungiamo una proprietà (ad es. qui ho scelto una sottocartella del progetto dal nome &#8216;release&#8217;):</p>
<pre> &lt;property name="releaseFolder" value="release" /&gt;
</pre>
<p>e scriviamo il target</p>
<pre>&lt;target name="release" depends="clean"&gt;
 &lt;delete dir="${releaseFolder}/" /&gt;
 &lt;mkdir dir="${releaseFolder}/" /&gt;
 &lt;copy todir="${releaseFolder}/"&gt;
  &lt;fileset dir="./" includes="**/*.php" /&gt;
 &lt;/copy&gt;
 &lt;copy todir="${releaseFolder}/ajax/"&gt;
  &lt;fileset dir="ajax" includes="**/*.php" /&gt;
 &lt;/copy&gt;
 &lt;copy todir="${releaseFolder}/beans/"&gt;
  &lt;fileset dir="beans" includes="**/*.php" /&gt;
 &lt;/copy&gt;
 &lt;copy todir="${releaseFolder}/config/"&gt;
  &lt;fileset dir="config" includes="**/*.xml" /&gt;
 &lt;/copy&gt;
 &lt;copy todir="${releaseFolder}/controllers/"&gt;
  &lt;fileset dir="controllers" includes="**/*.php" /&gt;
 &lt;/copy&gt;
 &lt;copy todir="${releaseFolder}/images/"&gt;
  &lt;fileset dir="images" includes="**/*.png" /&gt;
  &lt;fileset dir="images" includes="**/*.jpg" /&gt;
 &lt;/copy&gt;
 &lt;copy todir="${releaseFolder}/js/"&gt;
  &lt;fileset dir="js" includes="**/*.js" /&gt;
 &lt;/copy&gt;
 &lt;copy todir="${releaseFolder}/logic"&gt;
  &lt;fileset dir="logic" includes="**/*.php" /&gt;
 &lt;/copy&gt;
 &lt;copy todir="${releaseFolder}/models/"&gt;
  &lt;fileset dir="models" includes="**/*.php" /&gt;
 &lt;/copy&gt;
 &lt;copy todir="${releaseFolder}/templates"&gt;
  &lt;fileset dir="templates" includes="**/*.tpl" /&gt;
 &lt;/copy&gt;
 &lt;copy todir="${releaseFolder}/views"&gt;
  &lt;fileset dir="views" includes="**/*.php" /&gt;
 &lt;/copy&gt;
&lt;/target&gt;
</pre>
<p>Come vedi ogni volta cancello (&lt;delete&gt;) e ricreo (&lt;mkdir&gt;) ex novo la cartella di release per essere sicuro che non ci siano residui di file con versioni precedenti, poi indico ad Ant quali tipi di file copiare &lt;fileset&gt; attraverso il comando &lt;copy&gt;.</p>
<p>Anche in questo caso basterà scrivere ant relase e vedere lavorare Ant al posto nostro.</p>
<h2>Copia di backup al volo</h2>
<p>Anche in questo caso aggiungiamo una proprietà specifica al progetto per indicare il nome del file che andremo a creare.</p>
<pre>&lt;property name="projectName" value="webapp001" /&gt;
</pre>
<p>Questo invece è il task di backup che prende il contenuto della cartella releaseFolder e lo comprime in un file .tar.gz pronto all&#8217;archiviazione!</p>
<pre>&lt;target name="backup"&gt;
 &lt;echo&gt;Avvio il backup&lt;/echo&gt;
 &lt;delete file="${releaseFolder}/${projectName}.tar.gz" /&gt;
  &lt;tar compression="gzip" longfile="gnu" destfile="${releaseFolder}/${projectName}.tar.gz"&gt;
  &lt;tarfileset dir="${releaseFolder}" prefix="prefix"&gt;
   &lt;include name="**"/&gt;
   &lt;include name="wp-content/themes/gadget-story/header.php" /&gt;
   &lt;include name="wp-content/themes/gadget-story/footer.php" /&gt;
   &lt;exclude name=".cache/**" /&gt;
   &lt;exclude name="templates_c/**.**" /&gt;
   &lt;exclude name="wp-admin/" /&gt;
   &lt;exclude name="wp-includes/" /&gt;
   &lt;exclude name="wp-content/backup-0743b/" /&gt;
   &lt;exclude name="wp-content/plugins/" /&gt;
   &lt;exclude name="wp-content/themes/gadget-story/**.**" /&gt;
  &lt;/tarfileset&gt;
 &lt;/tar&gt;
 &lt;echo&gt;Il backup è pronto!&lt;/echo&gt;
&lt;/target&gt;
</pre>
<h2>Cambio nomi alle immagini e spostamento di cartella</h2>
<p>Immagina di dover rinominare in maniera selettiva solo alcune immagini di una cartella.</p>
<p>In questo caso rimuovo dal nome del file &#8220;Immagine &#8221; solo per le immagini di tipo jpg che contengono questo testo.</p>
<pre>&lt;target name="rename"&gt;
 &lt;property name="folder" value="immagini" /&gt;
  &lt;move todir="./${folder}/small"&gt;
  &lt;fileset dir="./${folder}/small"&gt;
   &lt;include name="**/*.jpg" /&gt;
  &lt;/fileset&gt;
  &lt;filtermapper&gt;
   &lt;replacestring from="Immagine " to="" /&gt;
  &lt;/filtermapper&gt;
 &lt;/move&gt;
&lt;/target&gt;
</pre>
<h2>Cambio di configurazione</h2>
<p>Il penultimo esempio della versatilità di Ant è sul cambio di configurazioni al volo.</p>
<p>La situazione tipo è questa: lavori su un server e un PC locali con settaggi di percorsi, database e password diversi rispetto a quelli effettivi del server di produzione.</p>
<p>Quante volte ti sarà successo di uploadare sul server remoto la configurazione locale e aver mandato in bomba l&#8217;applicazione web ?</p>
<p>Ant ti può aiutare anche in questo caso.</p>
<p>Ecco ad esempio di sostituzioni testuali di path in molti file:</p>
<pre>&lt;target name="customize" depends="release"&gt;
 &lt;echo&gt;Adattamento percorsi&lt;/echo&gt;
 &lt;replace dir="${releaseFolder}/" token="c:/siti/miosito.com/" value="/home/sito.com/public_html/"&gt;
  &lt;include name="**/*.xml" /&gt;
  &lt;include name="**/*.php" /&gt;
 &lt;/replace&gt;
 &lt;echo&gt;Adattamento configurazione database&lt;/echo&gt;
 &lt;replace file="${releaseFolder}/wp-config.php" token="development" value="production" /&gt;
 &lt;replace file="./${releaseFolder}/bootstrap.php" token="development" value="production" /&gt;
 &lt;echo&gt;Aggiustamento path chiamate AJAX&lt;/echo&gt;
 &lt;replace file="${releaseFolder}/templates/settoreMerceologicoAdd.tpl" token="http://localhost/sito.com" value="http://www.sito.com" /&gt;
 &lt;replace file="${releaseFolder}/templates/ricercaBestCase.tpl" token="http://localhost/sito.com" value="http://www.sito.com" /&gt;
 &lt;replace file="${releaseFolder}/templates/menu.tpl" token="http://localhost/site.com" value="http://www.sito.com" /&gt;
 &lt;replace file="${releaseFolder}/templates/ricercaBestCase.tpl" token="http://localhost/sito.com" value="http://www.sito.com" /&gt;
&lt;/target&gt;
</pre>
<h2>Perché dovresti usare Ant ?</h2>
<p>Per almeno 3 motivi:</p>
<ol>
<li>Perché essendo scritto in Java è portabile tra più piattaforme Windows, Mac, Linux.<br />
Una volta scritto il file di progetto build.xml questo funzionerà in qualsiasi sistema lavori.</li>
<li>Puoi scrivere task molto generici e riciclarli per ogni tuo progetto, spesso senza nessuno sforzo (basta un copia e incolla del file di progetto).<br />
Ant permette la manipolazione del testo, dei file, ha task specifici per i comandi FTP.</li>
<li>Impari una cosa nuova &#8220;smanettando&#8221; a livello più basso rispetto alla solita attività di SEO o web marketing.</li>
</ol>
<h2>Dubbi o domande ?</h2>
<p>Come al solito, scrivi qua sotto.</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1030px; width: 1px; height: 1px; overflow: hidden;">
<pre>&lt;echo&gt;Cancellazione file in corso&lt;/echo&gt;</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.francescotinti.com/2010/07/16/automatizzazione-estrema/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>3 consigli dall&#8217;OpenSource per i blogger che usano WordPress</title>
		<link>http://www.francescotinti.com/2009/08/18/3-consigli-dallopensource-per-i-blogger-che-usano-wordpress/</link>
		<comments>http://www.francescotinti.com/2009/08/18/3-consigli-dallopensource-per-i-blogger-che-usano-wordpress/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 17:00:42 +0000</pubDate>
		<dc:creator>Francesco</dc:creator>
				<category><![CDATA[open source]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">http://www.francescotinti.com/?p=366</guid>
		<description><![CDATA[&#8220;Regala l&#8217;informazione, vendi il sistema&#8221; Non è soltanto una frase ricorrente nel marketing (che anche i blogger come te potrebbero usare a loro vantaggio). Trasferita nel mondo del software questa stessa frase potrebbe suonare così: &#8220;Regala il codice, e vendi il tuo software&#8221;. E lo sanno bene tutte quelle aziende di software che, anche per [...]]]></description>
			<content:encoded><![CDATA[<p></p><h3>&#8220;Regala l&#8217;informazione, vendi il sistema&#8221;</h3>
<p>Non è soltanto una frase ricorrente nel marketing (che anche i blogger come te potrebbero usare a loro vantaggio). Trasferita nel mondo del software questa stessa frase potrebbe suonare così: &#8220;Regala il codice, e vendi il tuo software&#8221;.</p>
<p>E lo sanno bene tutte quelle aziende di software che, anche per questioni di <strong>time to market</strong>, preferiscono integrare software Open Source eterogenei piuttosto che svilupparli da zero.</p>
<p>D&#8217;altra parte se un software già esiste e funziona, ed è disponibile con una licenza che consente di usare, integrare, alterare i software per i propri scopi, perché non usarlo per i propri scopi ?</p>
<p>Il ragionamento dei software integrator non fa una piega. Ma come tutte le cose, scegliere la strada dell&#8217;Open Source ha vantaggi e svantaggi.</p>
<h3>Vantaggi del software Open Source</h3>
<ul>
<li>abbattere i costi di licenza di software proprietari in fase di startup;</li>
<li>abbattere i costi di sviluppo creando una comunità di sviluppatori che lavora al tuo progetto e lo fa crescere assieme a te;</li>
<li>abbattere i tempi di sviluppo integrando software testato e già esistente per determinate funzionalità;</li>
</ul>
<h3>Svantaggi del software Open Source</h3>
<ul>
<li>senza una comunità forte il progetto si arena facilmente;</li>
<li>senza una comunità forte il progetto va alla deriva facilmente ;</li>
<li>senza una comunità forte il progetto non si espande;</li>
<li>senza una comunità forte il progetto non si evolve;</li>
</ul>
<h3>Sei un blogger o un webmaster?</h3>
<p>Allora probabilmente usarai o avrai usato WordPress. Ecco i 3 consigli che ti ho promesso nel titolo di questo articolo:</p>
<ol>
<li>usa WordPress come piattaforma CMS non solo per i tuoi blog ma anche per altri siti tuoi o dei tuoi clienti;</li>
<li>fai backup frequenti, meglio se giornalieri e con uno script in automatico che lavora al posto tuo;</li>
<li>aggiorna le versioni di WordPress via via che escono. Perché le release vengono correggono bug e vulnerabilità a volte critiche. Non restare indietro a lungo altrimenti i <a href="http://www.giuliomarsala.com/adwords/upsell-nel-marketing-buono-o-cattivo-ecco-cosa-ne-pensano-in-usa-e-come-la-penso-io/">rischi di hacking</a> del sito sono elevati.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.francescotinti.com/2009/08/18/3-consigli-dallopensource-per-i-blogger-che-usano-wordpress/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Come è andata gt conference</title>
		<link>http://www.francescotinti.com/2009/06/22/come-e-andata-gt-conference/</link>
		<comments>http://www.francescotinti.com/2009/06/22/come-e-andata-gt-conference/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 13:17:40 +0000</pubDate>
		<dc:creator>Francesco</dc:creator>
				<category><![CDATA[open source]]></category>
		<category><![CDATA[web marketing]]></category>
		<category><![CDATA[conferenze]]></category>
		<category><![CDATA[formazione]]></category>
		<category><![CDATA[gt conference]]></category>
		<guid isPermaLink="false">http://www.francescotinti.com/?p=198</guid>
		<description><![CDATA[Mi sarebbe piaciuto molto  prendere parte come promesso alla Gt Conference, invece all&#8217;ultimo momento non ho potuto partecipare. Tuttavia posso dire senza ombra di dubbio che non ho sentito per niente la mancanza dell&#8217;evento, in quanto grazie allo streaming online fornito da SOS Tariffe sono riuscito ad ascoltare buona parte della giornata, a parte alcuni [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Mi sarebbe piaciuto molto  prendere parte come promesso alla <a href="http://www.gtconference.it/">Gt Conference</a>, invece all&#8217;ultimo momento non ho potuto partecipare.</p>
<p>Tuttavia posso dire senza ombra di dubbio che non ho sentito per niente la mancanza dell&#8217;evento, in quanto grazie allo streaming online fornito da <a href="http://www.sostariffe.it/">SOS Tariffe</a> sono riuscito ad ascoltare buona parte della giornata, a parte alcuni piccoli momenti di rallentamento o indisponibilità del servizio per altro fisiologici e comprensibilissimi (visto che la linea ADSL qui è servita in modalità ibrida e sperimentale, ovvero arriva via radio).</p>
<p>Avendo il pallino della SEO ho ascoltato con estrema attenzione gli interventi di Michael Gawel, Michele De Capitani, Cesarino Morellato e Nicola Briani; tutti relatori che, insieme a Daniele Bogiatto, avevo già avuto modo di conoscere al convegno gt 2008.</p>
<p>&#8230; Per dirla tutta avevo rivisto di recente qualcuno anche ai convegni <a href="http://www.madri.com/cgi-bin/3a/click.pl?id=1625&amp;p=swmexp">SEO Web Marketing Experience</a> organizzati da Madri (al secolo Enrico Madrigrano)&#8230;</p>
<p>Ritornando ai relatori della gt conference dicevo di Daniele Bogiatto: bel confronto quello tra medioevo e rinascimento dei media digitali. Interessante anche il suo punto di vista sulla necessità innegabile di socializzare.</p>
<p>Last but not least  mi è piaciuto molto l&#8217;intervento di <a href="http://www.webmarketingforum.it/">Alessandro Sportelli</a> perchè, nonostante ci siamo incrociati diverse volte online e offline, era la prima volta che ascoltavo una sua esposizione, per altro piacevolissima. Troppo forte il video per promuovere la mozzarella.</p>
<p>Dell&#8217;intervento di <a href="http://nicola-briani.blogspot.com/">Nicola Briani</a> non aggiungo niente perchè fin dal gt study day di Pescia dell&#8217;anno scorso il suo modo di esporre mi era piaciuto tantissimo e Nicola anche questa volta non mi ha deluso (mi son perso solo la parte  finale c&#8217;era dove qualche &#8220;problemino di trasmissione&#8221;).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.francescotinti.com/2009/06/22/come-e-andata-gt-conference/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Dividi il tuo progetto in fasi</title>
		<link>http://www.francescotinti.com/2008/09/30/dividi-il-tuo-progetto-in-fasi/</link>
		<comments>http://www.francescotinti.com/2008/09/30/dividi-il-tuo-progetto-in-fasi/#comments</comments>
		<pubDate>Tue, 30 Sep 2008 10:00:27 +0000</pubDate>
		<dc:creator>Francesco</dc:creator>
				<category><![CDATA[open source]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[fasi progetto]]></category>
		<category><![CDATA[progettazione software]]></category>
		<guid isPermaLink="false">http://www.francescotinti.com/2008/09/30/dividi-il-tuo-progetto-in-fasi/</guid>
		<description><![CDATA[Analisi, Progettazione, Implementazione, Test. Queste grosso modo sono le fasi evolutive del ciclo del software tradizionale. Ora la cosa importante è non pensare che queste fasi siano una susseguente all&#8217;altra, cioè una di seguito all&#8217;altra. No. La strada migliore è immaginare che si svolgano &#8220;in parallelo&#8221;. Ti chiederai come far svolgere in parallelo queste fasi [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Analisi, Progettazione, Implementazione, Test. Queste grosso modo sono le fasi evolutive del ciclo del software tradizionale. Ora la cosa importante è non pensare che queste fasi siano una susseguente all&#8217;altra, cioè una di seguito all&#8217;altra. No. La strada migliore è immaginare che si svolgano &#8220;in parallelo&#8221;.</p>
<p>Ti chiederai come far svolgere in parallelo queste fasi quando sai bene se implementi non testi il codice, e se progetti il software non lo implementi. E&#8217; tutto vero quello che dici ma grazie alla agile programming (e se sei in team grazie anche all&#8217;eXtreme Programming) potrai davvero realizzare quanto scrivo.</p>
<p>La prima cosa importante, per tornare alla nostra regola 80/20 è strutturare le fasi in modo da minimizzare il tuo intervento. Ad esempio per la <strong>modellazione di database</strong> uso frequentemente  <a href="http://fabforce.net/dbdesigner4/" target="_blank">fabforce dbDesigner 4</a> perchè  è molto comodo. Disegni la struttura e quando hai finito hai un file per MySql pronto all&#8217;uso. E se non usi MySql come database in produzione, grazie ad <a href="http://ant.apache.org/" target="_blank">Ant</a> e un foglio di stile XSLT che ho sviluppato ad hoc posso trasformare il database disegnato ad esempio in formato Microsoft Sql Server.</p>
<p>Per quanto riguarda l&#8217;<strong>ambiente di sviluppo</strong> per la scrittura del codice e per il testing ai più pigri consiglio di usare <a href="http://www.eclipse.org/" target="_blank">Eclipse</a>. Eclipse è un IDE Open Source nato da milioni di righe donate da IBM alla comunità di sviluppatori costruita attorno al progetto. Eclipse è un pò &#8220;peso&#8221;da eseguire ma comodo e flessibile. Puoi usare Eclipse per tutti i linguaggi a disposizione oggi, dal C al Java passando per PHP, Perl, Python, Ruby e altri. Una sola interfaccia quando ti approcci a sistemi diversi è comoda: eviti di perdere tempo ogni volta a imparare i tasti freccia e le scorciatoie.</p>
<p>Se poi vuoi davvero ottimizzare il tuo tempo ed evitare notti insonni a debuggare il codice, l&#8217;utilizzo di strumenti di <strong>test unitari</strong> ti aiuterà parecchio. Mentre molti prima scrivono il software e poi lo testano (a mano?), con i test unitari via via che scrivi il software scrivi anche dei casi di test per testare ogni singolo pezzo di software prodotto. E questo ti permette due vantaggi non indifferenti:</p>
<ol>
<li>individui subito qual&#8217;è la parte &#8220;malata&#8221; del software da correggere e mettere a posto;</li>
<li>puoi automatizzare il test del software in maniera ciclica ad esempio ogni mezz&#8217;ora con la continous integration</li>
</ol>
<p>Per ora mi fermo qui. Della continous integration parleremo nei prossimi post.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.francescotinti.com/2008/09/30/dividi-il-tuo-progetto-in-fasi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Analisi macroscopica del progetto</title>
		<link>http://www.francescotinti.com/2008/09/29/analisi-macroscopica-del-progetto/</link>
		<comments>http://www.francescotinti.com/2008/09/29/analisi-macroscopica-del-progetto/#comments</comments>
		<pubDate>Mon, 29 Sep 2008 10:00:25 +0000</pubDate>
		<dc:creator>Francesco</dc:creator>
				<category><![CDATA[open source]]></category>
		<category><![CDATA[analisi progetto]]></category>
		<category><![CDATA[legge di pareto]]></category>
		<category><![CDATA[progettazione software]]></category>
		<guid isPermaLink="false">http://www.francescotinti.com/2008/09/29/analisi-macroscopica-del-progetto/</guid>
		<description><![CDATA[Sabato ti ho parlato di un progetto software e oggi voglio affrontare con te un aspetto fondamentale per la riuscita del progetto cioè la fase di analisi. L&#8217;analisi di cui ti parlo qui è macroscopica e ti deve permettere di individuare i punti critici dello sviluppo del software, ma anche le possibilità di espansione e [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://www.francescotinti.com/2008/09/27/la-genesi-di-un-progetto-software/" target="_blank">Sabato</a> ti ho parlato di un progetto software e oggi voglio affrontare con te un aspetto fondamentale per la riuscita del progetto cioè la <strong>fase di analisi</strong>. L&#8217;analisi di cui ti parlo qui è macroscopica e ti deve permettere di individuare i punti critici dello sviluppo del software, ma anche le possibilità di espansione e la &#8220;riciclabilità&#8221; di alcune sue parti.</p>
<p>Questo è un <strong>lavoro preliminare fondamentale</strong>  per la riuscita del progetto e per procedere senza intoppi o sorprese dell&#8217;ultimo momento fino alla fase finale del rilascio. L&#8217;analisi ti deve anche permettere di rendere agile lo sviluppo del software e poterlo aggiustare in corsa, cioè anche dopo che è stato pianificato dettagliatamente.</p>
<p>Durante la fase di analisi devi anche essere in grado di individuare <strong>quali sono i software</strong> che ti permettono di essere più produttivo. Oggi per il software web o di uso comune non si sviluppata mai da zero, ma si preferisce modificare o <strong>integrare cosa già esiste</strong> e adattarlo al nostro scopo.</p>
<p>Se vuoi massimizzare la tua produttività ti consiglio di individuare alcuni <strong>strumenti del mondo Open Source</strong> che ritieni adatti per sviluppare in toto o in parte il tuo progeto e di non scartarli mai a priori. Passa poi qualche giorno a testare le soluzioni che hai individuato e analizza le criticità di ciascuna soluzione.  In questo modo avrai applicato <strong>la legge di Pareto</strong> o &#8220;legge 80/20&#8243; allo sviluppo del software: il 20% del tuo tempo (i giorni test) ti permette di svolgere agevolmente il restante 80% del lavoro senza sorprese.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.francescotinti.com/2008/09/29/analisi-macroscopica-del-progetto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
