Archive

Archivio dell'autore

Vi presento Ammentos

settembre 18, 2009 1 commento

ammentos_logo

Se siete programmatori Java e avete a che fare con database, framework di persistenza e gestione dati, vi prego di leggere questo articolo.

Vi assicuro che investire 5 minuti del vostro tempo per leggere queste mie parole sarà una cosa per voi molto utile.

Cos’è Ammentos?

Ammentos è un framework di persistenza Java davvero molto semplice e intuitivo  alternativo ad Hibernate e iBatis  basato su semplici annotazioni, che non necessità di nessun file di configurazione e che risiede tutto in un unico piccolo jar.

Quali sono i vantaggi di Ammentos?

– E’ gratis ed opensource

– Curva di apprendimento davvero bassissima: Si impara realmente in 5 minuti (provate voi stessi a leggere la guida nel sito e ditemi se dopo 5 minuti non siete già in grado di creare un vostro programma utilizzando il framework)

– lightweight: Ammentos è molto leggero, non appesantisce le vostre applicazioni e le performance sono identiche ad utilizzare direttamente le istruzioni sql

– Basato su standard moderni come le annotations

– Nessun file di configurazione: Ammentos non necessita di alcun file di configurazione dove inserire nomi tabelle, campi, query etc

– Nessuna dipendenza esterna: finito l’incubo di andar a ritrovare 200 jar dipendenti dispersi nel globo di internet

Perchè questo spot di Ammentos ? Cosa ci guadagni?

Assolutamente niente!

Il problema piu’ grosso che esiste in internet è la visibilità. Purtroppo validissimi progetti non vengono adottati semplicemente perchè non sono conosciuti.

Nella mia carriera di sviluppatore Java ho provato Hibernate, iBatis e prodotti simili ma li ho sempre trovati troppo caotici, pesanti e inutilmente complessi. Da qualche anno uso Ammentos e visto che mi facilita la vita ve ne parlo da utente contento e ve lo consiglio come un amico consiglia un buon locale o una pizzeria dove si spende poco e si mangia bene.

Facci vedere un pò come funziona ammentos e basta fare pubblicità 🙂

Ok, ok, vi faccio vedere subito un esempio di come funziona ammentos.

Ipotizziamo di voler salvare i dati di una persona (nome e cognome) in una tabella. Una semplicissima anagrafe insomma!

Ecco come apparirà il nostro codice già con le annotazioni di ammentos:

import it.biobytes.ammentos.PersistentEntity;
import it.biobytes.ammentos.PersistentField;

@PersistentEntity(primaryKey="id",sourceDomain="persons")
public class Person {
@PersistentField(automatic=true)
private String id;

@PersistentField
private String name;

@PersistentField
private String surname;

// Codice classico che si scriverebbe anche senza ammentos...
public String getId() {return id;}

public String getName() {return name;}

public void setName(String name) {this.name = name;}

public String getSurname() {return surname;}

public void setSurname(String surname) {this.surname = surname;}
}

Come vedete ci sono giusto due annotazioni in piu’ rispetto a come la scrivereste normalmente! La maggior parte del codice è dato dai metodi get/set (che tra l’altro ammentos non utilizza, che servono semplicemente per fare un model piu’ robusto senza far accedere direttamente alle variabili membro).

