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 - 31125
  • Articles - 310
  • Comments - 108389
  • Trackbacks - 591061

Bloggers (posts, last update)

Latest Posts

Falsi miti: CQRS va implementato con DDD e DDD senza CQRS non si può fare

I due acronimi, DDD e CQRS, stanno troppo spesso nella stessa frase e sempre più spesso mi rendo conto che per le persone devono andare a braccetto: nulla di più sbagliato.

DDD ha uno scopo, per certi versi molto filosofico e aulico, che gira intorno al concetto di comprensione e/o processo di apprendimento, DDD si prefigge di permetterci di disegnare un modello di dominio che sia il più fedele possibile al modello analitico che vogliamo maneggiare.

Il modello analitico è frutto del processo di apprendimento, o di analisi, che una serie di attori, i domain expert(s) (notare il plurale), di pratiche, come il context mapping, e di strumenti (passatemi il termine), come l’ubiquitous language, ci aiutano a generare.

CQRS ha uno scopo ben diverso, e per certi aspetti drammaticamente più semplice: farci comprendere quanto sia importante che una query non cambi la verità.

Ammettetelo, non vi aspettavate quella definizione di CQRS :-)

Ora, che i due quando usati insieme e con grano salis siano un’accoppiata perfetta non vi è dubbio, ma allo stesso tempo non c’è scritto da nessuna parte che debba succedere.

.m

posted @ 29/07/2015 14.24 by Mauro Servienti

Documentazione EF 7 (Beta 5)

Documentazione "Work in Progress" della prossima release di Entity Framework : http://ef.readthedocs.org/en/latest/

posted @ 22/07/2015 8.07 by Pietro Libro

Alcune novita sul licensing di VS 2015

Se andate sulla pagina dove viene fatta la comparazione di tutte le versioni di VS 2015, potrete notare alcuni fatti interessanti. Ad esempio si può notare che il Power Point Storyboarding, la Code Review ed il Task Suspend/Resume sono stati resi disponibili non solamente per la professional, ma addirittura per la versione Community.

image

Code Lens, altra feature molto interessante, è stata resa disponibile anche per la professional. Vi invito a dare una scorsa alla pagina in questione, perchè passare a VS2015 non vi porterà solamente le nuove funzionalità di questa versione, ma potrebbe portare nella vostra edition, funzionalità prima presenti solamente nella premium o nell’ultimate.

Happy VS.

posted @ 21/07/2015 8.56 by Gian Maria Ricci

Falsi miti: sincrono è consistente

Questa è facile!

Aleggia questa strana convinzione che un mondo sincrono sia anche consistente, ecco… a meno che le vostre query in lettura non usino lock pessimistici e transazioni con un altissimo livello di serializzazione allora mi spiace dirvi che le vostre query sono stale by design

Mi spiace anche farvi notare che il sincrono non fa altro che ridurre la finestra temporale e dare una falsa sensazione di sicurezza; sensazione che altro non fa che abbassare il livello di guardia “aiutandoci” a produrre codice che troppo spesso parte dal presupposto che le cose vadano come ci aspettiamo.

Aggiungo come nota di colore che siccome non teniamo mai in considerazione la latenza, partendo dal presupposto sbagliatissimo che sia prossima a zero, la finestra temporale di cui sopra spesso si riduce veramente di poco.

.m

posted @ 16/07/2015 10.40 by Mauro Servienti

[news] Android wear

https://www.android.com/wear

posted @ 14/07/2015 8.57 by Alessandro Gervasoni

Card Styling nella Kanban Board

Con l’ultimo aggiornamento di VSO è stato introdotto il “Card Styling” per le card della Kanban Board. Di base è un semplice motore di regole per cui, in base a criteri espressi sui campi dei work item, abbiamo la possibilità di colorare lo sfondo delle card a nostro piacimento.

Il limite attuale è che l’unico stile possibile che può essere applicato è lo sfondo, ma non è improbabile che in futuro si possano avere altri stili possibili. Vediamo quindi un possibile uso di questa funzionalità.

Si supponga di suddividere le card per “grandezza” usando il classico T-Shirt sizing, ovvero ogni card può avere la grandezza S/M/L/XL. Sulla base della grandezza delle card introduciamo alcuni semplici regole del tipo:

1) Solamente una card XL può essere presente nella board ad eccezione naturalmente della colonna Done e del backlog
2) Solamente una card L può essere presente in una specifica colonna della board
3) Se in una colonna è presente una card XL, in quella stessa colonna non può essere presente più di una card M
4) Se in una colonna è presente una card L in quella stessa colonna non possono essere presenti piu di 2 card M

Questo è un possibile esempio di semplici regole che ci permettono di gestire la variabilità in grandezza delle varie card. A questo punto è necessario però avere un immediato impatto visuale sulla board relativamente alla grandezza delle card. Per questo possiamo usare la nuova funzionalità di Styling.

image

Questo nuovo menù aprirà una finestra in cui potete inserire una serie di regole per decidere il colore di sfondo delle card. Ecco ad esempio le regole per colorare di rosso le card XL, in giallo quelle L e in blu quelle S

image

  • Come potete vedere una regola ha un nome, il colore di sfondo da usare, ed un editor che vi permette di inserire condizioni sui vari campi dei Work Item. In questo esempio ho usato i TAG per categorizzare le card. Se una card soddisfa più regole, verrà applicata la prima soddisfatta. Dalla finestra di gestione regole potete infatti con il drag & drop effettuare un riordinamento.

image

In questo modo è possibile avere un immediato colpo d’occhio sulla grandezza delle card su cui il nostro team sta lavorando.

Gian Maria.

posted @ 11/07/2015 10.23 by Gian Maria Ricci

Falsi miti…

Uno dei problemi enormi che si trova a dover affrontare chi approccia Domain Driven Design oggi è il sovraccarico di informazioni, spesso confusionarie e fuorvianti, tra cui deve districarsi prima di capire cosa fare e come.

Ci sono poi una sfilza di falsi miti che vorrei pian piano provare a sfatare o se non altro provare a mettere in un angolino e sperare che vengano dimenticati.

Si parla troppo spesso nella stessa frase di: DDD, CQRS e Event Sourcing, facendone spesso un pastrocchio ma soprattutto partendo dal presupposto che siano per forza da implementare sempre insieme, che vadano a braccetto in maniera inscindibile.

Se guardiamo poi al solo argomento Event Sourcing c’è una quantità infinita di interpretazioni errate e di grovigli.

Tutti questi falsi miti, pericolosissimi, combinati con la nostra (di informatici) capacità di abbracciare l’hype (leggi microservices come novità del momento) non possono che produrre danni inenarrabili.

.m

posted @ 06/07/2015 10.35 by Mauro Servienti

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

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