corsoalternativo di programmazione generazione automatica ... · corsoalternativo di programmazione...

6
Corso alternativo di programmazione Generazione automatica di Pagine per Internet di Francesco Petroni In pochi mesi, buona parte degli "informatici" professionisti si sono do- vuti riconvertire alle tecnologie, alle nu- merose tecnologie, interessate dal fe- nomeno Internet. In particolare, buona parte dei programmatori tradizionali so- no stati trasferiti "armi e bagagli" da un mondo in cui esistevano pochi lin- guaggi affidabili, in quanto consolidati nel corso degli anni ed in cui esisteva- no precise regole di comportamento, in un nuovo mondo in cui le tecnologie si susseguono, affiancandosi, sosti- tuendosi o sovrapponendosi l'una alle altre ed in cui, per essere ottimisti, si può dire che è ancora presto per fissa- re regole. Da alcuni punti di vista Internet rap- presenta per loro sicuramente un pas- so indietro, nel senso che molto del codice che scrivono non può e quindi non deve essere compilato, in quanto viene interpretato solo al momento dell'esecuzione o dal browser oppure dal server, nel senso che non è assolu- tamente possibile un efficace lavoro di debugging del codice stesso, in quanto non esiste un ambiente specifico che semplifichi questo lavoro, nel senso che il programma può non funzionare o perché il destinatario non dispone di un browser adeguato (della versione pre- vista dall'incauto programmatore), o perché il destinatario stesso ha attivato dei livelli di sicurezza in grado di bloc- care qualsiasi componente, anche il più microscopico, necessario per far fun- zionare l'applicazione. C'è poi una difficoltà nella definizio- ne esatta degli output che possono di- pendere dalla risoluzione scelta dall'utente, o dalla dimensione dei ca- 154 ratteri che costui imposta per il proprio browser. Anche la progettazione dell'applica- zione è un'attività che presenta vincoli di tutti i tipi, soprattutto perché un'ap- plicazione per Internet è comunque un'applicazione client/server e quindi vanno regolati i rapporti tra questi due soggetti (chi fa cosa), va ipotizzata la modalità e la velocità di trasmissione dei dati, ecc. lo penso che, paradossalmente, so- no proprio tutte queste limitazioni che rendono la programmazione per Inter- net più stimolante, in quanto c'è anco- ra molto spazio per la "creatività" nella ricerca della soluzione "geniale" del problema da risolvere. Alcune considerazioni sui prodotti per sviluppare applicazioni per Internet Oggi esistono tanti prodotti di tanti produttori che servono per creare siti Internet, oppure pagine Internet, oppu- re ancora componenti per pagine Inter- net. Alcuni sono più orientati all' estetica della pagina (sia perché, come se non bastassero i problemi, la prima cosa che si nota in un programma per Inter- net è se le pagine realizzate sono" bel- le"), altri alla dinamicità della pagina, al- tri ai rapporti che questa ha con il data- base in cui sono contenuti i dati da vi- sualizzare, ecc. La tendenza è quella di realizzare le pagine, anche quelle interattive o quel- le prodotte da un programma, con edi- tor di tipo "visuale", in cui l'utente in- serisce elementi o imposta proprietà o effetti speciali, che poi sono tradotti in codice (sia HTML, sia DHTML, sia ASP) dall'editor stesso. Anche l'acces- so ai dati si realizza inserendo oggetti e impostando come proprietà informazio- ni sulla base dei dati, sui campi da vi- sualizzare e sulle modalità di gestione di tali dati. In generale, questi prodotti dispon- gono di voluminose librerie di funzioni standard, già pronte e scritte nei vari linguaggi (quasi sempre in JavaScript per quelle che lavorano sul c1ient ed in Visual Basic Script per quelle che lavo- rano sul server). Quando il programma- tore prepara la pagina inserendo gli og- getti, il prodotto crea i richiami alle va- rie librerie, sfruttando il comando Inclu- de, che tiene all'esterno dell'applicazio- ne la libreria, ma che ne sfrutta il con- tenuto. In pratica con il comando Inclu- de si effettua un Copia ed Incolla dina- mico in fase di esecuzione del pro- gramma. Questo modo di lavorare è facilitato dal fatto che il codice dell'applicazione non deve essere compilato e registra- to, e che quindi è solo necessario che le librerie con le funzioni siano disponi- bili al momento dell'esecuzione dell'ap- plicazione. Molti programmatori poi, specie quelli più esperti, preferiscono realizza- re proprie librerie o modificare quelle disponibili nei vari prodotti per renderle più immediatamente utilizzabili dalla propria applicazione. MCmicrocomputer n. 209 - settembre 2000

Upload: others

Post on 30-Apr-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Corsoalternativo di programmazione Generazione automatica ... · Corsoalternativo di programmazione Generazione automatica di Pagine per Internet di Francesco Petroni In pochi mesi,

Corso alternativo di programmazione

Generazione automaticadi Pagine per Internet

di Francesco Petroni

In pochi mesi, buona parte degli"informatici" professionisti si sono do-vuti riconvertire alle tecnologie, alle nu-merose tecnologie, interessate dal fe-nomeno Internet. In particolare, buonaparte dei programmatori tradizionali so-no stati trasferiti "armi e bagagli" daun mondo in cui esistevano pochi lin-guaggi affidabili, in quanto consolidatinel corso degli anni ed in cui esisteva-no precise regole di comportamento,in un nuovo mondo in cui le tecnologiesi susseguono, affiancandosi, sosti-tuendosi o sovrapponendosi l'una allealtre ed in cui, per essere ottimisti, sipuò dire che è ancora presto per fissa-re regole.

Da alcuni punti di vista Internet rap-presenta per loro sicuramente un pas-so indietro, nel senso che molto delcodice che scrivono non può e quindinon deve essere compilato, in quantoviene interpretato solo al momentodell'esecuzione o dal browser oppuredal server, nel senso che non è assolu-tamente possibile un efficace lavoro didebugging del codice stesso, in quantonon esiste un ambiente specifico chesemplifichi questo lavoro, nel sensoche il programma può non funzionare operché il destinatario non dispone di unbrowser adeguato (della versione pre-vista dall'incauto programmatore), operché il destinatario stesso ha attivatodei livelli di sicurezza in grado di bloc-care qualsiasi componente, anche il piùmicroscopico, necessario per far fun-zionare l'applicazione.

