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 - 30990
  • Articles - 310
  • Comments - 103861
  • Trackbacks - 601880

Bloggers (posts, last update)

Latest Posts

JSON.Merge

Un’interessante novità introdotta con la versione 6.0 release 4 di Json.NET è la possibilità di eseguire il Merge (utilizzando 4 possibili “variazioni”) di oggetti JObject e Jarray. Un rapido esempio, tramite Web Api:

[HttpPost]        
public void JsonStringPost([FromBody]string value)
{
    JObject jCar = JObject.Parse(value);
    JObject jOptional = JObject.Parse(@"{Optionals :['Air Conditioned','Smoker'] }");

    jCar.Merge(jOptional, new JsonMergeSettings() { MergeArrayHandling = MergeArrayHandling.Union });

    string jsonFormat = jCar.ToString();
    Car mergedCar =  jCar.ToObject<Car>(); 
}

Dove l’Action “JsonStringPost” accetta una stringa tipo:

"{ 'Brand': 'Ferrari','Model': 'f450 Modena','Optionals': [] }"

Utilizzando, ad esempio il Composer di strumenti come Fiddler2 possiamo invocare il servizio:

image

Per ottenere una nuova istanza di Car con tutti gli Optionals:

image

Se il nostro servizio accetta direttamente un’istanza di oggetto invece di una stringa in formato JSON, il nostro codice cambia leggermente, come di seguito:

[HttpPost]
public void JsonObjectPost([FromBody] Car carByPost)
{
    JObject jCar = JObject.FromObject(carByPost);

    JObject jOptional = JObject.Parse(@"{Optionals :['Air Conditioned','Smoker'] }");
    jCar.Merge(jOptional, new JsonMergeSettings() { MergeArrayHandling = MergeArrayHandling.Union });

    string jsonFormat = jCar.ToString();
    Car mergedCar = jCar.ToObject();
}

Dove utilizziamo il metodo FromObject della classe JObject invece di Parse. Utilizzando Fiddler, passando come Body del messaggio la stringa (senza i doppi apici ad inizio e fine stringa)

{ 'Brand': 'Ferrari','Model': 'f450 Modena','Optionals': [] }

