Welcome

This is the generic homepage (aka Aggregate Blog) for a Subtext community website. It aggregates posts from every blog installed in this server. To modify this page, edit the default.aspx page in your Subtext installation.

To learn more about the application, check out the Subtext Project Website.

Powered By:

Blog Stats

  • Blogs - 715
  • Posts - 31120
  • Articles - 310
  • Comments - 108034
  • Trackbacks - 591061

Bloggers (posts, last update)

Latest Posts

Buoni pasto dal 1 Luglio

Ragazzi bisogna diffondere la notizia. La soglia di esenzione fiscale dei ticket restaurant riconosciuti portando il limite di non imponibilità fiscale a euro 7,00 per quelli utilizzati in forma elettronica. Rimane invece invariata la disciplina per i buoni basto cartacei restando fissa a euro 5,29. Il nuovo dettato normativo avrà effetto a decorrere dal 1 luglio 2015. Da oggi, 1 luglio, non sarà più possibile fare la spesa al supermercato utilizzando contemporaneamente più buoni pasto, forniti dal datore di lavoro. MA COME??!?!?!? E I TICKET VECCHI!!!!?!?!? Inoltre l’uso dei ticket, che può riguardare solo le somministrazioni di alimenti e bevande, può avvenire solo durante la giornata lavorativa, anche se domenicale o festiva e i beneficiari non possono essere soggetti diversi dai lavoratori, per cui il buono non può essere ceduto, venduto, né convertito in denaro. Ma soprattutto non può essere cumulato. Ma chi ha deciso la non cumulabilità, la non spendibilità di domenica, uno al giorno? Paperino?

posted @ 01/07/2015 23.13 by Emanuele Prato

La Web European Conference apre la registrazione domani 1 Luglio a mezzogiorno

title

É finalmente arrivato il momento che molti aspettavano: domani, a mezzogiorno, aprirá la registrazione per la seconda Web European Conference.

Nella precidente edizione tutti I 170 biglietti disponibili sono finiti nelle giro di qualche ora: quest’anno abbiamo molti piú posti, oltre 400, ma per essere sicuri di non perdere l’opportunitá, andate alla  pagina di registrazione per tempo.

Registrati per la Web European Conference

Speakers e sessioni

La Call for Presenters verrá chiusa domani, e vi chiederemo un aiuto nel scegliere le sessioni da includere nella conferenza: potete guardare giá tutte le proposte sul nostro repository su github, farvi un’idea e da domani votare per le vostre sessioni preferite.

In aggiunta abbiamo giá i nostri due TOP speakers: Scott Hanselman e Dino Esposito.

speakers

 

Sponsors

Ed infine, un grande grazie agli sponsors e partner, senza i quali la conferenza non sarebbe possibile.

sponsors

 

posted @ 30/06/2015 11.46 by Simone Chiaretta

Amazon e L’IVA

E’ interessante vedere come le notizie vengono prese in modo differente :), dal 1°Maggio Amazon emette fattura italiana, e per me, che sono un’attività, è una notizia veramente interessante.

Prima del 1°Maggio infatti, per acquistare su amazon con partita IVA, bisognava farsi abilitare ad Intrastat (con relative spese del commercialista) e poi si entrava tra l’altro nella lista delle P.IVA che commerciavano con il Lussemburgo. Insomma, l’acquisto come professionista su amazon era veramente sconveniente.

