Codice e slide della sessione What's New in ASP.NET 4.5 and Visual Studio 2012

by Andrea Dottor 17 September 2012 23:59

Venerdì 14 Settembre 2012 ho tenuto la sessione What's New in ASP.NET 4.5 and Visual Studio 2012 ed ecco qui il codice di esempio e le slide pronte al download:

Abstract: Il Microsoft .NET Framework è in continua evoluzione, e con la prossima versione verranno rilasciate interessanti funzionalità riguardanti ASP.NET.All'interno di questa sessione conosceremo tutte queste novità, ed andremo invece più in dettaglio in alcune di esse, permettendo a chi conosce già ASP.NET di poter essere più produttivo (Strongly Typed Data Controls, Model Binding, Asynchronous, WebSocket, ... ), mentre, per chi invece non ha molta esperienza con questa tecnologia, potrà vedere come i nuovi template di progetto e Visual Studio 2012 potranno aiutarlo ad approcciare correttamente queste tipologie di applicazioni.

Tags: , ,

ASP .NET | .NET | XeDotNet

Il meeting si avvicina - What's New in ASP.NET 4.5 and Visual Studio 2012

by Andrea Dottor 05 September 2012 23:25

La prossima settimana, venerdì 14 Settembre 2012 si terrà il prossimo Community Meeting di XeDotNet dal titolo ASP.NET 4.5, SQL Server 2012 e Visual Studio 2012.

In questo evento terrò una sessione dal titolo What's New in ASP.NET 4.5 and Visual Studio 2012, dove parlerò delle novità di Visual Studio 2012 riguardanti lo sviluppo web, e continuerò entrando in dettaglio in quelle che sono le novità introdotte in ASP.NET 4.5.

Il Microsoft .NET Framework è in continua evoluzione, e con la prossima versione verranno rilasciate interessanti funzionalità riguardanti ASP.NET.All'interno di questa sessione conosceremo tutte queste novità, ed andremo invece più in dettaglio in alcune di esse, permettendo a chi conosce già ASP.NET di poter essere più produttivo (Strongly Typed Data Controls, Model Binding, Asynchronous, WebSocket, ... ), mentre, per chi invece non ha molta esperienza con questa tecnologia, potrà vedere come i nuovi template di progetto e Visual Studio 2012 potranno aiutarlo ad approcciare correttamente queste tipologie di applicazioni.

Per chi volesse partecipare, trova l’agenda ed il link per la registrazione al seguente link:
http://www.xedotnet.org/Home/Meeting/20120914

Vi aspetto numerosi Winking smile

Tags: , , ,

ASP .NET | XeDotNet

Inviare email tramite un SMTP con certificato self-signed

by Andrea Dottor 05 September 2012 23:14

Può capitare (in fase di sviluppo) di dover inviare delle mail ad un server SMTP che ha un certificato self-signed.
Se provate ad inviare una mail da codice vi ritroverete con una bella eccezzione a causa del fallimento della validazione del certificato.

Un possibile work-around è quello di forzare il check della validità dei certificati in modo da far ritornare sempre true.
Il codice necessario è il seguente:

ServicePointManager.ServerCertificateValidationCallback =
                                (sender, certificate, chain, sslPolicyErrors) => true;

NOTE: il codice in questione è valido ogni qualvolta vi troviate a dover bypassare degli errori dovuti ai certificati.
Per ovvi motivi di sicurezza, siate ben consci di utilizzare questo codice solamente durante le fasi di sviluppo, altrimenti tanto varrebbe evitare l’uso del certificato.

Ed ecco il codice completo da utilizzare, compreso di invio della mail

ServicePointManager.ServerCertificateValidationCallback =
                                (sender, certificate, chain, sslPolicyErrors) => true;

MailMessage mail = new MailMessage();
mail.To.Add(new MailAddress("mail del destinatario"));
mail.Subject = "Oggetto";
mail.Body = "Corpo della mail";
mail.From = new MailAddress("mail del mittente");

SmtpClient smtp = new SmtpClient("smtp.miaazienda.it");
smtp.Credentials = new NetworkCredential("user", "password", "dominio");
smtp.EnableSsl = true;