Otteniamo (ovviamente) lo stesso risultato dell’invocazione precedente. E’ possibile modificare il comportamento di “Merge” utilizzando l’enumerazione MergeArrayHandling. La classe Car (C#) è descritta nell’esempio, è la seguente:

public class Car
{
    public string Brand { get; set; }
    public string Model { get; set; }
    public string[] Optionals { get; set; }
}

La lista completa delle features aggiunte nel rilascio della versione 6.0 release 4 è disponibile qui.

posted @ 29/08/2014 12.30 by Pietro Libro

Associare il proprio Microsoft Account con l’account aziendale per condividere i benefici dell’abbonamento MSDN su Visual Studio Online

In un precedente post avevo parlato del funzionamento del piano Basic gratuito di Visual Studio Online e della possibilità di superare il numero di 5 utenti a patto che gli eccedenti siano in possesso di un abbonamento MSDN.

Con l'attuale possibilità di utilizzare Visual Studio Online sia con il proprio Microsoft Account che con l'account aziendale, per qualcuno si potrebbe porre il problema di riuscire a condividere i benefici dell'abbonamento su entrambi gli account, potendo quindi partecipare sia a progetti aziendali che extra-aziendali senza essere in entrambi i casi contati come utenti Basic.

Fortunatamente il problema è facilmente risolvibile associando i due account dalla propria sottoscrizione MSDN.

Apriamo quindi il nostro browser preferito e navighiamo su http://msdn.microsoft.com accedendo se necessario con il nostro Microsoft Account. Selezioniamo quindi in alto a destra il link Abbonamenti MSDN.

Nella sezione Visual Studio Online selezioniamo il link Collegamento all'account aziendale.

Nel dialog box Link to your Organizational Account impostiamo il nostro Account aziendale e clicchiamo sul pulsante Collega.

I due account risultano ora collegati (collegamento che è sempre possibile modificare o rimuovere utilizzando i link opportuni) ed è quindi possibile utilizzare i privilegi della propria sottoscrizione MSDN su entrambi.

Happy coding!

posted @ 27/08/2014 23.01 by Giorgio Di Nardo

wu.js

wu.js is a JavaScript library providing higher order functions

http://fitzgen.github.io/wu.js

posted @ 27/08/2014 8.35 by Alessandro Gervasoni

Fast, Secure HTML5 Document Viewing



link

posted @ 26/08/2014 8.39 by Alessandro Gervasoni

ASP.NET Web API Succinctly

Settimana scorsa mentre andavo a Londra per lavoro ho avuto il piacere di leggere “ASP.NET Web API Succinctly” di Emanuele DelBono, il libro fa parte della catena di libri tecnici di Syncfusion e devo dire che nella sua brevità, si legge in non più di due ore, è semplicemente esaustivo.

Emanuele parte facendo una breve introduzione alla filosofia che “regola” REST per poi addentrarsi nei tecnicismi di ASP.NET Web API e di come REST si coniughi con gli aspetti tecnologici di Web API.

La parte tecnica è il giusto mix tra semplicità e approfondimento, vista la natura delle collana di libri, tutto è affrontato con il giusto grado di complessità sufficiente a dare al lettore le basi per iniziare a muoversi con le sue gambe ma soprattutto sufficiente a dare tutte le informazioni necessarie per approfondire in piena autonomia tutti gli argomenti esposti, argomenti che vanno dal motore di routing alla gestione della security passando per l’etsendibilità della pipeline di Web API.

Insomma una lettura vivamente consigliata.

.m

posted @ 21/08/2014 10.20 by Mauro Servienti

Alertify ASP.NET MVC method helper

 

Per chi non conoscesse alertify è una libreria javascript per visualizzare sia finestre che messaggi di allerta. La potete trovare qui.

Visto però che programmo in ASP.NET MVC e visto che molti link sono dei link ajax, ho deciso di crearmi degli helper.

 

Continua qui

posted @ 08/08/2014 13.33 by Alberto

Aggiornamento a Entity Framework 6.1.1 e Sequence contains…

 

Per un progetto che aveva E.F. 6.0.1, ho avuto la brillante idea di aggiornarlo, tramite nuget, all’ultima versione del noto ORM.

E… ovviamente non ha funzionato al primo colpo… Soprattutto in add-migration mi dava l’errore “Sequence contains more than one matching element”.

 

Continua qui

posted @ 08/08/2014 11.59 by Alberto

Nuove regole per gli acquisti inapp nei giochi on line. Quali indicazioni per gestori di webstore e sviluppatori?

In questi giorni è stato emanato un importante provvedimento (si tratta di una posizione comune) in tema di acquisti inapp da parte della Commissione Europea e dei rappresentanti delle autorità garanti dei consumatori degli stati membri dell’Unione Europea. La posizione comune, che non ha valore di legge ma che può trovare immediata applicazione attraverso eventuali azioni intraprese dalle singole autorità garanti dei paesi membri dell’Unione, riguarda gli acquisti inapp nei giochi online e mira a tutelare prevalentemente i minori, soggetti più direttamente coinvolti da questa tematica. Nella stessa, in particolare, si descrivono alcune pratiche scorrette utilizzate dai gestori degli webstore nella vendita di giochi online e vengono analizzate le azioni intraprese in questo ambito da alcuni dei player più importanti del settore (Google, Apple e Interactive Software Federation of Europe). Da molto tempo, infatti, in sede comunitaria si lamenta la mancanza di trasparenza delle offerte presenti sugli store online, piattaforme che sempre più spesso offrono giochi pubblicizzandoli e presentandoli come “free”, senza che ciò corrisponda effettivamente alla realtà (nella maggior parte dei casi per fruire in modo significativo dell’applicazione è necessario effettuare un pagamento al gestore dello store online o allo sviluppatore). Termini come “free”, “gratis”, “download gratuito”, sono tutti termini che vengono utilizzati diffusamente sugli store online anche e soprattutto per prodotti che non sono pienamente utilizzabili (o addirittura praticamente inutilizzabili senza che l’utente abbia effettuato successivamente al download un pagamento). A ciò si aggiunga il fatto che molto spesso, a causa delle impostazioni di default di queste applicazione, vengono autorizzati acquisti e pagamenti senza che l’utente ne venga pienamente informato e che quindi lo stesso sia conscio dell’operazione. Già a dicembre 2013 i rappresentanti delle autorità nazionali per la concorrenza avevano presentato una prima posizione comune con la quale chiedevano a Google e Apple più trasparenza per gli acquisti inapp nei giochi online.
In particolare si chiedeva che:
● i giochi pubblicizzati come "gratuiti" non ingannassero i consumatori sui costi reali dell’applicazione;
● i giochi non contenessero inviti diretti ai minori ad acquistare contenuti;
● i consumatori venissero adeguatamente informati sulle condizioni di pagamento dei contenuti;
● i consumatori non si vedessero addebitare importi in base a un'impostazione di pagamento predefinita senza aver fornito un consenso esplicito;
● gli sviluppatori fornissero un indirizzo di posta elettronica per consentire ai consumatori di contattarli per dubbi o rimostranze.
Nella recente posizione comune del 18 luglio 2014, se da un lato si sottolinea come Google abbia effettivamente deciso di implementare nel suo store, entro settembre 2014, le richieste contenute nella precedente posizione comune (ad alcune delle quali sì è già adeguato), dall’altro si dà conto di come Apple non abbia ancora individuato e risposto con proposte concrete alle richieste della commissione e dei Garanti per la tutela dei consumatori dei paesi membri.

Ma cosa è plausibile ritenere che possa cambiare?

Posto che gli atti come le posizioni comuni non sono provvedimenti dettagliati o a carattere tecnico, ma
piuttosto documenti di indirizzo politico, è comunque possibile individuare alcune interessanti indicazioni che verranno, plausibilmente, rese a breve obbligatorie in ambito comunitario nei confronti di tutti gli
operatori del settore (sviluppatori e gestori degli webstore).

In generale, i gestori degli webstore (non solo Apple e Google, ma anche gli altri operatori), dovranno adeguarsi alle seguenti indicazioni:
- non potranno utilizzare il termine “free” o un suo equivalente (ad es. “gratis”, “free download”, etc.) se non per le applicazioni completamente gratuite. Lo stesso termine verrà tollerato solo se utilizzato in relazione a giochi non completamente gratuiti, ma in cui siano comunque chiaramente indicati quegli elementi sono gratuiti e quali a pagamento. Questo tipo di applicazioni, per poter utilizzare il termine “free” dovranno consentire all’utente di usufruire di sezioni di gioco standalone che non necessitino di pagamenti per essere utilizzate. Potrebbe sicuramente utilizzare il termine “free”, un gioco in cui si possono acquistare elementi decorativi (come “skin” dei personaggi) ma in cui l’esperienza di gioco è integralmente accessibile a titolo gratuito;

- dovranno elaborare e adottare delle guidelines conformi alla normativa europea in materia di tutela dei consumatori e alle posizioni comuni già emanate sul tema.

Per gli sviluppatori:

- dovranno considerarsi illecite tutte le app, e in particolare tutti i giochi online, nei quali dei minori vengano invitati ad effettuare acquisti di contenuti. In questo tipo di giochi non sarà più consentito l’utilizzo di espressioni come “buy now!”, “Upgrade now!”, o simili;

- la richiesta del consenso all’acquisto di contenuti inapp dovrà essere posta ben in vista e non potrà pertanto essere inserita esclusivamente nei “Termini e condizioni di servizio” o essere raggiungibile attraverso link ad altre pagine;

- le applicazioni dovranno prevedere la richiesta di un consenso esplicito per gli acquisti inapp come impostazione di default. Ciò significa che affinché il consenso sia considerato valido, l’utente dovrà porre in essere un’azione specifica per manifestarlo, che però non potrà concretizzarsi in un semplice click, ma in un’attività più elaborata (ad esempio l’inserimento della password, di una risposta ad una domanda sui suoi dati, etc.);

- le impostazioni relative ai pagamenti per acquisti inapp dovranno essere mostrate all’utente in modo neutrale (senza che sia data prevalenza ad un’opzione o ad un’altra);

- ai consumatori dovrà essere data la possibilità, attraverso una specifica opzione, di stabilire un numero massimo di acquisti inapp effettuabili senza una specifica autorizzazione al pagamento;

- gli sviluppatori (e parallelamente i gestori degli store online) dovranno istituire una specifica casella email attraverso la quale i consumatori potranno inviare domande o reclami. L’indirizzo in questione dovrà essere facile da reperire e mostrato all’utente più volte, per esempio nel momento in cui effettuerà il download dell’applicazione, quando farà acquisti inapp, etc. L’indirizzo email così creato non potrà pertanto essere inserito esclusivamente nei “Termini e nelle condizioni di servizio” o essere raggiungibile solo attraverso link ad altre pagine.

E’ possibile, prevedere infine che vengano adottate posizioni comuni o provvedimenti simili che estendano, con le dovute distinzioni, le indicazioni soprariportate anche ad altri tipi di applicazioni (e non solo ai giochi online), Sul breve periodo, intanto, potrebbero arrivare nuove guidelines dagli operatori degli webstore.

Link alla posizione comune del 18.07.2014 : http://ec.europa.eu/consumers/enforcement/cross%ADborder_enforcement_cooperation/docs/20140718_in%ADapp_cpc_common%ADposition_en.pdf

posted @ 04/08/2014 8.30 by Staff Lex101

moder.IE

Strumenti di sviluppo
per il Web moderno


https://www.modern.ie/it-it/tools

posted @ 29/07/2014 8.57 by Alessandro Gervasoni

Hai una piattaforma di e-commerce? Attenzione alla nuova normativa sul Recesso!

Novità in vista per il mondo dell’e-commerce. L’Italia ha ormai recepito i contenuti della direttiva europea n. 2011/83, che sono diventati vincolanti per tutti i contratti conclusi successivamente al 13 gennaio 2014. Il recepimento è avvenuto col decreto legislativo 21/2014, entrato in vigore il 26 marzo. La normativa va a incidere sulla disciplina del codice del consumo e conseguentemente anche sugli adempimenti in capo ai titolari di siti e-commerce - ragion per cui vi invito a leggere attentamente quanto segue.

Una delle principali novità attiene alle modalità di recesso dal contratto. Si tratta di un intervento normativo che tocca nel vivo non solo il consumatore che si avvale della piattaforma e-commerce, ma in prima battuta il gestore stesso della piattaforma e-commerce, che dovrà adeguarsi alle nuove disposizioni…

Vediamo dunque cosa cambia.


Questo post è solo il primo di una serie di approfondimenti sul tema, non ha pertanto pretesa di esaustività. In successivi post cercherò di entrare nello specifico di alcuni problemi legati alla normativa e-commerce.

Qui comincerò solamente a riepilogare per comodità del gestore di piattaforme e-commerce oltre che dei consumatori, le attuali regole in materia di recesso.


1) DIRITTO DI RECESSO: DA 10 A 14 GIORNI

In primo luogo, cambia il tempo a disposizione per esercitare il diritto di recesso, non più solo 10 giorni bensì 14 giorni dalla data di sottoscrizione del contratto o dalla data in cui il consumatore acquisisce il possesso fisico dei beni.

Prima della scadenza del periodo di recesso, il consumatore deve informare il professionista della sua decisione di recedere dal contratto.


2) MODALITA’ DI ESERCIZIO DEL DIRITTO DI RECESSO

Il consumatore può recedere in due modi:

2.1. avvalendosi di un apposito modulo, il cui contenuto è dettagliato nell’allegato alla normativa:


http://www.gazzettaufficiale.it/eli/id/2014/3/11/14G00033/sg


2.2. scrivendo di proprio pugno una dichiarazione esplicita in cui manifesta la volontà di recedere dal contratto

La comunicazione del recesso deve essere inviata prima della scadenza del periodo di recesso.

Al fine di agevolare l’esercizio del diritto di recesso il professionista può predisporre sul proprio sito di e-commerce un apposito form, che riproduca il modello di cui al 2.1. o che consenta di inserire la dichiarazione di cui al 2.2., elettronicamente: in tal caso il professionista deve comunicare senza indugio al consumatore conferma di ricevimento, su un supporto durevole, del recesso esercitato.


3) EFFETTI DEL RECESSO

L’esercizio del recesso pone termine agli obblighi delle parti di dar seguito al contratto e alle rispettive obbligazioni.


4) OBBLIGHI DI INFORMATIVA SUL RECESSO


Il tempo a disposizione per esercitare il diritto di recesso nel caso di vendite a distanza (su internet, via telefono ma in genere fuori dal negozio) aumenta, come visto, da 10 a 14 giorni. Tuttavia si può arrivare anche ad un anno e 14 giorni se il venditore non ha adeguatamente informato il consumatore sull’esistenza del diritto stesso. In caso di violazione degli obblighi informativi il consumatore non deve sostenere neppure il costo diretto di restituzione dei beni


I commercianti devono informare chiaramente e preventivamente i consumatori che i costi di restituzione delle merci in caso di ripensamento sono sostenuti dai clienti, altrimenti tali costi rimarranno a loro carico. Prima della vendita, deve essere fornita una chiara stima dei costi massimi di resa di merci ingombranti (ad esempio un divano acquistato via internet o per corrispondenza), così che il consumatore possa decidere in modo informato da chi acquistare


5) OBBLIGHI DEL PROFESSIONISTA IN CASO DI RECESSO

Rimborsare tutti i pagamenti ricevuti dal consumatore (eventualmente comprese le spese di consegna) senza ritardo e in ogni caso entro 14 giorni dal recesso (attualmente 30) e dovrà coprire anche le spese di consegna originarie e quindi restano escluse le spese di restituzione del bene. Nel caso il consumatore sceglie espressamente un tipo di consegna diverso da quello meno caro, i costi supplementari non saranno rimborsati. Il rimborso, di norma, deve avvenire con lo stesso mezzo di pagamento utilizzato dal consumatore all’atto dei suoi pagamenti. Il fornitore potrà comunque non effettuare il rimborso fino al momento