Analizziamo il codice pezzo per pezzo:
@PersistentEntity(primaryKey="id",sourceDomain="persons")
public class Person {
Con l’annotazione PersistentEntity si indica che la classe Person è una classe da far persistere. Il campo primaryKey indica qual’è il nome del campo contenente la chiave primaria della tabella mentre il campo sourceDomain indica il nome della tabella nel database.

@PersistentField(automatic=true)
private String id;

Per memorizzare un campo nel database è sufficiente annotatarlo con l’annotazione PersistentField. Questa annotazione ha diversi parametri. Tra questi, il parametro automatic=true indica ad ammentos di gestire lui il valore dell’id e di generarne uno univoco al salvataggio dell’oggetto. In pratica potete dimenticarvi di impazzire dietro sequenze et simila (che comunque per i piu’ smaliziati ammentos supporta)

@PersistentField
private String name;
@PersistentField
private String surname;

Indica gli altri due campi persistenti. Se non viene specificato altrimenti, i nomi dei campi del database per memorizzare tali variabili saranno identici ai nomi delle variabili (facile, no?). Se volete utilizzare nomi diversi basterebbe mettere così:

@PersistentField(fieldName="user_name")
private String name;

Bene, e ora come si salva o si caricano i dati?

per salvare i dati potete dimenticarvi i DAO etc in quanto Ammentos è già di per se un “DAO universale”.

Quindi basta fare semplicemente:

Ammentos.save( istanzaOggettoPersona );

Tutto qui!

Sarà lui stesso ad occuparsi di fare una insert nel database o una update in base allo stato dell’oggetto che state salvando.

Per caricare un record invece è sufficiente fare:

Person p = Ammentos.load( Person.class, "idoggetto" );

E se volete caricare delle persone dato il cognome ad esempio?

SqlQueryFilter filter = new SqlQueryFilter("surname=?");
filter.setString( "rossi");
List<Person> people = Ammentos.load( Person.class, filter );

Tutto qui?

Questo è solo un accenno di ciò che ammentos può fare, siamo appena al suo guscio esterno e già così possiamo vedere come riesca a risolvere le problematiche piu’ comune nella gestione dei dati in modo semplici e elegante ma ci sono ancora talmente tante caratteristiche di cui parlare che ho deciso di dedicare una serie di articoli a questo meraviglioso framework sperando di aiutarlo un pochino ad acquisire visibilità e prendere il posto che si merita.

Spero di avervi fatto cosa gradita a presentervalo

A presto

Daniele

Tips & Trick : Scovare e uccidere i processi

aprile 15, 2009 Commenti disabilitati

Vi è mai capitato che mentre stavate lavorando per una qualsivoglia ragione l’applicazione che stavate utilizzando decidesse improvvisamente di ignorarvi, bloccandosi irremediablemente ? (che maleducata!) 🙂

Bè capita anche a me ogni tanto.

Ci sono molte soluzioni a riguardo come ad esempio il comando xkill o da console fare un ps, trovare il processo incriminato e poi un bel kill.

La problema si complica nel caso vogliate uccidere delle applicazioni che girano da console; Qui xkill non serve a niente (visto che non potete cliccare sopra la finestra dell’applicazione), bisogna per forza tribolare con il ps, il grep e il kill per identificare e uccidere il processo che vi interessa.

Bè, se volete, io ho creato un semplicissimo script che ho chiamato killd. Questo script ricerca tra i processi di sistema quelli che hanno nella riga di comando il parametro passato, ve li mostra e vi chiede conferma prima di eliminarli brutalmente.Io lo ho trovato molto utile per uccidere firefox quando fa i capricci.

Ecco un classico esempio di utilizzo


daniele@danielelinux:~$ killd firefox
daniele 18470 6366 0 09:35 ? 00:00:00 /bin/sh /home/daniele/firefox/firefox
daniele 18473 18470 0 09:35 ? 00:00:00 /bin/sh /home/daniele/firefox/run-mozilla.sh /home/daniele/firefox/firefox-bin
daniele 18477 18473 13 09:35 ? 00:03:43 /home/daniele/firefox/firefox-bin


Processes found : 3
Kill this processes (y to kill) ?

Digitando y (invio) i tre processi trovati verranno eliminati seduta stante.

Volendo, è possibile passare il parametro -f per evitare che venga chiesta conferma per l’eliminazione (ovviamente usatela con cautela).

Se volete scaricarlo potete prelevarlo da qui

Per utilizzarlo io vi consiglio di copiarlo su /usr/bin e ricordatevi di dargli i permessi di esecuzione con il comando

chmod 755 killd

Spero possa esservi utile

Daniele

Categorie:Uncategorized

Tips & Tricks: Fastidioso bug in NetBeans

gennaio 20, 2009 Commenti disabilitati

Sviluppando Ayudu con NetBeans sotto il mio amato KDE 4.2, mi son ritrovato davanti ad un bug davvero fastidioso che rendeva la scrittura del codice una impresa davvero ardua.

In pratica il sorgente appariva illegibile con tutti i caratteri sovrapposti, come quando provate a ribattere tante volte su una stessa riga delle macchina da scrivere lettere differenti.

Una immagine è sempre meglio di 1000 parole:

screenshot1_179.jpg

Dopo vari pellegrinaggi e, conscio che google ha sempre la risposta a tutto, la soluzione è stata trovata grazie al blog di Davide che, avendo anche lui lo stesso problema, ha trovato in rete la soluzione che io vi ripropongo.

a) Aprite il file <netbeans_home>/etc/netbeans.conf

