Convenzioni per la scrittura di codice Java

Eleganza, ordine, leggibilità e manutenibilità del codice ... chi più ne ha più ne metta... le convenzioni per la scrittura del codice ( Java o qualsiasi altro linguaggio di programmazione) sono fondamentali, specie quando si lavora in team.
Di solito sono concetti assodati, che i programmatori acquisiscono con lo studio e l'esperienza lavorativa, ma purtroppo spesso non sono scontati per tutti.
Un documento che dovremmo leggere tutti è il seguente:

Linee guida della Sun per la scrittura del codice Java

Se invece volete riderci su ed imparare come scrivere codice pessimo, potete leggere questi preziosi consigli (ovviamente sarcastico): http://soft-land.org/cgi-bin/doc.pl?doc=documenti/pessimo (ESILARANTE!!!) :D


Down di Gmail ... di nuovo ...

Google è attualmente l'esempio più macroscopico di Cloud Computing. Indubbiamente ed indiscutibilmente all'avanguardia per la qualità e l'innovazione dei servizi offerti ... ma sempre più spesso siamo i protagonisti di scomodi "down" dei servizi. Oggi Gmail fuori uso ...


AppStatus di Google riporta:

Ed ancora:
- 02 settembre 2009
- 26 febbraio 2009

L.A.P. #1 al DMI

Finalmente anche in ambito accademico si comincia a fare qualcosa di concreto ed innovativo che proietti gli studenti al mondo del lavoro. Ad ottobre, presso il Dipartimento di Matematica ed Informatica di Catania, partirà il nuovo corso universitario di programmazione per iPhone, denominato L.A.P #1 (Laboratorio Avanzato di Programmazione): un corso specifico per la programmazione del nuovo dispositivo di casa Apple.

Il corso di 48 ore è strutturato in moduli didattici da due ore ciascuno. Potete visionare il programma QUI. Docenti del corso sono il prof. Vincenzo Cutello (Ordinario presso il Dipartimento di Matematica ed Informatica) ed il Dott. Costantino Pistagna (ricercatore presso lo stesso dipartimento).
In Italia, solo il Politecnico di Milano, aveva proposto A PAGAMENTO (1000 e rotti €) un corso per programmazione iPhone, pertanto l'iniziativa del C.d.L. in Informatica è certamente degna di nota e l'interesse degli studenti sembra già altissimo.

Obiettivo e' la formazione di nuovi programmatori specializzati in quest'ambito. In tal modo, si vuole offrire agli studenti del corso di laurea, competenze all'avanguardia spendibili sul territorio rilanciando, al contempo, l'ateneo Catanese.

La realtà Apple/iPhone è molto vicina ad i giovani e L.A.P. #1 significa:
- avere un punto di riferimento per iniziare a scoprire la programmazione su Cocoa
- offrire una valida alternativa di lavoro ai neo-laureati
- aprire una nuova porta sull'innovazione e lo sviluppo economico
- iniziare a far crescere un campo di sviluppo ancora "verde" in Italia

Complimenti ed in bocca al lupo ad insegnanti e studenti!

Dead software walking

Come risposta a questo vecchio post "News dalla Compuware", ecco che fine ha fatto OptimalJ:

http://en.wikipedia.org/wiki/OptimalJ

Come un oggetto della storia passata, la biografia di un artista che riporta la data di nascita e la data di morte, è finito su Wikipedia con i miei dolori a seguito ... Aspettative tradite, progetto abbandonato! Ed io? Continuo a mantenere un sistema software massiccio con questo cadavere tra le mani, che si fa sempre più pesante ... Ahimè!

10 Veri Motivi per non aggiustare il pc agli amici!

