Posts
45
Comments
79
Trackbacks
12
Tips e dintorni
Piccoli spunti di (grande) utilità
[NH] Delete...something

Con NH è "molto semplice" gestire il life-cycle di un oggetto, ma a volte nasce l'esigenza di poter effettuare operazioni che esulano dalle semplici CRUD sulla singola entità. Un esempio semplice è quello che mi è capitato oggi: cancellare, a fronte di una certa operazione dell'utente, tutti i record di una tabella che avevano particolari requisiti.Che fare? Caricare tutte le entità in questione e poi cancellarle una ad una? naaaaaaaaaaaaaaaaahhhhhhhhhhhhhh!!! La session di NH mette a disposizione il metodo Delete con quattro overload. Il primo, quello di cui sopra, per l'eliminazione del singolo oggetto. Gli altri tre permettono di specificare...

posted @ mercoledì 27 febbraio 2008 10.47 | Feedback (0)
[WinForm] Rendere trasparente un controllo

Esistono due tipologie di trasparenza per il background di un controllo: Il controllo è reso trasparente per rendere visibile la form sottostante.Per ottenere questo risultato basta semplicemente impostare il valore della property BackColor del controllo a Color.Transparent, come nell'esempio seguente:   Il controllo è reso trasparente in modo da rendere visibile il desktop sottostante.Per ottenere questo risultato, bisogna impostare la property TransparencyKey della form che contiene il controllo e la proprietà BackColor del controllo stesso, al medesimo valore, come nell'esempio seguente:

