Sei sulla pagina 1di 52

CORSI

DI FORMAZIONE
ON-SITE

education@infomedia.it
www.infomedia.it EDITORIALE

BIMESTRALE - ANNO 12 - N.66


Infomedia Green:
informazione e
DIRETTORE RESPONSABILE
MARIALETIZIA MARI

DIREZIONE EDITORIALE

sostenibilità
NATALE FINO

COLLABORATORI
SOLVEIG HAUGLAND
EDWARD MACNAGHTEN Dal prossimo mese di Dicembre parte la nostra campagna contro lo spreco della carta
ANDREW MIN e la deforestazione selvaggia delle foreste primarie. Abbiamo deciso di dare impulso
FRANCESCO PENTELLA a questa iniziativa prendendo atto della realtà diffusa in cui la carta è considerata
GARY RICHMOND una risorsa illimitata, a buon mercato e tuttora utilizzata per qualsiasi tipo di
LU I G I S A N T A N G E L O
pubblicazione (compresi miliardi di volantini “usa e getta”, come quelli che lastricano
le zone fieristiche all’ora di chiusura).
Dati alla mano, ogni anno in Italia vengono sprecati solo … 50 miliardi di fogli di carta!
Ossia 2.000.000 di alberi. Dal 1995 al 2020 la produzione internazionale della cellulosa
e della carta per l’editoria sarà cresciuta del 77%, e circa il 75% del legname importato
GRUPPO EDITORIALE INFOMEDIA SRL
da Russia e Indonesia, e quindi della carta utilizzata per la stampa, proviene da alberi
V I A V A L D E R A P. 1 1 6
5 6 0 3 8 PO N S A C C O ( P I ) I T A L I A abbattuti illegalmente nelle foreste primarie. Tutti gli anelli che compongono la catena
TE L 0 5 8 7 7 3 6 4 6 0 F A X editoriale sono, a vario titolo, responsabili del consumo della carta ed ognuno, con un
0587732232 po’ di buona volontà, può (e prima o poi dovrà) correggere le storture di un processo
E-MAIL RED_ editoriale disattento alla sostenibilità.
LOGIN@GRUPPOINFOMEDIA.IT
Un esempio è la quantità esorbitante di carta utilizzata per gli atti dei parlamenti
S I T O W E B W W W. I N F O M E D I A . I T
(nazionali ed europeo), magari per minute e testi di validità più che effimera; ulteriore
esempio è il numero di copie tirate dai quotidiani, dai settimanali e dai periodici
DIREZIONE che è di gran lunga superiore (per via dei contributi statali) alle copie effettivamente
NATALE FINO
vendute: in sintesi, si sa già in partenza che gran parte di quelle copie è destinata al
macero. Punto.
TE C H N I C A L B O O K
Questo scenario distorto, era tarato per una società in cui l’informazione veniva
BOOK@GRUPPOINFOMEDIA.IT veicolata quasi esclusivamente su carta, ma oggigiorno non è più così: tra televisione,
radio, Internet, telefoni cellulari e dispositivi vari, il cartaceo non è più “il principale
MARKETING & ADVERTISING
SEGRETERIA: 0587736441 supporto” di veicolazione. Invece attraversando i capannoni industriali capolinea
M A R KE T I N G @ G R U P P O I N F O M E D I A . I T della distribuzione editoriale, si nota che sono stracolmi di torri di rifiuti editoriali
cartacei. Migliaia di tonnellate di prodotti destinati al macero ogni anno.
AMMINISTRAZIONE
Il progetto Infomedia Green è ambizioso e innovativo, per realizzarlo abbiamo necessità
AMMINISTRAZIONE@GRUPPOINFOMEDIA.IT della collaborazione e della buona volontà di tutti i nostri lettori: perché ognuno, dalla
SEGRETERIA sua scrivania, può iniziare a far molto per una migliore sostenibilità.
Per mettere in atto questo progetto promuoveremo degli incentivi per promuovere un
INFO@GRUPPOINFOMEDIA.IT consumo più critico, prendendo atto dell’inevitabile sorpasso del digitale sul cartaceo:
la qualità dei nostri contenuti resta immutata, ed è comunque possibile stampare i
GRAFICA PDF degli articoli che più interessano. Non prevediamo l’eliminazione totale della
GRAFICA@GRUPPOINFOMEDIA.IT
stampa su carta, ma opteremo per una soluzione “on demand”: l’utente che non
vuol rinunciare alla sua copia cartacea completa potrà comunque acquistarla in ogni
momento, limitando al massimo lo spreco di carta. È una questione di sensibilità e
anche di comodità, visto che già oggi trascorriamo più tempo a leggere informazioni
tecniche dal video e sempre meno su carta.
UFFICIO ABBONAMENTI
TE L 0 5 8 7 7 3 6 4 6 0 F A X
0587732232
ABBONAMENTI@GRUPPOINFOMEDIA.IT Natale Fino
W W W. I N F O M E D I A . I T

3
Login Internet Expert n.66 Novembre/Dicembre 2007
SOMMARIO LOGIN n.66 - Novembre/Dicembre 2007

Speciale
ODF/OOXML
ODF e OOXML a confronto

di Edward Macnaghten 8

Solutions
Il pattern MVC e le librerie DisplayTag
Prima parte
u InVetrina 46
di Luigi Santangelo 29
NetCrunch Per contattare la Redazione di Login
di Francesco Pentella 35 scrivete a:
Gruppo Editoriale Infomedia S.r.l.
Tips & Tricks per GNU/Linux Via Valdera P. 116 - 56038 Ponsacco (PI)
Tel. 0587/736460 (r.a.) - Fax 0587/732232
Seconda parte e-mail: red_login@infomedia.it - http://www.infomedia.it/Login
di Gary Richmond e Andrew Min 41 I listati che corredano gli articoli sono
liberamente scaricabili dagli indirizzi:
http://www.infomedia.it/Riviste/Login

Cutting edge Ftp://ftp.infomedia.it/pub/Login/listati

Login Building The Information Highway


Il modo più semplice per creare database è una rivista del Gruppo Editoriale Infomedia S.r.l.
in OpenOffice.org Direzione e amministrazione
di Solveig Haugland 22 Via Valdera P. 116 - Ponsacco (PI)

Registrazione n.18 del 25/11/99 - Contenuto pubblicitario inferiore al 45%


���������������������������������������������������
��������������������������������������������

������������������������������������������������������������������������������������������������������������������������������������������������
��� ������� �������� �� �������� ��������� ����������
������������������������������������������������
�������������������������������������������������
��������������������������������������������
������������������������
speciale ODF/OOXML

ODF/OOXML
a confronto
Un confronto tecnico tra i formati ODF e OOXML

Ü di Edward Macnaghten

Mi è stato chiesto dall’UK Action Group del- Ovviamente era necessario uno standard e
la Open Document Format Alliance di scri- ODF venne alla ribalta. Subito dopo Mi-
vere un documento sulle differenze tecniche crosoft suggerì che dovesse interpretare quel
tra i formati ODF e OOXML. Dopo molti ruolo il suo OOXML.
tormenti, correzioni, altri che hanno corretto Un punto importante di qualsiasi standard è
i miei errori, suggerimenti, modifiche e boz- la desiderabilità e la facilità con cui può es-
ze, ho comunque ottenuto qualcosa che può sere implementato. Uno standard che non
essere utile a chiunque. I documenti effettivi può essere implementato da tutti gli inte-
sono reperibili da [1] sia in formato PDF sia ressati del settore a cui lo standard si applica
ODT (Open Document Format). I prossimi lo rende praticamente inutile e serve solo a
brani rappresentano una versione adattata ostacolare l’interoperabilità piuttosto che a
del documento originale, pertanto per appro- promuoverla.
fondire suggerisco di prendere visione del La filosofia tecnica della progettazione di
documento integrale da [1]. Qui è pubblicato uno standard è perciò importante.
principalmente per scopi di riferimento. Questo documento esamina i formati ODF
e OOXML. Esamina alcune delle operazioni
di base che riguardano come i file vengono
Distinzioni tecniche tra ODF e effettivamente creati e i meriti (o demeriti)
OOXMLODF Alliance UK Action Group tecnici di ciò che viene creato.
Qui si esaminano solo gli aspetti tecnici;
quelli che riguardano la proprietà intellet-
Per molti anni vari produttori hanno pro- tuale e gli aspetti legali sono trattati altrove.
dotto software di tipo office. Tuttavia, è sta-
to difficile per un utente di una applicazione
manipolare affidabilmente i documenti crea- Storia di ODF
ti da altri. Le specifiche dei formati dei file
erano segreti saldamente protetti e perché ODF è un formato sviluppato come standard
possa esistere l’interoperabilità gli sviluppa- neutrale rispetto al produttore. Tuttavia, non
tori dovevano spendere grosse quantità di ri- ebbe origine da qualche parte in particolare
sorse cercando di decifrare i complessi dump ma piuttosto attraverso un processo di evolu-
dei file. zione [1] di seguito descritto.

8
Login Internet Expert n.66 Novembre/Dicembre 2007
speciale ODF/OOXML

FIGURA 1 Un semplice esempio di testo e immagine


n Nel 1999 StarDivision iniziò a lavorare su un for-
mato di file XML interscambiabile per il prodotto
StarOffice.
n Nell’Agosto di quell’anno StarDivision fu acqui-
stata da Sun Microsystems.
n Nell’Ottobre del 2000, Sun Microsystems rilasciò
grosse quantità del codice sorgente al progetto
OpenOffice.org con licenza open basato su una
community. Allo stesso tempo fu creato un pro-
getto XML basato su una comunità con l’obietti-
vo di definire una specifica XML del formato di
file interscambiabile.
n Nel Maggio 2002 OpenOffice.org versione 1.0 e
StarOffice versione 6 furiono rilasciati utilizzan-
do questo formato XML (SXW).
n Sempre nel 2002 iniziò una collaborazione con al-
tre suite office, in modo particolare con il proget-
to KOffice, per raffinare ulteriormente l’interope-
rabilità del formato.
n Nel Dicembre 2002, OASIS tenne una conferenza
annunciando la creazione di ciò che ora è lo stan-
dard ODF.
n In seguito, dal 2002 al 2004 il formato è stato revi-
sionato in base alle ulteriori esperienze e all’anali-
si di ciò che è ritenuto necessario in un formato di Ciò si riflette nella specifica in molti modi, nello spe-
file office. cifico:
n Nel Dicembre 2004, una seconda bozza del forma-
to di file XML è stata approvata da OASIS per una n XSL:FO, Formattazione
revisione. n SVG, Scaleable Vector Graphics
n Nel Febbraio 2005, una terza bozza è stata pubbli- n MathML, formule matematiche
cata per ottenere un feedback pubblico: sei anni n XLink, collegamenti inglobati
dopo l’inizio del progetto e cinque anni dopo che n SMIL, Synchronized Multimedia Integration
è iniziata una consultazione pubblica. Language
n Nel Maggio 2005, il formato ODF è stato approva- n Xforms, definizioni di form
to come standard OASIS [2].
n Subito dopo, molte suite office hanno adottato lo
standard come metodo per memorizzare i docu- Storia di OOXML
menti [3].
n Nel Settembre 2005, ODF è stato proposto come OOXML è il formato che Microsoft ha sviluppato per
standard ISO. la sua suite Office 2007. Lo sviluppo di OOXML non
n Nel Maggio 2006, ODF ha ottenuto la certificazio- è stato eseguito con una consultazione pubblica visi-
ne ISO (ISO/IED 26300). bile. È difficile determinare quando è iniziato lo svi-
n Nel Febbraio 2007, OpenDocument Versione 1.1 luppo del formato. Tuttavia, è noto quanto segue:
è stato approvato da OASIS [4]. Questa versione
risolve in modo particolare problemi di accessibi- n Microsoft ha utilizzato un formato XML come
lità. opzione nella sua suite Office 2003, benché non
n ODF ha continuato e continua ad evolversi in ter- fosse il formato di default. Non era un formato
mini di popolarità e di supporto [5]. compresso e i dati venivano memorizzati in un
unico file XML, con i dati binari, come le imma-
gini, rappresentati come stringhe BASE64 in spe-
Filosofia di ODF ciali tag binData. Veniva fornita una precisa licenza
che governava l’utilizzo di questo formato. Tutto
La filosofia alla base del formato è stata di progettare ciò è stato rilasciato durante il 2003.
fin dal principio un meccanismo neutrale al produt- n Microsoft iniziò lo sviluppo di Microsoft Office
tore utilizzando gli standard esistenti laddove possi- 12, noto come “Microsoft Office 2007”. Hanno
bile. Benché ciò abbia significato che i produttori di sviluppato un nuovo schema XML (OOXML),
software avrebbero dovuto modificare i propri pac- utilizzando probabilmente come base il formato
chetti ben più che se avessero continuato a seguire la di file XML di Office 2003. Come ODF, il formato
propria strada originale, i vantaggi in termini di inte- memorizza i dati in diversi file inglobati in un file
roperabilità erano recepiti dai partecipanti come ab- .zip. Nessuna consultazione visibile con il pubbli-
bastanza importanti da giustificare una tale attività. co si è verificata durante la creazione del formato.

9
Login Internet Expert n.66 Novembre/Dicembre 2007
speciale ODF/OOXML

FIGURA 2 Esempio di foglio di calcolo


Filosofia di OOXML
Siamo dell’idea che il for-
mato appaia progettato da
Microsoft per i prodotti
Microsoft e per interope-
rare con l’ambiente Mi-
crosoft. Poca attenzione
pare sia stata posta riguar-
do l’interoperabilità con
ambienti non Microsoft o
compatibilità con consoli-
dato standard neutrali al
produttore [10].

Esempio delle
differenze XML tra file
word processor ODF e
OOXML
Le filosofie alla base di
ODF e di OOXML in-
fluenzano notevolmente
sul risultato finale. Un
modo per dimostrare ciò è
esaminare il contenuto del
file dello stesso documen-
to salvato nei differenti
formati. A questo scopo è
stato assemblato un documento di esempio e le parti
n Su pressione, Microsoft ha “ammorbidito” i ter- appropriate dei file XML sono state esaminate.
mini della propria licenza nel Gennaio 2005. Tut-
tavia, non lo ha fatto al punto di permettere al sof- Procedura
tware free di utilizzarlo [6].
n Subito dopo che il Commonwealth of Massachuset- Per fare ciò sono state eseguite le seguenti operazio-
ts’ Information Technology Division scelse il formato ni:
ODF OASIS come standard dei propri documen-
ti, Microsoft annunciò che avrebbe sottoposto il 1. È stato creato un semplice documento di una sola
suo formato all’ECMA per la standardizzazione pagina contenente una frase, con alcuni elementa-
[7]. In seguito in quel mese (Novembre 2005), Mi- ri effetti di font, e un’immagine. Questo documen-
crosoft rilassò ulteriormente la licenza e appose to è mostrato nella Figura 1 come riferimento.
una reciproca clausola di Non-Assertive-Clause 2. Il documento è stato salvato sia come file ODF
sui brevetti che deteneva sul formato [8]. (.odt) sia come file OOXML (.docx).
n Nel Dicembre 2006, l’ECMA approvò OOXML 3. I risultanti file zip sono stati aperti e analizzati per
come standard (ECMA 376) [9]. Ciò è avvenuto individuare il “nocciolo” del documento. Ciascu-
senza alcuna visibile consultazione pubblica, e no di questi è stato poi estratto.
approssimativamente dopo due anni e mezzo di 4. Il formato XML risultante di ciascun documento
sviluppo dal rilascio del precedente formato XML è stato poi riformattato per motivi di leggibilità
chiuso (Microsoft Office 2003) (10). Ed è stato aggiungendo semplicemente indentazioni e inter-
quasi immediatamente sottoposto all’ISO per es- ruzioni di riga. Le stesse regole e metodi di for-
sere certificato come standard internazionale nel- mattazione sono stati utilizzati su ciascun esem-
lo stesso mese. pio.
n Nel Gennaio 2007, una bozza di oltre 6000 pagine
è stata distribuita ai membri per 30 giorni per po- Il contenuto XML estratto e formattato di ciascun
terla analizzare e segnalare “contraddizioni”. documento è riportato nel Listato 1 (formato ODF)
n Microsoft ha rilasciato Microsoft Office 2007 nel e nel Listato 2 (formato OOXML). Segue un’analisi
Gennaio 2007. degli estratti XML.
n Nel Febbraio 2007, un numero senza precedenti Benché questo esempio mostri un aspetto relativa-
di venti paesi ha inviato commenti e contraddizio- mente piccolo dei due formati, evidenzia le differen-
ni allo standard. ze tra i due progetti.