della ricezione della merce

Attenzione: è nulla qualsiasi clausola che prevede limitazioni al rimborso nei confronti del consumatore delle somme versate.


6) OBBLIGHI DEL CONSUMATORE IN CASO DI RECESSO


Il consumatore è tenuto a provvedere senza indebito ritardo (e in ogni caso entro 14 giorni dalla data in cui ha comunicato la sua decisione di recesso) alla restituzione dei beni. Il costo diretto della restituzione è a carico del consumatore, salvo diversi accordi col professionista o salvo che il professionista non abbia dato adeguata informazione di ciò al consumatore.

Il consumatore è responsabile della diminuzione del valore dei beni derivante da una manipolazione dei beni diversa da quella necessaria per stabilire la natura, le caratteristiche e il funzionamento dei beni.


7) BENI PER I QUALI E’ ESCLUSO IL DIRITTO DI RECESSO


La nuova normativa contempla vecchie eccezioni e nuove eccezioni, oltre a una serie di eccezioni che sono state eliminate (beni che per loro natura non possono essere restituiti. Tra le nuove eccezioni introdotte, si segnala in particolare la fornitura di contenuto digitale mediante un supporto non materiale “se l’esecuzione è iniziata con l’accordo espresso del consumatore e con la sua accettazione del fatto che in tal caso avrebbe perso il diritto di recesso”.

Questo, senza pretesa di esaustività, un primo quadro generale. Per approfondimenti più specifici, rimando ai prossimi post.

Tenete d’occhio il blog!

EDOARDO COLZANI

posted @ 24/07/2014 8.30 by Staff Lex101

string.js

stringjs.com
Interessante libreria javascript che estende i metodi associati ad una variabile stringa tra i tanti :

- count(substring) : Returns the count of the number of occurrences of the substring.

- isAlpha() : Return true if the string contains only letters.

- padLeft(len, [char]) : Left pads the string.

- toCSV(options) : Converts an array or object to a CSV line.

posted @ 16/07/2014 8.56 by Alessandro Gervasoni

FatturaPA

Dal 6 giugno 2014 è obbligatoria la Fatturazione elettronica verso la PA , per capirci meglio link.

posted @ 11/07/2014 9.17 by Alessandro Gervasoni

Workshop “Microsoft .NET - Architecting Applications for the Enterprise (2nd Edition)”

Se vi interessano le architetture software e argomenti come DDD e CQRS, non potete perdervi questo :)

Workshop "Microsoft .NET - Architecting Applications for the Enterprise (2nd Edition)" ad Ancona - giovedì' 17 luglio
In occasione dell'uscita della seconda edizione dell'omonimo libro, avremo il piacere di ospitare uno degli autori, Andrea Saltarello.
Insieme a Mauro Servienti ci illustreranno gli argomenti alla base di questo lavoro, la cui prima edizione è diventata uno dei testi di riferimento per quanto riguarda le architetture software nel mondo del .NET Framework.

Se date uno sguardo all'agenda, potete vedere che si parlerà molto di DDD / CQRS / Event Sourcing, temi che valgono anche al di fuori di .NET, perciò siete i benvenuti qualsiasi tecnologia amiate usare!

Per agenda ed iscrizione (gratuita): https://naae2-marche.eventbrite.com

posted @ 03/07/2014 14.28 by Stefano Ottaviani

Privacy e App: le cinque regole auree che lo sviluppatore software non deve mai dimenticare.

