mercoledì 30 dicembre 2009

Syntax Highlighter

Io penso che funzioni!


Inserire del codice nel blog

Orbene,
quelle tre persone che leggono questi articoli (1 è Facebook, 1 è Twitter, quindi rimango solo io...), si saranno accorte che quando ho postato del codice HTML o Xml è successo sempre un bel po' di casino.
Ho quindi cercato un modo alternativo di inserire codice HTML su Blogger.
E la soluzione eccola qua!
Un bel po' di JavaScript che consentono molto facilmente di embeddare il codice Xml/HTML.
Stasera ci provo, vediamo che succede...

domenica 27 dicembre 2009

Spring Security: personalizzare l'authentication provider

Abbiamo già visto come gestire la sicurezza con Spring Security.
Come avevamo visto il framework si basa su una logica di authentication-manager, authentication-provider. Ci sono già alcune implementazioni pronte: molto comoda è quella in memoria, specialmente per il testing.
Altra implementazione "comoda" è quella JdbcDao. Il limite di questa implementazione è che il db da cui pescare i dati deve per forza essere fatto in un certo modo, anche se si possono specificare le query da eseguire, ma la flessibilità non è al 100%.
Mi sono quindi detto: proviamo ad implementare il mio provider.
Devo implementare l'interfaccia AuthenticationProvider che ha un unico metodo authenticate
Il metodo deve verificare che l'utente si possa autenticare e restituisce un oggetto Authentication, che porta con se lo username e le GrantedAuthority a cui appartiene, praticamente i ruoli dell'utente.

Vediamo un po' di codice...

public Authentication authenticate(Authentication auth) throws AuthenticationException {
        String username = auth.getPrincipal().toString();
        String password = auth.getCredentials().toString();
        if (!"Andrea".equals(username))
            throw new BadCredentialsException("Nome Utente non valido!");
        if (!"Andrea".equals(password))
            throw new BadCredentialsException("Password Errata!");
        Collection gas = new ArrayList();
        GrantedAuthority ga = new AndreaGrantedAuthority("G1");
        gas.add(ga);
        UsernamePasswordAuthenticationToken result = new UsernamePasswordAuthenticationToken(username, password, gas);       
        return result;
    }


La cosa veramente da notare e che, lo confesso, mi ha un po' spiazzato, sono le prime 2 righe, cioè il reperimento di username e password.
Soprattutto la password non era lampante. Poi, studiando un po' di teoria, ho visto che siamo nello standard. L'oggetto Authentication viene passato in ingresso e, se tutto va a buon fine, ne viene rilasciato un'altro in uscita. Nel mio caso ho usato un UsernamePasswordAuthenticationToken, che è già a corredo del framework.
Per dare i ruoli all'utente ho usato una classe AndreaGrantedAuthority che implementa l'interfaccia GrantedAuthority.
Questa classe deve essere poi dichiarata come
security:authentication-provider ref="myAuthenticationProvider"
il tag ref indica che ci dovrà essere un bean spring fatto + o meno così

bean id="myAuthenticationProvider" class="it.andrea.AndreaAuthenticationProvider"

E' ovvio quindi che questo bean è perfettamente integrato in Spring: é quindi possibile iniettare SessionFactory e quant'altro ci possa servire per il reperimento dei dati dell'utente: io per brevità non lo ho fatto ma posso assicurare che funziona.

Da dire che così il gioco non può funzionare, perchè il nostro provider vuole anche uno UserDetailService al quale chiedere com'è fatto l'utente. Infatti il provider si è solo chiesto se l'utente era abilitato o no, non quale fosse in dettaglio il suo profilo.

Per lo UserDetailService mi riprometto di scrivere un nuovo articolo.

domenica 20 dicembre 2009

Perchè Java va bene per lo sviluppo on line "di base"

L'autore,
che è italiano e vive a Firenze come me, mi perdonerà questa traduzione all'impronta del titolo del suo post.
Mi piace il suo punto di vista: è vero, si possono anche fare le cose molto complicate in Java, ma si può anche iniziare in maniera molto semplice. Poi a complicar le cose c'è sempre tempo, come per aggiungere Unit Testing e quant'altro. E poi la cosa + importante: Java è VERAMENTE una V.M. multipiattaforma, stabile ed affidabile, e questo fa ben la differenza...

Linee guida per la codifica in Java

Ultimamente, forse spinto da eccesso di pignoleria, sono andato a cercarmi le convenzioni per la codifica in Java.
Eccole qua, fresche fresche (sono solo targate 1999) da Sun
Proverò ad usarle....

