1nn0va – WebCongress 3.0 – Venerdì 16 Aprile 2010

Venerdì 16 Aprile 2010 a partire dalle ore 17.00, si terrà l’evento più importante dell’anno organizzato da 1nn0va. L’evento con le sue cinque sessioni avrà luogo presso il:

Consorzio Universitario di Pordenone
Via Prasecco, 3/a 33170 – Pordenone
Tel. 0434 / 523072 – Fax 0434 / 27502
info@unipordenone.it
SESSIONE 1: ASP.Net MVC 2.0
Relatore: Marco Parenzan
L’imminente rilascio del framework .NET 4.0 porta con sé una nuova versione, la 2.0, del recente framework per applicazioni web ASP.NET MVC.
Ripercorreremo gli elementi fondamentali del pattern Model-View-Controller e la struttura di una applicazione ASP.NET MVC.
Vedremo soprattutto come la community abbia fatto maturare velocemente questo framework osservando le nuove funzionalità in questa versione, implementate in una sessione tutta live-coding.
INIZIO SESSIONE ORE 17:00
SESSIONE 2: Silverlight 4.0
Relatore: Marco Parenzan
Quando i css e jQuery non sono più sufficienti per dare dinamicità ed efficacia ai contenuti del nostro sito, possiamo passare ad un livello nuovo di presentazione: le Rich Internet Application.
Da sempre appannaggio della tecnologia Flash di Adobe, ora abbiamo a disposizione il framework .NET nel browser con Silverlight.
Vedremo cosa significa scrivere codice .NET per Silverlight, cosa significa scrivere una interfaccia utente con XAML in una sessione tutta live-coding.
INIZIO SESSIONE ORE 18:00
SESSIONE 3: CSS 2.0
Relatore: Pietro Vian
A fine anni ‘90, il W3C ha ratificato l’uso del secondo livello dei Cascading Style Sheets, che rispetto alle versioni precedenti ha aggiunto novità atte a rendere più semplice, completa e standard la programmazione dell’aspetto grafico di un sito Web.
Ad oggi, nonostante tutti i browser siano conformi al CSS2, possiamo dire che lo fanno “in maniera non sufficientemente simile”, ciò comporta maggior frustrazione per il web designer a causa degli innumerevoli test a cui è sottoposto in fase di creazione del layout.
Tuttavia, così come si evolvono i browser, continua ad evolversi lo stesso linguaggio CSS, che ad oggi con particolari tecniche permette effetti grafici degni della migliore interfaccia client.
Vedremo pertanto come, superati i primi ostacoli di cross-browsing, un web designer possa adottare i fogli di stile per rendere il proprio sito non solo più piacevole agli occhi, ma anche più veloce, interattivo e user-friendly.
INIZIO SESSIONE ORE 18:45
SESSIONE 4: jQuery
Relatore: Sandro Marcon
Ormai è sotto gli occhi di tutti, la tendenza è inarrestabile: le classiche applicazioni standalone stanno ogni giorno sempre più lasciando il posto alle web application.
Differenti sono le problematiche che si presentano, ma un buon framework su cui basare tutto l’applicativo è sempre un ottimo punto di partenza.
Varie le alternative che ci si presentano di fronte: jQuery una delle più valide!
In questa sessione introduttiva vedremo quali sono i motivi che rendono “necessario” l’uso di un framework come jQuery, analizzeremo a fondo le sue peculiarità di base e concluderemo con una carrellata delle varie funzionalità che ci mette a disposizione.
INIZIO SESSIONE ORE 19:45
SESSIONE 5: Entity Framework 4.0 vs NHibernate
Relatore: Manuel Scapolan
Con la nuova release dell’Entity Framework Microsoft cambia strategia in fatto di accesso ai dati, il database relazionale non deve più essere il punto di partenza nella progettazione di applicazioni, ma solo un modo di salvare le informazioni del dominio.
Vedremo in questa sessione come l’Entity Framework ci può aiutare a persistere agevolmente gli oggetti di un dominio in un parallelo con NHibernate che della “Persistence Ignorance” ne ha fatto un cavallo di battaglia.
INIZIO SESSIONE ORE 20:45
Vuoi un consiglio? Partecipa… o non vorrai farti superare dalle nuove tecnologie senza neppure conoscerle?
Iscriviti alla pagina eventi del nuovo sito. Ti aspettiamo!
Per ogni tipo di informazione o chiarimento, inviare una mail a info@1nn0va.net.
Vari modi di iterare su un array in Javascript
Davvero interessate questo post che ho trovato in ajaxian che illustra un gran numero di modi per iterare su un array in javascript.
Davvero molto eleganti alcune soluzione sintattiche che molto si avvicinano alla programmazione funzionale.
Web-page: cambio testo ad intervalli
Spesso, in una web-page, può risultare molto utile alternare diverse scritte di testo in determinate aree: lo scopo, aggiungendo i necessari fogli di stile (CSS) può essere quello di ottenere una sorta di bacheca/display con informazioni che cambiano ad intervalli regolari.
La cosa può essere fatta senza troppa fatica utilizzando, lato client, le dovute funzioni javascript. Ovviamente, se le stringhe da alternare sono contenute nel codice (javascript), si va a perdere “materiale informativo”: in sostanza Google indicizzerà il sito in questione senza “valutare” le stringhe di testo aggiunte “by code” (lato client attraverso javascript).
Requisito: tutte le nostre stringhe che si alterneranno nella parte di visualizzazione dovranno, per forza di cose, essere presenti nel markup della pagina.
Qui di seguito espongo la mia soluzione, o meglio, l’inizio della mia soluzione: tempo permettendo spero di poter ampliare il codice riportato sotto fino ad ottenere una sorta di mini-libreria. Obiettivi finali del progetto:
- realizzare una soluzione “multi standard” che supporti sia pagine statiche (XHTML) che pagine dinamiche (ASP.NET e PHP);
- ottenere una soluzione flessibile che permetta di definire il testo in un file XML (per le pagine dinamiche);
- appoggiarsi alla libreria javascript jQuery.
Ecco la mia soluzione allo stato embrionale.
var current = -1
var max;
function timerEvent()
{
var Div = document.getElementById("bacheca");
if(Div != null)
{
var i;
var count;
if(current < 0)
{
for (i = 0, count = 0; i < Div.childNodes.length; ++i)
{
if(Div.childNodes[i].tagName == "DIV")
{
if(count < 1)
{
showDiv(Div.childNodes[i]);
}
else
{
hideDiv(Div.childNodes[i]);
}
++count;
}
}
current = 0;
max = count;
}
else
{
++current;
if(current >= max)
{
current = 0;
}
for (i = 0, count = 0; i < Div.childNodes.length; ++i)
{
if(Div.childNodes[i].tagName == "DIV")
{
if(count == current)
{
showDiv(Div.childNodes[i]);
}
else
{
hideDiv(Div.childNodes[i]);
}
++count;
}
}
}
setTimeout(timerEvent, 5000);
}
}
function showDiv(obj)
{
obj.style.display = "";
}
function hideDiv(obj)
{
obj.style.display = "none";
}
<div id="bacheca" style="height: 140px;"> <div>Text 0</div> <div>Text 1</div> <div>Text 2</div> <div>...</div> <div>Text n</div> </div>
La funzione javascript [timerEvent] va collegata all’evento [onLoad] della pagina. Saranno visualizzate alternativamente ed in successione i vari DIV (contenuti nel DIV con id “bacheca”), quindi avremo: “Text 0”, “Text 1”, “Text 2”, …, “Text n”, “Text 0”, … Ovviamente il DIV “contenitore” va impostato ad un’altezza predefinita se si vogliono evitare ridimensionamenti (e riposizionamenti) ad ogni “cambio testo”.
In questo esmpio, il testo viene cambiato ogni 5 secondi (vedere linea 60 di codice javascript).
Best Practice in JavaScript e xHTML
Giusto un mese fa, in Smashing Magazine, è comparso un post (che usa come “base della discussione” anche la libreria JavaScript jQuery) interessante che riporta una serie di linee guida nell’uso di JavaScript: in particolare viene posta molta attenzione sulla possibilità che il browser non sia in grado di eseguire il codice JavaScript (come spesso accade in molti PDA).
La mia attenzione è stata catturata in particolare dalla regola numero 2: NEVER Depend on Javascript.
Bad practice
<script language="javascript">
var now = new Date();
if(now.getHours() < 12)
document.write('Good Morning!');
else
document.write('Good Afternoon!');
</script>
Soluzione proposta
<p title="Good Day Message">Good Morning!</p>
var now = new Date();
if(now.getHours() >= 12)
{
var goodDay = $('p[title="Good Day Message"]');
goodDay.text('Good Afternoon!');
}
Non sono molto d’accordo circa il best practice proposto, motivo: una parte dei contenuti viene ancora generata dinamicamente via JavaScript , sottraendo quindi questi ultmi all’indicizzazione da parte dei motri di ricerca (ricordo che i motori di ricerca non “eseguono” gli script presenti o “invocati” nella pagina). In sostanza, come sostiene da tempo il mio caro amico Francesco Boschian: tutti i contenuti devono essere sempre presenti nella pagina, non generati “dinamicamente” via scripting (vedere come buon esempio il sito della Apple).
Qui di seguito propongo una soluzione molto “artiginale e grezza”, ma che nella sua modestia rappresenta un valido workaround per aggirare la cosa.
<input type="hidden" id="str1" value="Good morning!" /> <input type="hidden" id="str2" value="Good afternoon!" /> <p title="msg">Good Morning!</p>
var now = new Date();
if(now.getHours() >= 12)
{
var toSet = $('#str2').value;
}
else
{
var toSet = $('#str1').value;
}
var msg = $('#msg');
msg.text(toSet);
Evidente, purtroppo, la ripetizione della stringa “Good morning!”. Se però lato server possiamo sfruttare famework quali PHP o Asp.Net, il codice può diventare assai più “gradevole alla vista” .










