Skip to main content.
July 21st, 2011

ERINNA News: COMUNICATO STAMPA del 20 luglio 2011

SOLIDEA ESPRIME SOLIDARIETA’ AL CENTRO ANTIVIOLENZA ERINNA DI VITERBO

Erinna
In relazione alla chiusura del Centro Erinna di Viterbo, annunciata dalla Presidente Anna Maghi che ha denunciato nei giorni scorsi la volontà della Provincia di Viterbo di chiudere il Centro anticipando la scadenza della convenzione, l’Istituzione di genere e solidarietà della Provincia di Roma, Solidea, manifesta la sua solidarietà e la sua preoccupazione per voce della sua Presidente Maria Grazia Passuello.
“Esprimo solidarietà al Centro Erinna e alla sua Presidente riconoscendo, per esperienza diretta, l’egregio lavoro svolto in questi anni. Il Centro ha sempre svolto con competenza e dedizione un ruolo determinante per prevenire e contrastare il fenomeno della violenza” dice Maria Grazia Passuello, Presidente di Solidea. “Ci chiediamo come sia possibile che venga interrotta una convenzione ad un realtà che si è guadagnata sul campo la credibilità e la stima di tutta la collettività e delle tantissime donne che ha saputo aiutare. E ci chiediamo anche come si può immaginare che associazioni appena nate, e prive di quella necessaria esperienza, possano sostituire una struttura con competenze e una storia maturate in anni di lavoro” continua la Passuello.

“Io in prima persona ho visto nascere questo Centro sin dai primi anni di lavoro con Solidea e sono testimone della bravura e della grande capacità del personale di Erinna. Anche per questo chiedo che venga rivista questa inspiegabile decisione che danneggia non solo chi ha lavorato con passione e dedizione, ma le donne che a Viterbo sanno di poter contare su un’accoglienza e su servizi di altissimo valore e qualità. La politica e le ragioni di partito non possono essere fatte sulla pelle delle donne e in particolare su quelle colpite dalla terribile piaga della violenza”.

Ufficio Stampa Solidea Communis srl Luisa Rizzitelli 345-4767246

Posted by Simone Federici as Post at 10:07 AM CEST

September 15th, 2008

Tesi di Laurea: “Architettura Software” Gedap/Consoc

Introduzione

Nel Giugno 2006 mi fu lanciata una sfida. Il Dipartimento della Funzione Pubblica presso la Presidenza del Consiglioallontanamenti dal lavoro che ogni anno le Pubbliche Amministrazioni, presenti su tutto il territorio nazionale, effettuano in favore dei propri dipendenti. La sfida era creare una architettura per questo sistema in grado di evolvere e crescere nel tempo, aggiungendo nuove funzionalità nello stesso dominio e prevedendo la possibilità di includere progetti con domini e problematiche diverse. DFPha infatti diversi progetti che in futuro poterebbero avere la necessità di essere sviluppati o migrati. richiedeva un sistema software in grado di gestire, rilevare e censire gli

Raccolta la sfida, ho cominciato questa esperienza di cui ora mi accingo a raccontare le scelte e le responsabilità da me affrontate.

Conclusioni

Disegnare una architettura in grado di evolvere e crescere nel tempo non è poi cosi semplice. Nel corso di questi due anni di lavoro, scelte che sembravano inizialmente affidabili si sono rilevate meno solide del previsto, mentre altre si sono delineate solo con il passare del tempo.

Credo che i requisiti fondamentali per diventare un buon architetto siano si le competenze tecniche e la capacità di prevedere i possibili cambiamenti ma anche una buona dose di autocritica. È necessario essere sempre con i piedi per terra, aderenti alla realtà e quello che ci succede intorno. Essere aperti e elastici ad ogni opinione, seguire le scelte del team, non spingere le proprie idee contro mulini a vento e cercare di valorizzare il lavoro di tutti, responsabilizzando e delegando quando possibile.

La condivisione delle conoscenze è essenziale in ogni lavoro, ma nel nostro ambito ha un significato molto profondo. Le conoscenze attuali sono frutto del lavoro di colleghi più o meno vicini fisicamente, persone di questi ultimi 50 anni. Fisica, Chimica, Elettronica, Matematica, Filosofia e Linguistica sono e restano parte integrante del nostro lavoro, ed esse trovano espressione nelle ricerche di milioni di persone che stanno collaborando in modo più o meno cosciente verso una direzione comune.