10
Login Internet Expert n.66 Novembre/Dicembre 2007
speciale ODF/OOXML

LISTATO 1

<text:h text:style-name=”P1” text:outline-level=”1”>


Example document
</text:h>
<text:p text:style-name=”Standard”>
This has some
<text:span text:style-name=”T1”>
bold formatting
</text:span>
, also some
<text:span text:style-name=”T2”>
with italics
</text:span>
, a
<text:a xlink:type=”simple” xlink:href=”http://www.odfalliance.com”>
<text:span text:style-name=”Internet_20_link”>
web link
</text:span>
</text:a>
and a picture...
</text:p>
<text:p text:style-name=”Standard”>
<draw:frame draw:style-name=”fr1” draw:name=”graphics1” text:anchor-type=”as-char”
svg:width=”5.9929in” svg:height=”5.4362in” draw:z-index=”0”>
<draw:image xlink:href=”Pictures/10000000000002DC00000298CDD44AEF.jpg”
xlink:type=”simple” xlink:show=”embed” xlink:actuate=”onLoad”/>
</draw:frame>
</text:p>

Analisi dei due esempi


in fase di parsing vengono bilanciati dal fatto che ci
Questo paragrafo evidenzia gli aspetti dimostrati nel- sono meno tag necessari in questo formato.
l’esempio precedente. Non è in alcun modo un’analisi Le differenze in termini di spazio del file e di presta-
completa delle differenze tra i due formati ma mostra zioni sono di poca importanza. In primo luogo, l’al-
i processi filosofico e concettuale alla base di ciascu- goritmo ZIP dei file, che ciascuno utilizza, comprime
no. i nomi dei tag al punto che utilizzano quasi esatta-
mente la stessa quantità di spazio. In secondo luogo,
Tag e denominazione dei tag nelle moderne macchine l’accesso al disco consuma
la maggior parte del tempo di caricamento, renden-
Per cominciare, diamo una descrizione breve e iper- do trascurabile l’elaborazione delle risorse necessaria
semplificata di tag. Un tag è ciò che XML racchiude per il parsing dei nomi dei tag.
tra i caratteri “<” e “>”. Il nome è la prima (e talvolta La leggibilità e la chiarezza dei nomi dei tag influen-
la sola) parte di esso. Il nome è nel formato za l’adozione dei formati. Il costo d’implementazione
di standard come questi è direttamente correlato alle
namespace:tagname risorse richieste per sviluppare i meccanismi. Se lo
standard è criptico, sono necessarie risorse extra sia
dove “namespace” è un metodo per raggruppare as- per implementarlo sia per supportarlo. Ci sono cen-
sieme alcuni tag di un particolare tipo. Se il nome tinaia di tag in ciascun formato e più sono non intui-
inizia con un carattere “/” ciò significa la fine di un tivi più è difficile per gli sviluppatori comprenderli,
“blocco” creato all’inzio del tag omonimo. ricordarli e referenziarli.
Il formato OOXML ha nomi di tag più brevi. I van-
taggi di ciò sono principalmente un risparmio di spa- Funzionalità di span
zio nel file e in secondo luogo facilita un aumento
della velocità utilizzata per il “parsing” dei dati per Ancora una descrizione breve e ipersemplificata:
convertirli nelle strutture interne che l’applicazione “spanning” è un metodo di modifica degli attributi di
necessita. Tuttavia in questo formato è necessario un una sezione di un blocco all’interno del blocco stesso.
maggior numero di tag. Ad esempio, un blocco di testo grassetto corsivo in
La denominazione ODF è più lunga e più verbosa rosso potrebbe essere contenuto in un paragrafo. Un
benché segua la convenzione XML di denominazio- metodo per memorizzarlo in un documento XML è
ne dei tag. Il vantaggio di ciò è che facilita l’intero- di posizionare un tag all’inizio di questa sezione (nel-
perabilità nell’implementare lo standard. L’aumento l’esempio, specificando che il testo deve essere gras-
in termini di spazio occupato dal file e di prestazioni setto e corsivo) e con un tag di chiusura al termine.

11
Login Internet Expert n.66 Novembre/Dicembre 2007
speciale ODF/OOXML

LISTATO 2

<w:p> and a picture...


<w:pPr> </w:t>
<w:pStyle w:val=”Heading1”/> </w:r>
</w:pPr> </w:p>
<w:r> <w:p>
<w:t> <w:r>
Example document <w:pict>
</w:t> <v:shapetype id=”_x0000_t75”
</w:r> coordsize=”21600,21600” o:spt=”75”
</w:p> o:preferrelative=”t”
<w:p> path=”m@4@5l@4@11@9@11@9@5xe”
<w:r>
<w:t> filled=”f” stroked=”f”>
This has some <v:stroke joinstyle=”miter”/
</w:t> >
</w:r> <v:formulas>
<w:r> <v:f eqn=”if lineDrawn
<w:rPr> pixelLineWidth 0”/>
<w:b/> <v:f eqn=”sum @0 1 0”/>
</w:rPr> <v:f eqn=”sum 0 0 @1”/>
<w:t> <v:f eqn=”prod @2 1 2”/>
bold formatting <v:f eqn=”prod @3 21600
</w:t> pixelWidth”/>
</w:r> <v:f eqn=”prod @3 21600
<w:r> pixelHeight”/>
<w:t> <v:f eqn=”sum @0 0 1”/>
, also some <v:f eqn=”prod @6 1 2”/>
</w:t> <v:f eqn=”prod @7 21600
</w:r> pixelWidth”/>
<w:r> <v:f eqn=”sum @8 21600
<w:rPr> 0”/>
<w:i/> <v:f eqn=”prod @7 21600
</w:rPr> pixelHeight”/>
<w:t> <v:f eqn=”sum @10 21600
with italics 0”/>
</w:t> </v:formulas>
</w:r> <v:path o:extrusionok=”f”
<w:r> gradientshapeok=”t” o:connecttype=”rect”/>
<w:t> <o:lock v:ext=”edit”
, a aspectratio=”t”/>
</w:t> </v:shapetype>
</w:r> <v:shape id=”_x0000_i1025”
<w:hyperlink w:rel=”rId4” w:history=”1”> type=”#_x0000_t75”
<w:r> style=”width:
<w:rPr> 431.25pt;height:391.5pt”>
<w:rStyle w:val=”Hyperlink”/> <v:imagedata w:rel=”rId5” o:
</w:rPr> title=”dalek”/>
<w:t> </v:shape>
web link </w:pict>
</w:t> </w:r>
</w:r> </w:p>
</w:hyperlink>
<w:r>
<w:t>

Utilizzo di standard esistenti


ODF supporta la funzionalità “span”, come si è visto
dal precedente tag text:span. L’utilizzo di standard esistenti facilita il processo di
OOXML non supporta ciò. OOXML deve terminare creazione di un prodotto compatibile, principale e
il blocco genitore all’inizio della modifica di forma- ovvio obiettivo degli standard.
to e crearne uno nuovo e poi terminare quel blocco Nell’esempio ODF XML precedente troviamo gli
quando il formato ricambia, e crearne ancora un altro standard già esistenti “xlink” e “svg” in quanto la
prima di continuare. Ciò rende il formato del docu- progettazione di questo formato li ha utilizzati dove
mento notevolmente più complesso. Può essere os- possibile.
servato dalla relativa proliferazione di tag w:t e w:r OOXML sembra non applicare standard esistenti in
nell’esempio. quest’area. Il solo standard che sembra seguire è la

12
Login Internet Expert n.66 Novembre/Dicembre 2007
speciale ODF/OOXML

LISTATO 3

<table:table table:name=”Sheet1” table:style-name=”ta1” table:print=”false”>


<table:table-column table:style-name=”co1” table:default-cell-style-name=”Default”/>
<table:table-column table:style-name=”co1” table:default-cell-style-name=”ce3”/>
<table:table-column table:style-name=”co1” table:default-cell-style-name=”Defaul”/>
<table:table-column table:style-name=”co1” table:default-cell-style-name=”ce5”/>
<table:table-row table:style-name=”ro1”>
<table:table-cell office:value-type=”string”>
<text:p>
Fred
</text:p>
</table:table-cell>
<table:table-cell table:style-name=”ce4” office:value-type=”date”
office:date-value=”2007-03-05”>
<text:p>
3/5/2007
</text:p>
</table:table-cell>
<table:table-cell office:value-type=”float” office:value=”23”>
<text:p>
23.00
</text:p>
</table:table-cell>
<table:table-cell table:formula=”oooc:=[.C1]/3” office:value-type=”float”
office:value=”7.66666666666667”>
<text:p>
7.67
</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name=”ro1”>
<table:table-cell office:value-type=”string”>
<text:p>
George
</text:p>
</table:table-cell>
<table:table-cell table:style-name=”ce4” office:value-type=”date”
office:date-value=”2007-06-02”>
<text:p>
6/2/2007
</text:p>
</table:table-cell>
<table:table-cell office:value-type=”float” office:value=”14”>
<text:p>
14.00
</text:p>
</table:table-cell>
<table:table-cell table:formula=”oooc:=[.C2]/3” office:value-type=”float”
office:value=”4.66666666666667”>
<text:p>
4.67
</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name=”ro1”>
<table:table-cell table:style-name=”ce1” office:value-type=”string”>
<text:p>
Total
</text:p>
</table:table-cell>
<table:table-cell table:style-name=”Default”/>
<table:table-cell table:style-name=”ce5” table:formula=”oooc:=SUM([.C1:.C2])”
office:value-type=”float” office:value=”37”>
<text:p>
37.00
</text:p>
</table:table-cell>
<table:table-cell table:style-name=”ce7” table:formula=”oooc:=SUM([.D1:.D2])”
office:value-type=”float” office:value=”12.3333333333333”>
<text:p>

13
Login Internet Expert n.66 Novembre/Dicembre 2007
speciale ODF/OOXML

LISTATO 3

12.33
</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name=”ro2”>
<table:table-cell table:style-name=”ce2” office:value-type=”string”>
<text:p>
<text:span text:style-name=”T1”>
Normal
</text:span>
<text:span text:style-name=”T2”>
Bold
</text:span>
<text:span text:style-name=”T3”>
Italic
</text:span>
<text:span text:style-name=”T4”>
Both
</text:span>
</text:p>
</table:table-cell>
<table:table-cell table:number-columns-repeated=”2”/>
</table:table-row>
</table:table>

formattazione di base standard di XML stesso. Inol- l’XML risultante è stato riformattato per motivi
tre alcuni aspetti di OOXML possono essere estrema- di leggibilità aggiungendo solo indentazioni e in-
mente offuscati, come nel caso degli attributi eqn nel terruzioni di riga. Le stesse regole di formattazio-
tag v:f nell’esempio ne e gli stessi metodi sono stati utilizzati su cia-
scun esempio.
“<v:f eqn=”prod @3 21600 pixelWidth”/>”
L’XML formattato estratto da ciascun foglio è stato
riprodotto nel Listato 3 (ODF) e nei Listati 4 e 5
Esempio delle differenze XML tra file (OOXML).
spreadsheet ODF e OOXML Segue un’analisi degli estratti XML.

Come per il precedente esempio del word processing, Si noti che nel foglio di esempio:
è stato esaminato il formato di file di uno spreadsheet.
Di nuovo, in fase di esame, vengono alla ribalta le dif- n Le celle “D1” e “D2” contengono le formule
ferenze tra le filosofie dei formati. “=C1/3” e “=C2/2”
n Le celle “C3” e “D3” contengono le formule
Procedura “=SUM(C1:C2)” e “=SUM(D1:D2)”
n Le date sono in formato inglese (DD/MM/
Per fare ciò, sono state eseguite le seguenti operazio- YYYY)
ni:

1. È stato creato un foglio di calcolo elementare (rap- Analisi dei due esempi
presentato in Figura 2), costituito da due righe
ciascuna contenente un nome, una data, un valo- Il markup XML dei fogli di calcolo è più “complesso”
re e una semplice formula. È stata creata una riga di quello del word processing. Il motivo di ciò è che è
per il totale con il termine “Total” in grassetto e la necessario organizzare i dati in una tabella, costituita
somma dei valori delle rispettive colonne e infine da righe, colonne e celle. Come nel caso precedente,
è stato aggiunto un blocco di testo con una format- quanto è riportato nei listati non è la rappresentazio-
tazione variabile. ne integrale dei file XML ma evidenzia le differenze
2. Il documento è stato salvato sia come file ODF nella filosofia.
(.ods) sia come OOXML (.xlsx).
3. I risultanti file zip sono stati espansi e esplorati
per individuare il “nocciolo” del documento che Tag e denominazione dei tag
quindi è stato estratto.
4. Come nel caso dell’esempio del word processing, Quanto detto nell’esempio del word processing vale

14
Login Internet Expert n.66 Novembre/Dicembre 2007
speciale ODF/OOXML

LISTATO 4

<sheetData> <c r=”D2” s=”2”>


<row r=”1” spans=”1:4”> <f>
<c r=”A1” t=”s”> C2/3
<v> </f>
0 <v>
</v> 4.666666666666667
</c> </v>
<c r=”B1” s=”1”> </c>
<v> </row>
39146 <row r=”5” spans=”1:4”>
</v> <c r=”A5” s=”3” t=”s”>
</c> <v>
<c r=”C1”> 2
<v> </v>
23 </c>
</v> <c r=”C5”>
</c> <f>
<c r=”D1” s=”2”> SUM(C1:C4)
<f> </f>
C1/3 <v>
</f> 53
<v> </v>
7.666666666666667 </c>
</v> <c r=”D5” s=”2”>
</c> <f>
</row> SUM(D1:D4)
<row r=”2” spans=”1:4”> </f>
<c r=”A2” t=”s”> <v>
<v> 12.333333333333334
1 </v>
</v> </c>
</c> </row>
<c r=”B2” s=”1”> </sheetData>
<v>
39235
</v>
</c>
<c r=”C2”>
<v>
14
</v>
</c>

anche per i fogli di calcolo. Brevi nomi di tag in OO- principale dei contenuti dell’XML del foglio. In-
XML significa semplicemente che la specifica è piut- vece ci sono dei riferimenti ad uno speciale file
tosto criptica. Ad esempio, che significa esattamente “sharedStrings.xml”. Se il tipo della cella è text, OO-
quanto segue? XML imposta l’attributo t nel tag c al valore s e il
body contiene un numero che rappresenta l’n-mo
“<c r=”A5” s=”3” t=”s”>” elemento (a partire da zero) di un elenco di stringhe
memorizzate nel file sharedStrings.xml. Il motivo di-
XML è concepito per essere più descrittivo. Benché chiarato alla base di ciò è ridurre la dimensione del
siano i computer che interpretano i file dell’applica- file consolidando le voci testuali duplicate del foglio
zione è agli sviluppatori che è assegnato il compito di di calcolo per risparmiare spazio.
implementare e mantenere le routine. Un più veloce
e più economico deployment e integrazione del for- Il valore della cella (A1) è:
mato si ottiene quando sono chiari i significati del tag
e del nome dell’attributo. Fred