Ora leggo questo articolo su Repubblica (http://www.repubblica.it/economia/2015/05/04/news/amazon_reverse_charge-113480629/?ref=HRLV-6&refresh_ce) e rimango quantomeno sconcertato. Viene detto:

Il problema vero era nell'applicazione pratica. Una volta che un cliente verificava la propria Partita IVA nel suo account - pratica che nei primi anni non era nemmeno troppo rigorosa - qualsiasi prodotto "Venduto e spedito da Amazon" diventava esentasse: scarpe, mobili, giocattoli, videogiochi, televisori, biancheria intima. Senza andare troppo per il sottile, perché ovviamente non sta al venditore verificare che il cliente abbia diritto di acquistare determinati oggetti come beni strumentali alla propria attività.

Ora, io non sono un commercialista e ne capisco poco, ma sostanzialmente questa cosa è palesemente falsa. Quando io abilito la mia P.IVA ad intrastat, e quindi al Reverse Charge, Amazon mi emette una fattura senza IVA, perchè io Debbo dichiararla allo stato e quindi o pagarla (se non è un bene legato alla mia attività) oppure riscaricarla perchè è un bene legato alla mia attività.

Quindi in realtà non è mai stato esentasse, ma, come succede in ItaGlia, il paradiso degli evasori. Questo perchè, se acquisto in reverse charge e non dichiaro nulla allo stato, da quello che so io è evasione di IVA, ed in generale il mio commercialista mi ha detto, in maniera molto chiara: Prima di qualsiasi acquisto in reverse charge, debbo abilitarti la partita IVA e mi raccomando poi, fai attenzione a qualsiasi aquisto fai che possa avere il reverse charge, perchè se non lo dichiari poi sono augelli per diabetici. Quindi il problema non è Amazon.

Quindi mi chiedo, tutti quelli che hanno acquistato da amazon senza iva, e senza dichiarare il reverse charge, il nostro stato non li becca? Non esiste nessun modo? Da noi deve essere sempre il paradiso dei “furbetti” dove qualsiasi legge deve essere aggirata?

Alk.

posted @ 20/06/2015 12.10 by Gian Maria Ricci

WebP : A new image format for the Web

https://developers.google.com/speed/webp/

posted @ 18/06/2015 17.52 by Alessandro Gervasoni

Repository delle mie brame

Qualche tempo fa con un amico si stava discutendo di `Repository Pattern` e di tutto quello che gli gira intorno, tutta la disquisizione ruotava intorno a quale fosse il ruolo di un `repository` in un mondo orientato a CQRS. Siamo dopo un po’ di scambi di opinioni giunti alle seguenti questa conclusioni.

Un repository deve

  1. consentire di caricare un aggregato data la sua chiave primaria;
  2. consentire di aggiungere una nuova istanza di un aggregato;
  3. persistere le modifiche apportate ad un aggregato;
  4. rappresentare una Unit Of Work;

Un repository non deve

  1. consentire di eseguire query di nessun tipo;
  2. forzare la dichiarazione di intenti: Non è responsabilità di chi usa un aggregato sapere se deve persistere o meno delle modifiche, se il repository è una UoW la responsabilità è sua;

Se pensiamo di esprimere i requisiti di cui sopra con del codice C# lo possiamo fare usando la seguente interfaccia ad esempio:

namespace Sample.Repository.Pattern
{
public interface IRepository<T> where T : SomeConstraint
{
void Add(T entity);
T GetById(int Id);
void CommitChanges();
}
}

Che sebbene sembri soddisfare tutti i nostri requisiti non soddisfa il punto ‘4’ delle cose che un repository deve fare: Unit of Work.

Perché?

Provate a pensare come usereste l’interfaccia di cui sopra:

IRepository<Person> peopleRepo = …
 
var aPerson = peopleRepo.GetById( 123 );
aPerson.ChangeName( “new person name” );
 
peopleRepo.CommitChanges();

Se il repository è una UoW non dobbiamo dichiarare che vogliamo aggiornare l’istanza di Person che abbiamo appena modificato, lo sa già quindi ci basta a e avanza dichiarare che vogliamo salvare, CommitChanges().

Ma, osservate il seguente scenario:

IRepository<Person> peopleRepo = …
IRepository<Company> companiesRepo = …
 
var aPerson = peopleRepo.GetById( 123 );
aPerson.ChangeName( “new person name” );
 
var aCompany = companiesRepo.GetById( 456 );
aCompany.RegisterVATNumber( “vat number” );
 
peopleRepo.CommitChanges();
companiesRepo.CommitChanges();

Non è più una singola Unit Of Work e l`unico che abbiamo per garantire l’atomicità delle operazioni di cui sopra è racchiudere il codice in un blocco `using` con un `TransactionScope`.

Sebbene non sia un gran problema, e non è neanche sbagliato, la cosa che ci sta forzando ad andare in quella direzione non è l’architettura ma meramente la scelta di design che abbiamo fatto per l’API del nostro repository.

Se lo disegnassimo così?

namespace Sample.Repository.Pattern
{
public interface IRepository
{
void Add<T>(T entity) where T : SomeConstraint;
T GetById<T>(int Id) where T : SomeConstraint;
void CommitChanges();
}
}

La modifica è in apparenza banale, ci siamo limitati a spostare i generics dalla dichiarazione dell’interfaccia ai singoli membri della stessa, con la differenza fondamentale che adesso possiamo scrivere questo:

IRepository repo = …
 
var aPerson = repo.GetById<Person>( 123 );
aPerson.ChangeName( “new person name” );
 
var aCompany = repo.GetById<Company>( 456 );
aCompany.RegisterVATNumber( “vat number” );
 
repo.CommitChanges();

Che oltre a farci risparmiare un apio di righe di codice, ma chi se ne frega, ci permette di soddisfare elegantemente anche il punto “4”.

Volete vederlo in azione?

.m

posted @ 17/06/2015 9.44 by Mauro Servienti

Clusterize.js

Tiny plugin to display large data sets easily

 

https://nexts.github.io/Clusterize.js/

posted @ 16/06/2015 16.21 by Alessandro Gervasoni

Un piacevole ebook sul Social Media

Il nuovo e-book di Valentina Turchetti, edito da Area51 Publishing, vuole proprio fare chiarezza e fornire strategie e tattiche utili ad imprenditori, manager, liberi professionisti, aspiranti consulenti web per attuare una comunicazione online vincente e presenziare i Social Media efficacemente.

Grazie a numerose case history e casi studio tratti dall’esperienza professionale quotidiana dell’autrice, l’e-book assume un connotato estremamente concreto: non si tratta di un manuale teorico, ma di una guida pratica che illustra, passo dopo passo, capitolo dopo capitolo, quali sono le attività, le opportunità, le sfide che chi lavora nel Social Media Marketing si trova, ogni giorno, a dover affrontare.

L’e-book Social Media Marketing. Strategie per costruire e gestire efficacemente la tua Comunicazione sui Social Media è suddiviso in cinque capitoli:

1.    Social Media Marketing: cosa c’è da sapere.

2.    Il Listening: prima si ascolta, poi si agisce.

3.    Content Creation & Management

4.    Community Management e Brand Reputation

5.    Digital P.R.

 

Un E-book innovativo nel suo genere, che non vuole essere un semplice manuale teorica, ma una guida pratica per presenziare efficacemente i Social Media.

L’E-book in Social Media Marketing è acquistabile su Amazon a soli € 4,99: ACQUISTA ORA!

Autore: Valentina Turchetti
Casa Editrice: Area51 Publishing – Web Marketing Edizione
Pagine: 187
ASIN: B00WT4CUGW
ISBN: 978-88-6574-713-1

ebook-socialmedia

Informazioni e Contatti
Valentina Turchetti
valentina@seobuzz.it
www.seobuzz.it

posted @ 15/06/2015 13.42 by Marco Maltraversi

Corso su windows 10 in Microsoft Virtual Academy

Su Microsoft Virtual Academy è ora disponibile un corso su Distribuzione, gestione e sicurezza per Windows 10. Potete trovarlo a questo indirizzo.

http://www.microsoftvirtualacademy.com/training-courses/windows-10-distribuzione-gestione-e-sicurezza-del-nuovo-sistema-operativo

Buona visione.

posted @ 13/06/2015 10.02 by Gian Maria Ricci

phantomjs


http://phantomjs.org

PhantomJS is a headless WebKit scriptable with a JavaScript API. It has fast and native support for various web standards: DOM handling, CSS selector, JSON, Canvas, and SVG.

Recentemente l'ho utilizzo per effettuare dei test/monitoraggi su di un portale è molto semplice da utilizzare , in ambiente window l'exe phantomjs.exe puo lanciare dei semplici file .js es

var page = require('webpage').create(); 
var
fs = require('fs');
page
.open('https://www.somesite.com/test.html',
function () {
page
.evaluate(function(){ });
page
.render('export.png');
fs
.write('test.html', page.content, 'w');
phantom
.exit();
});

posted @ 12/06/2015 9.10 by Alessandro Gervasoni

Kanban Board e Swim lanes

Nell’ultimo update di Visual Studio online è stata introdotta una nuova migliora per la Kanban Board, ovvero l’implementazione delle Swim Lanes. In una Kanban Board infatti la suddivisione in colonne permette di visualizzare immediatamente il “work in progress” per tutti gli stadi di sviluppo, ma nelle varie colonne non esiste differenza nella priorità delle card. Questo significa che se nella colonna Testing vi sono 4 card una sotto all’altra non implica, come per un backlog, che le card in alto sono in qualche modo più importanti o prioritarie delle altre.

In alcune situazioni è però comodo poter dare priorità ad alcune card, indicando appunto che il team deve in qualche modo focalizzarsi nel fare avanzare alcune card rispetto ad altre. Un esempio pratico potrebbe essere costituito da una card che rappresenta un bug bloccante in produzione. Quando si verifica un bug bloccante in produzione, molto probabilmente tutto il team deve collaborare per far si che il bug sia corretto nel minor tempo possibile e quindi la card (o le card) che sono collegate al bug debbono avanzare con priorità rispetto alle altre.

Per visualizzare in maniera chiara ed evidente questo fatto, è comodo avere nella board delle suddivisioni orizzontali, in modo da suddividere la board in più fasce orizzontali. In realtà la fascia principale, rimane la board come la si conosce, mentre le fasce aggiuntive sono appunto dette Swim Lanes e servono appunto a raccogliere particolari card che debbono essere gestite con priorità differente rispetto al resto.

image

Nella swimlane le colonne sono esattamente le stesse della board principale, dato che ogni card ha comunque un percorso ben definito nella vostra organizzazione. In generale la visualizzazione normale della board può mantenere la SvimLane collassata, dato che appena qualcuno vi sposta dentro un item è possibile comunque visualizzare nell’header quante carte sono presenti per ogni colonna.

image

In questo modo, anche se la SwimLane priorità massima è normalmente collassata per non sprecare spazio, appena un elemento vi viene spostato l’header cambia e si può quindi espandere la SwimLane per visualizzare le card che in questo caso hanno Priorità Massima.

La regola di base è non abusare delle Swim Lanes, se il PM o chi per lui si abitua ad inserire frequentemente molte card in Priorità Massima, il team inizierà a considerare le card in Priorità Massima come tutte le altre e quindi si perde il significato originale. D’altra parte far lavorare un team sempre “in emergenza” è il modo migliore per diminuire le performance del team stesso.

Come ultima nota, si può verificare che le card poste nelle swim lanes vanno a sommarsi al conteggio totale delle card nelle varie colonne. Questo significa che se il Work In Progress Massimo per la colonna di testing è 4 e vi sono all’interno già 4 card, in teoria non sarebbe possibile spostare una card in Testing nella swimlane di Priorità Massima. Nella pratica, se la Swim Lane è usata con cognizione di causa e contiene solamente gli elementi con reale Priorità Massima, si può eccedere il WIP nelle varie colonne. Se la colonna di testing è piena ma è necessario fare una verifica per una patch di un bug bloccante in produzione, si può tranquillamente pensare che il team di testing dedichi risorse al bug bloccante, trascurando le card su cui stava lavorando attualmente.

Chiaramente deve essere chiaro che questa violazione del Work In Process può avvenire solamente per le Swim Lanes associate ad eventi eccezionali e non può costituire la normalità. Se i bug bloccanti diventano molto frequenti (la speranza è che questo non accada, ma potrebbe avvenire), significa che la Swim Lane di Priorità Massima è spesso piena di card, a questo punto il team potrebbe decidere di lasciare costantemente uno slot libero in ogni colonna, dato che la probabilità di avere un elemento nella Swim Lane è grande. D’altra parte in caso di frequenti bug bloccanti, è doveroso lasciare il team scarico in modo da poter affrontare i bug velocemente.

Gian Maria.

posted @ 08/06/2015 19.10 by Gian Maria Ricci

The Top 10 Mistakes AngularJS Developers Make

https://www.airpair.com/angularjs/posts/top-10-mistakes-angularjs-developers-make

posted @ 04/06/2015 9.19 by Alessandro Gervasoni

JSON Support in SQL Server 2016

http://blogs.msdn.com/b/jocapc/archive/2015/05/16/json-support-in-sql-server-2016.aspx

posted @ 29/05/2015 14.17 by Alessandro Gervasoni

Notifica al garante per la legge sui Cookie

In caso di utilizzo di cookie di profilazione di prime parti, cioè ad opera del sito stesso, vi è un obbligo di notifica al Garante, ai sensi dell'art.37 comma 1, lett (d) del Codice della Privacy.
La notifica va effettuata per via telematica.
ogni notificazione inviata al Garante (prima notificazione, 
modifica o cessazione del trattamento) deve essere
accompagnata dal pagamento dei diritti di segreteria,
il cui importo è fissato in euro 150,00.
 In caso di cookie di profilazione di terze parti non sarà necessario provvedere alla notificazione, dato che le modalità e le finalità del trattamento perseguite non rientrano nel controllo di quest’ultimo. Unica eccezione il caso in cui il medesimo soggetto possa effettivamente accedere ai dati raccolti in forma disaggregata dai cookie.
Technorati tags: ,

posted @ 29/05/2015 10.55 by Emanuele Prato

Interactive Javascript Maps



http://www.amcharts.com/javascript-maps

Our JavaScript / HTML5 mapping library will help you to create interactive, animated maps and display them in your web sites or web applications.

posted @ 27/05/2015 10.28 by Alessandro Gervasoni

lodash

https://lodash.com
A JavaScript utility library delivering consistency, modularity, performance, & extras.

posted @ 26/05/2015 17.31 by Alessandro Gervasoni

Radical => WPF Drag&Drop to the max

Per un programma che sto sviluppando in questi giorni mi sono trovato a dover gestire il drag&drop tra controlli WPF.

Ho deciso di utilizzare il Framework Radical di Mauro Servienti per implementare il pattern MVVM nella mia applicazione desktop.

Il programma è una sorta di designer che posiziona elementi (raffigurati da rettangoli) su una superficie piana. Gli elementi possono essere posizionati o attraverso il drag&drop, o attraverso un doppio click sull’elemento stesso.

Nel codice sorgente che trovate allegato vi ho creato la stessa situazione, in una versione semplificata, utile a capire come Radical permette di gestire la cosa con poche righe di codice.

Iniziamo installando l’estensione Radical Templates che aggiungerà i Radical Project Templates a Visual Studio. In questo modo sotto i templates per i progetti Windows Desktop troveremo una sottocartella con i template per Radical che creeranno per noi una nuova soluzione già funzionante che implementa questo framework. L'estensione per Visual Studio non è un requisito ma una semplice comodità per essere operativi in meno tempo.

Il framework utilizza le convenzioni per facilitarci l’utilizzo del pattern MVVM, quasi senza accorgerci di utilizzarlo.

Non è questo il post dove sviscerare tutte le feature, di cui vi è ampia documentazione, di questo framework, ma guardando il sorgente noterete come risulta veramente facile ed espressivo, senza avere un mucchio di codice per la comunicazione tra View e ViewModel, che in soluzioni non banali genera solo molto “rumore”.

Passiamo alla gestione del Drag&Drop:

dopo aver aggiunto il riferimento ai behaviors:

xmlns:behaviors="http://schemas.topics.it/wpf/radical/windows/behaviors"

basterà aggiungere le Attached Properties “behaviors:DragDropManager.DataObject” e “behaviors:DragDropManager.DataObjectType” al controllo da cui partiamo con il drag, mentre dovremo aggiungere la gestione del DropCommand sul controllo che subirà il drop con questa semplice riga di codice:

behaviors:DragDropManager.OnDropCommand="{markup:AutoCommandBinding Path=DropItem}"

Grazie a Radical, “DropItem” è seplicemente una funzione void del ViewModel che si preoccupa di gestire il drop dell’elemento.

Poiché volevo rendere evidente dove sarebbe stato depositato l’elemento, ho aggiunto la gestione di altri due eventi:

behaviors:DragDropManager.OnDragEnterCommand="{markup:AutoCommandBinding Path=DragEnter}"  
behaviors:DragDropManager.OnDragLeaveCommand="{markup:AutoCommandBinding Path=DragLeave}"

Che permettono di gestire l’ingresso e uscita dal controllo, rendendo evidente, con un altro colore, dove sarà depositato l’elemento.

Ah… mi sono dimenticato… per la gestione del doppio click basta un’altra riga di codice:

behavior:ListViewManager.ItemDoubleClickCommand="{markup:AutoCommandBinding Path=ListViewDoubleClick}"

Insomma, se guardate il codice c’è più codice nello XAML dei controlli che per l’implementazione di MVVM con Radical, ma volevo farvi assaggiare le potenzialità di questo framework in un'applicazione per lo meno “non banale”.

Il sorgente di esempio lo trovate al seguente indirizzo: http://1drv.ms/1Ar8dD6

Spero di aver stuzzicato la vostra curiosità e, se vi ho incuriositi, volentieri posterò altro su Radical. Winking smile

P.S. un grazie speciale a Mauro per il supporto! Smile

Technorati Tags: ,,

posted @ 26/05/2015 13.10 by Nazareno

Loaders.css

http://connoratherton.com/loaders
Delightful and performance-focused pure css loading animations.

posted @ 22/05/2015 8.29 by Alessandro Gervasoni

Surface 3, primo contatto.

Mi sono comperato un Surface 3, diciamo che la prima idea era quella di cambiare la macchina che uso per lavorare quotidianamente, ma fa egregiamente il suo sporco lavoro nonostante si un vecchio Dell Latitude di ben 5 anni fa, magie degli SSD (un bel Vertex 3 non si nega a nessuno). L’unico vero problema è che la batteria dura circa 20 secondi :-)

Mi sono quindi proposto di cercare un qualcosa il cui focus fosse l’estrema mobilità con un buon compromesso prezzo/prestazioni e il Surface 3 direi che ha tutte le caratteristiche e le carte in regola.

Ho optato per il modello con 4GD di RAM e SSD da 128GB. Da un primo uso abbastanza intenso sono molto soddisfatto, batteria circa 8 h, ho installato VS2013, VS2015 e Sql Server. Non è una scheggia ma fa il suo sporco lavoro senza il benché minimo problema. Il monitor Full HD è decisamente bello.

Diciamo che in estrema mobilità mi pare di poter dire che sia la macchina perfetta.

Limiti

  • 1 sola porta USB è una discreta menata;
  • 128GB di SSD sono pochi bisogna fare un po' di alchimie per farci stare tutto quello che un dev si aspetta di portarsi dietro, la cosa comoda è lo slot per l'SD, io ne ho una da 64GB, e il fatto che ad esempio potete configurare OneDrive per piazzare la vostra roba li. Il problema è che è sensibilmente più lenta e si percepisce abbastanza.

.m

posted @ 22/05/2015 8.29 by Mauro Servienti

SharpKit



http://sharpkit.net

posted @ 20/05/2015 8.57 by Alessandro Gervasoni

Primi passi con Visual Studio Online (step 2)

Questo è il secondo post di una miniserie dedicata a chi non ha ancora provato ad usare Visual Studio Online e ha bisogno di una rapida guida per muovere i primi passi.

La serie comprende:

  1. Creare un account su VS Online;
  2. Creare un Team Project su VS Online;
  3. Collegare il vostro Visual Studio (quello che avete sul vostro PC) con VS Online
  4. Creare una nuova solution e collegarla a un Team Project
  5. Invitare uno o più utenti a partecipare a un proprio Team Project
  6. Accettare l'invito ricevuto e iniziare a collaborare ad un Team Project

Nel primo post abbiamo illustrato i punti 1 e 2.

In questo post illustreremo il punto 3, ovvero come Collegare Visual Studio (quello che avete sul vostro PC) con il vostro Visual Studio Online.

Prima però, un po' di teoria di base sul "Code Versioning":

Code Versioning significa mantenere tutta la storia di quel che è stato fatto in un progetto. Ogni creazione, modifica e cancellazione di file (o parti di essi) viene memorizzata e non viene mai persa. Anche dopo aver rimosso dei file dal progetto, ad esempio, è sempre possibile recuperarli perché il sistema di versioning tiene sempre tutta la storia passata e ogni cancellazione è solo logica.

Per meglio comprendere, immaginate di dover registrare l'andamento di una partita di scacchi. Avete diversi modi di farlo:

  • Filmare tutta la partita
  • Fare delle foto o dei disegni della scacchiera, dopo ogni mossa
  • Registrare ogni mossa (mossa 1: pedina D2 in D4, mossa 2: cavallo C8 in B6, …)

E' chiaro che anche se durante la partita vari pezzi vengono "mangiati" (così come alcuni file possono essere cancellati o modificati), avendo tenuto traccia di tutti i cambiamenti effettuati è sempre possibile ripristinare una determinata situazione precedente, perché i "pezzi" non sono stati veramente eliminati, ma solo rimossi dal piano di gioco.

Visual Studio Online offre due modi di gestire il versioning del nostro codice:

  • TFS Version Control
  • Git

Senza entrare nei dettagli, possiamo dire che la differenza principale tra i due sistemi è che:

  • TFS è un sistema centralizzato, dove tutti i dati risiedono in un archivio dati centralizzato che contiene tutta la storia di tutte le variazioni effettuate, e sulla nostra macchina locale possiamo tenere un solo una determinata situazione, che può essere l'ultima o una precedente, esattamente come per il gioco di scacchi la disposizione dei pezzi nella scacchiera dopo una certa mossa (che può essere l'ultima ma volendo anche una qualsiasi precedente).
  • Git invece è un sistema distribuito, dove ogni utente ha nella propria macchina locale tutta la storia del progetto, ovvero tutte le mosse e tutte le diverse disposizioni dei pezzi nella scacchiera di tutto lo svolgimento del gioco.

Ognuno ha i suoi pro e i suoi contro, e in questa guida utilizzeremo TFS (d'altra parte questa scelta l'abbiamo già fatta quando abbiamo creato il mostro Team Project, e se volessimo usare Git dovremmo crearne uno nuovo).

Ripartiamo quindi dalla home page del nostro sito Team Project su Visual Studio Online e facciamo click su "Open in Visual Studio":

e confermiamo l'autorizzazione ad avviare VS (da ora in poi VS sta per Visual Studio, quello montato sul nostro PC, mentre VSO sta per Visual Studio Online):

Su VS nel pannello "Team Explorer" facciamo click su "Configurare i mapping dell'area di lavoro":

In parole povere, dobbiamo dire a VS dove registrare in locale, nel nostro Hard Disk, la copia di tutti i file che compongono il progetto. Ricordate sempre che con TFS, come già detto, in locale troverete sempre una determinata situazione del progetto e non tutta la sua storia, che invece risiede nel cloud, nella vostra istanza di VSO.

Ci viene proposta una destinazione, all'interno della nostra cartella utente (in questo caso l'utente si chiama "Mario"):

E' possibile impostarne una diversa facendo click sui te puntini. Io personalmente preferisco utilizzare una cartella diversa:

Infine facciamo click su "Esegui mapping e lettura". Il mapping collegherà la cartella dell'hard disk al Team Project, la lettura copierà la situazione attuale (riferendoci all'esempio della partita a scacchi, l'attuale disposizione dei pezzi nella scacchiera) nella cartella suddetta.

Osserviamo alcune cose:

  • Nel pannello del Team Explorer siamo nella pagina iniziale e stiamo lavorando col Team Project "QuickTest".
  • Si è aperta una pagina a sinistra, chiamata Esplora controllo codice sorgente, dove possiamo vedere tutto il contenuto del nostro VSO, a partire dalla "Default Collection" che è il contenitore di tutti i nostri team project.
  • La "Default Collection" contiene il nostro Team Project "QuickTest", che essendo selezionato mostra il suo contenuto nella parte destra della finestra.
  • Il percorso locale contiene il path completo della cartella del nostro hard disk nella quale è contenuta la copia locale del Team Project.
  • Nella barra dei comandi della finestra "Esplora controllo codice sorgente" possiamo leggere qual è l'area di lavoro nella quale è stata registrata la mappatura tra Team Project e percorso locale.

L'area di lavoro è un argomento che esula da questa breve guida, ulteriori informazioni possono essere trovate qui.

E questo completa un altro piccolo passo per l'uso di VS con VSO.

posted @ 18/05/2015 13.00 by Nicolò Carandini

Latest Images

From miscellaneous
From miscellaneous
From miscellaneous
From Immagini
From Immagini
From Immagini
From Immagini
From Immagini
From Immagini
From Immagini
From Immagini
From Immagini
From Immagini
From Immagini
From Immagini
From Immagini
From Immagini
From Immagini
From Immagini
From Immagini