in

DotNetMarche

.NET Framework User Group delle Marche

This Blog

Syndication

ExternalBlogs

November 2007 - Posts

  • romeo [Flickr]

    Romeo Pruno posted a photo:

    romeo

    Posted Nov 29 2007, 12:47 AM by Romeo Pruno
    Filed under:
  • Applicazioni ASP.NET a 3 livelli

    E' uscito oggi su html.it il primo di una mini-serie di due articoli sullo sviluppo di applicazioni a 3 livelli con ASP.NET 2. Lo sviluppo di applicazioni web basate su questo modello logico di programmazione risulta veramente facile ed ottimale per...
  • Come utilizzare Viusal Source Safe 2005 con Visual Studio 2008

    Con l'arrivo di Visual Studio .NET 2008 era previsto anche il rilascio di un'aggiornamento per la versione 2005 di Visual Source Safe, in modo tale da permetterne l'utilizzo con il nuovo IDE. Come si evince però dai blog di Scott Guthrie e...
  • Mamma mia quanto odio queste cose

    Debbo usare un programma che gestisce un hardware, il fornitore da un tool ma peccato che dica questo

    We are happy to inform that ***** works normally under Windows Vista, however, the UAC (User Access Control) will need to be disabled. A new version will be released later on, which will work under Windows Vista with UAC enabled.

    Perchè debbono essere felici??? Debbo disabilitare la UAC per poter lavorare con il loro prodotto??? Ma la sicurezza cosa è un opzione?? Sono felici di dirmi che ora posso lavorare con il loro prodotto al costo di un sistema più insicuro..mamma mia.....

    Alk.

  • I cookie in Windows Vista

    Oggi mi son preso dei biglietti per un concerto qui a Milano. Inizialmente non riuscivo a prenderli a causa di un errore sul cookie che creava il sito da cui dovevo acquistare. Mi son messo a cercare quindi la cartella dei cookie... dov'è finita Read...
  • Assert Sulle collezioni

    Molto spesso nei test si deve verificare se una collezione di entity contiene un oggetto con una proprietà di un dato valore, in questo caso non si può utilizzare il classico Contains della collection ma nunit ci viene in aiuto fornendo alcuni syntax helper interessanti. Considerate una classe chiamata AnEntity con due proprietà di tipo stringa, chiamate rispettivamente PropertyA e PropertyB, ecco un test interessante

    [Test]
    public void AnotherCollectionTest() {
       
    List<AnEntity> al = new List<AnEntity>();
       al.Add(
    new AnEntity("A""B"));
       al.Add(
    new AnEntity("C""B"));
       al.Add(
    new AnEntity("A""B"));
       
    Assert.That(al, Has.All.Property("PropertyB""B"));
       
    Assert.That(al, Has.Some.Property("PropertyA""C"));
       
    Assert.That(al, Has.None.Property("PropertyB""KK"));
    }

    Come potete vedere ho una lista tipizzata, ci metto dentro tre entità e poi faccio tre test. Il primo verifica che tutti gli oggetti abbiano la proprietà PropertyB pari a B, il secondo controlla che almeno uno abbia la PropertyA pari a C, mentre il terzo verifica infine che nessuno abbia la PropertyB pari a K. Si evincono subito alcune mancanze, non è infatti possibile controllare che un numero esatto di elementi soddisfi il constraint, in particolare manca la verifica che uno ed un solo elemento abbia una proprietà di un valore desiderato. Naturalmente non ci vuole molto a strutturare una interfaccia fluente che permetta di fare:

    Assert.That(al, MyHas.One.Property("PropertyA""C"));
    Assert.That(al, MyHas.Twice.Property("PropertyA""A"));
    Assert.That(al, MyHas.Count(3).Property("PropertyB""B"));

    Oppure ci si può spingere anche un po' più in la e fare composizione tramite And e fare un assert di questo tipo

    [Test]
    public void TestChainWithAnd() {
       
    List<AnEntity> al = new List<AnEntity>();
       al.Add(
    new AnEntity("A""B"));
       al.Add(
    new AnEntity("C""B"));
       al.Add(
    new AnEntity("A""w"));
       al.Add(
    new AnEntity("q""r"));
       al.Add(
    new AnEntity("q""w"));
       
    Assert.That(al, MyHas.Twice.Property("PropertyA""q").Property("PropertyB""w"));
    }

     

    In questo caso sto asserendo che la collezione abbia due elementi con PropertyA pari a "q" e due con PropertyB pari a "w", componendo le asserzioni con And.

    Se volete potete scaricare il piccolo esempietto qui, è tutto fatto al volo, ma può essere uno spunto.

    Alk.

    Technorati Tags:   
  • Nunit, forse dovrebbero manutere meglio il sito

    Stasera mi faccio un giro su www.nunit.org, controllo e dico…ancora siamo alla versione 2.4.3….ma è una vita che non aggiornano..poi ale che è a due passi da me fa, ma io nel sito vedo la 2.4.5….????? morale della favola, su www.nunit.org il sito non è più aggiornato per cui andate su www.nunit.com , solo che in questo sito purtroppo i link sono tutti down per ora e non mi fa scaricare nulla sigh.

    Alk.

  • Riconnesso

    Stasera abbiamo cambiato stanza in albergo, ora abbiamo la connessione, il pc principale è quello di Ale, che sta giocando da ore a WOW :D , mentre io accedo tramite condivisione di connessione con una wireless punto punto. Sono tornato un uomo connesso e felice :D

    Alk.

  • DirectoryEntry – non solo per active directory

    Se si legge la documentazione dell'oggetto DirectoryEntry si suppone che tale oggetto sia utile solamente per active directory, invece ruminando per la rete si può vedere che è utilissimo anche per accedere al pc locale, ecco ad esempio come cambiare la password ad un utente del mio portatile, ltricci è il nome della macchina, mentre invece guardian è il nome utente, il mio portatile non è stato mai agganciato a nessuna active directory.

    DirectoryEntry entry = new DirectoryEntry(
       
    "WinNT://ltricci/guardian""gianmaria.ricci""lami@passw0rd");
    Console.Writeline(
    "Retrieved username:" + entry.Name + "\n");
     
    entry.Invoke(
    "SetPassword"new object[] { "nu0v@pa$sword" });

    ed inoltre tramite questa classe potete enumerare e gestire i gruppi o anche i servizi, decisamente utile. Attenzione che la stringa di connessione sia "WinNT://nome macchina" con le W e NT maiuscole, dato che è tutto case sensitive.

    Alk.

  • Senza connessione si vive male :(

    Sono fuori per lavoro, in un posto superblindato dove è semi impossibile connettersi, l'albergo ha problemi di connessione, sono due gg che gli diciamo che dalla nostra camera non si naviga, ma per loro è tutto ok, abbiamo provato 3 pc per cui :D.

    Starò quindi circa 9 gg senza leggere la posta?? noooooo non ci posso credere, già mi sento male :D

    Alk.

  • Come scorrere i permessi di una lista o di un item WSS 3.0

    Ieri sul newsgroup di Microsoft legato alle tecnologie Sharepoint, è stato chiesto come era possibile ciclare sui permessi di una lista WSS 3. Io mi sono creato questo metodo come esempio, che risulta applicabile anche ad un elemento SPListItem. private...
  • Fare le cose per bene paga

    Ho una form che deve fare questo (visione semplificata ma la sostanza è questa) ascoltare su una socket per ricevere una serie di stringhe, fare un lookup in database per ogni stringa e mostrare dei dati all'utente. Il programma ha una MDI, l'utente apre la form X e quando arrivano i codici sulla socket vengono visualizzati, se la form X non è aperta non viene visualizzato nulla.

    Il cliente dopo avere visto il tutto funzionare fa la seguente richiesta di modifica: fare si che il programma MDI ascolti sempre nella socket, alla prima stringa che arriva se la form non è aperta la si apre automaticamente. Immaginate cosa succede se si fa il solito calderone con tutto il codice nel code behind della form, mi vengono in mente i seguenti problemi.

    1. Il codice di connessione con la socket è nella form, va spostato con copia ed incolla (orrore) o rifattorizzato in un componente per far si che anche la form MDI riceva le stringhe quando la form X è chiusa.
    2. Quando la form mdi riceve una stringa controlla se la form X è aperta, se non è aperta la apre, ma il primo codice che è stato ricevuto dalla MDI non verrà ricevuto dalla form, e cosa succede ai codici che arrivano mentre la form si apre? (possono arrivare blocchi di decine di codici in millisecondi)
    3. Quando la form si apre la MDI deve rilasciare la socket e far si che da quel momento in poi sia la form X a ricevere i dati....problemi di sincronia?

    Poi boh…forse succederebbero altri casini e dico succederebbero Perche la mia struttura è un MVC con vista completamente passiva, per cui io ho semplicemente preso il mio controller della form X che contiene tutta la logica, lo inizializzo automaticamente con una form dummy che internamente alla prima chiamata del metodo ShowData() inizializza una form reale, la mostra e buonanotte. In sostanza ho un proxy della view che crea in maniera Lazy la vera form da visualizzare all'utente, non ho toccato la logica del controller per cui tutto funziona. Ho fatto in 10 minuti e sono contento :D :D

    Alk.

  • Si &egrave; aggiunto un altro tassello: DotNetUmbria!

    Ho appena letto una mail che annuncia la nascita di un nuovo user group locale, questa volta si sono fatti coraggio i ragazzi dell'Umbria!

    E già hanno aperto le danze organizzando un workshop per il 30 Novembre, sponsorizzato da Microsoft e che vedrà tra gli altri la partecipazione di Pietro Brambati, Microsoft Developer Evangelist!

    Ovviamente la diffusione di ulteriori contenuti vicino alla nostra zona non può che farci piacere, quindi in bocca al lupo ai guys di DotNetUmbria!

    Posted Nov 20 2007, 09:42 AM by Ste8's Blog
    Filed under:
  • Chi testa i test?

    Ricordo che al TechEd si parlava proprio con Mauro di questo problema. Non sono un fanatico del TDD e lo utilizzo raramente, però sono un accanito sostenitore dei test, senza fare fondamentalismo, talvolta scrivo i test prima, talvolta invece li scrivo dopo, non testo tutto ma cerco di creare una batteria di test che sia in grado di verificare le parti più delicate del codice. In generale mi piace avere un supporto di test quando faccio re factoring.

    Talvolta, soprattutto per le strutture MVC in cui ho interfacce complicate, i test iniziano perl a diventare decisamente complessi, con forte uso di test double, e quindi talvolta capita che si fa il test, poi si scrive il codice, si ottiene una barra rossa e quando si va a controllare in dettaglio si scopre che il test è fatto male. Questo solleva una questione decisamente delicata, chi si assicura che i test siano veramente corretti? La morale è che i test vanno tenuti il più semplici possibile, se un test è troppo complesso allora si rischia che.

    1. Abbia errori il test e non il codice testato
    2. Sia fragile e quindi va mantenuto troppo spesso
    3. Sia poco significativo.
    4. Sia lento

    In particolare il terzo punto è interessante, se un test è complesso può fallire per molte ragioni e quindi dal suo fallimento non si capisce che c'è qualche cosa che non va, ma non si sa cosa, per cui forse vale la pena chiedersi se non valga la pena droppare il test stesso. Ricordate infatti che un buon test vi fa capire dove cercare l'errore solamente dal nome o a limite dalla stringa di errore del Nunit.

    Keep your tests simple J.

    Alk.

  • Visual Studio .NET 2008 RTM

    E' da questa mattina che è possibile scaricare la RTM di Visual Studio .NET 2008 sul sito di MSDN Subscription, mentre da oggi pomeriggio sono uscite per il pubblico le versioni express a questo indirizzo: http://www.microsoft.com/express/download...
More Posts Next page »
Powered by Community Server (Commercial Edition), by Telligent Systems