Microsoft Project 2010 Course
24 lug
Here you can find the training material for the Microsoft Project 2010 Course at V.Ships (Monaco).

Lesson 1 – Monday, 19th July
Lesson 1 (Slides) – Print Version
Lesson 2 – Monday, 26th July
Lesson 2 (Slides) – Print Version
Lesson 2 (Exercises)
Lesson 3 – Thursday, 29th July
Lesson 3 (Slides) – Print Version
Lesson 3 (Exercises)
Lesson 4 – Monday, 2nd August
GeneralMarine Store: maritime & land mobile
23 lug
- CMS Gestione contenuti multilingua
- Ottimizzazione del sito per il miglior posizionamento sui motori di ricerca (SEO)
- URL SEO-Friendly
- Integrazione con Google Products
- Google Sitemap
- Ottimizzazione “Exceptional Performance“
- Gestionale e-Commerce
- Applicazione web ASP.NET MVC 2 con database SQL Server 2008
ASP.NET MVC 2
29 mag
ASP.NET MVC 2 il nuovo Framework realizzato da Microsoft all’inizio del 2009 per la creazione di applicazioni Web. Questo nuovo paradigma adotta un approccio completamente differente dai tradizionali Web Forms che sono stati introdotti con il .NET Framework nel 2020. Invece di usare uno stile di programmazione basato su “eventi”, ASP.NET MVC implementa il patternet Model-View-Controller ottenendo una migliore separazione degli ambiti applicativi e rendendo l’applicazione più facile da estendere e testare. La versione 1.0 è stata scaricata ed usata da qualsi un milione di sviluppatori nel primo anno del suo rilascio, diventando sempre più popolare mese dopo mese. Tuttavia questa versione è carente su alcuni aspetti cosiddetti “enterprise”; così, nel marzo 2010 viene rilasciata la versione 2, sviluppata sopra la versione precedente e quindi completamente compatibile con esse; ciò significa che le conoscenze, competenze e codice scritto continuano ad essere validi e funzionare nel passaggio alla nuova versione.