Memorizzazione del testo La rappresentazione ODF è

Una “caratteristica” quasi immediata di OOXML <table:table-cell office:value-type=”string”>


è che non vi è alcun dato “string” o “text” nell’area <text:p>

15
Login Internet Expert n.66 Novembre/Dicembre 2007
speciale ODF/OOXML

LISTATO 5 0
</v>
<sst count=”4” uniqueCount=”4”>
</c>
<si>
<t>
Fred Un’ulteriore “caratteristica” peculiare del trattamen-
</t> to del testo di OOXML è la formattazione inconsi-
</si> stente. Lo stile di formattazione della cella è defini-
<si> to nel tag della cella (il tag c) utilizzando l’attributo
<t> s, che contiene un numero che funge da riferimento
George
</t>
incrociato all’n-mo elemento, a partire da zero, di un
</si> elenco di font definito nel file “styles.xml” (n è il nu-
<si> mero definito nell’attributo s). L’inconsistenza appare
<t> quando si esamina una cella con una formattazione
Total variabile del testo, dove una parte della formattazio-
</t> ne è definita nel tag si del file sharedStrings.xml, ma è
</si> esplicita e non utilizza i riferimenti ai “numeri degli
<si>
elementi font” come avviene nel file principale.
<r>
<t> Il formato ODF è meno complesso in quanto utilizza
Normal solo un attributo style-name che funge da riferimento
</t> incrociato a una tabella di stili. Ciò è consistente in
</r> tutta la specifica ODF:
<r>
<rPr> “<...style-name=»ce5»...>».
<b/>
<sz val=”10”/>
<rFont val=”Arial”/>
<family val=”2”/> Rappresentazione delle date
</rPr>
<t> Il valore della cella (B1) è:
Bold
</t> 3/5/2007
</r>
<r>
La rappresentazione ODF è:
<rPr>
<sz val=”10”/>
<i/> <table:table-cell table:style-name=”ce4” office:
<rFont val=”Arial”/> value-type=”date” office:date-value=”2007-03-05”>
<family val=”2”/> <text:p>
</rPr> 3/5/2007
<t> </text:p>
Italic </table:table-cell>
</t>
<rPr>
<sz val=”10”/> La rappresentazione OOXML è:
<b/>
<i/> <c r=”B1” s=”1”>
<rFont val=”Arial”/> <v>
<family val=”2”/> 39146
</rPr> </v>
<t>
</c>
Both
</t>
</r> Un aspetto importante è il trattamento delle date.
</si> OOXML memorizza le date 5 Marzo 2007 e 2 June
</sst> 2007 come numeri 39146 e 39235, rispettivamente. Si
tratta del numero di giorni a partire dal 31 Dicembre
1899. Tuttavia, vi è un “bug di progettazione” nella
Fred specifica che dice che l’anno 1900 deve essere trattato
</text:p> come anno bisestile, mentre non lo è. Se nel format
</table:table-cell> OOXML viene alterata una particolare impostazione,
la precedente rappresentazione numerica cambia nel
numero di giorni a partire dal 1 Gennaio 1904, evi-
La representation OOXML è tando questo problema.
ODF rappresenta le date 5 Marzo 2007 e 2 Giugno
<c r=”A1” t=”s”> 2007 come “2007-03-05” e “2007-06-02” concordando
<v> con lo standard ISO esistente.

16
Login Internet Expert n.66 Novembre/Dicembre 2007
speciale ODF/OOXML

Ridondanza nelle celle di tipo numerico e data


Il valore della cella (C1) è

23.00
ODF memorizza
sempre il valore nu-
La rappresentazione ODF è
merico come attri-
<table:table-cell office:value-type=”float” office:
value=”23”>
buto
<text:p>
23.00
</text:p>
</table:table-cell>

La rappresentazione OOXML è

<c r=”C1”>
Consistenza con il resto della specifica
<v>
23 La specifica ODF di tabella dei fogli di calcolo è
</v> identica alla definizione di tabella utilizzata nei do-
</c> cumenti di word processing. I tag e gli attributi sono
gli stessi. Infatti, la definizione “Table” si trova una
OOXML memorizza semplicemente il valore nume- sola volta nella specifica e i paragrafi relativi alla ta-
rico di ciascuna cella della tabella a meno che non vi bella del foglio di calcolo e del word processing fanno
sia una formula, nel qual caso memorizza questa e il semplicemente riferimento a questa. Ciò semplifica
risultato della formula. ODF memorizza sempre il il compito di implementazione della specifica oltre
valore numerico come attributo e la rappresentazione a renderla più breve. In OOXML ciò non accade. I
formattata nel body, così come la formula, se esiste, tag, i nomi degli attributi e le strutture sono diversi.
come attributo. Ciò significa che ODF memorizza Ci sono alcune analogie di formattazione di celle che
dati ridondanti. Un’argomentazione alla base di ciò è hanno un formato variabile. Tuttavia, non sono me-
che benché sia un po’ più complicato da creare, è mol- morizzate come parte dei dati della tabella ma nel file
to più facile da leggere. Un programma che analizza “sharedStrings.xml”, rendendo la portabilità in pra-
il foglio di calcolo può estrarre facilmente o il valore tica molto difficile.
o il testo formattato, mentre in OOXML, l’estrazione
del testo formattato è decisamente complicato. L’altra
argomentazione ha a che fare con la consistenza nella Riepilogo delle differenze
specifica, che viene trattata nel prossimo paragrafo.
Una giustificazione al fatto che OOXML ometta que- Le differenze tra i formati riflette le rispettive filo-
sta ridondanza è che fare ciò crea file più grandi. sofie. L’enfasi di OOXML sembra essere posta sulla

LISTATO 6

<config:config-item-set config:name=”ooo:configuration-settings”>
<config:config-item config:name=”PrintPaperFromSetup” config:type=”boolean”>
false
</config:config-item>
<config:config-item config:name=”AddFrameOffsets” config:type=”boolean”>
false
</config:config-item>
<config:config-item config:name=”PrintLeftPages” config:type=”boolean”>
true
</config:config-item>
<config:config-item config:name=”PrintReversed” config:type=”boolean”>
false
</config:config-item>
<config:config-item config:name=”PrintTables” config:type=”boolean”>
true
</config:config-item>
<config:config-item config:name=”LinkUpdateMode” config:type=”short”>
1
</config:config-item>
</config:config-item-set>

17
Login Internet Expert n.66 Novembre/Dicembre 2007
speciale ODF/OOXML

LISTATO 7

<config:config-item-set config:name=”mso:compatability-settings”>
<config:config-item config:name=”SnapToGridInCell” config:type=”boolean”>
false
</config:config-item>
<config:config-item config:name=”WrapTextWithPunctuation” config:type=”boolean”>
false
</config:config-item>
<config:config-item config:name=”UseEastAsianBreakRules” config:type=”boolean”>
false
</config:config-item>
<config:config-item config:name=”AllowTableExpandBeyondMargin” config:type=”boolean”>
true
</config:config-item>
<config:config-item config:name=”EmulateWW8FootnotePlacement” config:type=”boolean”>
true
</config:config-item>
</config:config-item-set>

rappresentazione dei dati che le applicazioni Micro- tuttavia, rappresentare dei vantaggi competitivi di
soft Office utilizzano e sulla riduzione delle dimen- una applicazione rispetto a un’altra, quindi in qual-
sioni dei file per risparmiare spazio e migliorare le che modo tali informazioni devono essere incluse. Se
prestazioni, quella di ODF sull’interoperabilità, la un’applicazione salva i propri dati su un disco locale,
facilità di implementazione e l’accesso ai dati. successivamente, dopo il ricaricamento dei dati, è im-
Il risparmio di spazio nel file di OOXML viene “an- portante che queste impostazioni univoche sulla con-
nullato” dall’algoritmo ZIP del file contenitore che figurazione dell’applicazione vengano mantenute.
i formati utilizzano. Ciò riduce la ridondanza senza Quanto detto significa che è probabile che la rappre-
complicare i formati stessi. Inoltre, i miglioramen- sentazione di un documento sia leggermente diversa
ti in termini di prestazioni dei nomi di tag più cor- quando viene trasferito da un’applicazione all’altra,
ti sono trascurabili rispetto alla risorsa richiesta dal indipendentemente dal formato utilizzato. Tuttavia,
computer per recuperare i dati dal disco, da una sche- ciò non è importante se si considera il fatto che la
da di memoria o dalla rete. stessa applicazione office spesso effettua un rende-
Benché OOXML sia meglio concepito per l’utilizzo ring differente da una versione alla successiva, o an-
con i prodotti Microsoft Office, l’utilizzo di nomi di che che la stessa versione della stessa applicazione
tag significativi, di rappresentazioni esplicite dei dati office in esecuzione sullo stesso sistema operativo
e della consistenza in tutta la specifica renderà ODF effettua un rendering diverso in base alla macchina
più interoperabile e più facile nell’implementazione su cui è in esecuzione. Elementi periferici come i font
del formato in differenti scenari. installati e le differenti stampanti connesse possono
influenzare il rendering.
Impostazioni di configurazione uniche Se è richiesto un rendering preciso di un documen-
to ci sono standard appositi per fare ciò, in modo
Affinché venga adottato un formato aperto, esso particolare PDF. In queste circostanze non andreb-
deve rappresentare il mezzo di default per il salvatag- be utilizzato nessun formato di documento office
gio dei dati per le applicazioni che lo utilizzano. Ciò modificabile.
presenta un problema. Il problema che i progettisti della specifica devono
risolvere è come preservare queste impostazioni spe-
Il problema cifiche alle applicazioni in un formato aperto per file
di documento.
Una programma di manipolazione da ufficio, come
un word processor o un foglio di calcolo, presen- La soluzione di ODF
terà delle stranezze ad esso peculiari. Ad esempio,
Microsoft Word 2003 ha delle opzioni di compati- La soluzione di ODF è l’adozione di una tag di con-
bilità come “Spaziatura automatica come Word 95” figurazione. Un esempio è riportato nel Listato 6. Il
e “Converti caratteri backslash in simboli Yen”. Per particolare parametro di configurazione viene me-
lo stesso motivo, OpenOffice.org 2.0 Writer ha del- morizzato nell’attributo config:name, il tipo del valore
le opzioni per “Utilizzare la formattazione tabstop di del parametro nell’attributo config:type e l’imposta-
OpenOffice.org 1.1” e “Considerare lo stile di ritorno zione di configurazione nel corpo del tag stesso.
a capo nel posizionamento degli oggetti”. Queste op- Come si osserva nel Listato 6, tutti i parametri sono
zioni sono caratteristiche delle rispettive applicazioni anche racchiusi da un tag config-item-set che è speci-
e non hanno alcuna collocazione nell’interoperabili- fico all’applicazione, il che significa che valori config:
tà dei documenti stessi: altre applicazioni corrono il name identici per applicazioni differenti non andran-
rischio di non sapere come interpretarle. Possono, no in collisione.

18
Login Internet Expert n.66 Novembre/Dicembre 2007
speciale ODF/OOXML

Queste impostazioni univoche non hanno significato prio pannello. Benché l’applicazione potrebbe in
per le altre applicazioni, pertanto vengono ignorate teoria memorizzare i nomi dei tag e i valori associati,
quando caricano il documento e sono quindi irrile- non vi è alcun modo garantito di conoscere qual è il
vanti per ciò che concerne la funzionalità. tipo dell’attributo, rendendolo molto più difficile da
Ecco un possibile scenario. In futuro, potrebbe essere presentare e pressoché impossibile da modificare con
fattibile per le applicazioni ODF-compatibili creare qualsiasi validazione.
un pannello di configurazione “generico” o “alieno”
nelle opzioni di impostazione che memorizza e elen- Interoperabilità e impostazioni di
ca semplicemente le impostazioni di configurazione configurazione
incognite che rileva. Il tag stesso indica di che tipo di
impostazione si tratta in una forma leggibile per gli Se Microsoft adottasse ODF per Office, potrebbe
umani, teoricamente quindi modificabile. Quando comprendere tutte le proprie impostazioni univoche
il documento viene salvato per essere trasferito tali nel modo in cui la specifica è definita al momento.
impostazioni potrebbero essere incluse nel file. Ciò L’esempio precedente potrebbe essere rappresen-
significa che se una persona crea un documento, im- tato come mostrato nel Listato 7. Benché queste
posta una propria configurazione dell’applicazione e impostazioni sarebbero comunque aliene ad applica-
poi trasferisce il tutto ad una seconda persona che, a zioni non Microsoft Office potrebbero essere facil-
sua volta, modifica il documento utilizzando un’ap- mente memorizzate e riprodotte nel momento in cui
plicazione diversa, lo salva e glielo restituisce, la pri- il file viene salvato.
ma persona dovrà essere in grado di modificare il file Se OpenOffice.org adottasse OOXML, invece, al mo-
e le impostazioni univoche della configurazione del- mento non vi è alcun modo per cui possa aggiungere
l’applicazione dovranno essere state mantenute. le proprie impostazioni di configurazione utilizzando
lo standard.
La soluzione di OOXML
Conclusioni
OOXML ha scelto questa strada: piuttosto che creare
un tag di configurazione definibile dall’applicazione, Gli standard in genere nascono per garantire l’inero-
esiste un unico tag per ciascuna impostazione. Ecco perabilità e gli standard riguardanti il formato aperto
un esempio: per file di documento non dovrebbero essere diffe-
renti. Lo scopo è che qualcuno nello stato A che lavo-
<w:compat> ra per un’azienda B utilizzando un prodotto C possa
<w:doNotSnapToGridInCell/> scambiare documenti con qualcun altro di uno stato
<w:doNotWrapTextWithPunct/> D che lavora per una compagnia E utilizzando un
<w:doNotUseEastAsianBreakRules/> prodotto F senza preoccuparsi di chi o cosa A, B, C,
<w:growAutofit/> D, E, F rappresentino in realtà. Semplicemente, tutto
<w:footnoteLayoutLikeWW8/> funziona, senza bisogno di preoccuparsi se un singolo
</w:compat> produttore continuerà o meno ad investire nello svi-
luppo della propria office suite, poiché potrà comun-
Ci sono ben oltre un centinaio di questi tag definiti que essere adottato un qualsiasi altro software di altro
nella specifica. produttore al suo posto.
Benché la versione di OOXML a giudicare dalle
apparenze sembri più semplice, introduce ulteriori ODF è stato creato utilizzando gli standard esistenti,
complicazioni per l’adozione dello standard. Attual- pensando all’interoperabilità, attraverso consultazio-
mente, le sole impostazioni univoche all’applicazione ne pubbliche e lunghi periodi di progettazione per
contemplate sono quelle applicazioni che gli autori raggiungere lo scopo prefisso. I benefici di questo
dello standard hanno deciso di includere, quelle delle metodo sono evidenti se si esaminano i formati risul-
suite Microsoft Office. Affichè altre applicazioni sia- tanti stessi, implementati da un vasto numero di pro-
no aggiunte, nella specifica dovrebbero essere definiti dotti office la cui lista sta ancora crescendo.
ulteriori nomi di tag, creandone potenzialmente mi- OOXML è stato progettato da un solo produttore,
gliaia e ciascuno non avrebbe nulla a che vedere con Microsoft, senza consultazioni pubbliche o input in
l’interoperabilità. fase di progettazione. È stato concepito per coesistere
Un nuovo produttore di applicazioni potrebbe risol- con i formati utilizzati dai prodotti proprietari.
vere ciò concependo in modo unilaterale dei propri
nomi di tag “fatti in casa” e utilizzando questi. Tut- Avendo esaminato i formati è difficile stabilire una
tavia questi tag corromperebbero la specifica. Inoltre, ragione tecnica per la quale i documenti di Micro-
siccome la specifica non definisce un metodo per po- soft Office non possano essere salvati e modificati
sizionare questi tag in un tag contenitore, creare dei usando ODF con un’affidabilità del 100%. ODF ha
propri tag potrebbe portare a una possibilità di colli- caratteristiche in grado di trattare tutti i “cavilli”
sione con altre applicazioni. di Microsoft Office, anche quelli del tipo “footnote-
Inoltre, per un’applicazione sembra non esista alcun LayoutLikeWW8”. OOXML al suo stato attuale non
modo ovvio di utilizzare OOXML per visualizzare è in grado di manipolare applicazioni diverse da Mi-
impostazioni di configurazione “aliene” in un pro- crosoft Office.

19
Login Internet Expert n.66 Novembre/Dicembre 2007
speciale ODF/OOXML

È mia opinione che le particolarità Microsoft in OO- http://www.groklaw.net/staticpages/index.php?pa


XML, insieme al fatto che la specifica sia lunga oltre ge=20051216153153504.
6000 pagine, ostacoleranno l’abilità delle altri parti [8]: Microsoft Non Assertive Contract can be
di sviluppare prodotti che possano leggere e manipo- viewed at http://www.microsoft.com/interop/osp/
lare documenti in questo formato rendendo difficile default.mspx.
in partica lavorare con esso a livello di standard uni- [9]: Sito web dell’ECMA
versali. http://www.ecma-international.org/
[10]: ECMA “Office Open XML Overview”
Riferimenti e note http://www.ecma-international.org/news/TC45_
current_work/OpenXML%20White%20Paper.p
[1]: OASIS document Open by Design df
http://www.oasis-open.org/committees/
download.php/21450/oasis_odf_advantages_ [11]: GrokDoc OOXML Objections: http://
10dec2006.pdf. www.grokdoc.net/index.php/EOOXML_objec-
[2]: OpenDocument Format version 1.0 tions
http://www.oasis-open.org/committees/ [12]: Open Malaysia: http://www.openmalaysiablog
download.php/12572/OpenDocument-v1.0- .com/
os.pdf.
[3]: Lista aggiornata applicazioni ODF
http://opendocumentfellowship.org/applications.
[4]: OpenDocument Format version 1.1
http://docs.oasis-open.org/office/v1.1/OS/
OpenDocument-v1.1.pdf. Note Biografiche
[5]: Descrizione dell’OpenDocument Format adoption Edward Macnaghten è stato un programmatore professionista,
http://en.wikipedia.org/wiki/OpenDocument_ analista e consulente per oltre 20 anni. La sua esperienza
adoption. lavorativa riguarda lo sviluppo di software per varie industrie
[6]: Microsoft’s «Patent License» di differenti ambienti tecnici in Europa, Asia e USA.
Attualmente è consulente specializzato in soluzioni free
http://www.groklaw.net/article.php?story=200503
software in Cambridge.
30133833843#A4.
[7]: Storia documentata

20
Login Internet Expert n.66 Novembre/Dicembre 2007
“Si fa presto a dire sito web”
di Paolo Frattini
Anno 2007
54 pagine a colori, formato A4
ISBN 9788881500222

solo
12,90
Eu ro

Fai il make-up al tuo sito web


con l’ultimo libro di Paolo Frattini

, t r u c c h i e c o n s i gli
Scopri regole e rnet
m u n ic a r e v i a I n t
per co

“Si fa presto a dire sito web”


Ordinalo su

www.shopinfomedia.com
cutting edge

Il modo più semplice


per creare database in
OpenOffice.org

Se disponete di dati organizzabili in un foglio di calcolo, un database è a soli


pochi passi di distanza.

Ü di Solveig Haugland

Dovete creare un database, ma temete che sia co che mostra il numero medio di articoli per
troppo complicato o non avete gli strumenti ordine che i vostri clienti hanno acquistato
adatti? Niente paura: è facile, gratuito e an- durante le festività.
che utile. Utilizzate la suite office gratuita
OpenOffice.org per utilizzare i vostri dati in
attività di mailmerge, interrogazioni o utili Che tipo di database creare?
analisi della vostra attività.
Una volta deciso di creare un database, la
strada da seguire sembra semplice. Da menu,
Qual è il problema nel creare un basta scegliere:
database?
File à New à Database
Non tutti hanno necessità di un database.
Ma, prima o poi, chiunque debba tener trac- Tuttavia, rimane un’ultima questione da af-
cia e recuperare informazioni importanti ne frontare: che tipo di database creare? Con-
trarrà un vantaggio dall’averne uno. I data- nettersi direttamente al proprio database
base servono a memorizzare dati, natural- Oracle (questa è la strada migliore solo se
mente, ma il vantaggio è nel permettervi di siete o avete a disposizione un “guru” su
estrarre i dati che ci servono e nel visualiz- Oracle)? Esplorate alcune delle scelte più
zarli o stamparli nel modo in cui si vuole. Ad semplici come i fogli di calcolo oppure, se
esempio, una volta che si ha un database, si siete ben informati o dei medium, scegliete
possono, ovviamente, organizzare dei mai- l’opzione (del tutto invisibile) di importazio-
ling con il mailmerge: che si tratti di una ne dei dati esistenti?
lettera a ciascuna delle 500 persone che avete
incontrato a una conferenza sul software free Se siete un nume dei database e vi va di spen-
o di stampare le etichette per ciascuno degli dere del tempo concentrati su un database …
870 backup legali dei DVD che possedete. I beh, si può fare qualsiasi cosa si voglia. Se si
database sono anche necessari per l’imposta- vogliono ottenere i maggiori risultati con le
zione di form di inserimento dati o di visua- minori difficoltà, ecco le due soluzioni che
lizzazione dei dati; per la creazione di rela- raccomando.
zioni tra le tabelle in modo possiate stampare
i dati collegati, o per la creazione di un elen- n Mettete i dati in un foglio di calcolo, poi

22
Login Internet Expert n.66 Novembre/Dicembre 2007
cutting edge

FIGURA 1 Completamento del database

creare un file di database che può leggere il foglio semplice.


di calcolo. È una soluzione semplice e se non ave-
te necessità di caratteristiche database avanzate, è 1. Scegliete File à New à Database.
tutto ciò che vi serve.
n Mettete i dati in un foglio di calcolo e incollateli 2. Nella prima finestra, selezionate Existing Data
in Base per creare un database Base nativo. Ciò ri- Source e come tipo Spreadsheet. Premere “Next”.
chiede leggermente più lavoro ma vi dà un bel po’ 3. Nella finestra successiva, inserite il percorso com-
di potenza in più. pleto (qui ho mostrato solo il nome del file) dello
spreadsheet da utilizzare. Premere “Next”.

Creazione di un semplice database che si


connette ad un foglio di calcolo 4. Lasciate le checkbox selezionate. Non è necessario
modificare il database ma la prima volta, almeno,
L’approccio più semplice è creare un file database è buona regola dare un’occhiata a come appare la
OpenOffice.org che punta a un foglio di calcolo zep- finestra principale del database stesso. Premere
po di dati. Il foglio di calcolo non ha la potenza per “Finish” (Figura 1).
eseguire dei mailmerge e altre caratteristiche tipiche
dei database che ho menzionato prima, ma il file da- 5. Attribuite un nome al database. Questo nome ver-
tabase che punta ad esso può certamente farlo. Il file rà utilizzato quando si eseguiranno dei mailmerge
database si comporta come intermediario a cui dire “I ed è il nome e la posizione da specificare quando
dati sono lì, con questi campi, vai a prenderli”. si vuole utilizzare il database (come creare query o
Se non avete già i dati in un foglio di calcolo, potete report). Premere “Save”
inserirceli abbastanza facilmente. Li dovrete impo-
stare in modo che siano disposti con le etichette dei 6. Apparirà il database. Cliccate l’icona Tables sulla
campi in alto e con ciascun blocco di dati separato. sinistra e selezionate il nome di una tabella. Cia-
scun foglio del proprio spreadsheet che contiene
Ora siete pronti a creare il database. È abbastanza i dati diventerà una tabella. A questo punto, sul-

23
Login Internet Expert n.66 Novembre/Dicembre 2007
cutting edge

FIGURA 2 Visualizzazione del file database che si connette al foglio di calcolo

la destra, invece di “None”, selezionate “Docu- e utilizzare il wizard.


ment”. Si vedranno i dati nello spreadsheet (Figu-
ra 2). Creazione di un database Base nativo
Non c’è altro da fare. Tuttavia ecco qualche altra in- Se si desidera tutta la potenza che Base può fornire
formazione. e non si ha a disposizione Access o Oracle o un altro
motore a cui connettersi, allora si dovrà creare un da-
Aggiornamento dei dati tabase nativo. L’inizio del procedimento è simile, ma
con molti passi extra per definire le tabelle e per in-
Quando si hanno altri dati, basta aggiungerli allo serire i dati.
spreadsheet. Se si vogliono più tabelle, basta aggiun-
gere i dati in un nuovo foglio dello spreadsheet stes-
so. Creazione del database

Cosa non si può fare con questo tipo di 1. File à New à Database
database
2. Nella prima finestra, scegliere di creare un nuovo
Ci sono alcune caratteristiche che non sono disponi- database. Premere “Next”.
bili ma che potrebbero essere necessarie. Ad esem-
pio, non si possono utilizzare le funzioni che possono 3. Lasciare le checkbox con le selezioni di default e
indicarvi, per ogni fattura, quale è stata in media la premere “Finish”.
quantità totale nella fattura. Non si possono creare
form per l’immissione dei dati. Non si può eseguire il 4. Attribuire un nome al database e premere “Save”.
join di due tabelle per mettere in relazione i dati. Ma
si possono creare query e report e form di visualizza- 5. Appare il database (Figura 3).
zione dei dati. Per creare il form cliccare l’icona For-
ms sulla sinistra della finestra di editing del database

24
Login Internet Expert n.66 Novembre/Dicembre 2007
cutting edge

FIGURA 3 Il database Base nativo (senza tabelle)


n Da file CSV: in OpenOffice.org sce-
gliere File/Open. Nell’elenco File Type
della finestra Open, selezionare “Text
CSV” (cliccare nell’elenco e premere
il tasto “T” quattro volte). Seleziona-
re il file CSV e cliccare “Open”. Nella
finestra che appare, verificare che le
impostazioni dei dati siano corrette, poi
premere OK.

n Da Excel: basta aprire il foglio di cal-


colo in OpenOffice.org (Figura 4 e Fi-
gura 5).

2. Assicurarsi che i dati siano imposta-


ti correttamente. Accertarsi che siano
presenti le intestazioni dei campi, che
i dati siano abbastanza granulari, ecc.
Se non si ha un campo chiave primaria
univoco, ad esempio un campo ID, non
preoccupatevi: se ne può creare uno al
volo mentre si aggiungono i dati.

3. Nel foglio di calcolo, copiare i dati


comprese le intestazioni.

4. Passare al file database e cliccare


l’icona Tables sulla sinistra.
Creazione delle tabelle e inserimento dei dati
5. Nell’area Tables, clic destro e scegliere Paste.
Ci sono modi ben noti e tradizionali per creare le ta-
belle. Si può farlo nella vista di progettazione o uti- 6. Nella finestra che appare, digitare un nome per la
lizzando il wizard. Questo
articolo serve però a indicar-
vi come ottenere il massimo FIGURA 4 Specifica del formato Text CSV in modo che il file
“a parità di prezzo”. Pertan- verrà aperto in un foglio di calcolo
to, passo direttamente a de-
scrivere il modo più facile e
invisibile. Questo modo è un
vantaggio solo se si hanno i
dati già pronti da qualche
parte: in un altro database,
in un file CSV, in un foglio
di calcolo Excel o Calc di
Openoffice.org, o anche in
una grossa tabella HTML.

1. Mettere i dati in un fo-


glio di calcolo. Si pos-
sono esportare i dati dal
proprio database in un
foglio di calcolo o in un
file CSV o copiarli da una
tabella HTML, se non
sono già memorizzati in
uno di questi formati.

n Da HTML: copiare la ta-


bella, poi cliccare in una
cella di un foglio di cal-
colo e incollare.

25
Login Internet Expert n.66 Novembre/Dicembre 2007
cutting edge

FIGURA 5 Verifica delle impostazioni di conversione del file di testo sulla destra scegliere
“Document” invece
di “None” e si ve-
dranno i dati. Chiu-
dere il database e
salvare le modifiche
(Figura 6).

È tutto: a questo pun-


to si ha un database
Base nativo perfetta-
mente funzionante
con una tabella. Si
possono creare vi-
ste, relazioni, form
di dataentry, report,
scrivere query SQL
sui dati, e qualsiasi
altra cosa che Base
fornisce.

Aggiunta di
ulteriori tabelle o
pasting dei dati in
una definizione di
tabella
Basta ripetere il pro-
tabella e scegliere di aggiungere sia i dati sia la de- cesso di pasting con un altro insieme di dati.
finizione, o solo la definizione se si intende modi-
ficare notevolmente la definizione della tabella. Si
può anche scegliere
di creare un nuovo
campo che fungerà FIGURA 6 Visualizzazione e salvataggio della tabella e del database
da chiave primaria.
È buona idea in-
collare prima solo
la definizione, se
si vuole impostare
uno dei campi che
si stanno incollan-
do come chiave pri-
maria. Quindi in-
collare nuovamente
ma solo i dati.

7. Aggiungere i cam-
pi che si vogliono
inserire nella ta-
bella, poi premere
“Next”.

8. Apportare le even-
tuali modifiche
alle definizioni dei
campi. Cliccare
“Create”.

9. La tabella apparirà
nel database. Sele-
zionare la tabella e

26
Login Internet Expert n.66 Novembre/Dicembre 2007
cutting edge

FIGURA 7 Modifica delle definizioni della tabella sia per l’inseri-


mento dei dati.

Sottolineerei che
con tutti i dati
bisogna essere
certi che siano
impostati cor-
rettamente nel
foglio di calcolo
prima di incol-
larli. Accertatevi
che i nomi del-
le colonne siano
corretti e che i
dati siani suf-
ficienetemente
granulari. Inol-
tre, sembra che
la creazione della
chiave primaria
nella prima fine-
stra del wizard,
quando viene ri-
chiesto, è il solo
modo per farlo.
Se in seguito si
Modifica della definizione della tabella vuole modifi-
carla, non si può fare, perché la tabella contiene già
Cliccare con il tasto destro sul nome della tabella e i dati. Un modo per aggirare questa limitazione po-
scegliere “Edit”. trebbe essere di incollare prima solo la definizione,
non impostare l’ID come chiave primaria quando
Si vedrà quindi la vista di progettazione, in cui si pos- viene richiesto e poi impostare il campo appropriato
sono modificare alcuni aspetti della definizione. Ad come chiave primaria modificando la definizione del-
esempio, per creare un campo auto-valore, basta ren- la tabella. Successivamente, incollare i soli dati.
derlo di tipo Integer e poi in basso nell’area di lavoro
scegliere “Yes” per AutoValue (Figura 7).
Conclusioni
Se si vuole modificare la chiave primaria, cliccare con
il tasto destro sul campo che si vuole rendere chia- Questo processo sottolinea un concetto generale sul-
ve primaria e selezionare Set Primary Key. Nota: ciò le caratteristiche avanzate di OpenOffice.org: in so-
funziona solo se si sta incollando solo la definizione, stanza, molte cose sono possibili ma non altrettanto
non la definizione e i dati. ovvie. Se non vedete un pulsante o una checkbox re-
lativa a qualcosa nell’interfaccia, ciò non significa che
non sia possibile. Continuate a cercare.
Aggiornamento dei dati
Versione italiana pubblicata su licenza di The Open Mind
Per aggiungere i dati, incollare i nuovi dati nello stes- Company
so modo utilizzato prima: selezionare i dati e sceglie-
re “Paste”. Nella finestra che appare, basta scegliere
Note Biografiche
“Append data” e ripetere le stesse scelte già fatte pri-
ma. Solveig Haugland ha lavorato per 16 anni come formatrice,
sviluppatrice di corsi e scrittrice tecnica per l’industria
In alternativa, fare doppio clic sul nome della tabella high-tech (Microsoft Great Plains, Sun Microsystems,
BEA). Attualmente, è un’istruttrice e scrittrice di StarOffice
e modificare o aggiungere i dati digitando.
e OpenOffice.org. E’ anche co-autrice, insieme a Floyd
Jones, di tre libri: Staroffice 5.2 Companion, Staroffice 6.0
Un ulteriore approccio, se è necessario effettuare Office Suite Companion and OpenOffice.Org 1.0 Resource
molti aggiornamenti, è creare un form di data-entry. Kit, pubblicati da Prentice Hall PTR. Il suo quarto
Cliccare l’icona Forms sulla sinistra dell’area di mo- libro, OpenOffice.org 2.0 Guidebook, è disponibile su
difica del database e utilizzare il wizard dei form per Amazon.come e su Cafepress, Per avere suggerimenti su come
creare il form. Assicuratevi di indicare, quando viene utilizzare OpenOffice.org o StarOffice, è utile visitare il suo
richiesto, che il form serve sia per la visualizzazione blog: http://openoffice.blogs.com

27
Login Internet Expert n.66 Novembre/Dicembre 2007
“Algoritmi Genetici in .NET”
di Fabio Fabozzi
Anno 2008
100 pagine, formato 17x24 cm
ISBN 9788881500314

solo
15,00
Euro

Perchè scrivere un libro dedicato agli AG?


Anzitutto, per la necessità di sottolineare l’esigenza di un approccio diverso alle scienze delle computazioni
mentali.
Non si può ignorare il fatto che la nostra struttura biologica e l’interazione tra le persone e gli oggetti presenti
nell’universo che ci circonda abbiano delle connotazioni che sfuggono dal calcolo sublime o da promettenti
simulazioni meccanicistiche.
La natura è ciò che è: difficilmente prevedibile. Ma se ci si chiedesse, o se ci si ponesse in grado, di avvicinarsi
con una certa accuratezza alla natura e con una certa approssimazione, allora le applicazioni che si vogliono
imporre come “intelligenti” potrebbero presentare un certo grado di accuratezza o essere “verosimili”, rispetto
alla realtà che ci circonda.
Nonostante possa apparire come una sorta di utopia scientifica, in realtà si tratta di una questione di osser-
vazione tra ciò che è l’osservatore e ciò che è osservato. È la loro interdipendenza che crea una dinamicità
irripetibile.
Gli AG rappresentano un modo di fare scienza presuntuoso e anche corretto, per il numero di problemi che si
possono risolvere attraverso essi; perchè? La risposta è semplice: si tratta di una scienza che tiene in pregio
un concetto molto importante; si tratta cioè di conoscere “la storia” di un sistema che si sta studiando e la sua
evoluzione nel tempo ed in che modo accadrà tale possibile evoluzione.
Spero che l’utilizzo dei linguaggi VB.NET e C#, impiegati nella realizzazione degli esempi di questo libro, ne
faciliti la diffusione.

“Algoritmi Genetici in .NET”


Ordinalo su

www.shopinfomedia.com
solutions

Il pattern MVC
e le librerie DisplayTag
Prima Parte

Le librerie displaytag semplificano la rappresentazione di dati in strutture tabellari nelle


applicazioni web oriented.

Ü di Luigi Santangelo

Inizia qui una serie di articoli finalizzati ad


illustrare le modalità di sviluppo di un ap-
plicativo enterprise web oriented basato sul
pattern MVC e sulle librerie DisplayTag. Il
pattern MVC definisce una metodologia di Ilpattern MVC se-
sviluppo basata su tre componenti principali
fondamentali: il Model, le View e il Control- para il business layer
ler. Le librerie DisplayTag invece consento-
no allo sviluppatore una elevata flessibilità
dal presentation e
nello sviluppo del presentation layer quan- dal control layer
do si lavora con dati che devono essere rap-
presentati in un data grid. In questo primo
articolo, dopo aver approfondito il pattern
MVC e la filosofia su cui questo si basa, verrà
analizzata la struttura di una applicazione il
cui mero scopo è quello di mostrare l’utilizzo
pratico del pattern e delle librerie.

ha indotto l’ingegneria del software ad in-


Pattern ed MVC dividuare soluzioni progettuali ottimali per
problemi ricorrenti. Questi modelli, comu-
La rapida crescita in numero e in complessi- nemente definiti pattern, sono rappresen-
tà degli applicativi e il conseguente aumento tati da uno schema logico che descrive una
della difficoltà nella relativa manutenibilità soluzione generale ad un problema di pro-
a cui abbiamo assistito negli ultimi anni, gettazione comune, astraendo però dai det-

29
Login Internet Expert n.66 Novembre/Dicembre 2007
solutions

FIGURA 1 Le componenti del pattern MVC Quando si sviluppano questo tipo di applicativi è per-
tanto necessario che siano rispettati certi requisiti:

n I sistemi, seppure differenti nel presentation layer,


devono fare accesso al medesimo data layer;
n I dati devono potere essere aggiornati indipenden-
temente dal tipo di interfaccia utente;
n Il supporto di molteplici tipi di view e di intera-
zioni non deve entrare in conflitto con le compo-
nenti che forniscono le funzionalità core dell’ap-
plicazione enterprise.

Attraverso il pattern MVC si separa il business layer


tagli implementativi (quale ad esempio il linguaggio dal presentation e dal control layer, permettendo in
di programmazione utilizzato). Il termine pattern in questo modo a molteplici view di condividere lo stes-
informatica fu introdotto per la prima volta nel libro so data layer.
Design Pattern: Elementi per il riuso di software ad og-
getti di Erich Gamma, Richard Helm, Ralph Johnson
e John Vlissides i quali divennero talmente citati al Componenti dell’MVC
punto che la comunità scientifica cominciò a identi-
ficarli collettivamente con Gang of Four. I magnifici La Figura 1 rappresenta le componenti del pattern
quattro, nel loro libro, identificano ben 23 pattern Model-View-Controller. Il Model rappresenta i dati
che possono essere utilizzati durante il design del si- e fornisce le regole di business relative all’accesso e
stema (da cui il nome di design pattern). Parecchio all’update dei dati; la View visualizza il contenuto del
importanti, però, sono anche i pattern architetturali, Model (esegue il rendering dei dati), accede ai dati at-
che operano ad un livello diverso (e più ampio) ri- traverso il Model e specifica come questi dati devono
spetto al design pattern. Rientra in questa categoria il essere rappresentati. E’ responsabilità della View fare
famoso pattern MVC, acronimo di Model View Con- in modo che i dati modificati vengano effettivamente
troller. Questo pattern è stato utilizzato per la prima visualizzati nel presentation layer. Questo può esse-
volta durante la costruzione dell’interfaccia grafica re ottenuto tramite un Push Model o un Pull Model.
con Smalltalk allo scopo di convertire in un modello Nel Push Model, alla view viene notificata la modifi-
grafico le tradizionali operazioni di input, processing ca, mentre nel Pull Model la view ha la responsabilità
e output. Ma la sua diffusione più ampia l’ha avuta di chiamare il Model quando ha la necessità di otte-
con Java, in quanto utilizzato su parecchi framework. nere i dati aggiornati. Il Controller, infine, traduce
La filosofia del pattern MVC si basa sulla separazio- l’interazione dell’utente nella View in corrispondenti
ne dei livelli data, business logic, presentation logic azioni comprensibili al Model. In una applicazione
e user interaction di cui si compone una enterprise stand-alone composta da GUI, le interazioni degli
application, allo scopo di ridurre le dipendenze tra i utenti possono essere, ad esempio, il click sui button
livelli e impedendo, di fatto, l’effetto cascata quando o la selezione dei menu, mentre in una web applica-
si apportano modifiche o correzioni al codice in uno tion, le interazioni riguardano richieste HTTP di
dei livelli. GET e POST. Le azioni eseguite dal Model includo-
no attivazione di processi di business o cambiamen-
to dello stato del Model. In base all’interazione del-
Perché è necessario usare il pattern MVC l’utente e dall’azione eseguita dal Model, il Controller
risponde selezionando una View appropriata.
Quando si sviluppa una applicazione che supporta In un sistema web-based sviluppato con la piatta-
una sola classe di utente (e quindi un solo tipo di forma J2EE, le pagine JSP rappresentano le View, le
client), risulta essere più semplice interlacciare l’ac- servlet rappresentano i Controller mentre il Model è
cesso ai dati e la logica di business con la logica di rappresentato dagli Enterprise JavaBean (EJB).
presentation e di controllo. Un simile approccio, co-
munque, è inadeguato quando si sviluppano sistemi
enterprise che invece richiedono differenti classi di Vantaggi/Svantaggi nell’uso del pattern MVC
utente o diversi tipi di client. Si potrebbe allora pen-
sare di sviluppare diversi applicativi, uno per ognu-
no dei tipi di utenti che faranno uso del sistema. Ad n Separazione fra business logic e user interface: l’uti-
esempio, gli utenti generici potrebbero utilizzare un lizzo dello schema su cui si basa il pattern MVC
client web-oriented mentre gli amministratori po- implica la tradizionale separazione fra la logica
trebbero utilizzare un client SWING. Questo però, applicativa (in questo contesto spesso chiamata lo-
pur risolvendo il problema iniziale, introduce il gros- gica di business), a carico del model, e l’interfaccia
so problema della duplicazione di parte di codice in utente, a carico della View e del Controller;
ognuna tipologia di client, con il risultato di raddop- n Riuso del Model: la separazione tra Model e View
piare gli sforzi di sviluppo, mantenimento e testing. permette a molte View di accedere allo stesso Mo-

30
Login Internet Expert n.66 Novembre/Dicembre 2007
solutions

FIGURA 2 Struttura delle directory


dell’applicativo

Un pattern rappre-
senta una soluzione
ottimale a un pro-
blema ricorrente

librerie forniscono un nutrito numero di funzionalità


nonostante la loro semplicità d’uso. E’ possibile sca-
ricare le librerie all’indirizzo http://displaytag.sourcefo-
rge.net. La versione bin include il file displaytag.jar
(contiene le classi taglib), displaytag.tld (contiene i
tag library descriptor) e displaytag.war (contiene la
documentazione e gli esempi che appaiono sul sito
web).

Struttura e obiettivi del progetto


Dopo aver esaminato in dettaglio la filosofia su cui si
basa il pattern MVC, scopo di questa seconda parte è
illustrare una applicazione web oriented sviluppata
nel rispetto della filosofia MVC e quindi l’uso delle
librerie displaytag per il rendering delle informa-
zioni in un formato tabellare. La struttura del file
system della nostra applicazione è illustrata nella
Figura 2.
Esaminiamo per prima cosa il contenuto della di-
rectory web ed src. Esplodendo ricorsivamente il
del. Conseguentemente, la componente Model di contenuto della directory src si nota la presenza di
una applicazione è facile da implementare, testare altre tre subdir: controller, bean e service. Queste ul-
e mantenere; time tre directory e la directory web rappresentano le
n Facile supporto per nuovi tipi di client: per suppor- tre componenti su cui si basa il pattern MVC. La di-
tare un nuovo tipo di client, si può semplicemen- rectory web infatti rappresenta la View, lo strato con
te sviluppare la View adeguata ed eventualmente cui l’utente interagisce e che provvede alla rappre-
qualche Controller e collegarli all’esistente enter- sentazione grafica dei dati del Model. Al suo interno
prise application; sono presenti tutte le pagine jsp e html che si limita-
n Incremento della complessità: questo pattern intro- no a rappresentare graficamente le informazioni. In
duce alcune classi extra in forza della separazione essi non è e non deve essere presente alcuna logica di
tra Model, View e Controller. business. La directory controller invece rappresenta
l’omonimo componente del pattern MVC e contiene
i sorgenti java responsabili di intercettare le richie-
Le librerie DisplayTag ste provenienti dal presentation layer e tradurle suc-
cessivamente in azioni da invocare sul Model. Spetta
Le librerie DisplayTag rappresentano una suite open anche al Controller incapsulare i dati ritornati dal
source di tag scritta in Java che fornisce la possibilità Model in modo che possano essere renderizzati nel-
di rappresentare dati in formato tabellare aderendo le pagine web attraverso le View. Queste ultime dia-
completamente alla filosofia del pattern MVC. Queste logano con il Controller attraverso l’oggetto request

31
Login Internet Expert n.66 Novembre/Dicembre 2007
solutions

LISTATO 1 Importare le librerie in JSP1.1

<taglib>
<taglib-uri>http://displaytag.sf.net</taglib-uri>
<taglib-location>/WEB-INF/displaytag-{taglibversion}.tdl</taglib-location>
</taglib>

delle pagine jsp, tramite il quale avviene lo scambio in WEB_INF e aggiungere il codice del Listato 1 in
di parametri e di oggetti. La directory service, invece, web.xml.
rappresenta il Model. Contiene una serie di file java
che implementano la logica di business dell’applica-
zione, accedono ai dati e ritornano le informazioni, Modifiche all’applicativo e deploy
sotto forma di oggetti, al Controller. In una applica-
zione di business, queste classi potranno fare acces- È possibile apportare modifiche all’applicativo im-
so al data layer, ad esempio, tramite hibernate oppu- portando i sorgenti in un progetto Eclipse: dalla voce
re tramite JDBC. Nel nostro esempio, allo scopo di di menu “File” importare un progetto esistente nel
rendere semplice l’applicativo, i data business non workspace. Come root directory indicare il path della
saranno informazioni permanenti memorizzati su radice della nostra applicazione quindi confermare e
un RDBMS ma semplicemente gestiti attraverso de- ultimare l’operazione. I file sorgenti saranno visibili
gli oggetti Bean (la cui classe è definita nella omoni- nella source folder src.
ma directory). In questo modo abbiamo nettamente Dopo aver apportato modifiche, il progetto dovrà es-
separato la logica di business dal presentation layer, sere compilato. L’utility ant, attraverso il build.xml
realizzando un’applicazione che rispetta la filosofia provvede alla compilazione dei sorgenti java e alla
del pattern MVC. creazione dei file jar, war ed ear. Quest’ultimo, che
La struttura del file system dell’applicativo comun- contiene i primi, dovrà essere successivamente copia-
que contiene anche altre directory, quale la target to dentro la directory deploy dell’application contai-
(che riproduce la stessa struttura della directory src ner. L’applicativo potrà pertanto essere invocato tra-
ma, a differenza di quest’ultima, contiene i binari mite browser all’indirizzo http://localhost:8080/dt_mvc
dei file java) e la directory build utilizzata tempora- dove la porta 8080 rappresenta la porta su cui Jboss ha
neamente da ant allo scopo di creare un unico file ear eseguito il bind.
che verrà poi spostato dentro l’application container.
Ovviamente, saranno necessari anche altri file quale
il file build.xml (letto da ant durante la generazione Conclusioni
dell’ear) e i file descrittori di deploy (application.xml,
jboss-web.xml e web.xml) contenuti dentro la di- È buona norma, nello sviluppo di applicativi com-
rectory deploymentdescriptor, indispensabili per il plessi, l’utilizzo di metodologie standard di program-
deploy su JBoss. mazione la cui assenza potrebbe portare, tra l’altro, a
L’applicazione d’esempio genera una collection di og- un rapido aumento delle difficoltà nel mantenimen-
getti contenenti informazioni su PC rappresentando- to dell’applicativo. L’utilizzo del pattern MVC risul-
li successivamente in una forma tabellare. Per il ren- ta essere pertanto fortemente consigliato durante lo
dering della tabella utilizzeremo le librerie displaytag sviluppo di enterprise application. Nel prossimo ar-
che, a tale scopo, abbiamo inserito in web/WEB-INF/ ticolo vedremo come possiamo utilizzare i tag delle
lib. I file presenti in tale directory, verranno copiati librerie displaytag per rappresentare dati strutturati
da ant all’interno del WEB-INF/lib del file war ge- in formato tabellare.
nerato. Si può notare come dentro la directory web/
WEB-INF/lib sono presenti altre librerie quali