smtp.Send(mail);

Tags: ,

ASP .NET | .NET

Creare uno schedulatore con poche righe di codice - Quartz.NET

by Andrea Dottor 05 September 2012 22:34

Il bello di fare community è che spesso si ha l’occasione di scambiarsi consigli e link che prima o poi possono tornare utili. Un caso è proprio questo, quello di Quartz.NET, una libreria consigliatami da Davide Senatore ed utile per eseguire del codice a intervalli schedulati.
A molti sarà capitato di scrivere un applicativo che doveva (per esempio) inviare delle mail alle 24.00 di ogni giorno, oppure eseguire qualche operazione ogni x ore…ed ecco che questa libreria ci permette di fare proprio questo, e con veramente poche righe di codice.

Un esempio è il seguente:
Sviluppiamo una classe che conterrà il codice da eseguire in un determinato momento. Per fare ciò è sufficiente creare una classe e fargli implementare Quartz.IJob:

public class MyCustomJob : Quartz.IJob
{
  public MyCustomJob()
  {
  }

  public void Execute(Quartz.IJobExecutionContext context)
  {
    // TODO: implementare il codice che dovrà essere eseguito
  }
}

Se vogliamo far richiamare questa classe ogni 30 minuti, il codice per realizzare lo scheduler sarà il seguente:

ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
IScheduler scheduler = schedulerFactory.GetScheduler();

IJobDetail job = new JobDetailImpl(
                  "MyCustomJob",
                  null,
                  typeof(MyCustomJob));

ITrigger trigger = new Quartz.Impl.Triggers.SimpleTriggerImpl(
              "trigger",
              DateTime.UtcNow,
              null,
              Quartz.Impl.Triggers.SimpleTriggerImpl.RepeatIndefinitely,
              new TimeSpan(0, 30, 0));

scheduler.ScheduleJob(job, trigger);
scheduler.Start();

Come è possibile vedere, Quartz.NET permette di semplificare notevolmente la creazione/esecuzione di job ad eventi programmati. La libreria è molto completa anche dal punto di vista delle configurazioni, il che permette di adattarla ai casi di utilizzo più disparati.

Ed ecco che grazie ad un consiglio “giusto” ho risparmiato (e fatto risparmiare) un bel pò di lavoro.

Tags:

.NET

Non siamo abituati ad utilizzare i feedback

by Andrea Dottor 17 July 2012 22:59

E' proprio vero "non siamo abituati ad utilizzare i feedback", ed aggiungerei anche un "soprattutto noi italiani...".

Ho alcune applicazioni nel marketplace Windows Phone ed Android ed ho notato che sebbene i download salgano parecchio di numero, i feedback presenti siano irrisori o nulli.
Parlando con chi ha applicazioni ben più diffuse/conosciute delle mie, vengo addirittura a sapere che la "problematica" è soprattutto nostra. Al di fuori dell'Italia il numero di commenti sale di parecchio, come è giusto che sia.

Forse non capiamo l'importanza dei feedback. Ed ammetto che facevo parte del gruppo pure io.

Per uno sviluppatore è importante sapere in quale direzione far crescere la propria applicazione. E' utile sapere quali funzionalità manchino, e quali siano da implementare in modo migliore...per non parlare anche di quali funzionalità presentino problemi e quindi vadano migliorate. I feedback sono importanti!

Per un utente è utile capire la qualità dell'app, sapere se chi la sta utilizzando la consiglia oppure no...conoscerne pro e contro, e anche confrontarsi con altri utenti. I feedback sono importanti!

Sono il primo a non avere quest'abitudine, ma la lezione l'ho imparate in prima persona.
Inizierò a dare più feedback, e spero di riuscire a coninvolgere più persone in questa buona abitudine. Spesso non ci pensiamo, prendiamo la cosa alla leggera, e non diamo la corretta importanza ad un'azione tanto semplice.

Tags: ,

Internet | Sfoghi | Tempo libero

Json.Net - Deserializzare JSON con un AnonymousType

by Andrea Dottor 17 July 2012 22:42