Scusate se ricopio ... ma è troppo bella per passare inosservata!
(grazie a http://www.baldo.it/update/2009/divertenti/10-veri-motivi-per-non-aggiustare-il-pc-agli-amici/ )
RIPORTO FEDELMENTE:

(1) Diventi automaticamente disponibile sempre e per sempre; a qualunque ora del giorno e della notte, ovunque tu sia: al lavoro, sotto la doccia…
“Pronto, ciao ti disturbo?”
“Beh in questo momento sono in barca in ferie…”
“Ah… ma tanto tu fai presto in queste cose. Senti ho il computer che quando lo accendo mi da errore 000×32F33. Cosa può essere? Sono disperato…”
“Si, ma sono in mezzo al mare”
“Va bene. Dimmi cosa devo fare…”

(2) Diventi oggetto di una catena di passaparola selvaggio.
“Aspetta che lo chiedo a un mio amico, lui di sicuro lo sa. Poi è molto alla mano e se ha tempo ti da una mano volentieri.”

(3) Diventi automaticamente il responsabile e amministratore del PC
“Ti ricordi che l’anno scorso mi avevi installato quel programma per vedere i filmati? Ecco, stamattina, vado ad accendere il PC e non si accende più, cosa può essere successo? Non è che hai fatto qualcosa di strano?”

(4) Devi conoscere tutti i programmi e tutti i sistemi operativi esistenti sul pianeta. Da Blender al GWBASIC, da Windows 95 alle più improbabili distro di Linux. Dovrai saper fare tutto di tutto: non sono ammesse lacune per chi “conosce il computer”
“Senti, scusa se ti disturbo, ma ho un problema: come faccio ad importare un audiolibro con Itunes?”
“Guarda, mi dispiace, ma non ho l’Ipod e Itunes non lo conosco”
“Dai che tu ci capisci di sicuro più di me. In due minuti tu fai tutto…”

(5) Diventi, per esteso, la prima persona da consultare per tutto ciò che funziona a corrente elettrica
“Ciao, scusa se ti disturbo, ma ho l’home theatre della sala che non funziona più bene. Tu guardi anche quelle cose lì? Perchè è da qualche giorno che si sente un fruscio dal vufer e magari bisogna solo cambiare un fusibile…”

(6) Vieni visto come uno spacciatore di hardware
“Ciao, scusa se ti disturbo, volevo comprarmi un PC portatile, tu non è che hai delle bazze?”
“No”
“Come no? Lavorando nei computer vuoi che non ti passi sotto mano qualche occasione? Beh se hai qualcosa fammelo sapere, intanto mi daresti un’occhiata a dei preventivi che mi sono fatto fare?”

(7) Devi sempre navigare nell’ignoto.
“Ciao, scusa se ti rompo, ma il PC non va più”
“Come non va più? Non si accende o cosa?”
“No no, si accende ma poi non va”
“Cos’è che non va? Il sistema operativo?”
“Io non ci capisco mica niente… non va”
“Ma che sistema operativo hai?”
“Cosa vuoi che ne sappia io che sistema operativo ho….cos’è il sistema operativo? Dove devo leggere? Guarda, fai prima se vieni qua a dare un’occhiata, aspetto, vai tranquillo, va bene anche stasera dopo il lavoro…”

(8) Lavorerai sempre gratis… se va bene!
Al di là di qualche caffè offerto, non vedrai mai un soldo. Di sicuro, però, ne spenderai: viaggi, telefonate, probabilmente anche cavetti, vecchi componenti, batterie, viti, ecc…

(9) Grazie alla tua disponibilità, sarai sempre sottovalutato e verrai classificato al massimo come “smanettone”.
I “tecnici”, quelli veri, fanno le stesse cose che fai tu (forse con meno cura), ma prendendo 80 euro all’ora, saranno visti come semidei.

(10) Serve davvero un decimo motivo?

-_-

HttpSessionListener: come gestire gli utenti on line in Java

Scopo di questo articolo è proporre una soluzione semplice ad una delle problematiche più comuni che riguarda un'applicazione web: mantenere la lista degli utenti on line.
Innanzitutto distinguiamo i concetti di HttpSession e ServletContext.
In un'applicazione J2EE, una sessione (tipicamente legata ad un'utente) è rappresentata dalla classe javax.servlet.http.HttpSession e fornisce un'associazione tra il client HTTP ed il web server. Un ServletContext è costituito da un gruppo di servlet, pagine JSP o altre pagine web che condividono tra di loro risorse e dati. Ogni Servlet Context corrisponde, in pratica (a partire dalle specifiche 2.1 sulle Servlet), all'intera applicazione web, al contrario della sessione le cui risorse sono disponibili solo all'interno della sessione stessa.

Pertanto, la lista degli utenti on line (ad esempio un HashMap con chiave = sessionId e valore = username), sarà conservata in ServletContext. Ciò implica che:
1. quando un utente effettua il login sull'applicazione web e viene instanziata una nuova sessione sul web server, aggiungeremo una entry alla lista degli utenti;
2. quando un utente effettua il logout dall'applicazione web oppure la sessione va in timeout e scade, rimuoveremo la relativa entry dalla lista.