martedì 15 dicembre 2009

Veicolare le informazioni su più piattaforme

Io ho, come tante persone, oltre a questo blog, sia Facebook che Twitter.
Finora, a manina, andavo su entrambe le piattaforme e postavo i link al blog.
Devo dire che, con un post al giorno o giù di lì, (a parte la piccola interruzione recente), dopo un po' diventa noioso fare copia incolla.
Negli ultimi giorni mi sono quindi messo alla ricerca di un qualcosa che lo facesse al posto mio, ed ho trovato TwitterFeed
Devo dire che è ben fatto: si occupa lui di pubblicare per mio conto i post che scrivo qui, su varie piattaforme (le già citate Facebook e Twitter ma anche Laconica, Ping.fm e Hellotxt)
Su twitter fra l'altro può utilizzare anche una serie di servizi per creare short links (bit.ly di default), cosa molto comoda visto il limite delle 140 battute.
Si può impostare la frequenza di aggiornamento (1 volta al giorno per me, più frequente per i grafomani) ed i tag da mettere al messaggio.
Visto poi l'interfacciamento con ping.fm e Hellotxt allora si può pensare di mettere in cascata la pubblicazione su tante e tante piattaforme.
Tutto qua, buon divertimento.

lunedì 14 dicembre 2009

Google Web Toolkit 2.0

Cavolo,
uno si distrae un attimo e il mondo va avanti!
Proprio oggi mi sono accorto che è uscita la versione 2.0 del Google Web Toolkit.
Secondo me la cosa più eclatante di questa versione, a parte probabilmente la velocità, sempre maggiore, è l'introduzione della uiBinder.
In pratica si possono dichiarare interfacce grafiche attraverso l'xml, e non più soltanto da codice.
Bella spinta alle interfacce Gui, non pensate?

Finalmente il telefonino Google

http://www.tomshw.it/cont/news/google-nexus-one-ecco-le-nuove-immagini/23190/1.html

giovedì 10 dicembre 2009

Spring Security: primi approcci

Recentemente ho avuto il piacere, chiamiamolo così, di imbattermi in Spring Security.
Spring Securiry è la soluzione di Spring per "mettere in sicurezza" una web application.
La prima cosa da fare è aggiungere un filtro nel web.xml,
usando la classe org.springframework.web.filter.DelegatingFilterProxy
ed intercettando con quella tutte le chiamate, come ben spiegato qui.
La classe sopra citata è il wrapper che intercetta tutte le chiamate.
Per configurarlo è sufficiente editare l'ApplicationContext file: in questo modo ci si riallaccia al meccanismo di gestione di Spring per le web Application.
Scorrendo la documentazione sopra citata si vede che una minima configurazione prevede il tag http. Ora, secondo le specifiche dei files di configurazione di Spring, questo non è possibile. La spiegazione è che, semplicemente, si è usato come default namespace il tag security invece che il tag beans
Se si vuole continuare ad usare il tag beans come default, la dicitura http è da intendersi come security:http
All'interno del tag http è sufficiente specificare authentication-manager ed authentication-provider da usare. Questi due definiscono le regole con cui un utente viene riconosciuto dal sistema.
Authentication-manager contiene la lista dei provider che gestiscono il meccanismo di autenticazione. In pratica si può creare una catena di autenticazioni, ad esempio da database, via LDAP, in memoria, dove ogni authentication-provider implementa la propria logica per dire se è possibile autenticare un utente all'interno del sistema.
Ogni authentication-provider ha uno user-service, cioè un meccanismo che definisce qual'è il profilo dell'utente all'interno dell'applicazione.
Diciamo che i primi approcci su spring-security si fermano qua: interessante sarà analizzare quali sono gli authentication-provider e gli user-service già inclusi nel pacchetto e come fare a crearsi i propri.

Traduzione in inglese qui

mercoledì 11 novembre 2009

con l'open source si risparmiano un po' di soldi