Più crescono le mie conoscenze tecnologiche, e più sento un distacco dal reale. Per questo sento continuamente una spinta contraria, che rema verso la condivisione, verso la collaborazione, verso l’umanità.

Nel nostro lavoro è importante non perdere di vista questo: i colleghi, i clienti, gli insegnanti e gli studenti sono “reali” ed è con tali persone che bisogna relazionarsi.

Tesi di Laurea: “Architettura Software” Gedap/Consoc

 

Posted by Simone Federici as Post at 11:51 PM CEST

October 1st, 2007

Costruire una applicazione enterprise con Terracotta DSO

Nell’ultimo anno mi sonTerracottao inbattuto in un progetto opensource, Terracotta, molto interessante.
Dopo numerosi studi e applicazioni di esempio, ho deciso di seguire un corso organizzato da loro per approfondire l’argomento.
Ho postato i miei appunti in un articolo tecnico.

Articolo su Terracotta DSO

Posted by Simone Federici as Post at 12:15 AM CEST

September 22nd, 2007

La mia prima pubblicazione : jdk 1.1.8

L’ho finalmente ritrovata,
nel 1999 per l’esame di sistemi operativi, pubblicai sul sito dell’università il mio primo progetto Java multithread (jdk 1.1.8)

Scambio di messaggi a lunghezza variabile

Posted by Simone Federici as Post at 3:58 PM CEST

July 13th, 2007

Checked e Unchecked Exceptions

Esistono 2 tipi di eccezioni, Checked e Unchecked.
Le Checked Ex. (ossia controllabili) sono prevedibili, ad esempio invalid input, database error, ecc…

le Unchecked Ex. rappresentano invece degli errori che avvengono a runtime (potremmo definirli dei difetti del programma). Spesso sono causate da errori o dimenticanze di programmazione, o errato modo di usare un proprio oggetto/metodo.

E’ importante programmare usando il minimo possibile le eccezioni, la loro gestione impiega una grande quantità di CPU, memoria e risorse macchina.

Ogni qualvolta è necessario gestirne una, stabilire a chi spetta la sua gestione è importantissimo.

La domanda da porsi è: “chi conosce il come e chi conosce solo il cosa…”

E’ chiaro che delegare la gestione (catch) di una eccezione ad un componente che non conosce l’implementazione implica la creazione di un accoppiamento di troppo.

Un esempio nella vita reale potrebbe essere: chiedo a un professionista di ripararmi la lavatrice, dopo qualche giorno torno e lui mi risponde che il suo bancomat è scaduto.
E’ chiaro che questa risposta non ha senso, ma proviamo a ricostruire cosa è successo: andando a comprare i pezzi necessari per la lavatrice, non è riuscito a pagare perché aveva il bancomat scaduto.

Se tentiamo di modellare questo evento, ci accorgeremmo che l’eccezione “Bancomat scaduto” non doveva arrivare a me, (come lo gestisco?), il professionista avrebbe dovuto filtrare l’eccezione e dirmi, “il pezzo non è ancora disponibile”. (Legge di Demetra)

Se non è Chiaro, la SQLException in una jsp non ci deve arrivare!

Nella modellazione, quindi, è fondamentale impiegare le Checked Ex. in modo molto attento. (valgono tutti i principi OOP)
L’uso delle Unchecked exception (le runtime) o meglio catturare una eccezione di runtime,
in un sistema perfetto non dovrebbe essere mai fatto. dico in un sistema perfetto perche poi per pigrizia spesso e volentieri se ne abusa.

essendo delle eccezioni non dichiarate nelle firme dei metodi, queste eccezioni sono in grado di attraversare tutti i tiers della applicazione fino ad arrivare all’utente. Giusto pensare un sistema per non far vedere l’errore all’utente finale (lo sviluppatore invece le deve vedere).

Quando si crea una firma di un metodo, senza implementarlo, la soluzione migliore è fargli rilanciare una Uncheked Exception tipo “throw new NotYetImplementatedException()”

Insomma, queste eccezioni esulano dalla progettazione di un software, sono molto potenti e anche molto pericolose se lasciate proliferare. Esse dovrebbero sparire nella messa in esercizio.
Citazione dell’anipattern “programming by exception”
Una volta in Sud Africa ho visto un MVC che faceva uso di Una ForwardException
dove il getMessage() restituiva la url della jsp dove forwardare….. esempio lampante di
antipattern :-) NON FATELO…