Solitamente ci si trova a deserializzare JSON basandosi su classi precedentemente create. Spesso queste classi hanno quest'unico scopo, quello di mappare i dati che arrivano in formato JSON. Ed ecco che oggetto dopo oggetto, ci troviamo con molte di queste classi, che vengono utilizzate in un'unico punto.

Esporando la classe Newtonsoft.Json.JsonConvert della libreria Json.Net ho notato un metodo DeserializeAnonymousType, ed ho subito indagato sul come funzionasse, e se potesse fare al caso mio.
Questo metodo si occupa di deserializzare una stringa JSON utilizzando un AnonymousType come tipo...ed ecco che mi si è accesa la lampadina.
Open-mouthed smile

Ecco come poterlo utilizzare:

var dummy = new
{
  Description = "",
  Code = "",
  Data = "",
  CategoryID = -1,
};

var product = Newtonsoft.Json.JsonConvert.DeserializeAnonymousType(objToSave, dummy);

product sarà del tipo specificato nell'oggetto dummy creato come AnonymousType, ed avrà quindi le proprietà Description, Code, Data e Category esattamente come specificato nella dichiarazione.
Questo permette quindi di evitare la scrittura di classi utili alla sola deserializzazione degli oggetti JSON.

Tags: ,

.NET | ASP .NET

Chiamare un page-method da jQuery

by Andrea Dottor 17 July 2012 22:20

Con ASP.NET AJAX sappiamo bene come interrogare un page-method, ed in rete troviamo parecchia documentazione. Il tutto si basa sul controllo ScriptManager, dove abilitando il flag EnablePageMethods viene automaticamente creato un proxy javascript che ci permette di chiamare il page-method in modo molto semplice e veloce.

A questa pagina troviamo un esempio di come chiamare un page-method utilizzando ASP.NET AJAX: Exposing Web Services to Client Script

E' possibile però evitare l'utilizzo/dipendenza da ASP.NET AJAX, ed evitare quindi di avere nella pagina un controllo ScriptManager. Per fare questo ci viene in aiuto jQuery.

Come utilizzare jQuery per chiamare il page-method?

La cosa è molto semplice e si basa sull'uso del metodo Ajax di jQuery, e sul come comporre l'url da invocare.

Ecco qui un esempio di codice per invocare il page-method Save presente all'interno della pagina Product.aspx. Il metodo Save ha un parametro objToSave di tipo string (che riceverà un prodotto in formato JSON).

var product = new Object();
product.Description = "Descrizione";
product.Code = "ABC123";
product.Data = "20120712";
product.CategoryID = 12;

var dataToSave = new Object();
dataToSave.objToSave = JSON.stringify(product);

$.ajax({
  type: "POST",
  url: "Product.aspx/Save",
  data: JSON.stringify(dataToSave),
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function (msg) {
    alert('Risultato del salvataggio: ' + msg.d);
  },
  error: function (err) {
    alert('Errore: ' + err.statusText);
  }
});

Come potete bene vedere l'url da chiamare da jQuery è composto dal nome della pagina seguito dal nome del page-method ("Product.aspx/Save").
Questo metodo permette di avere anche oggetti in ritorno da metodo, che verranno gestiti dal codice inserito all'interno del metodo success.

Utilizzando questo codice non si hanno dipendenze dalle librerie ASP.NET AJAX, e aggiungo che il codice JavaScript necessario è inferiore a quello del proxy che verrebbe generato dal controllo ScriptManager.

E quindi, per l'ennesima volta, jQuery batte ASP.NET AJAX Winking smile

Tags: ,

ASP .NET | ASP.NET AJAX | jQuery

Baroliere - L'app per vincere/barare ai giochi di parole

by Andrea Dottor 12 June 2012 00:30

La mia esperienza con Windows Phone non si è assolutamente fermata, ed infatti ecco che me ne sono uscito con un'applicazione dedicata a chi ha difficoltà a vincere ai giochi di parole come ad esempio scrubble, scarabeo, o simili.
Se vi serve un aiuto per battere un vostro amico o familiare a questi giochi, ecco l'app che fa per voi!

