Tag: webdev

  • Rec Room: una toolchain per lo sviluppo web creata da Mozilla

    Segnalo quest’interessante framework rilasciato da Mozilla, Rec Room, che contiene una toolchain per lo sviluppo di applicazioni web.

    Non è qualcosa di nuovo: contiene tutte le liberie opensource più diffuse come Handlebar, Ember.js and Stylus [per citarne alcune].

    L’installazione è molto semplice, via npm (npm install -g recroom).

    Dateci un’occhiata: la prossima web-application che realizzerò userò sicuramente Rec Room!

     

  • IIS e Office: come risolvere il problema COMException (0x80004005)

    Ultimamente mi è capitato un problema a runtime durante l’utilizzo di un’applicazione .NET che accedeva ad Office (più in particolare a PowerPoint).

    L’applicazione genera, server side, un file PowerPoint. Tuttavia il processo si blocca durante l’invocazione di PowerPoint con un errore poco parlante (“PowerPoint could not open the file“), nonostante il file PowerPoint da utilizzare come base di partenza sia effettivamente presente nella directory indicata nel source code:

    System.Runtime.InteropServices.COMException (0x80004005): PowerPoint could not open the file. at Microsoft.Office.Interop.PowerPoint.Presentations.Open(String FileName, MsoTriState ReadOnly, MsoTriState Untitled, MsoTriState WithWindow) at

    Dopo un po’ di ricerca, per risolvere questo problema si deve creare una directory vuota (provare per credere) in questa posizione, in base al sistema operativo su cui gira IIS:

    Windows 2008 Server x64 - C:\Windows\SysWOW64\config\systemprofile\Desktop
    Windows 2008 Server x86 - C:\Windows\System32\config\systemprofile\Desktop

    Riavviate IIS, e non otterrete più l’errore indicato.

  • HTML5 e CSS avanzato: una guida per (re)-impararli

    Nonostante HTML5 sia ancora un release candidate al momento della scrittura di questo post, molte delle peculiarità del linguaggio sono supportate dai browser più evoluti (Chrome, Safari, Firefox, Opera ed IE10).

    Ho deciso di fare un ripasso delle principali istruzioni di typesetting (e di imparare anche i nuovi tag) presenti in HTML5 e delle principali proprietà presenti in CSS. Per questo ripasso mi sono affidato a due guide ben scritte da Shay Howe:

    • Guida base HTML/CSS (comprende anche HTML5 e CSS3). Non fatevi ingannare dalla presenza della parola “base”, perché i concetti esposti sono tutt’altro che base. Per esempio, grazie a questa guida ho ripassato il box-model e il posizionamento degli elementi in CSS [vi ricordate la differenza tra static, relative, absolute e fixed?]. Segnalo anche la presenza della guida ai gradienti CSS3, un’esauriente carrellata di tutte le lists [sapete usare una definition list?], i nuovi controlli per i form in HTML5, gli onnipresenti nuovi tag per audio/video ed infine le tabelle [sapete cos’è la property border-collapse?];
    • Guida avanzata HTML/CSS. Dopo aver assimilato i concetti presenti nella guida precedente, in questa guida segnalo alcuni concetti interessanti come gli sprite CSS, i selettori CSS composti (:nth-child), i preprocessori HTML e CSS (haml e SASS).

    Entrambe le guide sono ben fatte e ricche di consigli preziosi come la minification, l’abilitazione di mod_gzip e tante altre informazioni utili. Da salvare nei bookmark!

  • AJAX per applicazioni web: la mia recensione

    ajax_applicazioni_web

    Nell’epoca del Web 3.0 ho letto questo libro che tratta (a grandi linee, come vi spiegherò tra poco) di AJAX, la enabling technology del Web 2.0.

    Ma cos’è AJAX? È un insieme di tecnologie (tra cui Javascript e XML) che permettono lo scambio di dati tra client e server in modo asincrono, permettendo di realizzare le cosiddette RIA (Rich Internet Applications, come Gmail).

    Il libro è molto compatto (342 pagine) ed è composto da 12 capitoli. A mio avviso il libro è fin troppo generico e discorsivo; si dilunga infatti un po’ troppo sulla teoria tralasciando la parte pratica, a volte presentando listati di codice senza nemmeno spiegarli. Inoltre, ci sono alcuni capitoli in cui si assiste ad alcune divagazioni discorsive che non portano da nessuna parte (si introducono Python, Django, Ruby, Rails e PHP ma non vengono poi utilizzati). Solo nel capitolo introduttivo viene spiegato il funzionamento di xmlHttpRequest e come utilizzarlo: dopodiché, nel libro, non verrà quasi più menzionato.

    Il libro è utile a chi vuole ottenere una panoramica teorica delle tecnologie utilizzate per lo sviluppo web, ma non di più.

  • Primi passi con CSS3: creiamo un gradiente e bottoni dagli angoli arrotondati (rounded corners)

    La versione in sviluppo di CSS, la versione 3, introduce alcune novità molto interessanti per gli sviluppatori web.

    In questo post vi parlerò di due funzionalità molto interessanti, introdotte in CSS3:

    • Un box con lo sfondo a gradiente (sfumatura da un colore all’altro);
    • Un bottone con gli angoli arrotondati (rounded corners).

    A lato vi anticipo, con uno screenshot, il risultato finale (il compito di trovare browser decenti è lasciato come esercizio al lettore).

    Il supporto a CSS3 è, comunque, ancora in fase sperimentale. Il mio consiglio è quello di testare con tutti i browser (soprattutto IE) il proprio lavoro prima di rilasciarlo.

    [A proposito: browsershots è un servizio gratuito che visualizza la pagina richiesta usando tutti i browser disponibili. Il funzionamento è molto semplice: specifichiamo una pagina e scegliamo i browser di cui vogliamo gli screenshot; una volta realizzati gli screenshot li possiamo scaricare sul nostro PC e visualizzarli.]

    Iniziamo quindi con la prima funzionalità di CSS3: i gradienti. Per realizzare un gradiente sono necessarie poche righe di CSS:

    #container {
            [...]
        border: 1px solid #FBDCAE;
        filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFF', endColorstr='#FBDCAE'); /* Gradiente: IE */
        background: -webkit-gradient(linear, center top, center bottom, from(#FFFFFF), to(#FBDCAE)); /* Gradiente: Chrome e Safari */
        background: -moz-linear-gradient(top,  #FFFFFF,  #FBDCAE); /* Gradiente: Firefox */
    }
    

    In particolare, tralasciando l’istruzione riguardante il border, abbiamo introdotto tre direttive per realizzare il gradiente. Notiamo che in tutte le istruzioni è obbligatorio specificare il colore iniziale (bianco, #FFFFFF) e il colore finale (arancio, #FBDCAE). In particolare

    • La prima riguarda il browser IE. Specifichiamo soltanto i colori iniziali e finali:
      filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFF', endColorstr='#FBDCAE');

    • La seconda istruzione riguarda il browser basati su WebKit (Chrome e Safari). In questo caso abbiamo alcune possibilità di customizzazione, come ad esempio il tipo di gradiente (lineare o radiale), la direzione del gradiente (dall’alto verso il basso, da un angolo all’altro, etc.). Nel nostro caso, abbiamo realizzato un gradiente lineare partendo dall’alto verso il basso, e partendo dal bianco per arrivare all’arancio. Per avere più informazioni sui parametri che possiamo passare, vi invito a leggere Safari CSS Visual Effects Guide: Gradients.
      background: -webkit-gradient(linear, center top, center bottom, from(#FFFFFF), to(#FBDCAE));
    • Infine, l’ultima istruzione riguarda le direttive per realizzare il gradiente per il browser Firefox. Anche in questo caso specifichiamo il colore di partenza e quello di arrivo, e la direzione del gradiente (parte dall’alto con un gradiente lineare). Per avere più informazioni sull’istruzione vi invito a leggere la pagina di riferimento su Mozilla Developer Center, -moz-linear-gradient:
      background: -moz-linear-gradient(top,  #FFFFFF,  #FBDCAE)

    Passiamo ora ai pulsanti con gli angoli arrotondati (rounded corners). In questo caso, come avete visto dagli screenshot precedenti, IE non supporta la specifica per i rounded corners (e quindi presenta i “soliti” pulsanti rettangolari, a meno di usare workarounds).

    Le istruzioni CSS3 necessarie per avere bordi arrotondati sono molto semplici:

    input {
        -moz-border-radius: 10px;
        -webkit-border-radius: 10px;
        [...]
    }
    

    Andiamo con ordine:

    • Per il browser Firefox, specificando -moz-border-radius e un valore corrispondente, si introduce un bordo arrotondato con raggio di curvatura pari al valore in pixel specificato (nel nostro caso 10 pixel).
    • Per Safari e Chrome, utilizziamo la proprietà -webkit-border-radius e un valore corrispondente, come nel caso precedente.

    Fine! Ora potete utilizzare i gradienti e i rounded corners nelle vostre pagine web. Come avete visto, possiamo applicare le proprietà descritte ad ogni elemento (non solo agli input come ho descritto nel post, ma anche ai div, vedete i sorgenti allegati!).