in

DotNetMarche

.NET Framework User Group delle Marche

This Blog

Syndication

ExternalBlogs

March 2012 - Posts

  • I REST services di SharePoint 2010

    Continua il nostro percorso di sviluppo su SharePoint 2010. Abbiamo appena finito di parlare di Client Object Model, visto in tutte le salse. Oggi introduciamo un'altra feature molto carina e veramente utile in moltissimi contesti: i REST Services...
  • Community Days 2012 si raddoppia! Bari 8 e 9 maggio 2012

    Dopo la prima tappa a Milano e il fantastico successo dei Community Days 2012, il maggiore evento community italiano organizzato dagli user group e community italiani legati ai temi dello sviluppo basato sul .NET Framework, raddoppia! Dove? Questa volta...
  • Reactive Extensions (Rx) e Weak events

    Come molti sanno, il classico uso degli eventi in C# ha un effetto collaterale: se non viene gestita correttamente la strong reference che si forma tra l’oggetto che espone l’evento ( EventSource ) e gli oggetti che registrano gli event handlers ( EventListeners...
  • Quali hotfix e service pack debbo installare per TFS 2010

    TFS2010 è oramai uscito da quasi due anni ed in questo post potete trovare la lista di tutti gli update che dovreste avere installato nel vostro TFS. (http://blogs.msdn.com/b/granth/archive/2012/01/03/tfs-2010-what-service-packs-and-hotfixes-should-i-install.aspx) vi consiglio fortemente di darci uno sguardo Smile.

    Gian Maria.

  • Word Automation Services, error code: 65543

    In questo periodo ho avuto l'occasione di utilizzare gran parte delle caratteristiche dei Word Automation Services di SharePoint 2010, per la conversione di documenti Word in altri formati. Nel mio caso, avevo la necessità di convertire un file Word...
  • Team Favorites

    Nel nuovo TFS esiste il concetto di favorites, ovvero di alcune parti del progetto che sono particolarmente importanti e che quindi possono essere marcate come Favorite. Come esempio è possibile rendere una Build come favorita, semplicemente usando il menu contestuale (la piccola freccia nera verso il basso a sinistra degli oggetti nella nuova interfaccia web.)

    image

    In questa immagine infatti ho evidenziato alcune parti, per prima cosa la build chiamata Nightly Fabrikam è già stata messa come Favorita, infatti dal menu contestuale possiamo rimuoverla con il comando Remove From Team Favorites. Di fatto le build favorite hanno un posto di particolare importanza nel menu, perché come potete vedere vengono listate prima delle altre ed inoltre abbiamo più dettagli, come ad esempio un piccolo istogramma che fa vedere il risultato delle varie build.

    E’ possibile rendere favorita anche una o più query di Work Item

    image

    Come si può osservare le Team Favorites query sono immediatamente espanse e presentate di default all’utente, in modo che sia possibile con un singolo click eseguirle e poter interagire con i Work Item risultanti. Infine è possibile rendere favorito un percorso del codice sorgente.

    image

    In questo modo possiamo immediatamente ad esempio visualizzare l’history di quel particolare percorso, in modo da capire chi ci ha lavorato. Questa funzionalità è ad esempio molto importante per tenere sotto controllo le branch di rilascio.

    Per ognuno di queste categorie, come potete vedere dalle immagini, è possibile decidere di aggiungere l’oggetto ai propri favoriti oppure ai favoriti di tutto il team. La differenza principale è che tutti gli oggetti che sono Favoriti dall’intero team hanno una tile dedicata in prima pagina e quindi hanno una visibilità molto elevata.

    SNAGHTML110681a

    Per quanto riguarda le tile verdi, esse rappresentano una WI Query, dove il numero indica il numero di Work Item che soddisfano quella determinata query, le tile violette invece rappresentano i check-in recenti fatti nei percorsi del codice sorgente favoriti, ed infine il rettangolo grigio contiene dettagli sulle build favorite. Naturalmente cliccando su una tile si viene subito portati alla sezione di dettaglio dell’oggetto corrispondente.

    In questo modo, grazie al concetto di Favorito, potete dare grande visibilità ad alcune parti del vostro progetto, in modo da avere un colpo d’occhio molto veloce.

    Gian Maria.

  • Il web è un posto strano

    Ogni tanto mi diverto a guardare con i Google Webmaster Tools le query di ricerca che portano ai miei blog, per capire chi arriva cosa sta cercando ed ogni volta rimango sorpreso di vedere che i risultati sono veramente strani.

    Ad esempio delle prime 10 query di ricerca che generano traffico al mio blog italiano, ben 4 portano a questo post dove mi lamento della dogana di Lonate Pozzolo :). Evidentemente il numero di persone inferocite dai pessimi servizi offerti dalla Dogana suddetta (gestita da Poste Italiane) è cosi alto che se voleste generare traffico sul vostro blog, vi consiglio di mettere un post su questo argomento :P :P. E’ anche straordinariamente interessante che se navigate in quel post vedrete google ads pubblicizzare modi di spedire pacchi, troviamo cristef ed altri, ed anche Poste Italiane…. ma per pubblicizzare la sim PosteMobile.. è come se Google avesse capito che in questo post si parla male delle spedizioni delle poste e che quindi decida di pubblicizzare altri suoi servizi :).

    Diciamocelo, il web è proprio un mondo a se ed affascinante Smile.

    SNAGHTML401008

    Alk.

  • Eseguire VSCMD.exe in pc che non hanno visual studio o Sql Server

    Se lavorate con database project e distribuite il dataabse con L’utility a riga di comando vsdbcmd.exe potreste trovarvi su di un PC che non ha installato ne Visual Studio ne SQL Server, e quindi l’utility fallisce con errori strani, che solitamente riguardano l’impossibilità di caricare alcuni assembly particolari.

    Ad esempio se usate il vsdbcmd.exe per generare la struttura di database on the fly per unit-testing volete magari eseguire i test in un build server dove non è mai stato installato SQL Server. In generale le istruzioni su quello che bisogna installare lo trovate in questo link (http://msdn.microsoft.com/en-us/library/dd193258.aspx) dove vi viene spiegato dettagliatamente cosa dovete installare. Solitamente quello che manca sono i client tools ed i management object di SQL Server R2 (li trovate qui, scorrete la lista, http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=16978) e poi vi manca solitamente il sql server compact 3.5, che ATTENZIONE, in un sistema 64 bit per funzionare ha bisogno di entrambe le versioni. (http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=5783)

    A questo punto vsdbcmd.exe dovrebbe funzionare perfettamente.

    Gian Maria

  • What's new in Visual Studio 11 beta for SharePoint developers (grazie a SharePoint Europe)

    Ieri sera è stato pubblicato un mio articolo riguardo le novità presenti all'interno di Visual Studio 11 per noi sviluppatori SharePoint all'interno del sito Community della SharePoint Europe , la conferenza europea di SharePoint la cui prossima...
  • Puntare un build server di TFS ad un source control proxy

    Nel precedente articolo ho mostrato come configurare un TFS PRoxy per diminuire il consumo di banda verso l’istanza di TFS on Azure, questa operazione sicuramente beneficia in particolar modo i build server, perché il loro consumo di banda è notevole, soprattutto se si configurano in modo di resettare il workspace ad ogni build. Una volta che il vostro build server è configurato è sufficiente aprire il Team Explorer ( se non è installato nella macchina lo potete installare dal dvd di TFS), e configurare il proxy direttamente da Visual Studio.

    Per i più temerari in questa pagina è descritto come configurare il proxy direttamente con le chiavi di registro, in questo caso basta andare su HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\TeamFoundation\SourceControl\Proxy ed aggiungere un paio di chiavi come descritto nel post di MSDN.

    image

    Il gioco è fatto, il vostro build server ora beneficierà del ridotto consumo di banda dovuto all’uso del proxy e le build saranno più veloci.

    Gian Maria

  • Forecast nella pianificazione del backlog

    Tra le tantissime funzionalità introdotte con TFS11, sicuramente il nuovo web access spicca su tutto. L’interfaccia è infatti completamente scritta in HTML, completamente asincrona e supporta drag & drop per riordinare i PBI (Product Backlog Item) e per assegnarli ai vari sprint. In questo post però voglio parlare della funzione di Forecast, perchè riveste secondo me un’importanza molto elevata.

    Nelle pianificazioni Agili viene assegnato un numero ad ogni PBI, chiamato Effort. Questo numero non rappresenta ore di lavoro, ma è un valore empirico che il team da ad un PBI per quantificare lo sforzo che si ritiene sia necessario per completarlo. Usualmente questo valore viene assegnato con il Planning Poker, dove ogni persona del team ha un mazzo di carte con varie quantità scritte sopra, e per ogni PBI ogniuno fa la sua stima e mette la carta corrispondente coperta nel tavolo. Quando tutti hanno messo la carta le si scoprono e si effettua un confronto. Questo modo molto semplice e divertente permette però fin da subito di stimare empiricamente la difficoltà di completamento di un PBI. Lo scopo è il confronto, ad esempio se in 5 persone si ha una cosa del tipo: 2, 3, 2, 4, 20, significa che la persona che ha stimato 20 probabilmente è a conoscenza di qualche particolare impedimento o difficoltà che fa si che la sua stima sia molto differente dagli altri e quindi se ne discute.

    Sebbene il valore di Effort sia empirico, iterazione dopo iterazione, sprint dopo sprint, se il team non cambia radicalmente il quantitativo di effort che si riesce a realizzare in uno sprint tende ad assestarsi. Una cosa simile accade quando si stima in maniera classica un progetto, alla fine ci si accorge che si era sottostimato, per cui alla stima successiva, si aggiunge un X% perché: “si era sottostimato la volta precedente, per cui è probabile che si sia sottostimato anche ora”. Nei team agili, il quantitativo di Effort medio che si è realizzato negli sprint passati si chiama velocity.

    Arriviamo quindi alla funzionalità di TFS chiamata “forecast”, che semplicemente fa una previsione (forecast) del backlog basandosi sulla velocity del team.

    image

    In questo esempio potete infatti vedere in alto che le previsioni sono fatte basandosi su una velocità di 10 (presa dai dati storici delle precedenti iterazioni), e la colonna forecast contiene gli sprint in cui si prevede che i vari PBI verranno completati. Questo dato, sebbene come detto basato su un valore di effort empirico, sprint dopo sprint tende ad assestarsi e ad essere quindi molto realistico.

    Naturalmente questo tipo di pianificazione non è relegata solamente al mondo agile o scrum, ma è adatta per qualsiasi processo di tipo iterativo, dove il team si concentra quindi su un certo numero di PBI (feature, request, but, etc) per volta, che vengono portati a compimento iterazione dopo iterazione. L’accento è però sul “portati a compimento” perché sebbene ci sia molto da discutere sul “definition of done”, affinché questo tipo di pianificazione possa funzionare, quando un PBI è considerato chiuso significa che il team non deve più spendere tempo per lavorarci e non debbono esserci attività in sospeso.

    Alk.

  • Configurare un proxy per TFS Service (TFS On Azure)

    La problematica maggiore nell’usare TFS on Azure può essere rappresentata dalla banda disponibile, che naturalmente è, soprattutto nel nostro Italico suolo, una risorsa che può essere scarsa. Per quanto riguarda la parte web, ho già fatto vedere nei corridoi durante i Community Days, che utilizzando una normale connessione 3G di un cellulare, si può lavorare senza problemi e l’interfaccia è responsiva e veloce, chiaramente il discorso è completamente differente quando parliamo di source code.

    Quando gli sviluppatori fanno check-out e check-in l’occupazione di banda è determinata dall’entità dell’operazione, e sebbene i file sorgenti siano solitamente piccoli file di testo, nel source control ci vanno messe anche le librerie, gli installer delle librerie di terze parti, etc etc, per questa ragione si rischia che il consumo di banda tra la propria organizzazione ed il TFS on Azure possa diventare un problema nell’utilizzo di tutti i giorni. La soluzione più evidente a questo problema è utilizzare un TFS Proxy Server, che permette di ridurre la banda utilizzata costituendo di fatto una cache locale verso il server remoto. Una volta installato TFS in una macchina potete configurare un proxy in pochi passi.

    Aprite la Team Foundation Server Administration console, localizzate il nodo Proxy Server e procedete alla configurazione

    image

    La prima schermata è di riepilogo e serve principalmente a spiegare all’utente a cosa serve un proxy server, come potete leggere il suo scopo è proprio ridurre la banda in download tra un TFS remoto ed il vostro ufficio. Si parla di banda in download perché le operazioni di upload (come i check-in) non sono cachate dal proxy. Questa non è però una limitazione, perché il consumo di banda per il source control è principalmente in download.

    image

    Dopo un ulteriore schermata con informazioni più dettagliate vi verrà chiesta la Project Collection su cui volete far puntare il proxy.

    image

    A questo punto dovete specificare l’utente che verrà utilizzato per far girare il servizio di proxy, potete chiaramente accettare le impostazioni di default che utilizzano il local service

    image

    A questo punto bisogna specificare la cartella locale che il proxy utilizzerà come cache

    image

    Tutto è pronto, basta eseguire la verifica e la configurazione ed il vostro proxy server è bello e pronto per essere utilizzato.

    image

    Come potete vedere le operazioni per creare un proxy sono molteplici, ma il wizard permette una configurazione del tipo next –> next –> next, l’unica informazione che dovete specificare voi è la project collection, tutto il resto è fatto automaticamente dal wizard della console di configurazione. Al termine dovreste vedere una configurazione di questo tipo

    image

    L’aspetto interessante è che il wizard si occupa anche di ottimizzare il sistema proxy, ad esempio in questo caso è stata abilitata la compressione in IIS per il contenuto dinamico, in realtà le configurazioni sono molte, ma dato che questa impatta tutti i siti che sono in Hosting su IIS vi viene comunicata al termine dell’installazione. A questo punto il proxy è pronto per essere utilizzato, andate nelle opzioni del source control ed indicate l’indirizzo del vostro proxy.

    image

    A questo punto potete fare una semplice prova, prendete e fate un Get Specific Version chiedendo di sovrascrivere tutti i file locali, cosi forzate uno scaricamento completo della solution, andate nella cartella di cache del proxy e dovreste vedere i file. Una volta terminata questa operazione potete rifarla una seconda volta e vedere che in questo caso la velocità di scaricamento è nettamente maggiore perchè i file sono serviti dal proxy.

    Gian Maria.

  • Evitate di far partire Visual Studio come amministratore

    E’ sempre una buona pratica di sicurezza non far partire Visual Studio come amministratore, una delle ragioni che sento più spesso è che non è possibile hostare una applicazione WCF in console per questioni di permessi di apertura porte. E’ possibile evitare anche in questo caso le credenziali amministrative, semplicemente dando all’utente corrente il diritto di aprire quella porta con il comando

    netsh http add urlacl url=http://+:8000/ user=gianmaria.ricci

    In questo caso sto chiedendo al mio sistema di dare il permesso a gianmaria.ricci di fare un endpoint http in porta 8000, ora potete aprire il vostro VS senza essere amministratori ed il vostro servizio WCF in console funzionerà magicamente.

    Gian Maria.

  • Visual Studio 11 ed il nuovo team explorer asincrono

    Una delle grandi novità di VS11 è che molte operazioni lanciate con la UI sono ora effettuate in maniera asincrona; stamane stavo facendo check-in su TFS Service on Azure di un progetto di test con alcune librerie, operazione che ha richiesto circa 10 minuti a causa della banda in uscita limitata.

    image

    L’aspetto interessante è che il check-in è ora asincrono, ovvero VS lo effettua in background, come potete vedere dalla figura sopra in cui trovo scritto Checking in 130 items e sotto ho la progress bar che mi indica la percentuale di completamento. Dato che l’operazione è in background posso premere il tasto "Back” e continuare ad usare il Team Explorer normalmente, mentre il mio check-in sta andando in Background.

    image

    Posso ora fare query sui work item, oppure continuare a scrivere codice e lavorare senza problemi senza dovere attendere il completamento dell’operazione di check-in. Sarete contenti di sapere che molte operazioni sono ora effettuate in questo modo, aumentando quindi la responsività generale della IDE.

    Gian Maria.

  • Gestire le build di TFS dal Web

    Una volta che avete installato il vostro build server che punta ad un istanza di TFS on azure, o ad una vostra istanza di TFS on premise, potete gestire le build direttamente dall’interfaccia web, grazie alla nuova WebUi di TFS completamente riscritta. Come potete vedere dalla figura sottostante è possibile visualizzare tutte le build ed il risultato delle ultime build direttamente da web.

    image

    Facendo click con il tasto destro su una build, ad esempio “first build test” avete un comodo menu contestuale per poter accodare una nuova build.

    image

    image

    Potete cambiare la quality della build, cancellarla, etc. Quello che non potete fare per ora è crearne una nuova, operazione che però è abbastanza rara e può tranquillamente mancare dall’interfaccia web ed essere disponibile solamente nel client Visual Studio. E’ però possibile aggiungere una build ai favorities dell’utente o dell’intero team project

    image

    Aggiungere qualcosa ai favorities del team (è possibile infatti marcare come favorito anche un work item, etc), indica al TFS che siamo particolarmente interessati a quella build, che verrà quindi evidenziata il più possibile nell’interfaccia. Per prima cosa le build favorite sono evidenziate in una apposita sezione nella pagina delle build

    image

    Come potete vedere mi viene subito rappresentato lo stato della build che attualmente è “partially succeeded” (ho fatto fallire un unit test appositamente) , e posso anche vedere che ci sono state tre build riuscite ed una parzialmente riuscita dalle barrette verticali a destra. Tutti gli oggetti che sono marcati come favoriti in un team project hanno anche un posto d’onore nella home page del progetto.

    image

    Come potete vedere ora nella home page ho una bella tile in stile metro che mi evidenzia lo stato di tutti gli oggetti favoriti, in questo caso la build. Cosi facendo possiamo avere un immediato colpo d’occhio sullo stato di tutte le build che riteniamo importanti e dato che questa è una interfaccia web, lo abbiamo disponibile praticamente ovunque, anche nel proprio smartphone. La tile inoltre è un link HTML alla pagina che lista i risultati di tutte le esecuzioni di quella particolare build, per cui una volta li potete aprire la build che fallisce e capirne immediatamente le ragioni

    image

    Queste semplici funzionalità, possono aumentare drasticamente la visibilità che si ha sull’intero progetto.

    Gian Maria.

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