Scrivo questo mio primo post nella consapevolezza di esser partito con il piede sbagliato: ho già mentito.

Ho mentito parlando di 5 regole auree che non possono essere trascurate, pur sapendo che le regole  fondamentali da conoscere non sono certo solo 5, ma molte di più e in continua evoluzione.

D’altro canto mi autoassolvo pensando che, da un lato, la normativa italiana e europea sono talmente ampie che non si può certo scrivere tutto in un solo post e che, dall’altro, comunque cercherò di integrare in futuro, con altri post, l’elenco degli aspetti legali fondamentali da tenere in considerazione nello sviluppo di un’App (quale che sia il sistema operativo a cui è destinata).

Ma veniamo alle cinque regole auree che lo sviluppatore di un’App deve tenere in considerazione:

1) Il consenso all’installazione della App deve essere distinto da quello richiesto per il trattamento dei dati.

L’App deve essere progettata per richiedere all’utente il suo consenso all’installazione del software; questo consenso deve necessariamente essere distinto da quello al trattamento dei dati. Il primo è un consenso all’inserimento e alla lettura di informazioni presenti sul device, il secondo riguarda l’autorizzazione al trattamento di dati personali di tipo differente. Questo secondo tipo di consenso può essere richiesto anche durante l’installazione del software.

2) Quando viene richiesto il consenso è opportuno prevedere una specifica opzione per il rifiuto.

Quando l’App richiede il consenso al trattamento dei dati all’utente o all’installazione del software, è necessario che sullo schermo appaia un’opzione per il rifiuto (rappresentata eventualmente dal tasto “cancella”, “interrompi”, etc.)

3) Per ogni trattamento di dati deve essere richiesto uno specifico consenso.

Se l’App che stiamo sviluppando processa, ad esempio, i dati della rubrica dell’utente per  fornire un servizio di messaggistica e dati di geolocalizzazione dell’utente per scopi di marketing, sarà necessario che l’App richieda, e che l’utente fornisca, due distinti consensi al trattamento dei dati.

4) Il trasferimento di dati personali in paesi esteri è soggetto a particolari limitazioni.

I dati personali raccolti dalla nostra App possono essere liberamente trasferiti solo negli stati membri dell’EU. Il trasferimento di dati personali in paesi extra EU è consentito solo se i paesi di destinazione garantiscono un adeguato livello di sicurezza dei dati trasferiti. In questi casi è opportuno effettuare una valutazione caso per caso (anche alla luce di eventuali pronunce del Garante).

5) E’ sempre opportuno stabilire un limite temporale alla conservazione dei dati personali raccolti dalla App.

I dati raccolti dalla App e dai suoi servizi devono essere conservati per un periodo stabilito e cancellati al suo scadere. Discorso analogo deve valere per gli account creati dagli utenti e rimasti inattivi per un lungo periodo: anche in questo caso è opportuno prevedere un meccanismo di cancellazione dell’account e dei relativi dati personali.

ANDREA PALUMBO

posted @ 01/07/2014 8.50 by Staff Lex101

Errore Web Service

Nel trasformare un web service fatto con il framework 2 nell'equivalente service WCF fatto con il framework 4, mi sono trovato davati ad un errore abbastanza strano:

Errore nella deserializzazione del corpo del messaggio di risposta per l'operazione …..

Dopo un paio d'ore passate a glooglare e confrontare un altro progetto molto simile che funzionava mi sono imbattuto in un articolo molto scarno:

http://forums.asp.net/t/1234318.aspx?Error+in+deserializing+body+of+reply+message+

che però mi ha indirizzato verso la soluzione giusta. In effetti il problema era proprio il parametro readerQuota dell'app.config.

 

posted @ 27/06/2014 12.17 by Alessandro Cavalieri

Planning ÷ reacting: finding the balance





Life is what happens to you while you're busy making other plans - John Lennon, Beautiful Boy









The are things that can be planned and others that cannot be. The conundrum is, which is which?


What happens when someone

This is why it is important to find out in every moment the balance between the two, to know


Someone says that Agile is the art of finding the balance between anticipation (as e.g. panning) and adaptation (as e.g. reacting).  

An interesting final reflection: what values, principle and practices help to find a good balance, and how ?

 


posted @ 25/06/2014 20.42 by Luca Minudel

Nasce il servizio di Pronto Soccorso legale di UGIdotNET!