C'è poi una difficoltà nella definizio-ne esatta degli output che possono di-pendere dalla risoluzione sceltadall'utente, o dalla dimensione dei ca-

154

ratteri che costui imposta per il propriobrowser.

Anche la progettazione dell'applica-zione è un'attività che presenta vincolidi tutti i tipi, soprattutto perché un'ap-plicazione per Internet è comunqueun'applicazione client/server e quindivanno regolati i rapporti tra questi duesoggetti (chi fa cosa), va ipotizzata lamodalità e la velocità di trasmissionedei dati, ecc.

lo penso che, paradossalmente, so-no proprio tutte queste limitazioni cherendono la programmazione per Inter-net più stimolante, in quanto c'è anco-ra molto spazio per la "creatività" nellaricerca della soluzione "geniale" delproblema da risolvere.

Alcune considerazionisui prodotti persviluppare applicazioniper Internet

Oggi esistono tanti prodotti di tantiproduttori che servono per creare sitiInternet, oppure pagine Internet, oppu-re ancora componenti per pagine Inter-net.

Alcuni sono più orientati all' esteticadella pagina (sia perché, come se nonbastassero i problemi, la prima cosache si nota in un programma per Inter-net è se le pagine realizzate sono" bel-le"), altri alla dinamicità della pagina, al-tri ai rapporti che questa ha con il data-base in cui sono contenuti i dati da vi-sualizzare, ecc.

La tendenza è quella di realizzare lepagine, anche quelle interattive o quel-le prodotte da un programma, con edi-tor di tipo "visuale", in cui l'utente in-serisce elementi o imposta proprietà oeffetti speciali, che poi sono tradotti incodice (sia HTML, sia DHTML, siaASP) dall'editor stesso. Anche l'acces-so ai dati si realizza inserendo oggetti eimpostando come proprietà informazio-ni sulla base dei dati, sui campi da vi-sualizzare e sulle modalità di gestionedi tali dati.

In generale, questi prodotti dispon-gono di voluminose librerie di funzionistandard, già pronte e scritte nei varilinguaggi (quasi sempre in JavaScriptper quelle che lavorano sul c1ient ed inVisual Basic Script per quelle che lavo-rano sul server). Quando il programma-tore prepara la pagina inserendo gli og-getti, il prodotto crea i richiami alle va-rie librerie, sfruttando il comando Inclu-de, che tiene all'esterno dell'applicazio-ne la libreria, ma che ne sfrutta il con-tenuto. In pratica con il comando Inclu-de si effettua un Copia ed Incolla dina-mico in fase di esecuzione del pro-gramma.

Questo modo di lavorare è facilitatodal fatto che il codice dell'applicazionenon deve essere compilato e registra-to, e che quindi è solo necessario chele librerie con le funzioni siano disponi-bili al momento dell'esecuzione dell'ap-plicazione.

Molti programmatori poi, speciequelli più esperti, preferiscono realizza-re proprie librerie o modificare quelledisponibili nei vari prodotti per renderlepiù immediatamente utilizzabili dallapropria applicazione.

MCmicrocomputer n. 209 - settembre 2000

Page 2: Corsoalternativo di programmazione Generazione automatica ... · Corsoalternativo di programmazione Generazione automatica di Pagine per Internet di Francesco Petroni In pochi mesi,

Il,.,,, ". :; ::,

documento write ("<html><head><title>Zero</title></head><body>Ciao</body></html>")

, + '00' .•.a .•. 'x/t4>')

scritto ed individuato all'interno del co-dice HTML.

Questo codice JS viene inviato, an-cora sotto forma di codice, dal server alclient, in quanto è il browser che si in-carica di interpretarlo.

E' quindi possibile creare un pro-gramma in JavaScript che fa sostanzial-mente due cose: esegue dei calcoli in-tesi in senso lato e produce il risultatosotto forma di codice HTML all'internodi una pagina Internet. Un esempio dicomando JS che si usa per produrre co-dice HTML è il seguente:

UtJD!SCTC1ZU' a-u Ulcn.k><~~~I..scu;tt"'>

.'ft.'lU'(·<ubJ.clo<eO<t:dI-Uo;lD' .•.~u:it.1(t J.<Itb<~t.Clc lIordlrJ:aO>"~:kll:Jl!H.~

nj.ec~·</eé!ic<J~/'UX/Qli;.JlIEXhO<lc:muo "fuu ••'O</kctp

'""",,

,. f4l •••. ,....... ••• _

'I •• _... . l2•••••Br- lIJo-> ~ a . la~_c_..... ._. ----------------------------- ..._-------------------_ ..

Primi esperimenticon il JavaScript

Una pagina HTML può contenere delcodice JavaScript opportunamente

sposizione per ottenere tale obiettivo.Ci dedicheremo in particolare ai due

linguaggi "per Internet" che vanno perla maggiore e poi proporremo alcuniesperimenti di media complessità, facil-mente realizzabili su qualsiasi macchina.

Figura 1 - Esercizio 1 -Uso dell'istruzione Docu-menI. Write in un codiceJavaScript.Un appassionato di pro-grammazione, sia essoun programmatore pro-fessionista oppure unutilizzatore evoluto, sicu-ramente non ama i pro-dotti che producono ele-menti "statici", ad esem-pio non ama il word pro-cessor, anche se eviden-temente lo usa per scri-vere i suoi documenti, enon ama gli editor cheproducono semplice co-dice HTML. Per un pro-grammatore una paginaHTML DEVE essere pro-dotta via codice e quindideve essere il risultato diuna elaborazione. Quan- 'I!i-do si scrive un program-ma che produce una pa-gina Internet si presentano sempre tre alternative: far lavorare il server, far lavorare il client, oppure far la-vorare ciascuno dei due per quanto di sua competenza. In questo primo esercizio, descritto nel testo,usiamo l'istruzione JavaScript Document. Write, il cui compito è proprio quello di generare codice HTML.Nella figura vediamo codice e risultato.

Figura 2 - Esercizio 2 -Esempio di programma-zione Object.Una delle caratteristichepiù stimolanti della pro-grammazione per Inter-net consiste nel potergestire in un'otticaObject il documento pro-dotto. E' possibile identi-ficare tutti gli elementidella pagina, gestirne leproprietà, intercettarnegli eventi. Nell'eserciziomostriamo appunto co-me sia possibile identifi-care gli elementi dellapagina ed intercettare glieventi su di essi. Vedia-mo anche come sia pos-sibile utilizzare nella stes-sa pagina due differentilinguaggi, nel nostro ca-so il Visual Basic Script,per sfruttare le sue co-mode funzioni sulle date,ed il JavaScript al quale si delega la gestione degli Object.

Ma perchéprogrammareper Internet

L'obiettivo che ci vogliamo porre inquesto articolo è quello di analizzare glistrumenti con i quali è possibile realiz-zare un programma che produce pagineper Internet. Ma prima di cominciarevediamo perché è un bene sostituire adun sito fatto di pagine, un programmache produce le pagine.

All'inizio la dimensione del sito si mi-surava in numero di pagine e se questeerano tante diventava un problema laloro gestione, soprattutto per il fattoche chi preparava le pagine non era lostesso personaggio che ne definiva icontenuti.

Con l'evoluzione delle tecnologie unfondamentale passo in avanti è stata lanascita del concetto di stile (a proposi-to, prima o poi ne parleremo), che per-mette di isolare l'aspetto estetico daquello contenutistico e quindi permettedi preparare tante pagine di contenuti"puliti" che fanno riferimento ad ununico foglio di stile, che risiede su fileesterno.

Il passo successivo è stato quello dipreparare le pagine con i contenuti diun database. Un esempio evidente ècostituito dai cataloghi on-line, centinaiadi pagine ricche di informazioni, di tipostrutturato, di tipo testuale, di tipo grafi-co, ma in definitiva identiche come or-ganizzazione. La soluzione è quella difare un'unica pagina prototipo da riem-pire con i campi di un singolo record diun database, magari prodotta" a richie-sta" da parte dell'utente.

Un ulteriore passo può essere quelloche prevede una vera e propria proce-dura tradizionale, con tanto di masche-re di acquisizione e gestione dei dati, lacui finalità è quella di produrre in auto-matico i contenuti del sito.

Come esempio si pensi ad un "por-tale" che contiene decine di elementiche cambiano "minuto per minuto". Ilresponsabile di tale portale non agiscecerto sulle pagine HTML, ma lavora conprocedure in cui inserirà, ad esempio,le News, con indicazione del loro perio-do di validità, dell'importanza che devo-no avere all'interno della pagina, del linka cui si riferiscono e così la produzionedella pagina sarà quindi automatica.

Ebbene, chiarito cosa significa produ-zione automatica di pagine, occorre par-lare un po' della strumentazione a di-

MCmicrocomputer n. 209 - settembre 2000 155

Page 3: Corsoalternativo di programmazione Generazione automatica ... · Corsoalternativo di programmazione Generazione automatica di Pagine per Internet di Francesco Petroni In pochi mesi,

<script language=" JavaScript"><documento write (" <htm 1><head><title>Zero</title></head><body>Ciao</body></htm I>")</script>

<script language=" JavaScript">document.write ("<input type=button value=Red name=P onClick=document.bgColor='#ffOOOO'>")

</script>

Per eseguire il codice ASP è indi-spensabile disporre di un server Inter-net, ma per i nostri esperimenti è suffi-

ciente il Personal Web Server(PWS), anche quello per Windows95 o Windows 98 (Windows 2000Professional lo ha in dotazione). E'indispensabile creare una cartella

virtuale nella quale posizionare il file,che a sua volta deve essere salvato conil suffisso ASP.

Ad esempio, se la macchina si chia-ma TEST, la cartella PROVE e il fileESEMPIO.ASP, l'indirizzo per eseguirlo

deve essere:http://test/p rove/ese m pio. asp

Il PWS lo trovate nell'OptionPack di Windows NT, nel secondoCD del pacchetto Visual Basic ed inbuona parte dei CD della MicrosoftPress che hanno a che fare con losviluppo per Internet.

Dopo aver parlato di JavaScript edi ASP e tornando al tema della ge-

nerazione automatica delle pagineHTML, risulta evidente il fatto che Java-Script sarà utilizzato per risolvere i pro-

blemi lato c1ient (co-me il controllo dei da-ti in fase di digitazio-ne), mentre ASP saràutilizzato lato server(ad esempio quandooccorra accedere adun database). Riman-gono comunque tan-te le problematicherisolvibili, sia con ilJavaScript che con le

pagine ASP e quindi puòessere utile darsi ulterioriregole di comportamento.

<HTML><"loResponse.Write "Inizio della Parte ASP<hr>"For R=1 to 20

Response.Write "Questa è la Riga Numero" & R & "<br>"NextResponse.Write "<hr>Fine della Parte ASP""lo><HTMl>

Un semplice esempio di ASP potreb-be essere questo:

volta JavaScript oppure il Visual BasicScript.

Semplificando, potremo dire che un

programma ASP contiene istruzioni,funzioni assolutamente in linea con glistandard VB, VBA e VBS. Per produrreil codice HTML per la pagina che vienegenerata si utilizza l'istruzione Respon-se.Write.

In questo caso il codice viene ese-guito e quindi la pagina viene prodottaquando qualcuno fa c1ick sul pulsante.

E' evidente e stimolante il fatto chein pratica l'intero codice della paginapuò essere prodotto da un programma,non solo il codice HTML, ma anchequello DHTML, o quello JavaScript. Nelcaso mostrato tra qualche riga vediamoun programma JavaScript che generaun programma JavaScript completo,nel caso specifico produce un pulsantecon il suo evento onClick:

ed in questa maniera viene eseguitodirettamente in fase di caricamento del-la pagina, oppure inserito in una funzio-ne JavaScript eseguita al verificarsi diun evento, ad esempio al click su unpulsante o al load della pagina:

<input type="button" name="P1" value="Premi" onclick="Esegui()"><body onload="Esegui()"><script language=" JavaScript">

function Esegui(){docu mentowrite (" <htm 1><head><title>Zero</title></head><body>Ciao</body></htm I>")}

</script>

Questo piccolo comando JS può es-sere eseguito in due modi, o all'internodi un semplice tag <script>:

Questi tre pezzettini di codice mo-strano tre possibili modalità di esecu-zione di un codice JavaScript.

Primi esperimenticonASP

Il codice JavaScript viene interpreta-to dal client; in pratica è il browser checontiene un "motorino" in grado di ri-conoscere ed eseguire il programma.La tecnologia Active Server Pages(ASP) invece prevede che il programmavenga eseguito dal "motorino" presen-te sul server, ma questo è disponibileper ora solo nell'Internet InformationServer della Microsoft.

Il linguaggio può essere ancora una

In pratica il programma ASP producestringhe contenenti codice HTML, cheviene inviato al c1ient in forma di codiceHTML (quindi viene inviato il risultatodell'esecuzione del programma, non ilsuo listato). I tag "<% ... %>" individua-no la parte di codice ASP che va scrittoal suo posto all'interno del normale codi-ce HTML. Lo stesso programma di pri-ma lo possiamo realizzare con un codicemeno elegante, ma che produce lo stes-sissimo effetto:

<HTML>Inizio della Parte ASP<hr><"lo For R=1 to 20 "lo>

Questa è la Riga Numero <"lo = R "Io><br><"lo Next"lo><hr>Fine della Parte ASP<HTML>

Vediamo gli eserciziA corredo degli articoli abbiamo pre-

parato 8 esercizi di cui mostriamo, in 9figure, sia gli output che tutto il codice.Trovate comunque tutti i file relativiall'articolo, figure comprese, nel CD al-legato e nel nostro sito.

Il codice è impaginato in modo che"venga bene" nella foto e conseguen-temente appare un po' disordinato aipuristi.

Nel primo esercizio (in figura 1) verifi-chiamo come sia possibile produrre tut-to il contenuto della pagina con un codi-ce JavaScript. Nel nostro caso abbiamorealizzato due loop, quello esterno perriga e quello interno per colonna, cheproducono una tabella. Il colore dellecelle della tabella viene determinato da

156 MCmicrocomputer n. 209 - settembre 2000

Page 4: Corsoalternativo di programmazione Generazione automatica ... · Corsoalternativo di programmazione Generazione automatica di Pagine per Internet di Francesco Petroni In pochi mesi,

GongoloB_Eolo

calcoli numerici che coinvolgono il con-tatore delle righe e quello delle colon-ne.

Il programma svolge due lavori benindividuabili: esegue i calcoli che servo-no per preparare, sotto forma di strin-ga, il codice HTML e visualizza il codiceprodotto con il comandoDocument.Write.

Il secondo esercizio (figura 2) ci per-mette di verificare numerose cosette.Prima di tutto la possibilità di utilizzaredue linguaggi nella stessa pagina/pro-gramma. E' evidente che trattandosiancora di programmazione lato client ènecessario che il browser sia in gradodi interpretare ambedue i linguaggi.

Poi notiamo la potenza del tag DIV,che permette di dare un nome ad unelemento della pagina, nel nostro caso

Figura 3 - Esercizio 3 -E' necessaria una totalepadronanza degli ele-menti in gioco.Il buon programmatoredeve saper maneggiaretutti gli oggetti inseribiliin un formo Nel nostrocaso vediamo come siinseriscono, da codice,elementi in un oggetto ditipo Select, come si pos-sono anche togliere ecome, dell'elementoscelto, sia possibile co-noscere ogni proprietà,come progressivo, iden-tificativo e valore. L'eser-cizio non tratta le nume-rose altre varianti, la piùstimolante delle quali èquella che prevede laselezione multipla deglielementi.

J.,., ftft.,.. F~ 1~ ~

•.- - .••-O Q.t.tl- ••••••.- ••••J•••••• lilc:~1t/oII ~U~>LUta<ltiU~- ~GI:r1pt.~~pt·>

•.•. _-_kTayf)

[1}-'cw:e:io1o'

(1)"'PUDlo"(2]"~'l3]..,aDvt.to"

(4)"'~l.D·[5]-"lkvKo.lo-

1'l"'l!!'.a1o"11IIIrtioa CM"k.n f....

wIIli.le();<'l) (._.i_.te.IJt' .•. );>-1;

