Silverlight: Animare un oggetto e sottoscrivere un evento.

Animare un oggetto
Un canvas è uno dei contenitori che possiamo usare in Silverlight.
Il Canvas è un contenitore non consigliato da Microsoft nelle WPF, perchè non
si autoridimensiona ed ha una posizione fissa all’interno dell’area, quindi il
suo utilizzo ritorna utile solo in casi particolari.
Purtroppo, attualmente è anche l’unico contenitore disponibile nella
versione 1.1, quindi lavoreremo con questo.
Seguendo la logica WPF immagino che in futuro avremo a disposizione
degli oggetti più carini.
 
Progetto
Una volta creato il nostro progetto i file disponibili saranno:
·         TestPage.html
·         Silverlight.js
·         Page.xaml
·         Page.xaml.cs
La TestPage.html e il file Silverlight.js sono i file di riferimento affinchè
l’applicazione possa caricare il plugin di Silverlight.
Il file su cui lavoreremo è Page.xaml e il relativo file managed
(useremo C#).
Il file Page.xaml si presenterà così:
 
<Canvasx:Name="parentCanvas"
        xmlns="http://schemas.microsoft.com/client/2007"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Loaded="Page_Loaded"
        x:Class="SilverlightContest.Page;assembly=ClientBin/SilverlightContest.dll"
        Width="640"
        Height="480"
        Background="White">
</Canvas>
 
Queste poche righe di XAML definiscono un Canvas di larghezza
uguale a Width e altezza Height e con un colore di fondo uguale a Background.
Niente di più facile immagino!
All’interno del nostro Canvas ne aggiungeremo un’altro che ci servirà
per indetificare un’area che useremo come pulsante.
 <Canvasx:Name="CanvasButtonCustomer"Background="Orange" Canvas.Left="0"
   Canvas.Top="10"Width="100"Height="40">
    <TextBlockFontFamily="Tahoma"FontSize="18"Text="Customers"/>
</Canvas>
 
L’elemento TextBlock all’interno del Canvas viene usato per scrivere in
un’area, in questo caso il canvas.
In pratica non abbiamo fatto altro che crea un’area denominata
CanvasButtonCustomer e gli abbiamo associato, posizione, colore,
grandezza e un testo al suo interno.
Ricordatevi che la proprietà x:Name è importante se avete intenzione
di far riferimento all’oggetto XAML tramite codice managed.
Definisce il nome della variabile da usare.
Una volta compilato il progetto nella directory obj/Debug
(se siamo in debug) troverete un file del tipo Page.g.cs dove al suo
interno troverete l’elenco delle variabili definite nell’XAML.
Storyboard
L’elemento Storyboard è fondamentale quando vogliamo creare
un’animazione di un oggetto.
Esistono vari tipi di animazioni:
·         ColorAnimation
·         ColorAnimationUsingKeyFrames
·         DoubleAnimation
·         DoubleAnimationUsingKeyFrames
·         PointAnimation
·         PointAnimationUsingKeyFrames
Oggi useremo una DoubleAnimation utile a cambiare le proprietà numeriche.
Lo Storyboard può partire o quando un oggetto viene caricato (esempio per
un’animazione che va in loop) o quando si determina un evento.
Noi utilizzeremo quest’ultimo caso.
Per far ciò bisogna definere un StoryBoard come Risorsa.
 <Canvas.Resources>
      <Storyboardx:Name="StoryBoardMenuOut"
                  Storyboard.TargetName="CanvasButtonCustomer"
                  Storyboard.TargetProperty="(Canvas.Left)">
        <DoubleAnimationTo="0"Duration="0:0:1"/>
    </Storyboard>
</Canvas.Resources>
 
Questo tipo di risorsa così definite varierà il valore di
 Canvas.Left in un secondo, portandolo al valore assoluto
in pixel uguale a 0.
Per delle animazioni e/o oggetti così semplici è utile
svilupparli a mano in modo da capir bene come lo
XAML funziona.
Per qualcosa di più complicato si consiglia l’uso di Blend 2,
attualmente in fase di sviluppo.
A questo punto il nostro file Page.xaml apparirà così:
<Canvasx:Name="parentCanvas"
        xmlns="http://schemas.microsoft.com/client/2007"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Loaded="Page_Loaded"
        x:Class="SilverlightContest.Page;assembly=
                        ClientBin/SilverlightContest.dll"
        Width="640"
        Height="480"
        Background="White"
        >
 
<Canvas.Resources>
      <Storyboardx:Name="StoryBoardMenuOut"
        Storyboard.TargetName="CanvasButtonCustomer"
                  Storyboard.TargetProperty="(Canvas.Left)">
        <DoubleAnimationTo="0"Duration="0:0:1"/>
    </Storyboard>
</Canvas.Resources>
 
<Canvasx:Name="CanvasButtonCustomer"Background="Orange"
          Canvas.Left="-90"Canvas.Top="10"
          Width="100"Height="40">
    <TextBlockFontFamily="Tahoma"FontSize="18"
Text="Customers"/>
</Canvas>
 
</Canvas>
 
Definizione di un evento
Tramite questa sezione si inizia ad intravedere una parte di ciò
che Silverlight 2 offrirà agli sviluppatori.
Mentre con la prima release eravamo sempre e comunque legati
a Javascript (cosa che noi odiamo), nella seconda release,
Javascript, verrà confinato in un angolino.
Ecco, ad esempio, come gestiremo un evento sul nostro canvas
usando codice managed.
File Page.xaml.cs:
public void Page_Loaded(object o, EventArgs e)
{
// Required to initialize variables
InitializeComponent();
 
CanvasButtonCustomer.MouseEnter += new MouseEventHandler(CanvasButton_MouseEnter);
}
 
void CanvasButton_MouseEnter(object sender, MouseEventArgs e)
{
StoryBoardMenuOut.Begin();
}
 
Chiunque di noi ha avuto a che fare con codice managed almeno
una volta, non avrà alcuna difficoltà a capire le righe di codice riportate su.
Con queste semplici righe di codice di XAML e di C#, abbiamo creato il nostro primo,
brutto, bottone animato.
Nei prossimi articoli proverò a spiegare gli altri elementi del, sin’ora, piccolo
Silverlight SDK, con la speranza di arrivare tutti pronti all’evento del rilascio.

 

Tags:

Silverlight 1.1: introduzione

Una volta tornato a casa dal Workshop "Web Development 2008" in Microsoft Italia, ho deciso di iniziare a studiare Silverlight  e far qualche test.
Ho deciso di saltar a pier pari Silverlight 1.0, per quanto è stato detto dal relatore (Dino Esposito) e al TechEd 2008.
Introduzione
Questo post è rivolto a chi non ha ancora installato l’ambiente di sviluppo necessario per poter lavorare con Silverlight. A seguire ne verranno altri con qualche esempio, via via, spero, sempre più utili per le nostre applicazioni.
Innanzitutto cos’è Silverlight.
Silverlight è un plugin (attualmente supportato da Windows, Mac e in futuro da Linux) il quale, si spera, cambierà il modo di intendere i contenuti fruiti tramite il web.
Microsoft con Silverlight vuole dar la possibilità, hai propri sviluppatori, di poter creare degli smart-web-client togliendosi dai piedi tutti i concetti ormai più che vecchi del web (Javascript in primis).
Per poter vedere in funzione gli esempi che farò, dovrete far riferimento a http://www.silverlight.net per installare gli strumenti necessari allo sviluppo.

 

Tags:

SDL (Parte 4: Conoscenza)

Conoscere
In Microsoft sono fieri di ciò che stanno ottenendo con SDL.
Secondo loro le motivazioni principali allo sviluppo di software sempre più sicuro sono:
·         Supporto
·         Conoscenza (cit: education and awareness)
Per Microsoft bisogna educare i propri sviluppatori sulla sicurezza del software.
Non possiamo pensare che tutti sappiano come fare software sicuro ne, tanto più, capire se il software che stiamo producendo sia sicuro o no.
Come hanno fatto in Microsoft
In Microsoft per educare adeguatamente i propri dipendenti, hanno tenuto alcuni corsi interni su i seguenti punti:
·         Software engineering principles
·         Lessons learned from past projects
·         Software architecture
·         Testing methods
·         Transaction technology
·         Relibility
·         Scalability
·         Understanding future technical directions
·         Various technologies, such as XML, ASP, SOAP, and so on
·         Programming languages
·         Interface design
·         Accessibility
In più ciclicamente fanno delle sezioni sulla sicurezza basate su come lavorare con la sicurezza e non come scrivere software sicuro.
È fondamentale che le persone su cui si sta puntando capiscano perchè scrivere software sicuro.
 
 Educazione
In Microsoft, almeno una volta l’anno, fanno un corso per il proprio staff (project leader o, cit., engineering staff) sulla base della sicurezza:
·         Secure software design, development e testing
·         Fuzz testing: vedremo più avanti cos’è
·         Threat modelling: vedremo anche questo più avanti. Basti sapere che è un metodo capire le incrinature nel design che abbiamo implementato prima di produrre qualcosa.
·         Implementing Threat Mitigations: Aiuta gli sviluppatori a decidere come scegliere il metodo più appropriato per attenuare o trovare una contromisura su un bug trovato.
·         Security Design and Architecture: Time-Tested Design Principles: vedremo più Avanti
·         Introduction to the SDL and Final Security Review (FSR) Process: Prepara il gruppo di sviluppo al final security review, affinchè non vi siano intoppi. Solitamente questo step è rivolto ai senior developer che dovranno schedulare i tempi di produzione.
·         Security Tools Overview
·         Performing Security Code Reviews: Questo corso punta ad insegnare come guardare correttamente il codice alla ricerca di bugs, a capire quali sono i potenziali problemi a cui il nostro software andrà incontro.
·         Secure Coding Practices: Come scrivere codice sicuro non solamente applicando le giuste pratiche precedentemente insegnate, ma usando anche i secure coding patterns.
·         Security Bugs in Detail: Verranno analizzati i bugs sulla sicurezza in dettaglio, facendo vedere i vari bugs nei software prodotti e verrà scritto un elenco di questi bugs, dove verranno appuntante: cause, com’è stato ridotto o (meglio) eliminato il problema.
·         Attack Surface Analysis (ASA) and Attack Surface Reduction (ASR): I sviluppatori verranno guidati sul come diminuire l’area d’attacco della nostra applicazione; facendola rimanere utile per il nostro cliente :D
·         Exploit Development: Come creare degli exploit per ottenere dei vantaggi sulle vulnerabilità.
·         Build Requirements: A questo corso bisognerà far partecipare tutte le persone che hanno a che fare con le build del software. In grosse società come Microsoft, questo processo è giornaliero e, sempre giornalmente, vengono utilizzati i tools di sicurezza sulla nuova build.
·         Security Response: Vedremo in futuro
·         Cryptography by Example: Auto esplicativo
·         Customer Privacy: Come sopra. Alla base questo corso include aspetti legali sulla privacy dei dati, protezione dei dati (data lifecycle), PETs (privacy-enhancing technologies) e integrità dei dati.
Se la tua azienda crea o usa del software di immagazzinamento dati privati di utenti o dati “sensibili”, i responsabili dovranno DEVONO conoscere le nozioni base sulla privacy e sulla sicurezza.
 Esercizi e laboratori
Esercizi e laboratori sono uno degli strumenti che più aiutano lo studente a capire i concetti fondamentali che si stanno affrontando.
Questi laboratori/esercizi in Microsoft hanno la durata di 30 min.
 
 Conclusione
Secondo Microsoft:
·         Formare
·         Mantenere
·         Valutare
Sono fondamenti indispensabili affinchè un’azienda possa creare del software sicuro.
Formare le capacità dei propri dipendenti e mantenerne le conoscenze (vuoi tenendoli in seno all’azienda vuoi perchè continui a formarli) sono investimenti necessari.
La valutazione è tanto indispensabile quanto i due punti precedenti affinchè si possa capire se stiamo investendo sul cavallo vincente.
 

Tags: