Archive

Posts Tagged ‘opensource’

JSON, graphs and Apache Sling

28 September 2010 2 comments

Yesterday I was looking an interesting javascript library, JIT (JavaScript InfoVis Toolkit), that is really useful to create some cool rappresentation of your data with graphs, trees, charts and so on.

This toolkit creates different data rappresentation using JSON as input, so I thought it could be funny to integrate with Apache Sling to have a new rappresentation of my repository.

Unfortunately JSON translation in Apache Sling is a bit different from the one used in JIT, because it needs children node rappresented as an array (not in every demo contained in JIT but in the one I want so integrate with Sling).

So I modified org.apache.sling.commons.json.jcr.JsonItemWriter , to encapsulate the nodes in a JSON array

Iterator children = resource.listChildren();
if (children.hasNext()) {
	w.key("children");
	w.array();
	while (children.hasNext()) {
		Resource n = children.next();
		log.info("Giro "+n.getName());
		dump(n);
	}
	w.endArray();
}

Now I have to load some data on my instance of Apache Sling, so I create a simple JSON.

{
	"id": "node01",
	"name": "0.2",
	"data": "",
	"jcr:primaryType":"sling:Folder",
	"node11": {
		"id": "node13",
		"name": "1.3",
		"data": "",
		"jcr:primaryType":"sling:Folder",
		"node111": {
...
...

Finally I have to load this data into JIT, so I modified an example to load JSON data from an external source

function init() {
	$.ajax({
		url: "http://localhost:8080/repository.infinity.json",
		success: postInit
	});
}

So I got a very cool rappresentation of my data stored with JCR


LWUIT, Lightweight UI Toolkit…WOW!!!

28 August 2008 Leave a comment

LWUIT, ovvero un nuovo modo di disegnare interfacce grafiche per JavaME.
Ne avevo sentito parlare ma non mi ero interessato più di tanto, poi ultimamente visto che trovavo riferimenti di questa libreria in diversi siti mi sono incuriosito e guardate che cosa ho trovato

La libreria è molto interessante, sia per come è sviluppata sia per le potenzialità. Creare un effetto grafico con questa libreria è di un semplice che quando l’ho visto non ci credevo. Ancora non ho provato tutte le funzionalità ma leggendo il tutorial ho fatto al volo una stupida applicazione e posso dire che sicuramente baserò i prossimi programmi javame su LWUIT.

Animazioni, temi, layout, transizioni…insomma un vero gioiellino questo LWUIT.

PHP su Symbian??!?

11 January 2008 Leave a comment

Leggo da Napolux una notizia sfiziosa, ovvero che a breve sarà presentato PAMP, progetto opensource il cui acronimo sta per Personal Apache, MySQL, PHP.

Allora da una parte come programmatore, amante della programmazione non posso far altro che ammirare un simile porting per il mondo mobile, perchè devo ammetterlo immaginare di far girare qualcosa in PHP sul mio N70 mi piace :)

Dall’altra parte però mi chiedo….perchè???? Non lo dico come programmatore Java che da anni lavora anche sui cellulari e ha paura di doversi mettere a lavorare in un altro ambito (no problem) però lo dico in quanto nel settore mobile c’è già molta frammentazione, serve davvero inventarsi il porting di PHP?

Per Symbian già esistono porting di PythonPerlRuby e devo dire la sincera verità, non ho visto tutte queste applicazioni realizzate con questi linguaggi. Esiste anche FlashLite per Symbian, con il quale ho visto realizzate diverse applicazioni carine, ma il punto della situazione non è questo, ovvero quello che in Java/C++ lo scrivo con N righe magari con Ruby/Python/PHP/Perl/FlashLite/QuelloCheVuoiTe in meno righe. Il problema, IMHO, è quello relativo alla frammentazione. Cioè non vedo l’utilità di sviluppare magari applicazioni in PHP per Symbian S60, quando poi magari su tutti gli altri cellulari di questo pianeta riescono a malapena a fare un’implementazione decente di J2ME.

Non voglio essere estremista Java, ma non vedo l’utilità di questo proliferare di linguaggi, almeno dal punto di vista dei programmatori. Forse l’utilità è dal punto di vista di Nokia, che magari pezzetto dopo pezzetto cerca di portare tutti gli sviluppatori di questo mondo dentro lo sviluppo sulla sua piattaforma più famosa. Al futuro l’ardua sentenza.

SwingBug, una libreria per GUI accattivanti

27 December 2007 Leave a comment

Quando sono lontano dai pensieri lavorativi mi trovo sempre qualcosa da fare e curiosando in giro per la rete ho trovato una libreria per realizzare interessanti interfacce grafiche per programmi desktop: SwingBug

SwingBug

Ho solo cominciato a vederla ma dagli esempi presenti (si può avviare una demo cliccando qui) devo dire che è molto interessante, anche perchè quando uno realizza un programma ben fatto, se poi l’interfaccia grafica è brutta perde tutto il programma (cosa che vista dal programmatore non ha molta importanza ma dal punto di vista dell’utilizzatore è ESTREMAMENTE importante se non essenziale).

A breve qualche piccolo mashup utilizzando questa simpatica libreria

Filosofia dell’opensource

8 November 2007 Leave a comment

Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un’idea, ed io ho un’idea, e ce le scambiamo, allora abbiamo entrambi due idee.

George Bernard Shaw

BTFree 1.1

8 November 2007 Leave a comment

Ho aggiornato BTFree, arrivando alla versione 1.1.
Le modifiche fatte riguardano un pò di restyling di metodi/classi e l’introduzione di due nuove feature.
Praticamente prima era possibile far partire un server ed un client su due diversi dispositivi, ma mi ero accorto che ogni tanto le connessioni non andavano bene, ovvero bisogna far ripartire il client perchè non subito trovava il server.

Giocando un pò con la libreria mi sono reso conto che “purtroppo” quando io la testavo non c’era nessuno vicino, mentre in altre situazioni avevo vicino cellulari con il bluetooth accesso che vietavano l’esplorazione dei servizi attivi. In questo caso la libreria si bloccava.
Proprio per questo motivo ho introdotto due nuove classi, DeviceSearcherAgent e ServiceSearcherAgent. La prima serve per cercare solo i dispositivi bluetooth attivi e per farsi ritornare un Vector che li contiene. La seconda per cercare i servizi BTFree su una determinata device. Praticamente ho “spezzettato” alcune cose già presenti nella libreria proprio per evitare problemi.

Il nuovo hosting è su google, all’indirizzo http://code.google.com/p/btfree/. Per il momento ho fatto l’import iniziale dei sorgenti, della libreria, javadoc e di un’applicazione d’esempio che utilizza la libreria. A breve aggiornerò l’hosting con qualche informazione dettagliata su come si utilizza la libreria (aggiornando la vecchia FAQ).

Perst Embedded Lite: un database per J2ME

25 October 2007 Leave a comment

Quando si sviluppano applicazioni, di qualsiasi tipo, ci sono sempre dei dati da salvare/leggere/manipolare. Anche nel mondo J2ME succede spesso di avere informazioni da gestire e nativamente questa piattaforma supporta RMS (Record Management System), una sorta di repository d’informazioni orientato al record (una cosa orrenda). Chiaramente se uno sviluppa spesso nell’ambito mobile quello che più conviene è realizzare una classe che funge da wrapper per RMS, esportando le funzionalità base in una maniera più comoda. Questa è un’idea comune perchè infatti ricercando su Google è possibile trovare N diverse librerie che migliorano la gestione delle informazioni su RMS.

Perst Embedded Lite è una di queste, anche se si propone come un vero e proprio database. Diciamo che dobbiamo sempre renderci conto del posto dove sta girando questo “database”, ovvero un dispositivo mobile, quindi ci sono tutta una serie di funzionalità classiche dei database (quelli con la D maiuscola) che chiaramente qui non troveremo. Leggendo però questo articolo mi sono reso conto di quanto sia interessante e semplice questo “database”. Nel classico metodo di connessione ad un database andrei a prendere le informazioni che mi servono in questo modo


// RDBMS apporach
Person getPersonByName(string lastName) {
Statement stmt = con.createStatement();
stmt.setString(1, lastName);
ResultSet cursor = stmt.executeQuery("SELECT * FROM Person
where lastName like " + lastName + "'%'");
if (!cursor.next()) {
cursor.close();
return null;
}
Person p = new Person();
p.firstName = cursor.getString("firstName");
p.lastName = cursor.getString("lastName");
p.age = cursor.getInt("age");
p.salary = cursor.getLong("salary");
return p;
}

mentre invece utilizzando Perst Embedded Lite il tutto è molto più semplice


// OODB appoach
Person getPersonByName(string lastName)
{
return personIndex.prefixSearch(lastName);
}

Semplice la vita così eh?!

Statistics @ DSpace User Group Meeting 2007

17 October 2007 Leave a comment

Localizzazione IP, Nazioni, Città con MaxMind GeoIP

28 August 2007 Leave a comment

Avevo già visto un’altra libreria che permette di avere queste informazioni attraverso una semplice API Java, ma quella di cui vi parlo oggi è ancora più potente, con un database facilmente aggiornabile e viene utilizzata in molti siti: MaxMind GeoIP Java API

MaxMind offre i propri servizi sia in maniera opensource che a pagamento, quindi la libreria è comunque abbastanza curata perchè è uno dei modi che hanno per pubblicizzare il loro prodotto a pagamento.

Prima di tutto bisogna scaricare la libreria all’indirizzo http://www.maxmind.com/download/geoip/api/java/. All’interno sono presenti i sorgenti che dobbiamo prima compilare e poi possiamo creare il jar da utilizzare nei nostri progetti

cd $HOME_GEOIP/source/com/maxmind/geoip/
javac *.java
jar cf maxmindgeoip.jar com/maxmind/geoip/*.class

Ora dobbiamo scaricare il database delle cittàquello delle nazioni. Questi database, free, vengono aggiornati una volta al mese nella versione lite, sul sito viene detto il primo di ogni mese (quanto sono diligenti :P ).

All’interno della libreria sono poi presenti dei programmi di test, che ci permettono di vedere subito cosa è possibile fare con queste API. Il seguente codice restituisce ALCUNE informazioni sulla città a partire dall’IP

LookupService cl = new LookupService("/usr/local/share/GeoIP/GeoIPCity.dat",LookupService.GEOIP_MEMORY_CACHE );
Location l1 = cl.getLocation("213.52.50.8");
System.out.println("countryCode: " + l2.countryCode +
"\n countryName: " + l2.countryName +
"\n region: " + l2.region +
"\n regionName: " + regionName.regionNameByCode(l2.countryCode, l2.region) +
"\n city: " + l2.city +
"\n postalCode: " + l2.postalCode +
"\n latitude: " + l2.latitude +
"\n longitude: " + l2.longitude +
"\n distance: " + l2.distance(l1) +
"\n distance: " + l1.distance(l2) +
"\n dma code: " + l2.dma_code +
"\n area code: " + l2.area_code +
"\n timezone: " + timeZone.timeZoneByCountryAndRegion(l2.countryCode, l2.region));

mentre nel seguente modo è possibile sapere velocemente la nazione (e il relativo codice)

String dbfile = "GeoIP.dat";
LookupService cl = new LookupService(dbfile,LookupService.GEOIP_MEMORY_CACHE);
System.out.println(cl.getCountry("151.38.39.114").getCode());
System.out.println(cl.getCountry("151.38.39.114").getName());

Sul sito è presente una versione della libreria anche per C,C#,MS COM,Pascal,Perl,PHP,Python,Ruby,VB.NET…quando uno s’impegna s’impegna :)

Progetto di una notte di mezza estate

21 August 2007 Leave a comment

Incredibile a dirsi, ma sono riuscito a finire il progetto per Google Summer of Code 2007, ovvero Statistics for DSpace.

Devo dire che l’impresa è stata abbastanza ardua, non per il progetto che ho dovuto realizzare, ma per il tempo e soprattutto per il periodo nel quale ho dovuto fare l’ultima consegna.

Ci sono alcune cose che mi hanno fatto riflettere durante la consegna finale di questo progetto:

  • Ricordati che quando fai questo tipo di progetti sei da solo, quindi se in un certo momento tutto sta andando a rotoli (o almeno sembra) non puoi riprendertela con nessuno all’infuori di te
  • E’ estate, caldo torrido, il tuo cervello non ha la stessa efficienza che potrebbe avere in altri periodi dell’anno quindi non ti innervosire se non sei lucidissimo mentre programmi
  • La desolazione del paese dove ti trovi non deve incidere sul tuo lavoro, anche se non trovi un cavolo di bar aperto per prenderti una semplice bottiglia d’acqua e sogni di ritornare a casa per poterti dissetare e passare la serata in tranquillità facendoti una sacrosanta overdose di episodi di Star Trek
  • Durante lo sviluppo non puoi passare una giornata intera a gioire per i fantastici grafici che possono essere realizzati utilizzando JFreeChart, esclamando grafico dopo grafico “Bello questoooooo!!!!”
  • Non te la devi prendere troppo se nel momento più difficile il tuo mentor è andato in Galles in vacanza, senza dirti niente su come fare quest’ultima consegna e lasciandoti in preda a dubbi tremendi

Aldilà dei problemi che ci sono stati, è stata una bella esperienza che mi ha insegnato che il mondo dell’opensource è tremendamente simile alla politica (almeno nel mio caso è stato così), utile perchè ti permette di conoscere persone che ti spiegano il loro punto di vista nello sviluppo (e quindi puoi apprendere nuovi modi per risolvere per problemi che precedentemente trattavi sempre in una sola maniera).

Poi chiaramente spero di poter postare l’immagine di una maglietta come questa a breve :)

GSoC 2006

Follow

Get every new post delivered to your Inbox.