Esplora E-book
Categorie
Esplora Audiolibri
Categorie
Esplora Riviste
Categorie
Esplora Documenti
Categorie
ioProgrammo
PER ESPERTI E PRINCIPIANTI Poste Italiane S.p.A Spedizione in A.P. • D.L. 353/2003 (conv.in L.27/02/2004 n.46) art.1 comma 2 DCB ROMA Periodicità mensile • DICEMBRE 2006 • ANNO X, N.12 (109)
FATE IL VOSTRO
C#
CREA UN GENIO
MICROSOFT XNA GAME STUDIO • GESTIONE DELLA MEMORIA IN C++ • JAVA ECHO2 • BORLAND INTERBASE 2007• ECOMMERCE CON PAYPAL
PER GLI UTENTI
Impara a programmare
VIDEOGIOCO
i Wizard: le procedure guidate
che aiutano ad usare il software
VB.NET
ESPRESSIONI
REGOLARI
CON IL NUOVO XNA GAME STUDIO DI MICROSOFT Ecco il trovatutto che scova
programmare il tuo sparatutto personale diventa le stringhe nascoste
nel testo in un battibaleno
veramente esageratamente semplice! ASP.NET
STRUMENTI JAVASCRIPT E .NET
Non sono la coppia più
Installiamo il software necessario bella del mondo, ma noi
li mettiamo d’accordo
e integriamolo con Visual Studio
ECOMMERCE
TEORIA CON PAYPAL
Sviluppa un intero sistema
Struttura di un’applicazione. di commercio elettronico
Ecco le classi fondamentali spendendo poco o niente
ed il loro funzionamento
TO JAVA
TUTD E
IL CO IC IL CODICE DEL
PRATICA nel CD
La guida passo passo per GIOCO IN BORSA
Prendi le informazioni
realizzare il primo game 2D. dalla rete, mettile in un DB
e il gioco è fatto
Le basi per iniziare a muoversi
nella terza dimensione VISUAL BASIC
PERSONALIZZA
IL TUO AMBIENTE
SOFTWARE “SICURO”? Migliora l’IDE e automatizzalo
con le funzioni che servono a te
ESTENDI SQL SERVER
FACCIAMOLO CON C++
10 “linee guida” per gestire bene la memoria ed evitare
Usa Visual Basic 6 con il tuo
database preferito e inoltre
rendilo più potente
bug che possono dare origini a Exploit e Virus
OVERVIEW
ASP.NET JAVA Borland
GESTIAMO LE REPORT AJAX? WEB 2.0 INTERBASE
MAILING LIST NO PROBLEM SÌ FATICA NO 2007 veloce, più
Più sicuro, piùmai. Ti diciamo
Dall’iscrizione all’invio della Svincoliamoci dai programmi Arriva Echo2 il framework moderno che va versione
tutto sulla nuofatto la storia
posta. Creiamo una web commerciali. Ecco il codice che ti porta nella nuova rete del DB che ha
application che fa tutto che azzera le spese senza farti impazzire
EDIZIONI MASTER
SOLUZIONI: PROGRAMMA CON GLI ALGORITMI GENETICI
UN ROBOT INTELLIGENTE CHE SVILUPPA AL POSTO TUO www.edmaster.it
058-063 31/10/06 11:14 Pagina 58
PAGAMENTI ONLINE:
FACILE CON PAYPAL
IN UN SITO DI E-COMMERCE L’IMPLEMENTAZIONE DI UN MECCANISMO DI PAGAMENTO
È UNO DEI PASSI CRUCIALI. TRA LE TANTE SOLUZIONI OFFERTE DAGLI ISTITUTI DI CREDITO
ESAMINIAMO PAYPAL. VEDREMO COME SVILUPPARE UNA SOLUZIONE CON .NET
D
a una parte ci siamo noi, per usare il bisogna interagire con la soluzione offerta da
termine tecnico il merchant, ovvero la un istituto di credito che, in linea di massima,
nostra applicazione di E-Commerce ripete lo schema appena esposto.
dall’altra c’è un’applicazione residente nell’i- Scendendo nei dettagli, programmare una
stituto di credito che contabilizza il pagamen- soluzione di Payment Gateway significa pro-
to della merce venduta nel nostro sito; sono grammare i messaggi che intercorrono tra la
due scenari paralleli che entrano in relazione nostra applicazione e quella residente nell’isti-
attraverso un sistema di Payment Gateway. tuto di credito che, internamente, per quanto
J CD J WEB Tutto quanto riguarda il passaggio e l’accredito ci riguarda, rimane una sorta di scatola nera; In
Paypal SDK.net Reloaded.rar di contante non può risiedere nel database questo articolo svisceriamo il Payment
cdrom.ioprogrammo.it
della nostra applicazione ma deve, necessaria- Gateway offerto da Paypal nell’inedito porting
mente, essere collocato altrove, ovvero in verso .net 2.
un’applicazione parallela sviluppato ad hoc
nell’ambito di un istituto di credito; Il nome in
codice di questo software è Payment Gateway
e, per intenderci, funziona come esposto nella PAYPAL VISTO DA VICINO
Fig.1. Abbiamo chiarito, in linea di massima, il funziona-
mento di un sistema di Payment Gateway;
La Fig. 2 illustra specificatamente quello implemen-
tato in Paypal
h t t p : / / w w w. i o p r o g r a m m o . i t
G 58 /Dicembre 2006
058-063 31/10/06 11:14 Pagina 59
h t t p : / / w w w. i o p r o g r a m m o . i t
Dicembre 2006/ 59 G
058-063 31/10/06 11:14 Pagina 60
PaymentAction e PayerID che provengono dal pre- verso acquirenti malintenzionati che, dopo aver
cedente GetExpress CheckoutDetailsResponse. effettuato un acquisto, bloccano il trasferimento di
Il server Paypal risponde con GetExpressCheckout fondi dalla loro carta di credito o altro. Esiste anche
DetailsResponse che include il TransactionID ed altri la possibilità di annullare o rimborsare il pagamen-
elementi. Il cliente, finalmente, riceve una mail con to. Concretamente, tutto questo viene implementa-
i dati di conferma dell’acquisto; Quest’ultimo passo to nelle pagine omonime del SDK
costituisce il terzo Integration Poin.
Per quanto riguarda il codice della relativa pagina DoAuthorization
ExpressCheckout nel SDK DoCapture
DoVoid
Protected Sub CheckoutButton_Click(ByVal sender As
Object, ByVal e As EventArgs) Nel dettaglio, se guardiamo il Code Behind della
pagina DoAuthorization, ovvero della pagina nella
Me.PaymentAction = codice che controlla il tipo quale il cliente opziona una merce
di pagamento a seconda del
parametro passato dalla query string Imports com.paypal.soap.api
h t t p : / / w w w. i o p r o g r a m m o . i t
G 60 /Dicembre 2006
058-063 31/10/06 11:14 Pagina 61
Me.VoidSuccessfulLiteral.Visible =
Me.PayPalResponse.Ack = AckCodeType.Success
OrElse Me.PayPalResponse.Ack = UN CASO CONCRETO
AckCodeType.SuccessWithWarning Chiarendo il funzionamento del SDK abbiamo
compreso le funzionalità di base che caratterizzano
End Sub di Paypal. Ora è venuto il momento di mettere a
fuoco l’attenzione su casi concreti.
Nota che anche la pagina dedicata al Nel paragrafo precedente abbiamo visto degli
DoDirectPayment Authorization si riferisce al tipo esempi a ‘basso livello’, dedicati alla program-
di pagamento differito Authorization & Capture mazione delle API, ma le soluzioni migliori che
Paypal offre sono semplici pezzi di codice
HTML, creati al volo raccogliendo i dati che
immettiamo in Form dedicati, pronti per essere
CONSULTARE LO STORICO ‘copiati & incollati’ nella nostra applicazione;
DELLE TRANSAZIONI per intendersi i tipici pulsanti:‘Paga adesso’,
Per finire è possibile effettuare una ricerca tra le ‘Carrello PayPal’, ‘Donazione’ed altri sono realiz-
transazioni effettuate con Paypal partendo dalla zati proprio in questo modo: tra queste soluzio-
pagina TransactionSearch ni ve ne una che è discretamente diffusa ma che
non viene mai trattata adeguatamente…
Protected Sub SearchButton_Click(ByVal sender As Immaginate un sito web nel quale è possibile
Object, ByVal e As EventArgs) prendere visione, dietro pagamento, di alcune
sezioni private del sito, ma solo per un determi-
Dim api As PayPalAPI = New PayPalAPI() nato periodo di tempo; si tratta di uno scenario
Dim startDate As DateTime = (parametri ricevuti dai tipico che Paypal risolve con una tecnica deno-
campi del WebForm) minata di “Subscriptions and Recurring
Dim endDate As DateTime =(parametri ricevuti dai Payments”. Per implementarla è appunto suffi-
campi del WebForm) ciente copiare ed incollare il codice HTML gene-
rato dal sito Paypal;
h t t p : / / w w w. i o p r o g r a m m o . i t
Dicembre 2006/ 61 G
058-063 31/10/06 11:14 Pagina 62
Mentre vi rimando alla documentazione uffi- Business o Premier nel sito Paypal e, nel pro-
ciale per una informazione più dettagliata è prio profilo, selezionare ‘Modifica’ dalla sezio-
comunque utile dare un’occhiata a questo ne ‘Preferenze per Notifica immediata del
codice pagamento’ specificando poi l’indirizzo della
pagina nella nostra applicazione al quale
<form action=”https://www.paypal.com/cgi- Paypal invierà il messaggio IPN ( nota che il
bin/webscr” method=”post”> nome in codice di questo url è ‘URL di notifi-
<input type=”hidden” name=”cmd” value=”_xclick- ca’).
subscriptions”> In alternativa, per i più smanettoni, è possibile
<input type=”hidden” name=”business” value=”mail aggiungere manualmente il campo notify_url
dell’account Paypal del Merchant“> nel codice HTML del nostro bottone specifi-
<input type=”hidden” name=”item_name” cando l’ url dello script che gestisce IPN.
value=”Nome della sottoscrizione”> Una volta ricevuto il messaggio IPN la nostra
<input type=”hidden” name=”item_number” applicazione, per evitare tentativi di truffa,
value=”Identificativo numerico deve inviare una risposta al server Paypal;
della sottoscrizione”> Il nome in codice di questa risposta è ‘convali-
<input type=”hidden” name=”image_url” da della notifica’ e può venire realizzata
value=”URL del proprio logo da conservarsi in un
server https per evitare il messaggio “La pagina • attraverso l’invio di una ‘password condivisa’
contiene oggetti protetti e non protetti” “> utilizzando una query string in un server SSL
<input type=”hidden” name=”no_shipping” (ad esempio
value=”1”> https://www.miosito.com/UrlDiNotifica.
<input type=”hidden” name=”return” aspx?password=pippo)
value=”URL della pagina del proprio sito alla quale • inviando un post
andare dopo la conclusione positiva
dell’abbonamento“> per motivi di brevità, ed anche di comodità,
<input type=”hidden” name=”cancel_return” considerando la relatività difficoltà ed i costi
value=”URL della pagina del proprio sito alla quale nell’utilizzare un server SSL, analizziamo solo
andare qualora venga interrotta la procedura di l’opzione che richiede l’invio del post.
abbonamento da parte dell’utente”> In breve se volessimo creare un sito che offre
<!-- Parametri omessi relativi alla durata contenuti a pagamento per i propri utenti uti-
dell’abbonamento, alla rateizzazione, lizzando Paypal dovremmo
al rinnovo, etc.
--> 1. installare nella nostra applicazione il codice
<input type=”hidden” name=”custom” value=”è del bottone che innesca la procedura di
possible impostare parametri personalizzati”> “Subscriptions”, copiato & incollato da
Paypal
</form> 2. Creare una pagina che registri i nostri uten-
ti nel database una volta che l’IPN ricevuto
Naturalmente, durante la procedura di genera- da Paypal e la successiva ‘convalida della
zione del codice HTML, è possibile cifrare tutti notifica’ abbiano avuto un esito positivo;Nel
questi parametri utilizzando il formato PKCS7 dettaglio una pagina del genere potrebbe
che è, tipicamente, quello utilizzato per la crit- essere
tografia della posta elettronica.
Per gestire la risposta che Paypal invia verso la
nostra applicazione al termine della procedura Imports System.Net
di “Subscriptions and Recurring Payments”, Imports System.IO
ovvero l’esito positivo dell’abbonamento, la Imports System.Text
scadenza, la revoca e quant’altro, è possibile Imports System.Web.Mail
utilizzare Istant Payment Notification (IPN); Imports System.Collections.Specialized
per intendersi IPN è una risposta che il server Public Class SB_IPN
Paypal invia ad una pagina dedicata nella Inherits System.Web.UI.Page
nostra applicazione allo scopo di innescare le Private Sub Page_Load(ByVal sender As
opportune operazioni di Back End, ovvero nel System.Object, ByVal e As System.EventArgs)
caso preso in esame, l’iscrizione dell’utente Handles MyBase.Load
che ha pagato nel nostro database. 'Put user code to initialize the page here
Scendendo nel dettaglio per implementare IPN Dim strFormValues As String =
è sufficiente accedere al proprio account Request.Form.ToString()
h t t p : / / w w w. i o p r o g r a m m o . i t
G 62 /Dicembre 2006
058-063 31/10/06 11:14 Pagina 63
h t t p : / / w w w. i o p r o g r a m m o . i t
Dicembre 2006/ 63 G
SPECIALE MACCHINE VIRTUALI
ioProgrammo
PER ESPERTI E PRINCIPIANTI Poste Italiane S.p.A Spedizione in A.P. • D.L. 353/2003 (conv.in L.27/02/2004 n.46) art.1 comma 2 DCB ROMA Periodicità mensile • OTTOBRE
APRILE 2007 • ANNO
2007 • ANNO
XI XI,
• N.4
N.10
(113)
(119)
IL TUO CODICE SU SECOND LIFE • PROGRAMMA IL TUO ROBOT • TRACCE ISO DAI NOSTRI PROGRAMMI • EFFETTI SPECIALI NELLE APPLICAZIONI
Il tuo codice su XPS
ICROSOFT
L'ALTERNATIVA MF
AL PD
ificare
Ecco come mod ni affinché
le tue applicaozioil nuovo
supportin
formato!
.NET
DAI UNA CACHE
AL TUO SOFTWARE
Crea, sviluppa e vendi Quando i dati sono tanti,
ecco le tecniche per ottenere
gli oggetti che popolano comunque prestazioni elevate
GRANDE FRATELLO
l'universo digitale CON IL GPS
Ricevi le coordinate e mostra
LE BASI usa subito il Linden la posizione dell'apparecchio
Scripting Language e l'ambiente su una mappa di Google
di sviluppo JAVASCRIPT
HELLO WORLD disegna il tuo FRAME NASCOSTI
primo oggetto e fallo parlare QUASI COME AJAX
Sfrutta gli Hidden frame. Ottimizza
quando lo tocchi con il mouse il caricamento delle pagine ed aggira
il problema del reload
IL MOVIMENTO fai spostare
le tue creazioni, seguendo
fedelmente le leggi della fisica CORSI BASE
EFFETTI COMPOSTI metti insieme • WxWidgets
Il posizionamento
più oggetti e animali in sincronia dei controlli
• PocketPC
PROGRAMMA IL TUO ROBOT
Con Microsoft Studio Robotics bastano pochi click di mouse per progettare
Programmazione
degli Smartphone
un sistema completo e simularne il comportamento prima di assemblare i pezzi • Java Server Faces
Gestione dei dati
.NET JAVA JAVASCRIPT attraverso JDBC
TRACCE ISO DAI EFFETTI SPECIALI TRASFORMAZIONI • UML Cosa sono
NOSTRI PROGRAMMI PER LE APPLICAZIONI XSLT LATO SERVER e come funzionano
Leggi e crea i dati in formato CD Crea interfacce grafiche Stessi dati, output diverso. i diagrammi di stato
o DVD direttamente dal tuo software sofisticate con le Swing Bug Basta cambiare pochi parametri
EDIZIONI MASTER
SOLUZIONI ALGORITMI DI SCHEDULING: QUANDO VUOI
PROGRAMMARE UNA SERIE DI ATTIVITÀ CI SONO MOLTE POSSIBILI
SOLUZIONI, ECCO QUELLE PIÙ EFFICACI www.edmaster.it
001-iop119.indd 1 3-09-2007 18:29:26
024-029:072-080 31-08-2007 15:52 Pagina 24
T
utto nasce da un articolo di Bill Gates sul-
l’autorevole rivista americana Science inti-
tolato “A robot in every home”…
Il Chief Architect di Microsoft racconta che, negli ul-
timi anni, in occasione di visite alle principali Uni-
versità americane, tra i progetti che gli venivano
presentati, ve ne era costantemente almeno uno
dedicato all’automazione ed alla robotica…
J CD J WEB Bill Gates ha riflettuto su tutto questo e con un au-
VisualRoboticsStudio.rar
dace volo di fantasia ha ritrovato delle somiglian-
ze tra l’attuale scenario della cibernetica e quello del-
cdrom.ioprogrammo.it l’informatica, all’epoca in cui lui e Steve Allen muo-
vevano i primi passi…
Per essere protagonista anche di questa rivoluzio- Figura 1: L’ambiente di programmazione di Visual
ne prossima ventura ha promosso il rilascio una Studio Robotics
serie di software adeguati alla programmazione
dei Robot;
Visual Robotics Studio è appunto l’ambiente di
programmazione che Microsoft dedica alla ciber- SERVICES
netica; Evidenziata in rosso troviamo la finestra Services;
Il colosso di Redmond ha seguito una filosofia di è un elenco di ‘pezzi di Robot’:
sviluppo analoga a quella già implementata con scorrendoli scopriamo oggetti come i mattoncini
l’XBox, assemblando in maniera originale tecnologie LEGO MindStorm e Fishertechnics, joystick per vi-
che Microsoft conosce bene; deogiochi, ma anche hardware semi professiona-
il risultato è una specie di Visual Basic che al po- le come il MobileRobot Pioneer fabbricato da Mo-
sto della tipica toolbox riunisce, come in una ca- bileRobots od i componentistica della Parallax;
tena di montaggio, pezzi di robot mettendo in gio- questi ‘pezzi di Robot’, o per essere tecnici ‘Services’,
co anche i web services, uno dei cavalli di batta- rappresentano l’hardware ai quali fanno riferi-
glia della prima release di .net, e XNA il Kit di svi- mento, ne avvolgono la complessità e la astraggo-
REQUISITI
luppo dedicato ai videogiochi della XBox 360°, etc no, rendendola trasparente allo sviluppatore;
Vediamo nel dettaglio come lavora questo All Star per iniziare a lavorare con i Services non abbiamo
Conoscenze richieste
Conoscenza degli Team che da clickarvi sopra e trascinarli nella finestra
ambienti di centrale Diagram, evidenziata in blu;
programmazione
Microsoft .net è inevitabile notare le somiglianze con i tipici am-
Software
bienti di sviluppo di Microsoft:
Microsoft Robotics VISUAL PROGRAMMING clickare sopra un servizio e trascinarlo nella fine-
Studio 1, .NET
Framework 3, Visual LANGUAGE stra Diagrams è una procedura analoga alla crea-
Studio 2005 o Kit Il primo Tool che prendiamo in esame si chiama zione di pulsanti, Textbox, eccetera, nelle WebForm
Visual Express C# o
VB.net ad libitum Visual Programming Language; e WindowsForm, ovvero un paradigma di pro-
attraverso una interfaccia grafica, che funziona co- grammazione presente sin dalla primissima re-
Impegno
me una lavagna, disegniamo una sorta di catena lease di Visual Basic!
¥ di montaggio che collega e fa funzionare i diversi com- Non solo…
Tempo di realizzazione
ponenti di una automazione; Le specifiche dei “Pezzi di Robot” sono descritte
L’ambiente grafico è raffigurato in Fig 1: in file Manifest, ovvero in file di configurazione in
h t t p : / / w w w. i o p r o g r a m m o . i t
G 24 /Ottobre 2007
024-029:072-080 31-08-2007 15:52 Pagina 25
Project
BASIC ACTIVITIES che, in maniera analoga alla finestra Project di Vi-
Una volta disposti i ‘pezzi di robot’, o per usare il sual Studio, ci consente di impostare il nome del
termine tecnico i Services, è necessario fornirgli Diagramma, di aggiungere oppure o cancellare un
delle istruzioni e farli dialogare tra loro; diagramma
le istruzioni vengono allocate e manipolate attra-
verso una serie di oggetti denominati “Basic Acti- Properties
vities” disponibili nella finestra evidenziata in ver- che consente, in maniera analoga alla finestra Pro-
de. Le Basic Activities sono rappresentate grafica- perties di Visual Studio, di impostare le proprietà del-
mente attraverso ‘quadratini’ con segmenti verdi sui l’oggetto Services oppure Activity selezionato.
lati sinistro e destro; il nome in codice di questi
segmenti verdi è ‘pin activities’; nel diagramma
della nostra automazione i dati che ‘rendono elet- IL PROGETTO D’ESEMPIO
trici’ i vari Services entrano nel pin posto a sini-
stra del ‘quadratino’ ed escono, dopo essere stati Questo è il diagramma, basato su negativo Le ruote sono fissate ad
elaborati ed instradati, dal pin posto a destra; quelli allegati all’articolo che un asse e ruotano a sinistra ed a
ogni finestra “Basic Activities” possiede Wizard di implementa l’automazione di un destra se una è spinta verso un
configurazione per impostare semplicemente le robot comandato da un Joystick; valore positivo e l'altra è spinta
sono messe in gioco tutte le Basic verso un valore negativo equiva-
sue proprietà; Vediamo le varie ‘Basic Activities’ Activities di cui abbiamo parlato e lente o viceversa.
nel dettaglio diversi Services i cui file Manifest Nota il Services di tipo Activity
supportano il Simulatore; In breve che incapsula tutto il flusso di
G Variabile Crea una variabile e la tipizza; le va- l’automazione funziona in questo Automazione del nostro
riabili sono tipizzate attraverso i medesimi tipi pre- modo: durante la simulazione, se Diagramma ed i vari commenti
premi il bottone Stop, le ruote esplicativi. Il disegno, o per usare
visti in C# (cfr. Box dedicato) non ricevono dati e si fermano se il termine tecnico, il diagramma
G Data Alloca i dati della nostra automazione in spingi la leva avanti le ruote sono che creiamo ricorda concettual-
variabili (ad esempio inserisce “Hello World” in spinte in avanti grazie a dati di mente un diagramma UML oppu-
una variabile di tipo String ) valore positivose spingi la leva re anche ad tipico diagramma di
G List Crea e tipizza una serie di dati (nota che è indietro le ruote sono spinte flusso ma non coincide affatto
indietro grazie a dati di valore con questi formalismi
possibile creare una lista di dati anche con ‘Va-
riable’)
G List Functions Consente di modificare un List
pre esistente
G Calcolate Consente di sommare, sottrarre divi-
dere o moltiplicare variabili numeriche oppure
di concatenare stringhe
G If Questa Activity, in maniera analoga ad un tipico
ciclo condizionale If/ Else, sposta il flusso del-
l’automazione verificando se una condizione è
vera oppure è falsa
G Switch In maniera analoga all’Activity sposta il flus-
so dell’automazione ma a differenza di questo
smista il flusso confrontando il messaggio in in-
gresso con un valore impostato dallo sviluppatore
G Merge ‘Fonde’ semplicemente tra loro due o più
flussi di automazione
G Join Unisce due o più flussi di automazione dan-
do ad ognuno di questi uno specifico nome
G Activity È possibile racchiudere l’intero flusso
h t t p : / / w w w. i o p r o g r a m m o . i t
Ottobre 2007/ 25 G
024-029:072-080 31-08-2007 15:52 Pagina 26
Visual Studio Programming viene fornito con una comunicano e richiedono la connessione con un Ro-
serie di diagrammi esemplificativi; bot vero e proprio (cfr. Fig. 3 e relativa didascalia);
ho preso il quarto di questi esempi e l’ho modificato Nel nostro caso, poiché non disponiamo di alcun Ro-
per renderlo più calzante ai nostri scopi “didatti- bot, è necessario lanciare il simulatore grafico, nome
ci”. in codice Microsoft Visual Simulation Environment
h t t p : / / w w w. i o p r o g r a m m o . i t
G 26 /Ottobre 2007
024-029:072-080 31-08-2007 15:52 Pagina 27
G Enumera tutti gli elementi che popolano la si- del Pool di software che compongono questo ori-
mulazione (evidenziata in rosso) ginalissimo Framework:
G Consente di posizionare un elemento selezio- Concurrency and Coordination Runtime (CCR)
nato secondo i tre piani cartesiani ed anche di che tenta di risolverla rendendola invisibile ai no-
ruotarlo (evidenziata in blu) stri occhi, ovvero gestendola dietro le quinte.
È possibile modificare gli elementi geometrici del- Nota che Bill Gates nel sopraccitato articolo sulla
la simulazione seguendo questa procedura: rivista Science nomina esplicitamente il CCR, ad
a. Selezionandoli nell’area evidenziata in rosso un pubblico non specializzato, spiegando appun-
b. Dopo, attraverso il menù a tendina Entity, con le to che risolve (sic…) il problema del MultiTasking
tipiche operazioni di Copia & Incolla è possibi- di diversi processi paralleli
le cancellarli, raddoppiarli oppure eliminarli.
h t t p : / / w w w. i o p r o g r a m m o . i t
Ottobre 2007/ 27 G
024-029:072-080 31-08-2007 15:52 Pagina 28
Ad esempio questo pezzo di codice funzione specifica, e poi li invia alla classe Di-
spatcherqueue che li smista. Brevemente i meto-
Port<float> pF = new Port<float>() ; di della classe Arbiter, ordinati dai più semplici
significa che abbiamo istanziato una classe Port verso i più complessi
di nome pF che riceve in ingresso un parametro di
tipo Float (nota le parentesi angolari); public static class Arbiter {
è possibile ingressare 16 parametri di tipo diver- public static ITask FromHandler(Handler
so; handler);
con questa sintassi, ad esempio
è un metodo che specifica che un valore può es-
PortSet<int,string> pIS = new PortSet<int,string>(); sere accodato verso una classe DispatcherQueue
(che vedremo più avanti).
passiamo due parametri di tipo integer e string. Questo semplice membro della classe Arbiter non
La classe di tipo Port comprende una struttura di è associato ad alcun membro della classe Port
dati FIFO ( il dato che entra per primo (First In) è
il primo dato che viene elaborato e restituito (Fir- public static ITask FromIteratorHandler(Handler
st Out) ); i dati accodati nella porta vengono poi "af- handler);
fidati" ad un arbitro che a sua volta chiama,
facendo uso di delegate e metodi anonimi, una è un metodo che enumera diversi valori che pos-
funzione da eseguire su questi dati; per la preci- sono essere accodati verso una classe Dispat-
sione i dati sono elaborati chiamando un delega- cherQueue che vedremo più avanti.
te (un costrutto tipico di .net, simile alle chiama- Non è associato ad alcun membro della classe
te a funzioni del C), che viene associato ad un me- Port
todo denominato oppure, ed è questa la novità,
un metodo anonimo; i metodi anonimi sono una public static Receiver<T> Receive<T>(
novità di C# e, in maniera elegante consentono Boolean persist, Port<T> port, Handler<T>
di passare un blocco di codice come parametro handler);
del delegate. Ad esempio:
è un metodo che può essere chiamato per passa-
// Crea un gestore per un evento Click re il risultato di una elaborazione verso una singola
button1.Click += delegate(System.Object o, porta. Deve essere specificato sia il delegate che chia-
System.EventArgs e) merà l’evento sia la porta.
{
System.Windows.Forms.MessageBox.Show("Click!"); public static JoinSinglePortReceiver
}; MultipleItemReceive<T>(
Boolean persist, Port<T> port, Int32
I metodi supportati dalla classe Port sono itemCount,
Post che invia un messaggio ad una porta VariableArgumentHandler<T> handler);
Port<int> pi = new Port<int>() ; è un metodo che può essere chiamato per invia-
pi.Post (42) ; re diversi risultati dell’elaborazione verso una sin-
gola porta.
Test che verifica, attraverso un valore Booleano Il parametro inviato al delegate VariableArgu-
di ritorno, se la porta è occupata mentHandler consiste in un array di oggetti Port
h t t p : / / w w w. i o p r o g r a m m o . i t
G 28 /Ottobre 2007
024-029:072-080 31-08-2007 15:52 Pagina 29
Per default ogni thread viene indirizzato ad ogni monitorati e distrutti grazie ad /l:Linguaggio
un componente software il cui
singola CPU presente nel computer ( nota che in e generare, nella cartella di
nome in codice è Decentralized
questo modo sono ottimizzati i moderni proces- Software Services Node; installazione del Kit, un vero e
sori Multi Core) ed esternamente è possibile iden- Il nodo DSSN si occupa anche di proprio progetto di Visual Studio
farli comunicare attraverso un 2005, completo di certificato,
tificare ogni singolo thread attraverso una strin-
protocollo basato su SOAP: DSSP; pronto per essere lanciato e
ga e settarne il livello di priorità (per default, il programmato(cfr. Fig. 6)!
( nota che la l’idea della
Framework assegna ad ogni thread un nome che Per comodità io ho scelto di
comunicazione tramite SOAP è
viene poi utilizzato nel Visual Studio® debugger's ripresa da uno dei pilastri di .NET, utilizzare VB.net e di gestire il
Threads). È possibile creare molteplici classi Di- i Web Services che si scambiano progetto con Visual Studio 2005
dati appunto su protocollo SOAP ma, nota bene, questo ambiente,
spatcher, ognuno con il suo pool di threads am-
e WSDL) se non è utilizzato a scopi
plificando indefinitamente le possibilità di ela- commerciali, è completamente
Per creare un Services utilizzando
borazione dello stesso. Per concludere avrete cer- gratuito e può essere
DDS non abbiamo che da lanciare
tamente compreso che Il CCR è un componete l’Interfaccia a linea di comando programmato altrettanto bene
ostico da programmare e probabilmente vi sare- del Kit di sviluppo e scrivere: con i vari Visual Studio Express;
te resi conto che gestire l’orchestrazione tra i va-
h t t p : / / w w w. i o p r o g r a m m o . i t
Ottobre 2007/ 29 G