Categorie
sviluppo

Design pattern per esempi

Segnalo una serie di articoli in italiano sui Design pattern scritti da Riccardo Golia e pubblicati da Microsoft

Gli articoli ( propedeuti all’orgomento ) forniscono una carrellata di esempi ( in c# ) e relativi schemi UML.

Riporto una parte dell’introduzione:

Il significato dei design pattern

Uno degli aspetti più delicati nel disegno object-oriented (OOD) consiste nella scomposizione del sistema in oggetti. Si tratta di una attività complessa dal momento che entrano in gioco fattori non direttamente collegati alle specifiche funzionali quali l’accoppiamento tra oggetti, la loro dipendenza, la coesione funzionale, la granularità, la flessibilità, l’estendibilità e la riusabilità. Questi aspetti devono necessariamente influenzare il processo di scomposizione, talvolta anche in modi tra loro discordanti.

Categorie
sviluppo

MySQLDriverCS e System.Byte[]

Oggi ho scoperto che usando questi driver per la connessione ad un database MySQL all’interno di una pagina .aspx, nel caso di una SELECT su campo di tipo Text , TintText , MediumText o LongText invece di restituire una stringa restituiscono un insieme di byte.

Se si utilizza un DataReader è possibile convertire in stringa utilizzando il metodo GetString ( credo messo a disposizione proprio per questo) , che però accetta come argomento solo l’indice del campo.
Nel caso volessimo utilizzare il nome del campo possiamo ricorrere ad un altro metodo GetOrdinal, che ci restituisce un integer con l’indice della posizione del campo. ( fonte )

DataReader.GetString(DataReader.GetOrdinal(“NomeCampo”))

Inizialmente l’ho interpretato come un errore del driver ma in realtà ho imparato che MySQL internamente tratta questi campi come array di byte, e quindi, anche se non condivido la scelta dello sviluppatore, si è scelto di restituire lo stesso tipo.

I problemi si complicano se voglio lavorare con un DataTable preparato da un DataAdapter, infatti, anche se internamente viene usato un DataReader, le righe non vengono generate correttamente.

Dopo diverse ricerche, numerosi tentativi falliti e dopo qualche capocciata, ho deciso di aggirare il problema cambiando semplicemente i driver usati per la connessione e passando quindi all’utilizzo dei Connector/Net sviluppati direttamente da MySQL AB.

Fortunatamente le modifiche sono state minime essendo i nomi dei metodi praticamente identici.
In pratica ho sostituito le chiamate a MySQLDriverCS trasformandole in MySql.Data.MySqlClient ed ho cambiato il formato della stringa per la connessione.

Categorie
software

Gestionali OpenSource in italiano

Spesso mi chiedono:
Non è che hai un programmino per fare velocemente le fatture?
In questa domanda è sottointeso il fatto che il programma in questione debba essere a costo zero o cmq molto molto economico.

L’unica alternativa in questi casi è cercare tra il software opensource che mi permette di fare un passo indietro nel caso mi chiedano personalizzazioni che per ragioni di tempo non riesco a fare dato che è possibile chiedere assistenza ( a pagamento ) a chi a sviluppato il software e anche nel caso di ( speriamo pochi ) bachi con perdita di dati in quanto l’utilizzo del software opensource è privo di qualsiasi garanzia. ( correggetemi se sbaglio )

Ho quindi preparato un breve elenco di alcuni Programmi Gestionali sviluppati da italiani, localizzati in italiano e con lincenza GPL o BSD
(Se me ne sono dimenticato qualcuno fatemi sapere )