<?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>Tue, 08 May 2012 12:52:02 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.2</generator> <atom:link rel='hub' href='http://www.francescotinti.com/?pushpress=hub'/> <xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /> <item><title>Automatizzazione estrema :-)</title><link>http://www.francescotinti.com/2010/07/automatizzazione-estrema/</link> <comments>http://www.francescotinti.com/2010/07/automatizzazione-estrema/#comments</comments> <pubDate>Fri, 16 Jul 2010 05:50:33 +0000</pubDate> <dc:creator>Francesco</dc:creator> <category><![CDATA[open source]]></category> <category><![CDATA[ant]]></category> <category><![CDATA[apache]]></category> <category><![CDATA[opensource]]></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/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/3-consigli-dallopensource-per-i-blogger-che-usano-wordpress/</link> <comments>http://www.francescotinti.com/2009/08/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/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/come-e-andata-gt-conference/</link> <comments>http://www.francescotinti.com/2009/06/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/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/dividi-il-tuo-progetto-in-fasi/</link> <comments>http://www.francescotinti.com/2008/09/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/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/analisi-macroscopica-del-progetto/</link> <comments>http://www.francescotinti.com/2008/09/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/analisi-macroscopica-del-progetto/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
