2010
01.28
Mi trovavo davanti all’esigenza di gestire dei dati provenienti da sorgenti esterne in formato XML; per una questione di estendibilità non avevo intenzione di scrivere classi java per gestirli, ma intendevo direttamente salvarli su database. Hibernate prevede il mapping trasparente dell’XML su classi java o su database. C’era un unico problema: i formati delle date presenti facevano fallire il parsing. Dopo aver vagliato diverse soluzioni ho scritto dunque uno UserType che viene mappato su database come timestamp, come tipo java come java.util.Date e che viene parsato come tipo XML in base ad un pattern configurabile nella definizione della property secondo l’esempio:
<property name="...">
<type name="org.astrac.hbmtypes.FormattedDateTime">
<param name="xmlFormat">dd/MM/yyyy HH:mm</param>
</type>
</property>
Ecco il file java da includere per l’utilizzo:
FormattedDateTime
Per me è stato cruciale sviluppare questo piccolo componente, spero sia utile a qualcun altro anche solo come documentazione sullo sviluppo di un CustomType.
2009
12.12
Per una proficua collaborazione nello sviluppo di gruppo è senza dubbio necessario avere un sistema di versioning dei sorgenti come subversion. I vantaggi sono molteplici:
- Aiuto nel processo di suddivisione del lavoro e, soprattutto, di merging delle modifiche individuali
- Archiviazione sicura delle varie versioni dei sorgenti
- Branching: funzionalità semplici e potenti per creare rami diversi nello sviluppo e poterli poi fondere, taggare o semplicemente abbandonare
- Tagging: ovvero la possibilità di metter un punto su determinate versione, assegnando loro un nome ed avendo così la possibilità di risalire sempre a versioni stabili e/o rilevanti
- Browsing del repository, che permette di sfogliare i sorgenti e risalire indietro fino alla prima versione del software forndendo, tra l’altro, funzionalità di confronto tra le versioni
- Integrazione nei più diffusi IDE in maniera nativa o tramite estensioni realizzate ad-hoc.
- Integrazione con i sistemi di project management (ad esempio Trac, Redmine e simili).

Semplice esempio di progetto SVN con branches e tags
Assodata quindi la desiderabilità di un sistema del genere si possono utilizzare vari servizi su internet più o meno gratuiti che mettono a disposizione repository (ad esempio Google Code o Assembla) e strumenti integrati per la gestione del progetto.
Spesso, in ambito aziendale, è però desiderabile avere un sistema di versioning installato nella propria intranet; in tal caso si presentano diverse possibilità, a seconda della dimensione del progetto. Tralasciamo le soluzioni commerciali, spesso costose e non offerenti in realtà alcun valore aggiunto: chi potrebbe aver sviluppato meglio, infatti, la tecnologia di collaborazione se non le reti di sviluppatori sparsi in tutto il mondo ed attivamente cooperanti nella creazione di software Open Source? Ecco dunque la procedura per metter su un repository SVN su un sistema linux!
Prosegui la lettura >>
2009
11.29
Un problema comune di quasi qualsiasi processo di sviluppo di software è costituito dalla progettazione di una base di dati e delle tecniche di accesso a quest’ultima. Questa questione è fondamentale in realtà per la buona riuscita di un software, ma viene spesso e volentieri sottovalutata. Complice la facilità di creazione e di modellazione dei database, complice il modo semplicistico in cui viene affrontata nell’ambito accademico, molto spesso si finisce per ignorare tanto le best practice quanto le bad practice insite in questa fase della progettazione. Ed i risultati sono spesso catastrofici, dato che il data-tier è la base del software e influenza pesantemente, in fin dei conti, la complessità degli altri tiers.
Prosegui la lettura >>
2009
11.20
Sto lavorando ad un sistema che dovrebbe acquisire dati da servizi web e feeds di varia natura, trasformarli in un formato XML condiviso e presentarli in ingresso ad un CMS proprietario basato su Liferay tramite un altro web service da questo esposto; per realizzare questo sistema stavo portando avanti una mia implementazione personale di un Data Collector configurabile costruito su Struts2, Hibernate ed Axis2; tutto andava bene, il software acquisiva correttamtente dati da feed e web services facendo trasformazioni basate su fogli XSL-T, quando una mattonella cadde sulla mia testa: la sicurezza. Uno dei nostri stakeholders infatti necessita di standard avanzati di sicurezza tra web services (WS-Security, WS-Trust, tokens SAML e simili amenità), cose che rischiavano di rompere completamente lo schema di funzionamento che avevo creato.

