in

DotNetMarche

.NET Framework User Group delle Marche

This Blog

Syndication

ExternalBlogs

May 2011 - Posts

  • Opinioni dopo neanche una settimana di SSD

    Cosa posso dire, solo

    come ho fatto a vivere senza!!!

    A parte gli scherzi, sono sempre stato appassionato di hardware e ho sempre cercato di avere configurazioni decisamente spinte, soprattutto ora che l’informatica è un lavoro e non più solo una passione. Avendo vissuto tutta l’evoluzione dell’hardware chi è più verso I 40 come me, non può non avere notato come lato CPU, RAM, GPU si sia sempre rispettata (più o meno) la Legge di moore, mentre per gli Hard Disk questo non è vero.

    Ricordo almeno 10 anni fa quando I dischi 7200 RPM garantivano un notevole incremento di prestazioni, poi sono arrivati I 10 e 15k (SCSI), ma la sostanza è che la meccanica non avanza cosi veloce come l’elettronica, quindi I dischi sono diventati il collo di bottiglia dei nostri sistemi.

    Un SSD invece è basato su silicio, per cui beneficia dell’evoluzione tecnologica costante della tecnologia CMOS, ora che i 3D transistors non sono più un sogno, vedremo chip sempre più efficienti e ancora più veloci, per questo l’Hard Disk SSD potrà beneficiare come le altre componenti di un evoluzione che seguirà più o meno la legge di moore.

    Dopo avere preso un SSD per la mia workstation, ho notato che è uscito il nuovo Vertex 3, cosi ho comperato un Vertex 2 per 166€ ivato per il portatile, perchè anche se uso pochissimo il portatile, le performance che ho visto nella workstation mi hanno convinto che non è più possibile nel 2011 avere in un pc una parte meccanica.

    Insomma, anche se leggendo in giro si può notare come la tecnologia SSD ancora presenti qualche problema non se ne può fare a meno.

    Il consiglio per chiunque legga questo post è di spendere qualche soldino e provare sulla sua pelle la differenza Smile

    alk.

  • Team Members

    Eccoci arrivati a discutere di un’altra funzionalità dei Power Tools di TFS, chiamata “Team Members”, essenzialmente un addin per Team Explorer che aiuta a gestire la comunicazione nel team. Nella documentazione trovate tutte le informazioni necessarie, ma vorrei darvi qui un’idea delle funzionalità contenute.

    Di base questo addin ha lo scopo di migliorare la comunicazione tra i membri del team, sia con strumenti di Instant Messaging (Es. Office Communicator o Messenger) ed e-mail, oltre a fornire alcune importanti semplificazioni nell’esecuzione di operazioni legate agli utenti.

    Una volta configurati gli utenti è possibile effettuare ad esempio click con il tasto destro su un utente e se la persona è online sono visibili alcune informazioni interessanti, tra cui iniziare una comunicazione audio, video, inviare una mail o un messaggio con il client di instant messaging. Un’altra semplificazione è la possibilità, sempre nello stesso menu contestuale, di visualizzare la history dei check-in di quell’utente, o i suoi shelves, o addirittura vedere la lista di file che sono in pending changes.

    Un’altra funzione interessante è la possibilità di creare Workspace Templates, ovvero configurazioni di workspace che possono essere salvate e utilizzate da ogni membro del team.

    In progetti complessi dove si utilizzano strategie di branch avanzate il mapping può diventare complesso e soprattutto si rischia di mappare troppi sorgenti (es tutte le branch). Con questo addin potete invece semplicemente creare più template, es. WorkspaceTrunk, WorkspaceFeatureXyz, in modo da rendere semplice gestire la creazione di un nuovo workspace.

    Un’altra funzionalità molto interessante è anche quella di eseguire query contestuali con il contesto di un altro utente, ad esempio poter selezionare l’utente XYZ ed eseguire la query “My work items” come se la stesse eseguendo l’utente XYZ.

    Infine è anche possibile gestire il deploy dei custom components (Es. check in policies, o user controls per i work items) sempre grazie alla configurazione dei team members, che presentano nelle opzioni una semplice checkbox indicante “install downloaded custom components”.

    Consiglio caldamente di leggere attentamente tutta la doc a riguardo :)

    alk.

  • Async CTP refresh

    Debbo dirlo, sono un appassionato dell’Async CTP ed una delle cose che mi piace di più è che appena installato hai subito la possibilità di vedere degli esempi di codice, tra cui il mitico 101 c# async samples. (lo trovate tra i samples, uno degli aspetti più interessanti è che di esempi ce ne sono veramente tanti)

    La cosa interessante di questo esempio è che mostra come una certa operazione asincrona può essere fatta con l’aiuto di async e come invece la faremmo in C# 4.0, questo fa capire veramente bene come il codice sia veramente molto, ma molto più semplice. Per esempio quando facciamo una richiesta con un WebRequest è buona norma farla asincrona.

       1: public void AsyncIntroSingleBefore()
       2: {
       3:     var client = new WebClient();
       4:  
       5:     client.DownloadStringCompleted += AsyncIntroSingleBefore_DownloadStringCompleted;
       6:     client.DownloadStringAsync(new Uri("http://www.weather.gov"));
       7: }
       8:  
       9: void AsyncIntroSingleBefore_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
      10: {
      11:     WriteLinePageTitle(e.Result);
      12: }

    Ok il codice non è molto, basta gestire un evento e usare il DownloadStringAsync, ed il gioco è fatto… ma con l’Async CTP è molto più semplice.

       1: public async void AsyncIntroSingle()
       2: {
       3:     WriteLinePageTitle(await new WebClient().DownloadStringTaskAsync(new Uri("http://www.weather.gov")));
       4: }

    Non si può non apprezzare il codice molto più coinciso. Ma la vera potenza è quando dovete fare piu operazioni asincrone, ad esempio caricare tre pagine in sequenza

       1: public async void AsyncIntroSerial()
       2: {
       3:     var client = new WebClient();
       4:  
       5:     WriteLinePageTitle(await client.DownloadStringTaskAsync(new Uri("http://www.weather.gov")));
       6:     WriteLinePageTitle(await client.DownloadStringTaskAsync(new Uri("http://www.weather.gov/climate/")));
       7:     WriteLinePageTitle(await client.DownloadStringTaskAsync(new Uri("http://www.weather.gov/rss/")));
       8: }

    o ancora meglio, in parallelo.

       1: public async void AsyncIntroParallel()
       2: {
       3:     Task<string> page1 = new WebClient().DownloadStringTaskAsync(new Uri("http://www.weather.gov"));
       4:     Task<string> page2 = new WebClient().DownloadStringTaskAsync(new Uri("http://www.weather.gov/climate/"));
       5:     Task<string> page3 = new WebClient().DownloadStringTaskAsync(new Uri("http://www.weather.gov/rss/"));
       6:  
       7:     WriteLinePageTitle(await page1);
       8:     WriteLinePageTitle(await page2);
       9:     WriteLinePageTitle(await page3);
      10: }

    Vale la pena decisamente di studiarci sopra Smile

    alk.

    Tags:

    DotNetKicks Image
  • Office 365 browsers compatibility

    Come sapete, è da poco pubblica la beta di Office 365! Il che vuol dire che voi potete accedervi facendo richiesta e che io invece posso finalmente fare uno screenshot e pubblicarlo sul sito! :) Attualmente, tutti gli applicativi software esposti dalla...
  • Sapevatelo&ndash;TFS API e tools esterni

    Una delle frustrazioni maggiori è scoprire che il tool che si utilizza per gestire l’ALM non soddisfa le proprie esigenze, per cui spesso molto tempo va speso prima di scegliere il tool o i tool da adottare.

    In Tfs è presente un ObjectModel (e quindi API pubbliche) che permette di interagire con tutte le sue funzionalità per estenderne le capability. In questo modo è possibile realizzare tool che soddisfino esattamente le proprie esigenze. (oltre alla customizzazione del template).

    Questo ci garantisce che se abbiamo scelto TFS non siamo assolutamente “ingabbiati” nei suoi tool o ad operare con le sue interfacce. Potete vedere alcuni esempi negli articoli di Massimo, ma qualcuno potrebbe pensare “Non ho il tempo di scrivermi un tool” per cui delle API pubbliche me ne faccio ben poco.

    Questo è sbagliato, perché se non siete voi a scrivere i tool, potete cercare tra i molti tool aggiuntivi che si trovano per TFS sparsi in giro, molti dei quali gratuiti. Tra i tanti oggi voglio segnalarvi AIT Taskboard.

    image

    Figura 1: La dashboard in azione

    Non voglio soffermarmi in troppe spiegazioni, il tool è molto semplice, si installa con click once ed è molto intuitivo. Ad esempio in Figura 2 potete vedere come con pochi click potete inserire le ore di lavoro fatte

    image

    Figure 2: Come inserire le ore fatte direttamente dalla taskboard.

    Avete inoltre la possibilità di aprire i report direttamente dal tool, per una reportistica più agile.

    Questo dimostra chiaramente come TFS sia più un ecosistema/piattaforma piuttosto che un tool e che è possibile estenderlo per adeguarlo alle proprie necessità. Per questo prima di abbandonare l’idea di adizione di TFS perchè magari non supporta una taskboard agile come piace a voi, datevi uno sguardo in giro, perchè non è detto che qualcuno non la abbia fatta per voi.

    alk.

    Tags:

    DotNetKicks Image
  • [DotNetMarche] 19&deg; Workshop &quot;Community Tour 2011 - CMS Edition&quot;

    19° Workshop "Community Tour 2011 - CMS Edition"
    Venerdì 27 Maggio 2011

    Sede: Università di Ancona - Polo Montedago, Aula 160/3

    Nel mondo dei CMS (Content Management System) in ambiente .NET le possibili soluzioni a disposizione sono molte ed è spesso necessario valutare attentamente quale adottare per soddisfare al meglio le proprie esigenze.
    Data la recente uscita di Orchard, un prodotto open-source interessante dal punto di vista architetturale e delle potenzialità che offre, il cui sviluppo è gestito dalla community con il supporto di Microsoft stessa, DotNetMarche ha deciso di dedicare la tappa del Community Tour 2011 ad una panoramica su alcuni dei principali CMS disponibili indirizzati agli sviluppatori .Net.

    L'evento è costituito da più track: dopo un’introduzione comune al nuovo CMS, Orchard, ci si dividerà in tre sale: nella prima si continuerà con Orchard, approfondendolo dal punto di vista dello sviluppatore, mentre nelle altre due si avranno sessioni su SharePoint 2010 e DotNetNuke / OpenWebStudio. I relatori saranno inoltre disponibili per un “Ask The Expert” che permetterà di chiarire eventuali dubbi sui CMS in questione.

    La partecipazione al workshop è gratuita! Per visionare l'agenda completa ed iscriverti, vai a questa pagina.


    Evento "Incontri Tecnologici: soluzioni per la virtualizzazione"

    La stessa mattina, nei medesimi locali, si svolgerà un evento gratuito sulla virtualizzazione per IT-PRO.

    L'agenda completa è disponibile qui!

  • Sapevatelo &hellip; uso del comando tf destroy

    Le buone pratiche di uso del source control indicano che è consigliabile inserire nel VCS tutti i file che possono essere necessari per una build. Questo implica che andremo ad includere anche file binari, tools, eseguibili, che naturalmente occupano spazio nel db.

    La tipica situazione è quella di tutti gli assembly delle librerie dipendenti, ad esempio supponiamo di avere il file Castle.Core.Dll nella cartella Dependencies. Durante lo sviluppo questo file verrà aggiornato seguendo le release della libreria e questo aggiornamento può avvenire anche spesso se si ha l’abitudine di lavorare con le trunk delle librerie open source. Quello che accade però è che stiamo occupando spazio nel database per file che probabilmente non sono più necessari.

    In Tfs è presente il comando tf destroy che permette di cancellare definitivamente gli elementi dal VCS.

    Ad esempio se io voglio tenere solamente l’ultima versione di un file binario potrei scrivere

    tf destroy /keephistory /collection:http://WIN-GS9GMUJITS8/tfs/defaultcollection /preview "$/Tailspin Toys/Main/Dependencies/Castle.Core.dll"

    L’output di questo comando è il seguente

    in/Dependencies/Castle.Core.dll"
    Do you want to destroy $/Tailspin Toys/Main/Dependencies/Castle.Core.dll and all
    of its children? (Yes/No) y
    Destroyed: $/Tailspin Toys/Main/Dependencies/Castle.Core.dll

    Il risultato è questo, quando andiamo a fare un get latest del file non abbiamo nessun problema, ma se tentiamo di recuperare una vecchia versione

    SNAGHTML71e4a5

    Figura 1: Tentando di recuperare un elemento dalla history che non è l’ultimo, si ha un errore, perchè gli elementi sono stati completamente rimossi dal database del source control.

    Quindi abbiamo ottenuto il nostro scopo, liberare spazio nel source control,  ma mantenere l’ultima versione.

    alk.

    Tags:

    DotNetKicks Image
  • Sapevatelo Tfs &hellip; Disabilitare il merge per tipi specifici di file

    I progetti non sono composti di soli file sorgente cs o vb, talvolta vi si trovano file in formato XML oppure altre tipologie di file su cui è difficile, o quasi impossibile effettuare una merge. Un esempio classico è il designer di Entity Framework, basta aprire un file edmx e spostare un’entità in giro per fare automaticamente il check-out e se qualcun’altro ha fatto la stessa operazione ci si trova con un conflitto sul file edmx che è praticamente un delirio per fare il merge.

    In Tfs esiste una configurazione a livello di Team Project Collection che permette di selezionare tutte le estensioni dei file per cui non si vuole abilitare la merge e quindi impedire il check-out multiplo.

    Per fare questo il primo passo è aprire la form di configurazione dal team explorer, tasto destro sulla collection e poi “team project collection settings” –> “Source Control File Types”

    image

    Figura 1: Aprire il pannello di configurazione per i Source Control File Types

    A questo punto si apre una finestra in cui sono listate tutte le estensioni di file che TFS ha di default, si può quindi cliccare add ed aggiungere l’estensione per i file di desginer di EF.

    image

    Figura 2: creare una nuova estensione, togliere il segno di spunta sull ‘”enable file merging…”

    A questo punto vi dovreste trovare nella situazione di Figura 3.

    image

    Figura 3: Ora l’estensione edmx ha il File Merging disabilitato

    Quello che succede è che se se proviamo a modificare un file edmx quando qualcun’altro lo ha già messo in check-out

    SNAGHTML1a55ec

    Figura 4: Non è possibile fare il check-out multiplo di file con estensione edmx

    In questo modo chiaramente due persone non possono lavorare sullo stesso file, ma nel caso di formati per cui fare il merge è un’operazione veramente onerosa, è probabilmente una soluzione molto più accettabile di dovere buttare via il proprio lavoro perchè non si riesce più a fare il merge.

    alk.

    Tags:

    DotNetKicks Image
  • Un post veramente interessante

    Non c’è che dire, Eric quasi sempre centra il punto, ma questo post è veramente da far leggere a mio avviso a chiunque gestisca in qualche modo lo sviluppo software, soprattutto in Italia.

    alk.

    Tags:

    DotNetKicks Image
More Posts « Previous page
Powered by Community Server (Commercial Edition), by Telligent Systems