La dura legge di Demetra

•novembre 18, 2008 • 1 commento

La legge di Demetra (Law of Demeter o LoD o Principle of Least Knowledge) è una regola alla base della programmazione ad oggetti che consiglia di far conoscere ad un dato oggetto il minor numero di informazioni riguardo la struttura o le proprietà degli altri oggetti.

Ad esempio la seguente classe viola questa regola:

class WordDocument {
private String title;

WordDocument(HtmlDocument htmlDocument){
this.title = htmlDocument.getTitle();
}

}

Mentre il seguente esempio la rispetta:

Continua a leggere ‘La dura legge di Demetra’

Javascript: basta con l’alert per debuggare!

•ottobre 15, 2008 • Lascia un commento

Uno dei problemi più comuni dello sviluppo con Javascript sono il logging ed il debugging.

Il primo di questi problemi lo possiamo risolvere con Blackbird, un simpatico script js ed un css che una volta inseriti nella nostra pagina web ci daranno la possibilità di visualizzare una accativante console dove inserire i nostri messaggi di log tramite i classici metodi log.debug(…), log.warn(…), per capirci proprio come se stessimo usando il nostro amato log4j 😀

Altro poblema molto comune è invece il debug. Qui non posso che consigliare uno dei migliori plugin per Firefox che la mente umana abbia mai partorito: Firebug.
Oltre a permettere l’inserimento di breakpoint nel codice javascript tramite questo plugin è anche possibile ispezionare visivamente il codice di una pagina html, editare in tempo reale i CSS e molte altre funzionalità utilissime nello sviluppo di applicativi web.

(p.s.: Questo sito parla per lo più di programmazione Java, ma è anche vero che spesso ci troviamo a lavorare con Javascript e quindi, ogni tanto, mi sembra anche giusto parlarne)

Google Developer Day

•ottobre 13, 2008 • Lascia un commento

Il 21 ottobre 2008 a Milano si svolgerà il

La partecipazione è totalmente gratuita. Il calendario sembra interessante, anche perchè oltre ad ascoltare si potrà anche mettere in pratica tramite dei laboratori.

JavaScript Object Notation ovvero JSON

•agosto 19, 2008 • 4 commenti

JSON, è un formato di scambio dati che utilizza la notazione letterale fornita da JavaScript per rappresentare dati strutturati. È a tutti gli effetti un sottinsieme del linguaggio JavaScript. Ok, ma non esiste già il nostro simpaticissimo XML? Giusta osservazione, ma come vedremo JSON permette l’uso di dati che vengono interpretati direttamente come oggetti JavaScript o come array.
Quindi a differenza di XML, JSON fa uso di primitive ben supportate dai browser più comuni ce ne rendono estremamente efficiente la gestione.
Tutto ciò risulta molto comodo in Ajax, dove lo spreco di banda ed il parsing delle response sono sempre cruciali.

Continua a leggere ‘JavaScript Object Notation ovvero JSON’

GC Tweaks

•luglio 23, 2008 • 1 commento

Ho letto sul sito della Sun un HowTo su come settare alcuni parametri
riguardanti la garbage collection in modo da renderla meno
“penalizzante” su sistemi che hanno vincoli stringenti in termini di
troughput o tempi di risposta. Provo a sintetizzare quel che mi è
parso di capire.

Continua a leggere ‘GC Tweaks’

Attenti al synchronized

•luglio 8, 2008 • 4 commenti

La chiave synchronized è sicuramente la più usata quando vi è la necessità di gestire gli accessi concorrenti ad una porzione di codice. L’utilizzo di questa parola chiave ha però un costo elevato perchè lo scheduler della JVM deve pianificare degli accessi serializzati (cioè sequenziali) al blocco di codice e non concorrenti come di solito avviene, creando quindi delle possibili situazioni di stallo ed inoltre la JVM ha il costo del mantenimento della coda di thread in attesa, creando seri problemi di performance e scalabilità ai nostri applicativi.

Per iniziare una delle cose peggiori che possiamo fare è Continua a leggere ‘Attenti al synchronized’

Aspettando Maven…

•luglio 7, 2008 • Lascia un commento

Sto preparando un breve articolo che raccoglierà alcune info basilari per utlizzare Maven, ma nel frattempo che trovo il tempo di risistemare i miei appunti vi posto un piccolo script che ho realizzato.

Questo script SH si occupa di creare 2 progetti, uno che termina con “-lib” che conterrà le classi java del nostro applicativo ed uno con estensione “-web” che conterrà invece la parte web. Inoltre include già la configurazione per utilizzare l’application server JETTY in versione embedded.

Per utilizzare lo script posizionatevi nella cartella dove volete creare il progetto principale e digitate:

./mavenwebtool.sh [nomeCartellaProgetto] [group-id] [artifact-if] [0.1]

Dove dovrete sosituire i valori tra quadre come segue:

[nomeCartellaProgetto]: il nome della cartella dove verranno creati i due sotto progetti
[group-id]: il nome del gruppo del progetto
[artifact-id] il nome dell’artefatto, a questa sarà aggiunto in automatico “-web” e “-lib”
[1.0] la versione di partenza

Fatto questo all’interno della cartella [nomeCartellaProgetto] saranno create le sotto cartelle [artifact-id]-web e [artifact-id]-lib.

Se digitiamo mvn clean install e attendiamo che Maven scarica tutto ciò che ha bisogno (se è la prima volta che usate Maven non vi spaventate, dopo non impiegherà tutto questo tempo) e compila i due progetti, se tutto sarà andato bene apparirà a video la scritta BUILD SUCCEFUL.

Ora se ci posizioniamo sotto la cartella [artifact-id]-web e digitiamo mvn jetty:run partirà una versione embedded dell’applicazion server Jetty e accedendo all’indirizzo http://localhost:8000/%5Bartifact-id%5D vedremo un piacevole Hello World, questo, naturalmente, se tutto ha funzionato correttamente:D

Visto che non posso allegare file vi incollo il testo del file sh, per utilizzarlo create un nuovo file e chiamatelo mavenwebtool.sh e incollateci il testo che trovate qui sotto.

Continua a leggere ‘Aspettando Maven…’