n commons-logging Riferimenti
n commons-lang
n commons-collections http://java.sun.com/blueprints/patterns/MVC-
n commons-beanutils detailed.html
n log4j http://displaytag.sourceforge.net/11/index.html
n itext (opzionale, se si vuole eseguire l’export in
pdf/rtf)
Note Biografiche
In alternativa avremmo potuto inserire queste libre-
rie dentro la variabile d’ambiente CLASSPATH in Luigi Santangelo si occupa di amministrazione dei sistemi
modo da renderli disponibili all’application server. Linux, di network e di sviluppo di enterprise application
Solo nel caso in cui si utilizza JSP1.1 sarà inoltre ne- in Java basati sulla metodologia MDA. Attualmente lavora
presso l’Università degli Studi di Pavia.
cessario copiare il file displaytag-{taglibversion}.tld

32
Login Internet Expert n.66 Novembre/Dicembre 2007
“Architetture Enterprise
Metodologie di disegno e progettazione”
di Alessandro Sinibaldi
Anno 2008
350 pagine, formato 17x24 cm
ISBN 9788881500352

solo
49,00
Eu ro

Se siete tra quelle persone a cui è sempre piaciuto smontare le cose per vedere come sono
fa�e, allora questo libro è per voi. Fare gli archite�, di qualsiasi campo si tra�, vuol dire
cercare di coniugare due aspe�: uno tecnico e uno crea�vo.
Quello tecnico, perché l’archite�o pensa alla stru�ura delle cose, a come sono composte
da par� più piccole e a come queste interagiscono fra loro per far muovere un corpo com-
plesso. Tu�o questo mi è sempre sembrato affascinante. L’aspe�o crea�vo è dovuto al fa�o
che un archite�o, quando è mol� anni che fa il suo lavoro, sviluppa una specie di senso
este�co di quello che fa. Vedere le cose muoversi in armonia ed evolvere è sicuramente
una grossa soddisfazione. L’importante è capire i principi fondamentali del funzionamento,
poi, i pezzi possono essere assembla� in miliardi di modi diversi e dar vita ad un numero,
ancora maggiore, di situazioni e stru�ure diverse. Lo stesso accade ad un archite�o IT.

“Architetture Enterprise”
Ordinalo su

www.shopinfomedia.com
solutions

NetCrunch

NetCrunch è la proposta di AdRem per rispondere all’esigenza di controllo e di verifica


funzionale e prestazionale di una rete.

Ü di Francesco Pentella

L’attuale tecnologia di rete richiede sistemi ste sempre più dedicate, per esempio con-
che permettano di tenere sotto controllo i sente il monitoraggio proattivo, l’inventario
comportamenti funzionali al fine di soddi- hardware e software, la diagnostica TCP/IP,
sfare con maggiori decisioni richieste sem- la cosiddetta reportistica e sistemi d’allar-
pre più stringenti di protocolli nati per for- mi, consente, inoltre, la mappa di routine e
nire all’utenza soluzioni su misura. Queste viste. È garantito il suo accesso tramite web
esigenze necessitano dell’adozione di stru- browser.
menti di monitoring e di verifica che per- Ma AdRem con NetCrunch vuole fornire
mettono di monitorare la rete con le applica- qualcosa in più; infatti, non si limita a con-
zioni ad essa associate. trollare le prestazioni di una rete e la sua
Senza dubbio NetCrunch è uno strumento eventuale disponibilità o la verifica della
che permette di apportare al lavoro quoti- presenza di host, servizi e applicazioni, ma,
diano degli amministratori di rete o di tec- accanto a tutto questo, per le sue diverse at-
nici miglioramenti in termini prestazionali tività fornisce differenti opzioni di notifica
e funzionali per una corretta gestione della (via e-mail, pager, ICQ, SMS o SNMP), log di
rete. eventi e strumenti diagnostici tra cui trace-
La casa AdRem propone di soddisfare la ri- router, bandwidth e port scanner di iTools.
chiesta di monitoraggio proattivo, la sua ve- NetCrunch risulta versatile e configurabile.
rifica in tempo reale, permettendo di indivi- È possibile, per esempio, monitorare le di-
duare e costruire non solo la mappa topologi- pendenze di rete esistenti, disabilitare mo-
ca e fisica di una rete, ma anche di effettuare mentaneamente il monitoring di un nodo o
una scansione guidata dei nodi utilizzando gruppi di questi e personalizzare la repor-
i vari protocolli disponibili quali SNMP e tistica. È compatibile con diversi browser
ICMP. quali internet Explorer (dalla versione 5.5),
FireFox, Mozilla o Netscape.
Caratteristiche di NetCrunch
Il prodotto di casa AdRem risulta installabi-
Il prodotto individua e mappa la topologia di le sia come applicazione sia come servizio. In
una rete, sia essa logica che fisica. NetCrun- aggiunta permette il rescan dei domini Win-
ch dispone di diverse caratteristiche che per- dows e di scegliere il servizio per il testing
mettono di soddisfare applicazioni e richie- della disponibilità del nodo.

35
Login Internet Expert n. 66 Novembre/Dicembre 2007
solutions

FIGURA 1 Un esempio di atlas utilizzando NetCrunch

Se proviamo ad elencare i vari benefici che NetCrun- FreeBSD, HP-UX, Solaris e AIX. È inclusa la pos-
ch è in grado di fornire, allora non possiamo che rag- sibilità di gestione e manutenzione. Esiste la possi-
grupparli in quest’ordine: bilità di avere differenti azioni di monitoring per i
diversi server presenti. Per esempio per server basati
n Consente il monitoring e permette la risposta in su Windows, NetCrunch permette di controllare ogni
tempo reale dello stato dei principali servizi di aspetto dell’analisi delle prestazioni via SNMP con i
rete, per esempio FTP o POP3, e applicazioni contatori associati e la personalizzazione dei grafici
quali Ms Exchange, Oracle, MySQL; delle prestazioni e il confronto tra le variabili di si-
n È integrabile nelle suite di lavoro comunemente stema tra i server.
utilizzate;
n Consente di massimizzare le prestazioni dei siste- È possibile definire differenti livelli di sicurezza e
mi e ne consente la loro identificazione; contatori personalizzati per consentire l’analisi del-
n È perfettamente compatibile con la suite SNMP le prestazioni ed è garantita la possibilità di termina-
nelle sue tre varianti: v1, v2 e v3 ed è possibile zione a comando di processi in automatico, anche in
modificare in remoto e, in automatico, i parametri remoto. E’ possibile analizzarne lo stato per fare dei
SNMP per predisporre azioni correttive. diagnostici mirati e più efficienti e di assegnare una
priorità alle azioni di monitoraggio.
NetCrunch permette il monitoraggio proattivo del-
le reti LAN e WAN. Questo tipo di monitoraggio NetCrunch permette il monitoraggio delle applicazio-
consente di impostare soglie critiche di sicurezza e ni presenti nella rete. Questo tipo di attività si esplica
controllare e generare allarmi per svariati dispositivi attraverso l’esame, in tempo reale, delle prestazioni
presenti nella rete. Le soglie critiche possono riguar- delle varie applicazioni presenti sui server Windows
dare la banda impiegata su ogni dispositivo. Il moni- e NetWare. L’utente, o meglio l’amministratore, può
toraggio, oltre a riguardare gruppi di continuità, può aggiungere nuovi servizi o personalizzare quelli già
essere parametrico su risorse hardware utilizzate nel- presenti quali FTP, HTTPS, SMTP, IMAP e molti
la rete: spazio sui dischi, statistiche dei buffer di me- altri. È possibile tracciare lo stato dei servizi di Win-
moria, utilizzo della memoria rispetto a delle soglie dows e traccia, per ogni applicazione presente nel si-
in precedenza impostate. I dispositivi che possono stema, le prestazioni, tenendo conto degli indicatori
essere monitorati abbracciano tutte le possibili appli- delle applicazioni che supportano le trap SNMP.
cazioni: router, hub, switch, WAP, stampanti.
NetCrunch, infine, permette la visualizzazione del-
Il prodotto consente il monitoring dei server nelle la rete attraverso la scansione guidata dei nodi con
sue differenti accezioni: Unix, NetWare, Microsoft, i protocolli SNMP e ICMP. È possibile definire, in

36
Login Internet Expert n.66 Novembre/Dicembre 2007
solutions

base alle diverse esigenze dell’amministratore di rete, talogo dell’insieme sotto esame. La possibilità di ave-
nuove viste della rete secondo diversi criteri selezio- re sempre sotto controllo l’intero sistema potenzia la
nabili dall’utente, per esempio per nodo, per indiriz- produttività degli amministratori di rete, dei tecnici
zo IP, ruolo aziendale o altre impostazioni. Il tool è in che devono sempre rispondere alle mutate esigenze
grado di effettuare visualizzazioni in base alle dispo- di funzionamento della rete stessa. L’interazione è
sizioni dei nodi delle mappe, fisiche e logiche, di una abbastanza semplice; infatti, con pochi passi, attra-
rete o mappe di routine, dei domini, dei gruppi di verso la sua interfaccia, è possibile estrarre dal tool la
lavoro e secondo l’albero delle cosiddette eDirectory. fotografia in tempo reale delle prestazioni e delle ri-
NetCrunch è abbastanza versatile sotto questo pun- sorse utilizzate in un determinato momento. In que-
to di vista perché permette di identificare e generare sto modo è possibile rimuovere o estrarre singoli di-
mappe per differenti sistemi: da Windows a NetWa- spositivi per provare e verificare il comportamento in
re, da HP-UX a Solaris, da 3Com switches alle stam- tempo reale. La particolarità di disporre di differenti
panti. atlas, uno per configurazione, permette di tenere sot-
to controllo la rete stessa.

Prestazioni e report La Figura 1 presenta una esempio di un possibile


atlas ricavato da NetCrunch.
Questa prerogativa di NetCrunch è importante e utile
per il lavoro di amministratore e manutentore della
rete. Il prodotto fornisce la possibilità di gestire e uti- La distribuzione
lizzare i report, di generare grafici e viste per l’analisi
dei contatori di sistema in tempo reale, o l’analisi sto- NetCrunch è distribuita in due versioni: Premium
rica dei parametri e delle prestazioni dei server, ser- XE e Premium. Nel Riquadro 1 troviamo informa-
vizi o dispositivi. Inoltre, il tool permette di associare zioni più precise sui requisiti di sistema che il pro-
una schedulazione temporale per la generazione dei dotto richiede per una sua corretta installazione.
report. Infatti, può accadere di inviare dei report a
scadenza prefissata (giornaliera, settimanale o mensi- L’edizione Premium XE, oltre ad offrire tutte le pre-
le) a utenti, via e-mail per esempio, con un determi- rogative della versione Premium, include altre carat-
nato profilo. teristiche che lo rendono veramente interessante per
NetCrunch dispone, inoltre, di un apposito tool, inte- quelle applicazioni che richiedono maggiori control-
grato con l’ambiente di lavoro, utilizzato per la crea- li. Per esempio, la versione XE permette una mag-
zione di template per i report. La documentazione as- giore copertura in termini di nodi, nell’ordine delle
sociata può essere esportata su differenti formati. migliaia.
La reportistica può essere utilizzata per le diverse I due prodotti di casa AdRem sono licenziati per nu-
esigenze di lavoro (ad esempio, per definire la piani- mero di stazioni di controllo; un’unica licenza per-
ficazione di nuovi acquisti). In questo senso, i report mette di monitorare un numero illimitato di nodi,
rappresentano un valido aiuto per il relativo processo servizi e reti in tutti i loro aspetti: CPU, interfacce
decisionale. di rete, contatori delle prestazioni, contatori virtuali,
server, database, hub, router e tutti i sistemi che sono
compatibili con SNMP.
Gestione degli eventi
La versione XE è stata pensata per sfruttare al mas-
NetCrunch consente la gestione ottimale degli even- simo il multithreading e le alte prestazioni di server
ti e delle notifiche. Questi possono basarsi sulle trap dedicati. L’edizione Premium è in grado di funzio-
SNMP o messaggi di syslog. Le notifiche possono ri- nare egregiamente anche su macchina non dedica-
guardare lo stato di degrado delle prestazioni o avvi- ta (per esempio su macchina con sistema operativo
sare su situazioni impreviste. Esiste la possibilità di Windows XP) e permette di controllare alcune cen-
definire azioni automatiche programmate per ripri- tinaia di nodi.
stinare le condizioni di lavoro.
La versione XE è specifica per sistemi operativi x64,
Atlas o l’arte della collezione consente il monitoraggio prioritario e la dipenden-
za tra i nodi della rete, prevede la soppressione degli
Sotto questo termine si identifica una collezione di eventi ridondanti; per quanto riguarda la topologia
oggetti e informazioni acquisite durante la procedu- fisica risulta essere compatibile con CISCO CDP,
ra di scansione della rete. In quest’operazione si rac- NORTEL, è possibile esportare, in modo schedula-
colgono diverse informazioni utili per identificare al to, i dati del monitoraggio verso un RDBMD esterno
meglio lo stato del sistema: dati sul tipo e la locazio- (per esempio MySQL o Microsoft SQL database).
ne degli apparati di rete, sulla topologia logica, dati a
riguardo dei segmenti fisici delle LAN, le viste dina- Un’altra funzionalità che prevede il prodotto è la va-
miche, le mappe, i servizi o informazioni sulle appli- riante Web Access. Attraverso AdRem Web Access è
cazioni presenti. possibile accedere al prodotto mediante web browser
L’insieme di queste informazioni costituiscono il ca- alla macchina server NetCrunch, per la visualizzazio-

37
Login Internet Expert 66 Novembre/Dicembre 2007
solutions

Riquadro 1 Requisiti di sistema

Per apprezzarne pienamente le caratteristiche, è necessario installare NetCrunch su macchine server


dedicate.I requisiti del sistema dipendono dalle necessità della nostra applicazione, per esempio dipen-
dono dai nodi da monitorare.La tabella seguente fornisce delle indicazioni di massima.

Requisiti minimi Requisiti raccomandati

Processori
Intel Pentium 4 o AMD Athlon64 Dual-core Intel Pentium D/Core2 Duo o AMD Athlon64
X2 o faster models

Memoria
512 MB di RAM 1 GB di RAM

Spazio Hard Disk richiesto


100 MB per i file di installazione 100 MB per i file di installazione
200 MB per dati storici ed eventi 1 GB per dati storici ed eventi

Monitor
1280x1024 pixels (SXGA) Widescreen – 1680x1050 pixels (WSXGA+) o maggiori,
True Color (32 bit)
High Color (16 bit)

Web Browser
Internet Explorer 5.5 Internel Explorer 6.0 o superiore, Firefox o Netscape
Firefox o Netscape