b) cercate all’interno del file la definizione della variabile netbeans_default_options (dovreste trovare una cosa simile a netbeans_default_options="-J-Dorg.glassfish.v3.installRoot=\"/home/cesc/glassfish-v3-prelude-b15b\" -J-Dcom.sun.aas.installRoot=\"/home/cesc/glassfish-v2ur2\" -J-client -J-Xverify:none -J-Xss2m -J-Xms32m -J-XX:PermSize=32m -J-XX:MaxPermSize=200m -J-Dapple.laf.useScreenMenuBar=true -J-Dsun.java2d.noddraw=true")

c) AGGIUNGETE alla fine della definizione (e sempre rimanendo dentro i doppi apici) il parametro -J-Dsun.java2d.pmoffscreen=false

Ora la variabile dovrebbe apparire simile a questa

netbeans_default_options="-J-Dorg.glassfish.v3.installRoot=\"/home/cesc/glassfish-v3-prelude-b15b\" -J-Dcom.sun.aas.installRoot=\"/home/cesc/glassfish-v2ur2\" -J-client -J-Xverify:none -J-Xss2m -J-Xms32m -J-XX:PermSize=32m -J-XX:MaxPermSize=200m -J-Dapple.laf.useScreenMenuBar=true -J-Dsun.java2d.noddraw=true -J-Dsun.java2d.pmoffscreen=false"

Fatto!

Ora basterà semplicemente far ripartire il vostro netbeans!

Alla prossima

Daniele

Categorie:Ayudu, bug, java, kde4, netbeans

Ayudu

gennaio 16, 2009 2 commenti

Ricordate Icaro?

Icaro aveva un sogno: volare libero, librarsi in aria e arrivare sempre piu’ alto fino al sole!

Anche io ho un sogno di libertà, di arrivare in alto ed è per seguire il mio sogno che sono sparito per così tanto tempo.Sono rimasto rintanato in casa per lunghe settimane, andando a lavoro di giorno e continuando il mio sogno nelle ore notturne e nei weekend (non pensate male) per creare un qualcosa che potesse darmi la libertà e in cui credo moltissimo: Ayudu.

Ayudu, in terminet tecnico, viene definito un Customer Support System ovvero è un sistema di supporto alla clientela..

Quello che vi permette di fare in pratica è creare un filo diretto di comunicazione tra voi e i naviganti del vostro sito internet, in tempo reale, in modo da poter fornire assistenza, aiuti e supporto.

Si può installare in qualsiasi tipo di sito internet anche statico! e si installa in meno di 3 minuti…

Guardate questo video se non ci credete!

Ora spero che il mio sogno non finisca come quello di Icaro, io almeno per ora, sono ancora ben ancorato in terra e speriamo però che almeno qualche balzello riesca a farlo presto..

Mi piacerebbe leggere dei commenti su cose ne pensate, su come si imposta un business su internet o come bisognerebbe procedere…

Grazie per avermi dedicato il vostro tempo

Daniele

Promesse…

novembre 23, 2008 4 commenti

Scendo dalla macchina e mi avvio verso la vecchia casa abbandonata.

Da fuori nessun rumore, solo qualche cigolio. Le finestre mostrano i segni delle piogge e ovunque solo silenzio.

Mi avvicino alla porta e cerco la chiave per aprirla. E’ da troppo tempo che non viene aperta…

