Posts by: Luca Canducci

Recensione: Practices of an Agile Developer

Foto da pragprog.comL’approccio agile è una realtà concreta che da anni ha preso piede nel mondo dell’IT. Curiosamente però, sono relativamente poche le società di sviluppo software che adottano, anche solo parzialmente, le tecniche e le metodologie agili.

La chiave di questa difficoltà potrebbe stare nel fatto che l’agile richiede un cambiamento radicale di mentalità, in primis (e soprattutto) nello sviluppatore e non da meno in chi coordina lo sviluppo di un prodotto, come team leader, project manager, CEO e via dicendo. Un cambiamento che porta solo positività in termini di produttività, serenità nella gestione del lavoro e del rapporto col cliente, una migliore gestione del proprio tempo, ma che esige costanza, applicazione e la forza di dare un calcio alle vecchie abitudini con cui si è lavorato per anni.

Read More…

Effettuare query tramite i criteria sugli elementi hasMany di una classe Grails

Nei giorni scorsi mi è capitato di dover scrivere la logica con cui in un controller Grails venivano recuperati determinati record corrispondenti ad altrettanti oggetti di una certa classe di dominio tramite i criteria. L’oggetto A in questione, semplificando per concentrarci sull’esempio, era fatto in questo modo :

class A {
    String a1
    String a2
    hasMany = [bs : B]
}
class B {
    Integer b1
    String b2
}

L’oggetto A così dichiarato ha una relazione 0..N con l’oggetto B, indicato nella classe di dominio tramite il classico costrutto hasMany di Grails.

Il mio obiettivo era il seguente: estrarre da database tutti gli elementi di tipo A relazionati ad almeno un oggetto di tipo B, utilizzando i criteria.

Read More…

Passare da Mysql a MongoDB: un esempio pratico

Uno degli obiettivi tecnici che mi sono dato per questo 2011 è quello di avvicinarmi al mondo dei database NoSQL, sigla che indica l’insieme di database che non necessitano la costruzione di legami relazionali per archiviare i dati, adottando una filosofia orientata a quella che viene definita memorizzazione strutturata. A differenza di quanto possa far pensare il nome, l’SQL non è assente in questi database, quello che manca sono dei rigidi vincoli relazionali.

Questo tipo di scelta porta una serie di benefici alle nostre applicazioni, identificabili schematicamente nei seguenti:

  • nessuno schema predefinito a cui rimanere vincolati, soprattutto al crescere della complessità;
  • maggiore scalabilità
  • maggiore availability (scusate, ma in italiano disponibilità non rende l’idea)

Read More…

Personalizzare la configurazione di log4j in Grails

Grails, il framework di sviluppo di SpringSource basato su Groovy, utilizza nativamente log4j per il logging dell’applicazione. Non troveremo il consueto file di configurazione log4j.xml che gli sviluppatori Java conoscono bene ma un sistema più coerente con le logiche di Grails.

Vediamo innanzitutto come si presenta la gestione di log4j nel file Config.groovy in una tipica applicazione generata da Grails:

// log4j configuration
log4j = {
    error  'org.codehaus.groovy.grails.web.servlet',  //  controllers
           'org.codehaus.groovy.grails.web.pages', //  GSP
           'org.codehaus.groovy.grails.web.sitemesh', //  layouts
           'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping
           'org.codehaus.groovy.grails.web.mapping', // URL mapping
           'org.codehaus.groovy.grails.commons', // core / classloading
           'org.codehaus.groovy.grails.plugins', // plugins
           'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration
           'org.springframework',
           'org.hibernate',
           'net.sf.ehcache.hibernate'
           warn   'org.mortbay.log'
}

E’ facile notare come sia possibile associare con semplicità i package da loggare e il relativo livello di logging.

Spesso però capita che cambi molto la nostra configurazione a seconda dell’ambiente in cui si trova la nostra applicazione (sviluppo, test, produzione).

Read More…

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17  Scroll to top