VStrom e Pneumatici – Super Anakee 2 CODICE H

Da tempo, oramai, scorrazzo felice con la mia Strommina.

Dopo i primi 13.000 – 15.000  Km pensai bene di cambiare i pneumatici.

Allora non mi curai più di tanto della scelta ma mi feci consigliare da un gommista di Roma (me lo indicarono come uno molto competente) che mi montò un treno di Metzeler in codice di velocità “V”.

All’inizio ho avuto delle impressioni positive, o quanto meno normali, ma col passare del tempo la moto è diventata parecchio nervosa e molto instabile sulle accelerate e sulle frenate, per non parlare poi del grip sul bagnato.

Di recedente, dopo altri 12000 Km circa,  ho nuovamente cambiato i pneumatici scegliendo, dopo varie ricerche e consulti, le Micheline Anakee 2 in codice “H”.

Devo dire che adesso mi trovo davvero Molto ma Molto bene. Sul bagnato (ed in questi giorni ce n’è stato tanto) va’ che è una meraviglia sull’asciutto è tranquilla e disciplinata come e forse meglio di come lo era il giorno dell’acquisto.

Pubblico questa testimonianza sul blog affinchè possa permettere una scelta un po’ più ponderata a chi, come me, è solito cercare nel web informazioni ed esperienze varie.

Template Method

Nella vita si sa, gran maestra è l’esperienza. Molto spesso è lo scontrarsi coi problemi e le avversità che si incontrano che ci insegna come poter affrontare quest’ultime nel miglior modo possibile, imparando a superarle, di volta in volta, in maniera sempre più semplice ed immediata.
E difatti è d’uso comune individuare la saggezza e l’esperienza solo in persone non più giovani ma con un bagaglio di esperienze notevoli sulle spalle. E che c’entra tutto ciò con questo post, e con il tema generale di questo blog? In fondo c’entra qualcosa (o almeno la mia testa mi fa’ pensare così… J ) Difatti nella dissertazione filosofico-sociale di sopra c’è una piccola omissione voluta che forse riuscirebbe a far diventare “saggio” anche una persona non proprio anziana. Tale “segreto” è, banalmente l’arte di saper copiare!?! Affrontare un problema riuscendo a trovarne la soluzione semplicemente copiando la soluzione migliore con cui, altra gente, l’ha affrontato in precedenza.
Ma ancora: che c’entra tutto ciò con questo post, e con il tema generale di questo blog?
Ok! andiamo sul concreto. Supponiamo di avere una nostra applicazione e ammettiamo che questa riesca a risolvere un determinato caso d’uso “U.C. – 1” mediante la classe A in linea con le business-rules di progetto. Un giorno, in fase di revisione progettuale, si supponga che venga inserito un nuovo caso d’uso “U.C. – 2” che sia, in pratica, molto simile all’ “U.C. – 1” nella definizione e nelle funzionalità a meno di qualche pre-conditizione e post-condizione aggiuntiva. Continua a leggere…

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.

Continua a leggere…

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.

Continua a leggere…

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>

 

Continua a leggere…

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:

Continua a leggere…

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:

Continua a leggere…