La potete trovare al seguente link:
http://www.windowsphone.com/it-IT/apps/6753e7e0-4de1-4d56-854f-fdedf980cc4d

Barare+parole=BAROLIERE
Vincere ai giochi di parole non è mai stato così facile.
Immetti le lettere che hai a disposizione e ti verranno visualizzate tutte le parole disponibili nel dizionario italiano.

Paroliere, scrubble, scarabeo sono solo alcuni dei giochi in cui quest'applicazione ti può facilitare la vita.

Sviluppare per Windows Phone è divertente ed immediato, e quest'app lo dimostra...

Una sera, giocando a scrubble online, mi sono ritrovato di fronte ad un file txt contenente tutte le parole presenti all'interno del dizionario Italiano, e subito mi è nata l'idea di utilizzarlo per realizzare un'applicazione Windows Phone. Ed allora eccomi, qualche sera davanti a Visual Studio e questo è il risultato.

SplashScreenImagemainPageinfoPage

L'app è disponibile a pagamento con 3 giorni di trial...più che sufficienti per capire il funzionamento di questa semplice applicazione.
Ho aggiornato il prezzo a 1,29€ che per barare mi sembrano il minimo Winking smile

Tags: , , ,

Tempo libero | .NET | Windows Phone

La mia prima esperienza da DEV con Windows Phone

by Andrea 18 April 2012 00:49

Tempo fa vi ho scritto della mia prima esperienza di sviluppo con Android (link), ed all'epoca ne ero anche entusiasta....ma perchè ancora non avevo provato a sviluppare per Windows Phone.
In termini di diffusione dei dispositivi purtroppo non si può dire lo stesso...ma in questo post voglio concentrarmi solo in quel che riguarda la parte di sviluppo.

Emulatore

La cosa che adoro in assoluto è la velocità e la leggerezza dell'emulatore Windows Phone, e chi ha provato a sviluppare per android sa bene la differenza abissale che c'è rispetto all'emulatore di android (lento e molto molto pesante). Già solo questo aspetto permette di velocizzare e non di poco la fase di sviluppo di un'applicazione.

Metro Style

Per chi mi conosce sa che con xaml non sono espertissimo, ma ad aiutarmi nello sviluppo per Windows Phone è stato proprio lo stile metro del telefono. Ebbene si, l'utilizzo dei controlli panorama e pivot, uniti alla semplicità dello stile metro fanno si che un'applicazione possa essere accativante ed usabile, senza necessariamente dover essere dei guru di xaml. 

Ovvio che conoscere xaml come si deve permette di fare la differenza, non solo in termini di tempo, ma anche nel feedback che l'app può dare. Animazioni, effetti grafici, ... sono aspetti che sicuramente catturano l'attenzione dell'utente finale.

Le mie app

Ed ecco qui il risultato delle prime notti spese per imparare questa piattaforma:

- Date Calculator

http://windowsphone.com/s?appid=3aee2367-41d5-448e-b21b-1f9ed5e7de79

Si tratta di un'app per eseguire calcoli con le date. Poter aggiungere e sottrarre giorni, mesi e anni da una precisa data, oppure calcolare la differenza tra due date inserite.
Un'applicazione semplice che mi ha dato modo di conoscere il controllo panorama, ed iniziare a conoscere il toolkit (controlli aggiuntivi per Windows Phone) che ho utilizzato nel selettore delle date.

- Baby Calculator

http://windowsphone.com/s?appid=707ef9e0-6fe0-44cf-92b2-4e8b66a86a9b

In questo caso la calcolatrice è solo una "scusa" per far usare l'app. Nella realtà è nata per aiutare l'associazione tra numero scritto e la relativa pronuncia per i bambini...infatti alla pressione dei tasti numerici, il numero premuto viene anche "letto" da una voce.
Nell'ultima versione ho aggiunto la possibilità di far registrare l'audio che verrà riprodotto alla pressione dei tasti numerici, in modo di dare la possibilità ai genitori di utilizzare la loro voce oppure per far divertire i bambini registrandoci dei suoni e rumori.
Con quest'app ho approfondito così tutto l'aspetto che riguarda la registrazione e riproduzione audio, per non parlare anche dell'IsolatedStorage utilizzato per il salvataggio dell'audio registrato.