Il comune di Bologna ha deciso di abbandonare MSOffice in favore di OpenOffice e poi, in futuro, di passare alla piattaforma Linux. Il tutto ovviamente per ridurre i costi di licenza dei prodotti (tanto i costi di gestione ci sono in entrambi i casi, aggiungo io)
Il bello è che Brunetta, invece, ha adottato nei mesi scorsi la piattaforma MS in toto (perchè MS gli ha concesso per un anno nessun pagamento di licenze e ha regalato l'hw, qui e qui i link ma ne avevo trovati di migliori...)
Tra qualche anno si potranno vedere i frutti che l'adozione delle 2 strade diverse hanno dato.
Secondo voi chi vince?

venerdì 6 novembre 2009

Microsoft ristruttura

Che dire?

http://punto-informatico.it/2744253/PI/News/microsoft-autunno-ristrutturazioni.aspx

lunedì 26 ottobre 2009

La casa bianca adotta un cms open

Anche se il titolo è un po' troppo altisonante (infatti mi sono permesso di cambiarlo) questa è la notizia.
Anche se non è che Drupal mi esalti tantissimo (ho provato a capirlo, è un po' contorta la gestione e la creazione di un template, preferisco Joomla), mi esalta il fatto.
Finalmente è un dato di fatto che un prodotto open è allo stesso livello di uno closed e che si può fare affidamento su di esso.

domenica 25 ottobre 2009

Spring 3 e i Web Services

Leggendo la documentazione di Spring 3 si dichiara che Spring supporta 2+1 modi di esporre i Web Services:
Ora, io escludo Spring Web Services perchè ha un approccio "Contract-First" alla creazione del webService: cioè prima si crea il wsdl e poi lo si implementa con le classi. Questo è un metodo splendido perchè molto flessibile, ma anche un po' lento nell'implementazione.
Rimangono quindi le altre due strade e fra le due scelgo volentieri quella JAX-WS, una specifica più recente di JAX-RPC, che permette di esporre come Web Services dei semplici POJO.

Per esporli al mondo esterno basta creare una Web Application ed esporre come servlet il POJO.

Vediamo quindi come è la classe che rappresente il Web Service.

@WebService(serviceName="TestService")
public class TestServiceEndpoint {
   
    @WebMethod
    public String sayHello() {
        return "Hello";
    }
}

Questa classe è un banalissimo POJO con 2 annotation una che dichiara che è un webservice, dal nome "TestService" e l'altra che dice che il metodo sayHello è un WebMethod. Ovviamente queste 2 annotations hanno molti altri parametri che permettono una configurazione minuziosa di tutto il Webservice, ma per l'esempio a noi va bene così.

Esponiamo ora il WebService al mondo. Basta creare una WebApplication e nel web.xml, dichiarare il POJO come servlet.



Questo basta per avere un bel WebService. Deploiando ad esempio su JBoss (purtroppo ci vuole un container j2EE per deploiare, ma ormai sono all'ordine del giorno) il gioco è fatto.

Bene, e fin qui abbiamo usato solo J2EE, neanche una traccia di Spring.
Come possiamo fare ad integrare Spring con JAX-WS?

Basta far si che il nostro POJO (o la nostra servlet, se così vogliamo pensarla) estenda SpringBeanAutowiringSupport. Facendo così si può accedere ai bean gestiti da Spring. L'unica limitazione è che queste due "parti" (il POJO e lo Spring context) devono girare nella stessa webApplication.

La classe diventa quindi


@WebService(serviceName="TestService")
public class TestServiceEndpoint extends SpringBeanAutowiringSupport {

   @Autowired
   private HelloService biz;

    @WebMethod
    public String sayHello() {
        return biz.sayHello();
    }
}



L'interfaccia HelloService viene, grazie all'annotation @Autowired, gestita da Spring: questo è il punto di unione tra le due tecnologie.


Per far funzionare il tutto dobbiamo fare una modifica anche al web.xml, aggiungendo la gestione dello SpringContext.


Quindi in fondo al web.xml si aggiunge


Per la parte Spring, basta creare l'xml ApplicationContext.xml (anche qui, si usano i default per velocità)


Qui si dice appunto che la classe che implementa helloService (notare la consonanza di nome tra l'interfaccia e l'id del bean, è uno dei modi in cui Spring ricerca i bean per il metodo @Autowired) è it.ws.test.HelloServiceImpl, che ovviamente implementerà l'interfaccia HelloService.


Tutto qua, nulla di più. Facile vero?

venerdì 16 ottobre 2009

IntelliJ è ora OpenSource!

JetBrains ha finalmente rilasciato il suo famoso IntelliJ anche sotto la community edition.
La notizia qua
Ed ora, usare, usare, usare!

martedì 29 settembre 2009

Monitoring Software

Questo più che un post è poco più che un appunto preso in velocità.
Quali software di monitoraggio ci sono in giro?
Ne faccio un elenco, per ora composto di una sola voce. Ovviamente qualsiasi suggerimento è più che benvenuto, servirà ad allungare la lista.
  • Hyperic. Sembra, leggendo un po' in giro, uno fra i migliori software open. Proprio in questi giorni è stato acquisito da SpringSource e, vista la qualità del software che fanno, tutto fa presupporre un futuro radioso per questo software. Se prima o poi lo riuscirò a testare me ne farò un'idea più approfondita.

mercoledì 23 settembre 2009

Mule iBeans

Mule ha appena rilasciato iBeans, che sta per Integration Beans.
E' un nuovo framework di integrazione che permette alle webapps Java esistenti di interagire con altre webapps e servizi.

Ovviamente non vuole essere un rimpiazzo per MuleEsb, ma un semplice mezzo per il routing dei messaggi, e magari un modo veloce per girare i messaggi verso Mule e da Mule verso l'esterno.

lunedì 21 settembre 2009

Mule: Errori di validazione XML in Eclipse 3.5

Qui l'articolo originale.
Purtroppo Eclipse 3.5 tenta di risolvere tutte i namespace all'interno di un file xml.
Dal momento che gli schemi Mule non sono suddivisi in files di schema multipli, è possibile disattivare il check.

Nelle preferenze di EClipse, andare in XML > XML Files > Validation e disattivare il check box Honour all schema locations.

martedì 15 settembre 2009

Lanciatori

Ho vissuto per tanti anni facendo che, se volevo aprire word o OpenOffice Write, facevo Start->Programmi->OpenOffice->Write o Applicazioni->Ufficio->OpenOffice - Word processor
Poi ho finalmente scoperto i lanciatori.
Prima sotto Windows, ho scoperto Launchy, un fighissimo lanciatore. Ed è stato subito amore! Eh si, perchè finalmente posso fare tutto o quasi da tastiera. Ed è veramente comodo :-D
Bene, Launchy esiste anche per linux, quindi l'ho provato, ma devo dire che è un po' meno figo che sotto Windows.
E allora, cerca che ti ricerco (5 minuti non di più) ho scoperto che esiste gnome-do, un gran bel lanciatore.
Lo sto provando, e anche questo mi gasa alla grande.
Ma come ho fatto finora senza lanciatori?

domenica 13 settembre 2009

Mono, MonoDevelop e Gtk#

Stavo guardando Mono e MonoDevelop.
Abituato come sono a VisualStudio e allo sviluppo WinForms, ho subito cercato di fare un progetto WinForms.
Bene, ho scoperto che sotto MonoDevelop non si possono creare progetti WinForms, ma solo progetti Gtk#.
Ho anche scoperto che non esiste nessun designer pronto per applicazioni WinForms: l'unico che c'è è ancora in versione beta.
OK, no problem: vediamo come funziona lo sviluppo Gtk#, mi sono detto, sarà più o meno come quello WinForms.

Quindi, Nuovo->Soluzione->Progetto Gtk# 2.0

La soluzione viene creata, il progetto anche, ed aggiunge una classe MainWindow.cs che contiene una window di default.
Il designer è carino, gestisce bene la form.
E qui primo piccolo problema: se metto un bottone direttamente sulla form la riempie tutta... ok, ho capito, bisogna mettere un container che gestisca la posizione dei widget. Metto un FixedContainer e tutto va a posto, il disorientamento è durato veramente poco.
OK, piccola differenza ma basta farci l'abitudine. Metto un bottone, creo l'evento di Click, (Clicked si chiama in Gtk#) e provo a fare comparire un MessageBox.
Dunque, dunque, MessageBox.Show non funziona qui, chissà come sarà.... Googola che ti rigoogolo alla fine ho trovato!
Bisogna creare un MessageDialog e poi fare run!


OK, il mio primo test con Mono finisce qua. Convincere mi convince, però solo un pensiero mi attanaglia... se deve essere la versione open delle specifiche .NET, perché non implementare già da subito la System.Windows.Forms e supportarla da subito su MonoDevelop? Fra l'altro sembra anche che il porting sia completo al 100% e che funzioni anche piuttosto bene!
Se avrò tempo approfondirò i test.

martedì 8 settembre 2009

Debian passa ad Upstart

Debian ha deciso che, dalle prossime release, abbandonerà il sistema di boot Init e passerà ad Upstart, per ottimizzare il boot.
Qui il link alla notizia.

lunedì 7 settembre 2009

La nuova versione di Skype per linux.

Ebbene si,
anch'io l'ho scaricata ed installata, e qualche problemuccio me lo ha dato.
Qui intanto ci sono alcune risposte alle domande più frequenti (che mi sono fatto anch'io, a dire la verità)
Vabbè, Skype 4 linux non è ancora al top, ma si riesce comunque a telefonare e tutto il resto. In attesa di ulteriori migliorie ci si accontenta.

mercoledì 2 settembre 2009

Comparazione tra Ubuntu e Snow Leopard

A proposito della mia curiosità sulle prestazioni di Snow Leopard, c'è un benchmark tra Snow Leopard e Ubuntu 9.04.
Per varie cose è + veloce Ubuntu... no comment

martedì 1 settembre 2009

Il nuovo Skype per linux

Udite udite,
finalmente il nuovo Skype per Linux è uscito, anche se in versione beta.
La versione è la 2.1.0.47, per la precisione.
L'ho provato, installandolo sulla mia Ubuntu 8.04. E purtroppo ho avuto qualche problemetto...
Praticamente la prima chiamata funzionava tranquillamente, mentre dalla seconda in poi non si sentiva nient'altro che rumore di fondo.
In pratica l'errore è dovuto alla libreria pulseaudio, che purtroppo ancora fa un po' impazzire. Per fortuna è solo un problema di configurazione della libreria stessa, quindi facilmente risolvibile.
Basta editare il file di configurazione con

sudo gedit /etc/pulse/daemon.conf

e impostare il parametro realtime-scheduling, che di default vale no in

realtime-scheduling = yes

Fatto questo basta killare la libreria pulseaudio, se è già attiva e così tutto prende magicamente a funzionare!

E ora ho il mio bel Skype funzionante!

lunedì 31 agosto 2009

Ma allora questo Snow Leopard com'è?

E' uscito venerdì 28 l'atteso nuovo sistema operativo della casa delle mela.
Ora, io non sono un fan del Mac, perché quelle 2 o 3 volte che l'ho provato non mi ci sono trovato a mio agio (sarò storto io, ma che ci posso fare?) però ho amici che osannano Apple.
Mi sto quindi cercando di fare un'idea su come sia in realtà la nuova release di sistema operativo, anche per poterne parlare con un minimo di cognizione di causa, sempre ammettendo però la mancanza di esperienza diretta.
Guardando in giro sono per esempio incappato in questo articolo: ora, capisco che magari ZFS non sia un requisito così fondamentale per il nuovo S.O., ma mi sembra che questa nuova release non abbia introdotto grandi cambiamenti, se non un po' (magari anche un bel po') di velocità. Ma sinceramente, piochè il sistema è completamente a 64 bit non mi sarei aspettato di meno.
Mi preoccupano di più invece alcuni rumors sul fatto che anche il leopardo sarebbe infettabile da malware.
Da Javista incallito quale sono poi, mi fa abbastanza imbestialire che per avere una versione aggiornata di Java sulla mela si debba aspettare lustri interi, e sono anch'io concorde con alcuni commenti a questo articolo sul fatto che il Mac non sia adatto per gli sviluppatori.
Prego chiunque usi il mac di farmi ricredere e se mi dimostrate che posso sviluppare in Java con Eclipse e 1-2 database (PostgreSQL e Firebird per esempio) girerò con la maglietta della mela addosso!

venerdì 28 agosto 2009

PostgreSQL Video

Josh Berkus,
uno dei creatori di PostgreSQL, ci avverte che ci sono oltre 40 ore di video su come funziona PostgreSQL.
Buona Visione!

mercoledì 26 agosto 2009

Google e la digitalizzazione delle biblioteche italiane.

E' ormai da qualche giorno che leggo notizie sulla digitalizzazione delle biblioteche italiane da parte di Google.
Prima Roma, poi, Firenze, poi infine questo.
A me sinceramente il fatto di poter avere la possibilità di consultare gratuitamente le opere non più coperte da copyright piace immensamente.
La cosa che mi da veramente fastidio è che si sia dovuti ricorrere all'elemosina di Google (che poi sarà quello che veramente ci farà i soldi) perché lo stato non ha investito risorse in questo "progetto".
E così i guadagni andranno a qualcun altro, e quindi ci saranno sempre meno fondi destinabili a queste cose. Una bella spirale discendente verso il vuoto più totale.

My 2 cents...

martedì 25 agosto 2009

Agile Development: prime impressioni

Ebbene si, anch'io ho cominciato a guardare verso il fantastico mondo dell'Agile Development.
Innanzitutto: da dove partire?
Direi proprio da qui, cioè dal manifesto per l'Agile Software.

E poi altra domanda: cos'è l'Agile Development?
Se dovessi dirlo in parole povere direi che è un processo di sviluppo software (l'ennesimo?).
In realtà sotto c'è molto di più: diciamo che è un metodo di lavoro che si può adattare a tutte le situazioni, non solo allo sviluppo software.
Questa è però una definizione molto "sfumata", che non definisce in dettaglio cosa ci si aspetta dal'Agile Development.

Facciamoci quindi un'altra domanda Quali sono i principi fondamentali?
Sempre nel manifesto sono dichiarati 12 punti fondamentali.
Ora, per chi è abituato a lavorare "alla vecchia maniera" possono sembrare devastanti, perché viene scardinata la regola base: scrivi un documento di progetto nei più minuti particolari e non muoverti di una virgola da lì!

Nell'Agile Development invece si lavora in maniera iterativa, e si aggiusta il tiro via via che si procede: attenzione però, questo non vuol dire che si debba partire dal voler fare una mela, e si finisca col fare una pera! Fin dall'inizio bisogna essere più che consapevoli di qual'è l'obbiettivo: ciò che può cambiare sono i particolari, che ovviamente emergono via via che la visione del prodotto si fa più chiara.

E' quindi molto più semplice rilasciare con cicli brevi prototipi funzionanti ed aggiornare il tiro su quelli piuttosto che scrivere tonnellate di documenti prima ed arrivare con un prodotto finito al 100% per poi scoprire che non si è centrato esattamente l'obbiettivo perchè non si erano (sia noi come team di sviluppo sia il destinatario dell'applicazione) approfonditi alcuni aspetti.

Bene, e qui finiscono le chiacchiere: prossimo passo da fare è sporcarsi le mani: voglio cioè cercare di mettere in pratica queste "regole" e vedere se sono veramente valide per me.
Ma tutto questo prossimamente su questi schermi.

venerdì 21 agosto 2009

Restare Aggiornati

Anche oggi, vista l'estrema calura, niente argomenti tecnici, o il cervelletto rischia di fondere.
Leggendo qua e la un po' di post, ho trovato un'interessante considerazione su come dovrebbe essere il mestiere dello sviluppatore software.
In breve, Jay Fields, l'autore dell'articolo, dice che un preciso dovere dello sviluppatore è quello di restare aggiornato sulle nuove tecnologie: il tempo che si dedica quindi a questa attività dovrebbe essere inserito nell'orario di lavoro, e non nel fuori orario. Un'esempio lampante è Google, con il suo 20% di tempo libero, che non è, a dire dell'autore, una novità, ma semplicemente l'accettazione di un metodo di lavoro.
Ora, premesso che concordo al 101% con l'articolo, ditemi chi qui in Italia, riesce a lavorare così. Io so solo di tanti dopocena e fine settimana passati a capire come funzionano le cose. Per l'amor di Dio, non le rimpiango, ma magari....

martedì 18 agosto 2009

JPA con database multipli

Mi sono fatto una domanda: supponiamo di avere MOLTI dati da trattare, suddivisi in più di un database. Come si può fare con JPA?
Infatti JPA, di default, punta ad un solo database.
l'EntityManager, cioè il gestore delle Entity, si ottiene attraverso EntityManagerFactory. Ora, usualmente si invoca il metodo EntityManagerFactory.createEntityManager(), senza parametri nè altro, e quindi si ottiene l'EntityManager predefinito.
Si può però usare anche il metodo EntityManagerFactory.createEntityManager(Map map) dove nella map sono specificate le proprietà con cui si vuol creare l'EntityManager.

Viene fatto con Hibernate, ma il concetto è lo stesso.
Questo mi permette di ottenere il risultato voluto, e di implementare una logica custom per la scelta del database.

Una breve storia di Java

E' un po' osannante, però direi che fa il suo effetto...

Tips on Time-Based Partitioning

Josh Berkus ha scritto un interessante articolo sul partizionamento di tabelle in PostGreSQL.
Sono pochi suggerimenti, che magari sembrano scontati, ma che rendono la vita di un DBA molto più semplice.

http://it.toolbox.com/blogs/database-soup/tips-on-timebased-partitioning-33389?rss=1

Benvenuti!

Ho deciso di creare questo blog più per me che per altri.
Mi servirà come repository di pensieri, idee, appunti sull'informatica, mia professione e mia grande passione.
Per chiunque vorrà leggermi, buon divertimento!