override.tostring.it
Anche se non come speravo, ce l’ho fatta. Il mio blog in inglese è ufficialmente online.
Il dominio è alquanto particolare per noi tecnici: override.tostring.it . Lo stile del blog è lo stesso, quindi principalmente web, ma con la speranza di tornare a bloggare con la stessa frequenza di un anno e mezzo fa.
Per chi mi segue, il blog in inglese non sarà una replica di quello italiano, quindi potrete trovare contenuti esclusivi della versione inglese e viceversa.
Purtroppo il tempo non mi permette di scrivere un post in entrambe le lingue, ma di sicuro alcuni post saranno presenti in forme differenti su entrambi i blog.
Purtroppo il blog gira su Wordpress. Dico purtroppo non per parlare male di Wordpress ma perché non sono riuscito a trovare il tempo di creare una build stabile di Dexter.
Spero di trovare il tempo (o i collaboratori) per arrivare ad una buona build e migrare il tutto.
Tornando al blog, le idee sono tante e le scoprirete nei mesi a seguire, quindi…. Stay tuned!
Website: override.tostring.it
Rss: http://feeds.feedburner.com/override/tostring/it
Here we go….Web.NET Conference Europe
Dopo l’annuncio, prima via Twitter e poi tramite il blog di Simone, eccomi qui a “sponsorizzare” la mia prima conferenza da organizzatore e non da speaker.
Se siete appassionati di web e volete vedere/conoscere come il mondo dello sviluppo web si sta evolvendo, non potete mancare.
Salvo cambiamenti nei prossimi giorni la conferenza si terrà ad ottobre - non abbiamo ancora le date ufficiali per via della location - e al 95% siamo su Milano.
La conferenza è Europea, quindi le sessioni saranno in Inglese, e dovrebbero esserci diversi speaker internazionali.
Giusto per darvi un assaggio di cosa si parlerà, eccovi un estratto:
“Advanced JavaScript frameworks, HTML5, REST frameworks, cloud, lightweight http servers, real-time web, low-cerimony web frameworks, and much more...
both on .NET and other technologies”
Abbiamo creato una pagina di lancio dove è possibile registrarsi (grazie alle quasi 120 persone che lo hanno già fatto), un account Twitter @webnetconf (l’hashtag è #webnet12) ed una pagina Facebook.
Nei prossimi giorni comunicheremo location e date ufficiali.
Se vi sentite parte del futuro del web, preparate le vostre proposte perché la Call For Paper sta arrivando.
Stay tuned!
There's an app for that
Negli ultimi tempi, non essendo riuscito a bloggare con constanza a causa dei molti impegni, non ho avuto modo di comunicare l’esistenza di un’applicazione di tostring.it per Windows Phone.
L’applicazione è nello store da diversi mesi, è ovviamente gratuita e la potete scaricare qui. Quello che offre è piuttosto prevedibile: gli ultimi post e le stupidaggini che scrivo su Twitter J.
L’app è “Mango enabled” ed offre la possibilità di avere le notifiche “tile” e “toast” con un check periodico del feed del blog (ovviamente potete disabilitare il tutto).
Questa applicazione non esisterebbe se non fosse per il buon Matteo, quindi un grazie è d’obbligo.
Cosa curiosa, che ovviamente mi ha fatto molto piacere, è stato scoprire che oggi (quindi ieri per chi legge il post) l’applicazione è tra le feature app del marketplace, come potete vedere dallo screenshot seguente:
Qui alcuni screenshot dell’app:
Buon download!
I Bundle di ASP.NET MVC 4
L’ultima release (attualmente in beta) di ASP.NET MVC, di cui abbiamo visto alcune novità qui e qui, introduce veramente molte feature interessanti, una delle quali è rappresentata dai Bundle.
Ormai noi tutti conosciamo l’importanza di ridurre al minimo il numero di richieste dal client verso il server. Quando parliamo di riduzione delle richieste, includiamo un po’ tutto: dai fogli di stile, ai javascript, e magari anche i dati tramite l’utilizzo di AJAX.
Per i primi due viene utilizzata la tecnica del “combine” e “minify” di più file in un’unica richiesta. Questo approccio consiste nel raggruppare tutti i files dello stesso tipo in un unico file, e nel rimuovere tutti gli spazi e commenti non necessari.
Tradotto in soldoni, tutte queste richieste che abbiamo nella pagina :
<script src="/Scripts/jquery-1.6.2.min.js"></script> <script src="/Scripts/jquery-ui-1.8.11.min.js"></script> <script src="/Scripts/jquery.validate.min.js"></script> <script src="/Scripts/jquery.validate.unobtrusive.min.js"></script> <script src="/Scripts/knockout-2.0.0.js"></script>
Diventano una sola
<script src="/Scripts/combined.js"></script>
Ovviamente lavorare con un file unico, che sia questo un file javascript o css, risulta un po’ scomodo e, proprio per questo motivo, esistono diversi tool/framework che agevolano la creazione di un unico file a runtime o compile time.
Con ASP.NET MVC 4 effettuare il “combine” e “minify” è veramente semplice: basta utilizzare un apposito metodo ed il gioco è fatto.
Guardiamo il seguente codice:
<link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Content/css")" rel="stylesheet" type="text/css" />
<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Scripts/js")"></script>
È importante sapere che non tutti i files presenti nella folder specificata saranno inclusi nell’output del file, ma bensì solo quelli registrati nel bundle. In un prossimo post vedremo come creare bundle custom in modo da includere differenti file in differenti folder.
Stay tuned!
Il 3D sbarca anche sul web
Questa volta non stiamo parlando di animazioni 3D per il web, bensì per lo sviluppatore e non servono gli occhialini J.
Per molti anni Firebug è stato sicuramente lo strumento più apprezzato dagli sviluppatori front end. Ad oggi tutti i browser integrano un qualcosa di simile e, nell’ultima versione, Firefox ha aggiunto un’interessantissima novità, la visualizzazione 3D della struttura del sito.
Per capire a cosa mi sto riferendo, guardate questo screenshot :
Per attivarla basta fare tasto destro sulla pagina, “Inspect Element” e premere il pulsante 3D come da screenshot:
Una volta entrati nella modalità 3D è possibile “zoomare”, ruotare e selezionare elementi con il semplice utilizzo del mouse.
Ciauz
.u
Il Tilde Slash di Razor V2
Su segnalazione del buon Andrea, ho scoperto che, oltre ai “conditional attributes”, Razor introduce un’altra novità chiamata “Tilde Slash” ossia “~/”.
Il concetto è simile a quello espresso in un mio vecchio post su Spark (vedi qui), con la differenza che in Spark si può specificare un dominio differente (molto comodo se si usa CDN).
In ogni caso l’utilizzo del Razor, con il Tilde Slash, aiuta lo sviluppatore nella scrittura del codice prendendosi in carico l’onere di risolvere automaticamente la url, eliminando così le noiose ripetizioni del ResolveUrl.
Dando un occhio al codice, questo markup
<img src="@Url.Content("~/Content/mylogo.png")" />
con Razor v2 diventa semplicemente questo
<img src="~/Content/mylogo.png" />
Beh comodo no?
What’s new in Razor v2
Nel rilascio di ASP.NET MVC 4 è inclusa anche la nuova release dell’ormai diffusissimo Razor View Engine. Per chi non lo sapesse Razor è un “framework” che offre la possibilità di scrivere il codice presente nelle view con una sintassi differente da quella delle classiche pagine ASP.NET.
Prima di Razor, nel mondo Microsoft, l’utente era abituato ad utilizzare il WebFormViewEngine anche sotto ASP.NET MVC ma, essendo MVC molto orientato al testing, la scelta di creare un’alternativa è quasi d’obbligo.
Di fatto Razor non ha più una dipendenza verso System.Web.UI.Page, e di conseguenza dall’ HttpContext, Web Server (IIS), etc.
Questo permette allo sviluppatore di poter scrivere unit test anche per le View (quanti di voi lo hanno mai fatto?).
Dopo questa premessa sulla storia di Razor, andiamo a vedere cosa offre la nuova release J.
Al momento l’unica novità di rilievo che ho riscontrato è quella che dal team viene chiamata con il nome “Conditional Attribute”, ossia la possibilità di renderizzare o no un determinato attributo, il cui valore è dinamico, e quindi legato ad una variabile.
Per renderla più semplice, diamo un’occhiata al seguente codice:
<!-- Nome della classe css presa da una variabile --> <p class="@myCssClass">.....</p> <!-- markup necessario in caso la variabile sia nulla --> <p>.....</p>
Come potete vedere, la variabile myCssClass viene utilizzata per impostare la classe css appunto, in base ad un qualcosa (un evento, un settaggio, etc) gestito server side.
Ma cosa succede se dovete gestire anche la possibilità di non impostare la classe?
Precedentemente a Razor V2 l’approccio sarebbe stato più o meno questo:
@{
var myCssClass = (bool)ViewBag.IsBol ? "boldClass" : null;
}
@if(myCssClass != null){
<p class="@myCssClass">@ViewBag.Text</p>
}
else{
<p>@ViewBag.Text</p>
}
Al contrario, con la nuova release di Razor, diventa tutto più semplice. Se impostate il valore della variabile myCssClass a null l’attributo non viene renderizzato, in caso contrario si.
<p class="@myCssClass">@ViewBag.Text</p>
Bisogna prestare attenzione al fatto che il contenuto string.empty (nel caso di una stringa) renderizza ugualmente l’attributo, quindi solo null impedisce il rendering.
Nel caso di value type tipo il booleano, la situazione non cambia molto. In questo caso il true renderizza l’attributo checked, mentre il false no.
<!-- codice con -->
@{
ViewBag.IsBol = true;
}
<input type="checkbox" checked="@ViewBag.IsBol" />
Razor Rulez!
Review: Architecting Mobile Solutions for the Enterprise
È la prima volta che mi capita di fare la review di un libro e, per essere alla prima esperienza, devo dire che ho l’opportunità di farlo per uno dei migliori autori internazionali che il mondo tecnico possa avere, il Super Dino Nazionale aka Dino Esposito.
Il libro in questione è “Architecting Mobile Solutions for the Enterprise” e, come potete intuire dal nome, parla di mobile application.
Nonostante io abbia una predilezione verso le applicazioni web, questo libro mi ha subito affascinato perché affronta tematiche molto web oriented come HTML5, jQuery, etc per sviluppare applicazioni mobile.
Nell’ultimo periodo in azienda sono stato coinvolto nello sviluppo di applicazioni con queste caratteristiche (nel mio caso Sencha Touch al posto di JQuery Mobile, ma poco cambia) ed ho avuto modo di toccare con mano quanto Dino spiega.
Tornando al libro ho letto il capitolo sul responsive design, sia client-side tramite le media queries che server side con l’utilizzo di Wurfl, e devo dire che mi è piaciuto parecchio.
Dino è riuscito come sempre ad arrivare in profondità di concetti complessi, spiegandoli tuttavia in maniera del tutto semplice, il che rende ancor più appetibile il libro.
Purtroppo non posso entrare molto nei dettagli in quanto il libro non è ancora disponibile, ma potete effettuare il pre-ordine da qui.
Problemi con Razor e Visual Studio 2011
Chi come me si sta divertendo nel testare ASP.NET MVC 4 e lo sta facendo con Visual Studio 2011, avrà sicuramento riscontrato dei problemi di stabilità da parte dell’editor Razor che causa continui freeze della UI.
Tale problema non si verifica ogni qualvolta si cerca di editare una view realizzata con Razor, ma quando si cerca di indentare il codice HTML.
Inizialmente avevo attribuito il problema a Resharper, in quanto la versione installata è una super preview ma, una volta disinstallato quest’ultimo, ho notato che il problema persisteva e a quel punto è scattato il piano B: Google.
A primo colpo ecco la soluzione:
Basta andare su Tools => Options => Text Editor => HTML => Tab ed impostare l’indenting option su Smart.
A questo punto Visual Studio torna a funzionare senza particolari crash e con Resharper J
Internet Explorer si aggiorna
Oggigiorno siamo circondati da una quantità di device a dir poco imbarazzante, dalle centinaia (ed anche troppe) distro di Android, fino ad arrivare a computer Windows based. All’interno di ognuno di questi device è presente un browser che, a causa della velocissima crescita dell’HTML5, richiede continui aggiornamenti per stare al passo con le specifiche che si stanno man mano stabilizzando all’interno del W3C.
Tempo fa Google con Chrome ha introdotto una sorta di “Silent update”, che consiste in un “servizio” Windows che ha il compito di controllare ed installare eventuali aggiornamenti del browser.
L’aspetto positivo di questo approccio è che l’utente non deve preoccuparsi di verificare se esiste una patch o una nuova versione del browser, mentre il lato negativo è il non controllo di ciò che avviene sulla nostra macchina (l’utente non riceve notifica di nessun aggiornamento).
Questa strada si è dimostrata molto positiva, e di fatto tutti gli utenti con Chrome hanno installato l’ultima versione (17.x in questo momento), tant’è che Microsoft ha deciso di intraprendere lo stesso percorso aggiornando automaticamente tutte le versioni di Internet Explorer alla 9 in maniera del tutto automatica.
Tale aggiornamento offre sicuramente un set di vantaggi lato utente indiscutibili, dalle performance alla sicurezza (Internet Explorer 9 si è dimostrato il browser più sicuro), oltre al supporto per HTML5.
Personalmente sono molto curioso di sapere se Microsoft sfrutterà questa tecnica anche per aggiornare IE9 con un subset di features HTML5 che questo non supporta. Di fatto Microsoft ha deciso di intraprendere una strada diversa da altri vendor tipo Google, implementando solo le specifiche mature i cui cambiamenti da qui alla chiusura dell’HTML5 saranno minimi se non nulli.
Fortunatamente/sfortunatamente (a seconda dei punti di vista) dall’uscita di IE9 molte features (websocket, fileapi, offline, input type, etc) sono “salite di grado” e risultano ora mature, tanto da poter essere promosse su un browser con IE9. La casa di Redmond ha dimostrato il suo interesse verso queste feature, e di fatto possiamo testarle su IE10 e Win8, quindi non mi stupirebbe se ci fosse un upgrade anche verso questo aspetto.
Maggiori informazioni su IE9 e l’auto update sono disponibili in questo bellissimo post.
Ciauz
Archive