Hibernate e la connessione perduta…

Questo post è un po’ anomalo rispetto agli altri; invece di dare la risoluzione a dei problemi esprimerò un mio problema nella speranza di trovare qualcuno che magari riesca a darmi qualche dritta per risolverlo.
In sostanza in questo momento ho la necessita di fare il detach di un database SQL e ricollegarlo…e fin qui immagino le vostre espressioni facciali sornione…
Ho la necessità di farlo mentre il database è utilizzato da un’applicazione senza, ovviamente, dover riavviare la stessa…ed anche qui immagino ancora qualche espressione facciale sorridente…
La mia applicazione, ovviamente, usa NHibernate come ORM … io, in sostanza, riesco a scollegare la session al database in questione; scollegare il db; ricollegarlo; forzare una nuova connessione su una nuova session di Hibernate, la session va su senza errori ma alla prima operazione di lettura/scrittura dei dati mi viene risalita una ADO Exception con errore nel pooling della connessione (”Si è verificato un errore a livello di trasporto mentre si stava inviando la richiesta al server. (provider: Provider memoria condivisa, error: 0 - Nessun altro processo all’altra estremità della pipe.”)…e adesso…spero tanto ci siano ancora qualche espressione facciale divertita…

I love this Game

Ho appena finito di vedere gara 1 play-off di pallacanastro italiana tra Air Avellino e Pierrel Capo d’Orlando.
Dire spettacolare potrebbe sembrare scontato ed invece ciò che si è visto è stato ancora di più.
Due squadre date, ad inizio stagione, molto indietro rispetto alle più blasonate Siena, Roma, Milano etc…, due squadre dove non si annoverano grandissimi nomi tra le loro fila; eppure due squadre che hanno saputo raggiungere grandissimi risultati per le loro città: Avellino con la vittoria della TIM CUP Final Eight (la Coppa Italia) e Capo d’Orlando con il 6to posto in campionato.
Guardare queste due squadre spiega il perchè si possa essere tanto appassionati di questo sport: 10 persone in campo che danno l’anima ogni secondo per tutti i 40 minuti di gara; un ragazzino di 35 anni (la mitica mosca atomica - Pozzecco) che continua a dare lezioni di ball handlig e assist; un signorino smilzo, tale Williams, dall’altro lato, che lotta e prende rimbalzi in attacco contro l’intera squadra avversaria. Ed il tutto condito da grandi giocate, lotte “armate” sotto canestro, contropiedi a 1000 a l’ora, e farcito da un correttissimo spettacolo tra il pubblico e da momenti toccanti come la corsa verso la propria panchina del capitano della Pierrel (sempre il Pozz. di prima) che a 2 minuti dalla fine della partita e 6 punti sotto, è corso ad abbracciare e consolare il suo compagno (invece di andare ad urlargliene in faccia di tutti i colori) in lacrime per aver commesso, in maniera del tutto ingenua, il suo quinto fallo ed aver lasciato la squadra in campo senza lunghi di ruolo; oppure, dall’altro lato, il momento dell’abbraccio dell’intera squadra a fine partita, dopo la vittoria, al loro compagno (Righetti) infortunatosi nel primo periodo di gara…
Che dire di altro…penso non ci sia niente da aggiungere…se non il motto dell’NBA:
I love this game!!!

La disperazione di un convinto Ubuntista…

Questo articolo è dedicato al mio caro amico - collega Marcello.

Da un po’ di tempo si è deciso ad esplorare più a fondo il mondo Linux e per farlo ha disinstallato, dal suo nuovo portatile, Windows Vista e si è tuffato nei meandri di Ubuntu installando la versione 7.

Da allora ogni giorno è stato un inno alla perfezione ed alla magnificenza del nuovo mondo ma…

…ma un giorno accadde, l’imprevedibile ed impensabile accadde… “qualcosina“, nell’aggiornamento alla nuova versione 8 di Ubunto, non è andato, per così dire, così come lui si sarebbe aspettato e quindi…

…cliccate qui e leggete dal suo blog il carinissimo sfogo di un disperato Ubuntista!

Visualizzare le tabelle di un database con C#

Rifacendoci sempre all’applicazione “Hello NHibernate” vediamo adesso come migliorare la visualizzazione dei dati inserendo delle tabelle in una form per la visualizzazione e la gestione dei dati dei fornitori e dei prodotti salvati nel database.

Per cominciare creeremo un nuovo progetto chiamato HelloHibernateApplicationFarm definito come Windows Form Project.

In automatico il Visual Studio creerà una form principale e la battezzerà form1 .

Dalla barra degli strumenti “Toolbox” creiamo, a nostro piacimento, una dialog nella quale inseriamo due dataGridView che saranno i componenti che conterranno i dati dei record delle tabelle memorizzate nel database.

Nello specifico, in questo caso, una dataGridView conterrà tutte le informazioni relative ai fornitori e l’altra ai prodotti.

Come in tutti i progetti grafici si può dare libero sfogo alla propria fantasia ed alla propria capacità artistica, io, ad esempio, ho creato la form in questa maniera:

form with empty tables

e che sia chiaro che non si accettano commenti negativi sulla scelta dell’accoppiamento rosa-nero dei colori :) .

