Java: come scrivere un build.xml di ant per compilare e pacchettizzare (WAR/EAR)

Come sapete, tutti i Java application server (come ad es. Tomcat) richiedono il deploy di un applicativo sottoforma di un pacchetto EAR. Ma come è composto un pacchetto EAR? Un pacchetto EAR non è altro che un file jar (che a sua volta è un file zip) che contiene al suo interno: un descrittore di … Continue reading Java: come scrivere un build.xml di ant per compilare e pacchettizzare (WAR/EAR)

Pressman – “Principi di Ingegneria del Software” – quarta edizione: la mia recensione

Ad un paio di anni di distanza dal corso di “Ingegneria del Software” frequentato all’università, ho deciso di rileggere il libro di Roger Pressman, “Principi di Ingegneria del Software”, che nel frattempo era avanzato fino alla quarta edizione. Il libro è voluminoso (circa 700 pagine) e piuttosto costoso (49 euro), ma rappresenta una pietra miliare … Continue reading Pressman – “Principi di Ingegneria del Software” – quarta edizione: la mia recensione

Online JavaScript Deminifier

Se vi trovate a dover debuggare del codice JavaScript che è minified (per ottimizzare il trasferimento viene applicato il minifying, ovvero vengono tolti tutti gli spazi inutili nel codice), dovete passare per un deminifier/unminified (o beautifier). In ogni caso, un tool che vi permetta di leggere il codice JavaScript senza “incrociare gli occhi“. A tal … Continue reading Online JavaScript Deminifier

Python: scriviamo un HTTPS downloader simile a wget (con urllib2, optparse e getpass)

Per ragioni di semplicità di utilizzo e immediatezza (e anche per imparare qualcosa di nuovo), la settimana scorsa ho dovuto scrivere un downloader da linea di comando simile a GNU wget, ma con alcuni requisiti personalizzati: l’accesso alla pagina di download è protetto da userid e password (autenticazione HTTPDigestAuth); il protocollo di accesso è HTTPS; una … Continue reading Python: scriviamo un HTTPS downloader simile a wget (con urllib2, optparse e getpass)

Misurare la quantità di codice di un progetto

In questo post affronto un argomento abbastanza delicato: come si misura la quantità di codice di un progetto? La soluzione più immediata è quella di contare le linee di codice (Source Lines of Code, SLOC). Un esempio che ho personalmente applicato per contare le righe di codice di un progetto Java a partire dalla root … Continue reading Misurare la quantità di codice di un progetto

QR Codes e la Google Chart API

Piccola intro: i QR Codes sono analoghi ai “normali” codici a barre, ma rappresentano un’evoluzione: possono contenere più dati (a parità di dimensione) e possono essere letti da una serie più ampia di dispositivi, come gli smartphone (su iOS segnalo l’ottima e gratuita QR Reader for iPhone). Dopo aver scaricato un lettore di QR Codes … Continue reading QR Codes e la Google Chart API

Scambiare il contenuto di due variabili int senza utilizzare una variabile temporanea: XOR swap

Una domanda interessante che mi è stata posta è: “com’è possibile scambiare il contenuto di due variabili senza utilizzare una variabile temporanea?”. Infatti, per scambiare il contenuto di due variabili, di solito si utilizza una variabile temporanea (vediamo un esempio in Python): a = 13 b = 17 c = a a = b b … Continue reading Scambiare il contenuto di due variabili int senza utilizzare una variabile temporanea: XOR swap

Python e il metodo setdefault

Note to self (pun intended): questo post rappresenta una sorta di appunto mentale per ricordarmi il funzionamento di setdefault in Python, visto che puntualmente mi trovo ad utilizzarlo. setdefault è utilizzato sui dizionari (dict) e permette di impostare una chiave di default durante una set. Mi spiego meglio con un esempio: >>> D {1: ‘leonard’, … Continue reading Python e il metodo setdefault

Python: scriviamo un quine

Una sfida che intriga molti programmatori è quella di scrivere un quine, ovvero quello di scrivere un programma che stampi il proprio sorgente. Partiamo con la definizione più semplice, e man mano aggiungiamo i vincoli necessari. Un programmatore furbo potrebbe stampare il contenuto del sorgente semplicemente aprendolo e stampando il contenuto: import sys print open(sys.argv[0],’r’).read() … Continue reading Python: scriviamo un quine

Eclipse: impostare un template per l’inserimento di un Logger log4j

Mi capita spesso, in Eclipse, di inserire il codice per abilitare il logging di una classe tramite log4j: private static Logger logger = Logger.getLogger(Klass.class); Utilizzano i templates, una funzionalità di Eclipse, possiamo evitare di riscrivere tutte le volte questa semplice istruzione. Per impostare un template, in Eclipse, è sufficiente recarsi su: Window > Preferences > … Continue reading Eclipse: impostare un template per l’inserimento di un Logger log4j