Logo della WSO2 Open Source company
Durante la ricerca (fatta di sofferenza e tribolazioni) di documentazione circa gli standard di sicurezza in questione ed il loro funzionamento con Axis2 e la piattaforma da noi utilizzata mi sono imbattuto in WSO2, un’azienda che si qualifica come “The Open Source SOA Company”. Sposando per l’appunto la filosofia pienamente open source questa mette a disposizione tutta una serie di servizi di livello enterprise e basati su piattaforma java EE per l’implementazione e la gestione di sistemi informativi basati su un’architettura orientata ai servizi.
Prosegui la lettura >>
2009
11.10
Già in passato mi sono perso molte volte nella ricerca di un software di modellazione UML che fosse liberamente utilizzabile e che permettesse di creare semplicemente almeno i diagrammi principali specificati dalla Gang-Of-Four. Purtroppo devo ammettere che i software open source non hanno ancora raggiunto un livello di qualità veramente rispettabile in questo campo; e me ne rammarico perché ciò ci costringe a sottostare a licenze costose (Rational Rose di IBM, un prodotto di riferimento del settore, va nell’ordine delle migliaia di dollari) o limitative, che inibiscono funzionalità o impongono un watermark sui diagrammi generati.
Prosegui la lettura >>
2009
11.06
La grande G, oramai centro nevralgico delle attività della maggioranza degli internauti, ha rilasciato una nuova applicazione: Google Dashboard. Se vi siete mai chiesti cosa google sa di voi esattamente questo nuovo servizio vi darà tutte le risposte che desiderate. Tramite la sua interfaccia è possibile vedere tutti i dati registrati col vostro account in ogni applicazione google; le uniche esclusioni al momento sono Google Sites e gli strumenti per webmaster. Sarà possibile dunque vedere la propria cronologia relativa documenti google documents, foto su picasa, gmail, calendar, attività, iGoogle e, dulcis in fundo, tutte le ricerche effettuate con il motore di ricerca.
Forse per la preoccupazione per un’immagine messa a rischio, volente o nolente, dalla grande quantità di informazioni che detiene su ogni utente google cerca così di tranquillizarci mostrandoci i nostri dati e permettendoci di gestire la nostra privacy. Sorpresa molto gradita, speriamo che questa sia questa la linea che si continuerà a seguire nel google labs.
2009
11.05

Per lavoro sto utilizzando il framework Hibernate sviluppato all’interno della comunità Java. Nonostante non abbia molto in simpatia lo sviluppo javaEE, anzi lo ritenga personalmente lento e noioso, devo dire che questo componente presenta delle caratteristiche molto convincenti; certo, presenta anche la prolissità e la “pedanteria sintattica” tipica dei componenti java, ma si fa ripagare fornendo un sistema veramente flessibile ed efficace.Il suo campo di applicazione riguarda soprattutto lo sviluppo di applicazioni Enterprise che necessitino di supporto alla persistenza (ad esempio tramite database). La libreria fornisce principalmente dei servizi di tipo transazionale, un sistema di mapping degli oggetti su tabelle database, sistemi flessibili di caching dei risultati database ed un linguaggio di query astratto (HQL) che viene convertito a run time nel dialetto di molti database tra i più diffusi(MySQL, Oracle, PosgreSQL, ecc.), con la possibilità all’occorrenza di implementare un driver per supportarne altri. La configurazione del sistema e dei mapping oggetto-relazione si può effettuare tramite XML, properties java, annotazioni (da Java5 in poi) e programmaticamente, sebbene la prima soluzione sia probabilmente quella più utilizzata per la sua universalità.
Prosegui la lettura >>
2009
11.01

Logo della nuova versione di Kohana
Nell’intento di sviluppare un’applicazione gestionale web mi sono trovato qualche tempo fa a provare alcuni framework per PHP5; il mio intento era trovare una piattaforma che fosse semplice, Object Oriented e che facilitasse l’implementazione di soluzioni AJAX. Mi sono così imbattutto su Kohana, che a quel tempo era alla versione 2.1; esso è un framework MVC Open Source orientato agli oggetti e scritto in PHP5. Molte delle sue features somigliano a ciò a cui sono abituati gli sviluppatori Ruby-On-Rails, soprattutto per quanto riguarda l’implementazione Model View Controller e le funzionalità di Object-Relation Mapping fornite per l’accesso al database.
Prosegui la lettura >>