Anda di halaman 1dari 52

IN VETRINA

Windows Vista: The Masterizzare con Nero 7


Definitive Guide di W. Wang
di W. R. Stanek
Una documentazione appropriata
e approfondita per comprendere
tutte le problematiche e conoscere
Una guida completa per miglio- le potenzialità del pacchetto.
rare le prestazioni del sistema La suite non prevede solo i classici
operativo e per la manuten- strumenti per riversare i dati su CD
zione del computer indipen- o DVD, ma combina anche tutte le
dentemente dalla versione di attività legate ai media digitali: de-
Windows Vista posseduta. sign grafico, elaborazione sonora,
programma per il video editing e
O’ Reilly Tecniche Nuove molto altro ancora.
942 pp euro 47,20 256 pp euro 16,90
ISBN 9780596528003 ISBN 9788848120487

Programming WCF Dizionario di Informatica


Services 6a edizione
di J. Löwy Inglese-Italiano
di A. Gallippi
Scritto da un esperto di Micro-
soft, questo libro rappresenta Presenta oltre 5500 termini legati
la migliore introduzione sul al mondo delle nuove tecnologie. I
mercato alla piattaforma SOA lemmi, tradotti, spiegati e classifi-
su Windows. cati, spaziano tra vari argomenti.
Il libro non ha valore di Un’opera che costituisce uno stru-
documentazione, ma offre mento professionale insostituibile
un approccio pratico per la per gli operatori del settore, ma
O’ Reilly costruzione delle applicazioni anche chi intende rendere fruibili
di prossima generazione. Tecniche Nuove
654 pp euro 42,40 580 pp euro 29,90 tutti i neologismi.
ISBN 9780596526993 ISBN 8848119131

Access Data Analysis Endpoint Security


Cookbook di M. Kadrich
di K. Bluttman, W. S. Freeze

Per coloro che gestiscono Questo libro chiarisce che cosa


grandi quantità di dati e ne- ogni endpoint riesce a fare per pro-
cessitano di studiare quei dati teggersi e spiega come nuove tec-
in profondità. La prima parte nologie, quali il network admission
del libro mostra come estrarre control, aumentino la sicurezza.
i dati, la seconda come
approntare calcoli con essi.
O’ Reilly Presenta inoltre numerosi
problemi ricorrenti associando Addison Wesley
400 pp euro 47,20 384 pp euro 50,95
ISBN 9780596101220 le relative soluzioni.
ISBN 9780321436955

AutoCAD 2007 VBA for the 2007


di R. Grabowski Microsoft® Office System
di P. McFedries
Il testo tratta tutti gli aspetti
fondamentali di AutoCAD. Non
sono tralasciati aspetti pecu-
Questo libro rende il lettore esperto
liari come il plottaggio e la mo-
sia in merito al linguaggio VBA che
dellazione 3D. La presenza dei
all’Office 2007 Object Model. Non
tutorial passo passo permette
dà per scontate conoscenze ap-
un apprendimento immediato
profondite e ha una struttura user
e velocizza l’acquisizione delle
friendly, con schemi, domande con
competenze operative.
risposte ed esercizi pratici.
I file utilizzati negli esempi del
Tecniche Nuove testo sono contenuti nel Cd- Que
1016 pp euro 42,00 Rom allegato. 432 pp euro 38,40
ISBN 9788848120494 ISBN 9780789736673
VBJ 74
Google Trucchi e segreti Microsoft SharePoint
di R. Dornfest, P. Bausch e T. 2007 Unleashed
Calishain di C. Spence e M. Noel

Contiene numerosi trucchi per La prima parte del libro offre


usare i nuovi servizi di Google e un’introduzione a SharePoint
utili indicazioni per usare meglio i 2007 in merito anche alla sua
servizi più tradizionali. implementazione. La seconda
Ecco qualche esempio: program- parte si concentra sulla sua
mare Google utilizzando l’API e programmazione e struttura-
il proprio linguaggio preferito; zione. Utilissima la parte in cui
arricchire le proprie pagine Web si illustrano le procedure per
con caselle di ricerca, annunci, passare da SharePoint 2003 a
Tecniche Nuove feed di news e altro Sams SharePoint 2007.
544 pp euro 36,90 840 pp euro 52,95
ISBN 9788848119801 ISBN 9780672329470

Multimedia Data Scrivi a book@infomedia.it specificando


Mining and Knowledge nell’oggetto della e-mail:
Discovery
di V. Petrushin e L. Khan
IN VETRINA Visual Basic e .NET Journal n. 74
OPPURE
inviaci il coupon al numero di fax 0587/732232
Multimedia Data Mining and
Knowledge Discovery unisce
l’esperienza di academici e Potrai acquistare i libri qui riportati
prifessionisti dell’industria. Il
libro procede con un approcio con uno SCONTO ECCEZIONALE
molto strutturato al multimedia
data mining del 10% anche se acquisti solo un libro
Springer
526 pp euro 77,95 OPPURE
ISBN 9781846284366
del 20% se acquisti 3 libri

VBJ 74
N.74 SOMMARIO
AJAX
12 Il Web è in viaggio, prossima fermata Ajax
di Dino Esposito

TECNICHE
20 Le Regular Expression - Prima parte
Le Regular Expression risolvono, una volta per tutte, l’annoso problema
dell’implementazione di parser di stringhe più o meno sofisticati.
di Vito Vessia

.NET TOOLS
33 TypeMock .NET
Un aiuto concreto per lo unit testing
di Fabio Perrone

VS .NET Solution Cleaner


35 Un semplice tool per ripulire le directory di un progetto . NET
di Raffaele Di Natale

SICUREZZA
38 Symantec Internet Security Threat Report
La nuova edizione dello studio dedicato alle minacce legate alla sicurezza Internet
rivela la crescente tendenza degli hacker a creare vere e proprie organizzazioni
criminali informatiche online
in collaborazione con Symantec

Codice allegato RUBRICHE


All’indirizzo ftp.infomedia.it/pub/VBJ sono liberamente scaricabili tutti i listati 10 Editoriale
relativi agli articoli pubblicati. La presenza di questa immagine indica l’ulteriore
disponibilità, allo stesso indirizzo, di un progetto software relativo all’articolo in cui 29 Prodotti & News
l’immagine è inserita. Il nome identifica la cartella sul sito ftp.

N. 74 - Marzo/Aprile 2007 VBJ 9


ED I T O R I A L E online.infomedia.it
n. 74 - Marzo/Aprile 2007
bimestrale - anno tredicesimo

Direttore Responsabile
Fuga dei cervelli, startup company, Marialetizia Mari (mmari@infomedia.it)
Direttore Esecutivo

e qualche altra riflessione Francesco Balena (fbalena@infomedia.it)


Managing Editor
Renzo Boni (rboni@infomedia.it)
Collaboratori

N
on c’è un fenomeno che spiega la crisi del sistema sco- Raffaele Di Natale
lastico italiano meglio della “fuga dei cervelli”. Solo un Dino Esposito
paese completamente miope rispetto al proprio futuro può Maurizio Mammuccini
Fabio Perrone
permettersi il lusso di spendere decine di migliaia di euro – se Vito Vessia
consideriamo tutto il percorso formativo, a partire dalle elemen-
tari – per completare la preparazione di un esperto che viene poi
“regalato” a un altro paese.

Il fenomeno dei cervelli in fuga è presente in praticamente tutti i


settori, dalla fisica alla medicina, alla chimica, alla matematica e
all’ingegneria. Anche nell’informatica, certo, anche se in misura
minore. Vuoi perchè nel nostro paese c’è comunque una forte domanda di sviluppatori
software, o forse perchè i nostri laureati in Scienze dell’Informazione sono meno appe- Direzione
tibili sul mercato mondiale dei nostri fisici o medici. (Nelle nostre università si studiava Natale Fino (nfino@infomedia.it)
la Fisica prima che fosse scoperta l’America, ma si è cominciato a studiare informatica Marketing & Advertising
molto tempo dopo che altrove.) Segreteria: 0587/736460
marketing@infomedia.it
Mi piace però pensare che una delle cause che potrebbe limitare il fenomeno di “fuga dei Amministrazione
cervelli informatici” è che non è necessario andare all’estero per mettere in pratica una Sara Mattei
buona idea, almeno se ci si limita allo sviluppo software e non ci si avventura negli impervi (amministrazione@infomedia.it)
settori dei computer quantici, nano-robotica, e settori altrettanto esotici. Anzi, in molti Grafica
casi non servono neanche grandi capitali, basta qualche computer e un seminterrato in Paolo Franco (grafica@infomedia.it)
cui lavorare con un gruppo di amici. Technical Book
Lisa Vanni (book@infomedia.it)
Se pensate che stia vaneggiando, pensate a come è nata Google (nel garage di una amica, Segreteria
perchè Brin e Page non potevano neanche pagarsi il fitto di una stanza) o Yahoo (nato Enrica Nassi
da un hobby di Filo e Yang). Alcune startup di successo si sono dovute appoggiare a un (info@infomedia.it)
venture capitalist, come nel caso YouTube (che ha avuto fin da subito bisogno di molti
server e molta banda), ma non è certo la regola. Vi serve un’altra prova? provate a visitare
www.milliondollarhomepage.com e scoprite com’è possibile fare un milione di dollari in Stampa
Tipolitografia Petruzzi
pochi mesi e con qualche scarsa conoscenza di HTML. Città di Castello (PG)

È vero che nel nostro paese ci sono molte software house di piccole e medie dimensioni, Ufficio Abbonamenti
ma in tanti anni siamo riusciti a produrre ben poche success story di un certo rilievo, e Tel. 0587/736460 - Fax 0587/732232
comunque nessuna a livello mondiale. È una piccola nota stonata, se si pensa alla creatività e-mail: abbonamenti@infomedia.it
con cui noi italiani ci siamo fatti valere in settori come la moda e il design. www.infomedia.it

Gruppo Editoriale Infomedia srl


Cosa ci manca, allora? Io qualche idea ce l’avrei, ma lo spazio a mia disposizione è terminato Via Valdera P., 116 - 56038 Ponsacco (PI) Italia
e sono costretto a rimandare l’argomento a un prossimo editoriale. Se nel frattempo volete Tel. 0587/736460 - Fax 0587/732232
red_vbj@infomedia.it
scrivermi le vostre considerazioni, il mio indirizzo di posta elettronica lo conoscete... Sito Web www.infomedia.it

Francesco Balena
Manoscritti e foto originali anche se non pubblicati,
fbalena@codearchitects.com non si restituiscono. È vietata la riproduzione
anche parziale di testi e immagini.

Si prega di inviare i comunicati stampa e gli inviti stampa per


la redazione all’indirizzo: comunicatistampa@infomedia.it
Visual Basic Journal è una rivista di
Gruppo Editoriale Infomedia S.r.l. Via Valdera P, 116 Ponsacco - Pisa.
Registrazione presso il Tribunale di Pisa n. 20/1999
10 N. 74 - Marzo/Aprile 2007 VBJ
AJAX

Il Web è in viaggio:
prossima fermata
AJAX
di Dino Esposito

È oggettivamente difficile dire oggi quante aziende Allora cominciamo lo svolgi-


