martedì 30 dicembre 2008

Problemi di accesso al sito Web di DataFox finalmente risolti!

Questo Natale il nostro fornitore di connettività ad Internet mi ha fatto un po' tribolare, visto che la mattina del 24, di punto in bianco, il nostro collegamento ha smesso di funzionare. Quindi tutti i siti Web (DataFox, Monitor Investimenti, Adozioni Giuste) sono risultati inaccessibili e la posta elettronica è rimasta bloccata fino a stamani (praticamente sei giorni). Adesso per fortuna tutto sembra rientrato nella norma, quindi almeno il Capodanno me lo posso gustare in santa pace!

Lo sviluppo della nuova applicazione per BlackBerry sta procedendo secondo i piani e , per ora, sono riuscito ad implementare tutte le funzionalità previste, anche lo scambio di info via mail sui dispositivi non aggiornati all'ultimissima versione del software di sistema. Fra poco quindi potrò alzare il sipario anche su questa mia ultima fatica!

Buon 2009 a tutti!

martedì 23 dicembre 2008

Nuova Applicazione per BlackBerry

Sono abbastanza soddisfatto dell'accoglienza riservata alle nostre prime applicazioni per BlackBerry: Risparmiometro si avvicina ormai ai 100 download, IBANc ha superato i 50 e BB Trainer, dopo un inizio un po' difficile, sta riguadagnando terreno. Spero che la nuova applicazione che sto sviluppando raggiunga risultati altrettanto lusinghieri. Purtrpoppo sono un po' indietro con la tabella di marcia: avrei voluto rilasciarla prima di Natale, ma non credo di farcela. A questo punto l'obiettivo è l'inzio del 2009. In realtà non sono stato con le mani in mano, anzi ho lavorato molto! Forse anche troppo, nel senso che ho cercato di implementare molte funzioni (secondo me utili) e contemporaneamente di integrare il più possibile l'applicazione con gli strumenti nativi del BlackBerry. Quindi oltre a poter richiamare direttamente le applicazioni per telefonare, per inviare email e per navigare su Internet, viene recuperata la posizione corrente dal GPS (per i dispositivi che ne sono provvisti) e viene visualizzata la mappa relativa. Infine ho pensato di implementare un meccanismo di condivisione delle informazioni (in modo che gli amici possano scambiarsi quanto ritengono utile e interessante), basato sull'invio di email e una gestione custom degli allegati. Purtroppo sembra che la libreria Java nelle versioni precedenti alla 4.5.0.63 sia affetta da un bug proprio nelle parti relative agli allegati e quindi questa funzionalità potrebbe non essere fruibile pienamente su molti dispositivi. Comunque devo verificare il comportamento di un dispositivo reale, oltre che dei vari simulatori.

Prima di salutarvi e di augurarvi Buon Natale vi segnalo una libreria che mi sembra molto interessante e che sto valutando per un nostro progetto importante, cioè SmartGWT, l'implementazione per GWT delle API SmartClient. Sono disponibili tantissimi componenti AJAX molto potenti ed è possibile utilizzare un meccanismo di Data Binding veramente valido. Vi consigli di darci un'occhiata.

lunedì 15 dicembre 2008

BB Trainer per BlackBerry

Dopo l'annuncio del post precedente, mi sono impegnato a fondo per completare il prima possibile la nuova applicazione per BlackBerry. In realtà c'è stato un cambio in corso d'opera, visto che mi è venuta in mente un'altra funzionalità che ho preferito realizzare prima di quella su cui stavo già lavorando, che quindi è stata temporaneamente messa da parte e che penso di riprendere proprio oggi. Quindi è nato BB Trainer, l'assistente di palestra per BlackBerry. Non mi voglio dilungare sulle funzionalità del software, per cui vi rimando alle pagine del sito di DataFox, ma sugli aspetti tecnici.
BB Trainer sfrutta tutti i componenti che ho realizzato e di cui vi ho parlato nei miei post, in particolare il GridLayoutManager e il Grafico a Barre. Durante lo sviluppo, li ho abbastanza migliorati e ho realizzato un mini (ma proprio mini) framework, che facilita abbastanza lo sviluppo di applicazioni di questo tipo. Effettivamente, BB Trainer, pur essendo molto più complesso di IBANc e Risparmiometro, è stato realizzato in molto meno tempo. Inoltre, per rendere più interessante lo sviluppo e più funzionale l'applicazione, ho richiamato (grazie alla classe net.rim.blackberry.api.invoke.Invoke) le applicazioni per il Telefono e la Posta Elettronica native del BlackBerry.Spero di poter annunciare a breve il rilascio dell'altra applicazione, in modo da poterla considerare un po' come il nostro regalo di Natale per tutti gli utilizzatori di BlackBerry.

lunedì 1 dicembre 2008

Nuova Applicazione e Libreria di Grafici per BlackBerry