Se avete modo di provarle (specialmente Baby Calculator) ogni feedback è sempre ben accolto ;-)

Conclusioni

Sviluppare per Windows Phone è proprio piacevole. I tool di sviluppo fanno poi l'enorme differenza (rispetto le altre piaforme tipo android e iphone) e permettono di realizzare applicazioni con (quasi) estrema facilità. Microsoft, con Visual Studio ci stà proprio viziando per bene.

Ed ora una nota da utente finale: da quando stò utilizzando il nokia lumia 800 come telefono principale, ammetto di non aver sentito proprio la mancanza di android (se non per un paio di funzionalità devvero minori). 

Speriamo veramente che Windows Phone prenda piede il più possibile!

 

Start Something! Tour – Windows 8 e WP7.5 

Per chi voglia provare questa esperienza, ricordo che ci sarà un lab  a Mestre (Start Something! Tour – Windows 8 e WP7.5 ) il 3 maggio 2012 ed è sufficiente registrarsi qui http://www.xedotnet.org/Home/Meeting/201205031

Buon sviluppo a tutti

Tags:

.NET | Generale | Tempo libero

Non sono sparito

by Andrea 11 April 2012 02:52

E' da parecchio che non scrivo in questo blog, o meglio, è da parecchio che non scrivo post che non riguardino solo le mie sessioni.
Da parecchio tempo mi ripeto di ricominciare a scrivere, perchè di cose da scrivere ce ne sarebbero molte...ma twitter e facebook sono molto più rapidi, e spesso prediligo una frase li piuttosto che un post in questo blog...ma vediamo di cambiare queste cose.

Iniziamo

Sono passati parecchi mesi da quando ho lasciato definitivamente il lavoro da dipendente, e le cose sono cambiate davvero parecchio.

Lavorare come un mulo

Continuo a lavorare come un mulo, forse addirittura più di prima....ma ora lo faccio per me e non per gli altri. So che portare la pagnotta a casa dipende solo da me, quindi spetta a me compiere le scelte giuste, e portarle avanti nel modo che ritengo giusto. Almeno so che pagherò per errori miei, e non (come successo in passato) per errori di altri.

Nuove tecnologie

Ho iniziato ad affrontare/utilizzare tecnologie di cui avevo solo letto articoli o seguito sessioni, ed è qui che le community sono state di primaria importanza...aver seguito meeting su ogni tecnologia, o aver letto articoli a riguardo, mi stà tornando proprio utile, e mi ha permesso di accettare lavori che hanno portato a molte altre opportunità.
Ero sempre riuscito a mantenermi al passo per quello che riguardava ASP.NET (che è sempre la mia tecnologia principale), ma ora finalmente affronto anche progetti WPF, Windows Phone, ed altri...con maggiore sicurezza.

A volte son soddisfazioni

Parlare direttamente con i clienti e vedere in loro la soddisfazione per ciò che gli hai consegnato, è impagabile...era difficile da dipendete avere un responsabile/capo che ti facesse capire quanto il tuo lavoro fosse importante (o che si complimentasse per il risultato raggiunto). Ora invece i complimenti arrivano a me, come anche le eventuali rogne...ma questo è il nostro mestiere. Non sono sempre soddisfazioni, ma quando arrivano ti fanno (quasi) dimenticare i momenti bui.

Prof

Ho anche iniziato a fare il docente per alcuni moduli web per http://www.tecnicosuperiorekennedy.it/ e devo ammettere che anche dopo parecchi mesi ancora non mi sono abituato a sentirmi chiamare "prof". Ma che soddisfazione vederli crescere...

Tirando le somme

Sono ancora pienamente convinto della scelta che ho fatto, e se tornassi indietro, la rifarei con ancora maggiore sicurezza.
Non ho smesso di lavorare le sere o i fine settimana....ma sono certo (e datemi pure dell'illuso) che prima o poi ci riuscirò :-P

Tags:

+1 | Generale