.NET
In questi giorni prima di rimettermi in moto in vista della tesi di laurea, ho ultimato e perfezionato un progetto personale che consiste nel riconoscere i gesti della mano utilizzando EmguCV. Le tecniche con cui è possibile estrarre e riconoscere una mano sono molteplici. Nell’approccio scelto sono andato a lavorare su alcuni spazi di colore quale ad esempio YCrCb oppure Hsv definendo una particolare regione dello spazio che contiene la distribuzione di colore della pelle. Eseguito questo filtraggio si ottiene una maschera binaria della nostra mano, che successivamente viene processata al fine di rimuovere il rumore residuo. Dopo aver ottenuto...
Sulla scia del post precedente e dei commenti ricevuti, in particolar modo ho riflettuto molto sull’accusa :) mossa da Antonio circa la violazione dell’information hiding (aka stupro di oggetti) condivido l’approccio che ho seguito nel disegnare il parser per espressioni regolari a discesa ricorsiva (Recursive Descent Parser). Senza scendere troppo nei dettagli di come operi un parser, diciamo che in una prima fase il Parser esegue analisi lessicale appoggiandosi ad un oggetto Tokenizer che ha il compito di trasformare una stringa in input (nel caso in esame una regex) in uno stream di Tokens. Un token rappresenta un elemento di...
Sulla scia dei post educativi di Luka e di Antonio ho riflettuto sul codice che sto producendo per il mio ultimo progetto che andrà a breve su codeplex, ovvero un parser di regex con successiva conversione ad automa deterministico minimizzato. L’implementazione “hand made” del parser (lo scopo del progetto dovrebbe essere propedeutico per gli studenti che affrontano un primo corso sui compilatori o di informatica teorica) segue i consigli dell’ottimo testo Flexible Pattern Matching in Strings. Questo è la prima implementazione che segue passo passo lo pseudo codice del libro (con l’aggiunta del campo enum sulla tipologia di...
Un paio di mesi fà mi sono imbattuto in ThinkCode.TV, una startup nordamericana fondata da tre italiani con l’obiettivo di creare e vendere screencasts di programmazione in italiano. La cosa che inizialmente mi ha fatto riflettere è che la tendenza a lasciare il “bel” paese per motivi di lavoro “purtroppo” non si arresta, contribuendo di fatto ad un ulteriore impoverimento nazionale. A livello tecnico, la cosa che mi ha incuriosito è stata la varietà di tematiche offerte dagli screencasts; si passa infatti attraverso SmallTalk, Python, Jquery, Silverlight fino ad arrivare al TDD. Dopo essere entrato in contatto con...
Difficilmente posto news, stavolta però farò un eccezione in quanto su codeplex, alcuni sviluppatori di Avanade hanno realizzato un plugin per Sql Server hostato su codeplex che implementa una SVM. Al momento attuale può essere utilizzato per eseguire classificazione confrontando le prestazioni del modello con gli altri che si possono costruire usando gli algoritmi inclusi in SSAS(Decision Trees, Naive Bayes, Neural Network ); ho condotto alcuni esperimenti e devo dire che l'implementazione dell'algoritmo è buona anche se come ho suggerito nel forum è necessario inserire un modo per calcolare i parametri ottimali per l'addestramento della macchina; il mio suggerimento è...
Apro questo post ringraziando gli amici che hanno accompagnato la mia avventura da student partner, bella esperienza terminata lo scorso anno... non voglio dilungarmi sulle motivazioni di questa decisione, resta il fatto che il bello di essere studenti DOVREBBE essere quello di avere la libertà di scegliere senza avere vincoli o restrizioni del caso... detto questo lo scorso fine settimana è arrivato il premio per il "lavoro" che ho svolto da MSP... un bel Lego Mindstorm NXT!!!! Il kit è davvero bello e dopo aver preso contatto con i vari sensori e aver costruito il primo semplice robottino ho deciso...
Proprio prima di Natale, con il mio amico Granville abbiamo rilasciato un aggiornamento del libro gratuito che abbiamo scritto su algoritmi e strutture dati. Sono stati introdotti alcuni capitoli aggiuntivi e revisionati quelli già presenti nella prima release. I numeri lasciano spesso il tempo che trovano però aver ricevuto oltre 14.000 download per l'ultima release fà davvero piacere. Data Structures and Algorithms: Annotated Reference with Examples Technorati Tag: .NET,Data Structure
Abbiamo appena rilasciato la versione 0.6 della nostra libreria Data Structure and Algorithms. Questa nuove release include come feature principali: AVL Tree (albero bilanciato) Deque (double ended queue) Radix Sort (algoritmo ordinamento) Download Data Structures and Algorithms 0.6!
E' con grande piacere che dopo alcuni mesi di gestazione insieme al mio amico Granville, abbiamo pubblicato il libro
Data Structures and Algorithms: Annotated Reference with Example.
Allo stato attuale il libro è ancora un work in progress ma personalmente sono soddisftatto di come sia evoluto nel corso del tempo (sono un pò di parte... ). Il libro è rivolto a tutti coloro che conoscono un linguaggio di programmazione ad oggetti, senza particolari requisiti; l'utilizzo dello pseudo codice pone infatti l'attenzione sulla parte algoritmica piuttosto che su quella di implementazione. La scelta di renderlo totalmente free è data dalla convinzione che...
In questi giorni, per un esame di algoritmi distribuiti ho avuto la necessità di lavorare con un particolare albero nario. Genericamente un albero nario è un albero in cui ogni nodo presenta al massino n figli. Un albero binario è un caso particolare di albero nario dove n=2; in figura viene mostrato un albero 3ario. Vediamo come realizzare un semplice albero nario che permetta di specificare il fattore di ramificazione e che permetta di inserire nodi all'interno dell' albero in modo tale che l'albero venga riempito livello per livello (prima ci creare un nuovo livello si...
Sono appena entrato a far parte del progetto DSA (Data Structure and Algorithms) giunto in questi giorni alla versione 0.5. Far parte di questo progetto per me è uno stimolo davvero interessante e per questo ringrazio il mio amico Granville Barnett, fondatore del progetto. Compito della libreria DSA è quello di cercare di colmare le lacune presenti all' interno della BCL in quanto ad algoritmi e strutture dati. In questi giorni stiamo lavorando con Granville per decidere quali strutture ed algoritmi implementare sino al rilascio della versione 1.0. Devo subito dire che la metodologia TDD adottata da Granville aiuterà a...
Anche questo anno ho avuto la fortuna di partecipare a DevCon e devo dire che come per lo scorso anno il bilancio è decisamente positivo. Innanzitutto sembra strano ma anche in questo caso, avere già l'esperienza di una devcon alle spalle ha sicuramente giovato sia nella scelta delle sessioni da seguire (2 track parallelle) che nell' aver acquisito una certà familiarità con alcuni dei concetti esposti. Senza entrare troppo nel dettaglio cercherò di evidenziare alcune riflessioni personali nate dalle sessioni che ho seguito.
WCF
Per quanto riguarda WCF, c'è davvero poco da dire in quanto i benefici che questa piattaforma ha...
In questo post mostro poche linee di codice che permettono di calcolare la radice ennesima (nth-root) di un numero in C#. Prima di buttar giù queste righe di codice mi sono chiesto se nel framework ci fosse qualche cosa che facesse al caso mio... risposta negativa :( Con l' ausilio di un pò di matematica però si può ovviare a ciò, sfruttando la definizione di logaritmo e le proprietà che lo legano alla funzione esponenziale. Possiamo infatti scrivere:
La dimostrazione di questa formula è piuttosto semplice in quanto la prima uguaglianza è una proprietà che deriva dalla nozione di base...
Dopo l' introduzione del post precedente, oggi esamineremo la fase cruciale e maggiormente complessa di ogni algoritmo di Association Mining ovvero la fase di estrazione dei frequent pattern. Ricordo che i frequent pattern sono gli insiemi di prodotti che hanno supporto maggiore di quello minimo. Possiamo effettuare una prima classificazione degli algoritmi di frequent pattern mining individuando da una parte quelli che si basano su di un processo iterativo di generazione di itemset candidati, dall' altra quelli che calcolano i frequent pattern senza questo processo. ESTRAZIONE FREQUENT CON GENERAZIONE DEI CANDIDATI Questa famiglia vede come capostite il...
Oggi voglio analizzare ed illustrare uno dei task maggiormente ricorrenti quando si ha a che fare con operazioni di Data Mining, l' Association Mining. Farò riferimento sia all' implementazione fornita all' interno della suite di algoritmi di Data Mining inclusi in SSAS che ad ulteriori approcci maggiormente efficienti.Defiamo innanzitutto che cosa sia l'Association Mining con riferimento a possibili contesti applicativi.
Un algoritmo di Association Mining permette di identificare all' interno di un insieme di prodotti (itemset) delle regole che correlano la presenza di un insieme di prodotti con quella di un altro insieme; vengono quindi dapprima estratti dei pattern frequenti e...
Dopo un paio di mesi di lavoro e sbattimenti con Photoshop, Expression Web ed infine con l'sdk di Community Server 2007, sono riuscito a mettere online la nuova versione (quasi completa) del portale dedicato ad Academic Club, associazione composta da studenti e ricercatori che condividono la passione per il framework .NET; Ringrazio i ragazzi di DotNetMarche per gli ottimi appunti messi a disposizione e prometto che appena ho un pò di tempo, scriverò una survival guide per chi decida di avventurarsi nella creazione di un tema custom from scratch per Community Server; il portale contiene alcuni webcast interessanti, nei...
La Bioinformatica è una disciplina scientifica dedicata alla risoluzione di problemi biologici con metodi informatici; le attività di base della Bioinformatica comprendono il retrieval delle informazioni all' interno di databases biologici, il confronto fra sequenze genomiche e la rappresentazione delle strutture proteiche. Prima di analizzare le tecniche di allineamento fra sequenze proteiche, volevo ricordare come quest' ultime siano composte dai 20 tipi di amminoacidi presenti in natura; una proteina sarà quindi composta da una particolare sequenza di amminoacidi come nel caso dell' insulina (prima proteina scoperta nel '51)
insulina = MALWMRLLPLLALLALWGPDPAAAFVNQHLCGSHLVEALYLVCGERG
FFYTPKTRREAEDLQVGQVELGGGPGAGSLQPLALEGSLQKRGIVEQCCTSICSLY
QLENYCN
Ogni giorno all' interno dei laboratori di tutto...
Solitamente un kernel gaussiano viene utilizzato come filtro di smoothing per diminuire il rumore presente nelle immagini o come kernel per una SVM.In questi giorni ho avuto la necessità di eseguire una convoluzione fra una matrice a valori reali ed un kernel gaussiano; mi sono quindi creato un piccolo metodo di cui vi allego il codice...
private static double[,] gaussian(int length)
{
//Dimensione dispari
if (length % 2 == 0)
...
In questi giorni sto realizzando la sezione Gallery di un sito di una gioielleria aretina utilizzando alcune delle ottime tecniche CSS presenti su CssPlay (so che a molti potrebbe non interessare ma è un ottima fonte ). Ho deciso quindi di modellare delle semplici entity rappresentanti il catalogo delle immagini
Dato che come hosting il sito si appoggerà sul piano base di Aruba ( lungi da me riaprire la interminabile diatriba sulla qualità del servizio) ho deciso di utilizzare come fonte dati un file xml che presenta una struttura che ben descrive le entities sopra mostrare ( niente impedance mismatching sarà per la prox volta ...
In questi gg di "lenta" preparazione in vista dell' esame 70-536 ho deciso di approfondire alcuni caratteristiche sia del framework che di C# 2.0 ...
Mi sono detto: perchè nn buttare giù alcune linee di codice che coprano Generics , Custom Iterator conditi con alcune reminescenze universitarie che vanno sotto il nome di alberi binari?!!!
Cominciano con la definizione della struttura dati presa in esame, utilizzando una definizione ricorsiva:
Un albero binario è composto da un nodo radice, da un sottolabero
destro e da un sottoalbero sinistro
Dalla definizione sopra esposta viene in modo naturale definire una classe del tipo:
1: public class BinaryTree where...
SqlServer sin dalla versione 7.0 (non sono sicuro ancora pensavo ad altro ) supporta il retrieving dei dati sotto forma di xml grazie all'utilizzo di particolari parametri quali "FOR XML [RAW | AUTO [ELEMENTS] | EXPLICIT]". Un tipico codice di accesso ai dati che utilizzi una query FOR XML potrebbe avere una forma del tipo :
1: string queryForXml ="SELECT Customers.ContactName FROM Customers FOR XML AUTO, ELEMENTS";
2: string connectionString = ConfigurationManager.AppSettings["ConnectionString"];
3: SqlConnection sqlconnection = new SqlConnection(connectionString);
...