•. gpti_p".aptio_ ..1uqUI. - 1].'11'&1_'" 'Il" k• ...,Uo_(II.lll'tio_.lUl9t' - 1].un .• Il~]....,

J J~Vedi()

t X1 • ...:J._ .•.•. '11'&1_ •• , •.•• apt.ie_(II.~_te:rt )

.-.:tt.va Sc.n.c.O( •._~.~e:- __l~ )

<Jscript>

~le><t.D<tAl>-<lIIe.lect r aze-""" oa::ll.I:k>o"Yedi().><J-.J.~

~ t,..,... •• t.o.· -'--'1" fiIl__ c.ric." o.cllcPo"c.n.c.()">4I,r>~ lwe-"text" __ n">o;Jw>

<1....,r. lJPe-" •..••.t.o.· __ .1" "'ù __ ScAri.c .•.• 1UIIl:.1i.c"ScaJ:1.ca()">

<JtdXJtl'"X/t.àle><JIoMY><J>bd>

Figura 4 - Esercizio 4 -Utilizzo del Timer.Una pagina "dinamica" èin grado di reagire aglieventi ovvero alle azioniche l'utente esegue suglielementi della pagina. Im-portantissimo è anchel'evento Timer, che produ-ce degli eventi temporiz-zati a cui si possono colle-gare delle routine che ese-guono con tale periodicità"qualcosa" sulla paginasenza che l'utente debbafare nulla (può anche sologuardare stando a bracciaconserte). Ad esempio sipuò prevedere una navi-gazione automatica e tem-porizzata da una paginaalle successive.

~--<u_tIe>eoato alla IIoftSCia<Jtiue><J>eM>-<SaII7J' ~oJawaScri»t">

tadioa Va1()l

~.ùJ..arr.1mIedIDL

"""""-1dDcwIeat .all.arI'.1uIedIDL-XXX1.nl....xx