Sistema Operativo – NetCrunch 4.x XE


Windows Server 2003 Windows Server 2003
Windows Server 2003 x64 Edition Windows Server 2003 x64 Edition

Sistema Operativo – NetCrunch 4.x


Windows 2000 Windows Server 2003
Windows XP SP2
Windows Server 2003

ne delle mappe e dello stato di tutti i sistemi. L’inter-


faccia grafica è praticamente la stessa del client Win- n N profili con accesso concorrente per tre utenti
dows e, sempre attraverso questa interfaccia, è possi- n N profili con accesso concorrente per un numero
bile profilare gli utenti web. illimitato di utenti
n N profili con un accesso per la versione Premium
Questa possibilità è interessante per chi non è in gra- 100
do di accedere direttamente alla macchina server.
Infatti, l’applicazione permette all’amministratore
di rete di accedere alla macchina server in remoto Questo prodotto risulta disponibile per la versione
quando è impossibilitato a raggiungere la sala dove AdRem NetCrunch Premium e per quella AdRem
il server di controllo è installato. Per questioni di si- NetCrunch XE.
curezza, connessioni di questo tipo avvengono in mo-
dalità protetta. Il profilo AdRem NetCrunch 100 dispone delle stes-
Oltre a questa possibilità, AdRem Web Access è se caratteristiche della versione 4.x Premium. L’unico
l’ideale per le società di consulenza informatica che limite risiede nella possibilità del numero massimo
vogliono fornire servizi di assistenza aggiuntivi ai di nodi monitorabili (100). AdRem rende disponibile
loro clienti; infatti, in questo modo possono accede- un’unica licenza per l’accesso web.
re al server per la visualizzazione della reportistica,
delle mappe e degli eventi delle loro infrastrutture se-
condo profili predeterminati dal client Windows. Un caso pratico
Il prodotto Web Access è rilasciato su diverse solu- Una storia che certamente ci sentiamo di proporre
zioni. è quella che ha come protagonista il Ministero de-

38
Login Internet Expert n.66 Novembre/Dicembre 2007
solutions

gli Interni. Infatti, NetCrunch, grazie alla sua sem- e configurazione.


plicità di utilizzo insieme alla sua molteplicità delle L’uso di NetCrunch ha portato notevoli benefici per il
funzioni disponibili, è stato adottato al Ministero per dimensionamento delle risorse hardware. Per esem-
rispondere alle pressanti richieste di monitoraggio pio, attraverso NetCrunch è stato possibile calcolare
proattivo della rete. l’impatto di una query SQL su processore e memoria
di un server: in questo modo è stato possibile massi-
NetCrunch, facilmente inseribile in qualsiasi ar- mizzare le risorse coinvolte per calibrarne in maniera
chitettura pre-esistente, si introduce in un contesto più efficiente l’uso.
operativo che si basa sulla seguente architettura: rete
Ethernet con dorsale in fibra (1 Gbit) con diramazio-
ni in rame (100 Mbit). I suoi apparati di rete sono Conclusioni
basati su Cisco serie 65xx, sono utilizzati dei firewall
hardware di diversi produttori. Il numero dei server Ho appena appreso che è in corso l’apertura della
presenti superano le 20 unità, mentre i PC client sono sede italiana di AdRem. Questo consentirà alla casa
circa 400. L’ambiente operativo e gli applicativi sono madre di fornire alle aziende italiane un supporto
basati su prodotti Microsoft. I principali servizi del più diretto, preciso e personalizzato. Infatti, avere
sistema sono HTTP, SQL, POP3 e SMTP. una sede italiana permette di conoscere con maggiore
precisione l’esigenza di casa nostra e, nel contempo,
L’uso di NetCrunch in questa rete è stato studiato per testimonia la volontà della casa costruttrice di seguire
monitorare il carico di lavoro dei server di produzio- in maniera più diretta il mercato italiano.
ne nei suoi aspetti prestazionali: processori, memoria
e rete. Non solo, NetCrunch è utilizzato anche per
pesare il traffico di rete degli switch e di alcuni PC Note Biografiche
client. Il controllo viene espletato attraverso un’unica
postazione di lavoro. Francesco Pentella si occupa di sistemi embedded, di
tecnologie di reti, di sistemi in tempo reale e sugli aspetti di
Accanto ai lusinghieri commenti del Ministero, sicu-
security del sistema. Lavora da circa 27 anni nel settore e si
ramente la cosa di maggiore interesse è la totale as- è occupato dalla programmazione assembler all’architettura
senza di problemi di installazione e configurazione: di sistema.Attualmente si occupa di un sottosistema per il
questo testimonia un indubbio aspetto del prodotto controllo di un velivolo ad ala rotante in campo militare.
di casa AdRem, cioè la facilità della sua installazione

39
Login Internet Expert 66 Novembre/Dicembre 2007
solutions

Tips & Tricks per


GNU/Linux
Seconda Parte

Una collezione di suggerimenti e trucchi per il vostro sistema GNU/Linux

Ü di Gary Richmond e Andrew Min

Tilda: un terminale alla Quake per


Gnome
tilda -h
Gli utenti KDE non sono stati i soli a di-
vertirsi con i terminali alla Quake. Nel Di- è anche disponibile una funzionalità a sche-
cembre 2004, Tristan Sloughter (noto anche de: i tasti di accesso sono Ctrl+Shift+T
come “kungfooguru”) ha rilasciato Tilda (nuova scheda), Ctrl+Shift+PageUp (sche-
(chiamato così perché “tilde”, il simbolo “~” da successiva), Ctrl+Shift+PageDown
che spesso è il tasto hotkey dei terminali alla (scheda precedente) e Alt+n (con n che va
Quake, era già stato utilizzato), un emulato- da 1 a 10).
re di terminale GTK+ Quake-style. Come
Kuake e YaKuake, anche Tilda decollò, rag- 3. Come catturare delle videate con
giungendo oltre 12.000 download in 3 anni. Scrot
Tilda fornisce un archivio dei sorgenti tar.gz,
ma molte distribuzioni ne forniscono il Gli “screenshot”: cosa sarebbe Internet senza
package. Una volta installato, bisogna ese- screenshot? Sono onnipresenti e quando si è
guire alla ricerca del più recente software o dell’ul-
tima ISO della propria distro GNU/Linux
tilda -C favorita rappresentano un’opportunità di
ottenere un’anteprima. Ci sono molti modi
per configurarlo, per poi eseguire Tilda con per catturare una videata e gran parte degli
il comando tilda. Le opzioni sono disponi- utenti KDE e Gnome avranno certo familia-
bili con rità con i tool GUI nativi forniti: Ksnapshot

41
Login Internet Expert n.66 Novembre/Dicembre 2007
solutions

FIGURA 1 Tilda