e quanti siti effettivamente usino tecnologie AJAX mento dell’articolo proprio dalle
e suoi derivati nell’implementazione di funziona- ragioni che spingono le aziende
lità rilevanti. Andando un po’ a occhio e un po’ ad verso AJAX per poi addentrarci
orecchio direi qualche migliaio di società e più o in meandri più strettamente tec-
meno lo stesso numero di siti Web. Se però met- nici e valutare soluzioni pratiche
tiamo nel conto impianti Intranet allora il nume- ad una delle più comuni esigen-
ro si moltiplica di qualche fattore. Al punto che si ze degli sviluppatori AJAX—vi-
può dire che più o meno il 100% delle applicazioni sualizzare e controllare il cosid-
è potenzialmente interessato a soluzioni AJAX, to- detto user feedback, ovvero ciò
tali o parziali che siano. che l’utente finale vede durante
Del resto i feedback ottenuti con le prime edizio- un’operazione remota.
ni di corsi ASP.NET AJAX—e badate che ASP.NET
AJAX è solo una goccia (bella grande peraltro) nel Chi vuole AJAX e perché
mare—sono sostanzialmente omogenei e perfetta-
mente in linea con le esigenze dei clienti che già Bando alle ciance. Le aziende
da qualche mese chiedono tutorial, presentazioni vogliono AJAX per migliorare in
e assistenza allo sviluppo. modo significativo l’interfaccia
Vogliamo provare a trarre qualche conclusione? di applicazioni distribuite e reti
Direi che siamo qui apposta. interne. Dunque, ammettiamo
che chi vuole AJAX lo vuole so-
Dino Esposito è responsabile dell’area Education di Managed prattutto per ottenere interfac-
Designs (http://www.manageddesigns.it), un’azienda tutta ita- ce “very cool”. È davvero tutto
liana che si occupa di consulenza architetturale e formazione/ qui? Ma allora perché non usa-
mentoring su tecnologie e prodotti legati alla piattaforma .NET.
Speaker di rilievo internazionale (Microsoft TechED, DevConnec-
re Windows Forms con ClickOn-
tions, DevWeek, WPC), è autore del libro “Introducing Microsoft ce o fare il quadruplo salto mor-
ASP.NET 2.0 AJAX Extensions” per Microsoft Press in uscita a tale con avvitamento sincopato
maggio 2007. Per contattare Dino Esposito, si può usare il blog
trasversale all’indietro e passare
in italiano su http://blogs.ugidotnet.org/dinoes.
da Visual Basic 6.0 a .NET 3.0;

12 VBJ N. 74 - Marzo/Aprile 2007


AJAX

ma visto che ci siamo perché non già .NET Dove nasce AJAX
3.5 che esce solo fra qualche mese? Cosa ha
mai di interessante .NET 3.x? Beh lì ci sono le AJAX è un termine generico più o meno
applicazioni WPF Browser, ovvero applicazio- come HTML, XML o HTTP. Non si sposa
ni Windows-like basate su Windows Presenta- con una piattaforma hardware/software par-
tion Foundation che scaricano un runtime sul ticolare; non si lega ad un particolare brow-
client e vi girano dentro come se fossero nel- ser o plug-in di browser; non richiede alcuna
la gabbia del browser. E vi danno pure un’in- nuova mirabolante tecnologia software. So-
terfaccia page-based, vi dovesse mai venire luzioni AJAX si ottengono su ogni piattafor-
la nostalgia della modalità Web. ma mettendo insieme strumenti che sono in
circolazione da circa 10 anni. Vi pare esage-
rato? Beh, il motore XMLHttpRequest è usci-
Le aziende vogliono AJAX to con Internet Explorer 5.0 nel 1999, ma già
era usato in Microsoft Exchange 98 e Outlook
per migliorare in modo 98. JavaScript esiste dalla notte dei tempi. Il
significativo l’interfaccia di Document Object Model (DOM) è uno stan-
dard da almeno cinque anni ed è apparso al-
applicazioni distribuite e l’orizzonte nel 1997. Vogliamo continuare? Di-
reti interne ciamo solo che ogni browser uscito negli ulti-
mi cinque o sei anni ha dentro di sé gli stru-
menti necessari a supportare pienamente so-
luzioni AJAX.
E AJAX non è solamente ASP.NET AJAX, di
Capite che qui il rischio di confusione è alto cui peraltro parleremo diffusamente nel segui-
e letale. Facciamo più o meno come Teseo nel to. AJAX, al secolo Asynchronous JavaScript
labirinto e mettiamo dei paletti per ricordarci And XML, nasce come aggregato di strumenti
chi siamo e dove andiamo. di sviluppo per costruire applicazioni—Web—
Chi vuole AJAX vuole innanzitutto un’appli- in grado di offrire qualcosa di più. Ma non
cazione Web. Punto. Se non volesse una so- qualcosa di fine a sé stesso come può esse-
luzione tradizionale Web, ogni suo eventua- re un’animazione dietro un menu o pannel-
le interesse per AJAX sarebbe fuori luogo e lo drop-down. Non dimentichiamo che è sta-
scarsamente motivato. ta Google a tirar fuori AJAX con la sua Goo-
Se AJAX fosse davvero un’altra versione (dei gleMap dove le capacità dei browser abilitati
poveri) di Windows Forms o WPF Browser, vengono sfruttate al massimo per far scorre-
allora davvero non si comprenderebbe per- re le mappe, ingrandire e zoomare. Ovvero,
ché mai i numeri uno dell’IT mondiale (da c’è una logica applicativa precisa dietro l’uti-
Microsoft a Google passando per Amazon, lizzo di AJAX.
Sun e IBM) si stiano affannando tanto die- Come dieci anni fa era “obbligatorio” per
tro ad AJAX. i protagonisti IT tirar fuori una piattaforma
AJAX è per applicazioni Web a cui si vuole avanzata e a misura di programmatore per lo
dare una rinfrescata e una svegliata. Basta con sviluppo di applicazioni Web, oggi lo è tirare
lo stop-and-go delle classiche pagine e via li- fuori estensioni a queste piattaforme che ren-
bera all’aggiornamento diretto di blocchi di dano l’implementazione di funzionalità AJAX
interfaccia. Tutto nasce dall’interfaccia uten- oltre che possibile, facile ed economico. Ed ar-
te; tutto si muove attorno ad effetti speciali riviamo così agli oltre 100 framework censiti
da interfaccia utente; ma l’interfaccia utente da AjaxWorld per la programmazione AJAX—
è solo l’effetto; la causa sta a monte ed ha a e rigorosamente cross-platform.
che fare con usabilità e prestazioni. ASP.NET AJAX Extensions 1.0 è l’ultimo del-

VBJ N. 74 - Marzo/Aprile 2007 13


AJAX

la serie ma, come ci ha dimostrato in passato zo di AJAX sia quasi esclusivamente di fac-
Microsoft, è solo il primo esemplare di una ge- ciata e laddove stupire l’utente con effetti spe-
nerazione. Il suo più immediato successore è ciali sia un requisito essenziale. Un pannello
atteso per fine 2007 nell’ambito del lancio di o un calendario/agenda in stile Outlook non
Visual Studio 2005 “Orcas” e .NET 3.5. sono banali per non parlare di menu in sti-
le Office 2007. Non serve passare nottate in-
Framework vs. Prodotti tere per ottenere approssimazioni di questi
risultati. Basta comprare il prodotto giusto.
Da sempre la piattaforma Windows abbon- Che non costa poi uno sproposito. Nell’otti-
da più di altre di prodotti di terze parti che ca di una sana pianificazione di prodotto, tra
aiutano e supportano nella creazione di appli- tempo/uomo e costo/prodotto la questione non
cazioni. Di SDK, framework e librerie ce n’è si pone nemmeno.
a bizzeffe e per tutti i gusti e tutte le tasche. Certo, una libreria è intrusiva e ti costringe
Per quanto riguarda AJAX e la piattaforma a ragionare come dice lei. Si finisce per ave-
Windows, se l’obiettivo comune è migliorare re AJAX dentro ciascun controllo e controlli
la qualità e i servizi dell’interfaccia utente, per funzionalità verticali e sofisticate. Ideale
quali sono le opzioni disponibili? per nuove pagine e nuove applicazioni; un po’
A domanda rispondiamo con altra doman- più faticoso per applicazioni esistenti. Ma, di
da. Che cosa significa per ognuno “migliora- nuovo, la scelta dipende da quanto pressan-
re qualità e servizi dell’interfaccia”? Sostan- te è l’esigenza AJAX e da quale obiettivo si
zialmente due cose, non necessariamente di- vuole raggiungere. Le idee chiare, al solito,
sgiunte: aggiornamenti parziali della pagina non guastano.
e soluzioni accattivanti come drag-and-drop, In ordine rigorosamente alfabetico, i prodotti
piccole animazioni, paginazioni e ordinamen- migliori per chi volesse partire con una valu-
ti rapidi e indolori, menu che ti leggono nel tazione comparata, secondo me, sono:
pensiero, e così via.
Un framework offre strumenti base per ef- • ComponentArt webUI
fettuare aggiornamenti parziali. Un prodotto (www.componentart.com)
ad hoc offre strumenti già pronti per soluzioni • Dundas ASP.NET (www.dundas.com)
verticali come effetti grafici e visuali. Se scel-
• Infragistics NetAdvantage
go un framework, toccherà a me costruire con (www.infragistics.com)
martello e scalpello l’interfaccia di cui ho bi-
sogno. Se scelgo un prodotto, troverò la pappa • Telerik radControls (www.telerik.com)
pronta (e ben cucinata per giunta) e dovrò solo
sedermi a tavola e rispettare il galateo.
Il lavoro da fare con un framework quale Si tratta di prodotti per ASP.NET. Non sono
ASP.NET AJAX Extensions, o simili per altre tutti uguali, non sono l’uno clone dell’altro, e
piattaforme, è notevole per ottenere menu a al momento (primavera 2007) nemmeno offro-
discesa, tree-view autoaggiornanti e così via. no lo stesso grado di integrazione con la piat-
Ma ho il controllo di tutto e la flessibilità di taforma ASP.NET AJAX. Ma la linea di conver-
fare tutto. Con una libreria di controlli sono genza è chiara ed inequivocabile e tutti ten-
limitato a ciò che mi viene offerto e finirò per deranno a differenziarsi solo per creatività e
avere pagine in cui uso quasi esclusivamen- funzionalità nel giro di pochissimi mesi.
te controlli optional. Ma il risultato finale, so-
prattutto rispetto al tempo impiegato ad otte- Programmare con ASP.NET AJAX
nerlo, è straordinario.
Personalmente mi sento di raccomandare Vediamo un po’ più da vicino il cuore della
caldamente l’uso di librerie laddove l’utiliz- piattaforma ASP.NET AJAX Extensions 1.0 ri-

14 VBJ N. 74 - Marzo/Aprile 2007


AJAX

Figura 1 Visualizzazione del feedback durante un' operazione remota

lasciata ufficialmente solo il 23 gennaio 2007. cipali—ScriptManager e UpdatePanel. Il pri-


Per la cronaca si tratta di un download gra- mo è il direttore d’orchestra di una pagina
tuito effettuabile dal sito http://ajax.asp.net. Il ASP.NET AJAX. Una sua istanza è richiesta
framework è formato da due parti principali, su ogni pagina ASP.NET AJAX. Il secondo rag-
più alcune estensioni al runtime di ASP.NET. gruppa porzioni di interfaccia utente e garan-
Vi è una parte client formata da alcuni file Ja- tisce che ogni postback che proviene da una
vaScript che vengono scaricati sulla macchi- porzione produca il refresh del solo markup
na dell’utente e opzionalmente salvati nella di quell’area.
cache. E vi è una parte server formata da al- Nella Microsoft AJAX Library esiste una clas-
cuni nuovi controlli ASP.NET. se che agisce da proxy verso una interfaccia
I file JavaScript formano la cosiddetta Micro- remota—tipicamente un Web service. Ne con-
soft AJAX Library che porta ad avere una se- segue che esistono due modi per “provocare”
rie di nuovi oggetti JavaScript con cui è pos- aggiornamenti della pagina. Uno è tramite il
sibile simulare in modo incredibilmente rea- controllo UpdatePanel e il classico modello a
listico programmazione OOP in JavaScript. postback di ASP.NET. L’effetto di UpdatePa-
Parlo di classi derivate da classi base ma an- nel è tale che, a tempo di rendering, solo un
che di polimorfismo e di un pizzico di incap- sottoinsieme di controlli viene invitato a pro-
sulamento. Nella Microsoft AJAX Library tro- durre markup. Il viewstate viaggia come al
viamo anche interfacce, namespace, delega- solito e come al solito viene aggiornato. Per
tes, dispose pattern, reflection e type informa- garantire consistenza allo stato della pagina,
tion. E infine ci sono anche classi di servizio due chiamate ad UpdatePanel non possono
che fanno della libreria una sorta di piccolo avvenire contemporaneamente.
.NET Framework per JavaScript. Vi sono clas- L’altro modo per aggiornare la pagina è tra-
si come StringBuilder, WebRequest, Profile- mite una chiamata diretta client-to-server, una
Service, AuthenticationService, Type ma an- sorta di .NET Remoting via Web. L’interfac-
che oggetti base sono estesi con metodi .NET- cia remota viene esposta o tramite un servi-
like. È il caso di String, Date, e Number. zio Web (ma, attenzione, un servizio locale al-
La parte server conta su due controlli prin- l’applicazione) o tramite un metodo statico (e

VBJ N. 74 - Marzo/Aprile 2007 15


AJAX

Listato 1 Una pagina ASP.NET AJAX con refresh parziali


Feedback durante Partial
Rendering
<%@ Page Language=”C#” %>
Prendiamo ad esempio una
<script runat=”server”>
protected void Button1_Click(object sender, EventArgs e) pagina ASP.NET AJAX come
{ quella nel Listato 1, dove ab-
System.Threading.Thread.Sleep(3000);
Label1.Text = “Operation completed at “ + DateTime.Now.ToString(); biamo oltre al solito Script-
} Manager anche un pulsante
</script>
e una Label. Cliccando il pul-
sante si effettua un postback
<html> parziale che dura qualche se-
<head id=”Head1” runat=”server”>
<title>UpdateProgress Example</title> condo simulando un’operazio-
</head> ne lunga.
<body>
<form id=”form1” runat=”server”> Il controllo UpdateProgress
<asp:ScriptManager ID=”ScriptManager1” runat=”server” /> definisce tramite template
<asp:UpdatePanel ID=”UpdatePanel1” runat=”server”> l’interfaccia da mostrare du-
<ContentTemplate> rante l’operazione. Il control-
<asp:Button ID=”Button1” runat=”server” Text=”Start”
OnClick=”Button1_Click” /> lo si aggancia a tutte le regio-
<hr /> ni UpdatePanel nella pagina.
<asp:Label runat=”server” ID=”Label1” />
</ContentTemplate>
Tuttavia è possibile differen-
</asp:UpdatePanel> ziare ed associare un update-
progress ad una particolare re-
<asp:UpdateProgress ID=”UpdateProgress1” runat=”server”> gione. Per far ciò, si imposta
<ProgressTemplate> la proprietà AssociatedUpda-
<br />
<span style=”color:red”>Update in progress... </span> tePanelID del controllo Upda-
<hr /> teProgress con l’ID dell’Upda-
</ProgressTemplate>
tePanel interessato. La libre-
</asp:UpdateProgress>
</form> ria client automaticamente na-
</body> sconde e visualizza il pannel-
</html>
lo di feedback quando neces-
sario. Come si vede, nessuno
script è necessario e la pagi-
marcato WebMethod) sulla classe code-behind. na è di fatto identica ad una normale pagina
In sostanza, i due modelli si assomigliano ma ASP.NET a meno dell’uso di alcuni controlli
nel secondo caso è la pagina stessa ad agire specifici. Solo la Label viene aggiornata a se-
come un Web service virtuale. guito del postback; la cosa può apparire poco
Il controllo UpdatePanel dispone di un rilevante in questo esempio scheletrico, ma ha
meccanismo interno per mostrare feedback un impatto clamoroso nel caso di pagine ric-
all’utente durante l’aggiornamento. La fun- che di grafica e contenuti. A differenza di pa-
zione è particolarmente utile quando il post- gine ASP.NET classiche, nel template di fee-
back si protrae per qualche secondo. Un ana- dback è possibile inserire GIF animate che
logo meccanismo per chiamate dirette deve funzionerebbero come ci aspetta, invece di
essere implementato a mano. Vediamo come fermarsi al primo frame.
procedere in entrambi i casi.

16 VBJ N. 74 - Marzo/Aprile 2007


AJAX

Listato 2 Feedback durante una chiamata remota

<%@ Page Language=”C#” AutoEventWireup=”true” CodeFile=”LongTask.aspx.cs”


Inherits=”Samples_Ch07_WebService_LongTask” %>

<script language=”javascript” type=”text/javascript”>


function pageLoad()
{
$get(“ProgressTemplate1”).style.display = “none”;
}
function startTask()
{
$get(“ProgressTemplate1”).style.display = “”;
PageMethods.Start(methodCompleted);
}
function methodCompleted(results, context, methodName)
{
$get(“ProgressTemplate1”).style.display = “none”;
var label1 = $get(“Label1”);
label1.innerHTML = results;
}
</script>

<html xmlns=”http://www.w3.org/1999/xhtml” >


<head runat=”server”>
<title>Long task</title>
</head>
<body>
<form id=”form1” runat=”server”>
<asp:ScriptManager ID=”scriptManager1” runat=”server”
EnablePageMethods=”true” />

<input type=”button” id=”button1” value=”Start” onclick=”startTask()” />


<hr />
<asp:Label runat=”server” ID=”Label1” />

<div id=”ProgressTemplate1”>
<br />
<span style=”color:red”>Update in progress... </span>
<hr />
</div>
</form>
</body>
</html>

Feedback durante Remote Calls public static string Start()


{
Consideriamo adesso uno scenario legger- System.Threading.Thread.Sleep(3000);
mente diverso in cui l’operazione lato server return “Task completed at: “ +
viene ordinata e gestita esplicitamente dal DateTime.Now.ToString();
client tramite JavaScript. In questo caso, il }
metodo da invocare è un metodo pubblico e
statico sulla classe code-behind. Il Listato 2 mostra il codice completo della
Il codice eseguito sul server è sostanzialmen- pagina ASP.NET AJAX che richiama il meto-
te identico a quello del caso precedente: do Start via JavaScript.
Da JavaScript un Web method server (o nel-
[WebMethod] la pagina o in un Web service) ha bisogno di

VBJ N. 74 - Marzo/Aprile 2007 17


AJAX

tore. La funzione $get in ASP.NET AJAX è una


una classe proxy che effettui la connessio- macro per document.getElementById e serve
ne dietro le quinte. Questa classe proxy vie- ad ottenere un riferimento al corrispondente
ne generata al volo dallo ScriptManager e si oggetto nel DOM della pagina. La Figura 1
chiama PageMethods nel caso di metodi nel- mostra l’output che si ottiene nelle varie fasi
la classe code-behind. Nel caso di un Web della chiamata. L’output in figura è identico
service, si chiamerà come il nome comple- nel caso del Listato 1 e del Listato 2.
to (namespace+classe) del servizio. I metodi
nella classe proxy prendono la lista degli ar- Conclusioni
gomenti da passare al metodo server più una
callback da eseguire alla fine dell’operazione. Per chiunque si interessi professionalmente
Il metodo Start non prende argomenti, dun- ad applicazioni Web, AJAX è la prossima fer-
que gli si passa la sola callback. mata. E il treno ci sta arrivando tutto lancia-
to. Il legame tra Web e AJAX non è ovviamen-
PageMethods.Start(methodCompleted); te limitato ad ASP.NET, ma trova in ASP.NET
AJAX un bel set di strumenti che sarà ancora
La callback riceve tre parametri di cui il pri- potenziato con Visual Studio “Orcas” a fine
mo è il risultato dell’esecuzione del metodo. anno. Con AJAX il rischio grosso è che si fi-
La serializzazione dei parametri di input e del nisca a fare solo e soprattutto effetti speciali.
valore di ritorno avviene tramite JSON. L’uso consapevole di AJAX richiede spesso e
Il template di feedback viene visualizzato e volentieri un refactoring del codice e talvol-
nascosto all’occorrenza a cura del programma- ta dell’architettura. Con AJAX ci si diverte,
ma non si gioca.

18 VBJ N. 74 - Marzo/Aprile 2007


TECNICHE

Regular Expression
Prima Parte

Le Regular Expression risolvono, una volta per tutte, l’annoso problema


dell’implementazione di parser di stringhe più o meno sofisticati.
Ripubblichiamo questo articolo, originariamente uscito su Computer
Programming n.127, per l’utilità della trattazione che presenta.

di Vito Vessia

Nonostante ogni applicazione di un certo livello Il problema


presenti sempre singolarità che la rendono unica,
ci sono spesso pezzi di codice che fanno pressoché Quello della gestione delle
le stesse cose. Prima dell’introduzione di ambienti stringhe è un problema “uni-
di sviluppo RAD (Rapid Application Development), versale”: che siate in Windows
la parte più onerosa in termini di energie e tempo o in Unix, che l’applicazione
speso era fatta dalla GUI per “disegnare” l’interfac- sia binaria oppure web, ci sa-
cia utente. Lo stesso accade ancor oggi per le appli- ranno sempre delle stringhe da
cazioni web, insieme al tempo necessario per scri- controllare. Quello che normal-
vere codice di gestione dei dati, ormai indispensa- mente accade è che, dopo aver
bile in qualsiasi applicazione non banale. scritto il nostro parser (in pratica
Una quota rilevante di tempo è inoltre speso per un pugno di funzioni super-spe-
quello che sarà l’argomento di questo articolo: l’ana- cializzate ed in grado di opera-
lisi e la decodifica delle stringhe di testo. La scrit- re solo sulle stringhe specifiche
tura di parser ha infatti sempre sottratto moltissi- del programma corrente), occor-
me energie, soprattutto nel passato, quando le ap- rono modifiche o riscritture non
plicazioni RDBMS oriented non erano una norma appena questo formato cambia;
e non esisteva l’XML (che, pur essendo anch’esso del resto è umanamente impen-
testo puro, è gestito da potenti parser specializza- sabile decidere di scrivere fun-
ti, detti DOM). zioni del tutto generiche.
Procediamo con un esempio; si
supponga di voler estrarre alcu-
Vito Vessia progetta e sviluppa applicazioni e framework
occupandosi degli aspetti architetturali. Scrive da anni per le ne informazioni dalla seguente
principali riviste italiane di programmazione ed è autore del stringa di media complessità,
libro “Programmare il cellulare”, Hoepli, 2002, sul protocollo identificabile come un file di
standard AT+ dei telefoni cellulari con . Può essere contattato
importazione, proveniente da
tramite e-mail all’indirizzo vvessia@katamail.com.
un fornitore, contenente dati

20 VBJ N. 74 - Marzo/Aprile 2007


TECNICHE

di carico del magazzino: secondo e 2 nel terzo). Inoltre bisogna consi-