Apro la porta e dopo essere stato investito da un lezzo stantio e di aria viziata guardo con rammarico la polvere che si è depositata dappertutto.

“C’è nessuno?”

“Lo sò che non torno da giugno ma possibile che non ci sia nessuno?”

“Scusatemi se non sono potuto tornare prima. E’ stato un periodo impegnativo; Ho cambiato lavoro e son stato impegnato per diverso tempo con altre cose e con un progetto personale che uscirà a breve…”

Va bene.. ora mi metto a togliere un pò di polvere e vi prometto che tornerò presto a trovarvi..

Daniele

Categorie:Uncategorized

Tips & Trick: Vedere i file usati da un processo

giugno 25, 2008 1 commento

Il concetto de “il lavoro nobilita l’uomo” e “riuscire a tenere aggiornato un blog” non sempre vanno molto d’accordo ed è per questo che mi scuso con tutti voi per questa mia lunga assenza.

Ma veniamo all’argomento di questo post: strace.

Se avessi scritto come oggetto del post “Strace” magari nessuno ci avrebbe capito niente o, magari, avrebbe pensato mi fosse scappata una “s” di troppo 🙂 quindi ho preferito inserire questo argomento in una sua applicazione pratica aggiungendo un Tips & Trick.

Strace è un utile strumento di debug in grado di attaccarsi ad un processo in esecuzione e seguire tutti i segnali e le chiamate che vengono scambiati con il sistema operativo.

L’utilizzo è molto semplice;

basta digitare:


strace  <nomecomando>

e subito a video vedrete una marea o una “pozzanghera” di dati (dipende dal processo che avete lanciato) riguardanti tutte le chiamate sottostanti eseguite dal programma in esecuzione.

Volendo è possibile attaccarsi ad un processo già in esecuzione usando


strace -p <PID>

Dove PID è l’identificativo del processo che vi interessa (quello che trovate con il comando ps)

Data la mole di dati, è possibile salvare l’output del comando strace direttamente su file con l’opzione -o <nome file>.

Ma veniamo al cuore del Tips & Trick.

Tra le altre innumerevoli cose, Strace vi permette di vedere tutti gli accessi che vengono fatti al file system.

In questo modo è possibile vedere a quali file sta accedendo un processo e, siccome viene sollevato un errore, trovare i file che l’applicazione richiede ma che non sono presenti nel vostro disco fisso.

Per fare questo basta digitare:


strace <nome processo> 2>&1 | grep ENOENT

o

strace -p <PID> 2>&1 | grep ENOENT

In questo modo potrete vedere i file richiesti dal vostro applicativo ma non presenti e porvi rimedio….

Alla prossima,

Daniele

Categorie:Uncategorized

Nuovissimo e indispensabile servizio per gli utilizzatori di Flickr

aprile 21, 2008 3 commenti

Le idee piu’ semplici sono sempre le più geniali.

Flickr ha migliaia e migliaia di utilizzatori che, ogni giorno, inseriscono foto, commentano quelle degli altri  e creano gruppi di interesse a formare una delle community più attiva di tutto il mondo internet.

Le foto migliori, vengono automaticamente pubblicate in una sezione del sito (che si chiama Explora) che rappresenta una vera e propria vetrina per tutti.

Ogni “flickeriano” (perdonatemi il termine) che si rispetti agogna di entrare in explora e, quando ciò accade, in genere viene pubblicata una nuova foto con su scritto l’avvenuto successo.

Vi starete chiedendo.. ma di cosa parla questo post? .. Bene, il problema piu’ grande di tutto questo meccanismo è che non esiste un sistema automatico che, quando una vostra foto entra in explora, vi mandi una email di notifica e, in questo modo, visto che le foto entrano ed escono da explora continuamente, potreste perdervi il vostro momento di notorietà.

Il nuovo servizio gratuito AlrtME ci viene in aiuto!

Il servizio è semplicissimo: Basta inserire la mail del vostro account flickr per iniziare a ricevere da subito le notifiche delle vostre foto che entreranno su explora.

Andate ad iscrivervi!

Daniele

Categorie:alrtme