Вы находитесь на странице: 1из 52

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

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

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

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

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

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

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

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

�������� ������� ������� ������������ ���������� ���� ���� ����� ����������� �������
������ ���� �������� ��� ���� �� ������ ��������� ����� �� ���������� ����������� ���� ��� ��������� ��� ���������� ��� ������������ ���� �����
������� ������������������������������� �� ����� ����������������������� ����������������������������������������������������
����������
www.infomedia.it EDITORIALE

BIMESTRALE - ANNO 12 - N.65


Infomedia Green:
informazione e
DIRETTORE RESPONSABILE
MARIALETIZIA MARI
(MMARI@INFOMEDIA.IT)
DIREZIONE EDITORIALE

sostenibilità
NATALE FINO
(NFINO@INFOMEDIA.IT)

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

Natale Fino

3
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
SOMMARIO LOGIN n.65 - Luglio/Agosto/Settembre/
Ottobre 2007

Speciale
Hecl
un linguaggio di scripting per cellulari
Cos’è Hecl e perché lo sto scrivendo
di David N. Welton 8
Come funziona Hecl

di David N. Welton 10
Creare una semplice applicazione con Hecl

di David N. Welton 19

Solutions
Dal driver al window manager: u InVetrina 49
installare Compiz Fusion
di Andrew Min 26 Per contattare la Redazione di Login

Tips & Tricks per GNU/Linux


scrivete a:
Gruppo Editoriale Infomedia S.r.l.
di Andrew Min 43 Via Valdera P. 116 - 56038 Ponsacco (PI)
Tel. 0587/736460 (r.a.) - Fax 0587/732232
e-mail: red_login@infomedia.it - http://www.infomedia.it/Login

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
iTV Format per la Televisione Digitale Terrestre Login Building The Information Highway
di Fabio Ramacciani 33 è una rivista del Gruppo Editoriale Infomedia S.r.l.

Direzione e amministrazione
Via Valdera P. 116 - Ponsacco (PI)

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


speciale Hecl

Cos’è Hecl
e perché lo sto scrivendo
SPECIALE

Ü di David N. Welton

Vi siete mai chiesti quanto sia piacevole crea- accadute due cose: avevo acquistato una cel-
re un proprio linguaggio di programmazio- lulare su cui girava J2ME e avevo deciso che
ne? Questi articoli trattano della progettazio- probabilmente era il momento di apprendere
ne e, soprattutto, dell’implementazione del qualcosa di Java. Si è trattato di una combi-
linguaggio di programmazione Hecl. Spiega- nazione fortuita, poiché non sono molto por-
no, in dettaglio, come si procede per estrarre tato ad apprendere qualcosa senza un proget-
del testo da un file e far sì che il computer to su cui operare come incentivo e il cellulare
esegua le istruzioni contenute. Poichè Hecl mi ha fornito lo spunto che mi serviva. Java
non è un linguaggio ricercato e complicato, non ha un grande fascino per me: ha alcuni
ma è piuttosto un linguaggio compatto, sem- aspetti interessanti, ma gran parte delle mie
plice e modesto, dovrebbe essere abbastanza necessità di programmazione vengono sod-
facile seguirne l’analisi. Se state scrivendo la disfatte o dai linguaggi dinamici come Tcl
vostra tesi di laurea in Informatica, probabil- o Ruby, o dal linguaggio C per cose veloci e
mente non troverete questo materiale inte- a basso livello. Tuttavia, J2ME è uno spazio
ressante, perché presumibilmente ne sapete molto interessante in cui muoversi, poiché
più di me sull’argomento. Ma per tutti gli al- è già in circolazione su milioni di telefoni
tri spero di fornire un rapido sguardo su ciò e molti dei device che lo supportano non
che comporta la creazione di un linguaggio possono eseguire nient’altro. La piattaforma
di programmazione. Symbian offre qualcosa in più: si può porta-
re su di essa l’ordinario codice C, ma quando
Come ho detto prima, Hecl è un linguaggio ho acquisto il mio telefono ciò era riservato
compatto e semplice. Ed è così per un moti- ancora a modelli relativamente costosi. Sarà
vo: prima di tutto perché volevo fosse pronto il tempo a sancire quale piattaforma sarà vin-
in tempi brevi ma, soprattutto, perché volevo cente, ma nel frattempo mi piaceva l’idea di
qualcosa che potesse funzionare entro i vin- scrivere qualcosa che funzionasse su milioni
coli di spazio del mio cellulare J2ME. Inol- di dispositivi. E benché esistano altri lin-
tre, nonostante sia un semplice progetto (o guaggi di scripting per Java, ce ne sono solo
forse a causa di ciò), Hecl è abbastanza fles- alcuni altri che possono girare sulla piattafor-
sibile e estensibile, il che significa che può ma J2ME, poiché ciò impone parecchi limiti
evolversi verso nicchie molto diverse. Natu- su ciò che si può fare con Java. Ad esempio,
ralmente, ciò lo rende un buon soggetto per la API per la reflection, pesantemente utiliz-
degli articoli piuttosto che la sua trattazione zata da linguaggi come Groovy, non esiste.
attraverso un libro, necessario invece per de-
scrivere linguaggi più complicati. Con un obiettivo in mente e le dita intorpi-
Ho iniziato a lavorare su Hecl quando sono dite per aver iniziato a scrivere il codice, l’ul-

8
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
speciale Hecl

tima fermata è stata considerare il disegno complessi- ta in Java, si tratta di Jacl, ma è fin troppo mastodon-
vo del linguaggio. In realtà, non è stato così difficile. tica per la scarsa memoria del mio telefono.
Mi piace molto il linguaggio di programmazione Tcl,
particolarmente la sintassi, che deriva più dal Lisp L’articolo successivo si occupa dei dettagli tecnici del
di quanto molti si rendano conto o credano. Tcl è, a linguaggio Hecl. Per chi fosse interessato ad esami-
prima vista, un linguaggio abbastanza semplice, ca- nare esattamente come il codice descritto si adatta al
ratteristica che gli permette di essere incredibilmen- resto del sistema, ne è possibile effettuare un’analisi
te flessibile. È possibile scrivere un sistema a oggetti online all’indirizzo [1], in particolare delle classi di
(classi, ereditarietà e via dicendo) in Tcl stesso e an- base, che si trovano all’indirizzo [2].
che aggiungere nuove strutture di controllo (come
“if ” e “while”) scritte in Tcl! È anche un linguaggio Riferimenti
facile da apprendere, una prerogativa a cui attribui-
sco un alto valore perché significa che il linguaggio è [1] http://cvs.sourceforge.net/viewcvs.py/hecl/hecl/
accessibile a molti, anche a chi non è un ottimo pro- [2] http://cvs.sourceforge.net/viewcvs.py/hecl/hecl/
grammatore o non ha una laurea in informatica. Tcl core/org/hecl/
non è perfetto, ma siccome non sto cercando di scri-
Note Biografiche
vere un clone di Tcl in Java, mi sento anche libero di
ricalcare ciò che mi attira, di migliorare ciò che non David N. Welton vive e lavora a Padova come consulente spe-
gradisco e di essere creativo se necessario. Di nuovo, cializzato in tecnologie open source (Linux, Apache, Tcl,
la decisione di abbandonare la compatibilità con Tcl Python, Ruby, C, ecc.) e fornisce servizi di programmazione,
formazione e consulenza strategica. È membro attivo della co-
è stata, in parte, guidata dalla necessità di mantenere
munità Tcl, ha fatto parte del progetto Debian sin dal 1997,
le cose compatte e in parte per massimizzare il valore ed è stato Vice Presidente (o capobanda?) di Apache Tcl con
ludico del progetto: è più avvincente lavorare senza l’Apache Software Foundation fin dal 2001.
limiti prestabiliti. Esiste già una versione di Tcl scrit-

9
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
speciale Hecl

SPECIALE Come funziona Hecl

Ü di David N. Welton

