in

DotNetMarche

.NET Framework User Group delle Marche

This Blog

Syndication

ExternalBlogs

September 2011 - Posts

  • Come installare SharePoint su Sql Server che risponde ad una porta diversa dalla 1433

    Quando installate SharePoint (2007 o 2010 che sia) vi può capitare di dovervi connettere ad un'istanza di SQL Server in cui è stata cambiata la porta d'ascolto di default (la famosissima 1433) e, siccome il configuration wizard di SharePoint non...
  • Signori e signore, il test runner di dev11

    Il nuovo test runner di dev11 è decisamente un GRAAAANDEEE passo avanti rispetto al vecchio. Diciamo proprio che il vecchio test runner non è un capolavoro di usabilità, e soprattutto non è tarato per chi fa un uso massiccio di test, per finire obbliga all’uso di MsTest.

    Nella nuova versione invece è tutto cambiato, prima di tutto il test runner è agnostico rispetto al framework di test, ovvero può far girare test di qualsiasi framework, perchè il core si appoggia a plugin che si occupano di enumerare e gestire i test. Come prova della flessibilità, dopo poche ore dall’uscita della developer preview, già troviamo il plugin per xUnit, veramente fantastico.

    Tutto quello che si deve fare è aprire la solution, aprire lo Unit Test Explorer ed effettuare una build, nel test output apparirà un messaggio che vi indica che Visual Studio sta scoprendo i test che sono presenti nella soluzione, dopo qualche secondo avrete la vostra lista di test

    image 

    I risultati sono mostrati in maniera decisamente più usabile, prima di tutto i test falliti, poi quelli che hanno dato warning (Ad esempio un test che è disabilitato) ed infine tutti i test passati.

    image

    Nel menu di run avete sempre la possibilità di fare “run all” e se volete con un menu la possibilità di far girare solo quelli falliti

    image

    Selezionando un test fallito, a destra avete i dettagli del perchè è fallito, e se fate doppio click su di esso verrete portati al codice del test, finalmente non avremo più decine di finestre di test result aperte in giro per Visual Studio.

    Alk.

  • Altre guide sull’installazione di TFS 11

    Avevo già bloggato in precedenza su una serie di post che spiegavano come installare le varie versioni di TFS 11 dev preview, e voglio quindi farvi un breve riepilogo

    Enjoy.

    Gian Maria.

  • Spostare una Project Collection

    Una delle domande frequenti che emergono su tfs2010 è come spostare una Project Collection da un server ad un altro, ad esempio per tenere uno storico dei vecchi progetti, o per qualsiasi altra ragione.

    Sebbene sia possibile effettuare un semplice detach/attach è meglio comunque seguire le istruzioni presenti in questo articolo, che vi guiderà passo passo sulle operazioni da fare, in particolare se avete interazioni con sharepoint o con project server.

    Gian Maria.

  • Come fare a tentare di forzare l’update a mango

    Grazie mille al caro amico Alessandro che mi ha segnalato questo link per cercare di far capire a zune che volete Mango a tutti I costi Smile, ho scoperto che avevo la versione 7392, e che prima di tutto debbo mettere la 7403, vediamo che succede, per lo meno però ora si sta aggiornando.

    alk.

  • La feature più bella di dev11

    Attualmente la feature che più adoro è questa, apro un progetto di VS2010 da dev11 e non mi viene chiesta la conversione. Questo significa che posso lavorare con il mio progetto con dev11, senza che gli altri membri del team ne siano affetti, e posso comunque usare indipendentemente entrambe le versioni.

    Per chi lavora con I Modeling projects, nella dev preview è presente un piccolo “bug” che richiede la conversione dei progetti di tipo modeling alla versione di progetto di dev11:

    image

    Ma in realtà questa è una anomalia della versione preview rilasciata, la versione definitiva permetterà di lavorare anche nei progetti di modeling con entrambe le versioni.

    Questo è un ulteriore incentivo a provare dev11 nei propri progetti attuali, sperimentando alcune delle nuove caratteristiche, come ad esempio il nuovo test runner, senza dovervi preoccupare di conversioni

    alk.

  • Dev 11 exclusion list

    In Dev11 sono stati introdotti i workspace locali ed è quindi ora presente un file chiamato LocalItemExclusion.config localizzato in

    C:\Users\gianmaria.ricci\AppData\Local\Microsoft\Team Foundation\4.0\Configuration\VersionControl

    che permette di specificare file anche in formato wildcard (come *.txt) per escludere automaticamente delle tipologie di file dal controllo di TFS. Questa modifica è necessaria, perchè ora in un workspace locale, Team Explorer verifica la struttura locale del Workspace con il server server e se un file è presente nel workspace locale, ma non nel server, viene notificato all’utente come “detected changes”.

    image

    Una Detected changes può essere o un file aggiunto o uno cancellato, semplicemente cliccando sulle Detected Changes potete aprire la nuova finestra Promote Candidate Changes, che vi permette di decidere cosa fare di questi file.

    image

    Il Promote permette di aggiungere le Detected Adds e cancellare le Detected Deletes dal server, di fatto “promuovendo” l’operazione fatta localmente al server. Facendo click con il tasto destro potete invece scegliere di escludere il file specifico o con un wildcard, in modo da evitare che la finestra di Promote Candidate Changes si riempia di file che voi sapete già volere ignorare (ad esempio le cartelle della cache locale di Resharper o qualsiasi altra tipologia di file locale che sapete già non volere aggiungere al source control).

    In questo modo l’esperienza di lavoro offline è notevolmente migliorata, anche perchè nei Workspace locali (che sono ora il default), nessun file è read-only e potete modificare qualsivoglia file quando siete offline, e le vostre modifiche verranno rilevate dal Team Explorer nella Pending Changes, che vi mostrerà tutto ciò che nel workspace locale è differente dal server e che quindi è disponibile per un check-in.

    Gian Maria.

  • Power point storyboarding

    Se avete installato Visual Studio 11 developer preview, potrete vedere nel menu una voce interessante chiamata “powerpoint storyboarding” :), per capire cosa è non dovete fare altro che installare powerpoint ed aprire il menu :). Questa è una delle novità della suite di prodotti per la gestione dell’ALM che verrà introdotta con Visual Studio vNext, ed è essenzialmente un template ed un plugin powerpoint per fare prototipi di interfaccia in maniera veloce.

    image

    Sketchflow è infatti un prodotto eccezionale per lo storyboarding, ma molto complicato per chi non ha mai usato blend. A mio avviso infatti, il grande vantaggio di Balsamiq su Sketchflow è la semplicità con cui chiunque è in grado di disegnare interfacce in pochi minuti. Sketchflow ha indubbiamente alcune funzionalità interessanti, ma se lo date in mano ad un analista funzionale….. lo vedrete sgranare gli occhi appena lo apre dicendo “ora che debbo fare?”

    Power point è invece uno strumento già conosciuto da molti e con l’aggiunta di qualche template ed un addin può permettervi di creare prototipi di interfaccia in maniera veloce e senza dovere imparare ad usare un nuovo tool. Ecco ad esempio un prototipo per una interfaccia di WP7

    image

    Attualmente la maggiore pecca è la mancanza di una libreria di simboli soddisfacente, ma naturalmente stiamo parlando di una dev preview e quindi mi aspetto per la versione finale una bella libreria di simboli (che può poi essere estesa in qualsiasi momento). L’impressione generale di questo tool è quindi decisamente buona, ecco ad esempio con pochi click un prototipo di interfaccia che usa il ribbon

    image

    Un aspetto interessante è che quella che si crea è una presentazione powerpoint a tutti gli effetti, per cui la potete salvare tranquillamente in un sito sharepoint per condividerla, usarla come presentazione, etc etc. Ma chiaramente l’aspetto più interessante di tutti è che naturalmente questo addin presenta un’integrazione nativa con il tfs 11, è infatti possibile collegare uno storyboard ad un requisito (il tipo esatto di work item a cui potete connettere lo storyboarding dipende dal process template scelto).

    Basta infatti cliccare nel bottone “storyboard links” nel ribbon, scegliere il team project a cui collegare lo storyboard, ed infine selezionare ad esempio un elemento del backlog a cui si vuole collegare lo storyboard. Come si può vedere nella figura sottostante ho collegato lo storyboard ad una user story del progetto di esempio nella macchina di test di Brian Keller.

    image

    Se ora navigate nella definizione di quella user story potrete vedere lo storyboard collegato.

    image

    Naturalmente, affinché sia possibile effettuare questo link è necessario che lo storyboard sia salvato in una posizione condivisa, ovvero nel sito sharpoint collegato a quel team project. Il grande vantaggio è che potete fare doppio click direttamente dall’interfaccia web per aprire e modificare lo storyboard.

    Gian Maria.

  • Non riuscite ad aprire file tramite le Web App di SharePoint Online?

    Una volta acquistata una licenza di Office 365 (trial o a pagamento che sia), sono certo che una delle prime cose che vorrete testare con mano sono le Office Web Apps. Che cosa sono? Non sono nient'altro che delle applicazioni web che ci danno la...
  • I bug debbono essere granulari

    Uno dei problemi maggiori che trovo talvolta nelle segnalazioni di bug è quello di segnalare troppo in un unico bug. Ad esempio si parte con un bug che dice

    Nella vista XYZ ho provato a fare  A poi B poi C ed è chrashato.

    Si procede quindi a correggere quel bug e metterlo come “risolto”, ma poi il bug viene riaperto con una nota aggiunta:

    Ok ora non crasha più, però quando faccio C mi aspetto che succeda K invece accade U

    Questo deve essere a mio avviso un nuovo bug, perché purtroppo io vedo ancora nel titolo e nella descrizione “Nella vista XYZ ho provato a fare A poi B poi C ed è crashato”, ma in realtà la nota ora mi riporta un errore differente. Si procede quindi a correggere il bug nuovo che è nella nota, si mette il bug come “resolved”, ma il bug viene riaperto con una nota che dice

    Ok adeso funziona tutto, ma nella colonna di mezzo modificherei XYZ, bla bla bla bla bla bla, e frasi del tipo, per XYZ forse bisognerebbe attuare una procedura che… [15 righe di testo con change request sulle specifiche che riguardano la procedura che aveva il bug]

    Insomma, quello non è più un bug, è diventato una accozzaglia di robaccia che non fa altro che complicare il progetto. Un bug deve essere coinciso e granulare, non si deve mai cambiarne il significato con le note e soprattutto non ha senso riaprire un bug mettendo una nota “ora funziona tutto, ma modificherei la procedura XYZ in modo che faccia … ”, questa è la morte dell’ALM.

    Quindi mettiamo alcune regole per i nostri cari tester o per chiunque si accinga a gestire un bug.

    1) Verifica che il bug non sia già stato segnalato
    2) Scrivi un titolo coinciso, e se possibile nel titolo o con qualsiasi altro campo a disposizione indica chiaramente in che punto si verifica il bug
    3) Inserisci una descrizione ed i passi per replicare il bug.
    4) quando il bug viene “risolto”, riesegui i passi e verifica che non si presenti più e poi chiudilo.
    5) Se qualche altra cosa non funziona apri un nuovo bug (non mettere note nel vecchio perchè è più veloce)
    6) Non si possono cambiare requisiti aggiungendo note ad un bug :)

    Le note servono solamente ad aggiungere chiarezza al bug, non ad inserire nuovi bug o nuove specifiche. :)

    Gian Maria.

  • Effetti aumento IVA

    Sarà un caso, ma il bar dove vado di solito, dopo l’aumento dell 1% dell’iva ha pensato bene di passare il caffe e le paste da 80centesimi a 90centesimi, praticando quindi un aumento del 12,5% alla mia solita colazione mattutina.

    L’effetto netto è che vado a fare colazione da un’altra parte :), mi spiace per il mio solito bar, ma non ci sto ad essere preso per i fondelli ;)

    Alk.

  • Isolare il problema con i bounded context, csddd campus

    La programmazione ad oggetti spinge verso l’incapsulamento ed il riuso di codice attraverso l’individuazione di oggetti, purtroppo però in progetti complessi il rischio è che, anche adottando alla perfezione i principi alla base dell’OOP, ci si trovi in una situazione poco gestibile. Solitamente si inizia con degli oggetti ben definiti e siamo molto soddisfatti di come tutto procede.

    image

    A questo punto ogni volta che dobbiamo implementare una nuova logica nel dominio, prima di tutto capiamo a quale oggetto compete svolgere quella logica, poi determiniamo gli oggetti con cui deve dialogare e quindi procediamo all’implementazione di nuovi oggetti o alla modifica di oggetti esistenti. Al crescere degli oggetti e della complessità del dominio, inevitabilmente cresce la complessità del codice, e ci troviamo con una ragnatela di oggetti che rischia di diventare troppo complessa per poter essere gestita.

    image

    Immaginate ora di continuare ad aggiungere entità al dominio, molto probabilmente vi ritroverete ad un certo punto in una situazione molto meno ordinata e gestibile di quello che inizialmente pensavate.

    image

    Piano piano vi ritroverete che modificare un singolo oggetto scatena modifiche a cascata in quasi tutto il dominio, una situazione che chiaramente è meno che ottimale e che vanifica praticamente tutti i vantaggi dell’OOP.

    In DDD questa situazione viene evitata grazie all’uso di BOUNDED CONTEXT. Purtroppo nel libro di Evans questo concetto viene enunciato quasi alla fine e non ha l’importanza che merita (qualche paginetta scarsa), e lo stesso Evans al NDC2010 nella sua presentazione dice che il BOUNDED CONTEXT in una ipotetica nuova edizione del libro sarebbe il primo o il secondo capitolo.

    Quello che si cerca di trovare è un contesto all’interno del quale l’UBIQUITOUS LANGUAGE abbia un significato preciso, non ambiguo e proprio di quel contesto. Per fare un esempio potremmo prendere il concetto di Ordine e riflettere sul fatto che per l’amministrazione e per lo spedizioniere questo termine ha una finalità ed un contenuto completamente differente. All’amministrazione interessa ad esempio che l’ordine sia pagato in tempo, allo spedizioniere che tutte le parti dell’ordine siano spedite, etc.

    La convenienza di un simile ragionamento è che all’interno di un singolo BOUNDED CONTEXT ci si preoccupa solo della parte di dominio identificata in quel contesto, ignorando quindi tutto quello che sta all’esterno. In questo modo il problema viene suddiviso in sottoproblemi isolati, e quindi di più semplice gestione. La prima domanda che viene fatta è però sempre la stessa, come comunicare tra i vari BOUNDED CONTEXT visto che inevitabilmente avremo la necessità di comunicare tra BOUNDED CONTEXT. La risposta in DDD sono i DOMAIN EVENTS e gli oggetti in un BOUNDED CONTEXT si registrano agli eventi che si generano in altri contesti al quale essi sono interessati. Il concetto è simile ad una “bacheca”, quando accade qualche cosa di interessante nel mio contesto, io lo segnalo nella bacheca, senza preoccuparmi se qualcuno poi lo leggerà.

    Facciamo un caso pratico preso da un talk di Udi Dahan. Supponiamo che io voglia annullare un ordine (contesto del piazzamento ordini tramite ecommerce) e che ci siano regole di business relative all’annullare un ordine già spedito. Il contesto del piazzamento ordini, alla ricezione del comando annulla ordine xyz verifica che nel suo contesto sia possibile effettuare questa operazione, poi annulla l’ordine e lancia nel bus un evento di Ordine Annullato. Nel contesto delle spedizioni esisterà un handler in ascolto su questo evento e se un ordine annullato è già stato spedito eseguirà una ulteriore regola di business che potrebbe essere.

    • accredita il 10% del costo dell’ordine sulla carta del cliente per ammortizzare le spese di spedizione sostenute
    • genera un evento di Rollback Annullamento Ordine, che verrà recepito dal Bounded context precedente, l’ordine viene riaperto ed al cliente viene mandata una mail dicendo “ci spiace, ma l’ordine è già stato spedito, per cui non può essere annullato”
    • Viene inviata una mail al cliente che da la possibilità di decidere se annullare con la penale del 10% o se annullare l’annullamento
    • Etc. etc.

    Chiaramente quando l’utente annulla l’ordine, il sistema può solamente dire “l’ordine è in fase di annullamento, verrà avvisato per mail dell’esito dell’operazione”.

    A parte questo caso specifico, l’aspetto importante è che quando siamo nel contesto delle spedizioni, non dobbiamo preoccuparci delle entità che sono in gioco in altri contesti, ma semplicemente ci “mettiamo in ascolto” sugli eventi “che ci interessano” che provengono dagli altri contesti per implementare le logiche di business relative a quel solo contesto (Annullamento ordine già spedito).

    Nel DDD campus abbiamo veramente discusso di tantissime cose, ma sempre di più rimango dell’idea che il “pattern” più importante che viene dal DDD sia il BOUNDED CONTEXT perchè ci permette di sopravvivere.

    Gian Maria.

  • Le sessioni di //BUILD/ dedicate a VS e TFS 11

    Di tutte le sessioni di //BUILD/ ve ne segnalo tre, dal blog di Visual Studio, che sono dedicate esplicitamente alla nuova versione di Visual Studio e TFS.

    Inoltre è disponibile una “Cheat Sheet” dedicata a tutte le nuove feature in comodo formato docx che potete scaricare qui.

    Enjoy

    Gian Maria.

  • Office 15, SharePoint v.next e dintorni

    Non porgo lo sguardo avanti per dimenticare il presente … e’ che l’elettricita’ che ruota attorno alla conferenza BUILD e relativi nuovi annunci di prodotti mi ha fatto riportare alla mente alcune cose che mi ero appuntato circa la prossima versione di Office. Premetto che nell’aria per ora c’e’ solo rumor, anche nella scorsa conferenza di
  • Istallare TFS 11 in versione Advanced

    Se avete installato TFS 2010 avrete sicuramente notato come per la configurazione basic (senza integrazione con i reporting services e con Sharepoint) l’installazione era del tipo next->next->next ed avete il TFS installato.

    Ora con la versione TFS 11 l’installazione è ancora più semplice, perchè è disponibile una versione next->next->next (in realtà vi chiede una sola info, l’utente con cui fare girare i servizi di TFS) che vi installa la versione “single server”, ovvero reporting services, analysis services, sharepoint foundation tutto in una macchina. L’unico passo che dovete fare, è installare prima SQL Server 2008 R2 sulla macchina, poi installate TFS 11, scegliete “standard single server” e dopo pochi minuti avrete un TFS funzionante.

    Se avete invece la necessità di una configurazione di tipo “advanced”, ovvero avete già un sito sharepoint da usare o volete configurare passo passo il tfs 11, potete dare uno sguardo a questo post che vi spiega in dettaglio tutti i passi.

    Alk.

More Posts Next page »
Powered by Community Server (Commercial Edition), by Telligent Systems