Java mette a disposizione degli sviluppatori, un'utilissima interfaccia (un listener) javax.servlet.http.HttpSessionListener che viene notificata con degli eventi ogni volta che la lista delle sessioni attive in una web application subisce un cambiamento.

I metodi da implementare sono :
- void sessionCreated(HttpSessionEvent se) : notifica della creazione di una sessione
- void sessionDestroyed(HttpSessionEvent se) : notifica dell'invalidazione di una sessione

Ad esempio:

package example;

public class MyHttpSessionListener implements HttpSessionListener {

public void sessionCreated(HttpSessionEvent event) {

/* AGGIUNGI QUI L'UTENTE LOGGATO,
ALLA COLLECTION CONSERVATA IN SERVLET CONTEXT */
}

public void sessionDestroyed(HttpSessionEvent event) {
/* RIMUOVI QUI L'UTENTE LOGGATO,
DALLA COLLECTION CONSERVATA IN SERVLET CONTEXT
...
(HashMap)
event.getSession().getServletContext().getAttribute("userList").remove(event.getSession().getSessionId());
*/

}
}


Per attivare il listener, è inoltre necessario aggiungere la seguente voce al file web.xml:

<listener>
<listener-class>
example.MyHttpSessionListener
</listener-class>
</listener>

Riferimenti:

- http://java.sun.com/products/servlet/2.1/api/javax.servlet.http.HttpSession.html
- http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/http/HttpSessionListener.html
- http://www.mokabyte.it/2002/01/servlet23_2.htm

Campagna Anti - Facebook


E’ da mesi che la gente mi pone sempre la stessa domanda:

“Ma tu … non ci sei su Facebook??? ”

Ebbene NO, NON CI SONO SU FACEBOOK!!!
Dovrei?!? E’ obbligatorio?!?
Sembra diventare il must dei nostri tempi, una specie di ufficio anagrafe mondiale. Se evadi le tasse, nessuno ci fa caso, ma se non hai un account su Facebook, sei davvero una persona strana!

Diventa una droga, un morbo subdolo … cercare, conoscere, pubblicare, apparire: una vita on line.
Ma perchè? Perchè tutti hanno bisogno di comunicare cosa fanno in ogni istante della propria giornata? Perchè tutti devono sapere cosa farò stasera, o dove sono stata ieri mattina? Perchè devo essere “taggata” sulle fotografie, come se avessi dietro paparazzi autorizzati ma senza essere una VIP?

Non ci rendiamo conto di come, inconsciamente, questo meccanismo infernale sta entrando ed invadendo le nostre vite. E a cosa servono le leggi sulla tutela della privacy quando un conoscente, con un solo click, permette a Facebook di inviare una mail di invito a “tutta” la sua rubrica dei contatti? Non pensate che sia ora di svegliarsi?

Non voglio essere assolutamente negativa: indubbiamente, Facebook ha permesso a tantissime persone di ritrovarsi piacevolemente dopo anni ed anni e, per certi aspetti, è davvero un meraviglioso aggregatore sociale che accorcia le distanze e tavolta, ha aiutato tantissime persone a sentirsi meno sole ed a trovare qualcuno con cui scambiare i propri pensieri .
Il problema nasce quando la sottile linea di confine tra il piacere di ritrovarsi con gli “amici” e la “necessità” di conoscere tutti i particolari della vita privata altrui, viene ampiamente oltrepassata.

Si litiga su Facebook, si discute di tutto e di tutti. Se non accetti “l’amicizia” di qualcuno che hai visto solo una sera in tutta la tua vita, magari si offende. Amici di Facebook… possibilmente, gente a cui hai stretto la mano per dire “Molto piacere” si dichiara tuo”AMICO” … 200 amici??? Davvero??? Ma che fortuna ad avere tutti questi amici … ! Non sarebbe forse opportuno chiamarli CONOSCENTI?
Che valore diamo ai veri rapporti? Che prezzo ha un sorriso vero, che possiamo vedere con i nostri occhi?
Riflettiamo, riflettiamo … stiamo perdendo il senso della realtà … viviamo una realtà virtuale. Ma se ci pensate bene … una “realtà”, in quanto reale … non può essere virtuale. Significa che stiamo prendendo in giro noi stessi… quando siamo felici di avere tanti “amici”, ma se l’adsl va giù, ci ritroviamo soli come cani …