di KDE e Take Screenshot di Gnome sono strumenti Non ci lanceremo in un confronto dettagliato dei tool
validi per ciò che fanno. Tuttavia, talvolta è necessa- di cattura screenshot disponibili, grafici o a riga di
rio catturare degli screenshot in modo rapido senza comando. È sufficiente che, alla fine di questo artico-
alcun overhead (specialmente se si sta utilizzando un lo, riesca a dimostrare la potenza e l’utilità di Scrot:
windows manager “leggero” su una macchina con nonostante sia un tool a riga di comando, offre al-
prestazioni relativamente povere). In tal caso, si può l’utente un eccellente tool di cattura screenshot con
utilizzare “Scrot”. potenti opzioni che si adattano a gran parte delle ne-
cessità. Per visualizzare i comandi che Scrot supporta
basta digitare da terminale man scrot.
Benvenuti in Scrot
Scrot (SCReenshOT) non sarà probabilmente prein- Modalità di esecuzione di Scrot
stallato nella propria distro; pertanto, come sempre,
è il caso di una rapida visita ai vari repository di sof- Scrot è un tool a riga di comando (è scritto in C e
tware. Se con ciò non si ottiene alcun risultato sare- utilizza la libreria imlib2); pertanto è ovvio che lo
mo in grado di scaricare un tarball del sorgente o una eseguirete in una finestra console da una sessione X-
versione binaria precompilata dal sito ufficiale http: windows.
//www.linuxbrit.co.uk/scrot/. Sennò si può sempre Ho constatato che per poter ottenere rapidamente de-
ottenerlo da Klik (http://www.scrot.klik.atekon.de/) gli screenshot e per evitare di alternare l’utilizzo di
che lo installerà per un’ampia gamma di distro. Ba- mouse e tastiera, sia utile aver installato YaKuake, di
sta seguire le istruzioni sul sito Web per consentire ai cui si è parlato prima. Una volta installato e esegui-
browser Konqueror e Firefox di utilizzarlo. to, la finestra terminale può apparire e sparire molto

42
Login Internet Expert n.66 Novembre/Dicembre 2007
solutions

Si decolla!
Non solo la NASA può eseguire un lancio con un
conto alla rovescia. Se vi piace sfruttare le caratteri-
SLAX è perfetto stiche più avanzate dei programmi, si può eseguire
un’elegante funzionalità di conto alla rovescia ag-
per mostrare la po- giungendo un semplice parametro a questo comando.
tenza di GNU/Linux Basta digitare:

ai propri amici sen- scrot -d 15 -c desktop.png

za modificare le e si può provare l’ambiguo piacere di osservare Scrot


che ostenta la propria competenza in fatto di nume-
impostazioni dei loro ri.
computer Il tempo di ritardo che andrà a impostare dipenderà
dalla semplicità o dalla complessità dello screenshot
che si sta catturando e a cui naturalmente si attribui-
rà contestualmente un nome appropriato. Scrot non
è troppo rigido in fatto di sintassi. Avremmo potuto
anche scrivere il comando precedente come:

rapidamente utilizzando il tasto F12. Si tratta di una scrot desktop.png -d 15 -c


funzionalità molto utile dopo aver eseguito un co-
mando Scrot. e funziona altrettanto bene. Se si desidera specificare
Tuttavia, c’è anche un modo migliore per lanciare una finestra o una parte di una schermata (utilizzan-
un comando Scrot: basta premere Alt+F2 e digitare do il mouse per selezionare l’area desiderata) allora
scrot, premere run ed è tutto. basta accodare -s:
Se si vuole fare un passo avanti e evitare anche il fa-
stidio di aprire il dialogo di esecuzione, allora basta scrot desktop.png –s
un clic destro in un punto vuoto della taskbar e se-
lezionare Add Applet to Panel e dalla GUI scorrere in e poi utilizzare il cursore per selezionare l’area dello
basso fino a Run Command, cliccare e aggiungerlo al screenshot. Alcune cose utili: per default, Scrot salva
pannello. Ciò aggiungerà la possibilità di digitare i automaticamente gli screenshot nella directory cor-
comandi direttamente nel pannello Gnome. In que- rente in cui ci si trova (di solito la directory home),
sto modo si può digitare un comando Scrot diretta- pertanto se si desidera salvare in una directory dif-
mente nel pannello senza neanche dover aprire una ferente, bisogna cambiarla prima di eseguire un co-
console in una sessione X-windows o premere nuo- mando. Come accade con ImageMagick, un altro uti-
vamente Alt+F2. L’ulteriore bonus nel consumare le tool a riga di comando per la cattura di screenshot,
alcuni secondi per questa impostazione è che resterà Scrot supporta molti formati compreso, naturalmen-
persistente anche dopo un reboot del sistema e sarà te, gli onnipresenti formati PNG e JPEG.
sempre disponibile per lanciare qualsiasi programma
senza ricorrere al menu Start o ai tasti Alt+F2.
Inevitabilmente si vorranno catturare ben più di Altri trucchi con Scrot
semplici screenshot, specialmente quando si tratta
di mostrare menu, sottomenu e schede. Come accade Scrot oltre a fare tutto ciò che si è appena detto ha
con i tool grafici come Ksnapshot, si dovrà specifica- alcuni ulteriori assi nella manica: se si vogliono crea-
re un ritardo mentre si cattura lo screenshot. Se ciò re dei thumbnail per una “web gallery” o per salvare
implica un bel po’ di navigazione attraverso una sel- spazio per mezzo della compressione, si può sempre
va di menu o schede allora è una buona idea eseguire farlo manipolando in seguito lo screenshot per mezzo
una prova e calcolare grosso modo quanto tempo oc- di un programma come Gimp. Scrot può combinare
corre perché si giunga alla videata da catturare e poi il tutto in una riga aggiungendo semplicemente l’op-
aggiungere circa cinque secondi extra per tener conto zione -t seguita dalla percentuale di compressione. Se
delle goffe azioni con il mouse. Una volta fatto ciò si è si vuole comprendere anche il bordo del window ma-
pronti a destreggiarsi con un comando Scrot. nager, basta accodare -b. Si può impostare la qualità
Dopo aver eseguito i passaggi dei due precedenti pa- (dimensione e compressione) con -q seguito da un va-
ragrafi, procediamo e impostiamo un comando. Ec- lore compreso tra 1 e 100 (75 è il default).
cone uno che catturerà uno screenshot nel formato
JPEG dopo un ritardo (per darvi il tempo di imposta- Piace a tutti scoprire dei modi ingegnosi e nuovi per
re il tutto) di 5 secondi: fare le cose, e se si è acquisita una ragionevole com-
petenza con la riga di comando allora non sarà neces-
scrot -d 5 desktop.jpeg sario essere un genio per individuare dei modi per

43
Login Internet Expert n.66 Novembre/Dicembre 2007
solutions

combinare questa conoscenza con la potenza di Scrot. grafica GUI è stato danneggiato durante la scrittura
Una volta catturato uno screenshot, potrebbe essere di questo articolo.
necessario apportare delle modifiche: modificare il
formato, comprimere, tagliare, ridimensionare, ecc. 4. Come eseguire il backup del Master Boot
Di norma, si esegue un clic destro sull’immagine sal- Record (MBR)
vata e si seleziona lo strumento grafico preferito per
svolgere il lavoro, o basta aprire il pacchetto di grafica Il backup, come la sicurezza, è un banale mantra nel
e navigare fino alla directory utilizzata; tuttavia una mondo GNU/Linux, ma anche il più esperto utente,
piccola magia dalla riga di comando può fare ciò au- per una qualsiasi ragione, ha pensato di eseguire re-
tomaticamente. Per combinare assieme l’esecuzione golari backup solo dopo essere stato colpito da un disas-
di più comandi si utilizza la combinazione di carat- tro. È una storia molto familiare a tutti. Gli ammini-
teri &&. Ciò significa che se il comando precedente è stratori di sistema, a causa del loro lavoro, avranno
stato eseguito senza produrre errori, verrà eseguito il questo imperativo scolpito sulle proprie lapidi. Per
comando successivo. In questo caso si può accodare il loro è una regola di vita. Gli utenti desktop, essendo
nome del pacchetto di grafico preferito per la modifi- responsabili solo di sé stessi, possono permettersi di
ca dello screenshot appena catturato con Scrot. essere un po’ più incerti su queste cose. Se tutto va
“gambe all’aria” non c’è che da prendersela con sé
Pertanto, mettiamo assieme queste opzioni in un uni- stessi.
co comando e eseguiamolo: È necessario effettuare il backup di molte cose: i file
nella propria directory home, i file di configurazio-
scrot -d 5 -q 95 -t 30 screenshot.jpeg -b -s && ne in /etc (ed esistono molti eccellenti tool GUI per
gwenview screenshot.jpeg svolgere il lavoro) ma una delle cose più semplici e
migliori da fare è eseguire il backup del proprio Ma-
Fatto! Certo è un bel boccone, ma dopo averlo me- ster Boot Record (MBR). Una cosa è subire la perdita
morizzato Scrot è un software molto potente e utile o la corruzione di file, ben altro è non essere affatto
e indubbiamente i lettori possono escogitare molti in grado di eseguire il boot del proprio computer. Ciò
comandi che possono essere utilizzati in combina- che segue vi tirerà fuori d’impaccio.
zione con Scrot per estenderne l’utilità. Le uniche
funzionalità che sembrano assenti sono la capacità di
conversione dei formati delle immagini e la cattura Le maniere di Windows
di screenshot multipli. Per fare ciò dovrete utilizza-
re ImageMagick, che, fortunatamente, è preinstallato È altamente improbabile che siete arrivati a GNU/
con gran parte delle distro GNU/Linux. Linux a digiuno di conoscenze sui computer. Quasi
certamente, come me, ci siete arrivati da Windows;
quindi o avete installato GNU/Linux sostituendo
Cattura con ImageMagick Windows o avete deciso di optare per il dual boot.
Windows è un po’ a corto di computing etiquette: se
Benché questo articolo riguardi Scrot non posso resi- avete installato prima GNU/Linux su un disco ver-
stere dal concluderlo con un brevissimo “howto” su gine e avete poi proseguito con l’installazione di una
ImageMagick per la cattura di screenshot multipli in versione di Windows avrete fatto una brutta scoper-
un solo comando. Si tratta di una caratteristica che ta. Windows, senza alcun vostro permesso, calpesta
renderebbe Scrot completo ed è nota come “snap” il boot sector di GNU/Linux con pesanti scarponi
(ossia “scatto”). Basta accodare questo parametro al chiodati. La prima lezione è installare prima Win-
comando import di base e si possono catturare screen- dows!!!
shot multipli in base al numero che si specifica: Tuttavia, non è necessario il dual boot con Windows
per andare incontro a un disastro. Anche il dual boot
import -delay 20 -snaps 4 snapit.jpeg con diverse versioni di GNU/Linux può portare a
problemi di avvio. Nel caso migliore, una sola ver-
Preparate le schermate che volete catturare, minimiz- sione eseguirà il boot; o peggio, nessuna versione si
zatele tutte, digitate questo comando e poi utilizzate avvierà e vi ritroverete a fare furiose ricerche su Goo-
Alt+Tab per attivarle una per volta, cliccando su cia- gle per comprendere concisi e enigmatici messaggi di
scuna. (Si può digitare il comando nella casella Run errore di GRUB (GRand Universal Bootloader). Tal-
command come si è fatto per Scrot). Portatevi nella di- volta, i boot sector (comprese le tabelle delle partizio-
rectory in cui avete salvato e troverete gli screenshot, ni) possono corrompersi per motivi affatto compren-
che avranno come nome lo stesso prefisso (nell’esem- sibili. Qualsiasi sia il motivo, è necessario prepararsi
pio “snapit”) seguito da un numero, a partire da zero all’eventualità in cui GRUB non effettua una copia
(nell’esempio da 0 a 3, in totale quattro). Ovviamente, dell’MBR durante l’installazione.
si può specificare il numero di “scatti” e naturalmen-
te, come in Scrot, si può specificare il formato.
Backup
Per chi ha a cuore il benessere del software open-
source desidero assicurare che nessun pacchetto di L’MBR, come lo chiamerò d’ora in poi, è un segmento

44
Login Internet Expert n.66 Novembre/Dicembre 2007
solutions

di 512 byte del primo settore del disco rigido che si Ripristino dell’MBR
compone di tre parti:
Non ci sorprende che per poter ripristinare l’MBR sia
1. il codice di boot che occupa 446 byte; solo necessario invertire il comando originale con cui
2. la tabella delle partizioni che occupa 64 byte; lo si è salvato. Se siete riusciti a distruggere l’MBR
3. il cosiddetto boot code signature che occupa 2 byte. non sarete in grado di eseguire il boot, pertanto pote-
te utilizzare un CD live per accedere al disco rigido e
Questi numeri sono molto importanti. Qualsiasi di- leggere il backup da un supporto rimovibile, ad esem-
sattenzione o modifica impulsiva di queste informa- pio una memoria USB. Ecco il comando:
zioni renderà la propria macchina non avviabile o la
tabella delle partizioni illeggibile. Non è bello vedere dd if=/dev/sda/mbr_backup of=/dev/hda bs=512 count=1
un uomo maturo che piange. Siete avvisati!
L’essenza del comando di backup è dd, che sarà fami- Di nuovo, modificate sda perché corrisponda a dove
liare ad ogni amministratore di sistema, specialmente avete salvato l’MBR ed eseguite il comando come
a chi intende clonare un intero disco rigido. Per vi- root. Se volete distruggere del tutto l’MBR, compresa
sualizzare tutte le opzioni disponibili basta digitare la tabella delle partizioni, allora potete sovrascriverlo
man dd. Siccome vogliamo eseguire il backup solo dei con una serie di zeri:
primi 512 byte, dobbiamo accodare alcuni argomen-
ti al comando. Ecco il comando completo necessario dd if=/dev/zero of=/dev/hda bs=512 count=1
(ricordate di eseguirlo come utente root con su, o con
sudo per utenti Ubuntu): Se volete distruggere l’MBR ma lasciare intatto la ta-
bella delle partizioni basta modificare semplicemente
dd if=/dev/hda of=/home/richmondg/mbr_backup bs=512 512 con 446.
count=1 Ci sono, naturalmente, alternative che coinvolgono
l’utilizzo del CD di installazione in modalità “salva-
Ovviamente, dovrete sostituire la partizione in cui ri- taggio” (rescue mode) per reinstallare GRUB che han-
siede il vostro boot sector e anche utilizzare il vostro no lo stesso effetto (con l’ulteriore vantaggio di non
nome utente. Vediamo cosa abbiamo appena scritto. sovrascrivere la tabella delle partizioni) ma questo è
dd sta per “disk dump”, if significa “input file”, of un argomento a sé. Nel frattempo, l’utilizzo del co-
significa “output file”, bs significa semplicemente mando dd e dei suoi argomenti vi aiuterà a familia-
“byte” e count=1 indica al comando di eseguire l’ope- rizzare con altri comandi Linux e con la struttura dei
razione una sola volta. Ha senso salvare il risultato file. Padroneggiare la riga di comando comporta uno
in qualche dispositivo rimovibile, di solito uno stick sforzo di apprendimento ma può ripagare quando le
USB, nel qual caso bisogna modificare il percorso del cose vanno storte.
file e adattarlo in modo che

/home/richmondg/mbr_backup
Riferimenti
diventi, ad esempio:
SLAX
/dev/sda/mbr_backup [1] Download di SLAX - http://www.slax.org/
download.php
oppure basta copiare il risultato del backup originale [2] http://tinyurl.com/b4tc7
sul dispositivo esterno. [3] Souzione con SLAX 6 - http://slax.linux-live.org/
forum/viewtopic.php?p=75287#75287
[4] Moduli SLAX - http://www.slax.org/modules.php
Solo la copia dei primi 446 byte. Perché?
Terminali Quake-style
Questo può essere un suggerimento utile. Se nel co- [5] http://en.wikipedia.org/wiki/Quake-style_console
mando precedente si modifica 512 con 446 si salverà [6] http://www.softpedia.com/reviews/linux/
solo il boot sector, ma non la tabella delle partizio- YaKuake-Review-30782.shtml
ni. Perché si dovrebbe fare ciò? Il motivo è che se si
utilizzano 512 byte e per qualsiasi motivo in seguito Versione italiana pubblicata su licenza di The Open Mind
si modificano le partizioni e poi si ripristina l’MBR Company
questo non sarà più sincronizzato. Pertanto, se avete
apportato delle modifiche a una partizione dopo aver
eseguito il backup dell’MBR originale assicuratevi di
Note Biografiche
aggiornare la copia di backup.
Andrew Min è un giornalista, amante di Linux Kubuntu,
che collabora con diverse riviste online come Free Software
Magazine, Full Circle Magazine e Mashable.com

45
Login Internet Expert n.66 Novembre/Dicembre 2007
IN VETRINA

Fedora Unleashed Performance Tuning Ubuntu 7.10 Linux


8th Edition for Linux Servers (paperback) Unleashed - 3rd Edition
di A. Hudson e P. Hudson di S. Johnson di A. Hudson e P. Hudson
Sams Prentice Hall Sams
960 pp - 44,95 euro 576 pp - 48,95 euro 840 pp - 44,95 euro
ISBN 9780672329777 ISBN 9780137136285 ISBN 9780672329692

DB2 9 for Linux, UNIX, Cisco ASA, PIX, and FWSM GO! with the Internet
and Windows Firewall Handbook 2nd Ed. di S. Gaskin e R. Lawson
di G. Baklarz e P. Zikopoulos di D. Hucaby Prentice Hall
Prentice Hall Cisco Press 816 pp - 34,95 euro
1136 pp - 57,95 euro 912 pp - 52,95 euro ISBN 9780131956957
ISBN 9780131855144 ISBN 9781587054570

New Perspectives on the Principles of Computer Network Fundamentals,


Internet, Brief 7th Edition Networks and Communications. CCNA Exploration Labs and Study
di G. Schneider e J. Evans International Edition Guide, 2nd Edition
Course Technology di B. Dumas e M. Schwartz di A. Rufi et al.
241 pp - 38,00 euro Prentice Hall Cisco
ISBN 9781423925088 552 pp - 66,95 euro 408 pp - 29,95 euro
ISBN 9780137142293 ISBN 9781587132032

Login > n.66 Novembre/Dicembre 2007


>> 46
LOGIN 66

Essential Silverlight 2 ScreenOS Cookbook Hacking:


Up-to-Date di S. Brunner et al. The Art of Exploitation, 2nd Ed.
di C. Wenz O’ Reilly di J. Erickson
O’ Reilly 838 pp - 54,95 euro No Starch Press
212 pp - 34,95 euro ISBN 9780596510039 Publisher: No Starch Press
ISBN 9780596519988 480 pp - euro 55,00
ISBN 9781593271442

Scrivi a book@infomedia.it specificando nell’oggetto della e-mail:


IN VETRINA Login n. 66
oppure inviaci il coupon al numero di fax 0587/732232
Potrai acquistare i libri qui riportati con uno SCONTO ECCEZIONALE
del 10% anche se acquisti solo un libro
oppure del 20% se acquisti 3 libri

LOGIN 66
OFFERTE ABBONAMENTI
2007/2008
RIVISTE CARTACEE OFF
prezzo standard 1 anno 2 anni
€ 128.00 �
ERT
COMPUTER PROGRAMMING
DEV
€ 75.00
€ 75.00
€ 69.00
€ 69.00

� € 128.00 � A
VISUAL BASIC JOURNAL € 52.50 € 49.00 � € 90.00 �
Prez
LOGIN € 52.50 € 49.00 � € 90.00 �
zi v
JAVA JOURNAL € 52.50 € 49.00 � € 90.00 �
al
€ 312.00 € 250.00 � € 495.00 � 7/1 idi fino
/20
CP+DEV+VBJ+LOGIN+JJ

08 al
RIVISTE WEB
1 anno 2 anni
CP web + archivio € 50.00 € 45.00 � € 70.00 �
DEV web + archivio € 50.00 € 45.00 � € 70.00 �
VBJ web + archivio € 40.00 € 35.00 � € 60.00 �
LOGIN web + archivio € 40.00 € 35.00 � € 60.00 �
JJ web + archivio € 40.00 € 35.00 � € 60.00 �

2 web a scelta + archivio € 80.00 € 60.00 � € 100.00 �


3 web a scelta + archivio € 120.00 € 85.00 � € 140.00 �
4 web a scelta + archivio € 170.00 € 115.00 � € 180.00 �
5 web + archivio € 220.00 € 140.00 � € 200.00 �

INDIRIZZO DI SPEDIZIONE INDIRIZZO DI FATTURAZIONE


(solo per riviste web)
Nome/Società __________________________________________________________ Nome e Cognome _______________________________________________________

Codice Fiscale (obbligatorio) ________________________________________________ Ditta __________________________________________________________________

Indirizzo _______________________________________________________________ Indirizzo _______________________________________________________________

CAP _____________ Città ___________________________________ Prov. ______ CAP ____________ Città _________________________________ Prov. _________

Telefono ____________________________ Fax ______________________________ P.IVA _________________________________________________________________

E-Mail ________________________________@_______________________________ E-Mail per invio fattura _________________________ @ ________________________

Codice Cliente __________________________________________________________

• I prezzi degli abbonamenti Web sono conprensivi dell’ IVA al 20% MODALITA’ DI PAGAMENTO
• I prezzi degli abbonamenti per l’estero sono maggiorati di spese di spedizione. � Allego fotocopia del Bonifico Bancario effettuato sul C/C 000000014804
CAB 25200 ABI 01030 Cin “A” - Monte dei Paschi di Siena - Agenzia di Perignano
• Gli abbonamenti decorrono dal primo numero raggiungibile. IBAN IT84A0103025200000000014804
Per attivazioni retroattive contattaci al numero 0587/736460 o invia una e-mail
all’indirizzo: abbonamenti@gruppoinfomedia.it � Allego fotocopia della ricevuta del versamento sul C/C Postale N.14291561 intestato
a: “Gruppo Editoriale Infomedia S.r.l. - Ponsacco” IBAN IT84X0760114000000014291561

PRIVACY � Allego assegno bancario intestato a: “Gruppo Editoriale Infomedia S.r.l.”


NON TRASFERIBILE
Con la presente si autorizza al trattamento dei dati personali ai sensi delle
vigenti norme sulla privacy � Contrassegno (+ € 11.00 contributo spese postali)
� Autorizzo l’addebito dell’importo di € _____________________ sulla mia CARTASI’/VISA
FIRMA________________________________________________ N. _________________________________________________________________

Scad. ______ / ______ (mm/aa) Codice di sicurezza “CV2” ______________


SI , mi voglio iscrivere gratuitamente alla newsletter Infomedia
che mi tiene aggiornato sui prossimi argomenti delle mie riviste di Nome del Titolare ____________________________________________________
programmazione e mi informa delle offerte, le nuove uscite e le prossime
pubblicazioni. Questo è il mio indirizzo di posta elettronica: Data di nascita ____________________________________________________
______________________________@____________________________ Firma del Titolare ____________________________________________________
Posso annullare la mia iscrizione in qualsiasi momento alla pagina: � Collegati al sito www.shopinfomedia.it dove potrai effettuare il pagamento con
www.infomedia.it/newsletter.htm carta di credito in modalità sicura (banca SELLA)

Garanzia di riservatezza - Gruppo Editoriale Infomedia garantisce la massima riservatezza dei dati da lei forniti e la possibilità di richiederne gratuitamente la rettifica
o la cancellazione scrivendo a: Responsabile Dati - Gruppo Editoriale Infomedia Srl - Via Valdera P. 116 - 56038 Ponsacco (PI). Le informazioni custodite nel nostro
archivio elettronico verranno trattate in conformità alla legge 196/03 sulla tutela dati personali.
L’IVA sul prezzo dell’abbonamento cartaceo è assolta dall’Editore e non sussiste l’obbligo di emissione della fattura, ai sensi del D.M. 9 aprile 1993, art.1, comma 5;
pertanto, ai fini contabili, farà fede la sola ricevuta di pagamento; perciò la fattura verrà emessa solo se esplicitamente richiesta al momento dell’ordine.
Lei può dedurre il costo dell’abbonamento dal reddito d’impresa e dai redditi derivanti dall’esercizio di arti e professioni (artt. 54 e 56 del TUIR)

GRUPPO EDITORIALE INFOMEDIA S.R.L.


Via Valdera P. 116 - 56038 Ponsacco (PI) - Tel. 0587 736460 - Fax 0587 732232
www.infomedia.it - abbonamenti@gruppoinfomedia.it

Potrebbero piacerti anche