Ma vediamo adesso come associare gli eventi all’interfaccia.

Read more »

Fare il Refactoring del codice

Refactoring is making changes to a body of code in order to improve its internal structure, without changing its external behaviour

Così M. Fowler definisce l’operazione di refactoring nel suo libro e nei suoi interventi in quest’ambito.

Refactoring è il processo per modificare un sistema software in modo tale da migliorare la struttura interna del codice senza alterarne il comportamento esterno” .

Ma la domanda che ci si pone spesso è: “ma vale davvero la pena di perder tempo a fare refactoring, dal momento che non si modificano le performance dell’applicazione?”.

Domanda forse legittima…per chi scrive codice col solo intento di vederlo “girare” una o due volte e basta più. Diversamente la risposta non può che essere ASSOLUTAMENTE SI!

E molto spesso non è neppure vero che il comportamento resta totalmente invariato; spesso, infatti, una buona operazione di refactoring comporta un miglioramento del programma dovuto ad una revisione di codice scritto (e capita spesso) in maniera poco ottimizzata o con sporcizie varie rimaste nello specifico metodo inutilmente.

Fare refactoring quindi è utile ed è buona norma nello sviluppo di una qualsiasi tipologia di applicativo software (ancor più se si lavora in team): rende più comprensibile e manutenibile il software migliorandone, e allungandone, in tal maniera, il proprio ciclo di vita.

Read more »

Il primo progetto con Hibernate

Degli ORM e di Hibernate se ne è già parlato in un precedente articolo quindi in questo verranno omesse introduzioni in merito agli stessi argomenti.

Quello che invece verrà fatto è creare da zero un’applicazione in C# che usi NHibernate come ORM per la base dati che verrà realizzata, in questo caso, con SqlExpress.

Per cominciare facciamo un’analisi approssimativa del progetto:

Supponiamo quindi di dover realizzare una semplice applicazione che si occupi di gestire la persistenza dei dati di un archivio di fornitori e di prodotti ad essi associati.

In tal caso avremo un semplice ERD come quello mostrato sotto:

ERD

e supponiamo di avere già in archivio 3 fornitori:

SupplierTable

e 3 prodotti:

ProductTable

 

Apriamo quindi il Visual Studio (io utilizzerò il 2008 Express) e creiamo un nuovo progetto di tipo “Console Application” che chiamiamo (in onore del grande progetto Hello World) “HelloNHibernate” (nei miei progetti antepongo sempre il prefisso “RobertoCaico”, quindi il mio progetto verrà visualizzato come RobertoCaico.HelloNHibernate). In automatico verrà generata la classe Program.cs. Inseriamo nello stesso progetto un nuovo file di configurazione, che chiameremo app.config, nel quale inseriremo le informazioni relative alla connessione di NHibernate al database come di seguito mostrato:

<?xml version=1.0?>

<configuration>

<configSections>

<section name=nhibernate type=System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089/>

</configSections>

<nhibernate>

<add key=hibernate.connection.provider value=NHibernate.Connection.DriverConnectionProvider/>

<add key=hibernate.dialect value=NHibernate.Dialect.MsSql2000Dialect/>

<add key=hibernate.connection.driver_class value=NHibernate.Driver.SqlClientDriver/>

<add key=hibernate.connection.connection_string value=Server=.\SQLEXPRESS;initial catalog=HelloNHibernate;Integrated Security=SSPI;Language=Italian/>

<add key=hibernate.use_outer_join value=true/>

<add key=hibernate.show_sql value=false/>

</nhibernate>

</configuration>

 

Read more »

