Palla

avatar

Ciao a tutti, sono Daniele "Palla" Palladino. Studio Ingegneria Informatica presso l'Università degli Studi di Roma Tre. Appoggio la politica dei programmi Open Source e il concetto di copyleft.

Oct 182016
 

Nell’ingegneria del software esiste una pratica chiamata definita “Continuous Integration” (di seguito abbreviato in C.I.). Questa metodologia di sviluppo del software è definito attraverso l’utilizzo di diversi strumenti per la gestione del codice.

Prendiamo in esame lo sviluppo di un software Java, ad esempio quello reperibile a questo indirizzo. Già questo elemento fa parte del concetto di C.I., ovvero un repository GIT di riferimento del progetto da sviluppare. Nello specifico stiamo utilizzando GitHub, ma in casa o in un’azienda (piccola, media o grande che sia) è possibile installare un software dedicato al cosiddetto versioning del codice.

Il versioning del codice è alla base del C.I. ed esistono diversi strumenti. Quelli maggiormente utilizzati sono:

  1. GIT (già menzionato prima e da me preferito per il funzionamento e maggiormente utilizzato)
  2. SVN Subversion

Il versioning del codice sorgente è fondamentale soprattutto se si lavora in un Team. Più uno strumento funziona bene e meno problemi si hanno nello sviluppo. Utilizzando SVN è possibile (più frequentemente rispetto a GIT) incappare in problemi di sovrascrittura del codice perdendo le modifiche fatte fino a quel momento. GIT permette un controllo maggiore nel versioning del codice gestendo i conflitti di sovrascrittura del codice controllando, quindi, le azioni da eseguire (sovrascrittura o utilizzo di una versione del codice committato in fase di aggiornamento), almeno questo secondo la mia esperienza.

Altra peculiarità di GIT è la possibilità di “committare localmente”. Quando si sviluppa a step è possibile definire una funzionalità e committarla localmente, una volta conclusi tutti gli sviluppi si esegue il “push” del codice nel repository di riferimento (ad esempio quello linkato precedentemente.

GIT permette anche di sviluppare secondo un principio chiamato GIT Flow . Utilizzando i branch si sviluppano new feature o new release seguendo passi ben definiti in questo link

Una volta versionato il codice dobbiamo compilarlo, occorre gestire le versioni anche del compilato. Uno strumento come Jenkins è proprio quello che serve. Integrando Git con Jenkins possiamo far compilare a questo strumento una versione del codice con determinate modifiche ed escludendo un lavoro che si sta facendo su un’altra parte del codice.

Ultimo strumento è Artifactory (o JFrog) che permette la gestione dei pacchetti da utilizzare, ad esempio, attraverso maven.

 

Di seguito una figura che rappresenta quanto scritto con le comunicazioni tra i software menzionati (ed anche altri):

Buono sviluppo  Geek

Feb 042016
 

Nel 2012 ho conseguito la Laure Magistrale in Ingegneria Informatica ideando e sviluppando un strumento di supporto per la mobilità urbana per le persone non vedenti o con difficoltà visive.

L’idea si basa sull’utilizzo di Open Data messi a disposizione dal servizio di mezzi pubblici delle varie città. Ad esempio l’agenzia per la mobilità di Roma, ATAC, mette a disposizione i propri servizi elencati nel progetto Open Data alla pagina http://www.agenziamobilita.roma.it/it/progetti/open-data/

Attraverso il linguaggio di programmazione Java, è possibile utilizzare i servizi messi a disposizione. Nell’esempio riportato possiamo notare le seguenti fasi:

  1. Autenticazione
  2. Cattura del token
  3. Chiamata del servizio paline.Previsione che restituisce le previsioni di arrivo alla palina.

Prima di poter eseguire un test con il codice riportato occorre procurarsi la chiave da sviluppatore e sostituirlo dove riportato nel codice Java.

        XmlRpcClientConfigImpl autenticazione = new XmlRpcClientConfigImpl();
        XmlRpcClientConfigImpl getPaline = new XmlRpcClientConfigImpl();
        int palina = 70720;
        try {
 
            autenticazione.setServerURL(new URL("http://muovi.roma.it/ws/xml/autenticazione/1"));
            XmlRpcClient client = new XmlRpcClient();
            client.setConfig(autenticazione);
            String key = "INSERIRE_CHIAVE_SVILUPPATORE";
            Object[] params = new Object[]{new String(key), ""};
            String token = (String) client.execute("autenticazione.Accedi", params);
            System.out.println("this is token : " + token);
 
 
            getPaline.setServerURL(new URL("http://muovi.roma.it/ws/xml/paline/7"));
            XmlRpcClient clientPaline = new XmlRpcClient();
            clientPaline.setConfig(getPaline);
            Object[] params_2 = new Object[]{token, new Integer(palina), "eng"};
            HashMap result2 = (HashMap) clientPaline.execute("paline.Previsioni", params_2);
            System.out.println(result2);
 
        } catch (XmlRpcException e) {
            e.printStackTrace();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }

 

Per utilizzare tale codice occorre impostare la seguente dipendenza Maven:

<!-- http://ws.apache.org/xmlrpc/client.html -->
<dependency>
	<groupid>org.apache.xmlrpc</groupid>
	<artifactid>xmlrpc-client</artifactid>
	<version>3.1.3</version>
</dependency>
 Posted by at 2:55 pm