derare che ciascuna delle due righe che costi-
tuiscono l’informazione di un prodotto deve
IDX001-1:045826,1,”ALIM”,”DEPERIB”,”FRUTTA”,”MELE avere come primo campo il codice del prodot-
TRENT.”,”KG”,2002-09-29
IDX001-2:45454354,34534534,3453456 to, che quindi deve essere uguale nelle due
righe. Ma spetta veramente a noi sobbarcarci
IDX002-1:022342,,”ALIM”,”CONFEZ”,”LATTIC”,”SCAMOR.
l’onere di scrivere questo parser?
MASA”,PZ
IDX002-2:3243441
La soluzione al problema
IDX003-1:111134,,ALIM,CONFEZ,LATTIC,LATTE ALICE,,
2002-12-29
IDX003-2:232454354,13203456 Esiste un altro modo per effettuare l’anali-
si delle stringhe, decisamente più potente e
meno gravoso per lo sviluppatore, che va sot-
to il nome di Espressioni Regolari (Regular
I dati sono presenti su righe differenti sepa- Expression), per brevità regex. Microsoft ha
rate da un <CRLF>. Ciascuna informazione introdotto superbamente il supporto a questa
riguarda differenti prodotti da caricare ed è tecnologia nel framework .NET e preceden-
disposta su due righe: la prima, prefissata da temente nel motore di scripting di Internet
un IDXn-1 (dove n è il numero di riga con un
padding a 3 cifre) riporta le informazioni fon-
damentali del prodotto; la seconda, prefissa-
ta da un IDXn-2 (dove n è il numero di riga
col solito padding a 3 cifre), riporta l’elenco Quello della gestione
dei barcode ad essa associati. Le informazio- delle stringhe è un
ni nei singoli campi sono separate da virgola,
non sono posizionali (nel senso che i campi
problema “universale”
non iniziano sempre dallo stesso numero di
colonna), alcuni campi possono essere omes-
si anche se viene riservata la loro posizione
dalla presenza della virgola (ad esempio la
sequenza “022342,,ALIM”). Alcuni altri cam-
pi, quelli in coda, possono essere addirittura
omessi. I campi contenuti nell’informazione Explorer (e quindi di Windows), ma si tratta
sono i seguenti: Identificativo (es. “045826”), essenzialmente di tecnologia standard comu-
Gruppo Merceologico (es. “ALIM”), Famiglia ne anche ad altri linguaggi.
(es. “DEPERIB”), Sottofamiglia (es. “FRUT- Regex è appunto una notazione (un linguag-
TA”), Descrizione (es. “MELE TRENT.”), Uni- gio) specificatamente progettata per l’analisi
tà di misura (es. “KG”), Data movimento (es. e l’estrazione dei dati dalle stringhe. È stata
“2002-09-29”) e fino a tre Codici a barre (es. “ introdotta inizialmente in linguaggi web-unix-
45454354,34534534,3453456”). oriented come il perl, ma poi si è diffusa an-
Estrarre informazioni da questo file richie- che in altri ambienti, senza però ottenere un
derebbe la scrittura di funzioni mediamente grande successo in ambito Windows. In effet-
sofisticate che dovrebbero tener conto delle ti presenta una difficoltà di apprendimento
virgole come separatori dei campi. Inoltre do- iniziale rilevante ma, una volta superatala, si
vrebbero considerare i casi di campi opzionali mandano definitivamente in pensione le vec-
o di numero variabile, come i vari barcode, che chie tecniche di analisi delle stringhe.
sono separati anch’essi da virgole, ma sono in Le Espressioni Regolari sono una funziona-
numero variabile (3 nel primo esempio, 1 nel lità che permette di ottenere risultati stupefa-

N. 74 - Marzo/Aprile 2007 VBJ 21


TECNICHE

centi attraverso la ricerca di corrispondenze \r corrisponde ad un inizio riga


di testo. Le espressioni regolari operano sulle \n corrisponde ad un newline
stringhe, e le stringhe più semplici sono co- \t corrisponde ad una tabulazione o uno
stituite da singoli caratteri. La maggior parte spazio
dei caratteri corrisponde semplicemente a se \d corrisponde a una qualsiasi cifra decima-
stessa, quindi a corrisponderà alla stringa “a” le; è equivalente a [0-9]
(è definibile il comportamento sulle maiusco- \D corrisponde a un qualsiasi carattere che
le o minuscole). non sia una cifra; è equivalente a [0-9]
\s corrisponde a uno spazio bianco
I metacaratteri \S corrisponde a un qualsiasi carattere che
non sia uno spazio bianco; è equivalente a
Alcuni caratteri assumono significati parti- [^ \t\n\r\f\v]
colari e vengono chiamati metacaratteri. Se \w corrisponde a un qualsiasi carattere alfa-
vogliamo che questi vengano invece interpre- numerico; equivale a: [a-zA-Z0-9_]
tati come caratteri ordinari, dovranno essere \W corrisponde a un qualsiasi carattere non
protetti, cioè sempre preceduti dal metacarat- alfanumerico; equivale a: [^a-zA-Z0-9_]
tere “\”. Eccone una lista completa:
Oltre che a segnalare tali sequenze, “\” svolge
[ \ { | ( ) ^ $ ? + * .
la funzione di proteggere caratteri speciali, fa-
I metacaratteri costituiscono uno dei fon- cendo sì che vengano interpretati come carat-
damenti della potenza delle espressioni re- teri normali, come già accennato precedente-
golari. mente. Esistono inoltre altri metacaratteri:
È possibile poi specificare un insieme di ca-
ratteri usando le parentesi quadre. Ad esem- . corrisponde a un qualsiasi carattere eccet-
pio “[abc]” corrisponderà a uno qualsiasi dei to un newline.
caratteri compresi tra le parentesi; per sem- ^ corrisponde all’inizio della stringa; se è
plificare la notazione, l’intervallo completo tra attiva l’opzione Multiline, presente in tutte le
due caratteri può essere abbreviato usando il principali implementazioni di Regex, questo
trattino (-), quindi l’esempio sopra è equiva- metacarattere è da interpretare anche come
lente a “[a-c]”. È possibile indicare un carat- “subito dopo un newline”. Inoltre serve per
tere esterno a un intervallo, usando il meta- specificare un intervallo di caratteri tramite
carattere “^”; per esempio “[^c]” corrispon- “complemento”, come riportato sopra.
derà a qualunque carattere eccetto “c”, ma $ corrisponde alla fine della stringa; in mo-
“[^]” corrisponderà semplicemente a “^”. dalità Multiline significa anche “subito pri-
Infatti eventuali metacaratteri compresi tra ma di un newline”; “campo” corrisponde sia
“[“ e “]” verranno presi alla lettera, quindi a “campo” che a “campobasso”, “campore-
“[]]” corrisponderà a “]”. Le RegEx adiacenti se” ecc. mentre “campo$” corrisponde solo
vengono concatenate, per cui se A e B sono a “campo”.
due espressioni regolari, AB è un’espressio- È possibile inoltre gestire le ricezioni di testo.
ne regolare; se una stringa p corrisponde ad Il metacarattere ‘*’ specifica che la RegEx che
A e un’altra stringa q a B, la stringa pq corri- lo precede (può essere un singolo carattere,
sponderà ad AB. ma ad esempio anche un intervallo [a-z]) può
Possiamo costruire insiemi di caratteri con- ripetersi zero o più volte, quindi ad esempio
catenando intervalli, ad esempio “[a-zA-Z]”. pip*o trova corrispondenza in “pio” (zero “p”),
Intervalli come questo possono essere spe- “pipo”, “pippo”, “pipppo” e così via.
cificati tramite particolari sequenze che cor- Simile è il comportamento di “‘+”, che spe-
rispondono a classi di caratteri; eccone alcu- cifica che la RegEx che lo precede può ripe-
ne: tersi una o più volte (attenzione a tale diffe-

22 VBJ N. 74 - Marzo/Aprile 2007


TECNICHE

Sintassi delle Regular Expression


CARATTERE DESCRIZIONE

Marca il carattere che segue come una backreference, se seguito da un


numero, o come un carattere speciale di escape, se seguito da un carattere.
Ad esempio \1 avverte che, a questo punto della stringa, si incontrerà lo
stesso pattern definito nel gruppo n. 1. Viceversa, \n, ad esempio, indicherà
\ la presenza di un newline. Infine, se si vuol indicare la presenza di un carattere
di escape nella stringa, il metacarattere \ verrà utilizzato come prefisso per
indicare che quello che segue va interpretato come un carattere e non come
un metacarattere. Ad esempio se volessimo indicare la presenza di un + nella
stringa, dovremmo scrivere \+

Indica l’inizio della stringa. Se è impostata l’opzione Multiline, indica l’inizio di


^ una nuova riga.

Indica la fine della stringa. Se è impostata l’opzione Multiline, indica la fine di


$ nuova riga.

Effettua il match della sottostringa precedente in modo iterativo, cioè indica


* che l’espressione precedente può essere presente da 0 a più volte. Ad
esempio, zo* valida “z” e “zoo”. * è equivalente a {0,}.
Effettua il match della sottostringa precedente in modo iterativo, cioè indica
+ che l’espressione precedente può essere presente da 1 a più volte. Ad
esempio, zo+ valida “zo” e “zoo”. + è equivalente a {1,}.

Effettua il match della sottostringa precedente in modo iterativo, cioè indica


? che l’espressione precedente può essere presente 0 o 1 volta. Ad esempio
“do(es)?” valida “do” o “does”. ? è equivalente a {0,1}

Effettua il match della sottostringa precedente per esattamente n volte. Ad


{n} esempio, ‘o{2}’ effettua il match di parole come “Food”, ma non di parole
come “Tod” o “Rooof”.
Effettua il match della sottostringa precedente per n o più volte. Ad esempio,
{n,} ‘o{2,}’ effettua il match di parole come “Food”, “Rooof” ecc.
Effettua il match della sottostringa precedente presente da n ad m volte. Ad
{n,m} esempio, ‘o{2,4}’ effettua il match di parole come “Food”, “Rooof”, “Saoooo”,
ma non di parole come “Rod” o “Teoooooos”.
Questo metacarattere assume un significato differente da quello già
osservato, se segue uno degli altri metacaratteri (*, +, ?, {n}, {n,}, {n,m}).
La differenza consiste nel fatto che, in questa modalità, il motore cerca di
? effettuare il match del minor numero possibile di caratteri. Ad esempio, la
stringa “oooo” sottoposta al pattern ‘o+’ prenderebbe tutte le ‘o’ (quindi
‘oooo’), invece sottoposta al pattern ‘o+?’ fa il match di una singola “o”.

. Effettua il match di tutti i caratteri eccetto il “\n”.


Effettua il match di pattern e cattura il risultato. I match così catturati vengono
(pattern) detti anche Gruppi.
Tabella 1 Le RegEx in breve

N. 74 - Marzo/Aprile 2007 VBJ 23


TECNICHE

Effettua il match di pattern, ma non cattura il risultato.


(?:pattern)
Effettua il match di pattern in qualsiasi punto dove comincia nella stringa da
analizzare. Non cattura il gruppo, ma non consuma nemmeno caratteri e quindi
(?=pattern) può essere usato in abbinamento ad altri pattern sulla stessa sottostringa. Ad
esempio ‘Windows (?=95|98|NT|2000)’ effettua il match di “Windows” in
“Windows 2000” ma non di “Windows” in “Windows 3.1”.
Come il caso precedente, ma in relativamente a sottostringhe che non
(?!pattern) contengono pattern al loro interno.
Effettua il match di x oppure y. Ad esempio, ‘z|food’ effettua il match di “z” o
x|y “food”. ‘(z|f)ood’ effettua il match di “zood” o “food”.
Effettua il match di un set di caratteri contenuto tra le parentesi quadre. Ad
[xyz] esempio ‘[abc]’ effettua il match di tutti i caratteri “a”, “b” e “c”.
Effettua il match di tutti i caratteri esclusi quelli definiti in un set di caratteri
[^xyz] contenuto tra le parentesi quadre. Ad esempio ‘[^abc]’ effettua il match di
tutti i caratteri eccetto “a”, “b” e “c”.
Effettua il match di un range di caratteri contenuto tra le parentesi quadre,
[a-z] che va da “a” a “z”. Ad esempio ‘[a-d]’ effettua il match di tutti i caratteri “a”,
“b” e “c” e “d”.
Effettua il match di tutti i caratteri esclusi quelli definiti in un range di caratteri
[^a-z] contenuto tra le parentesi quadre, che va da “a” a “z”. Ad esempio ‘[^a-d]’
effettua il match di tutti i caratteri eccetto “a”, “b” e “c” e “d”.
Effettua il match di un pattern che però non si trova alla fine di una parola. Ad
\b esempio, ‘er\b’ effettua il match di ‘er’ in “never” ma non di ‘er’ in “verb”.
Effettua il match di un pattern che però si trova alla fine di una parola. Ad
\B esempio, ‘er\b’ effettua il match di ‘er’ in “verb” ma non di ‘er’ in “never”.
Effettua il match di un qualsiasi carattere di Control indicato da x (in pratica
\cx rappresenta una sequenza Control+x).

\d Effettua il match di una cifra. È l’equivalente di [0-9].


Effettua il match di qualsiasi cosa che non sia una cifra. È l’equivalente di
\D [^0-9].

\f Effettua il match di un form-feed. È l’equivalente di \x0c e \cL.

\n Effettua il match di un carattere newline. È l’equivalente di \x0a e \cJ.


Effettua il match di un carriage return (ritorno carrello). Equivalente a \x0d e
\r \cM.
Effettua il match di qualsiasi tipo di spazio bianco inclusi spazi, tab, form-feed
\s ecc. Equivalente a [\f\n\r\t\v].
Effettua il match di qualsiasi carattere esclusi quelli di tipo di spazio bianco
\S (spazi, tab, form-feed ecc.) Equivalente a [^\f\n\r\t\v].

\t Effettua il match di un tab. Equivalente a \x09 e \cI.

\v Effettua il match di un tab verticale. Equivalente a \x0b e \cK.

24 VBJ N. 74 - Marzo/Aprile 2007


TECNICHE

Effettua il match di un qualsiasi carattere alfabetico, incluso l’underscore.


\w Equivale a ‘[A-Za-z0-9_]’.
Effettua il match di un qualsiasi carattere esclusi i caratteri alfabetici
\W (compreso l’underscore). Equivale a ‘[^A-Za-z0-9_]’.
Effettua il match di n, dove n è un valore di escape esadecimale. Tali valori
devono occupare esattamente due cifre. Ad esempio, ‘\x41’ effettua il match
\xn di “A”. ‘\x041’ è l’equivalente di ‘\x04’ & “1”. Permette di utilizzare codici ASCII
nelle regular expression.
Rappresenta una backreference, cioè indica il ripetersi di un pattern già
\num catturato in un gruppo precedente e precisamente nel gruppo in posizione
num.
Identifica un carattere ottale o una backreference. Se \n è preceduto da
\n almeno n gruppi catturati, allora è da intendere come una backreference.
Altrimenti, n è un valore di escape ottale (0-7).
Identifica un carattere ottale o una backreference. Se \nm è preceduto da
\nm almeno nm gruppi catturati, allora è da intendere come una backreference.
Altrimenti, n ed m sono valori di escape ottali (0-7).

renza!). Quindi “pip+o” troverà corrisponden- tare: è possibile conservare delle occorrenze
za in “pipo”, “pippo”, “pipppo” e così via, ma di sottostringhe ricavata dalla RegEx in va-
non in “pio” (almeno una “p”). riabili particolari dette di gruppo, inserendo
Più ristretto è il comportamento di “?”, che l’espressione dentro parentesi tonde. L’idea è
specifica che la RegEx che lo precede può quella di estrarre delle sotto-informazioni dal-
ripetersi zero o una volta. Quindi la nostra l’informazione principale e di potervi accede-
“pip?o” troverà corrispondenza solo in “pio” re in modo simbolico e nominativo attribuen-
o “pipo”. do un nome a ciascun gruppo, almeno in al-
Resta il modificatore più complesso tra quelli cune delle implementazioni di RegEx. Vedia-
dedicati alle ripetizioni: {m,n}, con m e n in- mo un esempio: “(abc)” cattura una sequenza
teri decimali. Esso specifica che della RegEx di caratteri “abc” e la mette in un gruppo. Se
che lo precede vanno ricercate un numero di volessimo dare un nome a questo gruppo, ad
corrispondenze compreso tra m e n, il massi- esempio “sequenza”, dovremmo scrivere un
mo possibile. n può essere omesso, in tal caso RegEx del tipo:
viene preso un limite superiore talmente alto
(?<sequenza>abc)
da poter essere considerato infinito agli effet-
ti pratici. Ad esempio “ar{1,3}gh” può corri- È possibile, all’interno di una singola espres-
spondere ad “argh”, “arrgh” e “arrrgh”, ma sione, definire differenti gruppi. Inoltre è pos-
non ad “agh” o “arrrrgh”. sibile riferirsi ad un gruppo incontrato nel-
Un riassunto di questi metacaratteri e nume- la scansione della stringa, anche nel seguito
rosi altri sono descritti nella Tabella 1, che è della stessa:
da intendersi come riferimento per lo studio
\s*i(?<mio_gruppo>zoe|boe)\s*\k<mio_gruppo>
delle Regular Expression.
è da interpretare come cerca, dopo una certa
La gestione dei gruppi sequenza di caratteri costituita da spazi bian-
chi (\s*) seguiti da una “i”, un gruppo costitui-
Un altro importante elemento delle RegEx è to dalle parole “zoe” oppure “boe”. A questo
la gestione dei gruppi. Il concetto è elemen- gruppo viene assegnato il nome “mio_grup-

N. 74 - Marzo/Aprile 2007 VBJ 25


TECNICHE

po”. Successivamente, dopo aver trovato al- più incomprensibile si possa trovare, in realtà
tri spazi vuoti, deve necessariamente trovarsi un’analisi più attenta svela il significato dal-
un’altra sequenza di caratteri identica al grup- l’espressione mostrandone, tutto sommato, la
po “mio_gruppo” appena individuato. Ovvia- semplicità. La RegEx inizia con “IDX(\d{3})-1:
mente se il gruppo conteneva “zoe”, anche ”, significa che cerca proprio la stringa “IDX”
quest’ultima occorrenza deve essere “zoe” e seguita da un numero di tre cifre (“\d{3}”) che
non può essere “boe”. Questa tecnica si chia- viene conservato in un gruppo che, essendo
ma backreference. il primo della Regex, verrà identificato con 1.
Esso sarà seguito a sua volta dalla “-1:”. Ver-
Le opzioni del motore RegEx rebbero trovate così le sottostringhe “IDX001-
1:”, “IDX002-1:” e “IDX003-1:”
Inoltre sono previste una serie di “opzio- Ecco la porzione di RegWx che si occupa di
ni” che determinano il comportamento del- questo (da qui in avanti le parti di cui si par-
la scansione stringa. Esse sono direttamen- la sono evidenziate in grassetto):
te impostabili dal modello ad oggetti. Ecco-
ne le principali: IDX(\d{3})-1:(\d+),\d*,…

• SingleLine considera la stringa da analiz-


zare come se fosse disposta su un’unica riga, A questo punto troviamo il pattern “(\d+)”,
infatti i meta-caratteri “^” e “$” vengono in- che indica la presenza di un numero indefini-
tesi come inizio e fine stringa; to di cifre e verrà memorizzato in un gruppo.
• Multiline considera la stringa da analizza- Esso conterrà proprio il codice del prodotto,
re come se fosse disposta su più righe sepa- che appunto segue la sottostringa “IDX001-1:
rate da un <CRLF>, infatti i meta-caratteri ” ed è composto da sole cifre (“045826”):
“^” e “$” vengono intesi come inizio e fine
di ciascuna riga; IDX(\d{3})-1:(\d+),\d*,…

• IgnoreCase non fa distinzione tra maiusco-


le e minuscole. Quindi troviamo il carattere “,” seguito dal
Alcune implementazioni di RegEx più ric- pattern “\d*” che indica la possibile presen-
che, come quella presente in .NET, forniscono za di un numero che, nel record n.1 del no-
una serie ben più ampia di opzioni e, soprat- stro stream sarà la sottostringa “,1,”. A que-
tutto, la possibilità di definirle direttamente sta segue un’altra “,” e poi l’interessante sot-
nel pattern della RegEx, in modo da non do- tostringa:
ver impostare nulla dall’esterno.
IDX(\d{3})-1:(\d+),\d*,”?([\w|.|\s|-]+)”? …

Analisi della stringa dell’esempio


Essa estrarrà il codice del Gruppo merceleo-
Nell’esempio abbiamo presentato una strin- logico del prodotto che, nel primo record sarà
ga di testo contenente dati relativi ad articoli “ALIM”. È interessante notare che la presen-
di magazzino, come esempio significativo di za delle doppie virgolette è opzionale ed in-
stream di test a cui si può applicare un’anali- fatti nel record n.3 sono assenti. La sequenza
si per regular expression. Osserviamo infatti “? indica proprio che la presenza delle doppie
la seguente RegEx in grado di estrarre i dati virgolette all’inizio della stringa è opzionale. A
dallo stream in questione: questo punto segue un pattern che viene cat-
turato in un gruppo. Esso è del tipo “([\w|.|\
IDX(\d{3})-1:(\d+),\d*,”?([\w|.|\s|-]+)”?,”?([\w|.|\
s|-]+)”?,”?([\w|.|\s|-]+)”?,”?([\w|.|\s|-]+)”?(?:
s|-]+)” e cioè indica la presenza di un numero
,”?(\w*)”?(?:,(\d{4})-(\d{2})-(\d{2})|)|)\r\nIDX\1- di caratteri (almeno 1 carattere come indica il
2:(\d*)(?:,(\d*)|)(?:,(\d*)|)(?:,(\d*)|)(?:,(\d*)|) “+”) compresi nel set [\w|.|\s|-], cioè un carat-
Anche se, all’apparenza, sembra quanto di tere alfanumerico (“\w”), un punto (“.”), uno

26 VBJ N. 74 - Marzo/Aprile 2007


TECNICHE

spazio (“\s) o un trattino (“-”). Perciò verran- tenere nulla, come indicato dalla parte destra
no catturate tutte le sottostringhe composte della sequenza “….|)” oppure può contene-
da una di queste tipologie di caratteri, com- re al suo interno la sequenza “,” seguita dal
presi quindi i nostri gruppi merceologici. Lo gruppo (“\w*”) che conterrà l’Unità di misura.
stesso discorso vale per il campo famiglia, sot- In realtà questo gruppo potrebbe anche esse-
tofamiglia e descrizione catturati nei gruppi re vuoto e infatti “\w*” indica proprio questa
evidenziati di seguito: possibilità. A questo segue un altro gruppo,
non di cattura, che contiene opzionalmente
IDX(\d{3})-1:(\d+),\d*,”?([\w|.|\s|-]+)”?,”?([\w|.|\ la stringa vuota o la Data del lotto). È impor-
s|-]+)”?,”?([\w|.|\s|-]+)”?,”?([\w|.|\s|-]+)”?…
tante enfatizzare l’uso dei gruppi non di cat-
tura perché, quando accederemo alla collec-
tion dei gruppi catturati, non troveremo quel-
li con prefisso “?:”.
Le Espressioni Regolari A questo punto incontriamo la sequenza
sono una funzionalità che “\r\n” che indica che la stringa conterrà un
permette di ottenere risul- <CRLF>. Ad esso seguirà la sottostringa cat-
turata nel gruppo n.1 che conteneva proprio
tati stupefacenti attraverso l’indice del record. Con questo sistema voglia-
la ricerca di mo essere certi che le informazioni che stiamo
estraendo dalla seconda riga del record abbia-
corrispondenze di testo. no comunque a che fare con lo stesso record.
Si tratta quindi di un backreference:

IDX(\d{3})-1:(\d+),\d*,”?([\w|.|\s|-]+)”?,”?([\w|.|\
s|-]+)”?,”?([\w|.|\s|-]+)”?,”?([\w|.|\s|-]+)”?(?:
,”?(\w*)”?(?:,(\d{4})-(\d{2})-(\d{2})|)|)\r\nIDX\1-
A questo punto incontriamo un’interessante 2:(\…
variante dei gruppi visti finora: i gruppi non
catturati. Infatti, a questo punto della strin- Quindi dovremo trovare la sequenza
ga troviamo i campi Unità di misura e Data “<CRLF>IDXn-2:” dove n rappresenta pro-
del lotto che però sono opzionali, come si può prio l’indice del record catturato nel gruppo
osservare dagli altri record. Infatti nel record 1, da qui la sintassi “\1”. A questo punto cat-
n.2 sono assenti entrambi e la riga si inter- tureremo i cinque barcode del prodotto. Solo
rompe al campo descrizione con un <CRLF>. il primo sarà presente certamente, gli altri
Il record n.3, invece, presenta il solo campo quattro sono opzionali ed infatti sono conte-
Data del lotto, ma per rispettare la posiziona- nuti nel solito gruppo non di cattura che ne
lità delle virgole, il campo Unità di misura è gestisce l’opzionalità:
lasciato vuoto (“,,”). Per gestire questi casi, si
osservi il pattern evidenziato di seguito nel- IDX(\d{3})-1:(\d+),\d*,”?([\w|.|\s|-]+)”?,”?([\w|.|\
s|-]+)”?,”?([\w|.|\s|-]+)”?,”?([\w|.|\s|-]+)”?(?:
la RegEx: ,”?(\w*)”?(?:,(\d{4})-(\d{2})-(\d{2})|)|)\r\nIDX\1-
2:(\d*)(?:,(\d*)|)(?:,(\d*)|)(?:,(\d*)|)(?:,(\d*)|)
IDX(\d{3})-1:(\d+),\d*,”?([\w|.|\s|-]+)”?,”?([\w|.|\
s|-]+)”?,”?([\w|.|\s|-]+)”?,”?([\w|.|\s|-]+)”?(?:
,”?(\w*)”?(?:,(\d{4})-(\d{2})-(\d{2})|)|)\r\… Fatto questo avremo così “catturato” le infor-
mazioni rilevanti dal file di testo da importa-
re. Esse ci saranno messe a disposizione dal
il tutto è inserito in un gruppo, prefissato motore RegEx che andremo ad utilizzare sot-
da “?:” che indica appunto di non catturarlo. to forma di Gruppi o di SubMatch (a seconda
Questo gruppo può opzionalmente non con- dell’implementazione).

N. 74 - Marzo/Aprile 2007 VBJ 27


TECNICHE

Conclusioni o JScript, ma anche da tutti gli ambienti di


sviluppo in grado di utilizzare librerie COM
Abbiamo dato uno sguardo introduttivo, ma (ci saranno infatti esempi di codice in Visual
sufficientemente approfondito per far com- Basic e Delphi).
prendere la potenza e la flessibilità di questa Infine, nel terzo ed ultimo articolo della serie,
notazione sintattica il cui solo scopo è analiz- analizzeremo la sofisticata implementazione
zare e trattare stringhe di testo. Non abbiamo fornita con il framework .NET di Microsoft, os-
fatto alcun riferimento ad implementazioni servandone alcune peculiarità specifiche che
reali di un motore RegEx, per evitare di inge- sfrutteremo per implementare tecniche molto
nerare l’impressione che tale sintassi sia lega- sofisticate (come mostrato in [2]).
ta ad una particolare implementazione.
Pur ribadendo l’assoluta genericità dei con- Riferimenti
cetti appena esposti e la loro applicabilità,
pressoché completa, in tutte le implemen- [1] Sito Microsoft MSDN dedicato allo scrip-
tazioni di RegEx fornite per le piattaforme ting – http://msdn.microsoft.com/scripting
e per gli ambienti di sviluppo più disparati, [2] V. Vessia – “Programmare il cellulare” –
nei prossimi articoli osserveremo da vicino Hoepli, 2002 – Capitoli 1 e 3.
l’implementazione fornita da Microsoft col
motore ActiveScripting dalla versione 5.6 in
poi (già fornita con Windows XP e scaricabile
da [1] per le altre versioni di Windows). Essa
sarà utilizzabile negli stessi script VBScript

28 VBJ N. 74 - Marzo/Aprile 2007


Prodotti & News
Potete inviare i vostri comunicati stampa all’indirizzo:
comunicatistampa@infomedia.it

Nuove release di CA Threat nalità anti-spam opzionale. La gamma Wireless N di D-Link è sta-
Manager e delle ta introdotta sul mercato nel settem-
CA Protection Suite Entrambi i prodotti operano con bre 2006. Fin da allora la gamma si è
il nuovo CA Host-Based Intrusion estesa per assicurare un portafoglio
Computer Associates ha annunciato Prevention System (CA HIPS), che prodotti completo basato su questa
nuove release per le soluzioni di riunisce in sé funzionalità stand-alo- nuova tecnologia. Attualmente la
protezione dalle minacce, in grado di ne di firewall, intrusion detection gamma comprende i seguenti pro-
unificare e semplificare l’attuazione & prevention, per fornire ai clienti dotti:
di misure di sicurezza essenziali per molteplici livelli di sbarramento per
consentire ai clienti di proteggere la massima protezione contro le mi- · Router Gigabit DIR-655 che sup
meglio gli ambienti IT e abbattere nacce informatiche. porta Windows Vista e offre porte
allo stesso tempo l’overhead ammi- Gigabit LAN & WLAN
nistrativo. Per maggiori informazioni: · Router fast Ethernet DIR-635
http://ca.com/protectionsuites · Router ADSL DSL-2740B
CA Threat Manager r8.1, concepito · Adattatore USB DWA-142
appositamente per i clienti di classe · Mini Adattatore USB DWA-140
enterprise, riunisce i riconosciuti CA D-Link annuncia la · Adattatore PC DWA-547
Anti-Spyware r8.1 e CA Anti-Virus disponibilità del supporto · Adattatore CardBus DWA-645
r8.1, per offrire una console inte- per IEEE 802.11N Draft 2.0 · Bundle kit DKT-140 che comprende
grata di gestione web-based capace attraverso l’aggiornamento DIR-635 & DWA-140
di linearizzare attività quali il moni- di software · Bundle kit DKT-810 che comprende
toraggio, la scansione e la distribu- DSL-2740B & DWA-140
zione degli aggiornamenti. La nuova D-Link, fornitore di soluzioni di rete
versione offre altresì il supporto di rivolte alle aziende enterprise e al Per maggiori informazioni:
numerose piattaforme, fra cui Win- mercato Soho, annuncia il supporto www.dlink.it
dows Vista e le versioni precedenti di per le specifiche IEEE 802.11n Draft
Windows, così come altre piattafor- 2.0 attraverso i futuri aggiornamenti
me operative quali UNIX (Linux e Sun di firmware e driver. IBM e 3Com presentano la
Solaris) e Macintosh Intel OS X. prima singola piattaforma
La versione 2.0 delle specifiche per la convergenza di IP
Le CA Protection Suites r3.0 sono 802.11n è stata approvata dal IEEE Telephony, Business e
state invece sviluppate per le piccole Work Collaboration Application
e medie imprese che usufruiscono Group, portando la nuova tecnologia
di un supporto informatico ridotto wireless verso la standardizzazione IBM e 3Com Corporation, uno dei
e sono disponibili in cinque versioni che si prevede per l’inizio del 2008. principali fornitori di soluzioni sicure
(con prezzo e packaging speciale), L’approvazione del draft 2.0 e convergenti per reti voce e dati,
che supportano le diverse piattafor- garantisce che non saranno richiesti hanno annunciato oggi la prima so-
me Microsoft. Le Suite mettono a ulteriori cambiamenti di hardwa- luzione offerta dal mercato in grado
disposizione delle PMI le tecnologie re per l’approvazione del nuovo di integrare, in un’unica piattaforma
più complete e integrate del settore standard. Questo significa che tutti sicura, telefonia IP con e-mail, mes-
in materia di anti-virus, anti-spyware, i prodotti D-Link venduti fino ad saggistica e applicazioni per processi
backup e migrazione dei desktop per ora possono essere aggiornati per core business.
consentire alle PMI di difendersi da la versione standard finale solo via
tutta una gamma di potenziali rischi software. Attualmente tutti i router e La soluzione System i Integrated Col-
che minacciano il business aziendale i client D-Link Wireless N sono con- laboration offrirà funzionalità di co-
e di ridurre al minimo i costi infor- formi alle specifiche della versione municazione unificate per una mag-
matici. Stando al feedback dei clienti, draft 1.0 della tecnologia 802.11n, giore produttività, costi più contenuti
i principali vantaggi sono legati ad con l’approvazione dell’attuale draft e operazioni semplificate. Eseguita su
un’installazione semplificata, una 2.0, D-link mira a fornire quanto piattaforma System i singola, risulta
console più potente per il reporting prima aggiornamenti firmware per più facile ed economica da gestire
gestionale, un migliore centro di aggiornare tutti i prodotti venduti rispetto alle offerte multi server dei
controllo per i desktop e una funzio- fino ad ora. competitor basate su Windows.

N. 74 - Marzo/Aprile 2007 VBJ 29


Prodotti & News

La nuova soluzione di collaborazio- contenenti dati applicativi quali un Si tratta di prodotti per lo sviluppo
ne integrata si fonda su System i IP contatto precedente o la cronologia software concepiti per consentire
Telephony, prodotto lanciato da IBM del cliente. agli sviluppatori di creare applica-
e 3Com nel novembre 2006. Utilizza zioni più affidabili e scalabili. Queste
standard aperti come lo standard · Integrazione di System i IP Tele- nuove soluzioni sono ottimizzate per
SIP (Session Initiation Protocol) per phony con Lotus® Sametime® 7.5 i più recenti processori multi-core
creare una piattaforma innovativa - Consente agli utenti di System i IP Intel® Core(tm) 2 Extreme QX6800
che consente al sistema 3Com® VCX Telephony e Sametime di eseguire e Intel® Core(tm) 2 Quad Q6600 e
di integrarsi più facilmente con ge- chiamate dal telefono della propria per i nuovi sistemi operativi come
stionali e applicativi aziendali eseguiti postazione IP semplicemente facen- Microsoft Vista, Novell SUSE Linux
su System i. do clic su un contatto del proprio Enterprise, Red Hat Enterprise Linux
elenco Sametime. In questo modo e Fedora Core.
IBM e 3Com hanno riscontrato un tutti gli utenti possono connettersi
notevole interesse da parte dei for- velocemente con i colleghi e i colla- L’esecuzione di più comandi simul-
nitori di soluzioni System i e dei part- boratori esterni utilizzando informa- taneamente, o “parallelismo”, si
ner commerciali, impazienti di sfrut- zioni esistenti. Possono inoltre visua- esprime, nell’ambito dell’hardware e
tare questa integrazione. IBM e 3Com lizzare la presenza a partire dal client dei sistemi operativi, con il concetto
prevedono di collaborare con più di Sametime, ossia vedere se i colleghi dei thread di esecuzione, che sono
100 fornitori di soluzioni indipenden- sono connessi al client o se sono oc- più facili da programmare quando
ti integrandone le applicazioni con la cupati in una conversazione. vengono astratti nei concetti di pa-
nuova soluzione. Questi fornitori po- rallelismo di dati e attività. I prodotti
tranno così avvalersi del programma · Messaggistica unificata di System i Intel per lo sviluppo software sono
Open Network di 3Com (3Com|ON) IP Telephony l’esempio più recente dell’impegno
e del Software Development Kit - Consente di ricevere messaggi vo- di Intel nel semplificare la program-
(SDK), per integrare con precisione cali, fax ed e-mail in un’unica casella mazione in parallelo, oltre a rap-
le proprie applicazioni aziendali con postale unificata. I messaggi vocali presentare una soluzione efficiente
la telefonia IP 3Com e le applicazioni vengono recapitati sotto forma di per consentire ai team di sviluppo
di collaborazione IBM. allegati eseguibili su un laptop o de- di preparare applicazioni per i pro-
sktop con applicazioni multimediali cessori multi-core. Questi prodotti
La soluzione System i Integrated Col- standard. La funzionalità di messag- assicurano scalabilità, affidabilità
laboration include le seguenti nuove gistica unificata è prevista sia per e ottimizzazione delle applicazioni
funzionalità: applicazioni Lotus Domino sia per threaded per le innovazioni dei pro-
applicazioni Microsoft. cessori, oggi e nel futuro.
· SDK 3Com per System i IP Telephony
- Consente a System Integrator, ri- La soluzione System i Integrated Col- Intel Thread Checker 3.1 per Win-
venditori di soluzioni e utenti finali laboration sarà disponibile a partire dows e Linux consente di rilevare gli
di integrare la telefonia nelle proprie dal secondo trimestre del 2007. errori nella codificazione del paral-
applicazioni aziendali in modo più lelismo, in modo che gli sviluppatori
semplice ed economico con l’adozio- Per maggiori informazioni: possano introdurre il threading con
ne di nuove interfacce (API). www.ibm.com/systemi maggiore sicurezza e rapidità. Con
un motore brevettato di protezione
· System i IP Telephony Contact avanzata dagli errori, questo prodot-
Center I nuovi tool di Intel per to fornisce la “sicurezza dei thread”
- Consente alle unità operative che Windows Vista e identificando gli errori complessi
trattano volumi elevati di chiamate i processori Multi-core nelle applicazioni a 64 bit. Il tool
telefoniche, come gli helpdesk, di offre prestazioni ottimizzate per ri-
fornire un servizio migliore e, quin- Intel Corporation ha annunciato la durre le dimensioni delle immagini e
di, di soddisfare al meglio il cliente. disponibilità delle nuove versioni la gestione del runtime, assicurando
Funzionalità integrate utilizzano la di Intel® Thread Checker, Intel® agli sviluppatori un’analisi ancora
logica aziendale per instradare le Thread Profiler, Intel® VTune(tm) più veloce.
chiamate all’operatore più idoneo Performance Analyzer e Intel®
e per visualizzare messaggi a video Threading Building Blocks. Intel Thread Profiler 3.1 per Windows

30 VBJ N. 74 - Marzo/Aprile 2007


Prodotti & News

fornisce agli sviluppatori informazio- processori Intel Core 2 Duo e Quad per poter leggere o modificare i file,
ni dettagliate sul comportamento prevedono funzionalità di analisi l’utente debba avere a disposizione
dei thread dell’applicazione e indi- delle prestazioni avanzate e suppor- lo stesso programma (ed in alcuni
vidua i problemi delle prestazioni in tano più eventi, una maggiore preci- casi anche la stessa versione) utiliz-
parallelo, come ad esempio i colli di sione nella correlazione della loca- zato dall’estensore del documento
bottiglia. Consente inoltre di misura- lizzazione degli eventi e una nuova oppure un programma che faccia da
re il numero di core effettivamente funzione innovativa per il conteggio filtro per la visualizzazione.
utilizzati dall’applicazione e indica la degli eventi di pipeline stall, che mi- Il formato OpenDocument, basato
percentuale del codice non ottima- gliora sensibilmente l’ottimizzazione sul linguaggio XML, permette di
mente parallelizzato per la piattafor- attirando l’attenzione dell’utente superare questi vincoli. Esso è infatti
ma hardware su cui l’applicazione sui possibili problemi, ad esempio i ciò che viene definito uno “standard
viene eseguita. Questa versione mancati hit nella memoria. aperto”, libero pertanto da restrizio-
aggiornata offre uno stackwalking ni tecniche e da diritti d’autore del
selezionabile per velocizzare l’analisi VTune 9.0 per Linux offre un nuovo produttore.
e la visualizzazione, ed è più facile collegamento tra l’analisi del com- L’adozione di questo modello fa in
da utilizzare ripetutamente grazie al pilatore Intel e l’analisi in runtime modo che le informazioni conte-
supporto per il richiamo automatico degli hotspot di VTune. La nuova nute nei file OpenDocument siano
delle impostazioni di configurazione versione contiene un navigatore accessibili a prescindere dai sistemi
personalizzate all’interno di un’atti- intuitivo di hotspot che consente operativi, dai programmi e dalle tec-
vità. Aumenta inoltre l’uniformità e di scorrere fino all’origine da un nologie utilizzati dagli utenti.
consente di risparmiare tempo con hotspot all’altro. In questo modo Chiunque può usare i file ODF su
le attività che si ripetono. gli utenti possono identificare gli qualsiasi piattaforma in qualsiasi
hotspot e trarre vantaggio dalle momento.
Intel Threading Building Blocks conoscenze integrate nel compila- Il formato OpenDocument può risul-
1.1 per Windows, Linux e Mac OS tore Intel. tare particolarmente utile nella Pub-
X è una raccolta di modelli C++ blica Amministrazione, un settore in
destinata a semplificare l’introdu- Per ulteriori informazioni: cui sono più che mai necessari la
zione di thread in un’applicazione, www.intel.com/software/products. massima interoperabilità tra sistemi
consentendo di aumentare le pre- informatici eterogenei e la garanzia
stazioni e proteggendo allo stesso di lettura e modifica dei documenti.
tempo gli sviluppatori software dalla Documenti elettronici:
complessità di basso livello associata pubblicata la norma che Non è un caso la rapidità con cui
all’assegnazione dei thread ai core definisce uno standard l’ODF si sta diffondendo in tutto il
del processore. Questo permette universale mondo. Diversi sono, infatti, i go-
agli sviluppatori di scrivere una verni e le pubbliche amministrazioni
volta un’applicazione che riconosce La norma tecnica UNI CEI ISO/IEC che hanno deciso di adottare il for-
automaticamente il numero di core 26300, pubblicata in questi giorni mato OpenDocument. Per rimanere
disponibili e varia le prestazioni di come adozione nazionale della in Europa, ecco alcuni degli esempi
conseguenza. Questa versione evo- norma ISO/IEC 26300, rappresenta il più significativi:
luta include la calcolatrice automa- capitolo finale di un lungo percorso · in Belgio il Consiglio dei Ministri ha
tica del grain size per ottimizzare la che ha portato per la prima volta stabilito che dal mese di settembre
parallelizzazione degli algoritmi. alla definizione, in ambito normati- 2008 ODF sarà l’unico standard da
vo, di uno standard universale per i utilizzare all’interno della Pubblica
Intel VTune Performance Analyzer documenti elettronici, svincolandoli Amministrazione;
9.0 è una soluzione che consente dalla applicazione che li ha generati: · in Danimarca, dal 1° settembre
agli sviluppatori di eseguire più si tratta del formato OpenDocument 2006 e dopo un periodo di speri-
velocemente il software in sistemi (ODF). mentazione di sei mesi tutti i do-
single-core e multi-core. Gli utenti di Ad oggi la gran parte dei documenti cumenti online del Ministero delle
Vista hanno ora il supporto comple- gestiti con il computer sono genera- Scienze della Tecnologia e dell’In-
to, compreso il nuovo driver di Intel, ti da software commerciali, ognuno novazione sono in ODF; a partire da
che si installa senza essere bloccato dei quali possiede un proprio forma- gennaio 2008 tutte le informazioni
da Vista per motivi di sicurezza. I to proprietario. Ciò comporta che, scambiate in maniera digitale tra la

N. 74 - Marzo/Aprile 2007 VBJ 31


Prodotti & News

Pubblica Amministrazione e i citta- SanDisk e Sony Presentano press™ ha un massimo di velocità di


dini dovranno essere disponibili in la nuova scheda di trasferimento dati di 2,5 gigabite al
formati basati su Open Standard; memoria SxS™ secondo, due volte la velocità delle
· in Francia il formato ODF viene uti- schede usuali per l’archiviazione ba-
lizzato dalla Gendarmerie; inoltre la SanDisk® Corporation (NASDAQ: sate su PC Card™. Inoltre, SanDisk
RGI (Référentiel Général Interopéra- SNDK) e Sony Corporation hanno e Sony hanno ottimizzato il proto-
bilité), che sovrintende alle regole annunciato di aver sottoscritto un collo tecnologico per il controllo
della interoperabilità dei sistemi Memorandum of Understanding della comunicazione tra l’hardware
(MOU) con l’intenzione di svilup- e le schede di memoria SxS™ per
informativi, raccomanda l’utilizzo
pare le specifiche della scheda di permettere il trasferimento di file
di ODF come formato standard dei
memoria SxS™ (S-by-S), con elevata molto grandi ad elevata velocità,
documenti.
capacità di trasferrimento dati e quali video ad alta definizione, a PC
tecnologia a norma con gli standard per il video editing non-lineare. Il
Il formato OpenDocument, date le
industriali ExpressCard™. target di velocità di trasferimento
sue caratteristiche, conferirà mag-
delle schede di memoria SxS™ è di
giore efficienza e flessibilità alla
Le schede di memoria SxS™ vanta- 800 megabite al secondo2.
comunicazione tra pubblica ammi-
no la forza tecnologia di SanDisk e
nistrazione e cittadini. · Compatezza. Le schede di me-
Sony, le quali hanno un passato di
grandi successi nel co-sviluppare e moria SxS™ utlizzano moduli
Per ulteriori informazioni: ExpressCard™/34 (larghezza:
promuovere prodotti con memoria
www.uni.com 34mm, altezza: 5mm, lunghezza:
flash. Con questa scheda di memoria
ad elevata performance ed alta affi- 75mm), con dimensioni inferiori
dabilità, entrambe le società punta- della metà rispetto alle PC Cards™.
Microsoft Visual Studio no a migliorare la funzionalità delle Questo consente videocamere pro-
“Orcas” - March 2007 videocamere professionali e i sistemi fessionali più contenute e leggere,
(CTP) di video editing non lineari. che offrano comuqnue elevata
capacità di memoria.
Visual Studio “Orcas”, rilasciata La scheda di memoria SxS™, che
a febbraio sul sito Microsoft, è utilizza memoria flash ed è a norma
studiata per sfruttare i vantaggi di con gli standard industriali Expres- Rilasciato da Microsoft
Windows Vista e il 2007 Office Sy- sCard™, si connette direttamente Virtual PC 2007
stem. Questa versione è disponibile ai computer attraverso il sistema
ad elevata velocità PCI-Express™. Microsoft ha rilasciato da Febbraio
come immagine VirtualPC o imma-
La tecnologia ExpressCard™ è stata una nuova versione di Virutal PC, la
gine autoestraente (nel qual caso è
adottata rapidamente dai produttori 2007, scaricabile gratuitamente dal
consigliato di non installarla su una
di PC per sostituire la PC Card™, of- sito Microsoft. Questa nuova ver-
macchina di produzione).
frendo ampio supporto alle schede sione è compatibile con le immagini
Le dimensioni sono ragguardevoli e
di memoria SxS™ nell’ hardware create dalla versione precedente (la
arrivano anche a circa 7 GB. La pro-
post produzione. 2004), ed ha pieno supporto per Vi-
cedura di download e installazione è sta. Ricordiamo che questo prodotto
spiegata nel dettaglio sul sito Micro- permette di far girare diversi sistemi
Sony adotterà la scheda di memoria
soft dedicato. operativi su una singola macchina
SxS™ nella sua serie di videocamere
Questa CTP è dedicata agli svilup- e permette di passare semplice-
professionali “XDCAM EX™“. Le
patori che vogliono sperimentare i mente da uno all’altro. Questo può
schede di memoria SxS™ di SanDisk
nuovi strumenti di sviluppo, ma non e Sony saranno disponibili a partire essere utile per vari scopi, tra cui
è destinata a sistemi di produzione, dagli ultimi mesi del 2007. testare applicazioni su precedenti
come indicato nella licenza accom- sistemi operativi, provare ad instal-
pagnatoria. I vantaggi sono riassumibili in: lare programmi senza “sporcare” la
Numerose novità sono contenute macchina di lavoro, ecc. I requisiti
al suo interno, a partire da LINQ · Elevata velocità di trasferimeto dati di sistema comprendono Windows
(Language Integrated Query) sia per di ampi filmati video. Le schede di Server 2003, Vista o XP Professional,
VB che per C#, ADO.NET, XML, CLR, memoria SxS™ sono le prime me- mentre ogni sistema virtualizzato ha
MS Office, Visual C++, WCF, WF ed morie per l’archiviazione allo stato bisogno di ulteriore RAM per funzio-
altro ancora. solido per PCI Express™. PCI Ex- nare correttamente

32 VBJ N. 74 - Marzo/Aprile 2007


.NET TOOLS
TypeMock.NET
di Fabio Perrone testing ed in particolar modo a TypeMock.NET.
Per i pochi che non lo sapessero, un mock object è
Un aiuto concreto per lo Unit Testing un oggetto in grado di simulare il comportamento
di un oggetto reale di un’applicazione ed è
Distribuire applicazioni prive di problemi particolarmente utile quando gli oggetti reali
è l’obiettivo di chiunque lavori seriamente sono particolarmente difficili da incapsulare
nell’ambito informatico: dall’ultimo degli all’interno di un’applicazione di test. Ovviamente
sviluppatori al primo dei capi progetto è per essere utilizzabili i mock object devono avere
fondamentale evitare che il software, cui abbiamo la stessa interfaccia degli oggetti reali. Quindi, se
dedicato così tanto tempo, si “pianti” alla prima si devono fare dei test su determinate peculiarità
distribuzione dal cliente. Non è questo l’ambito di un’applicazione, è possibile “imitare” il
migliore per discutere delle innumerevoli comportamento degli oggetti reali per ottenere
tecniche di analisi e progettazione volte ad qualsiasi risultato desiderato. Ecco dove viene
evitare il minor numero di errori (Test Driven in aiuto il tool che abbiamo analizzato questo
Development, Pair Programming, etc.) nonché mese.
degli strumenti di test atti a controllare qualsiasi È possibile eseguire il programma o in
tipo di applicazione (test funzionali, load test, modalità da riga di comando oppure come
unit test, etc.). Lo scopo principale di tutte queste add-in all’interno di Visual Studio (previa ovvia
tecniche è scovare ogni errore, fronteggiando le abilitazione dello stesso all’interno dell’ambiente
notevoli difficoltà informatiche che si possono di sviluppo Microsoft). Poiché ovviamente
presentare in ogni situazione, perché è noto che l’interfaccia di questo tool non è visuale, ma
qualsiasi applicativo è in continua evoluzione si tratta esclusivamente di inserire porzioni di
sia per nuove richieste da parte del cliente sia codice all’interno di un nuovo progetto di test,
per l’utilizzo di nuovi strumenti di sviluppo e esaminiamo brevemente l’utilizzo del motore di
aggiornamenti dei linguaggi. TypeMock.NET. La classe con cui si avrà sempre
Ecco perché riuscire a controllare a fondo a che fare è MockManager, che si può definire
un’applicazione solo effettuando dei test casuali un entry point per ogni mock test. Seconda in
(i cosiddetti “monkey test”) non è più sufficiente termini di importanza (e di utilizzo) è la classe
ed è quindi necessario ricorrere a strumenti di Mock, che viene utilizzata per creare gli oggetti
terze parti per effettuare un lavoro più mirato mock, eseguire la classe che è sotto test e
e soprattutto più completo. In questo numero verificare che l’oggetto mock si sia comportato
abbiamo rivolto la nostra attenzione allo unit come ci si attendeva.
Gli aspetti che rendono senza dubbio il
Fabio Perrone, laureato in Matematica e MCTS programma appetibile e completo sono la
(Web) in C# 2.0 , lavora presso TSF s.p.a. dove si possibilità di testare qualsiasi tipo di classe e
occupa di progettazione e sviluppo di applicazioni la capacità di testare qualsiasi aspetto di una
Windows e Web. classe: proprietà, eventi, metodi, metodi anonimi

N. 73 - Gennaio/Febbraio 2007 VBJ 33


.NET TOOLS

parametro, uguaglianza, confronto, confronto


Distribuire applicazioni con tolleranza, etc.).
prive di problemi è Vale la pena menzionare l’opportunità di
utilizzare il proprio tool preferito di Code
l’obiettivo di chiunque Coverage (Visual Studio 2005 Code Coverage,
lavori seriamente CoverageEye, DevPartner solo per citarne
alcuni) insieme a TypeMock.NET per controllare
nell’ambito informatico l’effettivo coverage dei test, sempre utile per
evitare di scrivere test che poi non vengono presi
in considerazione. Notevole anche l’apporto
e generics, solo per citarne alcuni. L’aspetto con fornito dal Tracer (solo versione Enterprise)
cui ci siamo “dilettati” maggiormente è senza che permette di tener traccia di quali istanze e
dubbio il controllo degli argomenti di un metodo, metodi è stato fatto il mock.
cioè la possibilità di verificare che effettivamente Come tutti gli strumenti per effettuare il testing
i parametri passati corrispondano a ciò che ci e in particolar modo quelli più complessi,
si aspetta. Di particolare interesse il fatto che esiste una curva di apprendimento più o meno
TypeMock.NET includa al suo interno tutta una ripida; il mio consiglio strettamente personale
serie di metodi per effettuare i controlli (tipo del è che prima di tuffarsi a capofitto in qualsiasi

34 N. 74 - Marzo/Aprile 2007 2006


.NET TOOLS

strumento di testing (qualunque sia la tipologia


di testing), è bene possedere una buona base VS.NET Solution Cleaner
teorica sulla terminologia e sugli usi del testing di Raffaele Di Natale
e su come vengono effettuati gli stessi in
applicazioni e ambienti differenti. Un semplice tool per ripulire le directory di
La versione da noi provata è quella Community, un progetto .NET
senza dubbio notevolmente limitata rispetto
alle versioni Professional ed Enterprise. VS.NET Solution Cleaner è un tool molto sem-
Quest’ultima si presenta infatti con una serie plice e lineare, sviluppato in C#, che agevola lo
di caratteristiche quali la possibilità di creare sviluppatore nella fase di memorizzazione di
una vera e propria infrastruttura di tipi mock, un progetto VS.NET ripulendolo da tutti i file
il Visual Mock Tracer menzionato in precedenza che verranno eventualmente ricreati dall’IDE
e la possibilità di distribuire su un Build Server in una successiva compilazione.
i test. Il prezzo è di 199 dollari per la versione
Professional, 299 per la versione Enterprise.
In definitiva, il lavoro di informatico prevede Introduzione
un continuo aggiornamento, sia per quanto
concerne le tecnologie con cui quotidianamente Alzi la mano chi non si è mai imbattuto in un
abbiamo a che fare sia per l’utilizzo di strumenti comportamento anomalo della propria applica-
di terze parti per rendere più sicura la zione in fase di debug dovuto alla presenza di
distribuzione di applicazioni. TypeMock.NET file di progetto non più allineati. Quante volte
rientra nella seconda categoria: qualche ora ci capita di eliminare passo passo i file .pdb
passata a studiarlo ci può risparmiare ore di piuttosto che gli .obj? Fino a quando si tratta
lavoro successivo alla ricerca dell’errore che ha di un piccolo progetto non è un problema, ma
fatto così tanto infuriare il nostro cliente! quando il progetto è di notevoli dimensioni,
oppure questa operazione deve essere ripetu-
ta più volte, allora tale attività può diventare
davvero noiosa oltre a farci perdere del tempo.
Prodotto
TypeMock.NET Inoltre l’esperienza ci aiuta a ricordare che
questa di tipologia di file occupa molto spazio
Url di riferimento
http://www.typemock.com/index.htm se confrontata ai “piccoli” file sorgente ed in
fase di storage locale o remoto occupano inu-
Stato Release
tilmente memoria preziosa.
Stabile – Versione 3.7
Semplicità d’uso ªªª²²
Non essendo un tool prettamente visuale, è necessario possede-
re una certa dimestichezza con le classi utilizzate dal framework L’applicazione
del programma.
Utilità ªªªªª In Figura 1 è illustrata la finestra principale
Come tutti gli strumenti di testing, se usati bene, anche dell’applicazione. È caratterizzata dal path
TypeMock.NET permette di distribuire codice più controllato. relativo alla cartella-progetto su cui avverrà la
Qualità prodotto ªªªª² “pulizia” e dalle opzioni relative alla tipologia di
Nei test sul prodotto eseguiti non abbiamo riscontrato partico- file da eliminare. Si può scegliere tra:
lari problemi.
Qualità documentazione ªªªª² • File .pdb
Buoni gli esempi e l’API Reference, qualcosa in più sulla configu- • Directory debug
razione si sarebbe potuto dire. La versione Enterprise contiene
la documentazione integrata con Visual Studio. Sia il programma
• Directory release
che la documentazione sono in lingua inglese. • Directory relativa ai file .obj
• Directory relativa a Resharper

N. 74 - Marzo/Aprile 2007 VBJ 35


.NET TOOLS

Figura 1 Figura 2

Un cenno ai file .pdb


Alzi la mano chi non si
L’estensione .pdb è acronimo di “program
è mai imbattuto in un data base”. I file .pdb rappresentano un
comportamento anomalo archivio di informazioni relative al progetto
ed al debug dell’applicazione. L’ambiente
della propria applicazione VS.NET crea questi file quando è impostato
in fase di debug per la compilazione in modalità debug.

Tralasciando le prime opzioni di cui si è già Avvio dell’applicazione


parlato sopra, è opportuno puntualizzare che
l’ultima opzione si riferisce a ReSharper, “il Per eseguire l’applicazione sono possibi-
più intelligente Add-in per VS.NET” [2] che li due strade. L’eseguibile, denominato
fornisce un supporto avanzato alla scrittura solutioncleaner.exe, deve essere copiato nella
del codice e i cui file temporanei vengono cartella relativa al progetto sui cui si vuole ope-
salvati in opportune directory. Cliccando sul rare e successivamente si può proseguire come
pulsante “Analyze and Wipe” si passa alla descritto in precedenza. Durante il primo av-
fase di analisi e conseguente eliminazione vio si consiglia di attivare la voce di menu
dei file individuati dal tool in base alla pre- “Application/Register on shell”. Tale opera-
cedente selezione. In Figura 2 si può nota- zione ci consentirà, in seguito, di eseguire il
re il numero e la dimensione totale dei file tool cliccando direttamente col tasto destro del
riconosciuti che ci si appresta ad eliminare. mouse in prossimità della directory di progetto
Tale eliminazione può essere effettuata glo- che ci interessa (vedi Figura 3).
balmente o individualmente.

36 VBJ N. 74 - Marzo/Aprile 2007


.NET TOOLS

Safe. Il codice sorgente è a disposizione di


tutti, quindi… spazio alle idee!

Conclusioni

In base a quanto detto fin qui, da oggi,


prima di effettuare il post di un progetto,
ovvero di inviarlo via mail, pensiamo ad
un cleaning del progetto mediante Solution
Cleaner. Con un click faremo una cortesia a
Figura 3
chi lo scaricherà sia in termini di risparmio
di tempo in fase di dowload, sia in termini
di “pulizia” della soluzione appena scarica-
Spazio risparmiato ta. Inoltre quando effettueremo la copia di
backup delle nostre soluzioni sapremo di
Un progetto di piccole dimensioni che oc- aver risparmiato un po’ di spazio.
cupa circa 1 MB su disco (compresa la car-
tella debug e/o release), se zippato, arriva
ad occuparne fino a 500Kb circa, con un Bibliografia e riferimenti
risparmio pari al 50%. Dopo aver eseguito
Solution Cleaner sul progetto e supponendo [1]_http://www.codeproject.com/csharp/
di selezionare tutte le opzioni dell’applica- solutioncleaner.asp
zione, sarà eliminato un numero di file pari [2]_http://www.jetbrains.com/resharper/
a circa il 70% della dimensione originaria index.html
del progetto. L’eventuale zip della directory [3]_http://support.microsoft.com/kb/121366
“ripulita” occuperà infine circa il 10% della
dimensione iniziale del progetto.
Prodotto
VS.Net Solution Cleaner
Possibili miglioramenti
Url di riferimento
http://www.codeproject.com/csharp/solutioncleaner.asp
Come evidenziato dallo stesso autore nel
sito di riferimento [1], si tratta di un tool Stato Release
v. 1.0, stabile
sviluppato per risolvere esigenze personali
nella gestione dei progetti, ma, come spesso Semplicità d’uso ªªªªª
accade, alla fine ci si accorge che il lavoro E’ un tool molto semplice e l’integrazione con la shell ne agevola
ulteriormente l’utilizzo.
fatto potrebbe essere utile ad altri, cioè a
tutti quelli che sviluppano col medesimo Utilità ªªªª²
Se finora ne abbiamo fatto a meno significa che tutto sommato
IDE, e allora si finisce per condividerlo. Per non ci cambierà la vita ma sapere di averlo a disposizione tramite
tale ragione, appena lo eseguiremo, saran- un click non dispiacerà affatto.
no moltissimi gli spunti che ci verranno in
Qualità prodotto ªªªª²
mente per un suo possibile miglioramento. L’autore si è limitato all’essenziale, ne consegue che il program-
Ci accorgeremo da subito che non è possibi- ma si comporta egregiamente e porta a termine il suo obiettivo
le selezionare direttamente dall’applicazio- in maniera impeccabile. Qualche problema si può riscontrare uti-
lizzando il tool direttamente da shell.
ne la cartella-progetto e che non si possono
aggiungere o personalizzare altre tipologie Qualità documentazione ªªª²²
Sono disponibili i suggerimenti nella stessa finestra di dialogo e i
di file oltre a quelle precedentemente de-
commenti nel sito.pleta ed il software a corredo è molto espli-
scritte: si pensi ad esempio ai file presenti cativo.
nei progetti gestiti tramite Visual Source

N. 74 - Marzo/Aprile 2007 VBJ 37


SICUREZZA

Symantec
Internet Security
Threat Report
La nuova edizione dello studio dedicato alle minacce legate alla
sicurezza Internet rivela la crescente tendenza degli hacker a creare
vere e proprie organizzazioni criminali informatiche online

in collaborazione con Symantec

L'undicesima edizione dell’Internet Security Il panorama attuale è caratteriz-


Threat Report pubblicata da Symantec Corp. (Na- zato da un sensibile incremen-
sdaq: SYMC) rivela che il panorama attuale delle to dei furti di dati, delle fughe
minacce Internet è caratterizzato da un sensibile di informazioni e della creazio-
incremento dei furti di dati, fughe di informazioni ne di codice maligno tagliato su
e creazione di codice maligno progettato su misu- misura per carpire a specifiche
ra per carpire a specifiche aziende informazioni da aziende informazioni utilizzabili
utilizzare nell’ottenimento di guadagni economici per ottenere un illecito guada-
illeciti. I criminali informatici inoltre sono sempre gno economico.
più abili nell’affinare i metodi di attacco per pro-
lungare, senza essere scoperti, la loro permanenza Anziché sfruttare le vulnera-
all’interno dei sistemi e dare vita a organizzazioni bilità più gravi per sferrare at-
globali atte a supportare un numero semrpe mag- tacchi diretti, i malintenzionati
giore di attività criminali. tendono oggi a scoprire e sfrut-
tare vulnerabilità di media gra-
Nell’arco dell’ultimo anno, Symantec ha osserva- vità all’interno del software di
to un sostanziale mutamento nella natura degli at- terze parti, come applicazioni e
tacchi Internet, con il passaggio da operazioni fini browser Web. Tali vulnerabilità
a se stesse ad attività criminose a scopo di lucro. vengono spesso utilizzate nei co-
siddetti attacchi “gateway”, nei
quali la violazione iniziale non
ha come scopo la sottrazione im-
mediata di dati quanto piuttosto
la creazione di una presenza sta-
bile per lanciare successivamen-
te attacchi ben più pericolosi.

38 VBJ N. 74 - Marzo/Aprile 2007


SICUREZZA

Figura 1 Tipologie di codice maligno

Symantec ha osservato su Internet alti livelli


di attività pericolose caratterizzate da un so- I criminali informatici sono
stanziale incremento di phishing, spam, reti sempre più abili nell’affinare
bot, Trojan horse e minacce “zero-day”. Tut-
tavia, mentre in passato queste minacce ve-
i metodi di attacco per
nivano utilizzate separatamente, ora i malin- prolungare la loro permanenza
tenzionati stanno affinando i loro metodi e all’interno dei sistemi
consolidando le loro risorse con l’obiettivo di
creare reti globali in grado di supportare at-
tività criminali coordinate. buire spam, gestire siti di phishing oppure
lanciare attacchi finalizzati alla creazione di
Questa tendenza ha portato a una crescente un insieme coordinato di attività criminose.
interoperabilità tra i vari metodi e le varie ti- Vari gruppi di sistemi compromessi posso-
pologie di minaccia. Ad esempio, alcuni tipi di no anche essere utilizzati in concerto come
codice maligno mirato possono sfruttare tec- sistemi globali per attività pericolose in gra-
nologie Web e applicazioni di terze parti per do di alimentare autonomamente la propria
creare backdoor e successivamente scarica- crescita.
re e installare software bot. I sistemi bot così
creati possono poi essere utilizzati per distri- Per la prima volta nella storia di questo re-

N. 74 - Marzo/Aprile 2007 VBJ 39


SICUREZZA

Figura 2 Computer infettati (BOT) per nazione

port, Symantec ha identificato i Paesi di ori- ficati da Symantec, per una media di 63.912
gine della maggior parte delle attività peri- sistemi al giorno. Il totale mondiale di siste-
colose prendendo in esame spam, phishing, mi infettati da bot scoperti da Symantec nel
codice maligno, attacchi di vario tipo e atti- periodo in oggetto è stato di 6.049.594 compu-
vità di reti bot provenienti da ciascun Paese. ter, con un incremento del 29% rispetto al se-
Nel periodo compreso tra il 1’ luglio e il 31 di- mestre precedente. Per contro, il numero dei
cembre 2006 gli Stati Uniti hanno generato la server di “comando e controllo” delle reti bot
quantità più consistente delle attività perico- è diminuito del 25%, scendendo a 4.746 unità.
lose con il 31% del totale, seguiti dalla Cina Symantec ritiene che questo fatto sia da attri-
con il 10% e dalla Germania con il 7%. buire al consolidamento e all’espansione delle
reti bot da parte dei loro proprietari.
Symantec ha stilato anche una classifica dei
primi 25 Paesi di origine di attività pericolose Nella scorsa edizione, Volume X. dell’Inter-
in base al numero di utenti Internet attivi in net Security Threat Report, Symantec paven-
ognuno di essi. Scopo di questa graduatoria è tava il possibile incremento del codice mali-
misurare la quantità media di attività perico- gno finalizzato al furto di informazioni riser-
losa attribuibile a un singolo utente Internet vate. Negli ultimi sei mesi del 2006 la minac-
di ciascun Paese. Dei 25 Paesi valutati, Israe- cia per le informazioni riservate è cresciuta
le è risultato essere la nazione con il tasso più dal 48% al 66% nella classifica Top 50 del co-
alto di attività pericolose per utente Internet dice maligno. Anche il volume della minaccia
con il 9%, seguita da Taiwan con l’8% e dalla rappresentata da logger di tastiera e da pro-
Polonia con il 6%. grammi che sottraggono dati utente/di siste-
ma è aumentato sensibilmente: i logger di ta-
Nella precedente edizione dell’Internet Se- stiera hanno totalizzato il 79% delle minacce
curity Threat Report, Symantec aveva previ- incombenti sulle informazioni riservate. Que-
sto un periodo di rinnovata crescita per le reti sto tipo di minaccia è fonte di gravi preoccu-
bot. Tale stima si è realizzata nella seconda pazioni, in quanto spesso consente di carpi-
metà del 2006, stante la crescita dell’11% nel re dati sensibili che possono essere utilizzati
numero dei computer infettati da bot identi- successivamente a scopo fraudolento.

40 VBJ N. 74 - Marzo/Aprile 2007


SICUREZZA

Per la prima volta da quando viene stilato di informazioni utili per compiere sottrazio-
questo report, Symantec ha monitorato anche ni di identità, con il 25% del totale.
il commercio delle informazioni rubate. Tale
attività ha spesso luogo su server sommersi, La causa principale dei furti di dati utili per
utilizzati frequentemente da singoli e da vere compiere sottrazioni di identità è rappresenta-
e proprie organizzazioni criminali per contrab- to dalla perdita o dal furto di un computer o di
bandare dati rubati. Tali informazioni possono un altro dispositivo sul quale tali informazioni
comprendere numeri di carte di identità, car- erano archiviate, come una chiave USB o un
te di credito, bancomat, codici PIN (Personal disco di backup. Nel periodo in esame que-
Identification Number), account utente onli- sta causa ha totalizzato il 54% di tutti i furti
ne ed elenchi di indirizzi e-mail. di informazioni finalizzati alla sottrazione di
identità. In molti casi i computer persi o ru-
Negli ultimi sei mesi del 2006 il 51% di tutti bati erano laptop. La seconda causa principa-
i server sommersi noti a Symantec risiedeva le dei furti di informazioni finalizzati alla sot-
negli Stati Uniti. Su tali sistemi era possibile trazione di identità è stata l’uso di policy non
acquistare numeri di carte di credito emesse sicure, che ha provocato il 28% di tutti gli in-
negli USA con i relativi codici di verifica a un cidenti. Queste due cause insieme hanno rap-
costo variabile tra 1 e 6 dollari. Per la stessa presentato ben l’82% di tutti i furti di dati re-
cifra era possibile acquistare anche un’iden- gistrati nella seconda metà del 2006.
tità completa (numero di conto corrente su
una banca statunitense, data di nascita e nu- Nell’edizione precedente di Internet Secu-
mero di carta di identità). rity Threat Report, Symantec ipotizzava per
l’immediato futuro un sostanziale incremen-
La maggior parte delle informazioni riser- to delle minacce installate da codice maligno
vate utilizzate nei forti di identità da parte di mirato, rappresentato spesso da Trojan hor-
criminali proviene da furti. In questa edizio- se in grado di sfruttare vulnerabilità definite
ne dell’Internet Security Threat Report, Sy- “zero-day”. Nella seconda metà del 2006 Sy-
mantec ha valutato per la prima volta i furti mantec ha documentato 12 vulnerabilità di
di dati utili per compiere sottrazioni di iden- questo tipo. Il che rappresenta un incremen-
tità. Nella seconda metà del 2006 il settore to significativo rispetto alla prima metà del
pubblico ha subito la maggior parte dei furti 2006 e agli ultimi sei mesi del 2005, quando

Figura 3 Attività malicious per nazione e utente internet

N. 74 - Marzo/Aprile 2007 VBJ 41


SICUREZZA

Figura 4 Categorie di spam

era stata identificata soltanto una vulnerabi- 60% di tutti i tentativi di infezione. Come ipo-
lità “del zero-day” per ciascun periodo. tizzato da Symantec nell’edizione precedente
i Trojan horse sono dunque responsabili del-
Molte delle vulnerabilità “zero-day” più gra- la maggior parte delle infezioni provocate da
vi sono state identificate nella seconda metà codice maligno.
del 2006. Il picco è stato registrato nel mese di
settembre, quando sono state scoperte quat- Come sottolineato precedentemente, Syman-
tro vulnerabilità “zero-day”, la maggior parte tec ha osservato elevati livelli di attività coor-
delle quali riguardanti il lato client in genera- dinate tra varie tipologie di minaccia, in parti-
le e le applicazioni Office, il browser Internet colare phishing e spam. Spesso i Trojan horse
Explorer e i controlli ActiveX in particolare. vengono utilizzati per installare sui compu-
Questo tipo di vulnerabilità viene utilizzato ter compromessi sistemi zombie per la distri-
sempre più spesso dai criminali per stabilire buzione di spam o siti Web di phishing, con
reti coordinate di attività di minaccia. l’obiettivo di facilitare frodi e altre attività cri-
minali. Nella seconda metà del 2006 lo spam
Il volume dei Trojan horse nella Top 50 del ha totalizzato il 59% di tutto il traffico e-mail
codice maligno identificato da Symantec è cre- monitorato, con un sostanziale incremento ri-
sciuto notevolmente negli ultimi sei mesi del spetto ai sei mesi precedenti quando era clas-
2006. In questo periodo i Trojan horse hanno sificato come spam il 54% dei messaggi.
rappresentato il 45% del totale contro il 23%
della prima metà dell’anno. Nel periodo in esa- L’intensificazione dello spam è dovuta prin-
me i Trojan horse hanno anche raggiunto il cipalmente all’aumento delle frodi azionarie

42 VBJ N. 74 - Marzo/Aprile 2007


SICUREZZA

Figura 5 Tempo di sviluppo delle patch per sistema operativo

su larga scala. Questo dato si riflette nel fat- • Symantec ha documentato una media di
to che la categoria principale di spam identi- 5.213 attacchi DoS (Denial of Service) al gior-
ficata nel periodo, con il 30% del totale, ha ri- no, in discesa rispetto ai 6.110 casi registrati
guardato i prodotti e i servizi finanziari. Nel nella prima metà dell’anno. La maggioranza
periodo in esame Symantec ha rilevato anche degli attacchi DoS si è verificata negli Stati
un incremento dei messaggi di phishing per Uniti, con il 52% del totale.
complessivi 166.248 messaggi, equivalenti a • Microsoft Internet Explorer è stato ogget-
una media di 904 al giorno. I servizi finan- to del 77% di tutti gli attacchi mirati specifi-
ziari hanno riguardato l’84% dei tentativi di camente ai browser Web.
phishing e il 64% dei siti Web dedicati. • Gli utenti home sono stati la categoria più
Allo scopo di fornire una panoramica dei dati colpita, con il 93% di tutti gli attacchi mira-
e delle analisi incluse nel Volume XI dell’In- ti.
ternet Symantec Security Threat, di segui- • La Cina è al primo posto della classifica dei
to è riportato un riepilogo dei punti salienti computer infettati da bot. Pechino è stata la
presentati in maniera dettagliata nel report città con il numero più alto di sistemi colpi-
completo, reperibile su www.symantec.com/ ti, con oltre il 5% del totale.
threatreport/. • Negli Stati Uniti si trova la maggior parte
dei sistemi di “comando e controllo” di reti
Attacchi bot, con il 40% del totale.
• L’86% delle carte di credito e di debito in
• Gli Stati Uniti sono stati il principale Pae- vendita sui server sommersi noti a Symantec
se di provenienza degli attacchi, con il 33% è stato emesso da banche statunitensi.
dei casi.

N. 74 - Marzo/Aprile 2007 VBJ 43


SICUREZZA

Vulnerabilità to gravi (4%), moderatamente gravi (69%) e


lievi (27%).
• Symantec ha documentato 2.526 vulne- • Il 66% delle vulnerabilità scoperte nel pe-
rabilità nella seconda metà del 2006, con un riodo in oggetto ha riguardato applicazio-
incremento del 12% rispetto alla prima metà ni Web.
dell’anno e un volume superiore a ogni altro • Il 79% di tutte le vulnerabilità documenta-
periodo precedente.(2) te è stato giudicato facile da sfruttare.
• Symantec ha classificato le vulnerabili- • Il 77% di tutte le vulnerabilità facilmente
tà identificate in questo periodo come mol- sfruttabili ha riguardato le applicazioni Web,
mentre il 7% ha riguardato i server.
• Il 94% di tutte le vulnerabilità facilmente
sfruttabili identificate nella seconda metà del
I server sommersi vengono 2006 è stato utilizzato in remoto.
utilizzati frequentemente • Il sistema operativo Sun Solaris ha regi-
da singoli e organizzazioni strato un tempo medio di sviluppo delle patch
pari a 122 giorni, il valore più alto documenta-
criminali per contrabbandare to nella seconda metà del 2006. In questo pe-
dati rubati riodo tutti i vendor di sistemi operativi moni-
torati hanno registrato tempi di sviluppo del-
le patch superiori alla media.
• Il 66% di tutte le vulnerabilità documenta-
te negli ultimi sei mesi del 2006 non è stato

Figura 6 Vulnerabilità dei browser web

44 VBJ N. 74 - Marzo/Aprile 2007


SICUREZZA

Figura 7 Vulnerabilità dei database

confermato dal vendor responsabile. dicembre 2006 i computer-civetta di Syman-


• La finestra di esposizione delle vulnerabi- tec hanno identificato 136 tipologie di codice
lità riguardanti vendor di applicazioni enter- malingo sconosciute.
prise è stata di 47 giorni. • In questo periodo Symantec ha identificato
• Symantec ha documentato 54 vulnerabilità 8.258 nuove varianti Win32, con un incremento
in Microsoft Internet Explorer, 40 nei brow- del 22% rispetto alla prima metà del 2006.
ser Mozilla e 4 ciascuno all’interno di Apple • I worm hanno costituito il 52% di tutto il
Safari e Opera. codice maligno, in discesa rispetto al 75% del
• Nel periodo in esame Mozilla ha registra- periodo precedente.
to la finestra di esposizione più ristretta ri- • Le minacce di tipo polimorfico hanno rap-
spetto a qualunque altro browser Web: solo presentato il 3% del codice maligno registrato
2 giorni. nel periodo in oggetto, in salita rispetto all’1%
• Symantec ha documentato 168 vulnerabi- dei due semestri precedenti.
lità nelle implementazioni database Oracle, • Il 77% del codice maligno ha utilizzato qua-
un valore superiore a qualunque altro data- le veicolo il protocollo SMTP, facendone il
base. meccanismo di propagazione più utilizzato.
• Il codice maligno che utilizza il peer-to-peer
Codice maligno quale veicolo di propagazione è cresciuto dal
23% dei sei mesi precedenti al 29% della se-
• Nella Top Ten delle nuove famiglie di codi- conda metà del 2006.
ce maligno identificate negli ultimi sei mesi • La maggior parte del codice maligno iden-
del 2006, 5 sono Trojan horse, 4 sono worm e tificato nel periodo in esame proveniva dagli
1 è un virus. Stati Uniti.
• Nel periodo compreso tra il 1’ luglio e il 31 • Nella seconda metà del 2006 il 23% delle

N. 74 - Marzo/Aprile 2007 VBJ 45


SICUREZZA

Figura 8 Tipo di codice maligno per quantità

1.318 istanze di codice maligno documentate tutti i messaggi spam conteneva codice peri-
hanno sfruttato vulnerabilità esistenti. coloso. Ciò significa che 1 messaggio spam
• Nella seconda metà del 2006 MSN Messen- su 147 bloccato da Symantec Brightmail An-
ger è stato vittima del 35% delle nuove minac- tiSpam celava al suo interno del codice pe-
ce inerenti l’instant messaging. ricoloso.
• Negli ultimi sei mesi del 2006 il 44% di tut-
Spam, phishing e to lo spam identificato nel mondo ha avuto
rischi per la sicurezza origine negli Stati Uniti.
• Negli Stati Uniti è presente il numero mag-
• Nel periodo in oggetto Symantec ha bloc- giore di sistemi zombie per l’invio di spam,
cato oltre 1,5 miliardi di messaggi phishing, con il 10% del totale mondiale.
con un incremento del 19% rispetto alla pri- • Il rischio per la sicurezza più diffuso è
ma metà del 2006. stato un programma adware chiamato Zan-
• In tutto il 2006 Symantec ha identificato goSearch.
durante i fine settimana un numero di mes- • Tutti i primi 10 pericoli per la sicurezza
saggi phishing mediamente inferiore del 27% identificati negli ultimi sei mesi del 2006 im-
rispetto alla media giornaliera di 961 tentati- piegavano almeno una tecnica anti-rimozio-
vi registrata nei giorni lavorativi. ne rispetto ai soli cinque del primo semestre
• Durante i fine settimana il numero di ten- dell’anno.
tativi di phishing bloccati è stato inferiore del • Le applicazioni indesiderate hanno rappre-
7% rispetto ai 7.958.323 registrati nei giorni sentato il 41% dei classificati nella Top Ten
lavorativi. dei rischi per la sicurezza relativi alla secon-
•Il 64% di tutti i siti di phishing noti si tro- da metà del 2006.
va negli Stati Uniti, una percentuale superio- • Le applicazioni ingannevoli identificate
re a ogni altro Paese. sono aumentate del 40% nella seconda metà
• Negli ultimi sei mesi del 2006 lo 0,68% di del 2006.

46 VBJ N. 74 - Marzo/Aprile 2007


SICUREZZA

Figura 9 Distribuzione degli zombie spam

Best practice per le aziende per la conformità di rete capaci di tenere al


di fuori della rete eventuali utenti mobili in-
1. Adottare strategie di difesa mirate che fa- fetti (e renderli innocui prima che possano
voriscano la presenza di più sistemi di prote- riaccedervi).
zione integrai, capaci di reciproco supporto al 6. Far rispettare una policy efficace dedica-
fine di evitare i singoli punti deboli di una spe- ta alle password.
cifica tecnologia o metodologia. Ciò dovrebbe 7. Configurare i server di posta elettroni-
comprendere il deployment e il regolare ag- ca per bloccare o rimuovere i messaggi con-
giornamento di antivirus, firewall, rilevatori tenenti allegati comunemente usati per dif-
IDS e sistemi di protezione dalle intrusioni fondere virus, come i file .VBS, .BAT, .EXE,
su sistemi client. .PIF e .SCR.
2. Disattivare e rimuovere i servizi inuti- 8. Isolare rapidamente i computer infetti per
lizzati. prevenire ulteriori danni all’azienda. Effettua-
3. Se del codice maligno o qualsiasi altra re un’analisi post mortem e ripristinare i com-
minaccia dovessero colpire uno o più servi- puter utilizzando supporti affidabili.
zi di rete, disabilitare o bloccare l’accesso a 9. Sensibilizzare i dipendenti affinché non
tali servizi affinché non venga applicata una aprano allegati sospetti o provenienti da fon-
patch apposita. ti dubbie, e affinché non utilizzino software
4. Mantenere sempre aggiornati i livelli di scaricato da Internet a meno che non sia stato
patch, specialmente sui computer che ospita- precedentemente analizzato da un antivirus.
no servizi aperti ad utenti esterni e che sono 10. Accertarsi che esistano procedure di ri-
accessibili attraverso firewall (come ad esem- sposta per i casi di emergenza: ciò comprende
pio i servizi HTTP, FTP, mail e DNS). la disponibilità di una soluzione per backup e
5. Valutare l’implementazione di soluzioni ripristino in grado di recuperare dati persi o

N. 74 - Marzo/Aprile 2007 VBJ 47


SICUREZZA

Figura 10 Attacchi Denial of Service giornalieri

compromessi a seguito di un attacco o di un rilevamento delle intrusioni e gestione delle


evento catastrofico. vulnerabilità per proteggersi il più possibile
11. Sensibilizzare e fare formazione sul ma- dalle minacce a tecnica mista e da altre tipo-
nagement in merito alla necessità di preve- logie di malware.
dere investimenti in soluzioni di sicurezza. 2. Accertarsi che le patch per la sicurez-
12. Collaudare il sistema di sicurezza accer- za siano aggiornate e che vengano applicate
tando la presenza di controlli adeguati. tempestivamente a tutte le applicazioni vul-
12. Essere consapevoli dei rischi che possono nerabili.
automaticamente crearsi con l’installazione 3. Assicurarsi che le password contengano sia
di programmi per file sharing, download gra- lettere sia numeri, modificandole di frequen-
tuiti e versioni di programmi freeware e sha- te. Le password non dovrebbero corrisponde-
reware. Selezionare link e/o allegati all’inter- re a parole presenti nei dizionari.
no di messaggi di posta elettronica (o IM) può 4. Non consultare, aprire o lanciare in esecu-
esporre i computer a inutili rischi. Accertarsi zione alcun allegato di posta elettronica ina-
che sui desktop vengano installate solamente spettato e di cui non sia nota la funzione.
le applicazioni approvate dall’azienda. 5. Aggiornare le definizioni dei virus con re-
golarità. In questo modo è possibile proteg-
Best practice per i consumatori gere i propri computer contro le più recenti
tipologie di virus in circolazione.
1. Utilizzare una soluzione per la sicurez- 6. Controllare periodicamente la vulnerabi-
za Internet che combini antivirus, firewall, lità dei loro PC e dei loro Macintosh utiliz-

48 VBJ N. 74 - Marzo/Aprile 2007


SICUREZZA

Tabella 1 La top-ten delle nuove famiglie di codice maligno

zando Symantec Security Check all’indirizzo rischi che possono automaticamente crearsi
www.symantec.com/securitycheck. con l’installazione di programmi per file sha-
7. Installare una soluzione antiphishing, ring, download gratuiti e versioni di program-
evitando comunque di divulgare informazio- mi freeware e shareware. Selezionare link e/o
ni personali o finanziarie a meno che la ri- allegati all’interno di messaggi di posta elet-
chiesta non provenga legittimamente da una tronica (o IM) può esporre i computer a inu-
fonte confermata. tili rischi. Accertarsi che sui desktop venga-
8. Gli utenti privati possono prendere parte no installate solamente le applicazioni appro-
alla lotta contro il crimine informatico trac- vate dall’azienda .
ciando e denunciando gli intrusi. Con il ser- 10. Leggere le licenze EULA (End-User Li-
vizio di tracing di Symantec Security Check, cense Agreement) e con attenzione compren-
è possibile identificare rapidamente la località derne le clausule. Alcuni rischi possono verifi-
da cui operano potenziali hacker inviando tale carsi dopo che l’utente ha accettato la licenza
informazione all’ISP o alla polizia locale. EULA o in conseguenza di tale accettazione.
9. È fondamentale essere consapevoli dei 11. I consumatori dovrebbero diffidare dei
programmi che evi-
denziano inserzioni
pubblicitarie all’in-
terno dell’interfac-
cia utente.
Molti programmi
spyware tengono
traccia di come un
utente reagisce alle
varie pubblicità, e la
loro presenza è indi-
ce di potenziali mi-
nacce.
Tabella 2 La top-ten delle nazione di origine dello spam

N. 74 - Marzo/Aprile 2007 VBJ 49