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.
Ricerca personalizzata