Dopo la pubblicazione di Risparmiometro, ho iniziato lo sviluppo di una nuova applicazione per BlackBerry e quindi ho avuto pochissimo tempo da dedicare al Blog. Visto che l'appetito vien mangiando, questa applicazione è ancora più complessa delle due precedenti, con molte funzionalità e schermi, per cui non so esattamente quanto tempo mi ci vorrà per finirla. Non voglio anticipare niente, se non l'idea di base, comune anche al Risparmiometro, che si può sintetizzare nei due famosi motti dei nostri antenati Romani, "hic et nunc" (qui e ora) e "carpe diem" (cogli l'attimo). Penso che valga la pena utilizzare un'applicazione su smartphone quando permette di salvare al volo una qualche informazione, che altrimenti perderemmo, nel momento in cui ci passa davanti agli occhi, perché ce la possiamo dimenticare e abbiamo difficoltà ad appuntarla da qualche parte. In questo modo salviamo su un dispositivo che portiamo sempre con noi quanto pensiamo che ci possa essere utile in futuro e lo possiamo poi recuperare quando ci viene in mente o ci serve veramente.

Per semplificare lo sviluppo del Risparmiomentro ho realizzato il GridLayoutManager, per questa nuova applicazione ho inziato ad implementare una libreria di grafici per BlackBerry. Al momento è disponibile solo un grafico a barre verticali, di cui potete vedere un esempio nella figura seguente:Per ora può essere utilizzato solo per visualizzare dati storici, che cioè si sono verificati in un certo momento temporale. Anche se non ho l'ambizione di riscrivere il JFreeChart per BlackBerry, al momento il codice non è sufficientemente maturo e generico per essere reso pubblico. Comunque spero di riuscirci, prima o poi.

lunedì 24 novembre 2008

Risparmiometro per BlackBerry

Un post flash per segnalarvi che ho completato lo sviluppo di Risparmiometro per BlackBerry, l'assistente personale per il risparmio. Anche questa applicazione, liberamente scaricabile e utilizzabile come IBANc, è stata realizzata grazie agli strumenti di sviluppo e alle librerie forniti da RIM, in particolare il plugin per Eclipse, di cui ho già parlato con un certo entusiasmo. Per le funzionalità e le indicazioni per l'installazione vi rimando alle pagine pubblicate sul sito di DataFox. Qui mi limito a sottolineare che lo sviluppo è stato molto semplificato dall'uso del GridLayoutManager e del FormScreen, che mi hanno permesso di creare molto rapidamente schermi complessi e con i componenti grafici collocati nel punto desiderato.

sabato 22 novembre 2008

Due suggerimenti per lo sviluppo con il plugin per BlackBerry

Ho quasi completato lo sviluppo di una nuova applicazione per BlackBerry, di cui vi parlerò in un prossimo post, e ho utilizzato l'ultima versione del plugin per Eclipse fornito da RIM. Anche se si tratta di una beta, ho trovato questo strumento molto stabile e funzionale e, grazie ad esso, sono riuscito a realizzare un software relativamente complesso in poco tempo. Il plugin permette di sfruttare le versioni 4.3, 4.5, 4.6 e 4.7 della libreria e tutti i simulatori dei vari dispositivi prodotti da RIM; ho installato e utilizzato gli 81xx, 83xx, 87xx, 8900, 9000 e 9530 (il nuovissimo Storm con touch screen).
Durante questa attività ho incontrato un paio di problemi, che sono riuscito a risolvere e le cui soluzioni sono l'argomento di questo post. Il primo problema riguarda la firma del codice tramite l'apposito strumento presente nel menù BlackBerry (Request Signatures...). Infatti inizialmente non risultavano più disponibili le chiavi che avevo richiesto a RIM e che avevo installato sul PC; pertanto non era possibile firmare il codice applicativo. Alla fine è stato sufficiente copiare due file (sigtool.db e sigtool.csk), presenti nella cartella del vecchio JDE, nella directory plugins\net.rim.eide.componentpack4.x.0_4.x.0.y\components\bin di Eclipse.
Il secondo problema riguarda l'uso di classi di supporto, che si trovano in progetti separati, all'interno del codice presente nel progetto principale. In pratica volevo sfruttare il GridLayoutManager (di cui ho scritto nel post precedente) all'interno della nuova applicazione, lasciandolo in un progetto a sé stante. Nessun problema di compilazione (impostando opportunamente il Build Path di Eclipse), ma nessuna voglia di funzionare a runtime dentro il simulatore di BlackBerry. Per risolvere anche questo problema è stato sufficiente impostare il tipo di progetto su Library, come si vede nella schermata seguente:Per concludere una novità interessante:
  • E' finalmente uscita la versione 6.5 di NetBeans, l'ambiente di sviluppo Open Source sponsorizzato da Sun. Le innovazioni introdotte con questo rilascio sono molte e tutte interessanti, a partire dal build automatico sul save del file (alla Eclipse), fino all'integrazione di plugin specifici per la realizzazione di applicazioni in PHP. Ho seguito il rilascio di questa nuova versione fin dalle prime fasi e, pur non essendo un fan di questo IDE (si era capito?), devo dire che i miglioramenti sono visibili e certi strumenti sono ottimi, come il Profiler, intuitivo e potente.

domenica 16 novembre 2008

GridLayout per BlackBerry

Dopo aver completato lo sviluppo di IBANc, l'applicazione per la gestione di codici IBAN per BlackBerry, ho iniziato a cercare nuove esigenze per cui varrebbe la pena realizzare un software da far girare sui telefonini di RIM. Durante questo studio, mi sono reso conto che un aspetto, su cui la libreria Java del BlackBerry è carente, è la gestione del posizionamento dei componenti grafici sullo schermo. I contenitori standard (VerticalFieldManager e HorizontalFieldManager), anche se combinati fra loro, non permettono di collocare i componenti con la precisione necessaria per la realizzazione di una maschera complessa e inoltre non consentono di incolonnare i vari campi. Quest'ultima caratteristica negativa porta a risultati che, per mio gusto personale, non sono particolarmente piacevoli da vedere, come mostra abbastanza chiaramente la figura seguente:Si può notare come i vari campi di immissione siano disallineati rispetto ad un ideale asse verticale. Infine è molto complesso, se non impossibile, affiancare orizzontalmente due o più campi.
Sono quindi arrivato alla conclusione che è necessario disporre di un nuovo contenitore, sottoclasse di net.rim.device.api.ui.Manager, che fornisca funzionalità analoghe, anche se più semplici, del GridBagLayout dell'AWT di Java.
Ho deciso di chiamarlo it.datafox.bb.ui.container.GridLayoutManager, in quanto permette di disporre i componenti visuali su una griglia (GridLayout), con un numero prefissato di righe e colonne, ciascuna delle quali ha una larghezza definita dall'utilizzatore, espressa come percentuale della larghezza totale dello schermo. Per garantire una maggiore flessibilità, ho reso possibile estendere ogni campo su un numero arbitrario di righe e colonne, utilizzando un meccanismo analogo a quello del colspan/rowspan dell'HTML. La schermata seguente mostra lo stesso gruppo di componenti disposti grazie al GridLayout, utilizzando una griglia con due colonne e diverse righe.Tutti i campi di immissione, che si trovano nella seconda colonna, sono allineati verticalmente e alcuni campi speciali, come il gauge (la barra con la percentuale) o la lista, hanno un colspan pari a due e quindi occupano tutto lo spazio orizzontale disponibile. Si può anche notare che i due radio button sono posizionati sulla stessa riga, come sembra logico aspettarsi, visto che sono mutuamente esclusivi. Ho preparato anche un'altra schermata, in cui le colonne sono tre e dove ho posizionato i vari componenti con allineamenti orizzontali diversi.Per poter sfruttare le funzionalità del GridLayoutManager nel modo più semplice, ho creato anche una sottoclasse astratta di net.rim.device.api.ui.container.FullScreen, che si chiama it.datafox.bb.ui.container.FormScreen, da utilizzare per implementare i propri schermi di tipo form (maschere di visualizzazione o gestione di dati complessi). I metodi salienti del FormScreen sono il costruttore e l'add. Il costruttore ha la seguente firma:
public FormScreen(int numRows, int numCols, float[] colWidthPercs, long style)
e i parametri forniscono le seguenti informazioni:
  • numRows - numero di righe della griglia
  • numCols - numero di colonne della griglia
  • colWidthPercs - larghezza percentuale di ciascuna colonna
Il metodo add permette di aggiungere un campo allo schermo e ha le seguente firma:
protected void add(Field field, int x, int y, int rowspan, int colspan)
I parametri forniscono le seguenti informazioni:
  • field - campo che si vuole aggiungere allo schermo
  • x - colonna della griglia in cui si vuole inserire il campo
  • y - riga della griglia in cui si vuole inserire il campo
  • rowspan - numero di righe occupate dal campo
  • colpan - numero di colonne occupate dal campo
Quindi per creare un nuovo schermo con quattro righe e tre colonne e una dimensione relativa di 30, 40, 30 si può usare il seguente codice:
new TestScreen2(4, 3, new float[] { 30, 40, 30 },...)
e per aggiungere un'etichetta nella terza riga, in modo che la occupi tutta (colspan = 3) e che sia allineata al centro, si può scrivere in questo modo:
add(new LabelField("Label3", Field.FIELD_HCENTER), 0, 2, 1, 3)
Il codice sorgente del GridLayoutManager, del FormScreen e degli schermi di esempio riportati nelle schermate precedenti è scaricabile dal sito Web di DataFox. Ho testato questi componenti con tutti i simulatori dei dispositivi più recenti (dall'8100 al 9500) e il risultato è sempre stato positivo.

Restando in tema di sviluppo software per BlackBerry, vi segnalo un'interessante novità, cioè la nuova versione beta del plugin per Eclipse fornito da RIM. Questo rilascio è compatibile con Eclipse 3.4 e mette a disposizione tutti gli strumenti presenti nel JDE, come la firma del codice e la possibilità di scegliere la versione della libreria e del simulatore da utilizzare, integrandoli nel ben più potente ambiente di sviluppo Open Source. Da quando l'ho installato non ho riscontrato problemi e il suo utilizzo è veramente piacevole e produttivo, quindi lo consiglio a tutti quelli che realizzano software per BlackBerry.

lunedì 10 novembre 2008

Estensioni per Joomla! 1.5 - Seconda parte

Proseguo con la rassegna di estensioni per Joomla! 1.5 che ho potuto provare e che ho trovato interessanti. Quelle di cui parlo in questo post e nei prossimi sono state utilizzate nel sito dimostrativo Monitor Investimenti, di cui potete trovare una descrizione sulla pagina dedicata alla realizzazione di siti Web con Joomla!, pubblicata sul sito di DataFox. Potete trovare anche un'immagine di alcune di queste estensioni nella pagina dedicata alle schermate di Monitor Investimenti.
  • MorfeoShow - è un componente aggiuntivo che permette di creare gallerie di immagini e di visualizzarle all'interno di pagine con diversi effetti speciali, ottenuti sia tramite Javascript, che in Flash. Grazie al potente strumento di amministrazione è possibile caricare le immagini, associandole alle varie gallerie, e arricchirle con informazioni che vengono visualizzate in popup sulla pagina. Le gallerie possono essere associate ad una voce di menù oppure incorporate all'interno di una pagina grazie ad un apposito plugin.
  • JoomlaFCK Editor - è un plugin che rimpiazza l'editor WYSIWYG di pagine HTML standard fornito con Joomla!. Oltre a fornire nuove funzionalità e migliorie, ha il vantaggio di poter essere ridimensionato a piacere e quindi si adatta facilmente anche a quei template grafici che hanno una larghezza limitata.
  • QContacts - è un'estensione che migliora e potenzia il componente Contatti presente nell'installazione base di Joomla!. Permette di creare form per la richiesta di informazioni, compilabili dai visitatori della parte pubblica del sito. Si possono visualizzare varie informazioni relative al contatto (nome, cognome, indirizzo email, sito Web, telefono, ecc.) e si può richiedere che il visitatore inserisca alcuni dati, selezionalibili fra quelli standard e fra quelli personalizzabili. Permette anche di rendere obbligatoria l'immissione di un captcha (immagine di controllo) per bloccare richieste automatiche e spam.
Per la serie ultime notizie da Internet, riporto queste news relative a due strumenti di sviluppo prodotti da Oracle:
  • JDeveloper - è finalmente uscita la versione 11g dell'IDE Java alternativo del grande produttore di database. L'ho sempre ritenuto uno strumento molto interessante e potente, soprattutto per la sua integrazione con il database omonimo e per la ricchezza di funzionalità della libreria ADF. Resta da capire quale può essere il suo destino, considerando anche il fatto che Oracle, dopo l'acquisizione di BEA, dispone di un altro IDE basato su Eclipse, Workshop for WebLogic.
  • SQL Developer Data Modeling - è la versione, ancora in fase di sviluppo, rivolta ai progettisti e ai disegnatori di database del consolidato SQL Developer, lo strumento per la gestione e l'accesso ai database, essenzialmente un'interfaccia molto evoluta per la scrittura di codice SQL. Spero di riuscire a provare questo nuovo tool e di fornirne una piccola guida/recensione in un prossimo post.

Indicizzazione su Google

Un post un po' diverso da solito, questo che state leggendo, e che si ricollega a quello di ieri sul cambio di indirizzo della pagina principale sullo sviluppo di software per BlackBerry. Diverso soprattutto perché, invece di proporre risposte e soluzioni a problemi più o meno comuni, lascia aperti diversi interrogativi sul comportamento del motore di indicizzazione di Google, che non sono proprio riuscito a spiegarmi. Anzi, spero che qualche SEO più esperto di me possa darmi qualche delucidazione su quello che è successo.
Dopo aver pubblicato sul sito Web di DataFox cinque pagine relative ai nostri progetti per nuove applicazioni per la piattaforma BlackBerry, precisamente:
sono rimasto sorpreso del fatto che per certe ricerche (ad esempio: "sviluppo software blackberry") alcune di queste pagine finivano in prima pagina o addirittura prime su Google. Poi, in modo abbstanza misterioso, la pagina principale (quella sullo sviluppo di applicazioni per BlackBerry) è sparita dall'indice di Google e di conseguenza dai risultati della ricerca. Mi sono spiegato questo comportamento con il fatto che, in un eccesso di zelo, avevo copiato il contenuto della pagina in questione su un sito di directory aziendali e quindi ho pensato che Google, trovando un contenuto duplicato, avesse eliminato la pagina del sito di DataFox. Quindi mi sono affrettato a cancellare il testo dal sito altrui e ad aggiornare indirizzo e contenuto del nostro, nella speranza di rivedere la pagina nell'indice del motore di ricerca. Effettivamente è riapparsa, peccato che siano scomparse le altre e che non sia più in cima alla classifica! Vorrei capire esattamente che cosa è successo e quindi cercherò in Rete, in mezzo a tutto il materiale per SEO che si trova in giro, qualche spiegazione.

domenica 9 novembre 2008

Aggiornamento pagina e link su sviluppo software per BlackBerry

Per problemi di indicizzazione da parte di Google, ho dovuto aggiornare il contenuto e il link della pagina principale con le informazioni sullo sviluppo di software e realizzazione di applicazioni per BlackBerry, pubblicata pochi giorni fa sul sito di DataFox. Mi scuso per l'inconveniente e chiedo a tutti di modificare i propri favoriti per puntare al nuovo indirizzo.

venerdì 7 novembre 2008

L'ultima versione di RoundedVerticalFieldManager

Ho copiato sul server Web di DataFox l'ultima versione del codice sorgente del componente per BlackBerry che ho sviluppato, cioè il RoundedVerticalFieldManager. Durante la realizzazione dell'applicazione IBANc, questo contenitore con bordi stondati è stato utilizzato e testato molto più approfonditamente. Quindi sono emerse diverse problematiche nel ridisegno di alcune zone dopo la visualizzazione di dialoghi di grosse dimensioni. È stato necessario inserire diverso codice di debug per capire esattamente i rettangoli interessati e di conseguenza le operazioni da compiere per ottenere i giusti riempimenti. Per sicurezza (e un po' di scaramanzia ;-)) ho lasciato commentate le varie righe con la stampa su console dei messaggi con le informazioni che mi servivano. Adesso, dopo diverse prove, il risultato mi sembra soddisfacente e piacevole da vedere, come potete osservare nell'immagine seguente, che ho ripreso dalla pagina con le schermate di IBANc.
Lo schermo è stato diviso in tre sezioni verticali, ciscuna delle quali contiene un RoundedVerticalFieldManager. Il primo serve per mostrare il codice IBAN risultante dall'elaborazione dei dati inseriti dall'utente. Il secondo contiene i singoli campi che costituiscono il codice IBAN e le informazioni di supporto (come la descrizione del record su cui si sta lavorando). Il terzo contiene il pulsante Verifica, con cui si richiede il controllo dei dati inseriti e la creazione del codice IBAN. Per osservare il contenitore all'opera, oltre a scaricare e installare sul proprio BlackBerry l'applicazione IBANc, è anche possibile visionare la dimostrazione video di IBANc.

A partire da questo post, prima di salutarvi, pubblicherò alcune notizie su strumenti e tecnologie che utilizzo o che mi sembrano interessanti e per i quali c'è qualche novità di rilievo:
  • È uscita la nuova e attesa versione 8 di IntelliJ IDEA. Le novità e le modifiche sembrano numerose e importanti e riguardano tutti gli aspetti dello sviluppo di applicazioni su piattaforma Java. Ho scaricato e installato la versione trial, spero di riuscire a provarla e di poter raccontare le prime impressini di utilizzo di questo strumento.
  • È disponibile la versione 0.9 di ZK Studio, il plugin per Eclipse rivolto agli utilizzatori del framework ZK. Anche per questo software sono molte le migliorie rispetto alle versioni precedenti, in particolare l'editor visuale di codice ZUL, che permette di avere un'anteprima del'aspetto grafico della pagina. Ritengo che la piattaforma ZK sia molto interessante e sto aspettando l'occasione giusta per metterla alla prova su un progetto reale.

giovedì 6 novembre 2008

Rieccomi!

È quasi passato un mese dall'ultimo post e forse qualcuno ha cominciato a pensare che fossi partito o avessi cambiato mestiere. Per fortuna (o purtroppo, dipende dai punti di vista) sono ancora qui e finalmente riesco di nuovo a farmi sentire. A dire la verità non sono stato con le mani in mano: oltre a seguire i soliti progetti, mi sono impegnato molto per completare, con annessi e connessi, due nuove sezioni del sito di DataFox, cioè la realizzazione di siti con Joomla! e lo sviluppo di software per BlackBerry.
Nella prima, oltre ad esaminare le caratteristiche del nostro CMS favorito (appunto Joomla!) e le possibilità di realizzazione di nuovi siti o di migrazione di siti esistenti, viene presentato anche Monitor Investimenti, un sito dimostrativo interamente sviluppato con Joomla! e arricchito con molte estensioni, utili per rendendere la navigazione più piacevole e fornire l'accesso anche a contenuti multimediali (audio, video, documenti, ecc.). Di seguito una schermata del sito e un invito a visitarlo e a lasciare qualche commento.Nella seconda, dopo aver esaminato alcune delle caratteristiche più interessati della piattaforma BlackBerry dal punto di vista di chi sviluppa software, viene presentata la nostra prima applicazione, cioè IBANc, una rubrica specializzata per la gestione di codici IBAN, cioè quei codici impossibili da ricordare che identificano univocamente i conti correnti e che hanno sostituito le coordinate bancarie. Questo software per BlackBerry, pur essendo semplice, è completo e funzionante (è anche firmato con un certificato digitale rilasciato da RIM, in quanto usa funzioni "riservate") ed è possibile scaricarlo gratuitamente e installarlo seguendo la procedura indicata sul sito Web. Vi lascio una schermata come assaggio, sperando che qualcuno abbia voglia di provarlo.
Per adesso termino qui, ma vi anticipo alcuni degli argomenti di cui parlerò nei prossimi post, che penso di scrivere a brevissimo, uno dietro l'altro.
  • Nuova versione del RoundedVerticalFieldManager - durante lo sviluppo di IBANc ho trovato alcuni problemi, che sono stati risolti con un certo impegno, e questo dovrebbe essere il rilascio definitivo;
  • Nuove estensioni per Joomla! - prosegue la panoramica sulle estensioni per Joomla! che ritengo più valide e che ho utilizzato in qualche sito Web;
  • Trucchi per Eclipse - soluzioni a problemi inspiegabili che a volte si verificano con l'ambiente di sviluppo per Java;
  • Sviluppo di applicazioni per FaceBook - ho iniziato a lavorare con le API messe a disposizione dal sito di Social Networking e ci sono diverse scoperte da condividere.

giovedì 9 ottobre 2008

Nuova versione del contenitore con bordi per BlackBerry

Iniziando a lavorare seriamente con il RoundedVerticalFieldManager (il mio contenitore con bordi per BlackBerry), ho scoperto subito un comportamento non proprio corretto. Ho inserito nel contenitore varie tipologie di componenti (campi di input e bottoni) e il risultato è stato un disastro:
Spostandosi in alto e in basso con il cursore e inserendo del testo, tutto lo sfondo viene come "mangiato" e l'effetto finale non è proprio quello desiderato. Ho dovuto introdurre diversi controlli per gestire queste situazioni (e non penso di averle ancora individuate tutte) e per fare in modo che lo sfondo venga salvaguardato durante l'interazione con i componenti in primo piano. Alla fine il risultato è decisamente più accettabile:
Ho anche dato una pulitina al codice, togliendo di mezzo un po' di costanti che erano rimaste in giro, e ho aggiornato l'archivio presente sul server Web di DataFox e potete quindi continuare a scaricarlo cliccando qui.
Adesso spero di potermi dedicare allo sviluppo dell'applicazione vera e propria! A forza di sviluppare software usando componenti già pronti ci si dimentica di quanto sia difficile farseli da sé.....

mercoledì 8 ottobre 2008

Estensioni per Joomla! 1.5

Stiamo portando avanti con un gruppo musicale un progetto molto interessante, il cui scopo è la realizzazione di un sito Web che faccia conoscere a tutti il loro progetto artistico e che possa rappresentare un punto di aggregazione per altri gruppi o singoli con le stesse passioni e aspirazioni. Non voglio anticipare altro, visto che siamo a buon punto e spero di poter annunciare a breve l'inaugurazione del sito proprio da questo blog. Poiché questo sistema deve permettere sia di inserire e gestire contenuti di varia natura (testi, musiche, video, ecc.) che di mettere in contatto persone lontane fisicamente ma vicine spiritualmente, ho scelto di usare come piattaforma di sviluppo Joomla! 1.5, opportunamente arricchito con componenti, moduli, temi, ecc..
Con questo post inizio una serie di interventi che hanno come obiettivo l'esame delle estensioni che ho deciso di utilizzare in questo progetto. Non voglio confrontare estensioni simili e decretare un vincitore, semplicemente elencare le estensioni usate e indicare pregi ed eventuali difetti riscontrati. Poiché il budget disponibile è praticamente nullo, tutte le estensioni (individuate grazie a Joomla Extensions Directory) sono gratuite.
  • EventList - è un componente (corredato da alcuni moduli aggiuntivi) che permette di gestire eventi che si svolgono nel corso del tempo. E' possibile gestire anche le sedi associate a questi eventi. Si possono utilizzare sia l'interfaccia di amministrazione che l'interfaccia pubblica per inserire e modificare i dati. Gli eventi vengono organizzati in categorie e queste ultime possono essere utilizzate come criterio di ricerca o di visualizzazione. Ritengo che questa estensione sia molto valida, l'unico difetto che ho trovato riguarda alcune imprecisioni della traduzione in italiano, che ho dovuto sistemare a mano.
  • JoomlaPack - è un componente che consente di eseguire backup completi del sito Joomla! su cui si sta lavorando. Vengono salvati sia i dati presenti sul DB che il contenuto del file system. In tal modo è possibile eseguire l'operazione di Restore anche se il sito è andato completamente perduto. Trovo che questa estensione sia molto valida e che permetta di salvaguardare tutto il lavoro fatto. Forse manca un meccanismo per eseguire periodicamente i backup o per farli scattare in conseguenza di qualche operazione sul sito.
  • AllVideos - è un plugin che permette di arricchire articoli di testo con contenuti multimediali, ad esempio video o audio. Tali contenuti possono essere presenti sul server che ospita Joomla!, oppure possono essere prelevati direttamente da Internet, ad esempio da YouTube. Sono molteplici i formati supportati (flv, swf, mov, mp4, wmv, wma, mp3, 3gp, divx), così come i portali da cui scaricare i contenuti multimediali. Per inserire un video in formato flv all'interno di un articolo è sufficiente scrivere: {flv}nome file{/flv}.
Per oggi mi fermo qui, la prossima volta vi parlerò di altre estensioni utili. Ma prima di salutarvi, un'altra novità direttamente dal sito Web di DataFox. Per ogni corso di formazione previsto per il calendario 2008/2009 è presente una nuova scheda di dettaglio, da cui è possibile scaricare la brochure in PDF. Quindi potete andare a vedere il programma del corso su Joomla!, di quello sulla programmazione Java, di quello sulla programmazione Web, su .NET, su PHP e MySQL, su Grails, e su tutti gli altri.

martedì 7 ottobre 2008

Contenitore con bordi per BlackBerry

Ho iniziato a sviluppare l'applicazione per BlackBerry di cui vi ho parlato nei post precedenti, cercando di sfruttare tutti i momenti liberi che sono riuscito a trovare. Per l'interfaccia utente mi sono ispirato alle varie applicazioni standard preinstallate sul telefonino (ad esempio Tasks), quindi ho creato uno schermo principale e uno di dettaglio, con una serie di campi di input con cui l'utente può interagire per inserire e modificare le informazioni. Ho cercato di organizzare questo form suddividendo i campi in gruppi logici, racchiusi all'interno di aree delimitate in qualche modo. Il candidato ideale per svolgere questo ruolo è la classe Border (che si trova nel package net.rim.device.api.ui.decor), da applicare ad un componente (in questo caso un contenitore) tramite il metodo setBorder della classe Field. Dopo aver scritto tutto il codice, ecco la sgradita sorpresa: il programma funziona senza problemi con l'emulatore del modello 9000, ma utilizzando un modello precedente si ottiene un errore bloccante.Dopo un po' di ricerche, scopro (con una certa incredulità per tale mancanza) che tutto questo funziona solo con il JDE (e di conseguenza con la libreria di runtime) 4.6.0. Suddetti classi e metodi nella versione 4.5.0 non esistono proprio e quindi non si può che verificare l'errore di Class Not Found.

Come ovviare a questa situazione? Eliminando l'uso del Border tutto va a meraviglia, ma il risultato è abbastanza penoso da un punto di vista estetico. Dopo vari tentativi falliti (ad esempio l'uso di una bitmap come sfondo del contentore), arrivo alla soluzione attuale, che mi soddisfa abbastanza, anche se può essere sicuramente migliorata. Ho creato una sottoclasse di VerticalFieldManager (package net.rim.device.api.ui.container), visto che i vari campi devono essere disposti verticalmente, e ho sovrascritto il metodo paintBackground. In questo metodo ho riempito il rettangolo che rappresenta il contenitore con un colore di sfondo e su questo ho disegnato un rettangolo con i bordi stondati più piccolo, riempito di bianco. Il risultato è visibile in figura:
Per completare il componente bisognerebbe dare un maggior effetto tridimensionale, come di profondità alla parte interna, ma per ora può andare bene anche così. Ho preparato un archivio contenente il codice sorgente del RoundedVerticalFieldManager (package it.datafox.bb.ui.container), che può essere scaricato da qui. Per posizionare correttamente i componenti all'interno del contenitore è necessario utilizzare il metodo setPadding, come nel seguente esempio:
provaVFM.setPadding(new XYEdges(7, 5, 6, 7));

Alcune novità anche per quanto riguarda il sito Web di DataFox. Abbiamo infatti creato tante sottosezioni relative ai moduli di Desmo Finanza e di Desmo Monitor Investimenti. Quindi funzionalità importanti come il Controllo Limiti Normativi, il Registro Ordini, il Calcolo dei Rendimenti, la Performance Contribution e la Performance Attribution hanno finalmente lo spazio e l'approfondimento che meritano.

martedì 30 settembre 2008

Applicazione per BlackBerry e domini Performance Attribution

Dopo aver completato la Component Gallery e aver testato altre classi messe a disposizione dalla libreria di RIM (ad esempio, trovo veramente notevole la coppia PersistentStore / PersistentObject per memorizzare oggetti Java generici nella memoria del dispositivo), ho iniziato lo sviluppo di una vera applicazione per BlackBerry. Vi voglio anticipare solo che le funzionalità sono in ambito bancario e che appena completata sarà liberamente scaricabile.

Abbiamo completato la registrazione e la configurazione di tre nuovi domini Internet relativi alla Performance Attribution, cioè www.performanceattribution.it, www.performance-attribution.it e www.performance-attribution.com. Per il momento li abbiamo fatti puntare tutti sul sito Web di DataFox, tuttavia stiamo studiando altre soluzioni, in particolare la realizzazione (con Joomla! 1.5, in modo da sfruttare le nostre competenze su questo CMS) di un sito Web con contenuti e approfondimenti specifici su questa tematica.

domenica 28 settembre 2008

Nuova versione della Component Gallery per BlackBerry

Come avevo promesso qualche post fa, ho completato la Component Gallery con i componenti grafici del BlackBerry e questa volta penso di averli utilizzati tutti, o quasi. Il file aggiornato è scaricabile qui e, come il precedente, contiene sia i sorgenti che i file di supporto per il JDE di Eclipse.
In questa nuova versione sono presenti due Screen diversi e per passare dal primo al secondo è sufficiente cliccare sul pulsante presente nella prima schermata. Il primo (visibile nella figura seguente) è lo stesso della versione precendente, a cui è stato aggiunto un Field custom che disegna un rettangolo colorato.
Il secondo (visibile nella figura successiva) è quello più interessante, in quanto mette alla prova i seguenti componenti:
  • contenitori (HorizontalFieldManager e VerticalFieldManager)
  • ListField
  • TreeField
Ho fatto alcuni esperimenti con i contenitori, il cui risultato è visibile nella parte alta dello schermo, per verificare quali siano le possibilità di disporre i componenti sullo schermo.
Per quanto riguarda il ListField, ho creato una sottoclasse ad hoc, MyListField, in modo da poter intercettare gli eventi generati dalla trackwheel e dalla tastiera e per associare a questo componente un menù custom. Quindi, quando il focus è su questo componente e si preme il pulsante che apre il menù, appare una nuova voce creata da codice.
Il TreeField è interessante in quanto con il metodo addChildNode si aggiungono nodi all'albero e con il metodo drawTreeItem (definito in un'apposita interfaccia richiamata dal Framework) si vanno invece a disegnare sullo schermo. In tal modo si è ottenuta la separazione fra dati e presentazione (model e view) e risulta più facile personalizzare l'aspetto grafico dell'albero.

Prima di concludere, vi segnalo che sul sito di DataFox, nella sezione Corsi di Formazione, sono presenti i programmi dei nuovi corsi, come il Corso su Joomla! 1.5, il Corso su PHP e MySQL, il Corso di programmazione base e il Corso di Programmazione ad Oggetti.

mercoledì 24 settembre 2008

Aggiornamento sito DataFox e Joomla!

Finalmente, dopo diversi giorni di lavoro molto intenso, siamo riusciti a pubblicare su Internet il nuovo sito Web di DataFox. Le modifiche, anche se poco visibili a prima vista, sono importanti e riguardano sia gli aspetti tecnologici che i contenuti.
Relativamente al fronte tecnologico posso dire che siamo passati da Internet Information Server ad Apache (installato in bundle con PHP 5 grazie a XAMPP), in modo da poter sfrutture il motore di rewrite degli URL messo a disposizione da questo Server HTTP. Grazie ad esso e alle funzionalità di Mambo e di un'apposita estensione, adesso gli URL del sito sono molto più significativi e parlanti di quelli precedenti.
Il lavoro più importante riguarda i contenuti, in quanto abbiamo rivisto e corretto tutte le sezioni relativi ai notri prodotti finanziari, Desmo Finanza e Desmo Monitor Investimenti. Inoltre abbiamo completato le schede di PerfeCtA (brochure), il nostro motore di calcolo per la Performance di Portafoglio, la Performance Contribution, la Performance Attribution e il Rischio di Portafoglio.
Nel frattempo ho continuato a lavorare ad un progetto di sito Web per il gruppo musicale formato da alcuni amici (maggiori dettagli appena sarà reso pubblico). Come strumento per la gestione dei contenuti ho scelta Joomla! (la versione 1.5.7 in italiano), che mi è sembrato il CMS più semplice e completo, molto ricco di estensioni e temi grafici alternativi. Dopo alcuni giorni di utilizzo, devo riconoscere il valore di questo software, a parte per un aspetto, che mi ha lasciato abbastanza perplesso, cioè la gestione degli utenti e delle autorizzazioni. Ho trovato questa funzionalità relativamente limitata e poco flessibile, soprattutto per un CMS. Ho letto su Internet che una gestione evoluta delle ACL (Access Control List) sarà disponibile nella versione 1.6, ma nel frattempo sembra che l'unico modo per ovviare a questa lacuna sia l'acquisto di qualche estensione a pagamento. Altre soluzioni o suggerimenti sono ben accetti...

mercoledì 17 settembre 2008

Grails e ZK su Eclipse

Oggi una piccola variazione sul tema, visto che affronto alcune problematiche che ho incontrato e risolto utilizzando i plugin di Eclipse per Grails e ZK (ZK-Studio).

Con il primo, cioè il plugin per Grails, ho riscontrato un problema nell'esecuzione dell'applicazione tramite l'apposita configurazione per Eclipse generata da Grails stesso. Infatti ad ogni tentativo viene lanciato il seguente errore:

Error starting Sun's native2ascii:

e l'applicazione termina prematuramente. Dopo alcune ricerche, ho scoperto che il tool native2ascii fa parte del JDK, mentre l'applicazione viene lanciata con il JRE. Tuttavia, anche configurando ed utilizzando il JDK, l'errore persiste. La soluzione che ho trovato consiste nell'aggiungere manualmente il tools.jar (presente nel JDK) alle librerie associate da Eclipse al JRE, come si può vedere nella figura seguente:
A questo punto, l'applicazione parte senza problemi.

Dopo aver installato l'ultima versione di ZK-Studio (la 0.8.2), ho provato a creare una pagina ZUL tramite il wizard messo a disposizione da questo plugin:
Selezionando la voce "use variable-resolver..." (come si vede nella figura precedente), si ottiene un file contenente la riga:

<?variable-resolver use="org.zkoss.zkplus.spring.DelegatingVariableResolver"?>

che è sbagliata, in quanto l'attributo giusto non è "use" ma "class". Cioè la riga corretta è:

<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?>

Se non si esegue manualmente questa correzione e si prova comunque a richiamare la pagina, si ottiene un errore:
org.zkoss.zk.ui.UiException: The class attribute is required, [SYS file:/C:/Eclipses/eclipse_332/workspace/Prova/web-app/new_file.zul line 4 col 79]

Ho segnalato l'anomalia sul tacker del progetto ZK in SourceForge e waterbottle (alias Dennis Chen, uno degli sviluppatori di ZK) ha riconosciuto che si è trattato di un errore di scrittura.

domenica 14 settembre 2008

Component Gallery per BlackBerry

Ho completato una prima versione della Component Gallery per BlackBerry, in cui sono utilizzati tutti i componenti grafici di base contenuti nel package net.rim.device.api.ui.component. Ho preferito rimandare ad una seconda versione i componenti più complessi, come il ListField e il TreeField, e i vari contentori presenti nel package net.rim.device.api.ui.container.

Come si può vedere nella figura seguente, all'interno del simulatore il programma può essere lanciato tramite una semplice icona che si trova nella cartella Downloads:
Una volta partito, viene visualizzata una schermata con tutti i componenti disposti verticalmente; poiché sono molti, non entrano tutti in una singola pagina e si possono vedere spostandosi verso il basso.Il codice sorgente e i file di supporto per Eclipse con plugin JDE si possono scaricare da qui. Oltre che con questo ambiente, il codice può essere utilizzato anche con il JDE standard, dopo aver creato e configurato i contenitori previsti da questo tool (workspace e project).

venerdì 12 settembre 2008

JDE e Eclipse

Dopo un po' di tempo, riesco finalmente a scrivere un nuovo post. In questi giorni siamo stati molto impegnati ad aggiornare il sito Web di DataFox e le brochure di Desmo Finanza e Desmo Monitor Investimenti, in particolare per presentare le nuove funzionalità di Performance Contribution e Performance Attribution. Abbiamo anche pubblicato una demo statica del nuovo modulo "Portafogli WEB".

Ma torniamo a noi e allo sviluppo di applicazioni per BlackBerry. Come anticipato nel post precedente sto preparando una piccola demo dei componenti grafici messi a disposizione dalla libreria di RIM; ho iniziato utilizzando, come ambiente di sviluppo, il JDE 4.6.0 (di cui è appena uscita la versione definitiva), ma ho sentito la necessità di tornare ad Eclispe, vista la familiarità che ho con questo tool. Quindi ho installato la beta del JDE Plug-in for Eclipse, appoggiandolo ad uno degli Eclipse presenti sul mio computer. Fin qui tutto bene, ho creato il workspace per il BlackBerry e un progetto, in cui ho copiato quanto realizzato con il JDE. Anche l'emulatore ha funzionato senza problemi.

Quando ho iniziato a modificare il codice ho avuto una brutta sorpresa: il completamento automatico (Ctrl+Space) non funziona! Ma come è possibile? All'interno della classe principale, sottoclasse di MainScreen il Code Assist di Eclipse non fornisce nessun suggerimento, neanche per le classi base come String; al contrario, in altre classi figlie di Object tutto va a meraviglia. Poiché ritengo che questa funzionalità sia fondamentale, ho cercato di capire il motivo di questo strano comportamento. Dopo un po' di indagini e di tentativi, ho scoperto che alcune classi presenti nel JAR fornito con il JDE (net_rim_api.jar) risultano contenere una o più inner class, ma il corrispondente file .class (riconoscibile dalla presenza del $ nel nome) manca. Quando si crea una sottoclasse di queste classi (ad esempio UiApplication o MainScreen), il Code Assist non fornisce nessun suggerimento. In modo forse non molto ortodosso (ma bisogna fare di necessità virtù, no?), ho creato i file .class delle inner class mancanti, li ho aggiunti ad una mia versione del file JAR di libreria e mettendo quest'ultimo nel Build Path del progetto l'auto completamento ha iniziato a fare il suo dovere. Anche a run time non ci sono problemi, in quanto il JAR "arricchito" serve solo per l'editing e la compilazione e quindi le inner class fittizie non vengono neanche considerate dall'emulatore.

Pur avendo raggiunto il mio scopo, resto con due dubbi:
  • come mai le inner class mancano dal JAR? dimenticanza o protezione del codice dagli attacchi dei decompilatori?
  • perché Eclipse non gestisce in modo migliore questa situazione anomala?
Alla prossima, finalmente con la demo completata, anche grazie al Code Assist di Eclipse!

venerdì 5 settembre 2008

Dove sono finite le applicazioni?

Mi riaggancio al post precedente, a proposito dell'utilizzo dell'emulatore del BlackBerry all'interno del JDE. Grazie alle preziose indicazioni che ho trovato su dev|sushi, sono finalmente riuscito ad eseguire le applicazioni di esempio e quelle scritte da me, sia nella versione stabile 4.5.0 che nella beta 4.6.0. Ma qual è il mistero finalmente svelato? A differenza di tutti gli altri emulatori che ho utilizzato in passato (ad esempio quello per Windows Mobile o per J2ME), in questo caso l'applicazione che si vuol testare non parte automaticamente, ma viene semplicemente caricata nella memoria dell'ambiente emulato. Per certi versi, questo comportamento è più realistico, visto che sul dispositivo vero le applicazioni devono essere lanciate dall'utente, quando ha intenzione di utilizzarle.

Nell'emulatore predefinito del JDE 4.5.0, corrispondente al BB 8300, le applicazioni create nell'ambiente di sviluppo si trovano insieme alle altre, come si vede in figura, dove è stata evidenziato l'esempio "Hello World".
Nell'emulatore del JDE 4.6.0, corrispondente al BB 9000, le applicazioni su cui si sta lavorando si trovano nella cartella Downloads, come si vede in figura, dove, oltre al solito "Hello World", si possono vedere altri esempi.

In un prossimo post presenterò una piccola applicazione dimostrativa, corredata di codice sorgente, in cui sono utilizzati i vari componenti grafici (lista, albero, radio, check, ecc.), messi a disposizione da RIM per creare le interfacce utente. Lo scopo è di mettere a disposizione una galleria di componenti con cui fare esperimenti e toccare con mano i risultati ottenibili con ciascuno di essi.

martedì 2 settembre 2008

Sviluppo per BlackBerry e attacchi NDR su Exchange

Oggi avrei voluto parlare dei primi risultati conseguiti nello sviluppo di software per BlackBerry. Purtroppo, dopo diversi tentativi e ricerche su Internet, non sono riuscito a far funzionare correttamente l'emulatore integrato nella versione 4.6.0 (beta) del JDE (ambiente intergrato fornito da RIM). Il comportamento è stato abbastanza singolare, in quanto l'emulatore partiva senza problemi, ma non riusciva a caricare i programmi compilati, il tutto senza fornire la minima spiegazione. Al contrario, i programmi di sistema, ad esempio il browser Web, hanno funzionato benissimo. Quindi ho deciso di disinstallare tutto e di cominciare da capo, provando prima con la versione stabile (4.5.0) e solo successivamente con la beta. Vi aggiornerò in un prossimo post.

Per fortuna è andata meglio con un problema che ci tormentava da molto, cioè un attacco di tipo NDR (Non Delivery Report) al nostro server Exchange. Stamani ne è stato portato un altro molto intenso, che di fatto bloccava tutte le nostre mail, in quanto il provider le rifiutava a causa del troppo traffico. Dopo una ricerca su Internet e la lettura di alcuni articoli della Knowledge Base di Microsoft (http://support.microsoft.com/kb/842851 e http://support.microsoft.com/?kbid=294757), abbiamo deciso di bloccare l'invio degli NDR, usando l'apposito pannello di Exchange (voce "Consenti rapporti di mancato recapito").Agendo in questo modo il problema è stato risolto, spero definitivamente.

sabato 30 agosto 2008

Chiavi primarie con Grails

Tutto è partito dall'esigenza di recuperare informazioni presenti su alcuni siti Web per un'elaborazione successiva. Non essendo disponibili meccanismi standard di accesso a tali informazioni (ad esempio WebServices), ho dovuto recuperarle direttamente dalle pagine HTML. Per accelerare questa operazione, abbastanza noiosa se si cerca di eseguirla tramite parsing diretto della stringa corrispondente alla pagina, ho utilizzato una libreria che avevo scoperto un po' di tempo fa, ma che non avevo avuto ancora modo di sfruttare, cioè HtmlUnit. Grazie ad essa, ho potuto accedere ai singoli elementi della pagina, ad esempio alla tabella contenente i dati di interesse e a leggere il contenuto delle varie celle, direttamente per posizione (riga, colonna).
Una volta recuperate le informazioni si è presentato il problema di come salvarle: una soluzione rapida, ma poco efficace, sarebbe stata di creare un file e da questo un database relazionale, tramite qualche strumento di ETL. Ma a questo punto, come accedere ai dati presenti sul DB, se non con lo strumento di amministrazione standard? Ho quindi deciso di sfruttare la velocità di realizzazione di applicazioni Web con accesso a database messa a disposizione da Grails. Ho definito le classi di Dominio, con i campi necessari e le relazioni reciproche (grazie alle parole chiave hasMany e belongsTo) . A questo punto mi sono scontrato con il problema argomento di questo post, cioè la gestione delle chiavi primarie prevista da GORM, il meccanismo di Object Relational Mapping previsto da Grails.
Ogni classe di Dominio viene arricchita automaticamente di un attributo id, corrispondente all'identificativo univoco della singola istanza e alla chiave primaria della tabella relativa. Tale campo è di tipo intero e viene generato automaticamente sfruttando le funzionalità del database server utilizzato (ad esempio un autoincrementante) . Nel mio caso sarebbe stato più opportuno sfruttare come chiave primaria uno dei campi della classe (chiave naturale) di tipo stringa e quindi ho cercato il modo per ottenere questo risultato. Tuttavia nella documentazione non si fa cenno a questa possibilità, si spiega solo come utilizzare il mapping delle colonne per dare un nome diverso alla colonna contenente l'id e come creare chiavi composte (di cui fra l'altro si sconsiglia l'uso). Dopo un bel po' di ricerche su Internet e di prove, ho trovato la soluzione, anche se non proprio quella che avrei voluto:
  • ho definito esplicitamente il campo id, dichiarandolo di tipo String
  • nel mapping ho indicato id type:'string', generator:'assigned'
Grazie al generator di tipo assigned, GORM ha evitato di autogenerare il valore della chiave, utilizzando invece quello impostato nel codice applicativo. Putroppo non sono riuscito ad utilizzare il nome che avrei voluto per questo campo (ad esempio codice); comunque, ho preferito non ricorrere al mapping manuale tramite file XML di Hibernate, perché si sarebbe perso lo spirito della Convention over Configuration tipica di Grails.
Il risultato è stato nonostante tutto notevole, visto che ho potuto utilizzare direttamente da Groovy tutto il codice scritto in Java e che, grazie allo scaffolding, si riesce a navigare nella base dati scrivendo poche righe di codice.

venerdì 29 agosto 2008

Benvenuti sul mio nuovo blog

Saluto in questo primo post i miei cinque lettori. Ho aperto questo blog per condividere con tutti le piccole scoperte in ambito informatico che compio quasi tutti i giorni durante il mio lavoro in DataFox. Spero che possano essere utili a chi si cimenta con le problematiche delle tecnologie innovative, che, proprio perché tali, spesso ci lasciano in panne e con pochi strumenti (se non l'impagabile Google) per uscire dal guado.
In questi ultimi mesi ho iniziato a studiare più approfonditamente piattaforme e framework nuovi o già affermati, ma che ancora non avevamo utilizzato in progetti di un certo spessore, in particolare Groovy e Grails per lo sviluppo di applicazioni Web, Hibernate per l'accesso a DataBase, Spring per migliorare l'architettura applicativa. Sto seguendo con un certo interesse anche la libreria ZK e tutti i moduli collegati. Infine mi piacerebbe provare a realizzare qualche applicazione per BlackBerry, visto che anche per questo smartphone la piattaforma è Java, mentre l'iPhone resta per ora un argomento di pura speculazione.
Nei prossimi post proverò a raccontare come ho utilizzato queste tecnologie e come ho risolto i vari problemi che si verificano sempre e che rendono il nostro lavoro stimolante, cominciando proprio da un esperimento fatto con Grails.

Buone cose a tutti.
Ricerca personalizzata