posted @ venerdì 25 gennaio 2008 2.16 | Feedback (0)
[C#] Debuggare funzionalità a design-time

Creare Component e ExtenderProvider custom significa implementare funzionalità che forniscono comportamenti "ad-hoc" sia a design-time sia a run-time. E' quindi necessario verificare che i comportamenti degli oggetti creati soddisfino le specifiche richieste in entrambe le modalità. Per testare le funzionalità a run-time...nulla di nuovo: breakpoint nel codice e "press F5". Per debuggare le funzionalità a design-time, invece, è necessario utilizzare una seconda istanza di Visual Studio per "hostare" l'istanza di Visual Studio che contiene il codice sorgente dei nostri "custom component" in modo tale da poter usufruire delle funzionalità del debugger anche a design-time. Per fare questo bisogna seguire poche, semplici operazioni: tasto destro del mouse sul progetto...

posted @ lunedì 17 dicembre 2007 5.10 | Feedback (0)
[C#] DateTime.TryParse

Oggi mi sono imbattuto in un comportamento del framework che, almeno all'inizio, mi è sembrato alquanto strano...come si può capire dal titolo del post mi sto riferendo al metodo TryParse della classe DateTime e a come viene "parserizzata" la stringa in input a tale metodo, per verificare se si è in presenza o meno di una data corretta... Dovendo verificare che la stringa contenuta in un TextBox fosse una data formattata correttamente, mi sono trovato in una strana situazione: 1  ... 2  if (DateTime.TryParse(TextBox.Text, out date)) 3  ... il valore ritornato dalla funzione era true, ma la TextBox conteneva un valore che io ritenevo, per lo meno, anomalo...ovvero "13/1" . Ma come? Un bug?!?!? (come...

posted @ venerdì 28 settembre 2007 9.59 | Feedback (1)
TDD e lo sviluppo per approssimazioni successive...feedback

In relazione al mio post precedente, ho deciso di rispondere con un nuovo post (per motivi di visibilità e di spazio) ai feedback veramente interessanti di Davide, Antonio, Claudio e Luca. @DavidePost molto interessante! Visto che hai notato anche tu un corrispettivo matematico dell'approcio Agile (approcio che si ritrova esattamente indentico -  come principio di base - nella modellazione dei db attraverso la Normalizzazione) ti rimando ad un mio post di qualche tempo fa: http://blogs.ugidotnet.org/nettools/archive/2006/12/20/60861.aspx sono curioso di sapere che ne pensi. Innanzitutto ti ringrazio per i complimenti...ricambio, per l'ottimo lavoro che stai portando avanti con Ugiss, veramente molto utile!!!Ho letto il tuo post, ma sinceramente...

posted @ giovedì 4 gennaio 2007 10.10 | Feedback (0)
TDD e lo sviluppo per approssimazioni successive

Non molto tempo fa, discutendo con Emanuele di alcune problematiche relative ad un progetto che stavo (e che sto tutt'ora) seguendo e alle possibili soluzioni da adottare, a fronte di alcune mie "pippe mentali" (come da lui stesso definite ), mi sospinse/indirizzò verso TDD...Un rapido giro per la rete alla ricerca di alcune superficiali informazioni, giusto per inquadrare l'argomento e capire come e quando poterlo utilizzare nello sviluppo delle mie applicazioni e...boom!!! Ormai la mia mente si era/è messa in moto in modo da assimilare il più in fretta possibile queste nuove nozioni per comprenderne l'essenza e rendere tanta buona teoria molto produttiva....

posted @ martedì 2 gennaio 2007 15.22 | Feedback (5)
Scorrendo il registro...con C++

Siamo quasi alla fine, il progetto di setup è quasi pronto (fase di test  ) e quindi ho un po' di tempo per postare un po' di codice.Come dicevo nel mio ultimo post se si dovesse essere nella condizione di dover disinstallare una vecchia versione della propria applicazione o comunque una generica applicazione esiste una chiave nel registro di sistema che espone il comando, da eseguire dal prompt, che lancia l'uninstall dell'applicazione. Giusto per gradire ecco il codice in C++ che esegue questa operazione HKEY uninstallKey = NULL;LONG lResult = RegOpenKeyEx(        HKEY_LOCAL_MACHINE,        "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall",          NULL,        KEY_ENUMERATE_SUB_KEYS,        &uninstallKey);if (lResult != ERROR_SUCCESS)    return;    DWORD appKeyIndex = 0;TCHAR appKeyName[256];DWORD appKeyLength = sizeof(appKeyName);while (lResult = RegEnumKeyEx(                uninstallKey,                appKeyIndex++,                appKeyName,                &appKeyLength,                NULL,                NULL,                NULL,                NULL)) != ERROR_NO_MORE_ITEMS){    appKeyLength = sizeof(appKeyName);    if (lResult != ERROR_SUCCESS)        continue;    HKEY appKey = NULL;    lResult = RegOpenKeyEx(            uninstallKey,            appKeyName,              NULL,            KEY_QUERY_VALUE,            &appKey);    if (lResult == ERROR_SUCCESS)    {        TCHAR displayNameValue[256];        DWORD displayNameValueLength = sizeof(displayNameValue);        lResult =            RegQueryValueEx(                appKey,                _T("DisplayName"),                NULL,                NULL,                (LPBYTE)displayNameValue,                &displayNameValueLength);        if (lResult == ERROR_SUCCESS            && APPLICATION_NAME == displayNameValue)        {            TCHAR cmd[256];            DWORD cmdValueLength = sizeof(displayNameValue);            lResult = RegQueryValueEx(                appKey,                _T("UninstallString"),                NULL,                NULL,                (LPBYTE)cmd,                &cmdValueLength);                if (lResult == ERROR_SUCCESS)                ExecCmd(cmd,true);        }        try                { RegCloseKey(appKey);}        catch (...)        {}    }}try                { RegCloseKey(uninstallKey); }catch (...)        { } Anche se il c++ è il mio primo amore, e il primo amore non...

posted @ lunedì 27 novembre 2006 15.36 | Feedback (3)
Disinstallare...prima di installare!

Oramai è un incubo, me lo sogno di notte! Cosa?!? Ma il progetto di setup che sto *cercando* di creare...Non sto ad elencarvi i requisiti e i prerequisiti che deve soddisfare/installare perchè dovrei scrivere un manuale! Non lasciate (ve ne prego) commenti del tipo "...ma utilizza ClickOnce...", "...ma è così facile con Visual Studio..."! Abbiate pietà Vi dico solo che l'intero progetto di setup è scritto in C++ ed è, per non so quale ragione, tutto a riga di comando (ovviamente su richiesta del cliente)...ebbene sì, a volte si torna indietro invece di andare...

posted @ venerdì 24 novembre 2006 12.50 | Feedback (2)
Management (WMI) Extensions per Visual Studio

Scrivendo la firma dinamica per Happy Sign richiesta da Igor, utilizzando WMI per reperire alcune informazioni relative alla configurazione del proprio pc, mi sono imbattuto in questo componente.Non l'ho nemmeno scaricato, ma da quanto riporta la documentazione online dovrebbe aggiungere due nuovi nodi allo strumento Server Explorer di Visual Studio, per la gestione delle classi WMI e dei suoi eventi... La segnalazione era dovuta , anche se il componente è sicuramente datato  (le "extensions" sono per Visual Studio 2003, non so se è compatibile con VS 2005 o se ne esiste una versione adatta)!Tempo per testarlo non ne ho (non sono ai livelli di Lorenzo, ma...

posted @ lunedì 20 novembre 2006 15.11 | Feedback (0)
Red, Green, Refactor...

Non avete capito di cosa sto parlando? Vuol dire che non avete seguito il suggerimento del mio post precedente , o peggio ancora non seguite il mio blog , ma questo, allora, è un altro discorso. Comunque per tornare a noi, nel titolo ho semplicemente riassunto quello che, in prima battuta, mi è sembrato essere lo scheletro su cui si basa TDD. Per meglio comprendere quello che voglio dire riporto (virgolettando) uno stralcio dell'articolo da cui ha preso inizio la mia curiosità verso questa nuova metodologia di sviluppo: "... Write a test. Run the test. It fails to compile because the ...

posted @ venerdì 17 novembre 2006 16.53 | Feedback (2)
Full Tips e dintorni Archive
News
Habemus Logo...

Habemus Logo...il logo del mio blog



Il mio profilo su LinkedIn

View Alessandro Melchiori's profile on LinkedIn



i like it...

Xobni outlook add-in for your inbox