Il parser
Come fa il computer a riconoscere e ad agire prende i caratteri backslash (“\”), gli a capo
su alcuni scarabocchi contenuti in un file? e qualsiasi altro carattere.
La prima cosa che Hecl deve fare è leggere
il contenuto del file e convertirlo in piccoli • I doppi apici “” raggruppano tutto ciò che
blocchi a cui possa attribuire un significato. contengono in una parola, ma consentono
Questa parte di Hecl è il parser, definito nel la sostituzione, in modo che si possa scrive-
file Parse.java. Come ho detto nell’articolo re:
precedente, Hecl è un linguaggio semplice.
Pertanto per poter discutere in modo più puts “La variabile a è uguale a $a”
agevole cosa accade, diamo un’occhiata a un
po’ di codice Hecl: • Le parentesi quadre “[…]” valutano il co-
mando contenuto e ne restituiscono il valo-
set txt [getprop $tf text] re. Pertanto laddove in un linguaggio come
if { ne $txt “” } { il C, si scrive:
# un commento
stringitem label “Hai scritto:” text foo = bar()
$txt
puts “hello” ; puts “world” ; in Hecl, si scriverebbe:
}
set foo [bar]
Il parser di Hecl riconosce solo alcuni carat-
teri come caratteri speciali: “” [] {} $ # ; e il • Il simbolo dollaro “$” restituisce un rife-
carattere “newline”. Il parser legge ciascuna rimento al valore contenuto nella variabile
riga di testo e la suddivide in blocchi in base denominata.
a semplici regole:
• Il carattere backslash “\” quota il carattere
• I comandi e i relativi argomenti sono deli- successivo. Ad esempio “foo\[bar” conterrà
mitati da spazi. un simbolo letterale parentesi quadra aper-
ta invece di cercare di valutare bar come
• Un comando termina con un a capo (newli- comando, cosa che invece causerebbe una
ne) o con un punto e virgola “;”. parentesi quadra non quotata.

• Le parentesi graffe “{…}” raggruppano al- • # è il carattere per la scrittura dei com-
l’interno gli argomenti, che vengono passa- menti. Tutto ciò che segue # su una riga
ti al comando “così come sono”. Ciò com- viene ignorato.
10
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
speciale Hecl

FIGURA 1 La classe GroupThing guaggi. In Hecl, if è


un comando ordi-
nario, come qual-
siasi altro, mentre
in C o in Python
fa parte della sin-
tassi, piuttosto che
essere una funzio-
ne che gli utenti
possono definire o
modificare.
Ad ogni modo, ciò
che Hecl fa men-
tre legge il codice
sorgente è creare
una “rappresen-
tazione interna”
dei vari comandi e
delle variabili che
sta leggendo. Lo
fa in modo da po-
ter memorizzare il
tutto e poi eseguir-
lo quando è pronto,
invece di cercare di
eseguirlo pezzo per
pezzo. Ciò velo-
cizza l’operatività
quando il codice
viene eseguito più
È tutto! La sintassi di Hecl può essere descritta in volte (ad esempio, il codice in un ciclo while) poiché
solo 8 regole. Anche se può sembrare un po’ comples- Hecl non deve rieseguire ogni volta il parsing di quel
sa, pensate a ciò che richiederebbe la descrizione del- codice. Complessivamente considerato, il program-
la sintassi di un linguaggio come Ruby, Python o C ma Hecl sottoposto al parsing può essere rappresen-
(oppure Perl, per i veri masochisti!). tato come albero, con ciascun nodo che rappresenta
Tenendo presente queste regole, diamo un’occhiata al una parte del programma, come verrà descritto in se-
precedente frammento di codice. La prima riga può guito in questo articolo.
essere suddivisa in questo modo:
Le “cose” di Hecl
• Un comando: set.
Quanto detto porta a una discussione su come Hecl
• Un argomento di quel comando: txt memorizza i valori, da affrontare prima di prosegui-
re la discussione sul parsing e sulla rappresentazione
• Un terzo argomento, un testo da valutare: [getprop interna di Hecl.
$tf text]. Hecl tuttavia non lo valuta immediatamen- Siccome il termine “oggetto” è stato ampiamente uti-
te, si limita a memorizzarlo e prendere nota che do- lizzato nel regno dell’Informatica, per Hecl ho deciso
vrà essere valutato. di ritornare a un termine altrettanto vago ma più an-
glosassone: “thing” (ossia, una “cosa”). Tutti i valori
Il secondo frammento di codice, anch’esso un singo- in Hecl vengono gestiti dalla classe Thing che inter-
lo comando, è simile: un comando if seguito da due namente mantiene un altro valore in base al tipo del
argomenti, che contengono a loro volta dell’ulteriore valore che sta memorizzando.
codice Hecl: Per tipi più o meno standard di thing, Hecl defi-
nisce le classi StringThings, IntThings, ListThings e
ne $txt “” HashThings, così come DoubleThing per le versioni di
Hecl non-J2ME. Si tratta di tipi/strutture di dati ab-
# un commento bastanza standard presenti in gran parte dei linguag-
stringitem gi di scripting. Hecl dispone anche di un ObjectThing,
label “Hai scritto:” text $txt che può contenere qualsiasi oggetto Java, con l’avver-
puts “hello” ; puts “world” ; timento che se viene trasformato nella sua rappresen-
tazione in stringa, perderà il riferimento all’oggetto
che contiene.
Si tratta di un aspetto importante da comprendere, Il punto in cui le “cose” si fanno complicate è nei
poiché è molto differente da come operano molti lin- tipi interni, dove Hecl ha a disposizione CodeThing,
11
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
speciale Hecl

GroupThing e SubstThing, che assieme alla classica intercambiabile. L’implementazione di IntThing è un


StringThings gestiscono la rappresentazione interna buon punto di partenza, poiché è abbastanza facile
del codice. Le SubstThing sono le più semplici. Quan- comprendere cosa è e cosa fa un IntThing.
do il parser incontra una variabile il cui nome è pre-
ceduto da un carattere “$” o da un carattere “&”, crea public class IntThing implements RealThing {
una SubstThing da porre nella vista interna di Hecl private int val;
dello script. Per comprendere come funziona questo
caso, consideriamo il seguente script: Come si osserva, un IntThing contiene un valore di
tipo int: il valore reale a cui siamo effettivamente in-
set i 0 teressati dopo tutti questi riferimenti indiretti! C’è
while { < $i 100 } { un utile metodo in IntThing per la creazione di nuove
puts $i Thing che rappresentano interi:
incr $i
} public static Thing create(int i) {
return new Thing(new IntThing(i));
}

Tale metodo viene utilizzato moltissimo in questo


modo:
Hecl è un linguag- Thing foo = IntThing.create(56);
gio semplice, la sua
Tuttavia, in termini di importanza, ciò che rende i tipi
sintassi può essere Hecl dinamici sono due metodi:

descritta in sole 8 private static void setIntFromAny(Thing thing)


throws HeclException {
regole RealThing realthing = thing.val;

if (!(realthing instanceof IntThing)) {


thing.setVal(new IntThing(thing.
Ovviamente, Hecl deve riesaminare il valore conte- getStringRep()));
nuto in i ogni volta durante lo script piuttosto che }
sostituirlo una tantum! SubstThing permette a Hecl }
di fare ciò, poiché sa di aver a che fare con qualcosa
che in realtà rappresenta qualcos’altro: in questo caso public static int get(Thing thing) throws
$i si riferisce a un valore intero, ma che cambia ogni HeclException {
volta nell’esecuzione del ciclo e pertanto andrà sosti- setIntFromAny(thing);
tuito ogni volta. IntThing getint = (IntThing) thing.val;
Le cose sono un po’ più complesse, tuttavia, perché return getint.val;
Hecl, come molti linguaggi di scripting, permette di }
utilizzare la cosiddetta “interpolazione di stringhe”.
Consideriamo questo esempio: Quando è necessario estrarre un int da un Thing, si in-
voca il metodo get in questo modo:
puts “Il valore di ‘i’ è ancora $i e 1 + 1 è ancora
[+ 1 1]” int foo = IntThing.get(foothing);

Per gestire questo caso utilizziamo la classe Group- Come si può vedere, questo codice esamina il valore
Thing. Come implica il nome, rappresenta un gruppo interno di una Thing e nel caso non sia già un Int-
di altre thing, come è mostrato in Figura 1. Thing, lo trasforma in una stringa e cerca di eseguire
GroupThing valuta i propri componenti quando Hecl il parsing di un intero. Naturalmente, il procedimen-
ha necessità di conoscere cosa contiene il GroupThing to potrebbe fallire, perché se si cerca di ottenere un
stesso. intero da una stringa “abc” … non può funzionare!
Le classi Thing vengono implementate in Java in Ecco perché entrambi i metodi sono in grado di gene-
questo modo: una classe Thing contiene un tipo Real- rare una HeclException, di cui parleremo a breve.
Thing che rappresenta il valore effettivo

public class Thing {


Valutazione del codice
public RealThing val;
Prima di comprendere come viene valutato il codice
CodeThing, GroupThing, StringThing e tutte le al- Hecl, torniamo per un momento alla discussione sul
tre classi implementano l’interfaccia RealThing in parsing. Ora che sappiamo come Hecl memorizza in-
modo che Hecl possa gestirle in modo più o meno ternamente gli oggetti Thing è facile comprendere ciò
12
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
speciale Hecl

FIGURA 2 Le “stanze” in Hecl


La valutazione
effettiva avviene
nelle stanze. Per
Hecl, la prima
stanza è qualcosa
di simile a:

StringThing (puts)
SubstThing (i)

Per poter fare


qualcosa con que-
sta stanza, deve
cercare “puts”
come comando.
La classe Interp
contiene una tavo-
la hash che mappa
i nomi dei coman-
di, come puts, if,
proc, +, list e via
dicendo, nelle ri-
spettive classi Java
che implementa-
no quel codice.
Il comando puts
è mappato sulla
classe PutsCmd,
che accade quando il codice Hecl viene sottoposto al che è semplicissima:
parsing: viene trasformato in Thing.
class PutsCmd implements Command {
puts “foo bar” -> StringThing (puts) e un
GroupThing (foo bar). public void cmdCode(Interp interp,Thing[] argv)
throws HeclException {
puts $i -> StringThing (puts) e un
SubstThing (i) System.out.println(argv[1].getStringRep());
}
set i [+ $i 10] -> StringThing (set), StringThing }
(i), seguito da un CodeThing. Il CodeThing viene
sottoposto al parsing in questo modo: Tutte le classi comando implementano l’interfaccia
+ $i 10 -> StringThing (+), SubstThing (i), Command e perciò devono avere un metodo cmdCode.
StringThing(10) Ma non corriamo troppo...
La stanza che contiene il comando puts ha anche
Ci si potrà chiedere perché il precedente valore 10 è qualcosa da passargli come argomento, in questo caso
un StringThing quando è abbastanza ovvio che sia un un SubstThing. Per ciascuno degli argomenti del co-
numero e che si presume venga utilizzato come tale. mando nella stanza, Hecl verifica di che tipo è. Se è
La vostra intuizione è corretta, ma Hecl inizialmente qualcosa di semplice come un IntThing o uno Strin-
esegue il parsing di qualsiasi cosa come stringhe e le gThing, viene passato al comando senza modifiche.
trasforma in altri tipi di “cose” al momento della va- SubstThing, GroupThing e altri CodeThing vengono
lutazione del codice. invocati in modo ricorsivo per poter individuare qua-
Per comprendere come Hecl viene effettivamente va- le valore rappresentano effettivamente, in modo che
lutato dopo che abbiamo un rappresentazione memo- il comando effettivo possa essere chiamato in questo
rizzata in memoria, dobbiamo esaminare CodeThing, modo:
che è il vero motore di Hecl. Probabilmente avrete
dedotto dal nome che si tratta di una classe che con- puts 23
tiene codice, il che è corretto. Gli oggetti CodeThing
vengono suddivisi in “stanze”, che equivalgono a Gli argomenti (compreso il nome del comando)
singoli comandi. Nella Figura 2, ad esempio, il co- vengono passati al metodo cmdCode come array di
dice effettivo verrebbe trasformato in un CodeThing Thing:
con due stanze, puts $i e incr $i. Ogni volta che viene
richiesta l’esecuzione di un CodeThing, questo itera Thing[] argv array
sulle stanze e, a sua volta, ne invoca il metodo run.
13
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
speciale Hecl

FIGURA 2 Le “stanze” in Hecl when run, gives


us:

a è 0
in foo, a è 10
a è 0

In termini di flus-
so del programma,
si può vedere nella
Figura 3 che, allo
step 1, è in azione
la tavola di ricer-
ca delle variabili
globali. Quando
la valutazione del
programma en-
tra nella proce-
dura foo, la tavola
di ricerca globale
viene sostituita da
una nuova tavola
della procedura in
esecuzione. Allo
step 3, quando la
procedura termi-
na, la tavola hash
che è stata creata
nell’interprete per
Nel caso di PutsCmd, tutto ciò che fa è stampare la contenere le sue variabili viene impostata a null ed
rappresentazione stringa del primo argomento. è lasciata al garbage collector di Java perché rilasci la
È così che funzionano tutti i comandi Hecl, anche if e memoria occupata. Lo stack stesso viene implemen-
while, che accettano codice come argomenti, lo valu- tato dalla comoda classe java.util.Stack.
tano e agiscono di conseguenza. Le routine di ricerca delle variabili basata sulle tavole
Questa semplice strategia non è veloce, ma è molto, hash sono contenute nella classe Interp (unitamente
molto flessibile. Si può sostituire il codice al volo, ri- alla tavola hash di ricerca dei comandi).
nominare i comandi e fare ogni sorta di altri interes-
santi trucchi. Inoltre, è facile implementare questo
sistema nel limitato ambiente J2ME. Interprete

Variabili Effettivamente, la classe Interp è la struttura dati cen-


trale che tiene assieme il tutto. Contiene lo stato del
Gli osservatori più astuti avranno notato che prima, programma in termini di variabili, di comandi e pro-
quando abbiamo trattato SubstThing, non abbiamo cedure esistenti, di eccezioni e via dicendo. Per gli
spiegato realmente come opera. Come fa Hecl a pas- sviluppatori Java che cercano di includere Hecl nel
sare da un nome di variabile, ad esempio “foo”, ad un proprio codice, uno degli aspetti pratici di Interp è
valore in essa contenuto, come 42? Hecl utilizza un che si può disporre di più di una occorrenza per vol-
semplice schema di ricerca basato su una tavola hash ta. Si immagini, ad esempio, un server che valuta del
in cui ciascun “livello stack” ha una propria tavola codice Hecl per dei client. Ciascun client autenticato
hash che associa i nomi ai valori. Ciò significa che potrà avere un suo interprete Hecl separato senza in-
all’interno di una proc viene creata una nuova tavola terferire con gli altri!
hash per memorizzare i valori locali. Per vedere il tut- I metodi più comunemente utilizzati in un interprete
to in azione, consideriamo questo codice: sono quelli che ne modificano lo stato.
Creiamo un comando visibile a Hecl:
set a 0
puts “a è $a” interp.commands.put(“nuovonomecomando”,
proc foo {} { new ClasseCheImplementaComando());
set a 10
puts “in foo, a è $a” Creiamo e impostiamo una variabile:
}
foo interp.setVar(“temperatura”, new Thing(99));
puts “a is $a”
valutiamo il codice:

14
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
speciale Hecl

set cmds “ codice da valutare “


interp.eval(new Thing(“puts {hello world}”)); catch $cmds result

Impostiamo il risultato di un comando:

interp.result = new Thing(“ok, bene, ha funzionato e


via dicendo”); Il vero motore di
Hecl è CodeThing,
Errori e eccezioni classe suddivisa in
Finora, abbiamo descritto come le cose dovrebbero
funzionare. La vita, tuttavia, ha la caratteristica di
“stanze” che equi-
non essere esattamente come l’avevamo pianificata valgono a singoli co-
e questo si applica anche ai programmi Hecl: ab-
biamo necessità di un modo per trattare gli errori. mandi
Java stesso dispone di un completo meccanismo di
eccezioni, pertanto lo sfrutteremo in Hecl. Qualsia-
si cosa che possa causare un errore in Hecl genera
una HeclException, in modo che il codice contenuto
in Stanza.java possa intercettarlo e gestirlo in modo
appropriato: Ciò valuterà il codice in cmds e depositerà il risulta-
to nella variabile risultato. Per programmi che non
try { devono interrompersi, anche in caso di errori, catch
interp.result = new Thing(“”); offre al programmatore un mezzo con cui può tentare
tmpcommand.cmdCode(interp, newargv); di gestire gli errori in modo elegante.
Le eccezioni hanno un altro scopo, oltre a gestire gli
Questo è il comando effettivo che viene eseguito. errori. Consideriamo un ciclo while, che potrebbe es-
sere simile a:
} catch (HeclException e) {
if (newargv[0] != null) { while { true } {
e.where(newargv[0].getStringRep()); if { > $somevar 100 } { break }
} do_other stuff
throw e; incr $somevar
}
Indichiamo all’eccezione in quale comando si è ve-
rificata, così da poter ottenere la catena dei comandi Come funziona il comando break? Interrompe l’ese-
che hanno fallito. cuzione del ciclo quando viene eseguito, ma non è un
errore. Genera esso stesso una HeclException, contras-
} catch (Exception e) { segnandola come “eccezione di break”:
String msg;
msg = e.getMessage(); throw new HeclException(HeclException.BREAK)
if (msg == null) {
msg = “(eccezione null di tipo “ + e.getClass() A questo punto, è compito dei comandi che imple-
+ “)”; mentano i cicli di intercettarla. Ecco come appare il
} else { comando while:
msg = “Eccezione di tipo “ + e.getClass() + “: “
+ msg; while (Thing.isTrue(interp.eval(argv[1]))) {
} try {
throw new HeclException(msg); interp.eval(argv[2]);
} } catch (HeclException e) {
if (e.code == HeclException.BREAK) {
Nel caso di un’ordinaria eccezione Java, la intercet- break;
tiamo e creiamo una nuova HeclException, in modo } else if (e.code == HeclException.CONTINUE) {
che possa essere gestita in Hecl stesso. Hecl ha un } else {
comando, catch, che può essere utilizzato per intercet- throw e;
tare le eccezioni e per gestirle da programma. Questo }
comando funziona valutando il codice che gli viene }
passato, intercettando qualsiasi eccezione che il co- }
dice può aver generato e restituendo semplicemente
queste eccezioni al chiamante del comando sotto for- Da non dimenticare che while è un comando con due
ma di variabile Hecl. In altri termini: argomenti: la condizione e il codice. Finché la condi-
15
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
speciale Hecl

zione è vera, il ciclo viene eseguito ed ogni volta il co- new org.hecl.fp.HeclFloat().loadModule(interp);
dice viene valutato. Tuttavia, stiamo attenti a rilevare new org.hecl.load.HeclLoad().loadModule(interp);
anche le due speciali eccezioni e agiamo su queste. Vector argv = new Vector();
break fa sì che il ciclo termini, mentre continue fa sì
che il ciclo venga cortocircuitato e salti nuovamente for (i = 0; i < args.length; i++) {
alla valutazione della condizione. Se, tuttavia, la He- argv.addElement(new Thing(args[i]));
clException non è di uno di questi tipi speciali, l’erro- }
re viene nuovamente generato e si propaga verso l’al- interp.setVar(“argv”, ListThing.create(argv));
to nello stack delle chiamate. if (args.length > 0) {
HeclFile.sourceFile(interp, args[0]);
} else {
Hecl.commandLine(interp);
}

Hecl non è conce- } catch (Exception e) {


e.printStackTrace();
pito per sostituire }
}
Java ma per coo-
Abbastanza semplice. Per prima cosa, viene creato
perare con esso: vi l’interprete, vengono caricati alcuni moduli e vengo-
no esaminati gli argomenti della riga di comando. Se
sono due modi per è stato specificato un argomento della riga di coman-
do, viene trattato come nome di un file che contiene
integrare Hecl e il codice Hecl da valutare, cosa che avviene attraverso
Java il metodo HeclFile.sourceFile.
Se non ci sono argomenti della riga di comando,
Hecl esegue il metodo commandLine, un cosiddetto
“REPL”, ossia “read-eval-print loop”, leggendo i co-
mandi Hecl dallo standard input, valutandoli, stam-
Combinare Hecl e Java pando il risultato e via dicendo. Anche questo codice
è abbastanza semplice:
Come ho discusso all’inizio dell’articolo, Hecl non
è concepito come sostituto di Java, ma piuttosto per while (true) {
cooperare con Java. Al momento, è improbabile che System.out.print(“hecl> “);
un intero sistema software venga scritto interamen- System.out.flush();
te in Hecl (benché sia probabile che evolva in questa line = buff.readLine();
direzione); pertanto è importante discutere di inte- /* Termina se EOF. */
grazione tra Hecl e Java. Ci sono due modi per fare if (line == null) {
ciò: invocare Hecl da Java e creare estensioni Java System.exit(0);
per Hecl. }
try {
interp.eval(new Thing(line));
Invocare Hecl da Java
if (interp.result != null &&
Se si ha un programma scritto in Java e lo si vuole Compare.compareString(interp.result,
rendere “scriptable”, aggiungere ad esso un inter- new Thing(“”)) != 0) {
prete Hecl è molto semplice. Sarebbe una strategia System.out.println(interp.result);
appropriata se si vuole permettere agli utenti di mo- }
dificare delle variabili o per creare delle callback che } catch (HeclException he) {
vengono eseguite in certi punti del ciclo di vita del System.out.println(he);
programma. Un semplice esempio potrebbe essere }
quello di un server Web che valuta script Hecl quan- }
do vengono richieste certi URL.
Un esempio di questa tecnica è la riga di comando I punti chiave per utilizzare il codice Hecl da Java
di Hecl stesso, nello specifico il file commandline/ sono l’inizializzazione dell’interprete e poi la sua uti-
Hecl.java. Ecco il metodo principale: lizzazione per valutare il codice.

public static void main(String[] args) {


try {
Creazione di estensioni Java per Hecl
int i;
Interp interp = new Interp(); L’altro modello è scrivere il proprio programma
/* Aggiunge i pacchetti standard. */ in Hecl e aggiungere delle estensioni Java per ese-
new HeclFile().loadModule(interp); guire compiti specifici. Ad esempio, per creare i

16
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
speciale Hecl

diagrammi riguardanti statistiche sulla diffusio- Il futuro di Hecl


ne di alcuni linguaggi di programmazione che uti-
lizzo (http://www.dedasys.com/articles/language_ Il mio scopo è mantenere Hecl sufficientemente sem-
popularity.html) ho scritto il programma in Hecl e ho plice da poterlo eseguire sul maggior numero possi-
scritto un’estensione Hecl che fornisce un’interfaccia bile di cellulari, il che significa che il nucleo stesso
alla libreria JFreeChart. resterà il più piccolo possibile. Sono un forte sosteni-
Questo modello è molto diffuso con linguaggi matu- tore della strategia “farlo, farlo bene e farlo presto “
ri come Tcl, Ruby e Python, in cui il linguaggio di e stiamo ancora creando Hecl, pertanto c’è posto per
scripting contiene tutte le funzionalità necessarie a chi voglia collaborare in termini di ulteriori caratteri-
scrivere un sistema completamente funzionante e le stiche e estensioni, dato che Hecl è in una fase ancora
estensioni (di solito scritte in C) sono necessarie solo embrionale, anche per sperimentare con il linguag-
per interfacciarsi con specifiche librerie esterne o con gio stesso. Creare un linguaggio di programmazione
specifici dispositivi. è stato uno sforzo molto impegnativo e creativo, chi
Ad ogni modo, è facile farlo con Hecl: la tecnica di è interessato a partecipare per plasmare il futuro di
base è scrivere una classe che implementa l’interfac- Hecl è il benvenuto.
cia org.hecl.modules.HeclModule in questo modo:

public class JFreeChartHecl implements Command,


Conclusioni
HeclModule {
Come si è visto da questo tour su Hecl, un interpre-
public void cmdCode(Interp interp, Thing[] argv) te è un complesso componente software che richiede
throws molte decisioni. Ma è proprio ciò che lo rende avvin-
HeclException { cente: c’è spazio in abbondanza sia per ingegnose so-
luzioni tecniche, sia per un raffinato disegno, benché
... implementazione del comando ... come si dice, “la bellezza è negli occhi di chi guar-
da!”. Ad ogni modo, Hecl è un linguaggio piccolo e
} abbastanza semplice, al punto che chiunque abbia un
po’ di conoscenze Java dovrebbe essere in grado di
public void loadModule(Interp interp) throws utilizzarlo per i propri esperimenti. Il software, per
HeclException { inciso, è sotto licenza Apache Versione 2, che è mol-
interp.commands.put(“barchart”, this); to flessibile, (può essere consultata all’indirizzo http:
interp.commands.put(“savechart”, this); //www.apache.org/licenses/LICENSE-2.0), il che si-
} gnifica che si può anche inserirlo in offerte proprieta-
rie e commerciali, pertanto lo si può certamente uti-
public void unloadModule(Interp interp) throws lizzare nel proprio software.
HeclException {
interp.commands.remove(“barchart”);
interp.commands.remove(“savechart”);
Risorse
}
} • Il codice sorgente del proprio linguaggio di scrip-
ting preferito. Il codice C di Tcl è ben scritto, ben
In questo caso, il modulo implementa anche un co- commentato e molto piacevole da leggere. Anche
mando: l’obiettivo di base di qualsiasi estensione a Lua, Python e Ruby sono interessanti.
Hecl sarà di aggiungere uno o più comandi che forni- • L’articolo del Dr. John Ousterhout sullo scripting
scono l’accesso ad alcune librerie o risorse esterne. (è datato, ma contiene alcuni buoni spunti): http:
Il tutto può essere poi compilato in un file .jar ed es- //home.pacbell.net/ouster/scripting.html.
sere quindi caricato in Hecl con il comando load: • Il libro “J2ME in a Nutshell” pubblicato da O’Reil-
ly è un buon testo di riferimento su ciò che si può
load JFreeChartHecl { o non si può fare in J2ME.
/home/davidw/hecllib/build/jfreechart/ • Il sito Web del progetto: http://hecl.org.
/home/davidw/downloads/jfreechart/lib/
jfreechart-1.0.0-rc1.jar
/home/davidw/downloads/jfreechart/lib/jcommon-
1.0.0-rc1.jar
} Note Biografiche
David N. Welton vive e lavora a Padova come consulente
il quale cerca di caricare la classe indicata e le relative specializzato in tecnologie open source (Linux, Apache, Tcl,
dipendenze dalla URL specificata, semplici file (lo- Python, Ruby, C, ecc.) e fornisce servizi di programmazione,
cali) vengono trasformati in URL. Nel caso del pre- formazione e consulenza strategica. È membro attivo della co-
cedente frammento, tenta di caricare JFreeChart, che munità Tcl, ha fatto parte del progetto Debian sin dal 1997,
si trova nella directory jfreechart/build di hecllib. Ciò ed è stato Vice Presidente (o capobanda?) di Apache Tcl con
richiede a sua volta il codice di jfreechart e di jcommon, l’Apache Software Foundation fin dal 2001.
che vengono caricati dai rispettivi file jar.
17
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
“Si fa presto a dire sito web”
di Paolo Frattini
Anno 2007
Pagg. 54
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 g li
Scopri regole, e r net
u n i c a r e v i a I n t
per com

“Si fa presto a dire sito web”


Ordinalo su

www.shopinfomedia.com
speciale Hecl

Creare una semplice


applicazione con Hecl
Un’introduzione a Hecl, un linguaggio di scripting per telefoni cellulari.
SPECIALE

Ü di David N. Welton

Al giorno d’oggi quasi tutti hanno un telefo- l’ambiente J2ME (ora noto come Java Micro
no cellulare; i dispositivi mobili continuano Edition o Java ME).
a diventare più veloci, più intelligenti e più Quando ho creato Hecl, l’ho fatto con diversi
capaci, ma esistono ancora relativamente po- obiettivi in mente:
che applicazioni. Il linguaggio di program-
mazione Hecl facilita la scrittura di applica- 1. Rendere ancora più facile e più veloce per i
zioni per il proprio device: con poche righe programmatori esperti creare applicazioni
di codice, si possono creare applicazioni da per cellulari.
portare con sé, ovunque.
2. Rendere possibile ai programmatori neofi-
Facili applicazioni per cellulari con Hecl ti di creare applicazioni per cellulari senza
l’onere di dover interagire con Java.
Mi sono appassionato ai computer quando
i miei genitori mi comprarono un Commo- Hecl ha anche altri vantaggi: sviluppare ap-
dore 64, un computer abbastanza bello per plicazioni è più veloce, poiché non è necessa-
l’epoca. Grazie alla legge di Moore e all’in- ria una ricompilazione dopo ciascuna modi-
cessante tasso di sviluppo, il cellulare medio fica. Nelle mani di un bravo programmatore
è ora più potente di quella macchina di una è anche possibile fare cose interessanti con
ventina di anni fa. Mentre è comprensibile Hecl grazie alla sua natura di linguaggio in-
che molti vogliano solo effettuare telefonate, terpretato. Si può avviare un’applicazione sul
si pensi a tutti i programmi che attendono di proprio telefono e scaricare ulteriori parti di
essere scritti proprio in vista del fatto di ave- codice dal Web.
re quasi sempre con sé un cellulare. Credo Lo scopo di questo tutorial è di aiutarvi a
che stia solo iniziando a scalfire la superficie creare applicazioni per cellulari, pertanto
di ciò che sarà possibile fare, specialmente iniziamo subito. Prima sono necessarie al-
man mano che i telefoni continuano a diven- cune cose:
tare più veloci e ad avere delle migliori con-
nessioni a Internet. • Java di Sun. Java sta puntando verso il sof-
Ho iniziato a interessarmi alla scrittura di tware free. Se utilizzate Ubuntu, come me,
applicazioni per cellulari diversi anni fa, si può ottenere Java con apt:
dopo un giorno piovoso in Italia sulle Do-
lomiti, vicino Cortina d’Ampezzo: il mio apt-get install sun-java5-jdk
vecchio telefono finì in un pozza di fango
e smise di funzionare, inducendomi ad ac- se si sono aggiunti i repository “multiverse”
quistare un nuovo telefono con funzionalità al proprio file /etc/apt/sources.list:
J2ME (Java). La scrittura di applicazioni in
Java andava bene, ma ho riflettuto che sareb- deb http://us.archive.ubuntu.com/ubuntu/
be stato un esperimento interessante provare feisty multiverse
e creare un linguaggio di scripting che sfrutta
19
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
speciale Hecl

FIGURA 1 Screenshot della demo di Hecl /opt/WTK2.5.1/bin/emulator -classpath build/


j2me/final/cldc1.1-midp2.0/Hecl.jar Hecl

che dovrebbe far apparire una schermata come quella


mostrata nella Figura 1

Si tratta della demo fornita con Hecl: il codice sor-


gente si trova in

midp20/script.hcl

ma prima di andare troppo avanti, facciamo un pas-


so indietro e creiamo la classica applicazione “Hello
World”, proprio per iniziare a vedere come si lavora
con Hecl.

L’applicazione “Hello World” per cellulari


Per scrivere il primo programma in Hecl, bisogna
aprire un editor di testo, digitare il seguente pro-
gramma e salvare nel file hello.hcl:

proc HelloEvents {cmd form} {


[lcdui.alert -text “Hellllllllooooo, world!” -
timeout forever] setcurrent
}

set form [lcdui.form -title “Hello world” -


commandaction HelloEvents]
set cmd [lcdui.command -label “Hello” -longlabel
“Hello Command” -type screen]

$form setcurrent
$form addcommand $cmd

$form append [lcdui.stringitem -label “Hello” -


text “World”]

Non male: 8 righe, in gran parte abbastanza chiare


dalla semplice lettura del codice. Tuttavia, andiamo
ad analizzarle riga per riga, in modo che possiate
• Il toolkit WTK di Sun [1]. Benché non siano ne- comprendere esattamente cosa accade.
cessari i tool per compilare Hecl (a meno che non si
voglia “smanettare” con il toolkit!), ciò che si vuo- 1. Il primo frammento di codice, che inizia con proc
le è l’emulatore, in modo da non dover caricare la HelloEvents, definisce una “procedura”: in altri ter-
propria applicazione sul proprio telefono ogni vol- mini una funzione denominta HelloEvents. Quan-
ta che si vuole testarla. E’ scaricabile al link http: do viene invocata questa funzione, crea un “alert”
//java.sun.com/products/sjwtoolkit/download.html (una sorta di messaggio popup che indica qualcosa

• Hecl, ovviamente. Si può scaricare dalla pagina di NOTA


download di Sourceforge.

Il WTK di Sun richiede un’installazione: si può ef- Hecl è in effetti fornito in diverse versioni, con
fettuare, ad esempio, nella directory /opt, in modo comandi GUI leggermente differenti: MIDP1.0
che non si mescoli con il resto del proprio sistema. (telefoni più vecchi), che ha meno comandi e non
Il processo di installazione è molto semplice: basta fa un granché, e MIDP2.0, per telefoni più recenti,
rispondere “sì” a poche domande ed è fatta. Hecl non che ha molte più funzionalità. Questo tutorial uti-
richiedere installazione: tutto ciò che è necessario è lizza i comandi MIDP2.0, poiché è quella su cui si
già pronto nella distribuzione. basano i telefoni attuali. I concetti descritti sono
Per verificare se tutto è ok, si può provare a lanciare molto simili per i comandi MIDP1.0, ma i coman-
l’emulatore con l’applicazione d’esempio: di sono leggermente differenti.

20
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
speciale Hecl

di importante). -timeout forever indica al messaggio FIGURA 2 Screenshot di “Hello World” in Hecl
di rimenare sullo schermo finché l’utente non lo
chiude.

2. Il secondo comando definisce un form, con il co-


mando lcdui.form, dal titolo “Hello World”, con-
nesso alla procedura HelloEvents. Il significato
di questa connessione è che quando un comando
associato al form viene attivato dall’utente, viene
invocata la relativa procedura per gestirlo. Il codi-
ce set form memorizza l’oggetto form nella variabile
form, in modo che possa essere referenziato in se-
guito.

3. La riga seguente crea un comando che può essere


attivato dall’utente. Ha come etichetta “Hello” ed
è memorizzato nella variabile cmd. Per il comando
utilizzo il tipo screen, che viene utilizzato per co-
mandi definiti dall’utente. Ci sono alcuni tipi pre-
definiti come “exit” e “back”.

4. $form setcurrent referenzia il form precedentemente


creato e indica a Hecl di visualizzarlo sullo scher-
mo.

5. Il sottocomando addcommand (considerabile come


una sorta di “metodo”, come in un linguaggio a og-
getti) connette il comando che ho creato prima al
form. Ciò rende il comando visibile nel form.

6. Infine, visualizzo una stringa sul form con il co-


mando lcdui.stringitem. Su gran parte dei telefoni, il
testo -label viene visualizzato in grassetto e il testo
-text viene visualizzato accanto ad esso.

È tutto! Ora, per trasformare il codice in un’applica-


zione per cellulare, bisogna eseguire un comando:

java -jar jars/JarHack.jar jars/cldc1.1-midp2.0/


Hecl.jar ~/ Hello hello.hcl

Ecco tutto ciò che richiede: questo comando pren- Su Linux, per il mio telefono Nokia, utilizzo il pro-
de il file esistente Hecl.jar, sostituisce lo script Hecl gramma gammu per trasferire i programmi sul telefo-
interno con quello che abbiamo appena creato in no, in questo modo:
hello.hcl e crea il file risultante Hello.jar nella propria
directory home (referenziata come ~/ nel comando gammu nothing --nokiaaddfile Application Hecl
precedente).
Ora, si può eseguire il codice nell’emulatore per vede- Un ulteriore metodo che può funzionare meglio con
re l’applicazione (Figura 2). device differenti è utilizzare il browser del telefono
stesso per scaricare e installare l’applicazione, ponen-
In evidenza, dall’alto, il titolo del form (-title), l’ele- do i file .jar e .jad su un server Web pubblico e acce-
mento stringitem e, nell’angolo in basso a destra, il co- dendo al file .jad.
mando con l’etichetta “Hello”. Si tenga presente, però, che questo procedimento
Se si preme il pulsante “Hello”, viene eseguito il co- probabilmente avrà un costo di connessione!
dice in HelloEvents e appare un “alert” sullo schermo
che resta lì finché non si preme il pulsante “Done”. Passi successivi:
l’applicazione “lista della spesa”
Installazione del codice sul telefono Fin qui tutto bene. A questo punto, creerò una pic-
cola applicazione con cui poter interagire per fare
Benché la creazione di un’applicazione sia molto fa- qualcosa di utile. Si tratta di una versione semplifi-
cile, sfortunatamente, installarla su un telefono non cata di un’applicazione “lista della spesa” (Figura 3)
lo è; non c’è molto che Hecl possa fare per facilitare disponibile all’indirizzo [3]. L’operatività di questa
questo processo, che è differente per ciascun telefono. applicazione è semplice: digitare una lista della spesa
21
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
speciale Hecl

FIGURA 3 Pagina web per caricare la ShopList do

-type numeric

per il campo di testo, ho


indicato che può accettare
solo numeri (né lettere né
simboli).
Dopo la creazione del co-
mando Fetch, ho accodato
il campo di testo al form
(altrimenti non sarebbe
visibile), ho aggiunto i due
comandi al form e poi, con
setcurrent, ho reso il form
visibile. L’ultima riga di
codice configura il form
per utilizzare la procedura
ShopFormEvents per gesti-
re gli eventi. L’elenco degli
argomenti merita una ul-
teriore spiegazione: Hecl,
come molti linguaggi di
programmazione, ha un
comando global che può essere utilizzato nelle varie
procedure che utilizzano i comandi back e exit: si può
Hecl rende ancora dire semplicemente

più facile e veloce global backcmd

creare applicazio- e la variabile $backcmd sarebbe disponibile in questa


procedura. Tuttavia, un utilizzo eccessivo delle varia-
ni per cellulari per bili globali è controproducente, pertanto provvedo a
passare tutto ciò di cui la procedura può aver bisogno,
i programmatori e lo faccio creando un elenco:
esperti ShopFormEvents $backcmd $exitcmd $pinfield $fetchcmd

Si può vedere che questo corrisponde agli argomenti


che la procedura accetta:
su un telefono cellulare è abbastanza irritante; molto
meglio eseguire l’inserimento dei dati attraverso una proc ShopFormEvents { backcmd exitcmd pinfield
pagina Web e poi caricare l’elenco con l’applicazione fetchcmd cmd shopform }
sul cellulare.
Per questo tutorial, ho creato un semplice elenco sul eccetto gli ultimi due, che Hecl passa automatica-
sito ShopList, identificandolo con un codice PIN. mente:
Potete liberamente creare una vostra lista della spe-
sa: l’utilizzo del sito è gratuito. L’applicazione per • cmd è il comando che è stato effettivamente invoca-
il cellulare funziona in questo modo: inserendo il to;
PIN, scarica l’elenco degli articoli e li visualizza sullo
schermo del telefono con una serie di controlli che- • shopform è naturalmente il form con cui è stata in-
ckbox. vocata la procedura.
Il codice per fare ciò è riportato nel Listato 1. È cer-
tamente più complesso del primo esempio, ma il mo- Confrontando $cmd con i vari comandi disponibili,
dello generale è lo stesso: vengono creati gli elementi è possibile determinare quale comando ha invocato
della schermata e gli articoli, visualizzati sul display e la procedura, e agire di conseguenza. A questo punto
invocate le procedure per gestire i comandi. non resta che eseguire il build e avviare l’applicazio-
Come ho già detto, i comandi relativi a specifici com- ne.
piti predefiniti hanno dei propri tipi, come si può
vedere per i comandi back e exit, che sono, rispettiva- java -jar jars/JarHack.jar jars/cldc1.1-midp2.0/
mente, di tipo “back” e “exit”. Hecl.jar ~/ ShopList shoplist.hcl
Dopo aver definito i due comandi, ho creato un form /opt/WTK2.5.1/bin/emulator -classpath ShopList.jar
e ho aggiunto ad esso un campo di testo. Specifican- Hecl

22
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
speciale Hecl

LISTATO 1

# Processa gli eventi associati alla # Processa gli eventi associati al form
schermata dell’elenco della spesa. principale.
proc ShopListEvents {exitcmd backcmd cmd proc ShopFormEvents {backcmd exitcmd
shoplist} { pinfield
if { eq $cmd $exitcmd } { fetchcmd cmd shopform} {
midlet.exit if { eq $cmd $exitcmd } {
} elseif { eq $cmd $backcmd } { midlet.exit
global shopform } elseif { eq $fetchcmd $cmd } {
$shopform setcurrent MakeList $exitcmd $backcmd \
} [$pinfield cget -text]
} }
}
# Crea una nuova schermata dell’elenco
della spesa e la carica. # L’azione parte qui ...
proc MakeList {exitcmd backcmd pin} {
set url “http://shoplist.dedasys.com/ # Crea un generico comando “back”.
list/fetch/${pin}” set backcmd [lcdui.command \
# Fetch the data, and retrieve -label Back \
the data field from the results hash. -longlabel Back -type back -priority
set data [hget [http.geturl $url] data] 1]
if { eq $data “PIN NOT FOUND” } { # Crea un comando exit.
[lcdui.alert -type warning \ set exitcmd [lcdui.command \
-title “Pin Not Found” \ -label Exit \
-timeout forever\ -longlabel Exit -type exit -priority
-text “The PIN $pin was not found on 2]
shoplist.dedasys.com”] setcurrent
return # Crea il form.
} set shopform [lcdui.form -title “Shopping
set shoplist [lcdui.list -title List”]
“Shopping List” \ set pinfield [lcdui.textfield \
-type multiple] -label “shoplist.dedasys.com PIN:” \
foreach e [split $data \n] { -type numeric]
$shoplist append $e set fetchcmd [lcdui.command -label
} “Fetch” \
$shoplist addcommand $exitcmd -longlabel “Fetch Shopping List” \
$shoplist addcommand $backcmd -type screen -priority 1]
$shoplist setcurrent
$shoplist configure -commandaction \ $shopform append $pinfield
[list ShopListEvents $exitcmd $backcmd] $shopform addcommand $exitcmd
} $shopform addcommand $fetchcmd
$shopform setcurrent

$shopform configure -commandaction \


[list ShopFormEvents $backcmd
$exitcmd $pinfield $fetchcmd]

A questo punto, si inserisce il numero PIN e si preme specificando “multiple” come tipo. Poiché la lista
il pulsante “Fetch”. Questo comando esegue il codice della spesa viene inviata “via cavo” (si fa per dire...)
di MakeList. La prima cosa che fa è tentare di caricare come elenco di righe, tutto ciò che devo fare per ag-
i dati dal sito shoplist, utilizzando il comando giungerla al display è suddividerla per righe con il
comando split e poi iterare su questo elenco con fo-
http.geturl reach. Il risultato è simile a quello visualizzato nella
Figura 5.
Poiché questo comando restituisce una tabella hash, Ed ecco pronta una lista della spesa via rete in meno di
per poter risalire ai dati restituiti, utilizzo il comando 100 righe di codice. Naturalmente, c’è spazio per pos-
hget per accedere all’elemento “data”. Se il PIN non è sibili miglioramenti. Ad esempio, la versione di pro-
disponibile sul server, viene restituito un messaggio duzione di questa applicazione, RecordStore (in Hecl, i
d’errore e all’utente viene restituita la prima scher- comandi rms.* rendono disponibile questa funzionali-
mata. Altrimenti, viene creato un elenco di checkbox tà) viene utilizzata per salvare la lista e il relativo stato
con tra successive invocazioni del programma, in modo
che si possa lasciare l’applicazione, eseguirla nuova-
lcdui.list mente e trovare la lista come la si è lasciata. Anche il
supporto per liste multiple può essere pratico.
23
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
speciale Hecl

FIGURA 4 Form iniziale della ShopList FIGURA 5 La lista della spesa

Naturalmente, questo tutorial non puà andare a fon- Risorse


do nel trattare gli argomenti. Hecl ha diversi altri co-
mandi GUI ed è un completo linguaggio di program- Java Micro Edition -
mazione che può fare alcune cose interessanti e dina- http://java.sun.com/javame/index.jsp
miche. Se si è curiosi, il miglior modo per saperne di Disegno e implementazione di Hecl http://
più è dare un’occhiata al sito Web di Hecl [4] e iscri- www.welton.it/articles/hecl_implementation.html
versi alla mailing list su Hecl su SourceForge [5].
Versione italiana pubblicata su licenza di The Open Mind
Riferimenti Company

[1] http://java.sun.com/products/sjwtoolkit/ Note Biografiche


download-2_5_1.html
David N. Welton vive e lavora a Padova come consulente
[2] http://sourceforge.net/project/ specializzato in tecnologie open source (Linux, Apache, Tcl,
showfiles.php?group_id=122383 Python, Ruby, C, ecc.) e fornisce servizi di programmazione,
[3] http://shoplist.dedasys.com/ formazione e consulenza strategica. È membro attivo della co-
[4] Sito Web Hecl - http://www.hecl.org/ munità Tcl, ha fatto parte del progetto Debian sin dal 1997,
[5] Mailing list Hecl - http://lists.sourceforge.net/ ed è stato Vice Presidente (o capobanda?) di Apache Tcl con
lists/listinfo/hecl-devel l’Apache Software Foundation fin dal 2001.

24
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
solutions

Dal driver al
window manager:
installare Compiz Fusion

Una guida passo passo all’installazione di ATI/NVIDIA, Xgl/AIGLX e Compiz Fusion


per Ubuntu, Kubuntu e Xubuntu.

Ü di Andrew MIn

Il mondo 3D è diventato molto più luminoso ancor peggio, praticamente tutti i tutorial
con la nascita di Compiz Fusion, un poten- disponibili sono per Ubuntu e non funzione-
te window manager composito per i sistemi ranno per Kubuntu o per Xubuntu. Perciò,
operativi GNU/Linux. In origine esisteva un questa guida è stata creato come una sorta di
unico progetto, Compiz, che si è biforcato guida complessiva per tutti gli utenti delle
in Compiz e nella diramazione non stabile principali distribuzioni Ubuntu e delle prin-
e non ufficiale di Compiz nota come Beryl. cipali schede video.
Ora i due progetti sono stati riuniti in un
sorprendente window manager composito. Attenzione: gran parte, se non tutto, questo soft-
In sintesi, aggiunge effetti al proprio desktop ware (compreso Compiz Fusion stesso) è in ver-
come finestre “oscillanti” (le finestre oscilla- sione alfa. Dovrebbe comunque funzionare, ma
no effettivamente quando vegono spostate), c’è la possibilità che non funzioni. Perciò, non
un nuovo manager di desktop virtuali attra- andrà utilizzato su macchine di produzione.
verso un cubo e molto altro ancora. Come Siete avvisati.
prova di quanto sia “cool”, basta fare una ri-
cerca su Google Video o YouTube di “compiz
fusion”. Schede video ATI
Sfortunatamente, Compiz Fusion ha una
documentazione scarsa o quasi nulla. Quel
poco che c’è è concepito per veri esperti che Il driver
è previsto conoscano cosa rappresentano co- La prima cosa da fare è ottenere il driver della
mandi oscuri e non intuitivi come “git”. E scheda video. Sono disponibili due moderni
non viene neanche spiegato come installa- driver ATI per gli utenti Ubuntu: il software
re un manager composito o un driver per free non ufficiale driver Radeon e il driver
la scheda video (entrambi necessari perché ufficiale ATI (e proprietario) fglrx. fglrx è di-
Compiz Fusion funzioni opportunamente). sponibile per utenti Radeon 9000+ e utenti
Ancor peggio, molta della documentazione della serie X (ad es. Radeon X3000), tuttavia
disponibile funzionerà solo per un tipo di può funzionare anche con altre schede ATI.
scheda video (i tutorial NVIDIA non fun- Sfortunatamente, Radeon è estremamente
zioneranno con schede ATI e viceversa). E, lento nell’eseguire Compiz Fusion (abba-

26
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
solutions

FIGURA 1 Restricted manager per ATI noti che dbus è necessario per il login GNO-
ME):

#!/bin/sh
Xgl :1 -fullscreen -ac -accel xv:pbuffer -accel
glx:pbuffer &
DISPLAY=:1
dbus-launch --exit-with-session gnome-session

Gli utenti Kubuntu (KDE), invece, dovran-


no inserire:

#!/bin/sh
Xgl :1 -fullscreen -ac -accel xv:pbuffer
- accel glx:pbuffer &
DISPLAY=:1
exec startkde

E infine, gli utenti Xubuntu (Xfce) scrive-


ranno:

stanza da renderlo inutilizzabile). Pertanto, abbiamo #!/bin/sh


dovuto procedere con il driver proprietario fglrx. Xgl :1 -fullscreen -ac -accel xv:pbuffer -accel
Per prima cosa, bisogna aggiornare il proprio sistema glx:pbuffer &
utilizzando il proprio manager di pacchetti preferi- DISPLAY=:1
to. Quindi, bisogna assicurarsi che siano installati i exec xfce4-session
pacchetti
A questo punto salvare e chiudere il file. Per renderlo
• linux-restricted-modules-generic eseguibile basta eseguire da terminale il comando:
• restricted-manager
sudo chmod +x /usr/bin/startxgl.sh
A questo punto selezionare System/Administration/
Restricted Drivers Manager (in Kubuntu scegliere A questo punto, create un nuovo file (sempre come
Settings/Restricted Drivers Manager) o eseguire come utente root) in questa posizione:
root restricted-manager, digitando da una finestra ter-
minale /usr/share/xsessions/xgl.desktop

sudo restricted-manager E in esso inserite quanto segue:

Dopo aver fornito la password, si vedrà un’opzione [Desktop Entry]


per “ATI accelerated graphics driver”. Controlla- Encoding=UTF-8
re che sia abilitata. Per ulteriori informazioni, si
legga la pagina [1] del Wiki di Ubuntu realtiva ai
driver ATI. FIGURA 2 Restricted manager per NVIDIA

X server
La recente versione di X.Org comprende AIGLX,
che fornisce le funzionalità di rendering GLX ri-
chieste da Compiz Fusion. Sfortunatamente, AI-
GLX richiede l’utilizzo del driver Radeon, che è
troppo lento per l’esecuzione con Compiz Fusion.
Perciò, dobbiamo utilizzare un nuovo X server il
cui nome è Xgl.
Per prima cosa, installiamo il pacchetto xserver-xgl
nel repository universe. Poi creiamo un file di te-
sto (come utente root) nella posizione

/usr/bin/startxgl.sh

Il contenuto del file di testo dipende da quale


ambiente desktop utilizzerete. Gli utenti Ubun-
tu (GNOME) inseriranno nel file quanto segue (si

27
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
solutions

FIGURA 3 Compiz Fusion in GNOME to si starà utilizzando


il driver NVIDIA. Ul-
teriori informazioni
sono disponibili nella
pagina Wiki di Ubun-
tu [2].

X server
Gli utenti NVIDIA
sono molto più fortu-
nati degli utenti ATI:
per il proprio X server
possono scegliere tra
Xgl e AIGLX. La cosa
gradevole di AIGLX
è che è implementato
in X.Org 7.1, pertanto
si può abilitarlo senza
dover installare nulla.
Inoltre, non si deve
creare una session se-
parata per effettuare il
login. La sola cosa ne-
cessaria da fare è mo-
dificare alcuni file di
configurazione. Infine,
AIGLX non richiede
una sessione separata,
a differenza di Xgl.
Xgl è meno stabile e
Name=Xgl richiede il pacchetto xgl-server (e per gli utenti GNO-
Comment=Start an Xgl Session ME, l’installazione del pacchetto DBUS), ma richie-
Exec=/usr/bin/startxgl.sh de una minore configurazione.
Icon=
Type=Application AIGLX
Per utilizzare AIGLX, aprire in un editor di testo il
Salvare ed effettuare il logout della sessione. Quan- file:
do appare il login manager, scegliere Xgl come tipo
di sessione. Ed è tutto! A questo punto gli utenti di /etc/X11/xorg.conf
schede ATI possono passare al paragrafo “Compiz
Fusion”. Assicurarsi che nella sezione «Module» si abbia
quanto segue:

Load “dri”
Schede video NVIDIA
Load “dbe”
Load “glx”
Il driver
Come accade per gli utenti ATI, sono disponibili di- e che nella sezione “Device” si abbia:
verse opzioni anche per i possessori di schede NVI-
DIA. Il driver più diffuso è il software free nv. Ma Option “XAANoOffscreenPixmaps”
come accade per gli utenti ATI, le migliori presta-
zioni per Compiz Fusion sembra si ottengano con Può essere necessario aggiungere quanto segue alla
il driver proprietario di NVIDIA (opportunamente sezione “Device”:
chiamato nvidia).
Per prima cosa, aggiornare il proprio sistema. Quin- Option “AddARGBGLXVisuals” “True”
di, accertarsi che siano installati i pacchetti linux-re-
stricted-modules-generic e restricted-manager. Selezio- Infine, accertarsi che sia abilitato quanto segue (pro-
nare System/Administration/Restricted Drivers Manager babilmente alla fine del file):
(in Kubuntu Settings/Restricted Drivers Manager), o
eseguire restricted-manager come root (da terminale Section “DRI”
eseguire sudo restricted-manager). Dopo aver fornito la Mode 0666
password, abilitare l’opzione NVIDIA. A questo pun- EndSection

28
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
solutions

FIGURA 4 Finestre oscillanti mentre si gioca a Klondike glx:pbuffer &


DISPLAY=:1
exec startkde

E infine, gli utenti Xu-


buntu (Xfce) dovranno
scrivere:

#!/bin/sh
Xgl :1 -fullscreen -ac -accel
xv:fbo -accel glx:pbuffer &
DISPLAY=:1
exec xfce4-session

A questo punto salvare e


chiudere il file. Renderlo
eseguibile (da terminale
sudo chmod +x /usr/bin/
startxgl.sh). Ora create un
nuovo file (sempre come
root) nella posizione

/usr/share/xsessions/
xgl.desktop.

E in esso inserite quanto


segue:

[Desktop Entry]
Section “Extensions” Encoding=UTF-8
Option “Composite” “Enable” Name=Xgl
EndSection Comment=Start an Xgl Session
Exec=/usr/bin/startxgl.sh
Con ciò AIGLX è così configurato. Icon=
Type=Application
Xgl
Non ve la sentite di modificare tutte quelle opzioni Salvare ed effettuare il logout della sessione. Dal lo-
di configurazione? Preferite un approccio più sangui- gin manager, scegliere Xgl come tipo di sessione.
gno? Xgl è la risposta per voi. Per prima cosa, instal- È tutto! E ora passiamo a Compiz Fusion.
late il pacchetto xserver-xgl nel repository universe.
Quindi, create un file di testo (come root)
nella posizione
FIGURA 5 Massimizzazione di KPat
/usr/bin/startxgl.sh

Il contenuto del file dipende da quale am-


biente desktop utilizzerete. Gli utenti Ubun-
tu (GNOME) scriveranno (al solito, DBUS è
necessario per il login GNOME):

#!/bin/sh
Xgl :1 -fullscreen -ac -accel xv:fbo -accel
glx:pbuffer &
DISPLAY=:1
dbus-launch --exit-with-session gnome-
session

Mentre gli utenti Kubuntu (KDE) inseri-


ranno:

#!/bin/sh
Xgl :1 -fullscreen -ac -accel xv:fbo -accel

29
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
solutions

FIGURA 6 Il magico effetto Aladdin gpg --export --armor 81836EBF | sudo


apt-key add -

Ora aggiornate il sistema.

Installazione di Compiz Fusion


È infine il momento di installare Compiz
Fusion! Gli utenti Ubuntu (GNOME) e Xu-
buntu (Xfce) dovranno installare i seguenti
pacchetti:

• compiz
• compiz-gnome
• compizconfig-settings-manager
• compiz-fusion-plugins-extra
• compiz-fusion-plugins-unofficial
• libcompizconfig-backend-gconf

Mentre gli utenti Kubuntu (KDE) dovran-


no installare:

• compiz
Compiz Fusion • compiz-kde
• compizconfig-settings-manager
• compiz-fusion-plugins-extra
Prerequisiti di installazione • compiz-fusion-plugins-unofficial
Per prima cosa, accertatevi che siano disinstallati i • libcompizconfig-backend-kconfig
pacchetti
Assicuratevi di trovarvi in una sessione Xgl (o che
• compiz-core sia abilitato AIGLX). Ora è il momento della verità!
• desktop-effects Eseguire il comando:

(il pacchetto ubuntu-desktop può essere rimosso). compiz --replace


Quindi, aggiungete i nuovi repository nel file /etc/apt/
sources.list: Se le finestre mostrano uno sfarfallio, perdono le bar-
re dei titoli e poi riappaiono, Compiz Fusion è in ese-
# Treviño’s Ubuntu feisty EyeCandy Repository cuzione. Per ulteriore verifica, spostate una finestra.
# (GPG key: 81836EBF - DD800CD9) Se si comporta diversamente dal normale, Compiz
# Many eyecandy 3D apps like Beryl, Compiz, Fusion è in esecuzione! Per configurare Compiz Fu-
# Fusion and kiba-dock snapshots sion, eseguire ccsm o System/Preferences/CompizConfig
# built using latest available (working)
# sources from git/svn/cvs. FIGURA 7 Giocare “letteralmente” con i temi Emerald

deb http://download.tuxfamily.org/3v1deb
feisty eyecandy
deb-src http://download.tuxfamily.org/
3v1deb feisty eyecandy

Gli utenti a 64-bit dovranno invece utiliz-


zare:

deb http://download.tuxfamily.org/3v1deb
feisty eyecandy-amd64
deb-src http://download.tuxfamily.org/
3v1deb feisty eyecandy-amd64

È anche necessario aggiungere la chiave


GPG. Per farlo, eseguire da terminale il se-
guente comando:

gpg --keyserver subkeys.pgp.net --recv-keys


81836EBF

30
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
solutions

Settings Manager (gli utenti Kubuntu lo troveranno in [2] Howto per schede Nvidia - https://help.ubuntu.com/
Settings/CompizConfig Settings Manager). community/BinaryDriverHowto/Nvidia
[3] Avvio automatico dei programmi - http://gentoo-
Per far sì che Compiz Fusion sia eseguito automatica- wiki.com/HOWTO_Autostart_Programs
mente al login, aggiungere ai comandi di startup del
sistema:
Risorse
compiz --replace
• Homepage di Compiz Fusion -
(il Wiki di Gentoo ha un ottimo articolo su come fare http://www.opencompositing.org/
ciò [3]). • Vecchia homepage di Compiz - http://compiz.org/
Vi piacciono le decorazioni Emerald delle finestre • Blog di Compiz Fusion -
fornite con Beryl? Gli utenti Compiz Fusion possono http://smspillaz.wordpress.com/
utilizzarle! Assicuratevi che sia installato il pacchetto • Forum su Compiz Fusion -
emerald-themes (installerà anche Beryl, pertanto non http://forum.compiz-fusion.org/
sorprendetevi se è un pacchetto pesante). Poi esegui- • Articolo nel Wiki di Ubuntu su Compiz Fusion -
te: https://help.ubuntu.com/community/
CompositeManager/CompizFusion
compiz --replace -c emerald &
Versione italiana pubblicata su licenza di The Open Mind
invece di Company

compiz --replace

Note Biografiche
Andrew Min è un giornalista, amante di Linux Kubuntu,
Riferimenti che collabora con diverse riviste online come Free Software
Magazine, Full Circle Magazine e Mashable.com
[1] Howto per schede ATI - https://help.ubuntu.com/
community/BinaryDriverHowto/ATI

31
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
cutting edge

iTV Format per la


Televisione
Digitale Terrestre

Ü di Fabio Ramacciani

E’ noto come il successo di un’applicazione a valore aggiunto introdotti dalla televisione


interattiva in genere dipenda dal suo grado di digitale e soprattutto per quelli al servizio
usabilità, cioè dalla sua rispondenza a criteri delle Pubbliche Amministrazioni; i Portali
di efficacia, efficienza e soddisfazione nella TV sono progettati infatti con l’intento di
navigazione del servizio. Compito dell’usabi- abbattere il cosiddetto digital-divide, ovve-
lità è fare in modo che il modello mentale di ro le barriere che ancora esistono tra quel-
chi ha progettato il software (design model), la parte della popolazione che ha accesso ai
da cui deriva il suo reale funzionamento, cor- servizi informatizzati erogati tramite la Rete
risponda il più possibile al modello mentale Internet e coloro che, per motivi di ordine
del funzionamento del software così come se culturale, economico e/o sociale, non hanno
lo costruisce l’utente finale (user model). accesso ad essi ed ai vantaggi che introduco-
L’usabilità nasce dunque soprattutto come no nella vita quotidiana.
ausilio alla progettazione e si applica in
particolare alle interfacce informatiche. E’
con l’interfaccia di un software, infatti, che Target di utenza
l’utente si relaziona: ad ogni sua azione l’in-
terfaccia proporrà un risultato, un cambia- La rete Internet, inizialmente indicata come
mento di stato. Poco importa, ai fini dell’usa- canale preferenziale per un rapporto più di-
bilità, come l’interfaccia sia giunta a quello retto tra Pubblica Amministrazione e citta-
stato, attraverso cioè quali meccanismi di dini, alla luce dell’impossibilità di superare,
programmazione, che rimangono racchiusi almeno per ora, quegli ostacoli che ancora
in una vera e propria scatola nera impermea- esistono nell’affrontare un suo utilizzo, di-
bile all’utente. venta solo uno dei canali per realizzare tale
Se questa considerazione è valida per le ap- obiettivo. I servizi erogati oggi sulla rete
plicazioni informatiche in genere, essa assu- Internet sono infatti accessibili solo da una
me una connotazione e un’importanza anco- parte della cittadinanza, cioè a coloro che
ra più forte quando si parla dei nuovi servizi non hanno alcun genere di problema ad uti-

33
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
cutting edge

FIGURA 1 Telecomando del digitale pretendendo che l’interazione con la TV sia “istan-
terrestre taneamente” coinvolgente (vedi il fenomeno dello
zapping).
Lo spettatore televisivo si caratterizza anche per una
limitata soglia d’attenzione che contraddistingue la
sua interazione con il mezzo. Molti elementi entra-
no in gioco nel favorire tale dinamica: la variabile
distanza dallo schermo e la possibilità di modificare
la posizione del corpo (seduto o disteso o in piedi),
la difficoltà di lettura a video, l’essere facilmente sot-
toposti a distrazioni causate da varie fonti esterne e
spesso dalla naturale curiosità dell’individuo verso
altri programmi televisivi o verso la contemporaneità
offerta dall’intero palinsesto. Tutto questo limita no-
tevolmente l’impegno e la concentrazione che un cit-
tadino spettatore dedicherà, ad esempio, ad un testo
su TV, anche se di notevole importanza per esso.
Di conseguenza il medium televisivo può essere di
primaria importanza per erogare servizi a distanza
che potranno essere a disposizione di ogni cittadi-
no in modalità “alway on”, a patto però che i servizi
offerti ed i relativi testi siano progettati ed orientati
con la massima chiarezza, immediatezza ed essenzia-
lità della comunicazione visiva e testuale.

Caratteristiche del mezzo


La TV come medium differisce in molti aspetti da
mezzi di comunicazione come la stampa ed il web:
lizzare un computer e ad avviare una connessione; sfrutta prevalentemente le potenzialità della comuni-
molta parte resta invece fuori dal beneficio di usu- cazione visiva grazie alle caratteristiche dell’imma-
fruire di un servizio erogato a distanza. gine e della multimedialità. L’utente si abitua ad os-
La televisione, invece, ancora percepita come elettro- servare il flusso d’immagini e a modificare la propria
domestico e ampiamente diffusa nelle case degli ita- emotività in base al suo scorrimento “momentaneo”,
liani, si pone come mezzo che più facilmente riesce a al quale corrisponde una relativa decodifica da par-
raggiungere un vasto pubblico e adatta a non esclu- te dell’osservatore che risulta essere istantanea nella
dere nessun potenziale utente: può quindi avvicinare quasi totalità dei casi.
anche quella parte di utenza che non ha la capacità o La funzione televisiva si differenzia da quella del web
le possibilità di utilizzare un personal computer: un per molti fattori: il fatto che chi si pone di fronte al
mezzo dunque che potenzialmente, riesce ad elimi- personal computer ha un tipo di alfabetizzazione in-
nare un divario ancora più forte tra persone infor- formatica che non è richiesta ad un utente televisi-
matizzate e persone che non hanno accesso a sistemi vo. Inoltre cambiano gli atteggiamenti di fruizione
informatici. dell’utilizzatore e le sue aspettative d’interazione: di
E’ quindi a questa larga parte della cittadinanza che fronte ad un computer, un utente si pone “in avanti”
i portali televisivi si rivolgono: a tutti coloro che tro- e in maniera proattiva (uso del computer per lavo-
vano semplice ed immediato l’utilizzo del mezzo te- ro), mentre di fronte alla TV è “indietro”, in maniera
levisivo, che richiede solo uno sforzo minimo di user reattiva (uso del mezzo televisivo per divertimento).
experience. Queste considerazioni obbligano gli attori della dif-
La Televisione digitale come medium generalista fusione della televisione interattiva ad interrogarsi
aderisce perfettamente al bisogno di raggiungere su questioni che trascendono le considerazioni abi-
target “difficili” per il web: basti pensare a quelle ca- tuali e riflettono sulla maniera migliore di sfruttare
tegorie di persone, ad esempio gli anziani, che pre- in pieno le potenzialità di questo “nuovo” mezzo di
sentano una bassa informatizzazione o a coloro che comunicazione, allo scopo di renderlo realmente un
dispongono di poco tempo libero all’interno della servizio utile.
giornata per “cercare” informazione nel web.
Le osservazioni riguardanti gli approcci tipici del-
l’uso dei diversi media hanno inoltre mostrato che, Progettazione User Centred
generalmente, chi usa il web riesce a focalizzare la
propria attenzione anche per diverse ore verso il
proprio obiettivo, mentre chi fruisce del mezzo te- Un servizio è ritenuto usabile quando l’utente finale
levisivo si pone in un atteggiamento quasi di attesa non trova difficoltà nel suo utilizzo, raggiunge con fa-

34
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
cutting edge

FIGURA 2 Il format “Film” altro problema è ottenerla. Proprio come


Internet ha avuto bisogno di 10 anni per
riuscire a codificare una serie di regole
pratiche non potendo semplicemente mu-
tuare quelle già esistenti per lo sviluppo
di applicativi, allo stesso modo dobbiamo
inventarci le regole per la TV digitale in-
terattiva.
Anche se stiamo ancora assistendo a tenta-
tivi di applicare a questo media precedenti
esperienze fatte per altri media interattivi,
l’unico insegnamento che possiamo vera-
mente trarne è il costo di una scarsa usa-
bilità.
Ci aspettano dunque studi completamente
orientati a questo “nuovo” mezzo di comu-
nicazione senza necessariamente seguire le
orme di un’altra tecnologia, dotata di altri
hardware, altri software, altri scopi, fruita
in differenti modalità e contesti d’uso e ri-
volta ad altre tipologie di utenza.

Le applicazioni interattive
cilità, rapidità e soddisfazione i contenuti per lui in- • Accesso. In uno scenario d’uso tipico del televi-
teressanti e nell’operatività, soprattutto dei servizi in- sore in un’ottica analogica, l’utente assiste ad un
terattivi; non prova nessun senso di frustrazione, ma tradizionale programma televisivo con un atteg-
riesce ad avere pieno controllo del servizio interatti- giamento prevalentemente passivo. La presenza
vo. Il vero “attore” dell’applicazione è quindi l’utente di un’applicazione interattiva deve perciò essere
che deve essere al centro della progettazione: le scelte segnalata e le modalità di accesso devono essere
devono essere effettuate sempre allo scopo di creare veloci semplici e chiare.
un ambiente a lui familiare, iniziando con il rende-
re trasparente ed invisibile la tecnologia, perché egli • Struttura. Condizione necessaria alla facilità d’uso
possa focalizzare sull’obiettivo e non sul mezzo, pos- di una applicazione è che la sua struttura sia chia-
sa acquisire velocemente un certo grado di esperienza ra ed intuitiva per gli utenti. Per farlo è opportuno
d’uso e non senta mai il bisogno di accedere all’area separare i contenuti dai comandi, assegnare alle
“Aiuto” per l’esplorazione e l’utilizzo dei servizi. varie componenti sempre le stesse aree, esempio
Mettere l’utente al centro della progettazione vuol possono essere il logo ed il flusso video.
dire calarsi nelle sue esigenze e nelle sue difficol-
tà, cercare di capire come è più logico organizzare • Navigazione. La possibilità di interagire con l’ap-
i contenuti in un ambiente virtuale, comprendere e plicazione in modo semplice ed intuitivo dipen-
analizzare i suoi modelli, la sua personale interpreta- de dalla modalità con cui sono organizzate e dalla
zione del funzionamento del sistema da confrontare modalità con cui queste possono essere seleziona-
e paragonare con l’effettivo modello del sistema, cioè te.
come esso funziona realmente. Vuol dire analizzare
e valutare le reali esperienze d’uso, le caratteristiche • Orientamento. L’interfaccia di un’applicazione è
dei target individuati con confronti continui e diret- di tipo nascosto, nel senso che l’utente non è in
ti in reali contesti d’uso, con interazioni periodiche grado di vedere immediatamente l’effetto delle
tramite test d’usabilità o tecniche d’indagine (inter- sue azioni. Per sapere che l’interazione è andata a
vista, questionari, focus group) che possono servire buon fine, l’utente ha bisogno che l’applicazione
per capire quali sono i bisogni degli utenti e quali le restituisca un feedback appena il processo si con-
competenze informatiche o la conoscenza del sistema clude. Il feedback è importante soprattutto con
di ogni specifica categoria di utenza. l’utente che impara come meglio interagire con
l’applicazione.

Una parentesi • Interazione. Alcune applicazioni interattive ri-


chiedono che sia l’utente a fornire informazioni
La TV digitale interattiva non è il web: se i principi al servizio. Queste informazioni vengono inseri-
dell’usabilità sono oramai consolidati, non per que- te tramite la digitazione di testo attraverso l’uso
sto lo sono le tecniche per ottenerla sui diversi me- di un telecomando; l’operazione risulta lunga e
dia: misurare l’usabilità è relativamente facile, ben complessa, tanto che nei box interattivi di ulti-

35
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
cutting edge

FIGURA 3 Il format “Telefilm”


• Testo. La natura del mezzo
televisivo è molto diversa da
quella di altri mezzi di comu-
nicazione che erogano infor-
mazioni di tipo testuale come
la stampa: la sua fruizione è
di natura prettamente visiva
dal momento che si basa sulla
multimedialità. I testi erogati
in televisione richiedono dun-
que tutta una serie di accorgi-
menti che necessariamente li
differenziano da quelli fina-
lizzati all’erogazione su altri
mezzi e che sono volti a ren-
dere la lettura meno faticosa
possibile.
Rispetto al mezzo televisivo,
la carta stampata consente
una lettura più riflessiva ed
un maggiore controllo da par-
te del fruitore, che può mano-
vrare il testo in maniera molto
più agile: può tenerlo ad una
distanza ravvicinata, sottoli-
nearlo, sfogliarlo mantenendo
la compresenza visiva di due
pagine, senza per questo sacrificare la leggibilità del
testo. Inoltre, la lettura su carta stampata è abituale e
La TV digitale in- non stanca eccessivamente la vista come succede per
il video che emana luce artificiale.
terattiva non è il
web: se i principi Progettare contenuti per la televisione
digitale
dell’usabilità sono
Digitalizzazione e compressione rendono possibile la
oramai consolidati, convergenza di contenuti e codici provenienti da me-
dia diversi. Se tutte le informazioni vengono tradotte
non per questo lo in bit come una sorta di “DNA dell’informazione”, la
loro mescolanza rende possibile la nascita della mul-
sono le tecniche per timedialità interattiva come combinazione di audio,
ottenerla sui diversi video, dati su supporti quali cd-rom, dvd e su canali
di comunicazione quali le reti a banda larga, il satel-
media lite, il digitale terrestre. Questa e’ l’integrazione delle
telecomunicazioni e delle comunicazioni di massa in
un solo medium.
In questo scenario di convergenza tra reti la TV digi-
tale diventa parte del sistema integrato dei media. I
ma generazione sono disponibili software che classici paradigmi comunicativi sono legati alla spe-
facilitano la scrittura del testo come ad esempio cificità del medium televisivo (one-to-many), della
il T9. Purtroppo i nuovi set-top-box non sono an- telefonia (one-to-one) e della rete, il più complesso
cora abbastanza diffusi. E’ perciò necessario por- e flessibile, in cui convivono i primi due ma anche il
re particolare attenzione in fase di progettazione many-to-many e il peer-to-peer. La tecnologia con-
alla modalità di introduzione di stringhe di testo. sente di ibridare le differenti logiche comunicative,
Per la compilazione dei form si possono utilizza- cadono le barriere tecnologiche della connettività
re modalità diverse dalla tastiera del telecomando, tra media e si sviluppa un sistema in cui ciascun me-
quali l’uso delle frecce del telecomando per sele- dium non occupa solo il proprio posto accanto agli
zionare e confermare i caratteri di una stringa e altri ma ne invade lo spazio (come la televisione sui
vari tipi di tastiera virtuale che utilizzano solo le dispositivi cellulari) e a sua volta viene invaso (quan-
frecce per selezionare il carattere ed il tasto OK do si riesce a portare i ‘videogames’ in televisione). Si
per confermarle sul campo. produce una radicale rivoluzione dei paradigmi co-

36
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
cutting edge

FIGURA 4 Il format “Eventi” pressione dei segnali di codifica,


sulle stesse frequenze della tele-
visione tradizionale, dove prima
c’era un solo canale, ora ce ne sono
quattro con in più i servizi inte-
rattivi. Senza necessità di antenna
satellitare si può accedere ad un’of-
ferta caratterizzata

• da un maggior numero di cana-


li televisivi e una migliore qualità
dell’immagine e del suono

• dalla possibilità di interagire con


le trasmissioni preferite, di accede-
re a contenuti, informazioni sup-
plementari, giochi, acquisto di
prodotti, di servizi e di programmi
televisivi.

Il Digitale Terrestre in Italia offre


complessivamente 28 canali tv na-
zionali gratuiti e interattivi. La Rai
è presente nella Televisione Digita-
le Terrestre con una vasta offerta di
canali televisivi, radiofonici e ser-
vizi.

municativi che permette la comunicazione in tutti i


modi possibili, indipendentemente dalla rete su cui Il decoder
l’utente si trova e dal tipo di mezzo. L’aspirazione è di
rendere la tecnologia trasparente. Il Decoder o Set Top Box e’ una “scatola” che riceve il
segnale proveniente da parabola, cavo o antenna ter-
I new media, come dimostra la storia dei mezzi di restre, lo decodifica e invia al televisore il program-
comunicazione, non scalzeranno i “vecchi” media ma televisivo. Esistono due fasce di decoder, la pri-
e non determineranno l’esclusione di un paradigma ma raccoglie i tipi base e si comporta esclusivamente
comunicativo a favore dell’altro né la completa sosti- come adattatore del segnale; nella seconda fascia tro-
tuzione del primo con il secondo ma costringeranno viamo i box evoluti che aggiungono alla trasmissione
questi ultimi a riposizionarsi nel nuovo scenario. La funzioni multimediali, interattive e sono equipaggia-
televisione è chiamata ad affrontare la sfida di questo ti con modem e lettore di smart-card.
riassetto tecnologico che è anche riconfigurazione del
suo ruolo culturale, sociale e comunicativo. Il telecomando incluso nel box interattivo della se-
conda fascia e’ composto da tasti che hanno un signi-
Il digitale è il linguaggio comune attraverso cui si rea- ficato simbolico. Durante la fase di sviluppo di una
lizza la convergenza dei media. Le immagini, i suoni applicazione interattiva e’ opportuno avere chiara la
ed i dati possono unirsi, integrarsi e completarsi. La disposizione e la funzione degli eventi associati alla
tecnica digitale e’ più efficiente di quella analogica pressione di ogni tasto perchè la continuità delle scel-
perché utilizza sistemi di compressione dei segnali. te passate rappresenta il criterio di usabilità destinato
Al posto di ogni programma TV trasmesso in ana- all’utente. E’ opportuno associare la pressione di un
logico e’ oggi possibile diffondere, con il digitale tasto ad un significante che veicola un significato al
terrestre, fino a cinque programmi TV, canali audio televisore; concetto fondamentale in quanto, essen-
aggiuntivi e flussi di dati. Il Digitale terrestre e l’ana- do la televisione digitale terrestre un nuovo media, è
logico hanno in comune lo stesso mezzo di trasmis- necessario renderlo facile da comprendere all’utente,
sione: ogni trasmettitore serve un’area corrisponden- evitando di modificare il “significato” di un tasto.
te circa a quella di una provincia italiana. Questo si-
gnifica che, a differenza del satellite, anche il digitale I tasti che hanno un significato prestabilito sono:
potrà differenziarsi attraverso contenuti locali speci-
fici per ogni territorio come le trasmissioni regionali Tasto Back: è il tasto che permette, una volta lancia-
per televisione. to un servizio interattivo, di tornare alla pagina pre-
cedente
La Televisione Digitale Terrestre rappresenta l’evolu- Tasti Freccia: con le frecce direzionali l’utente si
zione della televisione tradizionale. Grazie alla com- muove in ogni schermata, seleziona la voce desidera-

37
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
cutting edge

FIGURA 5 Il format “T-Government” se consideriamo inte-


rattivo il modo parte-
cipativo con cui i te-
lespettatori si tuffano
nel flusso audiovisivo
e ne estraggono alcu-
ni frammenti, li cor-
relano e li rielaborano
in base al proprio ba-
gaglio di conoscenze,
attitudini, desideri ed
emozioni.
In senso proprio l’in-
terazione è qualcosa
di ben più complesso:
consiste nella possi-
bilità di reagire al se-
gnale televisivo con
un concreto segnale,
trasmesso su un cana-
le di ritorno. L’azione
di feedback può essere
veicolata sia da black
boxes che si affianca-
no al televisore, sia da
tecnologie extratele-
visive: il telefono, il
cellulare e Internet.
Negli ultimi tempi lo
sviluppo delle tecno-
logie in fibra ottica che
consentono la piena
ta e conferma con il tasto “OK”. bidirezionalità dei segnali, realizza la vera e propria
Tasto Ok: quando richiesto dal servizio interattivo, interattività che consente ai telespettatori/utenti di
si utilizza questo tasto per confermare la selezione di costruire il proprio palinsesto e interagire con i con-
un contenuto all’interno della pagina. tenuti audiovisivi.
Tasto Exit: si utilizza questo tasto per uscire dal ser-
vizio interattivo. Per merito del digitale, dei canali di trasmissione bi-
Tasto Menu: con questo tasto si visualizza l’elenco direzionali e degli strumenti in grado di inviare i se-
delle opzioni di configurazione del decoder. gnali oltre che a riceverli come i set top box, il flusso
Tasti Alfanumerici: alcuni servizi delle applicazioni comunicativo della televisione un tempo monodire-
interattive possono richiedere l’uso della tastiera alfa- zionale ed asimmetrico, diviene bidirezionale e sim-
numerica, es. selezionare alcune voci del menu oppu- metrico. Ad ogni input dell’utente corrisponde un
re scrivere i propri dati. output del mezzo televisivo in tempo reale.
Tasto Rosso: si utilizza per avviare il servizio interat-
tivo e accedere all’interattività quando compare, nel- L’interattività come paradigma nella comunicazione
l’angolo in basso a sinistra dello schermo il segnale di televisiva offre nuove esperienze di consumo, ma pri-
TV interattiva. ma che come condizione tecnologica essa va intesa
Tasti verde, giallo e blu: i tasti colorati consentono come processo sociale: essa si completa solo con una
di accedere facilmente ad aree specifiche dell’appli- decisa azione di risposta dell’utente. Il fulcro del-
cazione. l’esperienza multimediale rimane il consumatore il
Tasto Txt: viene usato per ripristinare la normale quale comincia a sviluppare con il prodotto e con il
dimensione del segnale video del canale riducendo fornitore di esso un rapporto basato non solo sul con-
la grafica del servizio interattivo a semplice sovrim- sumo ma anche sull’interazione.
pressione grafica. Gli operatori devono introdurre sistemi di agevola-
zione alla nuova offerta interattiva, guidando l’uten-
te, “formandolo”, rendendo la tecnologia per quanto
Interattività possibile trasparente e riducendo sempre di più le
barriere all’accesso. “Keep it simple” e’ una regola
Da un certo punto di vista la televisione è sempre d’oro.
stata interattiva, se diamo a questo termine il signi-
ficato di semplice interazione individuo-televisore e Il televisore diviene il punto d’accesso ad una serie di

38
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
cutting edge

FIGURA 6 T-Informo tà locale” perché le in-


formazioni o i servizi
richiamate dall’utente
provengono dal set-
top-box. Il nuovo te-
letext multimediale,
le informazioni relati-
ve ai programmi che
si stanno guardando,
l’Electronic Program-
me Guide ovvero la
guida all’offerta nel
suo complesso carat-
terizzano la cosiddetta
“enhanced television”.
Sono le applicazioni
interattive che arric-
chiscono il prodotto
televisivo con conte-
nitori, informazione,
intrattenimento, quiz,
film, fiction e contenu-
ti aggiuntivi correlati
al programma come
testo, immagini fisse e
video aggiuntivi. Ma
anche PortalTV come
il Teletext e l’EPG. Il
teletext è traduzione
dei contenuti tipici del
servizi: questi possono accompagnare il flusso televi- teletext analogico (news, meteo, sport, palinsesto)
sivo sovrapponendosi ad esso o divenire una vera e con i vantaggi della multimedialità. L’Electronic
propria alternativa al tradizionale consumo televisivo Program Guide offre la posizione di tutti i canali
come con i prodotti e i servizi on demand. Ai prodot- sulla piattaforma permettendo di accedervi diret-
ti come li conosciamo e definiamo, si affiancheranno tamente. Si tratta di servizi interattivi disponibili
gradualmente programmi i cui contenuti saranno la 24ore al giorno, non correlati al contenuto televi-
risultante delle interazioni, degli scambi e delle rela- sivo. Teletext ed EPG sono in genere fruibili du-
zioni generate nei media di convergenza. rante la visione di ogni canale televisivo.
La strategia attuata in questo momento da parte del-
la maggior parte dei broadcaster è quella di utilizzare • Interattività elementare. Aggiunge al precedente la
l’interattività come elemento di rinforzo della televi- possibilità per l’utente di interagire con il cen-
sione classica più che una vera interazione bidirezio- tro servizi consentendo l’introduzione di servizi
nale cui non si è ancora preparati in quanto questa ri- bidirezionali come la pubblicità interattiva, l’ho-
chiede un forte mutamento nei comportamenti d’uso me-banking e il tele-shopping. In questo ambito
della tv. Approfondimento, personalizzazione e par- vanno ricollocati ulteriori servizi come i sondaggi,
tecipazione sono i principali effetti dell’applicazione le scommesse, le votazioni, la partecipazione a gio-
di funzioni interattive alla tradizionale programma- chi, pratiche che possono essere esercitate anche
zione di flusso, ma il “vecchio” flusso televisivo si è in combinazione con programmi televisivi. Que-
dimostrato fondamentale nel favorire il decollo dei sto profilo, a differenza del precedente, richiede
nuovi servizi interattivi in quanto continua a costi- la presenza di un canale di ritorno costituito dal
tuire il fulcro della comunicazione televisiva. doppino telefonico. La pubblicità interattiva può
essere proposta in forma di spot, tele-promozione
e banner. Rispetto a quella tradizionale consente
Esistono diverse tipologie di interattività: al telespettatore di interagire attraverso il tele-
comando per chiedere ulteriori informazioni sul
prodotto pubblicizzato, acquistarlo, partecipare ai
• Interattività locale. Non prevede un canale di ritor- concorsi ed ai giochi collegati all’inserzione.
no, offre la possibilità di arricchire i servizi televi-
sivi tradizionali con contenuti multimediali, per- • Interattività evoluta. Offre la possibilità di accedere
mette la gestione del flusso televisivo in termini a servizi di tipo Internet, navigando su contenuti
di scelta tra diverse inquadrature o tracce audio. web e consente di effettuare vere e proprie tran-
Queste applicazioni sono definite ad “interattivi- sazioni commerciali tipiche degli attuali servizi

39
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
cutting edge

di e-commerce. All’interno di questo ambito esi- cazione interattiva che include elementi predefiniti
stono due modelli di riferimento: uno a circuito in posizioni predefinite. Sono state individuate di-
chiuso e protetto, denominato “walled garden” in verse tipologie di programmi e quindi tipi di “TV
cui tutte le transazioni e gli altri servizi interattivi Format”.
passano attraverso il broadcaster; il secondo aper-
to, con l’accesso anche a Internet direttamente dal • Film. Il format denominato “film” é fortemente le-
decoder televisivo. Anche l’invio di videomessag- gato a questo genere, la visione è accompagnata da
gi, pratica inaugurata con il debutto dei terminali un’applicazione interattiva che offre informazioni
di telefonia mobile di terza generazione, rappre- sul film in onda. Lo standard permette l’inseri-
senta una forma di interattività evoluta. In genere mento di tre aree che devono essere: Trama, Regia
le applicazioni ad interattività evoluta permetto- e Cast. L’utente con il telecomando può muoversi
no l’accesso a servizi dedicati di tipo t-commerce all’interno di questo spazio e navigare l’intera ap-
(commercio elettronico tramite tv digitale, servizi plicazione.
informativi e transattivi che permettono all’utente
si consultare orari dei treni, acquistare biglietti ae- • Fiction. Questo layer è di tipo invasivo perché ri-
rei o altri prodotti), t-government (servizi di pub- duce il flusso video a 3⁄4 e le aree navigabili pre-
blica utilità, applicazioni interattive per la pubbli- senti all’interno non aumentano rispetto al format
ca amministrazione, la trasposizione nel digitale film .Le motivazioni che hanno spinto alla defini-
terrestre dei servizi di e-government), t-learning zione di questo standard sono dovute principal-
(formazione a distanza, con trasmissione di con- mente all’importanza delle fiction ed alla loro du-
tenuti formativi e di aggiornamento professionale rata. E’ probabile, infatti, che l’applicazione verrà
con possibilità di interagire con docenti, scarica- utilizzata dal telespettatore per ogni puntata della
re materiali di formazione, ottenere certificati di serie, per questo motivo è prestata particolare at-
partecipazione al corso prescelto), t-gaming (gio- tenzione al layout grafico che deve risultare grade-
chi i cui contenuti abbiano un nesso con program- vole ed accessibile nello stesso momento.
mi o personaggi del canale con finalità di fideliz-
zare l’utente) • Telefilm. Per i telefilm vengono rispettati gli stessi
principi delle fiction poiché i prodotti sono affini
• Interattività bi-direzionale. Ha a che vedere con i e la tipologia di pubblico è la stessa.
servizi caratterizzati da un’interattività simmetri-
ca, vale a dire un’uguale trasporto di dati sulla rete • Varietà e reality. Questi TV Format sono dedica-
di comunicazione in entrambe le direzioni sor- ti alle trasmissioni televisive a forte impatto con
gente-utente. I servizi ad alta interattività permet- il pubblico. L’applicazione interattiva è presen-
tono una forte gestione dei contenuti da parte dei te esclusivamente insieme alla trasmissione e le
singoli utenti e presuppongono una frammenta- componenti con cui è realizzata sono state studia-
zione definitiva delle “audience”. Fanno parte di te per intrattenere e divertire il pubblico con mo-
questa categoria la videocomunicazione e il video menti di gioco condivisi con la diretta televisiva.
on demand attualmente fruibili unicamente sulle Oltre alla possibilità di poter votare lo spettatore
reti di tipo IP o sulle reti via cavo più avanzate. può interagire con il pubblico che sta seguendo il
programma tramite un forum interattivo.
Se la prima opzione verso cui sembrano tendere i
principali broadcaster pubblici e privati conserva • Eventi. Questo tipo di format è caratterizzato da
il linguaggio della TV tradizionale introducendo i una forte personalizzazione in base all’evento che
contenuti interattivi come semplici “aggiunte”, ap- si intende promuovere. A causa dei forti adatta-
pendici ed estensioni che lasciano intatte le dina- menti realizzati ad hoc per ogni applicazione inte-
miche produttive e le normali modalità di fruizione, rattiva non esiste un format delineato.
l’ultima invece impone di pensare l’interattività già
al momento della progettazione e della produzione • Pubblicità. La pubblicità digitale si differenzia in
accettando il rischio che la nuova iTV si trasformi base alla notorietà della marca e allo spot interatti-
nel superamento della televisione tradizionale in un vo che consente una comunicazione bidirezionale
“prodotto” dai confini imprecisi e indefiniti la cui di- tra spettatore ed inserzionista. Il Direct Response
namica appare continuamente “in progress”. TV ovvero la pubblicità come stimolo all’azione
e’ la teoria secondo cui le applicazioni di interac-
tive advertising aumentano la brand awareness e
I TV Format in RAI l’advertising awareness, creando una propensione
all’acquisto più forte di quella generata dai clas-
All’interno della RAI si è deciso di standardizzare le sici spot televisivi. Gli inserzionisti pubblicitari
applicazioni interattive; il motivo principale è dovu- hanno l’opportunità di usare le loro campagne te-
to alla volontà di fidelizzare l’utenza televisiva. E’ levisive in modo più dinamico e coinvolgente ri-
apparso quindi logico fornire layer diversi in base al spetto a prima in quanto sarà possibile permettere
programma ed al tipo di applicazione da realizzare. agli utenti di richiedere una brochure, ricevere un
Un layer o piu’ correttamente, un format è un’appli- campione di prodotto omaggio ed avere un’espe-

40
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
cutting edge

rienza di brand prolungata. il risultato è stato la creazione di pagine e motori di


• TV-Games. Sono dei format non legati a program- ricerca standard che permettessero la navigazione al-
mi televisivi in particolare; si contraddistinguono l’interno del progetto in modo coerente.
per la loro alta interattività e contengono picco-
li videogiochi per intrattenere il telespettatore. Questa serie di servizi sono pensati per ridurre il Di-
Fruibili in ogni momento sono pensati come utile gital Divide della popolazione over 60 che è spetta-
palliativo alla pubblicità e ad evitare il fenomeno trice prettamente televisiva. Al contrario dell’inter-
dello zapping. net-generation ormai esclusivo uso dei nipoti. Se è
quindi la televisione il media preferito dalle persone
• T-Government: I format di T-Government, come anziane, con T-Informo si è voluto proporre una so-
quello di Eventi, sono altamente personalizzabili. luzione vicina a questa fascia di popolazione che po-
Le sezioni al loro interno possono variare consi- tesse informarli od addirittura aiutarli in caso di bi-
derevolmente in base alla regione in cui ci si trova. sogno. Pur essendo pensata per una fascia d’età alta,
Ciò che accomuna queste applicazioni interattive l’applicazione presenta dei servizi anche per i giovani
sono i servizi che le Pubbliche Amministrazioni disoccupati in cerca di lavoro o corsi finanziati dalla
offrono al pubblico, dal semplice servizio di news Regione Lazio.
alla possibilità di controllare lo stato del traffico in Applicando questi concetti il 7 novembre 2006 l’ap-
città. plicazione T-Informo ha vinto il primo riconosci-
mento per la sezione “servizi interattivi” del premio
nazionale ‘La PA che si vede - la tv che parla con te’,
Un case-study: T-Informo organizzato dal Formez in collaborazione con l’As-
sociazione italiana della Comunicazione Pubblica e
RAI Nuovi Media ha realizzato T-Informo, un servi- Istituzionale.
zio di T-Government che permette ai telespettatori
di interagire con la Pubblica Amministrazione nella
maniera meno burocratica e quindi più veloce possi- Conclusione
bile e di cui garantisce un aggiornamento continuo
insieme al Comune di Roma, la Provincia e la Regio- Un Format iTV offre la possibilità di avere elementi
ne Lazio. predefiniti: in termine di design grafico, navigazione
ed usabilità. Questo permette di identificare veloce-
I servizi accessibili sono di diverso tipo: è possibile mente il tipo di applicazione interattiva da sviluppare
avere informazioni sulla temperatura e sulle previ- e sapere con largo anticipo i tempi di sviluppo.
sioni meteo, accedere ad un bollettino sul traffico,
calcolare un percorso stradale all’interno di Roma. Si Un ringraziando le persone che hanno contribuito
può scegliere anche di entrare nella sezione relativa alla realizzazione di questo articolo.
al turismo e alla cultura in cui si trovano itinerari per
un’escursione oppure ricercare biblioteche e musei
nel Lazio. Riferimenti
Per la realizzazione di T-Informo sono stati coinvolti • Raccomandazioni per le interfacce dei servizi
nel progetto vari Enti tra cui l’Atac che, nel caso del interattivi della televisione digitale. Fondazione
servizio per il calcolo del percorso, ha fornito le in- Ugo Bordoni.
formazioni sulle mappe utilizzate dalla piattaforma • BBC eTV Formats January 2004
digitale terrestre Rai. • T-Informo su http://www.mediazone.info

T-Informo oltre a rivestire il ruolo di portale digitale


informativo con una pagina relativa all’informazione
in ogni sezione del progetto, dedica uno spazio inte-
rattivo ad una componente sociale molto a cuore del
cittadino: la sanità. Dall’applicazione interattiva si
può infatti usufruire dei motori di ricerca interni per
trovare una ASL, oppure consultare i servizi ed i re-
parti proposti all’interno di un ospedale. Note Biografiche
Durante lo sviluppo dell’applicazione la RAI è stata Fabio Ramacciani ha maturato la sua esperienza nello sviluppo
affiancata dal gruppo di lavoro del Professore Alberto di applicazioni per la televisione digitale terrestre in NetCat.it.
Sviluppa in Java e C++ per RAI Nuovi Media ed e’ il
Marinelli del Dipartimento di Scienze della Comuni- Responsabile Tecnico del progetto T-Informo. Nel 2006 e’ stato
cazione e Sociologia dell’Università “La Sapienza” di chiamato dalla facolta’ di Scienze della Comunicazione della
Roma. L’impegno reciproco si è proteso per garantire Sapienza di Roma come docente nel corso di “Progettazione
l’usabilità applicativa in modo che l’utilizzo di T-In- contenuti e servizi per tv digitale”. E’ socio dell’associazione
formo sia facile per gli utenti. Lo sforzo si è concen- SS. Pietro e Paolo in Vaticano (Ex-Guardia Palatina d’Onore).
trato e poi distribuito egualmente in tutte le sezioni;

41
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
solutions

Tips & Tricks per


GNU/Linux

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

Ü di Andrew Min

Questo articolo raccoglie alcuni trucchi e la suite KOffice e molto altro. Il che la ren-
suggerimenti su: de perfetta per mostrare la potenza di GNU/
Linux ai propri amici senza interferire nelle
1. Come creare uno stick GNU/Linux live impostazioni dei loro sistemi.
con SLAX (Andrew Min)
2. Come utilizzare terminali “stile Quake”
su GNU/Linux (Andrew Min) Inserire SLAX su un drive USB
3. Come catturare screenshot video con
Scrot (Gary Richmond) Benché SLAX possa non essere utilizzato
4. Come effettuare il backup del Master come ordinario sistema operativo, è possibi-
Boot Record (MBR) (Gary Richmond) le ospitarlo in un dispositivo esterno, come
un drive USB, e portarsi dietro un sistema
GNU/Linux “live”. Ci sono tre vantaggi nel-
1. Come creare uno stick USB GNU/ l’utilizzare un drive USB rispetto a un più
Linux live con SLAX tradizionale CD: è più veloce, permette di
aggiungere al volo file e programmi, e (di so-
Uno più grossi ostacoli all’adozione di GNU/ lito) ha più capacità di memorizzazione. Ci
Linux è il fatto che molti non lo hanno mai sono diversi modi per fare ciò, ma il modo
provato. E qui entra in gioco SLAX. Cos’è più semplice è utilizzare lo script
SLAX? Vi chiederete. SLAX è una distribu-
zione GNU/Linux basata su KDE concepita make_disk
per essere eseguita come sistema operativo
GNU/Linux “live”. In altri termini, cancel- Per prima cosa, si deve formattare il drive
lerà automaticamente ogni sua traccia dal utilizzando un programma come QtParted
computer su cui è in esecuzione una volta o GParted (utilizzare FAT32 su Windows e
che si spegne la macchina. E l’aspetto più ext2 su GNU/Linux). Bisogna poi scaricare
notevole è che contiene tonnellate di sof- l’immagine ISO standard di SLAX da [1] ed
tware utili, compreso KDE, NTFS-3G, tool estrarla con un programma come ISO Ma-
wireless, CUPS, giochi, strumenti di grafica, ster. Se state utilizzando un sistema GNU/
applicazioni multimediali, tool di sviluppo, Linux, utilizzando il comando cd, andate

43
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
solutions

FIGURA 1 La console di NightFall (una mod per Half-Life 2)

nella directory in cui avete estratto l’immagine ISO dei moduli SLAX [4]. Da qui si possono scaricare
e eseguite programmi come OpenOffice.org, giochi, il browser
Firefox e anche ambienti desktop come Xfce o Gno-
./make_disk.sh /dev/sda1 me. Effettuato il download di un programma, biso-
gna copiarlo nella cartella modules dello stick USB. Al
sostituendo /dev/sda1 con il nome del proprio drive successivo avvio di SLAX, cercate il programma nel
(potete individuare il nome eseguendo fdisk -l come K Menu. Se avete necessità di creare un vostro pro-
utente root). Se state utilizzando Windows, eseguite gramma, utilizzate un tool come rpm2mo o deb2mo per
convertire un pacchetto esistente nel formato SLAX.
make_disk.bat E:
SLAX è un ottimo sistema operativo. E abbia-
sostituendo E: con il nome del drive. Ora eseguite il mo appena accennato a ciò che è in grado di fare!
reboot del computer e modificate dal Setup del BIOS Si può creare un proprio SLAX (si veda http:
l’ordine di boot della macchina (consultate il manua- //myslax.bonsonno.org/), creare dei propri moduli
le del vostro computer o leggete [2]) per far sì che il (http://www.slax.org/doc_modules.php) e anche in-
drive USB (o il disco removibile) sia il primo della stallare SLAX su disco rigido (http://tinyurl.com/
lista di boot (con la versione alfa di SLAX 6 bisogna 2weeks). E soprattutto, ora avete un sistema GNU/
utilizzare il metodo descritto in [3]) Linux da mostrare ai vostri amici.

Aggiunta dei programmi


2. Come utilizzare terminali “stile Quake” su
Benché la versione di default di SLAX sia dotata di GNU/Linux
molti strumenti, è sempre utile essere in grado di ag-
giungere e rimuovere dei programmi. Ecco perché Sappiamo tutto su quanto sia potente il terminale
SLAX supporta i moduli, disponibili dalla pagina GNU/Linux. Tuttavia, è una pena dover lanciare un

44
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
solutions

FIGURA 2 Kuake

emulatore di terminale come Konsole o gnome-ter- do, non era né molto tempo fa (a meno che Gennaio
minal, attendere alcuni secondi che si carichi, e poi 2003 non sia realmente “remoto”) né così tanto lonta-
dover premere Alt-Tab per passare a questa finestra. no. Allora, non tanto tempo in un IDE non così lon-
Non sarebbe più semplice avere una finestra termina- tano, è nato Kuake. Martin Galpin ebbe la brillante
le che si nasconde e si mostra automaticamente con idea di creare un front-end stile Quake per Konsole.
clic di un pulsante? Andrò a descrivere tre differente L’idea era di poter premere un “hotkey” (all’epoca,
emulatori di terminale che fanno proprio questo. Ctrl-K) e una finestra Konsole sarebbe apparsa scivo-
lando dall’alto dello schermo. Si può ridimensionar-
Quake è un gioco “sparatutto” molto diffuso creato la, riallinearla e fare molte altre cose. Quando appar-
dalla id Software. Nel gioco vi è un terminal accessi- ve, Kuake ebbe un grosso successo (sfortunatamente,
bile premendo il tasto “~”. Questa finestra terminale lo sviluppo sembra essersi interrotto dopo il rilascio
viene utilizzata per modificare le impostazioni e le di una versione 0.3 “unstable” nel Marzo 2004).
variabili, per mostrare i log e per immettere comandi Anche se Kuake non è stato aggiornato di recente,
e trucchi (per ulteriori informazioni si legga l’articolo si può comunque installarlo. Il sito offre un archivio
Wikipedia [5]). Quake non è il solo programma che tar.gz dei sorgenti ed un pacchetto Debian è disponi-
ha questa funzionalità: Doom, Half-Life, Dark En- bile con il comando
gine, Lithtech e diversi altri giochi e engine di gioco
utilizzano simili console. deb ftp://ftp.berlios.de/pub/kazit/debs

Ubuntu ha un pacchetto kuake nel repository Univer-


Kuake: un terminale alla Quake per KDE se e molte altre distribuzioni dispongono di analoghi
pacchetti. La combinazione di tasti è Alt+”~” (di-
Molto tempo fa in un IDE molto lontano ... D’accor- sponibile dopo aver lanciato Kuake).

45
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
solutions

FIGURA 3 YaKuake anche Tilda decollò,


raggiungendo oltre
12.000 download in
3 anni.
Tilda fornisce un
archivio dei sorgen-
ti tar.gz, ma molte
distribuzioni ne for-
niscono il package.
Una volta installato,
bisogna eseguire

tilda -C

per configurarlo, per


poi eseguire Tilda
con il comando til-
da. Le opzioni sono
disponibili con

tilda -h

è anche disponi-
bile una funziona-
lità a schede: i ta-
sti di accesso sono
Ctrl+Shift+T
(nuova scheda),

YaKuake Ctrl+Shift+PageUp (scheda successiva),


Ctrl+Shift+PageDown (scheda precedente) e Alt+n
Nel frattempo, in un’altra parte della galassia, un pro- (con n che va da 1 a 10).
grammatore francese di nome Francois Chazal stava
lavorando ad una versione fork di Kuake nota come Riferimenti
YaKuake (“Yet Another Kuake”, emulatore di termi-
nale per KDE). YaKuake introdusse diverse caratteri-
stiche, compresa la rinominazione inline delle schede, SLAX
un miglior supporto per Xinerama e le skin. Come [1] Download di SLAX - http://www.slax.org/
per il suo predecessore, la popolarità di YaKuake salì download.php
alle stelle, raggiungendo oltre 25.000 download e me- [2] http://tinyurl.com/b4tc7
ritandosi ben cinque stelle dal famoso repository di [3] Souzione con SLAX 6 - http://slax.linux-live.org/
software Softpedia [6]. forum/viewtopic.php?p=75287#75287
YaKuake è disponibile come archivio dei sorgenti [4] Moduli SLAX - http://www.slax.org/modules.php
tar.bz2. Molte distribuzioni lo offrono come packa-
ge nei propri repository. La combinazine “hotkey” Terminali Quake-style
per lanciare YaKuake (quando è in esecuzione) è [5] http://en.wikipedia.org/wiki/Quake-style_console
per default F12, ma si può modificare a proprio [6] http://www.softpedia.com/reviews/linux/
piacimento (io stesso preferisco la combinazione di YaKuake-Review-30782.shtml
default Alt+”~” di Kuake).
Versione italiana pubblicata su licenza di The Open Mind
Company

Tilda: un terminale alla Quake per Gnome


Gli utenti KDE non sono stati i soli a divertirsi con
i terminali alla Quake. Nel Dicembre 2004, Tristan
Sloughter (noto anche come “kungfooguru”) ha rila- Note Biografiche
sciato Tilda (chiamato così perché “tilde”, il simbo- Andrew Min è un giornalista, amante di Linux Kubuntu,
lo “~” che spesso è il tasto hotkey dei terminali alla che collabora con diverse riviste online come Free Software
Quake, era già stato utilizzato), un emulatore di ter- Magazine, Full Circle Magazine e Mashable.com
minale GTK+ Quake-style. Come Kuake e YaKuake,

46
Login Internet Expert n.65 Luglio/Agosto/Settembre/Ottobre 2007
IN VETRINA

Digital Video and Audio DVB Frequency Assignment


Broadcasting Technology. The Family of International Standards for and Network Planning
A Practical Engineering Guide, 2. ed. Digital Video Broadcasting,2. ed. for Digital Terrestrial
di W. Fischer di U. Reimers Broadcasting Systems
Springer Springer di R. Beutler
586 pp, 483 ill. - euro 105,00 408 pp, 261 ill. - euro 85,00 Springer
ISBN 9783540763574 ISBN 9783540435457 328 pp - euro 99.50
ISBN 9781402078729

Understanding Digital Television: IPTV and Internet Video: Mobile TV, DVB-H, DMB
An Introduction to DVB Systems with Expanding the Reach of Television 3G Systems and Rich Media
Satellite & Cable TV Distribution Broadcasting Applications
di L. Lundstrom di W. Simpson e H. Greenfield di A. Kumar
Focal Press Focal press Focal Press
316 pp - euro 48,95 240 pp - euro 45,00 508 pp - euro 65,00
ISBN 9780240809069 ISBN 9780240809540 ISBN 9780240809465

Smart Cards, Tokens, Security Mobile Response Mobile Phone Programming


and Applications First International Workshop on Mobile and its Application to
di K. Mayes e K. Konstantinos Information Technology, for Emergency Wireless Networking
Springer Response, Mobile Response 2007 di F. Fitzeke F. Reichert
387 pp, 128 illus. - euro 73,00 di Sankt Augustin Springer
ISBN 9780387721972 Springer 473 pp - euro 74,50
163 pp - euro 45,00 ISBN 9781402059681
ISBN 9783540756675

Login > n.65 luglio/agosto/settembre/ottobre 2007


>> 49
LOGIN 65

Linux Annoyances for Geeks. Beginning Fedora: In Tasca Linux.


Getting the Most Flexible System in the From Novice to Professional Codice e comandi essenziali
World Just the Way You Want It Book/DVD Package di S. Granneman
di M. Jang di S. Sharma et al. Pearson Italai
O’ Reilly Apress 400 pp - euro 12,00
502 pp - euro 35,50 519 pp - euro 45,50 ISBN 9788871924045
ISBN 9780596008017 ISBN 9781590598559

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


IN VETRINA Login n. 65
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 65
OFFERTE ABBONAMENTI
Estate 2007

RIVISTE CARTACEE Per l’abbonamento in spedizione con posta prioritaria


1 anno 2 anni aggiungere i seguenti importi:
COMPUTER PROGRAMMING € 55.00 � € 100.00 � durata 1 anno: durata 2 anni:
DEV € 55.00 � € 100.00 �
VISUAL BASIC JOURNAL € 45.00 � € 80.00 � � + € 18.00 per CP � + € 36.00 per CP
LOGIN € 45.00 � € 80.00 � � + € 18.00 per DEV � + € 36.00 per DEV
JAVA JOURNAL € 43.00 � € 75.00 � � + € 10.00 per VBJ � + € 20.00 per VBJ
� + € 10.00 per LOGIN � + € 20.00 per LOGIN
CP+DEV+VBJ+LOGIN+JJ € 196.00 � € 380.00 � � + € 10.00 per JJ � + € 20.00 per JJ

RIVISTE WEB Totale ordine € _______________________


1 anno (IVA INCLUSA)
INDIRIZZO DI SPEDIZIONE
CP web compreso archivio € 45.00 �
DEV web compreso archivio € 45.00 � Nome/Società __________________________________________________________
VBJ web compreso archivio € 35.00 �
Codice Fiscale (obbligatorio) ________________________________________________
LOGIN web compreso archivio € 35.00 �
JJ web compreso archivio € 35.00 � Indirizzo _______________________________________________________________

2 web a scelta compreso archivio € 60.00 � CAP _____________ Città ___________________________________ Prov. ______

3 web a scelta compreso archivio € 85.00 � Telefono ____________________________ Fax ______________________________


4 web a scelta compreso archivio € 115.00 �
5 web compreso archivio € 140.00 � E-Mail ________________________________@_______________________________

Codice Cliente __________________________________________________________


• OFFERTA SPECIALE: Con soli 20€ di differenza avrai
la possibilità di accedere per un intero anno anche alla
versione online (compreso archivio) della rivista a cui
ti sei abbonato INDIRIZZO DI FATTURAZIONE
(solo per riviste web)
RIVISTE CARTACEE + WEB Nome e Cognome _______________________________________________________
1 anno (IVA INCLUSA) Ditta __________________________________________________________________
COMPUTER PROGRAMMING € 75.00 �
Indirizzo _______________________________________________________________
DEV € 75.00 �
VISUAL BASIC JOURNAL € 65.00 � CAP ____________ Città _________________________________ Prov. _________
LOGIN € 65.00 �
P.IVA _________________________________________________________________
JAVA JOURNAL € 63.00 �
E-Mail per invio fattura _________________________ @ ________________________
CP+DEV+VBJ+LOGIN+JJ € 296.00 �

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

PRIVACY � Autorizzo l’addebito dell’importo di € _____________________ sulla mia CARTASI’/VISA


Con la presente si autorizza al trattamento dei dati personali ai sensi delle
N. ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
vigenti norme sulla privacy
Scad. ___ ___ / ___ ___ (mm/aa) Codice di sicurezza “CV2” ___ ___ ___

Nome del Titolare ____________________________________________________

Data di nascita ____________________________________________________


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

Posso annullare la mia iscrizione in qualsiasi momento alla pagina:


www.infomedia.it/newsletter.php

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

Оценить