Come annunciato durante la terza giornata dei Community Days 2014, ai soci UGIdotNET è riservato, da parte dei nostri legali, un servizio di pronto soccorso legale totalmente gratuito per le questioni di semplice e immediata risoluzione. Questo servizio non può, comprensibilmente, coprire anche questioni complesse o che necessitino di un approfondimento, per le quali i professionisti che offriranno questo servizio saranno comunque disponibili a fornire una consulenza privata totalmente indipendente dalla Associazione.

Per usufruire del servizio sarà sufficiente contattarci all’indirizzo soccorsolegale@ugidotnet.org e, all’occorrenza, fissare un incontro mediante Skype oppure, una volta al mese, presso la sede di UGIdotNET: al momento del contatto, occorrerà specificare lo user name con il quale siete registrati sul sito UGIdotNET al fine di verificare la vostra appartenenza alla Associazione. Vi aspettiamo!

sos

posted @ 22/06/2014 12.40 by Staff Lex101

Nasce ‘Lex101’, il blog di diritto delle nuove tecnologie ospitato da UGIdotNET!

Dopo il successo della terza giornata dei Community Days 2014 a Peschiera Borromeo, ci siamo resi conto della necessità di instaurare un dialogo costante, nonché un confronto di esperienze, tra tecnici del software e professionisti di altri settori (legal, business, marketing, ecc…).

Di qui l’idea di dar vita a questo blog, inteso quale strumento per una costante informazione e aggiornamento sugli adempimenti normativi, i profili di responsabilità e ancora altri aspetti giuridici connessi al mondo dell’informatica che chi lavora nel mondo IT non può e non deve ignorare.

Una ulteriore concreta è il servizio di pronto soccorso legale, del quale potete leggere i dettagli nel relativo post su questo blog.

Buona lettura!

Andrea Palumbo e Edoardo Colzani

posted @ 22/06/2014 12.30 by Staff Lex101

Resource Management delle Windows Runtime Apps

Anche se nel sito MSDN non è difficile trovare documentazione dettagliata sui diversi aspetti della gestione delle risorse di una Windows Store App o Windows Phone Store App, ma nello studio di tale materia non ho trovato una visione d'insieme che facilitasse la comprensione di come i vari aspetti siano legati tra di loro nella realizzazione della mia applicazione. Per tale motivo ho pensato che un post riassuntivo potesse essere utile, rimandando di volta in volta ai singoli articoli MSDN per l'approfondimento delle singole parti.

Ogni volta che eseguiamo la build della nostra applicazione, il Resource Management System crea un file PRI (Package Resource Index) che viene incluso nell'app e che consente di stabilire a runtime quali risorse debbano essere utilizzate in un dato momento.

Informazioni più dettagliate, che vi consiglio di leggere dopo aver completato la lettura di questo post, le potete trovare qui: Resource Management System.

Il file PRI contiene tutte le Named Resource collezionate al momento della build. Il file PRI altro non è che un dizionario di named resources e di referenze ai file di risorse contenute nello app package.

La cosa interessante è che le named resource possono avere più valori, a secondo delle qualified variant. A runtime il Resource Manager applicherà un algoritmo di risoluzione che identificherà tra i resource file associati ad una named resource quello da usare in quel momento, attraverso il confronto delle diverse qualified variant disponibili nel file PRI rispetto al ResourceContext di esecuzione dell'app.

Se, ad esempio, abbiamo una Named Resource chiamata MyImage a cui corrispondono due file jpeg, uno con la qualified variant scale-100 e l'altro con qualified variant scale-140, il file utilizzato a runtime dipenderà dalla scale del ResourceContext di esecuzione.

Di seguito l'elenco delle diverse Qualified Variant disponibili:

  • language (può essere abbreviato a "lang" quando viene usato nel nome di file della risorsa, o addirittura omesso se utilizzato nel nome di una cartella)
  • scale
  • contrast
  • homeregion
  • targetsize
  • layoutdir
  • config
  • altform
  • DXFeatureLevel (può essere abbreviato con "DXFL")

Maggiori Informazioni le potete trovare qui: How to name resources using qualifiers (XAML).

Ok, dunque possiamo associare a una Named Resource diversi file risorsa, univocamente identificati da una qualsiasi combinazione delle qualified variant disponibili.