ASP.NET MVC 2 introduce le seguenti novità:
- Templated Helpers – accelera e semplifica la creazione di HTML per visualizzare e manipolare dati
- Client-Side Validation – introduce una validazione client-side basata sempre sull’approccio metadata
- Area - è possibile organizzare grandi applicazioni in sezioni logiche più piccole
- Asynchronous Controllers – permette di eseguire task di lunga durata su thread separati liberando le risorse del server ed evitando timeout sulla richiesta HTTP
- Child Actions – permette un ulteriore grado di incapsulamento di logica e presentazione
- Strongly Typed UI Helpers – venegono aggiunte nuovi funzioni agli UI Helper esistenti
Riferimenti:
Riviera dei Sogni
15 apr
- CMS Gestione contenuti multilingua (italiano, tedesco, inglese) con la possibilità di associare le diverse lingue a domini diversi (http://www.rivieradeisogni.it per l’italiano, http://www.ferienhausligurien.com per il tedesco)
- Sistema di prenotazione e pagamento di acconto tramite Paypal
- Gestione della disponibilità degli appartamenti e delle tariffe con granularità settimanale sul controllo di prezzi e servizi
- Ottimizzazione per i motori di ricerca (SEO) secondo le tecniche allo stato dell’arte
- Interfaccia utente rich basta su JQuery e relativi plugin (JQuery UI, Validate, CrossSlide, TinyMCE, iColorPicker, AdGallery, FullCalendar, Autocomplete, BlockUI, ScrollTo)
- Galleria fotografiche integrate con Google Picasa
- Applicazione web ASP.NET MVC 1 con database SQL Server 2008
Immobiliare Casamare
17 mar
- CMS Gestione contenuti multilingua con la possibilità di associare le diverse lingue a domini diversi (www.casamare.net per l’italiano, www.liguriahomes.com per l’inglese)
- Ottimizzazione del sito per il miglior posizionamento sui motori di ricerca (SEO) attraverso un’attenta gestione e presentazione dei contenuti, delle parole chiave, della struttura di navigazione, delle landing pages, l’uso di URL SEO-friendly, l’uso sitemap in modo da permettere la completa indicizzazione di tutte le pagine, moduli di ricerca e link veloci alle principali sezioni e tipologie di immobile.
- Gestionale Amministrativo
- Immobili
- Contatti
- Motore di Ricerca che associa immobili e contatti in base alle preferenze richieste dal cliente in modo da proporgli velocemente la soluzione migliore per lui
- Controllo sulla pubblicazione online degli immobili (differenziata per le diverse lingue)
- Esportazione dati in Excel
- Modulo di comunicazione per inviare (via email o SMS) suggerimenti ai clienti su immobili che hanno le caratteristiche da loro richiesti
- Integrazione con i blog aziendali e social newtorks (Twitter) tramite la lettura di feed RSS
- Galleria fotografica di ciascun immobile e integrazione con Google Picasa
- Controllo di accesso con ruoli utente differenziati e separazione delle competenze (immobili, clienti) sulle diverse agenzie
- Integrazione con Google API
- Interfaccia utente rich basta su JQuery
- Applicazione web ASP.NET MVC 1 con database SQL Server 2008
Appunti di Programmazione Web
10 dic
Ho inziato a scrivere gli appunti per il modulo di Programmazione Web per il corso programmatori. Il documento è un work-in-progress per cui consiglio agli studenti di evitare di stamparlo finché le singole parti non avranno una forma semi-definitiva.
Cloud Computing e Google App Engine
17 ott
“The network is the computer.”
John Gage – Sun Microsystems
Ehi! Lì fuori! Datevi una svegliata! Il futuro dello sviluppo della creazione di applicazioni web è arrivato e si chiama “Cloud Computing”. Ma di cosa si tratta? Cercando sulla rete si trovano termini come “il supercomputing del 21° secolo”, il “nuovo nome del cluster computing” o “un altro termine di marketing senza senso”. Probabilmente è tutte e tre queste cose assieme. Facciamo un passo indietro. Prima dell’avvento dei PC c’erano i mainframe, enormi super-computer conservati i stanze speciali e continuamente monitorati da tecnici specializzati; a questi “cervelloni” si collegavano dei terminali stupidi (nel senso che erano dotati solo di tastiera e schermo). Quando si diffusero i PC i terminali vennero sostituiti da computer completamente funzionali, dotati di periferiche, hard-disk e altro. I mainframe sono sopravvissuti ma la maggior parte degli utenti a iniziato ad eseguire i programmi sui propri PC. A questo punto si sono simultaneamente sviluppati quattro approcci:
- Le applicazioni web si sono evolute, in alcuni casi facendo da supplenti per applicativi desktop come email o elaborazione di documenti e in altri casi sviluppando applicativi completamente nuovi come Wikipedia e Facebook che possono esistere solo in un contesto “connesso” alla rete
- I web service e il protocollo REST sono diventati modalità efficienti per la comunicazione tra le applicazioni. I siti web vengono quindi configurati per fornire sia una risposta interattiva agli utenti umani sia una risposta machine-readable per un programma
- Ne i centri dove si trovano i supercomputer, i tecnici hanno scoperto che possono realizzare le operazioni sostituendo un grosso mainframe con un cluster di normali PC che elaborano in parallelo. In questo modo è inoltre possibile aumentare la capacità di calcolo semplicemente aumentando il numero dei server nei cluster. Inoltre i guasti che avvengono su alcuni server non bloccano l’intero sistema perché questi vengono semplicemente esclusi dall’elaborazione e rapidamente sostituiti.
- Virtualizzazione. In questo modo è possibile far girare moltissimi computer virtuali (puramente software) ciascuno con il proprio sistema operativo su di un singolo computer fisico. Questa tecnica permette agli ISP (Internet Service Provider) di offrire un server completo ad un prezzo molto basso evitando allo stesso tempo che un utente danneggi l’intero sistema a causa di un malfunzionamento di un suo programma bacato.
Il cloud computing è essenzialmente la convergenza di questi quattro trend. Si tratta di usare un servizio su di un computer che si trova “da qualche parte” e la cui manutenzione è a carico di “qualcun altro”. Questo servizio può essere un completo sistema operativo (come il servizio EC2 di Amazon) oppure un servizio più ristretto come un database online o un sistema di elaborazione di carte di credito.
Una delle caratteristiche primarie del cloud computing è la scalabilità: il provider del cloud monitora costantemente l’utilizzo del servizio e aggiunge dinamicamente risorse all’applicazione se necessario.
Ma veniamo a Google App Engine, l’offerta di cloud computing lanciata da Google. Possiamo pensare App Engine come ad un hosting per applicazioni web. Tipicamente però un account di hosting fornisce un accesso ad un singolo server, mentre il cloud di Google è costituito da centinaia di server sparsi per il mondo che si distribuiscono le copie dell’applicazione in modo che qualunque server possa essere in grado di rispondere ad una richiesta, o perché è poco carico in quel momento o perché si trova geograficamente vicino all’utente. App Engine fornisce inoltre accesso al database scalabile BigTable, lo stesso che supporta applicazioni come Google Maps o Google Search. BigTable è distribuito su molti server ed è in grado di servire gigabytes di dati ogni secondo. BigTable non è però un database relazionale, tuttavia App Engine fornisce un interfaccia per gli sviluppatori (chiamata DataStore) con un approccio molto simile a quello di una struttura a tabelle.Sicuramente una grande attrattiva di App Engine è il prezzo. Piccoli siti web con un basso profilo di traffico sono completamente gratuiti, mentre siti più grandi pagano un costo incrementale con la quantità di risorse che utilizzano. Questo è perfetto per degli startup che non dispongono delle risorse finanziarie da spendere per mantenere delle risorse inutilizzate ma che hanno bisogno di scalare nel momento in qui la popolarità del portale cresca all’improvviso. La quota gratuita è di 500 MB di spazio per l’applicazione e un consumo di CPU e banda per servire circa 5 milioni di page views al mese.
App Engine vs Amazon EC2
Amazon EC2 offre dei server virtuali completi che vengono fatturati in base all’impiego orario di CPU. EC2 si trova quindi a metà tra App Engine e le offerte di server virtuali (ad esempio Aruba). I server virtuali vengono fatturati su base mensile o annuale e richiedono un paio di giorni per essere operativi. EC2 permette di salvare un immagine del proprio server contenente la configurazione software desiderata ed è possibile accendere o spegnere le istanze dei server attraverso una semplice interfaccia web amministrativa. EC2 fattura solo il tempo di CPU, questo è molto conveniente per un istanza creata e distrutta in un breve periodo di tempo ma risulta molto più costoso di una normale offerta di server virtuale se si lascia l’istanza accesa continuamente per mesi. App Engine non fa pagare nulla se l’applicazione non viene usata, inoltre scala verso l’alto se il carico aumenta e verso il basso se il carico diminuisce. In definitiva EC2 è un servizio molto utile ma non è pensato esclusivamente per le applicazioni web (come lo è invece App Engine). EC2 permette di far girare qualunque tipo di applicazione scritta con qualunque linguaggio (compresa la piattaforma Microsoft .NET grazie alla virtualizzazione di server Windows 2003). App Engine limita invece lo sviluppatore all’uso di Python e (solo di recente) Java. Google offre anche molti altri servizi nel cloud, tra cui l’immancabile search, Gmail, YouTube, GData API, Calendar, Google Docs, Checkout (per l’elaborazione di carte di credito), ecc. Molte di queste applicazioni possono essere usate direttamente da un’applicazione App Engine.
Gli altri servizi di cloud offerti da Amazon sono Simple Queue Service, Flexible Payment Service (simile a Google Checkout), SimpleDB (un servizio di base di dati molto simile a BigTable) e S3 (Simple Storage Service), un utile servizio che a sua volta potrebbe essere utilizzato da App Engine. Infatti App Engine non permette di memorizzare file o record di database di dimensione superiore a 1 MB, quindi file più grandi devono essere letti e salvati da un servizio web esterno. Google ha annunciato che offrirà a breve un proprio servizio per lo storage di file di grosse dimensione, ma al momento S3 è l’alternativa migliore.
App Engine vs Microsoft Azure
La piattaforma Azure di Microsoft ha una prospettiva molto più ampia rispetto ad App Engine, comprendendo un set di servizi più ampio oltre ad una profonda integrazione con i prodotti Microsoft (in particolare le future versioni di Windows e Office) e i tool di sviluppo di .NET come Visual Studio. Queste caratteristiche rendono Azure molto attraente per coloro che già usano e hanno competenze con questi prodotti. Il limite sulle dimensioni dei singoli file è più comoda (64 MB). Penso di trattare Azure in modo più approfondito in un prossimo post.