U (XX-I)

l) wUdow.l.ocatt.oa -(·r-n .•••. ·) liJ!ìiiìi!_

I<JSa<UT>~ •••.•••••• w:bdDIr.biIIr' _ setbterYa1.( 'Vai() ., '''J ;"><Or><a:.ter>MaM:aIID ~ D - 'arr'>2t</SP1K> 5ecoad:i<llr><:I..Jw1Il t)pe-'test' .--'X1' ri:ze-'2'></ceater><Jor><IfD1'C><IJIIIL>

Mancano 13 Secondi

proprietà e metodi. Chi già conoscequesto modo di programmare dovrà so-lo trovare le istruzioni JavaScript, chegià conosce dal punto di vista concet-tuale.

Per caricare l'oggetto usiamo un ar-ray JavaScript opportunamente caricatodi dati, che poi viene via via letto per ali-mentare l'oggetto Select. Se l'oggettosi chiama N utilizzeremo:N.selectedlndex numerodell' Item, ov-vero il progressivoN.value proprietà Value, adesempio il codice dell'articoloN.options[n].text suo valore esterno,ad esempio la descrizione dell'articolo.

Il quarto esercizio, il più semplice fi-no ad ora, utilizza il comodissimo Timer

"

al paragrafo che mostra il nome del me-se, e poi di intercettare l'evento clicksull'elemento stesso. Queste tecnichesi basano sull'uso del modello ad og-getti della pagina, fondamentale nontanto nella produzione automatica dellapagina, quanto nella sua interazionecon l'utente.

Vale la pena di ricordare che nel pri-missimo HTML l'unica interazione pos-sibile erano i link per la navigazione trale pagine, mentre ora, ad esempio, lanavigazione può essere gestita con ilDOM: Document Object Mode!'

Riguarda l'interazione con l'utenteanche il successivo esercizio 3 (figura3). In particolare ci occupiamo dell'usodinamico dell'oggetto Select (la combobox di Visual Basic). Per dinamico inten-diamo il suo caricamento da program-ma e la visualizzazione delle informazio-ni che contiene.

Anche in questo caso si tratta di pro-grammazione Object, in cui si usano

MCmicrocomputer n. 209 - settembre 2000

Figura 5 - Esercizio 5 -Programma ASP che ge-nera 120 pulsanti.Il programma ASP vieneeseguito dal server cheinvia il risultato della suaesecuzione al client. Un ~ •• •• '''''' _primo vantaggio sta nel -Ri_",""~_ •... _fatto che dal browsernon è possibile leggere ilcodice, che in tal modorisulta protetto da"sguardi indiscreti". An-che un programma ASPpuò servire per generarecodice HTML, che vieneprodotto come sequenzadi stringhe che vengonoinviate al client. All'inter-no della pagina ASP, ol-tre al codice ASP puòessere presente normalecodice HTML e normalibrani di script Java-Script, che non vengonointerpretati dal server,ma inviati direttamente al client che si occuperà di interpretarli. In questo esempio abbiamo prodotto, conASP, 120 pulsanti che richiamano tutti una stessa funzione JavaScript parametrizzata in modo da indivi-duare da quale pulsante sia stata richiamata.

157

Page 5: Corsoalternativo di programmazione Generazione automatica ... · Corsoalternativo di programmazione Generazione automatica di Pagine per Internet di Francesco Petroni In pochi mesi,

Una delle caratteristiche più stimo-lanti che i programmatori trovano nelle

pagine ASP consiste nella pos-sibilità di utilizzare direttamen-te le DLL. E' evidente che poi-ché ASP lavora sul server, leDLL sono quelle che risiedonosul server.

Molte delle funzionalitàstandard di ASP si appoggianosu DLL di sistema oppure in-stallate insieme al server, adesempio la libreria ADO o la li-breria Scripting Object.

Si possono ovviamente uti-lizzare DLL fatte in casa, comequella che vi proponiamonell'esercizio 6, l'unico che di-spone di due figure, quella chemostra l'intero codice dellaDLL e l'altra che mostra loscarno codice ASP e il risultatonel browser.

La nostra libreria si chiamaCompTBP (il file generatoquando compileremo il sor-

net della Microsoft,in cui c'è l'interpretedel codice, o di unsuo surrogato, comeil PWS.

Il primo esercizio(figura 5) prevede larealizzazione di 120pulsanti opportuna-mente intabellati,ciascuno con un suonome e un suo valo-re. La proceduraASP che genera ipulsanti associa aciascun pulsante unevento onClick, checorrisponde ad uncodice JavaScriptpresente anch' essonel file, ma che vie-ne inviato diretta-mente al client, per-ché sarà il client chelo dovrà eseguire.

Evidentemente la funzione Mesi(ppl,richiamata da ciascuno del 120 pulsanti,è parametrizzata nel senso che riceveanche l'indicazione di quale sia il meseda cui è stata chiamata. In pratica il pa-rametro è una stringa che contiene ilnumero dell'anno ed il numero del me-se, che vengono visualizzati in cima aldocumento.

Una DLL per ASP

Figura 7 - Esercizio 6- Creazione di unaOLL da usare soloper Internet - CodiceASP e risultato.E' evidente, anchedalle nostre figure,che il fatto di trasferi-re la logica dell'ap-plicazione all'internodella OLL alleggeri-sce il codice del pro-gramma ASP, chedeve solo referenzia-re l'oggetto e usarnemetodi e proprietà.Altri vantaggi sono lavelocità di esecuzio-ne, dovuta al fattoche il codice OLL ècompilato mentre ilcodice ASP no, e lafacilità di manuten-zione che permettedi aggiornare la OLLsenza dover modifi-care il codice ASPche la utilizza.

Figura 6 - Esercizio 6 - Creazionedi una OLL da usare solo per Inter-net - Codice della OLL.Una delle caratteristiche più sti-molanti delle tecnologie Microsoftè quella di essere tutte allineate tradi loro e di essere allineate alletecnologie di base, ad esempioCOM, OCOM. L'esperimento piùsemplice da realizzare consiste nelcostruire una libreria, compilatasotto forma di OLL, che contengafunzioni da usare in pagine ASP.E' inoltre possibile, anche se nonè corretto da un punto di vista "fi-losofia COM", realizzare funzioniche lavorano solo per il WEB. Nelnostro caso abbiamo realizzatouna semplice OLL che contieneuna sola classe che a sua voltacontiene una sola funzione. Que-sta funzione riceve un 'istruzioneSQL sotto forma di stringa e resti-tuisce una "stringona" che corri-sponde ad una tabella HTML, per-fettamente confezionata, che vi-sualizza i dati richiesti. Qui vedia-mo il codice nel suo ambiente na-tivo, che è il Visual Basic.

.:J4

Un pizzico di ASPRiassumiamo quanto detto fino ad

ora. ASP è una tecnologia della Micro-soft che permette di creare delle pagi-ne attive, in pratica delle pagine checontengono del codice che viene inter-pretato dal server ed il cui risultato vie-ne inviato al c1ient.

Il client "si vede arrivare" codiceHTML o anche codice JavaScript, maignora il fatto che tale codice è statoprodotto da un programma.

Per sperimentare il codice ASP oc-corre quindi disporre di un server Inter-

D

fIt fdt _ HoIp

<html:><head><t1tle>Eserc1t10 Nwnero 6</t.itle></head><body><,Set. 00 • server. createobject ("CompTBP,CompTBC")SQ-"Select. cod, coqnome, citta, 1mporto trom persone vhere Citta-' RORA'"response:. vrite 00. Tabella lucase (!lOI ).,</body>j</html>

'unC'tion TABILLAClq)ml - -"'tcS)ocfont t.e.-tahoa • .t,s.-l eolor-r.cS)ocb~m2: _ "c/b)oc/toftt,)oc/td""TCl - ""'ecS)o"'fom;.t".-tahoaa sis.-l color-qr •• n)o"TGZ - ""'/tont"c/ed)o"CJI - "PROVIDla-PIicrolott.. Jet.. OLIDI. 3. IIJD.t. 'oure.-e: \d.ti" .a4bJ"S.t al - Il•• a.eord •• tal.Op.n Iq, CJI, .dOpenle.tie, .dLoek~iaiseieIl - "-<htal""'boety"cIP.ul lD--Tlr''''nbsp;c/IUJl)oce~l. bord.r-l""cc - ·crll>"'01' K - o To U. 'i.lel •. Count - l