Ma dove dobbiamo mettere tali file nel nostro progetto di Visual Studio, e come dobbiamo chiamarli affinché durante la build questi file vengano riconosciuti come file risorse e vengano inseriti nel file PRI con tutte le loro giuste qualified variant?

La cosa più semplice è quella di mettere tutti i file risorsa nella cartella del progetto, o in una qualsiasi cartella contenuta in essa (ad esempio /Assets/Images) e inserire le qualified variant direttamente nel nome del file:

Oppure utilizzare delle cartelle che per nome hanno le qualified variant o ancora meglio un miscuglio di entrambe le tecniche:

E' utile notare che è sempre possibile inserire la suddetta struttura dentro una qualsiasi cartella contenuta nella cartella del progetto, o addirittura inserire altre cartelle all'interno della struttura stessa:

Per cui, ad esempio, il file /assets/Localized Images/it/contrast-high/MyImage.scale-100.jpg è del tutto equivalente al file MyImage.lang-it.contrast-high.scale-100.jpg .

L'ordine in cui compaiono le qualified variant è del tutto irrilevante, ad esempio MyImage.lang-it.contrast-high.scale-100.jpg è del tutto equivalente al file MyImage.scale-100.lang-it.contrast-high.jpg o ad ogni altra permutazione.

Ora che abbiamo illustrato la Gestione delle risorse in una Windows Runtime app, spostiamo la nostra attenzione sui file di tipo .resw e sull'uso di XAML x:Uid.

Nonostante la differenza di nome dell'estensione, il formato dei file di tipo .resw è del tutto identico a quello dei più tradizionali .resx, con la notevole eccezione del fatto che i file .resw possono contenere solo stringe e file path.

Visual Studio offre un comodo editor per la creazione e modifica di file di questo tipo:

Tali valori possono essere usati direttamente da codice XAML:

<TextBlock x:Uid="MyTextBlok" Text="This text will be shown at design time" />

A runtime la proprietà Text del TextBox con x:Uid pari a "MyTextBox" assumerà il valore corrispondente al valore dell'elemento contenuto nella risorsa che ha per nome l'unione del valore di Uid, del punto (.) e del nome della proprietà:

E' importate qui ricordare che nel codice XAML è comunque necessario assegnare un valore alla proprietà (nel nostro esempio "This text will be shown at design time") affinché sia possibile vederlo a design time.

Ovviamente è anche possibile leggere tali valori da codice, tipicamente in un ViewModel, bindato a qualche elemento XAML della UI.

Anche in questo caso, per maggiori Informazioni date un'occhiata qui: How to load string resources (XAML).

That's all folks! Happy coding. J

 

posted @ 21/06/2014 12.23 by Nicolò Carandini

I misteri dell’indicizzazione di Google

In tante persone parlano di SEO, ovvero come ottimizzare il proprio sito affinché i motori di ricerca (Google) possano portare più traffico. Gli algoritmi che stanno dietro Google immagino siano veramente sofisticati e talvolta accade qualche cosa che cambia drasticamente il numero di visite al tuo sito. Di base penso che sia difficile, a data odierna, forzare Google a dare visibilità al tuo sito.

Dall’avvento dei vari Panda e Penguin etc due anni e mezzo fa, il mio blog inglese, come altri, ha avuto lentamente un calo di visite, fino ad arrivare a circa la metà delle visite che avevo due anni e mezzo fa. Difficile capire la ragione e visto che non è il mio business non ho avuto ne voglia ne interesse a cercare di capire il perchè. Sono il tipo di persona che una volta ogni due mesi si ricorda di dare uno sguardo ad Analytics per capire come va il sito e nulla più :)

Oggi vedo questo.

image

Come potete notare, da una settimana all’altra è avvenuto un incremento sostanziale delle visite, tutte da Google Organic, quindi dalle ricerche di Google. Ora io non ricordo di avere cambiato nulla sul mio blog, a parte forse aggiornare wordpress all’ultima versione. Sarei veramente curioso di capire cosa è cambiato per avere un cosi drastico e continuo incremento di traffico. :)

Gian Maria.

posted @ 17/06/2014 9.24 by Gian Maria Ricci

Latest Images

From Immagini
From Foto
From Foto
From Foto
From Immagini
From Immagini
From Immagini
From PrivateImage
From image
From post
From post
From Immagini
From Messaggi
From BlogImagesLayout
From Screenshots
From Messaggi strani
From Sidebar
From Sidebar
From Immagini per UGI
From Screenshots