Posted by Simone Federici as Post at 6:21 PM CEST

November 22nd, 2004

Il rompicapo dell’otto - un gioco di altri tempi

Ho trovatoTitolo - rompicapo tra dei vecchi backup il mio primo gioco realizzato in java.rompicapo

Non è un granché, ma è sempre un piccolo bagaglio di storia.

A guardarlo ora mi vengono i brividi, nessun principio Object Oriented, nulla di nulla, commenti:  “zero in croce”, difficile da rileggere….

Cmq mi sono ricordato di due scorciatoie,

Z e R: per l’undo e il redo…

E per cominciare una partita con una combinazione precisa di numeri bisogna digitare in ordine le nove posizioni: ad esempio:

123456780 (che chiaramente è la soluzione)

Download rompicapo8.tar.bz2

Posted by Simone Federici as Post at 1:39 PM CET

May 17th, 2004

Un Compilatore Scritto In Java!

Spim ConsoleEcco qui che vi presento un laboratorio, anzi forse il laboratorio più interessante, che ho fatto nel 2003 all’universita di Informatica a La Sapienza di Roma.

Il laboratorio di compilatori: Ossia creare un compilatore per un semplice linguaggio funzionale di nome Tiger, per creare del codice macchina eseguibile da processori MIPS.

Il corso mirava a dare le basi di teoria dei linguaggi formali, di parsing, di gestione mediante azioni semantiche sia degli aspetti context-sensitive della definizione dei linguaggi di programmazione, sia della loro semantica, necessarie alla realizzazione di compilatori e traduttori per linguaggi di programmazione, sia di tipo general-purpose, sia specializzati.

Il programma:

Analisi Lessicale
Richiami su linguaggi regolari. Passaggi da espressioni regolari a automi finiti non deterministici, ad automi finiti deterministici, ad automi minimi. Derivazione di un analizzatore lessicale da un insieme di espressioni regolari. Rappresentazione sotto forma di tabella e rappresentazione sotto forma di programma. Costruzione delle tabelle di simboli.

Analisi Sintattica
Pumping lemma per linguaggi regolari. Richiami su linguaggi liberi dal contesto. Grammatiche libere dal contesto. Forme normali per grammatiche libere dal contesto. Equivalenza fra linguaggi liberi dal contesto e linguaggi riconosciuti da automi a pila.
Processo di analisi come processo di costruzione di alberi di derivazione. Sintassi astratta e sintassi concreta.
Processi di analisi discendenti: analisi a discesa ricorsiva, analisi LL.
Processi di analisi risalenti: analisi con precedenza degli operatori, analisi LR.

Analisi semantica
Vincoli non esprimibili con grammatiche libere dal contesto. Pumping lemma per grammatiche libere dal contesto. Grammatiche ad attributi. Analisi semantica guidata dalla sintassi. Controllo sulla correttezza dei tipi. Costruzione del codice intermedio: alberi intermedi di rappresentazione.

Generazione del codice.XSpim Debbugger
Organizzazione della memoria. Selezione delle istruzioni. Grafo di flusso. Analisi di vivezza. Allocazione dei registri. Ottimizzazione.

Testi
A.W.Appel, Modern Compiler Implementation in C, Cambridge University Press, 1998.
A. Aho, R. Sethi, J. D. Ullman, Compilers. Principles, Techniques, and Tools, Addison Wesley, 1986

La Realizzazione del progetto è stata in collaborazione con Vassilios Zafiropoulos, grande amico e collega!

Le tecnologie usate nel progetto:
JDK Java 2
JLex: A Lexical Analyzer Generator for Java(TM)
CUP Parser Generator for Java
SPIM MIPS32 Simulator
LaTeX - TexLive Documentazione
GNU Emacs - IDE di sviluppo
GNU Make

Qui potete scaricare il progetto

Download del progetto
Relazione del progetto

Utilizzo:
make
java Main tiger/testcases/helloworld.tig
spim -quiet tiger/testcases/helloworld.tig.s

Esempi
Hello world - Tiger, MIPS
Merge Sort - Tiger, MIPS

Posted by Simone Federici as Post at 2:31 PM CEST