c;ç - c;ç •. TDl " lI.'hlel.(K).N_. " TDZN.lIt

c;ç - cc " "c/Ta,."S8 - 'S " çc •. ""'IPAlI ID - 'Dr' onC1:Lek-'y.eliO -,.'Do Vhi1e Ilot as. IO'

CC - ·cTa,."TMl - TGl " 'cIPAJJ ID-'" " "I(" " al. 'i.14. ("cod" I " -,,..THZ - ·"'/BPAH"- " TCZ'or I( - O To a,. 'iel4 •. Count - 1

c;ç - c;ç " TMl " as.he1,btKI " 1HZ:N.lIt

Il - SI " cc " ·c/Ta,.-1l.I.1'l0y.H.xtLoopIl - Il •. ""'/SPAII"-D1.a 1:1;As Stri.n9 • 2:000Op.a -C:\lcrp.tlt- '01' B:i.nary As .1c..t '1, , IZClo •• Il'I - 55 •. ·"'ITAB1.I"- •. 1rlaC'" •. "c/boety"c/htal"·S.t al • Jil'othingTASILLA - SS

Ind 'unC'tion

rcoolCOGNOMEfiii24fALMIERI[illO~CAQJA[il34~AlZEmfW2puGIOIW3)ìAlDlNlfW5PlDARlNl/l2ii3jCHìARA[i227 FJNAlDl[i26i !AVIO[ì269 RIATTINl[ìV9 PSSIClNl[i3Z7 ilASSl[i32SfERSI[i333IVIGNAROLIfi405lBETTlI'ELLI

Oorw

JavaScript. Per attivarlo basta imposta-re nel BODY ONLOAD, ma va bene le-garlo a qualsiasi altro evento, l'intervalloin millisecondi e la routine da chiamareal verificarsi dell'evento.

<BODY ONLOAD="window.tmr= setlntervaI('Vai()',999)"

significa un intervallo di quasi un se-condo e che ogni "quasi secondo" vie-ne eseguita la function Vai().

Cosa fare all'interno della funzione Vaidipende da cosa deve fare il programma;nel nostro caso, produciamo un conto al-la rovescia che, allo scadere dei quasi 20secondi, apre un'altra finestra.

158 MCmicrocomputer n. 209 - settembre 2000

Page 6: Corsoalternativo di programmazione Generazione automatica ... · Corsoalternativo di programmazione Generazione automatica di Pagine per Internet di Francesco Petroni In pochi mesi,

.~..

Ne ••••••••••••Cod: Strino, De~: Strino, Prc :Nwne:ric ~".101", "Cal%ini", "12000""J.02", "Ilaolietta", "24.000"".103", .•ftutande". "15000""B01", "Camicia", "56000""COI", "Pantalone", "130000""C02", "Giacca", "4.35000""C03", "Impenneabile", "350000""CO'l", "Sciarpa", "28000""COS.•, "Cinta", "48000""C06", "Ve~taolia", "780000".

N~E.FClRMAJ'.K)Nf

uPlllallllpr-u'l'UNroctSlttllrtlr.ctMC/'Ia~,"CiUprestlo;JoM •••••••••di ir4Dm\1tit.1 •••Itala.

~~ _~ F~~ __ !~ __~-li]htt,,,lIdev2lXXl/"","""""'."'" il (;Go

contiene una griglia vuota, in cui le va-rie celle sono ben identificate da unnome. La procedura legge i dati, nel no-stro esempio li abbiamo direttamentescritti in un array JavaScript, poi li ela-bora ed invia il risultato dell'elaborazio-ne alle varie celle.

L'evoluzione di tale semplice esem-pio è costituito da una vera e propriaprocedura che gestisce un data base diinformazioni, strutturate, testuali, grafi-che, e che produce dinamicamente pa-gine o componenti di pagine, a richiestadell'utente. ~

~t.l'boanprC':I<!fU.suoidl!nllM5~

2llOO,lflUlMl5t~lIffupefb.Ctele.--.std.OestNto.

~prof~ed.prooettetl••.....f

docuaent.vt:ite ('<tr:><td>' + RS("Cod") + '</td>')docuaent,vr:it.e ('<td>' + (RS("DeS") + '</td>')docuaent.vrite ('<td>' + (R.S("Prc")) + '</td></tr:>')RS.lloveJIut();

RS • docuaent.lIS.recoubet;docuaent,1f1:it.e ('<table border.l>')vbile (!RS.EOr){

}docuaent.1f1:ite ('</table>')

Eserci:tio 7<mTLDllIDD>OSJl:cr CUSSID."clsid: 333C7BC4-460r-llDO-BC04-0080C7055A1

m.'"BS" VIDlB·O HlIGHT·Q><PARA!!JIlII[·"DataDRL" Vliur:."lbtino. txt"')<P~ DJIE·"Fie1dDelia" 'llim •.• , "')<PARAI!JLUn:."OsdleadH" V,UOE·"uue"')

/OBJECT>/centeO<br:>SCRIPT LU'GUMZ·"Javl!Scl:ipt">

function lIS.ondate3eteoaplet.e (){

tiUv>&d.,11..c:/UUe>acript. l.....,.,.·~-asc:llpr:">

lI'U x· uuy(lI); war T • 1n..,(1I): •.u Z • A.!:1:..,CIlI: Val: •• ,'..n..,ClJ)JQI).-_.M1I1:,..r_-T[lJ •••••.uiu _ .••••. C••

Z[lJ.·"" 1Ia1:~ p"eftnu al _. elUDù IIS Visto UlOO. 11 ......, lIUlaGlt.o 'l.tlCO ,.n 1:UU.<tli! nec:udu.. Duul'1at.o ai d.1U09'1at.orl plofunoW{l)·-t1;oq:a1.91'-X[Z).-_.plunc:oa.lt""T[Z)--Vuiu _ .• LUUCc..Cor2[t}·-"" 'bIUCllII pleNrlta 11 _1:0 d1 5etu.bu d.1 PIe:J1l,ct.OC'~Ut, 1. plia P1uU910'. tl"ut.& cl1 Wtll •• U<;a in lt.e.1h.-.(ZJ~t19'Ua2.91t·X[3}·-_.LtpMlu:a.lt.-"[31.-La ~Ill:., 11 vonlO G10Dlll.11""

Z(l).·U ~UC. _U Il _ 'oru..l", b~·.[lJ.-hlJULa3.}p("hDn1•••",ul) l

u· '(. bn.f·-· + XII) .•• .,., + T(1) + '</ll><t!O' + .<J.ag'lIu;.-lA4/' .•. V(1) .•. '-XJlC>' .•. %(1)U,o '(.lQ:d.M, + X(2) + ''")' + 'l'(l) + '(/CKbO' + '<1aq uc-,o-:l-aQ/' + 1f(2) + 'M><bO' .•. %[2)~'<. b!::cot••.• • + X(3) + ''") •.•. T(3) .•. '(/CKbO' + '(laOliI nc,o'"iaQ/' .•. 1f(3) .•. ''"XbO' + %[3JQU.1AnC'dfTm,o '(CUlUO' +-IU .•. '</c_uo'023.iJIrlI:dJJ1II.,o '<CUlUO'''' k2 .•. '</nDuo'

/K"~:~1l>IlIetJmU. • '(CUlU,,", .•. IO +- '</emtn:>' , ~ r.a ••• ,.... ,••••

nnz nn:,o,ouxt/c.s'"> .•••••• 1tt9:1,/deV2OOOi1ltlCCltl~,lUII{P1lWT-rM.UT: tebosa; rowT-SI2E: 8ptl

==",....,bgl:oJOl,ow'UUffM onJoll4a'V&lO':>

t_t t6(:C' ••M~ ut.e ..M.••• cOlot"'"bluc'">

aoua. R1ap1te Auu.eUc.-nItC'</tonO<boA11lZnclth--'"4llIO'"><l1l>

a1.l~-CI'JfJ'I:R",,&I:l-~,o"TO"'"<T.\B1Z~Onr:rtH-"UIO'·:>

<'IItlo<I1t><Drt' m..'OU'X/D19X/t4»</CO<JIl>C'Yb)<I)IV llI'-'OlZ'X/DIYX/t4»</tO<1Ib<n'xlll1' JDoo'0.13 'X/DIVx/t4»</to<1'Jb<1'1'><lll'W 1ll,o'OJ4'x/IlI'b</td></t:0

<mB><><"'"a1.l.,..,..a.JDt"',,&I:l-~-ro,..,.

<TASU: 8OI1:DIJt-8 nJ7J"I!I ••.• 32O"':>~rt' 1lI'-'02I'X/DIY></'I4></tO<TR>CI1/':lodrt' m..'Q22'xIDIVx/td></t:O<'JIOo<'11Io>Crt'1Doo'lJZ)'X/DIV></tcl:></t:O<TR:><11b-<Pl1' J])..'024'x/llI'b</t4></tO

""'''''"",""''''''''''"""",,,/'''''1>.

L'ultimo esercizio (figura 9) esempli-fica il nostro obiettivo, creare una pagi-na che viene riempita di contenuti gra-zie ad una procedura che legge i dati daun database.

Nel nostro caso abbiamo una pagina(ad esempio la home di un portale) che

Conclusioni

che sarà alla base del nostro successi-vo articolo, relativo all'utilizzo dei data-base all'interno di pagine Internet.

Figura 8 - Esercizio 7 -Lettura di un file testuale.Nel prossimo numeroparleremo di pagine In-ternet che "leggono" filee ne visualizzano il conte-nuto. Per ora "acconten-tiamoci" di utilizzare ilTDC, Tabular Data Con-trol, componente di Inter-net Explorer 4.0 o supe-riori (risiede quindi sulclient), che permette divedere sotto forma di Re-cordset un file testualeopportunamente organiz-zato. Quello che mostria-mo è un uso elementaredel TDC, che è peraltrouno dei cento strumenti adisposizione del pro-grammatore per dialoga-re con un database.

Figura 9 - Esercizio 8 -Generazione automaticadella pagina.Il nostro obiettivo è diquindi quello di generareuna pagina automatica-mente. Qui vediamo unesempio supersemplificatodi quello che intendiamoper produzione automati-ca. In pratica realizziamouna pagina con dei segna-posto (i tag DIV nella ta-bella) che vengono riempiti"da programma" con dati(testi, link, figure, tagHTML, ecc.) provenientida un database presentesul server. Per cambiare lapagina sarà sufficientecambiare i dati nel databa-se. Per ragioni di spazio, inostri dati sono stati sem-plicemente inseriti a manoin array JavaScript. Nelprossimo numero, comeappena detto, ci occupe-remo della lettura dei datie quindi avremo occasionedi riparlare di tali tecniche.

gente si chiamaCompTBP.DLU, contieneuna classe che si chiamaCompTBC, che contieneuna funzione che abbiamochiamato tabella. A questafunzione passiamo unastringa SQL:

select cod,cognome,cit-ta,importo from personewhere citta='ROMA'

compito della funzioneè quello di costruire unastringa (molto lunga) checontiene un codice HTMLche a sua volta contieneuna tabella con le intesta-zione e con i dati. Se ser-ve del codice in più, adesempio funzioni Java-Script, lo si può inserireleggendolo da un file testuale per ag-giungerlo alla stringa prodotta.

Il trasferimento del codice nella DLLsemplifica enormemente illavoro del codice ASP (evi-dente dimostrazione nelcodice di figura 7).

Questo semplice eser-cizio, che trovate in ..sca-tola di montaggio" (c'è an-che il databaseL dimostral'interagibilità delle tecno-logie Microsoft, grazie allaquale un programma perInternet può essere svilup-pato in gran parte in VisualBasic.

Altro componente inte-ressante per tale interagi-bilità è costituito da ADO,tecnologia universale e so-fisticatissima di accesso aidati, che dispone di ogget-ti, metodi, proprietà, even-ti ..pensati" per le applica-zioni Internet.

Il settimo esercizio (fi-gura 8) mostra l'utilizzodella tecnologia TDC, Ta-bular Data Contrai, componente (si trat-ta di un OCX) che viene installato assie-me ad Internet Explorer e che permettedi definire, caricare e gestire un Re-cordset. I dati, nel nostro caso si trattadi un semplice file TXT che nella primariga riporta i nomi ed il tipo dei campi,risiedono sul server, ma vengono cari-cati sul c1ient, sul quale possono esseremanipolati con metodi e proprietà tipicidi un Recordset. E' evidente che si trat-ta di una tecnologia che funziona solosui browser MS.

Questo esercizio apre il discorso,

MCmicrocomputer n. 209 - settembre 2000 159