Reperire gli ambienti di sviluppo…

Per chiunque non avesse già a disposizione gli strumenti casalinghi per sviluppare applicazioni questi sono una serie di link utili da dove poter scaricare gratuitamente gli IDE.

Per quel che riguarda i prodotti Microsoft è possibile scaricare le versioni Express del Visual Studio 2008 al sito: http://www.microsoft.com/express/download/default.aspx.

E’ possibile scegliere se scaricare uno dei prodotti seguenti:

Read more »

CRYPTO

CryptoHo appena finito di leggere Crypto, un romanzo di Dan Brown (quello del “Codice da Vinci” per chi non lo ricordasse) e mi è davvero piaciuto parecchio. Forse perché nel romanzo si fondono con estrema naturalezza, argomenti e concetti informatici con una trama tryller in perfetto stile dell’autore. Inoltre, probabilmente, l’ho apprezzato ancor più in quanto in questo periodo mi sono trovato a sviluppare un’applicazione di licenze software che mi ha portato a studiare concetti e problematiche relative alla crittologia ed alla crittografia.

(OSS. Si! non sono la stessa cosa; lo pensavo anch’io fino a poco tempo fa. La crittologia è la scienza che studia il discorso e la scrittura segreta ed è suddivisa in due grosse branche: 1) la crittografia: la scienza di scrivere dei messaggi che nessuno al di là del vero destinatario potrà leggere e 2) la crittoanalisi: la scienza che si occupa della lettura delle informazioni crittografate attraverso la rottura dei sistemi cifranti).

Del libro c’è una frase che mi ha colpito particolarmente; questa riguardava, nello specifico, il mondo dell’informatica ma io la estenderei non limitandola a nessun settore specifico della vita:

 

Tutto è possibile per l’impossibile occorre solo più tempo…”

Qui di seguito riporto la trama del romanzo così come presentata in Wikipedia:

Read more »

Domain Model e ORM

Ormai è consuetudine (ed auspicio) quella di scrivere codice attinente a pattern architetturali ben consolidati e opportunamente inseriti nel disegno dell’architettura del software che si sta implementando.

Uno dei pattern architetturali più “in voga” ai giorni d’oggi è il Domain Model che parte dal principio di fondo secondo il quale si vuole avere una astrazione quanto più alta possibile della parte di persistenza dei dati. Ciò al fine di poter lavorare con oggetti piuttosto che con entità vere e proprie e, soprattutto, di poter, laddove possibile, non cablare nel codice logica relativa ad un tipo di database piuttosto che ad un altro (SQL, piuttosto che Oracle, piuttosto che MySQL, etc…).

 

Read more »

Il sapore della vittoria

Non so voi ma ieri, per l’ennesima volta tra l’altro, ho rivisto uno dei più bei film, a mio parere,Remember the Titans
che abbiano mai potuto realizzare col mio attore preferito Denzel Washington e cioè:
Il sapore della vittoria” (nel suo titolo originale “Remember The Titans).

Per chi non l’avesse mai visto includo un breve trailer:

Il film è ambientato nel 1971 e narra le vicende (realmente accadute) della squadra di football americano del liceo T.C. Williams di Alexandria, Virginia. Il tema centrale del film è la convivenza tra i ragazzi bianchi e di colore all’interno della squadra a causa della fine della segregazione razziale. Il coach Herman Boone (Denzel Washington) viene chiamato dal Comitato Scolastico come capoallenatore della squadra, sostituendo il precedente coach, Bill Yoast (Will Patton). Quest’ultimo, anche se inizialmente decide di andarsene, pressato dai ragazzi bianchi accetta di diventare vice-capoallenatore e di allenare il reparto difensivo. Le tensioni razziali all’interno della squadra si discolgono via via durante lo stage estivo di selezione, ma al ritorno sui banchi di scuola le cose non vanno per il meglio. Emblematico di volta in volta dei rapporti tra bianchi e neri è il rapporto tra Gerry Bertier (Ryan Hurst) e Julius Campbell (Wood Harris), dapprima litigiosi nemici e poi inseparabili amici. Nonostante tutto la squadra sconfigge tutti gli avversari fino a raggiungere la finale del campionato statale. Durante i festeggiamenti per la conquista della finale di Stato, capitan Bertier ha un incidente in macchina e rimane paralizzato. La finale assume così una forte carica emotiva, oltre che spettacolare visto che la vittoria giunge solo all’ultima azione.