Upload
infomedia
View
230
Download
6
Embed Size (px)
DESCRIPTION
Geografia Computazionale
Citation preview
EDITORIALE
L’inizio di una nuova avventuraNoi abbiamo deciso di ricominciare. Aiuto!
Non cambierai mai le cose combattendo la realta esistente. Per cambiare
qualcosa, costruisci un modello nuovo che renda la realta obsoleta.
R. Buckminster Fuller
COMPUTER PROGRAMMING e la rivista di programmazione che da quasi venti anni
ha raccolto la voce dei programmatori, dei sistemisti, dei professionisti, degli studenti,
dei ricercatori e dei professori d’informatica italiani.
Sono piu di 800 gli autori che hanno realizzato per le testate Computer Programming,
Dev, Login, Visual Basic Journal e Java Journal, molte migliaia di articoli tecnici, pre-
sentazioni prodotti, tecnologie, protocolli, strumenti di lavoro, tecniche di sviluppo
e semplici trucchi e trabocchetti. Oltre 6 milioni di copie distribuite trentamila pa-
gine stampate fanno di questa impresa la piu grande ed influente realta dell’editoria
specializzata nel campo della programmazione e della sistemistica.
In tutti questi anni le riviste hanno vissuto della passione di tanti, come te, che vedo-
no nella programmazione non solo una professione ma una passione vitale e un vero
divertimento.
Mettere in condivisione le soluzioni adottate nello sviluppo di un programma, riper-
correndone le tappe e un ottimo modo per documentare al meglio il proprio lavoro,
fissare i concetti e verificare la qualita delle proprie realizzazioni. E uno splendido mo-
do per dare agli altri la possibilita di impare nuove tecniche e progredire nelle proprie
competenze e per rendere il nostro ambiente piu vitale, competitivo ed attivo.
La programmazione o la soluzione dei problemi sistemistici ci da molta gioia, perche e
necessario superare i limiti della nostra conoscenza. A volte abbiamo la sensazione che
questo piacere non e possibile da comunicare. Questo e il luogo giusto per farlo. I tuoi
“pari” sono interessati a queste soluzioni, ai passi che hai compiuto per raggiungere un
risultato e perche no, agli errori che commesso nei tuoi tentativi.
L’informatica e un ambito professionale unico, in cui le spinte competitive sono sempre
state forti, ma altrettanto forti ed importanti e stata la tensione a cooperare. La condi-
visione delle informazioni e la diffusione delle conoscenze sono l’anima costitutiva di
questa Comunita.
Le nuove Computer Programming, Dev e Login vogliono incentivare questi aspetti per
essere ancora di piu al centro di questa Comunita. Aiutateci. Perche senza queste riviste
programmatori e sistemisti italiani rimarrebbero senza voce.
Chiunque tu sia, quindi, quale che sia la tua storia, i tuoi strumenti di lavoro, il tuo
linguaggio di programmazione, la tua piattaforma o framework, il tuo sito o il tuo
programma. . . contribuisci a questa Storia per permetterci di andare avanti.
Computer Programming e una
rivista realizzata da
Infomedia Editori Coop.
e Ass. Turing Club
Direzione e Amministrazione:
Via Iannacchini, 28 - Avellino
In attesa di registrazione presso il
Tribunale di Avellino
(richiesta del 4/3/2009)
D R
A. Somma
M E
G. Spagnuolo ([email protected])
M. Monti ([email protected])
L C
XED.it ([email protected])
G
Redsign
(www.redsign.it
A
S. Carpenter
L. Dal Col
G. Pignalberi
G. Richmond
E. Somma
D. Treffiletti
L’
100% O S OO,
E, BHL, LATEX, G, I L,
P BASH
For copyright information about the contents of Compu-
ter Programming, please see the section “Copyright” at
the end of each article if exists, otherwise ask authors.
Infomedia contents is © 2009 Infomedia and released as
Creative Commons 2.5 BY-NC-ND. Turing Club content
is © 2009 Turing Club released as Creative Commons
2.5 BY-ND.
Le informazioni di copyright sul contenuto di Computer
Programming sono riportate nella sezione “Copyright”
alla fine di ciascun articolo o vanno richieste direttamen-
te agli autori. Il contenuto Infomedia e© 2009 Infomedia
e rilasciato con Licenza Creative Commons 2.5 BY-NC-
ND. Il contenuto Turing Club e © 2009 Turing Club e
rilasciato con Licenza Creative Commons 2.5 BY-ND. Si
applicano tutte le norme di tutela dei marchi e dei segni
distintivi.
E in ogni caso ammessa la riproduzione parziale o to-
tale dei testi e delle immagini per scopo didattico pur-
che vengano integralmente citati gli autori e la completa
identificazione della testata.
Manoscritti e foto originali, anche se non pubblicati, non
si restituiscono.
Contenuto pubblicitario inferiore al 45%.
$LastChangedDate:: 2009-04-03 11:03:05 #$
$Rev: 45 $
Computer Programming [None 2009]
Indice Numero , None 2009
EDITORIALE
L’inizio di una nuova avventura 3
GEOGRAFIA COMPUTAZIONALE
Trasformare le coordinate geo-grafiche da WGS84 a UTM 6
Lorenzo Dal Col, Emmanuele Somma
La cartografia si occupa di rappresentare la superficie
terrestre sul piano secondo norme e segni convenzio-
nali. La rappresentazione della superficie fisica ter-
restre e un’operazione complessa poiche la superficie
da rappresentare non e piana, il terreno ha una forma
molto irregolare e le dimensioni dell’oggetto da rap-
presentare eccedono le normali capacita di misura del-
l’uomo. Quest’articolo fornira una breve introdurra al-
la teoria matematica delle trasformazioni geografiche
piu comuni e se ne mostrera una veloce implementa-
zione in linguaggio SQL da usare come stored proce-
dure in MySQL. Si vedra inoltre anche come utilizzare
il noto pacchetto PROJ per realizzare le trasformazioni
geografiche.
Trasformazione di coordinategeografiche in Javascript 14
Lorenzo Dal Col
In numerose applicazioni e necessario risolvere il
problema della trasformazione delle coordinate geo-
grafiche tra sistemi di riferimento differenti. In questo
articolo verra illustrato un applicativo che effettua la
trasformazione delle coordinate del sistema WGS84
a quelle UTM. L’obiettivo e di fornire una procedura
di trasformazione che possa funzionare anche con
dati acquisiti in tempo reale, senza la necessita di
eseguire post-elaborazioni; e stato inoltre scelto il
linguaggio Javascript in modo che possa funzionare in
un qualsiasi browser web che supporti lo scripting e
in un qualsiasi sistema operativo, anche quello degli
smart-phone, che sempre piu spesso integrano un
ricevitore GPS.
USER SPACE
Konqueror: tutto da una interfac-cia 22
Gary Richmond
Suggerimenti, trucchi e funzionalita per sfruttare al
massimo le caratteristiche di Konqueror. Si vedra co-
me migliorarne le prestazioni, utilizzarlo al meglio co-
me file manager e come browser e aggiungere nuove
funzionalita attraverso i Service Menu.
4 Computer Programming n. 181 [None 2009]
Indice
PROGRAMMING
Estensioni Google in Firefox 32
Gary Richmond
Questo articolo illustrera come far interagire Firefox
con i servizi offerti da Google attraverso con Gmail
Notifier, Better Gmail, FireGPG, Get Things Done,
Better GCal, Remember The Milk, GSpace, FEBE,
Cleo, Zotero, Customize Google...
Estendere Nautilus: (fotocameree) rotazione di immagini JPG 43
Scott Carpenter
Partendo dall’esigenza di ruotare un’immagine diret-
tamente da Nautilus si vedra come come personaliz-
zare il menu popup per adattarlo alle proprie esigenze
sfruttando la potenza di bash.
Filtri audio ... con Gimp 48
Gianluca Pignalberi
Gimp viene universalmente utilizzato per la manipola-
zione di immagini. Tuttavia, con un po’ di creativita
e un paio di trucchi, puo anche essere utilizzato come
filtro audio! Ecco come...
RUBRICHE
Thread contro Thread 52
Danilo Treffiletti
Windows Thread e Posix Thread a confronto...
Pensare – Progettare – Program-mare 53
Hanno collaborato a questo nu-mero... 55
Photo Credit:
Mappa dell’Europa di Mercatore
Gerhard Mercator nacque nel 1512 nelle Fiandre. Ebbe una formazione classica: latino,
greco, logica, grammatica e retorica.
Pubblico una mappa della Terra Santa, un piccola mappa del globo terrestre, una map-
pa delle Fiandre e un libro sulla grafia corsiva. Fu infatti il primo a usare sulle mappe
geografiche il carattere corsivo italic.
Per questa attivita cartografica Mercator fu perseguitato dalle autorita religiose cattoliche,
accusato di eresia e incarcerato per circa sette mesi. Solo le proteste dell’Universita gli
permisero di essere scagionato dalle accuse. Fu pero poi perseguitato dall’Inquisizione
poiche protestante e dovette trasferırsi a Duisburg in cui all’epoca il duca Guglielmo il
Ricco era riuscito a mantenere indipendente tra le le confessioni e vi aveva creato un
significativo circolo di intellettuali.
Lı insegno liberamente geometria, matematica e cosmologia presso il ginnasio, e nel 1563
venne nominato cartografo ducale.
Mercator morı dopo aver raggiunto una invidiabile posizione economica a Duisburg. La
sua tomba e situata nella Chiesa del Salvatore di Duisburg (Salvatorkirche).
Image Credit: WikiMedia
Computer Programming n. 181 [None 2009] 5
Trasformare le coordinategeografiche da WGS84 a UTM
Le formule di Molodenskij e Gauss rese semplici
Lorenzo Dal Col, Emmanuele Somma
La cartografia si occupa di rappresentare la
superficie terrestre sul piano secondo nor-
me e segni convenzionali. La rappresenta-
zione della superficie fisica terrestre e un’o-
perazione complessa poiche la superficie da rappresen-
tare non e piana, il terreno ha una forma molto irre-
golare e le dimensioni dell’oggetto da rappresentare
eccedono le normali capacita di misura dell’uomo.
Quest’articolo fornira una breve introdurra alla teoria
matematica delle trasformazioni geografiche piu co-
muni e se ne mostrera una veloce implementazione
in linguaggio SQL da usare come stored procedure
in MySQL. Si vedra inoltre anche come utilizzare il
noto pacchetto PROJ per realizzare le trasformazioni
geografiche.
Le trasformazioni
Per realizzare una trasformazione corretta e necessario
che a ciascun punto del terreno sia associato univoca-
mente un punto sulla superficie di riferimento (mappa)
in modo che:
• la sua trasformazione inversa dia un punto ’vici-
no’ a quello alla superficie terrestre (con un errore
accettabile)
• la sua rappresentazione matematica sia semplice
• si possa stabilire una corrispondenza biunivoca
fra i suoi punti e quelli della superficie terrestre
• si possa istituire sulla mappa una geometria per
eseguire semplicemente calcoli geodetici
Il passaggio dalla Terra alla carta avviene in due pas-
saggi. Innanzitutto si proietta il terreno sulla super-
ficie curva di riferimento e poi se ne realizza una
rappresentazione piana bidimensionale.
Proiezione sulla superficie di riferimento
Questo primo passaggio consiste nel far coincidere un
punto della superficie terrestre con uno preso su una
superficie di riferimento tramite una proiezione verti-
cale. La superficie di riferimento ideale e detta “geoi-
de”, che e la superficie equipotenziale del campo gra-
vitazionale terrestre. Il geoide approssima abbastanza
bene la superficie terrestre, ma poiche non possiamo
conoscere il valore della gravita terrestre in ogni punto
della Terra non e esprimibile con formule analitiche.
Per ovviare a questo problema solitamente si adotta co-
me superficie di riferimento un ellissoide di rotazione,
che si descrive facilmente con formule analitiche.
Attraverso calcoli astronomici sono stati definiti di-
versi ellissoidi di riferimento, nel 1924 furono adot-
tati universalmente quali parametri dell’ellissoide di
riferimento i valori proposti da Hayford. L’ellissoide
cosı dimensionato e da allora indicato come “ellissoide
internazionale”.
Poiche l’ellissoide di riferimento si discosta rispetto al
geoide deve essere ruotato e centrato il piu vicino pos-
Computer Programming n. 181 [None 2009] 7
GEOGRAFIA COMPUTAZIONALE
Figura 1: Rapporto tra la superfice terrestre, l’ellissoide e la geoide
sibile alla zona terrestre che vogliamo mappare (pun-
to di emanazione), in modo da ridurre al minimo la
distanza tra i due.
Rappresentazione bidimensionale
Per passare dalla rappresentazione su supporto cur-
vo ad una rappresentazione piana si ricorre ad una
rappresentazione cartografica, stabilendo per ciascun
punto una corrispondenza biunivoca fra le coordinate
curvilinee e le coordinate cartesiane ortogonali.
La rappresentazione piana che si ottiene e deformata
rispetto quella disegnata sul supporto curvo.
Ad esempio, la Proiezione universale trasversa di Mer-
catore (UTM) o conforme di Gauss e una proiezio-
ne pseudocilindrica assimilabile alla cilindrica inversa,
ma le sue equazioni della carta sono state costruite in
modo da ottenere l’isogonicita.
I sistemi di riferimento geodetici
I sistemi di riferimento sono basati su coordinate per
descrivere in modo matematico una posizione geogra-
fica. Si tratta di modelli geometrici basati su ellissoidi
di rotazione utilizzati per descrivere la forma della Ter-
ra e ogni posizione sulla sua superficie. Ciascun siste-
ma e identificato dal suo DATUM che identifica la for-
ma, la posizione e l’orientamento del modello rispetto
alla Terra e alla sua superficie.
Quando si esprime una posizione geografica in oriz-
zontale tramite coordinate oppure in verticale con l’al-
tezza, e necessario sempre associare il valore espresso
al DATUM di riferimento. Infatti esistono diversi si-
stemi di riferimento geodetico ed il datum e l’unico
modo univoco per indicare quello prescelto.
I vari sistemi di riferimento geodetico differiscono tra
loro per la definizione dell’ellissoide di rotazione (la
forma geometrica usata per approssimare la forma del-
la Terra). Ad esempio il datum WGS72 definisce un
ellissoide con semiasse maggiore di 6.378.135 metri e
schiacciamento ai poli di 1/298.26, mentre per WGS84
i valori sono 6,378,137 e 1/298.257223563 rispettiva-
mente. Nel DATUM si indica anche l’orientamento e
l’origine delle coordinate.
La conversione delle coordinate di un punto da un si-
stema di riferimento ad un altro non e operazione sem-
plice, si puo generalmente usare la corposa ed efficace
libreria Proj per questo scopo.
8 Computer Programming n. 181 [None 2009]
GEOGRAFIA COMPUTAZIONALE
Figura 2: Proiezione universale trasversa di Mercatore
(UTM) o conforme di Gauss.
Talvolta pero e necessario programmare direttamente
queste trasformazioni e cio e tutt’altro che comples-
so, come si vedra in seguito. Ma prima e necessario
conoscere alcuni sistemi di riferimento standard. In
particolare:
WGS84 World Geodetic System 1984
UTM Universal Transverse Mercator
ITA40 Roma Monte Mario o Gauss-Boaga
WGS84 – World Geodetic System 1984
E il sistema di riferimento utilizzato nel posiziona-
mento con la tcnologia GPS. E’ espresso tramite le
coordinate geodetiche X,Y,Z, riferite all’ellissoide di
rotazione geocentrico:
• l’asse Z e diretto verso la posizione del polo
medio definito nel 1984
• l’asse X e definito dall’intersezione del piano
equatoriale medio nel 1984 con il meridiano di
Greenwich
• l’asse Y e definito in modo tale da completare la
terna destrorsa
UTM – Universal Transverse Mercator
E la cartografia piu diffusa al mondo, nota anche come
Gauss-Boaga. Questa proiezione e approssimata note-
volmente dalla cilindrica trasversa inversa. Questo tipo
di cartografia e conforme. Le trasformate del meridia-
no centrale (di tangenza) e dell’Equatore sono rette e
rappresentano gli assi del sistema di riferimento (N e
E). Poiche piu ci si allontana dal meridiano centrale
piu il modulo di deformazione lineare sale, nel siste-
ma UTM l’ampiezza di un fuso e di 6 gradi, il sistema
risulta essere quindi policilindrico. Ogni fuso ha un
sistema N,E indipendente. Viene inoltre applicato alle
coordinate un coefficiente di contrazione di 0,9996 per
ridurre le deformazioni. Infine all’origine delle ascis-
se viene applicata una falsa origine di 500000 m, per
evitare valori negativi di E. Il riferimento geodetico e
basato sull’ellissoide internazionale con orientamento
europeo (ED50), cioe orientato a Postdam.
ITA40 – Roma Monte Mario o Gauss-Boaga
La proiezione cartografica Gauss-Boaga e stata adotta-
ta quasi interamente dalla cartografia ufficiale italiana
dal 1940. E’ stata proposta dal prof. Giovanni Boaga
quando era a capo dell’Istituto Geografico Militare, e
utilizza il sistema di riferimento Roma40, con ellissoi-
de orientato a Roma Monte Mario. La Carta d’Italia
dell’IGM in scala 1:25.000 (serie 25V), e stata redatta
in coordinate Gauss-Boaga, poi abbandonate in favo-
re della Proiezione Universale Trasversa di Mercatore
(UTM).
Le formule di trasformazione
La trasformazione delle coordinate avviene in due pas-
si. La prima funzione converte le coordinate ellissoidi-
che WGS84 in coordinate ellissoidiche ED50 usando
le formule di Molodenskij; la seconda converte le coor-
dinate ellissoidiche ED50 in coordinate piane UTM
usando le formule di Gauss adatte a questo scopo.
Le formule di Molodenskij
Le formule di Molodenskij complete a partire dal-
le coordinate ellissoidiche WGS84 ϕ, λ e h sono le
seguenti:
Computer Programming n. 181 [None 2009] 9
GEOGRAFIA COMPUTAZIONALE
ρ =a(1− e2)
√
(1− e2 sinϕ2)3
dove ρ e il raggio di curvatura del meridiano, a e
il semiasse equatoriale dell’ellissoide WGS84, e2 e
l’eccentricita dell’ellissoide WGS84
NG =a(1− e2)
√
1− e2 sinϕ2
dove NG e la Gran Normale
dϕ =sinϕcosλ
ρ+hx0+
sinϕsinλ
ρ+hy0+
cosϕ
ρ+hz0+
a2/NG +h
ρ+h(sinλ)Ex+
a2/NG +h
ρ+h(cosλ)Ey+
(1− (1−α)2)NG
ρ+hcosϕsinϕ (K +da/a)−
ρ+ (1−α)2NG
ρ+hcosϕsinϕ (dα/α)
in cui da e la differenza tra semiasse maggiore WGS84
e ED50 e dα e la differenza tra schiacciamento WGS84
e ED50, x0,y0,z0 sono le traslazioni fra i centri del si-
stema WGS84 e ED50 ed infine Ex,Ey,Ez sono le ro-
tazioni attorno agli assi dell’ellissoide ED50 mentre K
e il fattore di scala.
dλ =sinλ
(NG +h)cosϕx0+
cosλ
(NG +h)cosϕy0−
(1−α)2NG +h
NG +h(tanϕcosλ)Ex−
(1−α)2NG +h
NG +h(tanϕsinλ)Ey+Ez
dh = cosϕcosλx0− cosϕsinλy0− sinϕz0−
(1− (1−α)2)NG(cosϕsinϕsinλ)Ex−
(1− (1−α)2)NG(cosϕsinϕcosλ)Ey−(
a2
NG+h
)
K +a
NGda−
(1−α)2NG(sinϕ)2 dα
1−α
Figura 3: Mikhail Sergeevich Molodenksy (1909 - 1991)
Sebbene queste formule sembrino molto complesse la
loro scrittura con un qualsiasi linguaggio di program-
mazione e semplice e diretta, ad esempio nel Listato
1 e riportato l’inizio del sorgente di una stored proce-
dure SQL per il database MySQL che realizza questa
trasformazione.
In particolare dopo la dichiarazione della funzione e la
definizione dei tipi:
CREATE PROCEDURE ‘MOLODENSKIJ‘(PHI DOUBLE,
LAMBDA DOUBLE,
H DOUBLE,
A DOUBLE, e DOUBLE,
OUT D_PHI DOUBLE,
OUT D_LAMBDA DOUBLE,
OUT D_H DOUBLE )
BEGIN
DECLARE RHO DOUBLE DEFAULT 0.0;
DECLARE N_G DOUBLE DEFAULT 0.0;
sono scritte le formule relative alle variabili RHO e N G
10 Computer Programming n. 181 [None 2009]
GEOGRAFIA COMPUTAZIONALE
Nome Anno Semiasse maggiore Semiasse minore Schiacciamento
WGS 84 1984 6378137 6356752,3142449996 1/298,257
WGS 72 1972 6378135 6356750,5199149996 1/298,258
Hayford 1909 6378388 6356911 1/297,0
Elliss. Internaz. 1924 1924 6378388 6356911 1/297,0
Bessel 1841 6377397 6356078 1/299,1
Clarke 1880 1880 6378249 6356514 1/293,5
Clarke 1866 1866 6378206 6356583 1/294,9
Everest 1830 6377301 6356100 1/300,8
Airy 1830 6377563 6356256 1/299,3
Krassovsky 1940 6378245 6356863 1/298,3
South American 1969 6378160 6356774 1/298,3
Tabella 1: Principali ellissoidi di riferimento
# RHO - Raggio di curvatura del meridiano
SET RHO = (A * (1- eˆ2)) /
( SQRT( 1- eˆ2 * SIN(PHI)ˆ2)ˆ3 );
# N_G - Gran Normale
SET N_G = (A * (1- eˆ2)) /
SQRT( 1- eˆ2 * SIN(PHI)ˆ2) ;
ed infine le formule delle coordinate trasformate:
SET D_PHI = SIN(PHI) * COS(LAMBDA) * x_0 /
(RHO + H) +
SIN(PHI) * COS(LAMBDA) * y_0 /
(RHO + H) +
COS(PHI) * z_0 /
( RHO + H ) +
(Aˆ2 / N_G + H ) /
(RHO + H) * SIN(LAMBDA) * E_x +
(Aˆ2 / N_G + H ) /
(RHO + H) * COS(LAMBDA) * E_y +
(1 - (1 - ALFA)ˆ2 ) * N_G /
(RHO + H) * COS(PHI) * SIN(PHI) ( K + D_a / A ) +
(RHO -+ (1 - ALFA)ˆ2 ) * N_G /
(RHO + H) * COS(PHI) * SIN(PHI) ( D_a / ALFA )
Come si puo vedere l’introduzione di queste formule,
anche in un sistema con limitate capacita di program-
mazione non comporta particolari problemi essendo
la formula chiusa e basata su funzioni matematiche
elementari.
I parametri adottati nei calcoli sono delle formule di
Molodenskij :
a 6378388.297
e2 0.00669438
x0,y0,z0 (0,0,0)
Ex,Ey,Ez (0,0,0)
K 0
da 251.297
dα 1.257222101
Le formule di Gauss
Una volta ottenute le coordinate ellissoidiche nel siste-
ma ED50 e necessario trasformarle nel sistema piano
attraverso le formule di Gauss. Nelle formule seguenti
si cercheranno i punti X e Y avendo come parametri di
input le coordinate ellissoidiche ED50 (qui rinominate
per semplicita ϕ, λ e h piuttosto che le dϕ, dλ e dh ot-
tenute dal passaggio precedente) e come costanti i pa-
rametri a che misura il semiasse dell’ellissoide ED50
questa volta e e2 l’eccentricita dell’ellissoide ED50.
La prima delle equazioni di Gauss e:
Y = g(ϕ,λ) =acosϕ
√
1− e2 sinϕ2λ+
1
6
acos(ϕ)3
√
1− e2 sinϕ2
(
1−
tan(ϕ)2+( e2
√1− e2
)2cos(ϕ)2
)
λ3+
1
120
acos(ϕ)5
√
1− e2 sinϕ2
(
5−
18tan(ϕ)2+ tan(ϕ)4+
( e2
√1− e2
)2(
14cos(ϕ)2−58cos(ϕ)2 tan(ϕ)2)]
λ5
Anche in questo caso l’introduzione della funzione al-
l’interno del sistema programmato non comporta par-
ticolari complessita. La formula e lunga e abbastan-
za arzigogolata, ma facilmente esprimibile utilizzan-
do funzioni matematiche e trigonometriche elementari
alla portata di qualsiasi linguaggio.
Computer Programming n. 181 [None 2009] 11
GEOGRAFIA COMPUTAZIONALE
La seconda equazione di Gauss e:
X = f (ϕ,λ) =
∫ ϕ
0
a(1− e2)√
(1− e2 sin t2)3dt+
1
2
sinϕcosϕ√
1− e2 sinϕ2+
1
24
sinϕcos(ϕ)3
√
1− e2 sinϕ2·
·[
5− tan(ϕ)2+( e2
√1− e2
)2(
9cos(ϕ)2+4cos(ϕ)4)]
λ4+
1
720
sinϕcos(ϕ)5
√
1− e2 sinϕ2·
·[
61−58tan(ϕ)2+ tan(ϕ)4+
( e2
√1− e2
)2(
270cos(ϕ)2−330cos(ϕ)2 tan(ϕ)2)]
λ6
In questo caso l’equazione comporta qualche comples-
sita in piu a causa della presenza dell’integrale definito
al primo termine della formula.
In questo caso e necessario programmare un semplice
algoritmo per l’integrazione numerica della formula,
ad esempio quello basato sul metodo dei trapezi.
Il programma in SQL per la soluzione dell’integrale e:
CREATE FUNCTION( IBEGIN DOUBLE, IEND DOUBLE,
PARTS INTEGER)
RETURNS DOUBLE
BEGIN
DECLARE STEP DOUBLE DEFAULT 0.0 ;
DECLARE RESULT DOUBLE ;
DECLARE P DOUBLE ;
DECLARE C INTEGER DEFAULT 1 ;
DECLARE TMP1 DOUBLE DEFAULT 0.0 ;
SET P = BEGIN;
SET STEP = (IEND - IBEGIN) / PARTS;
SET TMP1 = A_FACTOR(P) / 2;
loop1: WHILE C < PARTS DO
SET TMP1 = TMP1 + A_FACTOR(P);
SET P = P + STEP;
END WHILE loop1;
SET TMP2 = TMP1;
SET TMP1 = TMP1 + A_FACTOR(P) / 2;
SET RESULT = TMP1 * STEP;
RETURN RESULT;
END
La funzione applicata e definita nella procedura
A FACTOR e rappresenta il fattore:
∫ ϕ
0
a(1− e2)√
(1− e2 sin t2)3dt
che in SQL diventa
Figura 4: Carl Friedrich Gauss (1777 -1855)
CREATE FUNCTION ’A_FACTOR’( VAR DOUBLE )
RETURNS DOUBLE
BEGIN
# ED50 - SEMIMAJOR
DECLARE A DOUBLE DEFAULT 6378388.297 ;
# ED50 - SEMIMINOR
DECLARE B DOUBLE DEFAULT 6378388.297 ;
DECLARE E2 DOUBLE DEFAULT 0.0066943800042605865 ;
# SET E2 = (Aˆ2 - Bˆ2) / Aˆ2;
RETURN A*(1-E2)/SQRT(POW(1 - e2 * SIN(val)ˆ2,3));
END
L’insieme delle procedure sviluppate per la trasforma-
zione sono quindi:
MOLODENSKIJ(PHI,LAMBDA,H,D_PHI,D_LAMBDA,D_H)
12 Computer Programming n. 181 [None 2009]
GEOGRAFIA COMPUTAZIONALE
che prende in input i parametri PHI, LAMBDA e H con le
coordinate WGS84 e restituisce i parametri trasformati
in ED50 D PHI, D LAMBDA e D H, e poi:
GAUSS(PHI,LAMBDA,X,Y)
che prende in input i parametri superficiali in ED50
restituiti dalla funzione precedente e genera le coor-
dinate piane X e Y. I parametri distintivi delle trasfor-
mazioni realtivi ai DATUM scelti sono stati introdot-
ti come costanti nelle funzioni. La funzione GAUSS
fa affidamento su una funzione che calcola l’integra-
le definito ed una che esprime il fattore da integrare,
rispettivamente:
RESULT = A_FACTOR(VALUE)
INTEGRAL(IBEGIN, IEND, PARTS)
A causa delle limitazioni del linguaggio SQL e neces-
sario utilizzare le procedure realizzate in questa for-
ma esclusivamente all’interno di una ulteriore stored
procedure esterna come ad esempio:
CREATE PROCEDURE ’TRANS’()
BEGIN
DECLARE PHI,LAMBDA,H DOUBLE DEFAULT 0.0;
DECLARE D_PHI,D_LAMBDA,D_H DOUBLE DEFAULT 0.0;
DECLARE X,Y DOUBLE DEFAULT 0.0;
SET PHI = ;
SET LAMBDA = ;
SET H = ;
CALL MOLODENSKIJ(PHI,LAMBDA,H, D_PHI, D_LAMBDA, D_H);
CALL GAUSS(D_PHI,D_LAMBDA,D_H,X,Y);
SELECT X,Y;
END
Trasformazione su linea di comando
Quando e possibile avere accesso alla linea di coman-
do o nei programmi che possono utilizzare liberie col-
legate piuttosto che riprogrammare ogni volta gli al-
goritmi di proiezione e trasformazione delle coordi-
nate e possibile utilizzare la libreria PROJ e i relativi
comandi proj e cs2cs.
PROJ e un progetto open source (con una licenza di
tipo MIT che ne permette l’inclusione anche in siste-
mi proprietari), usato da riga di comando (soprattut-
to in ambito Unix, GNU/Linux, ecc.), che permette la
trasformare coordinate geografiche in coordinate car-
tesiane secondo le regole della proiezione cartografi-
ca. Viene solitamente utilizzato in altri progetti co-
me GRASS, MapServer, PostGIS, Thuban, OGDI e
OGRCoordinateTransformation.
L’utilizzo da linea di comando e semplice e diretto. Tra
le opzioni del programma cs2cs vanno indicate le di-
chiarazioni relative al sistema di riferimento di parten-
za e poi, dopo l’opzione +to quelle relative al sistema
di riferimento d’arrivo.
E possibile indicare questi riferimenti esplicitando i
parametri dell’ellissoide, ad es:
+ellps=WGS84
+a= 6378137.0 + rf= 298.257223563
o direttamente i DATUM conosciuti
+datum=WGS84
o ancora attraverso un insieme di dizionari noti
che e possibile scoprire sul sito http://www.epsg-
registry.org, ad esempio:
+init=epsg:22022
in cui epsg e un dizionario noto e 22022 e l’ogget-
to definito in quel dizionario. I dizionari sono file di
testo presenti solitamente nella directory /usr/local/-
share/proj in cui e possibile verificare a cosa queste
inizializzazioni corrispondono.
cs2cs e un filtro e risponde generando sullo standard
output la trasformazione delle coordinate che riceve
nello standard input. Ad esempio nel modo seguente e
possibile realizzare l’equivalente delle trasformazioni
ottenuta con le formule di Molodenskij:
echo 688146.8125 4931557.6875 | \
cs2cs -f "%.6f" +init=epsg:23032 +to
+init=epsg:4326
oppure
cs2cs +proj=latlong +datum=WGS84
+to +proj=utm +zone=32 +datum=ED50
r <<EOF
45d15’33.1" 111.5W
45d15.551666667N -111d30
+45.25919444444 111d30’000w
EOF
Computer Programming n. 181 [None 2009] 13
GEOGRAFIA COMPUTAZIONALE
Conclusioni
Per lo sviluppo di funzioni di trasformazione geogra-
fica e sufficiente riportare le funzioni matematiche di
Molodensky e Gauss in codice sorgente con un mini-
mo di supporto per le funzioni matematiche comples-
se. Avendo a disposizione progetti liberi come PROJ
questo non e neppure necessario ma, a parte il valo-
re didattico di una tale implementazione, esistono ca-
si in cui queste librerie non possono essere utilizzate.
In questi casi si possono seguire le tracce riportate in
questo articolo o approfondirne l’implementazione nel
prossimo.
14 Computer Programming n. 181 [None 2009]
Trasformazione di coordinategeografiche in Javascript
L’implementazione in Javascript delle formule di Molodenskij eGauss
Lorenzo Dal Col
Problema
In numerose applicazioni e necessario risolve-
re il problema della trasformazione delle coor-
dinate geografiche tra sistemi di riferimento
differenti.
In questo articolo verra illustrato un applicativo che ef-
fettua la trasformazione delle coordinate del sistema
WGS84 a quelle UTM. L’obiettivo e di fornire una
procedura di trasformazione che possa funzionare an-
che con dati acquisiti in tempo reale, senza la neces-
sita di eseguire post-elaborazioni; e stato inoltre scelto
il linguaggio Javascript in modo che possa funzionare
in un qualsiasi browser web che supporti lo scripting
e in un qualsiasi sistema operativo, anche quello de-
gli smart-phone, che sempre piu spesso integrano un
ricevitore GPS.
Tutti gli applicativi odierni, ad esempio i ricevitori sa-
tellitari GPS, i software con riferimenti geografici (co-
me Google Earth/Maps) e le varie applicazioni col-
legate all’aeronautica utilizzano la codifica WGS84,
mentre quasi tutte le carte ufficiali antecedenti al 1984
utilizzavano il sistema UTM con “datum” ED50 nel
caso dei paesi europei. Grazie alle funzioni presentate
in questo articolo si possono trasformare i dati raccol-
ti con un sistema GPS moderno come Google Maps
e confrontarli con dati di vecchie carte europee codi-
ficati in UTM-ED50 (oppure “Roma Monte Mario”)
direttamente in una pagina web.
Figura 1: Una semplice interfaccia HTML del programma
Soluzione
La trasformazione deve essere effettuata in tre passi:
1. Con le formule di Molodenskij si passa dalle
coordinate ellissoidiche WGS84 alle coordinate
ellissoidiche ED50
2. Con le formule di Gauss si ricavano le coordinate
piane UTM
3. Infine si applica un fattore di correzione e una
Computer Programming n. 181 [None 2009] 15
GEOGRAFIA COMPUTAZIONALE
falsa origine per evitare valori negativi, come
vogliono le specifiche UTM.
Le superfici di riferimento
I sistemi di riferimento sono basati su degli ellissoi-
di con una certa dimensione e posizionati nello spa-
zio in modo differente per WGS84 e ED50; sono sta-
te quindi create due classi Javascript per esprimere
l’orientamento e l’ellissoide stesso:
function RotationElipsoid(a, alpha, orientation) {
this.orientation = orientation;
this.a = a;
this.alpha = alpha;
var semiminor = this.a - this.a * this.alpha;
this.e2 = (Math.pow(this.a,2) - Math.pow(semiminor,2)) /
Math.pow(this.a,2);
// RHO - Raggio di curvatura del meridiano
this.RHO = function(LAMBDA) {
return this.a * (1 - this.e2) /
Math.sqrt(Math.pow(1 - this.e2 *
Math.pow(Math.sin(LAMBDA),2),3));
}
// N_G - Gran Normale
this.N_G = function(LAMBDA) {
return this.a / Math.sqrt(1 - this.e2 *
Math.pow(Math.sin(LAMBDA),2));
}
}
function Orientation(x0, y0, z0, K, Ex, Ey, Ez) {
this.z0 = z0; this.x0 = x0; this.y0 = y0;
this.K = K;
this.Ex = Ex; this.Ey = Ey; this.Ez = Ez;
}
Pur essendo Javascript un linguaggio object-oriented
non esiste il costrutto nativo per definire le classi poi-
che in realta vengono implementate usando il concetto
di “prototype” cioe il prototipo di un oggetto che e leg-
germente diverso. Dal punto di vista semantico le clas-
si sono scritte come delle funzioni che possono avere
al loro interno membri dati e metodi (rispettivamente
variabili e funzioni interne).
Si possono creare oggetti utilizzando il costrutto “new”
e chiamando la funzione prototipo.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
In JavaScript il modo piu semplice
per creare gli oggetti e farli
discendere da un prototipo- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Esistono in realta diversi “pattern” per la definizione di
classi in javascript, per supportare l’ereditarieta (anche
multipla) e il polimorfismo; in questo caso ci siamo
accontentati dell’implementazione piu semplice.
Gli ellissoidi sono costanti e possono essere definiti
direttamente in questo modo:
// inizializzo gli ellissoidi noti (DATUM)
var WGS84 = new RotationElipsoid(6378137.0,
1/298.257222101,
new Orientation(0,0,0,0,0,0,0));
var ED50 = new RotationElipsoid(6378388,
1/297,
new Orientation(-87,-98,-121,0,0,0,0));
var ITA40 = new RotationElipsoid(6378388,
0.00672267002,
new Orientation(-104.1,-49.1,-9.9,-11.68,
0.971,-2.917,0.714));
I parametri passati sono il semiasse maggiore a, lo
schiacciamento alpha, e l’orientamento: inizializza-
to con i valori di traslazione sui tre assi (x,y,z),
riscalamento e rotazioni.
La classe “RotationElipsoid” ha i metodi RHO e N G,
che calcolano rispettivamente il raggio di curvatura del
meridiano passato per argomento e la gran normale
rispetto al meridiano.
Le funzioni di conversione delle coordinate si chia-
mano rispettivamente “molodenskij” e “gauss”, esse
sono abbastanza complesse ma non fanno altro che
implementare le formule analitiche dei due rispettivi
matematici:
La prima si esegue passando l’ellissoide di partenza,
quello di arrivo e le tre coordinate geografiche del pun-
to da trasformare: PHI, LAMBDA, H che sono rispet-
tivamente longitudine, latitudine e altitudine; viene ri-
tornato un oggetto da passare direttamente alla funzio-
ne “gauss” che ritorna un array con rispettivamente le
coordinate Nord, Est e altitudine in UTM-ED50.
All’interno della funzione “gauss” viene calcolato un
integrale definito di una funzione matematica grazie
a una procedura di supporto che usa il metodo dei
trapezi:
// esegue l’integrale definito di di una funzione con
// il metodo dei trapezi in N parti
function Integral(myFunction, scope, begin, end, parts) {
16 Computer Programming n. 181 [None 2009]
GEOGRAFIA COMPUTAZIONALE
�function molodenskij(fromElipsoid , destElipsoid ,
PHI, LAMBDA, H) {
var alpha = fromElipsoid.alpha;
var a = fromElipsoid.a;
var Da = fromElipsoid.a - destElipsoid.a;
var Dalpha = fromElipsoid.alpha -
destElipsoid.alpha;
var DEx = destElipsoid.orientation.Ex -
fromElipsoid.orientation.Ex;
var DEy = destElipsoid.orientation.Ey -
fromElipsoid.orientation.Ey;
var DEz = destElipsoid.orientation.Ez -
fromElipsoid.orientation.Ez;
var Dx0 = destElipsoid.orientation.x0 -
fromElipsoid.orientation.x0;
var Dy0 = destElipsoid.orientation.y0 -
fromElipsoid.orientation.y0;
var Dz0 = destElipsoid.orientation.z0 -
fromElipsoid.orientation.z0;
var DK = destElipsoid.orientation.K -
destElipsoid.orientation.K;
var RHO = fromElipsoid.RHO(LAMBDA);
var N_G = fromElipsoid.N_G(LAMBDA);
// scorciatoie
var sinPHI = Math.sin(PHI);
var cosPHI = Math.cos(PHI);
var sinLAMBDA = Math.sin(LAMBDA);
var cosLAMBDA = Math.cos(LAMBDA);
var tanLAMBDA = Math.tan(LAMBDA);
var tempVar = RHO + H;
var tempVar2 = Math.pow(a,2) / N_G + H;
var tempVar6 = Math.pow(1 - alpha ,2);
var tempVar5 = (1 - tempVar6) * N_G;
var tempVar3 = ( N_G + H ) * cosLAMBDA;
var tempVar4 = (tempVar6*N_G + H) / (N_G+H);
var o1 = (sinLAMBDA * cosPHI / tempVar)*Dx0;
var o2 = (sinLAMBDA * sinPHI / tempVar)*Dy0;
var o3 = (cosLAMBDA / tempVar) * Dz0;
var o4 = (tempVar2 / tempVar) * sinPHI*DEx;
var o5 = (tempVar2 / tempVar) * cosPHI*DEy;
var o6 = (tempVar5 / tempVar) * cosLAMBDA *
sinLAMBDA * ( DK + Da / a );
var o7 = ((RHO + tempVar6 * N_G) /tempVar)*
cosLAMBDA * sinLAMBDA *
( Dalpha / (1 - alpha));
var dLAMBDA = o1+o2-o3+o4-o5-o6-o7;
var dPHI = sinPHI / tempVar3 * Dx0 -cosPHI/
tempVar3 * Dy0 -
tempVar4 * tanLAMBDA*cosPHI*DEx-
tempVar4 * tanLAMBDA*sinPHI*DEy+
DEz;
var dH = - cosLAMBDA * cosPHI * Dx0 -
cosLAMBDA * sinPHI * Dy0 -
sinLAMBDA * Dz0 +
tempVar5 * sinLAMBDA * cosLAMBDA*
sinPHI * DEx -
tempVar5 * sinLAMBDA * cosLAMBDA*
cosPHI * DEy -
tempVar2 * DK + a / N_G * Da -
tempVar6 * N_G *
Math.pow(sinLAMBDA , 2) *
(Dalpha / (1 - alpha));
return { LAMBDA: LAMBDA + dLAMBDA,
PHI: PHI + dPHI, H: H + dH };
}
� �
Listato 1: La formula di Molodenskij in JavaScript
var step = (end - begin) / parts;
var temp = myFunction.call(scope, begin) / 2;
begin += step;
for (var c = 0; c < parts - 1; c++) {
temp += myFunction.call(scope, begin);
begin += step;
}
temp += myFunction.call(scope, begin) / 2;
return temp*step;
}
La trasformazione viene fatta infine mettendo insieme
le diverse conversioni:
// funzione che esegue la conversione completa
// da WGS84 a ED50
function convert(PHI, LAMBDA, H) {
var m = molodenskij(WGS84, ED50, PHI, LAMBDA, H);
var g = gauss(ED50, m);
// correzione coordinate per UTM
g[0] = g[0] * 0.9996;
g[1] = g[1] * 0.9996 + 500000;
return { x: g[0], y: g[1], h: g[2] };
}
La funzione “convert” accetta come argomenti la lon-
gitudine PHI, latitudine LAMBDA e altitudine H
espresse in radianti. Se si vogliono convertire dei va-
lori espressi in gradi, primi e secondi si usa la seguenti
funzione:
// converte gradi, primi, secondi in radianti
function toRadians(d, m, s) {
return (Math.PI/180)*(d + m / 60 + s / 3600);
}
A questo punto possiamo testare il tutto con dei dati
noti in WGS84:
longitudine: 44° 45’ 12.20809’’
latitudine: 14° 1’ 30.28015’’
altitudine: 589
ci aspettiamo come risultato i seguenti:
x: 5067303, y: 424247, h: 547
// funzione per testare il funzionamento
// (esegue una conversione e confronta con risultati noti)
function test() {
// preparo le variabili di ingresso (sono in gradi,
// le converto in radianti)
var LAMBDA = toRadians(45, 45, 12.20809);
var PHI = toRadians(14, 1, 30.28015);
var H = 589;
// eseguo la conversione
var converted = convert(PHI, LAMBDA, H);
// accedo al risultato usando: converted.x,
// converted.y, converted.h
// controllo i risultati
if (Math.round(converted.x) != 5067303) return false;
if (Math.round(converted.y) != 424247) return false;
if (Math.round(converted.h) != 547) return false;
return true;
}
Computer Programming n. 181 [None 2009] 17
GEOGRAFIA COMPUTAZIONALE
�function gauss(surface, m) {
var precision = 10000;
var PHI = m.PHI;
var LAMBDA = m.LAMBDA;
var H = m.H;
var a = surface.a;
var e2 = surface.e2;
//funzione da integrare
Integral_Function = function(val) {
var tempVal = (a * (1 - e2));
return tempVal /
Math.sqrt(Math.pow(1 -
e2 * Math.pow(Math.sin(val),2),
3));
}
// calcolo il fuso e sistemo la longitudine
var fuse_length = 6 * Math.PI / 180;
var fuse;
if (PHI > Math.PI)
fuse=Math.floor((PHI-Math.PI)/fuse_length);
else
fuse=Math.floor((PHI+Math.PI)/fuse_length);
var deltalength=(fuse -30) * fuse_length
+ fuse_length/2;
var dPHI = PHI - deltalength;
// scorciatoie
var sinLAMBDA = Math.sin(LAMBDA);
var cosLAMBDA = Math.cos(LAMBDA);
var tanLAMBDA = Math.tan(LAMBDA);
var tempVar1 =Math.sqrt(1-e2*
Math.pow(sinLAMBDA , 2));
var tempVar2 =Math.pow(e2/Math.sqrt(1 - e2), 2);
var valoreIntegrale = Integral(Integral_Function ,
this, 0,
LAMBDA, precision);
var x = valoreIntegrale +
(1/2 * a*sinLAMBDA*cosLAMBDA/tempVar1) *
Math.pow(dPHI,2) +
(1/24 * a*sinLAMBDA*Math.pow(cosLAMBDA ,3)) /
tempVar1 *
(5 - Math.pow(tanLAMBDA ,2) +
9*tempVar2*Math.pow(cosLAMBDA ,2) +
4 * Math.pow(tempVar2, 2) *
Math.pow(cosLAMBDA ,4)) *
Math.pow(dPHI,4) +
1/720 * a*sinLAMBDA*Math.pow(cosLAMBDA ,5)/
tempVar1 *
(61 - 58*Math.pow(tanLAMBDA ,2) +
Math.pow(tanLAMBDA , 4) +
270 * tempVar2 * Math.pow(cosLAMBDA ,2) -
330 * tempVar2 * Math.pow(cosLAMBDA ,2) *
Math.pow(tanLAMBDA ,2)) * Math.pow(dPHI, 6);
var y = (a * cosLAMBDA / tempVar1) * dPHI +
(1/6) * a * Math.pow(cosLAMBDA , 3) / tempVar1 *
(1 - Math.pow(tanLAMBDA ,2) +
tempVar2 * Math.pow(cosLAMBDA , 2)) *
Math.pow(dPHI, 3) +
(1/120) * a*Math.pow(cosLAMBDA , 5) / tempVar1 *
(5 - 18 * Math.pow(tanLAMBDA , 2) +
Math.pow(tanLAMBDA , 4) +
14 * tempVar2 * Math.pow(cosLAMBDA , 2) -
58 * tempVar2 * Math.pow(cosLAMBDA , 2) *
Math.pow(tanLAMBDA , 2)) *
Math.pow(dPHI, 5);
return [x,y,H];
}
� �
Listato 2: La formula di Gauss in JavaScript
Discussione
Osservazioni sulla precisione
Sono stati confrontati i risultati forniti da questa appli-
cazione con dei valori noti ed e ne e conseguito che il
calcolo viene fatto in modo preciso, con uno scarto di
al massimo una decina di millimetri per coordinata.
In tutti i calcoli sono state mantenute tutte le cifre
significative gestite dal linguaggio Javascript.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Sono state mantenute tutte le cifre
significative gestite dal linguaggio
Javascript.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Il calcolo piu dispendioso in termini di tempo e l’in-
tegrale (per via numerica) della funzione non lineare
(contenente radice quadrata, funzioni trigonometriche,
potenze, ecc). Facendo alcuni test con diverse funzio-
ni e stato visto che sono sufficienti 10 000 passi per il
calcolo dell’integrale. Aumentare ulteriormente il nu-
mero di passi allunga notevolmente l’attesa e non mi-
gliora il risultato, almeno per le prime 9 cifre significa-
tive. Javascript e un linguaggio interpretato, pertanto
non permette il raggiungimento delle prestazioni otti-
mali della macchina, tuttavia la velocita di esecuzione
in questo caso (alcuni decimi di secondo) e completa-
mente soddisfacente, e permette un utilizzo completo
in tempo reale.
Il programma e stato testato con Internet Explorer (5+,
6, 7), Mozilla Firefox (1.5, 2, 3), Opera (9.5) e Safari
(3+).
Futuri sviluppi
Si potrebbe rifattorizzare tutto il codice Javascript e
renderlo completamente ad oggetti, come e gia sta-
to fatto per la classe dell’ellissoide di rotazione. Se
ad esempio trasformassimo in classi anche le due lun-
ghe funzioni analitiche potremmo riutilizzare la stes-
sa istanza per elaborare molte coordinate in sequenza,
guadagnando in velocita perche potremmo mantenere
nello stato alcuni calcoli parziali.
18 Computer Programming n. 181 [None 2009]
GEOGRAFIA COMPUTAZIONALE
�
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:v="urn:schemas-microsoft -com:vml">
<head>
<title>WGS84-UTM</title>
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css"
href="style.css"></link>
<script type="text/javascript"
src="RotationElipsoid.js"></script>
<script type="text/javascript"
src="Molodenskij.js"></script>
<script type="text/javascript"
src="Gauss.js"></script>
<script type="text/javascript"
src="Main.js"></script>
</head>
<body>
<script type="text/javascript">
function trasforma() {
var latD = parseFloat(document.getElementById(’latD’).value);
var latM = parseFloat(document.getElementById(’latM’).value);
var latP = parseFloat(document.getElementById(’latP’).value);
var lngD = parseFloat(document.getElementById(’lngD’).value);
var lngM = parseFloat(document.getElementById(’lngM’).value);
var lngP = parseFloat(document.getElementById(’lngP’).value);
var H = parseFloat(document.getElementById(’h’).value);
var LAMBDA = toRadians(latD, latM, latP);
var PHI = toRadians(lngD, lngM, lngP);
var converted = convert(PHI, LAMBDA, H);
var output = ’\n<strong>UTM</strong >\n’ +
’N: ’ + Math.round(converted.x) + ’ m\n’ +
’E: ’ + Math.round(converted.y) + ’ m\n’ +
’h: ’ + Math.round(converted.h) + ’ m\n’;
document.getElementById("risultato").innerHTML = output;
}
</script>
<h1>Conversione di coordinate WGS84-UTM</h1>
<h3>Inserisci latitudine , longitudine , altezza:</h3>
<pre>
Esempio:°
45 45’ 12.20809"°
14 1’ 30.28015"
589 m
<strong>WGS84</strong>
Lat: <input type="text" style="width: 25px;" id="latD" value="0" °/>
<input type="text" style="width: 25px;" id="latM" value="0" />’
<input type="text" style="width: 75px;" id="latP" value="0" />"
Lng: <input type="text" style="width: 25px;" id="lngD" value="0" °/>
<input type="text" style="width: 25px;" id="lngM" value="0" />’
<input type="text" style="width: 75px;" id="lngP" value="0" />"
h: <input type="text" style="width: 25px;" id="h" value="0" /> m
<input type="button" value="calcola" onclick="trasforma();" />
<input type="button" value="test" onclick="alert(test());" />
<span id="risultato" style="margin: 1em;"></span>
</pre>
</body>
</html>
� �
Listato 3: Codice HTML per richiamare il programma
Computer Programming n. 181 [None 2009] 19
GEOGRAFIA COMPUTAZIONALE
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Si potrebbe inoltre estendere la
trasformazione anche ad altri
“datum” come ad esempio ITA40
(gia suggerito tra gli ellissoidi
disponibili).- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Lo sviluppo piu interessante potrebbe essere di inte-
grare la trasformazione con un sistema di mappe su
web (come Google Maps o Live Search Maps), in
modo da leggere le coordinate direttamente in metri.
Riferimenti
La teoria della trasformazione delle coordinate e alcu-
ni esempi realizzati come stored procedure per mysql
si trovano nell’articolo “Trasformazione di coordinate
geografiche da WGS84 a UTM”.
Per approfondire l’argomento sulla trasformazio-
ne di coordinate e consigliato il sito dell’Asso-
ciazione Italiana Topografi, in particolare l’artico-
lo “Alcuni metodi per il passaggio dal Sistema
WGS84 ai Sistemi Geodetici Locali” all’indirizzo
http://www.asit.biz/public/portale/articles.asp?id=5
Per imparare la basi sulla programmazione in Java-
script sono disponibili nelle librerie numerosi libri, e
nel web centinaia di tutorial.
Per i pattern avanzati di javascript come classi, ere-
ditarieta, prototipi e altro si troveranno sicuramen-
te informazioni sulla pagina di Douglas Crockford,
un guru di questo linguaggio che lavora per Yahoo:
http://javascript.crockford.com/
Konqueror: tutto da unainterfaccia
Sfruttare al massimo il gioiello della corona di KDE
Gary Richmond
STAVA riferendosi alla vittoria romana della
battaglia di Zela o stava facendo un saluto “a
due dita” al Senato patrizio di Roma, Giu-
lio Cesare quando disse, come riportato da
Seutonio e Plutarco, “veni, vidi, vici”? Ogni studen-
te che ha dovuto tollerare le squisite torture del latino
conoscera questa famosa frase.
Premiamo il pulsante avanzamento veloce fino al pre-
sente e queste parole potrebbero non essere fuori luo-
go sulle labbra delle brave persone che hanno svilup-
pato Konqueror, il browser e file manager “tutto in
uno”, meglio descritto come visualizzatore universale
di documenti.
Dipendendo solo da kdebase e una parte standard del
desktop KDE e gran parte degli utenti GNU/Linux ad
un certo punto hanno navigato o gestito file utilizzando
Konqueror. Precisamente perche viene pre-installato
tendiamo a darlo per scontato; inoltre, nel periodo suc-
cessivo al lancio avvenuto nel 2000, molte estensio-
ni e alternative sono diventate disponibili: in modo
particolare l’immensamente diffuso Firefox.
Prima di dar vita a una guerra infiammata tra utenti di
KDE e di GNOME e ai sostenitori dei vari file mana-
ger e browser, lasciatemi premettere che questo artico-
lo non e un esercizio comparativo delle caratteristiche
concorrenti. Lo scopo di questo articolo e di far co-
noscere al lettore le caratteristiche di Konqueror, delle
quali possono non essere consapevoli e di dimostrare
che, con alcune eccezioni, e possibile utilizzare e con-
figurare Konqueror in modo tale che si possa trascor-
rere un’intera sessione senza abbandonarne i confini.
Naturalmente, cio puo tendere a renderlo una sorta di
factotum e signore del nulla, pertanto se avete neces-
sita di un particolare strumento GNU/Linux mette a
disposizione una scelta imbarazzante anche per il “po-
wer user”. Se molte di queste caratteristiche vi sono
gia note, si spera che le altre non lo siano e che possiate
utilizzarle per migliorare la vostra esperienza di navi-
gazione. Cio che segue e appunto la mia scelta perso-
nale di suggerimenti, trucchi e funzionalita che trovo
piu utili. Inevitabilmente, avrete anche voi delle pre-
ferenze (scorciatoie per la ricerca sul web, movimenti
del mouse, file remoti) e vi chiederete perche non le ho
trattate: beh .. vi faccio le mie scuse anticipate.
Piu intelligente, piu veloce
I tesori sepolti sono i piu affascinanti, pertanto tiriamo
fuori la vanga e iniziamo a estrarre alcuni delle gemme
di Konqueror. Una delle prime, migliori e piu sempli-
ci cose che si possa fare e ottenere facilmente un in-
cremento di velocita. Si puo ottenere che Konqueror
si carichi piu velocemente modificando le impostazio-
ni: cliccate su Impostazioni, poi Configura Konqueror
e scorrete in basso all’ultima opzione, Prestazioni. Si
puo minimizzare l’utilizzo della memoria e “precarica-
re” un certo numero di istanze del browser. Fate degli
esperimenti con queste impostazione finche non otte-
nete una combinazione che meglio si adatta alle vostre
necessita e alle specifiche della macchina in termini
Computer Programming n. 181 [None 2009] 23
USER SPACE
Figure 1: Konqueror in modalita browser e file
di capacita di memoria e di processore. Se piuttosto
non volete armeggiare con queste impostazioni e sta-
te utilizzando Konqueror da GNOME, un trucco spor-
co e veloce e avviare una piccola applicazione KDE e
minimizzarla. In questo modo, l’avvio di Konqueror
richiedera un minor sollevamento pesi.
Si puo anche avviare Konqueror con una pagina vuota
digitando
about:blank
in una finestra di dialogo KDE ottenuta premendo Alt
+ F2 o con
about:konqueror
una pagina di default che vi permettera di scegliere
verso dove procedere. (Piu oltre vedrete come incor-
porare queste viste nei vostri profili Konqueror). Se
volete queste opzioni di avvio sul desktop, effettuate
un clic destro su un’area libera (del desktop) e sele-
zionate Crea Nuovo e poi Collegamento a locazione
(URL) e al prompt digitate un nome idoneo per il “pro-
filo” e, nella casella sottostante, digitate uno di questi
comandi.
Un ultimo modo per aprire Konqueror rapidamente e
da dove si vuole e sfruttare il fatto che l’etichetta della
locazione e effettivamente trascinabile. Navigate alla
Figura 2: Konqueror in “modalita FTP”
pagina web che volete e trascinate la favicon (sulla si-
nistra dell’indirizzo) sul Desktop e selezionate Collega
qui e verra creata una scorciatoia sul Desktop. Meglio
ancora, se si desidera creare una serie di scorciatoie a
pagine web sul desktop, selezionate Bookmarks e poi
scegliete Modifica Bookmark e trascinate i link che vo-
lete sul Desktop per quante icone di bookmark deside-
riate. Inoltre, questo metodo non vi chiedera di copiare
o do creare collegamenti sul desktop. Installera auto-
maticamente un’icona Desktop. La stessa cosa vale
per il trascinamento al pannello.
Sfogliare e archiviare
Una caratteristica che rende unico Konqueror, e dico
unico, e che mentre altri web browser hanno molte
caratteristiche eccellenti, e effettivamente uniche, par-
ticolarmente Flock, Firefox e Opera, Konqueror non
ha pari in virtu della sua capacita di navigare il web e
il filesystem del computer dalla stessa interfaccia. Sı,
lo so, Firefox ha un’estensione che permette di suddi-
videre lo schermo e di visualizzare due differenti siti
web, ma si tratta di “siti web” e non di “un sito web e
di un file personale” come si vede nella Figura 1.
In questo esempio, avete effettivamente un client
FTP a due pannelli: basta trascinare il collegamen-
to FTP nella schermata destra del browser alla scher-
24 Computer Programming n. 181 [None 2009]
USER SPACE
Figura 3: Selezionando di file contigui con il metodo a
“elastico”
mata del browser dei file e Konqueror vi chiedera di
spostare/copiare l’immagine ISO (Figura 2).
Se non avete impostato una cartella specifica per questi
download non e necessario perdere tempo a cercarla.
(Se avete impostato KGet per intercettare tutte le ri-
chieste di download per le cartelle preimpostate KGet
ridefinira questa impostazione). Se si preferisce si puo
aprire una finestra terminale in Konqueror e trascina-
re, rilasciare e scaricare un file lı (diro di piu su questa
tecnica piu oltre).
Per ottenere questo risultato, selezionare Impostazio-
ni dal menu a discesa e scegliere Suddividi lo scher-
mo verticalmente. Tuttavia, per una azione piu ve-
loce da tastiera basta eseguire semplicemente una
delle seguenti operazioni per aprire e chiudere le
configurazioni di suddivisione dello schermo:
• Ctrl + Shift + L suddivide lo schermo vertical-
mente
• Ctrl + Shift + T suddivide lo schermo orizzontal-
mente
• Ctrl + Shift + R chiude lo schermo(i) suddiviso
attivo
La copia e o il trasferimento di file e reso molto piu
facile dall’utilizzo degli schermi suddivisi poiche ren-
de il drag&drop ancora piu semplice. E cio riguarda
Figura 4: Konqueror in modalita file e terminale
anche i supporti esterni: CD, DVD, drive USB e pen-
ne USB. Non potete costruire una catapulta da Kon-
queror, ma potete utilizzare il suo metodo a “elastico”
per selezionare i file contigui e selezionare dal menu
di contesto le opzioni. Basta utilizzare il mouse per
disegnare un’area attorno ai file desiderati (Figura 3).
Se dovete svolgere delle operazioni da riga di coman-
do, Konqueror vi puo far risparmiare la seccatura di
aprire una console separata. Se selezionate il menu
a discesa Impostazioni vedrete una voce per “mostra-
re l’emulatore di terminale” (o per aggiungere l’icona
per esso attraverso il menu a discesa Impostazioni, sot-
to Configura barra degli strumenti e trascinarla sulla
toolbar): cio fara aprire un’istanza di un terminale al-
l’interno di Konqueror. Per i neofiti di GNU/Linux, si
tratta di un modo utile per seguire la struttura dei file
di sistema, poiche cliccando su una cartella non solo vi
portera a quell’elemento in modo grafico ma sara an-
che seguito dalla riga di comando. Dopo aver aperto
la scorciatoia alla directory desiderata potete eseguire
comandi su un particolare file nel terminale integrato
(Figura 4).
Computer Programming n. 181 [None 2009] 25
USER SPACE
Figura 5: Schermo suddiviso che mostra la pagina HTML e
l’editor di testo integrato
Gestione e navigazione di file
preimpostati
Una ulteriore ottima caratteristica di Konqueror fara
risparmiare tempo e facilitera la navigazione: si tratta
del filtro di visualizzazione (View Filter). Si puo acce-
dere ad esso dal menu Strumenti e si puo anche aggiun-
gere l’icona alla toolbar selezionandola e aggiungen-
dola da Impostazioni e poi scegliendo Configura barra
degli strumenti. Se si seleziona il tipo di file che ave-
te scaricato, allora tutti i file di quel tipo appariranno.
Come tutti i menu ben fatti, il filtro di visualizzazione
e contestuale. Non lo vedrete se Konqueror e in moda-
lita browser web. Un vantaggio per i “terminalmente
disorganizzati”! Il filtro di visualizzazione funziona
anche in modo incrementale; cioe, se dopo un primo
esercizio di filtraggio selezionate un ulteriore tipo di
file, questo viene aggiunto alla selezione. Si deve se-
lezionare Reimposta per ripristinare le impostazioni di
default del file manager.
Se si sta navigando una pagina web, il filtro di vista
viene negato per ovvie ragioni; tuttavia, il filtro di vi-
sta offerto in modalita browser puo offrire all’utente un
utile strumento di apprendimento. Ad esempio, nella
scrittura di articoli che prevedono dei tag XML spesso
mi dimentico quali sono i tag ammessi (o non ne co-
nosco neanche uno). In questo caso mi avvalgo della
Figura 6: Konqueror “dopato”: ogni visualizzazione che si
possa desiderare
suddivisione dello schermo. Apro sul web un artico-
lo pubblicato che contiene i tag corretti, suddivido lo
schermo (replicando cosı la pagina), clicco sul nuovo
schermo per renderlo attivo (un “led” verde si accen-
dera nella parta in basso del browser) e seleziono il
menu Visualizza e modifico la Modalita visualizzazio-
ne in Editor di testo avanzato integrato. Cosı facendo
appariranno i tag XML dell’articolo e posso effettuare
un confronto riga per riga per capire come l’articolo e
stato costruito a livello di tag (Figura 5).
Si tratta di un aiuto molto utile. Certo, Visualizza →
Sorgente pagina in Firefox fa la stessa cosa, ma in due
finestre separate, mentre Opera aprira un’altra scheda
(Ctrl + UM nella versione 9.5 alfa). Tuttavia, que-
sti non facilitano il confronto riga per riga. Per inci-
so, se si vuole duplicare lo schermo suddiviso per se-
guire la navigazione dell’originale, basta cliccare sul
piccolo riquadro vuoto in basso al browser. Appa-
rira un piccolo simbolo “a catena”. Devo ammetterlo,
non riesco tuttavia a immaginare un utilizzo di questa
funzionalita. E voi?
Se nel browser si vuole una navigazione senza mouse
sui collegamenti ipertestuali, premete Ctrl e i collega-
menti verranno contrassegnati con un piccolo riquadro
beige con delle lettere. Per seguire un link basta pre-
mere la lettera corrispondente sulla tastiera. Il vostro
proverbiale vantaggio puo comunque variare: se anda-
26 Computer Programming n. 181 [None 2009]
USER SPACE
Figura 7: schermo suddiviso di Konqueror con colori
preimpostati
te sul sito Distrowatch, un sito fitto di link molto ravvi-
cinati, la navigazione dei link per mezzo della tastiera
puo essere problematica.
Come ogni browser che si rispetti, si puo naturalmente
impostare la propria homepage nei file di configurazio-
ne di Konqueror ma a differenza di Firefox non potete
impostare piu homepage da aprire in schede separate.
In Firefox il trucco si ottiene digitando quanto segue:
http://www.google.com/linux |
http://www.distrowatch.com |
http://www.bbc.co.uk.
Cio non funzionera in Konqueror, ma almeno e ver-
satile. Konqueror supporta il caricamento dei profi-
li (come fanno Firefox e Opera) per aggirare questo
problema, tra l’altro.
Per inciso, ho notato che Konqueror puo variare nel
menu profili da distro a distro. Se si utilizza Ubuntu
si vedra che mancano alcuni caratteristiche. Si posso-
no comunque ripristinare, basta che puntiate il vostro
browser all’indirizzo
http://awebfactory.com.ar/node/91
Aprite Konqueror. In base a quante homepage volete
per default, suddividete lo schermo e ridimensionatelo
come desiderato e a turno, rendete ciascuna area atti-
va, navigate a una pagina web e ripetete questo pro-
cedimento per tutte le schermate finche non le avete
Figura 8: File di configurazione di Konqueror
impostate tutte. Poi cliccate su Impostazioni e selezio-
nate Salva profilo visualizzazione “navigazione Web”,
scegliendo un nome pertinente e idoneo per il profilo e
spuntate la casella salva url nel profilo. E tutto. In base
alle dimensioni del vostro schermo potreste voler au-
mentare la superficie premendo il tasto F11. Se avete
uno schermo realmente grande o state utilizzando una
TV ad alta risoluzione una combinazione di queste im-
postazioni vi dara spazio in abbondanza di cui potre-
ste aver bisogno se volete visualizzare una schermata
come quella mostrata nella Figura 6.
Se lo spazio e da preservare si puo invece impostare
un profilo a schede e chiamare il profilo, ad esempio,
“homepage a schede” invece di “homepage a schermo
splittato”. La stessa cosa puo essere fatta con i profili
Konqueror in modalita file. Un bonus in piu in moda-
lita visualizzazione file e che si puo impostare il colo-
re di sfondo per distinguere le differenti aree suddivise
dello schermo. La Figura 7 illustra le possibilita.
Mettilo sulla scheda
Nei preistorici giorni bui di Internet Explorer il concet-
to di navigazione a schede era esotico quanto il concet-
to di calcolo sicuro in Microsoft, ma Konqueror, come
Firefox, Opera, Galeon, Epiphany e altri hanno offerto
agli utenti gli indispensabili vantaggi della navigazio-
Computer Programming n. 181 [None 2009] 27
USER SPACE
Figura 9: Konqueror con i pulsanti di chiusura sulle schede
ne a schede da anni. La navigazione a schede di Kon-
queror si integra bene con profili, ma puo fare anche
piu di cio, con un po’ di impegno.
La via piu lunga e selezionare dal menu File l’opzione
Nuova Scheda e con un clic destro su questa seleziona-
re Chiudi Scheda. Ci sono anche altri modi: clic “cen-
trale” su un link in modalita browser per aprire una
nuova scheda, o clic centrale su una directory o su uno
specifico file in modalita file per lo stesso effetto. Se
si preferisce si puo trascinare e rilasciare un collega-
mento web nello spazio vuoto sulla destra dell’ultima
scheda.
Aspetto frustrante e che Konqueror non ha per default
il pulsante di chiusura sulle schede, ma potete aggiun-
gere questa caratteristica molto utile. I file di configu-
razione di Konqueror sono tutti in semplice testo, facili
da leggere e da modificare (come utente root). Aprite
il vostro editor di testo preferito come root e navigate
alla cartella:
/home/__nomeutente__/.kde/share/config/konquerorrc
scorrete in basso alla sezione intitolata FMSettings e
modificate la riga MouseMiddleClickClosesTab a true
(Figura 8).
Un pulsante di chiusura e una caratteristica utile nel-
la navigazione a schede. Opera, Firefox e Flock
Figura 10: Tweak GUI con schede
la hanno. E anche Konqueror puo averla. Ba-
sta andare sul wiki di KDE (http://wiki.kde.org/tiki-
index.php?page=Hidden%20configuration) e prende-
re un piccolo e utile tool GUI per la modifica delle
impostazioni nascoste di configurazione o prenderlo
da
http://www.kde-apps.org/content/show.php/
Tweaking+Konqueror+tabs?content=44376
Per eseguirlo basta aprire con Alt + F2 una finestra
di comando e digitare tweak, o digitare il seguente
kioslave nella barra degli indirizzi di Konqueror:
settings:/Components/
e l’icona dell’applet Tweak sara disponibile (Figure 9
e 10).
Se si vuole rendere il lavoro con le schede piu faci-
le, passate il mouse su una scheda e fate scorrere la
rotellina avanti e indietro per passare da una scheda
all’altra; se si vuole anche riorganizzare l’ordine del-
le schede, trascinatele e rilasciatele altrove sulla riga
delle schede.
Konqueror ha un ulteriore utile trucco nella manica. A
volte vorreste che aprisse una visualizzazione di un file
sempre in un particolare modo e non solo durante una
specifica sessione: che si tratti della visualizzazione di
una icona, di un file, dei dettagli di un file, ecc. Di
nuovo, aprite
28 Computer Programming n. 181 [None 2009]
USER SPACE
Figura 11: Impostazione di Konqueror della visualizzazione
per cartella
/home/__nomeutente__/.kde/share/config/konquerorrc
e modificate (come root) nella sezione MainViewSet-
tings il valore a true (Figura 11).
SaveViewPropertiesLocally=true
Dopo aver apportato questa modifica e aver selezio-
nato la visualizzazione del file desiderata dal menu
Visualizza (selezionate Modalita visualizzazione) per
una particolare directory, chiudete Konqueror e ria-
pritelo: questa sara la visualizzazione di default del-
la directory finche non la modificate. I piu acuti di
voi avranno capito che questa modifica puo essere “fu-
sa” con le configurazioni di profilo per creare le vostre
impostazioni preferite di navigazione dei file.
Un ultimo suggerimento sulle schede. Se preferite le
schede di Konqueror in basso, basta modificare (co-
me root) nella sezione di configurazione FMSettings
la proprieta TabPosition=Top in TabPosition=Bottom.
Liberta attraverso la schiavitu
Benche possa sembrare un incrocio tra un brano di
“Newspeak” di Orwell e la saggezza gnomica di Bla-
ke ci porta a una delle piu utili e potenti caratteristi-
che di Konqueror: i kioslave. Kio e l’abbreviazione
Figura 12: Kioslave audio in azione
di KDE input/output, che gli fornisce una omogenea
trasparenza in rete. Assumono la forma, giusto per
citarne alcuni, di help:/, man:/ e info:/.
Un elenco dei kioslave supportati e disponibile nella
sezione Protocols di KInfoCenter ed e un elenco abba-
stanza grande. Se siete allergici alla riga di comando e
alla visualizzazione delle pagine man in un terminale,
aprite Konqueror e digitate nella barra degli indirizzi
man:/ seguito dalla pagina man che volete e otterrete
una gradevole e lineare pagina HTML. State scrivendo
un articolo su Amarok e non volete aprire questa ap-
plicazione solo per conferma su qualche piccolo detta-
glio? Bene, basta digitare help:/amarok e Konqueror
lancera il manuale dell’applicazione. E qualcosa di li-
neare e pratico ma i kioslave possono fare cose molto
piu potenti.
Schiavi del ritmo e qualcosa sulla barra
laterale
Chiunque ha le sue preferenze e la mia antologia e del
tutto personale, in base alle mie preferenze e all’utiliz-
zo: e voi avrete certamente le vostre. Ecco una breve
antologia che ritengo dimostri la grande potenza e uti-
lita della loro trasparenza. GNU/Linux ha molti buone
utility di ripping e codifica per file musicali (compresa
l’ultima release di K3B che ora comprende una fun-
Computer Programming n. 181 [None 2009] 29
USER SPACE
Figura 13: Un file mp3 trascinato sulla barra laterale di
Konqueror
zionalita di ripping) e io le uso. Tuttavia, audiocd:/ e
un kioslave che puo fare molto da un’unica interfaccia
Konqueror quando serve al volo.
Se inserite un CD musicale, aprite Konqueror e digitate
audiocd:/ nella barra degli indirizzi vi verra presentato
cio che mostra la Figura 12.
Cio che otterrete e l’elenco dei file WAV originali pre-
senti nel CD (e se lo fate mentre siete connessi a In-
ternet verranno visualizzati i titoli delle canzoni gra-
zie a CDDB, http://en.wikipedia.org/wiki/CDDB, al-
trimenti verranno semplicemente elencati come traccia
1, traccia 2, ecc.). Konqueror crea anche dei file virtua-
li in tutti i codec musicali che la vostra distro supporta
in modo nativo, compreso quelli proprietari che avete
scaricato e installato. Eseguire il ripping e la codifi-
ca di tutte le tracce selezionate e semplicemente una
questione di drag&drop del codec selezionato in una
directory del disco rigido. Konqueror fara il resto. Cio
che non puo fare, senza un vostro precedente interven-
to diretto, e configurare i parametri. Pertanto, nello
spirito di questo articolo, aprite una ulteriore scheda e
digitate nella barra degli indirizzi
settings:/Sound/
selezionate Audio CD e potete manipolare le varie
impostazioni (bitrate, tag ID3) per MP3 e Ogg Vorbis.
Figura 14: Il kioslave “sysinfo” vi fornisce una gran quantita
di informazioni azionabili
I devoti della riga di comando che hanno molto spazio
libero su disco possono trascinare il file WAV in una
finestra terminale in Konqueror e kfmclient (uno script
Konqueror) vi offrira diverse opzioni. cp e quella che
fa al caso vostro. Questa opzione copiera il file nella
directory di default. Se si vuole copiare il file altrove
bastera cambiare directory con cd e poi copiare. Kon-
queror non ha ancora finito con i file musicali. Se non
state memorizzando i file sul disco rigido o su un dri-
ve esterno USB potreste voler masterizzare il tutto su
CD. Bene, se avete installato Konqburn (in preceden-
za Kio–burn) potete anche masterizzare con Konque-
ror. Basta trascinare le tracce selezionate sull’icona
CD nella barra laterale e procedere.
Se volete campionare la musica che avete appena “rip-
pato” e codificato con Konqueror, non e necessario av-
viare un media player di grosso calibro (a meno che
non abbiate necessita di caratteristiche avanzate). Ba-
sta cliccare sul pulsante Media Player nella barra la-
terale di Konqueror. (Se non lo vedete, aggiungetelo
con un clic destro su una parte vuota della barra late-
rale, selezionando Aggiungi nuovo e aggiungetelo. Per
inciso, si puo avere piu di una barra laterale. Sempre
con un clic destro su una parte libera della barra la-
terale selezionate Visualizzazione multipla). Cliccate
sull’icona Media Player nella barra laterale, trascinate
la traccia e state incidendo (Figura 13). (Per qualco-
30 Computer Programming n. 181 [None 2009]
USER SPACE
Figura 15: Opzioni del menu di Kim
sa di piu sostanziale provate il pulsante Amarok nella
barra laterale).
Un ulteriore kioslave che permette di fare qual-
cosa senza abbandonare i confini di Konqueror e
Kio–sysinfo. E necessario che sia installato apt slave
perche funzioni ma come potete vedere i risultati sono
abbastanza impressionanti (Figura 14)
Se utilizzate una distro basata su apt c’e un pul-
sante azionabile per apt collegato al repository che
vi permette di eseguire una ricerca in locale e onli-
ne e di effettuare il download; tutti i pulsanti sotto
Cartelle comuni e Informazioni sui dischi sono an-
che azionabili. Potete scaricare i binari precompila-
ti di Kio-sysinfo per le distro piu diffuse dall’indiriz-
zo http://jerrad.tuxfamily.org/kiosysinfo eng.html. Se
non vi va a genio l’overhead di ricerca relativamente
alto di Beagle e della sua stirpe e/o la vostra macchina
e poco potente, il kioslave locate:/ sara una utile al-
ternativa. Questo kioslave presenta i risultati in file e
cartelle, queste ultime con colori non di default, ed e
molto veloce.
Ci sono molti altri kioslave eseguibili. Ho senza dub-
bio tralasciato il vostro preferito, specialmente i pro-
tocolli remoti come fish, ssh, webdav, smb, vnc, ecc.
Ho smesso di contare il numero di IO slave elencati in
Kinfocenter a settanta; comunque utilizzandone mol-
ti o pochi, specialmente in combinazione con la bar-
Figura 16: Opzioni di Audiokonvert
ra laterale, potete ottenere molti seri vantaggi da una
interfaccia Konqueror ben configurata.
Lieto di essere d’aiuto!
I preveggenti, compıti, esistenzialmente stressati,
ascensori progettati dalla Sirius Cybernetics Corpora-
tion che tanto annoiavano Marvin l’androide paranoi-
co potrebbero aver tratto l’ispirazione dai progettisti di
Konqueror e dalla stretta integrazione con KDE. En-
trambi sono ansiosi di piacere e di fornire un buon ser-
vizio. I felici trasportatori verticali di persone lo fe-
cero in un modo (a parte il saltuario broncio ai piani
interrati come protesta) e Konqueror lo fa con i Ser-
vice Menu. Per molti aspetti, sono molto simili alle
estensioni di Firefox; installando una propria selezione
personale otterrete quelle caratteristiche che rendono
possibile trascorrere un’intera sessione in Konqueror
senza staccarsi dalla sua interfaccia.
Naturalmente, tutti i browser di file e i web bro-
wser hanno i loro menu di contesto, ma ulterio-
ri menu di servizio metteranno il turbo a Konque-
ror. Il posto migliore per incrociarli e il sito KDE
Apps (http://www.kde-apps.org/). Selezionando “ser-
vice menus” avrete subito accesso a 251 di essi. Al
solito, la mia selezione riflette le mie preferenze e i
miei requisiti.
Computer Programming n. 181 [None 2009] 31
USER SPACE
Figura 17: Il menu di servizio Debian
KIM
Siccome mi piace aggiungere delle schermate ai miei
articoli e talvolta devo fare qualche modifica senza in-
vocare un vero pacchetto grafico, trovo molto utile il
menu di servizio KIM (KDE Image Menu). Tra i co-
mandi contenuti nel menu Action ci sono le seguenti
operazioni: ridimensiona, converti, ruota, comprimi,
aggiungi testo, aggiungi bordi. Le funzioni di Undo
sarebbero utili, ma cio nonostante KIM aggiunge al-
cune funzioni molto veloci e utili a Konqueror quan-
do si ha necessita solo di qualche modifica di “post
produzione” su queste schermate catturate dalla riga
di comando (Figura 15).
Audiokonvert
Questo menu di servizio integra la capacita di Konque-
ror di eseguire il ripping e la codifica di un CD musi-
cale. Per le volte in cui avete scaricato un file musicale
e non e in un formato che potete riprodurre, o in cui
lo volete, Konqueror vi permettera di convertire i file
audio da e verso cinque differenti formati (Figura 16).
Nonostante il messaggio di errore, il file viene conver-
tito senza problemi. Se lo state convertendo nel for-
mato per l’iPod (M4A) allora potete trasferirlo sul ri-
produttore attraverso il kioslave iPod:/ dalla barra degli
indirizzi di Konqueror.
Uno per utenti Debian
Di solito, aprite il gestore dei package (Synaptic, Ky-
naptic, Adept, ecc.) per installare un file binario o da
riga di comando utilizzate
apt-get
Se state eseguendo delle operazioni rudimentali con
il pacchetto lo potete fare da Konqueror con Debian
Menu, un menu di servizio che vi permette di in-
stallare, disinstallare e interrogare le informazioni sul
pacchetto.
Questi sono solo alcuni dei miei favoriti. Voi avrete
i vostri. Ce ne sono 250 tra cui scegliere! E se non
trovate cio che vi serve e disponibile un rapido tutorial
su come si creano su:
http://techbase.kde.org/Development/Tutorials/
Creating_Konqueror_Service_Menus
PDF toolkit
Quest’ultimo e una perla. E un menu di servi-
zio con un’ampia gamma di potenti opzioni, ed
e disponibile dal sito Kde-look (http://www.kde-
look.org/content/show.php/konq-pdf+(new+PDF-
smp)?content=37321).
Conclusioni
Konqueror come visualizzatore universale di docu-
menti si e dimostrato degno del suo nome; con l’ag-
giunta dei menu di servizio e dei kioslave e di un po’
di configurazione, Konqueror puo supportarvi per una
intera sessione, purche non abbiate particolari esigen-
ze da “power user”. Certo, supera il test di compati-
bilita Web Acid2 ma non funziona bene con ogni sito
(quale browser lo fa?); funziona con GMail ma solo
nella versione di base in HTML (e potete sempre sele-
zionare Modifica identificazione del browser nel menu
Strumenti e impostarlo a “Firefox”), e non ha esten-
sioni alla Firefox. Cio nonostante, spero che questo
articolo abbia dimostrato sia la potenza sia la versati-
lita di Konqueror a fare molto piu degli altri browser
senza abbandonare la sua interfaccia.
32 Computer Programming n. 181 [None 2009]
Estensioni Google in Firefox
Interagire con le utility Google attraverso Firefox
Gary Richmond
Voglio dare un’occhiata in dettaglio su co-
me “superdotare” il browser Firefox con
una selezione d’elite di utility Google. Fi-
refox ha le sue critiche e i suoi difetti, ma
ad oggi e stato scaricato oltre 400 milioni di volte: e
come si dice “quello che mangiano gli flies, non posso-
no sbagliarsi tutti!”. Firefox e abbastanza buono cosı
com’e, ma ognuno sa che la funzionalita di Firefox
si estende enormemente con la semplice aggiunta di
estensioni, nonostante i problemi di sicurezza [1].
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
In questo articolo descrivero come
estendere Firefox in modo che
possa interagire meglio con
Google.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
La scelta delle utility Google abilitate per mezzo di
estensioni e naturalmente del tutto personale, basata
sulle mie necessita e preferenze mentre navigo. Qual
e la mia scelta? Gmail, GSpace, Better Gmail, Bet-
ter Gcal, Customise Google, Gmail Notifier, Mini-
map Sidebar. Pero . . . dovrebbe essere sufficiente come
assortimento!
Una nota su Google
Quando Google inizia a parlare messianicamente su
cio che chiamano la loro missione da 300 anni [2] ini-
zia a sembrare come un’incrocio tra James T Kirk e
Giovanni il Battista e inizio a preoccuparmi che il man-
tra “non essere malvagio” si sia tramutato nell’impero
malvagio di Microsoft. Quando iniziano a parlare di
linkare tutti a tutti e tutto il resto, posso vedere Ri-
chard Stallman che si strofina la sua sindrome del tun-
nel carpale. Inizio ad avere allucinazioni che Google
estendera la sua portata a estensioni chiamate “Google
Murder”, “Google Blackmail” e “Google Torture” [3].
Larry Page e Sergy Brin possono non essere Steve
Ballmer e Bill Gates, i Ronnie e Reggie Kray del
mondo del computer, (a right pair of diamond geezers
and no bleeding mistake) ma un bisticcio con Ebay, il
Grande Firewall della Cina e le preoccupazioni gene-
rali sulla sicurezza personale quando si usano le utility
Google hanno alquanto offuscato la nostra visione del
grande ciclopico motore di ricerca. Gia, almeno Goo-
gle e stato relativamente “GNU/Linux friendly”. Pen-
sate a Picasa e a Google Earth per cominciare e anche
alla sponsorizzazione del Summer of Code. Indubbia-
mente, hanno anche dei motivi commmerciali ma al-
meno non sono entrati far parte di una duplice una-
nimita con Microsoft sui brevetti: ma sono abbastan-
za riservati. Tuttavia, cio non mi impedisce di testare
queste estensioni per Firefox.
Computer Programming n. 181 [None 2009] 33
PROGRAMMING
Una nota sull’installazione delle
estensioni
In questo articolo, trattero diverse estensioni. Nel caso
non abbiate mai usato le estensioni, ci sono tre modi
per installarle:
1. cliccare semplicemente sull’icona installa ora e
tutto verra eseguito automaticamente;
2. clic destro sull’icona, scegliere salva collegamen-
to come dal menu e salvare l’estensione in una
cartella prescelta. Poi, cliccare sul menu a di-
scesa File e selezionare Apri File, spostarsi nel-
la cartella in cui si e salvato il file con estensione
xpi e installarlo. (Scommetto che non in molti
utilizzerete questo percorso tortuoso!)
3. trascinare e rilasciare il file xpi su una istanza di
Firefox in esecuzione, che si occupera di tutto.
In questo articolo forniro i link diretti alle estensio-
ni dai repository ufficiali, e un link alla homepage del
progetto se disponibile. Tenete presente che il down-
load e l’installazione delle estensioni dal sito web uffi-
ciale e sicuro di Mozilla minimizza la possibilita di un
attacco “man-in-the-middle”.
Gmail e roba associata
Sono arrivato tardi, molto tardi, a Google Mail (d’ora
in poi “Gmail”) ma dopotutto, non sono mai stato un’i-
cona della moda. Una crudele necessita, come avrebbe
detto Oliver Cromwell. E probabile che molti di voi
stiano gia utilizzando Gmail, ma nella remota possibi-
lita che cosı non fosse, potete puntare il vostro browser
al sito ufficiale (https://www.gmail.com/) e iscrivervi
al servizio.
Da quando e stato inaugurato il servizio, l’insieme di
funzionalita di GMail e sbocciato. Quando mi iscris-
si a Google Mail e installai l’estensione per Firefox
mi furono messi a disposizione circa 2.9 GB di spazio
su disco che consideravo essere piu che sufficiente per
i miei scopi. La buona notizia, specialmente per chi e
alla ricerca di una capacita realmente importante, e che
dal Gennaio 2008 sono disponibili fino a 6 GB [4]. Il
link [4] vi mostrera l’incremento dinamico dello spa-
zio di memorizzazione in tempo reale, facendo parte
del programma di storage che Google chiama “Infini-
ty+1”. Dovreste inviare e-mail di proporzioni bizan-
tine per esaurire questa capacita, tuttavia l’offerta di
Google non e l’offerta piu capiente [5]. Va sottolinea-
to che avrete accesso ad allegati e-mail fuino a 20 MB
e questa sara una caratteristica piu utile (nonostante la
vostra ampiezza di banda). Una caratteristica grade-
vole e che questi allegati (inviati o ricevuti) verranno
scanditi automaticamente da un antivirus. A parte lo
spazio di memorizzazione, Gmail vi da una ovvia por-
tabilita su vari computer e dovunque sul globo abbiate
accesso a una macchina. Il cuore di Gmail sono ca-
ratteristiche come labels, voicemail, chat e l’integra-
zione con altri servizi Google come calendar, Docs e
Reader. Tornero a parlare di alcuni di questi piu oltre.
Suppongo che Gmail sia un buon punto di partenza per
la ricerca di estensioni Firefox, poiche portera a varia-
zioni su questo tema: Gmail Notifier, Better Gmail e
FireGPG. Pertanto, mettiamoci al lavoro.
Gmail Notifier
L’estensione Gmail Notifier [5] ha una licenza GPL ed
e compatibile con le versioni di Firefox dalla 1.5 alla
3.0 pertanto gran parte degli utenti dovrebbero esse-
re coperti. Ha senso installarla prima di Better Gmail
poiche questa estensione vi permettera di ricevere no-
tifiche nel browser Firefox (dopo aver eseguito il lo-
gin) e dopo aver impostato l’estensione potete inizia-
re a testare realmente le capacita di Gmail con Better
Gmail.
Al solito, vi verra richiesto di riavviare Firefox per
completare l’installazione di Gmail Notifier. Dopo che
Firefox si e riavviato, selezionate il menu a discesa
Strumenti e scegliete Add-Ons e cliccate su Estensio-
ni. Scorrete verso il basso e localizzate l’estensione
(sono in ordine alfabetico). Selezionatela e cliccate su
Preferenze e vi verranno presentate le seguenti opzioni
modificabili:
Le opzioni sono in gran parte autoesplicative e questa
videata illustra le impostazioni di default. Potete impo-
starle a cio che vi soddisfa di piu. Forse la caratteristi-
ca piu interessante e la capacita di abilitare piu account
Gmail. Siccome questa caratteristica impatta su un’al-
34 Computer Programming n. 181 [None 2009]
PROGRAMMING
Figura 1: Preferenze di Gmail Notifier
tra estensione descritta in questo articolo, la terro per
dopo, come fara per la checkbox di abilitazione delle
connessioni non protette.
Per default avrete ora un’icona disattivata sulla barra
di stato nella parte inferiore del browser. Portando il
mouse su di essa vi verra richiesto di effettuare il login.
Cliccando si aprira una finestra di dialogo di login: una
volta effettuato il login l’icona diventera rossa; finche
siete loggati restera in questo stato. Se spostate ora il
mouse sull’icona vi avvisera se ci sono nuovi messaggi
(il colore diventa blu); ci sara anche una notifica accan-
to all’icona colorata sul numero di e-mail non ancora
lette. In base a come avete impostato le preferenze,
cliccando sull’icona Gmail si aprira in una nuova fine-
stra, nella scheda corrente, in una nuova scheda o in
una nuova scheda senza focus. Se avete impostato le
preferenze di Gmail Notifier per reimpostare il conta-
tore di Notifier quando l’icona viene cliccata per apri-
re una e-mail, questo verra decrementato/incrementato
ogni volta. Per inciso, solo perche vi siete loggati in
Gmail in qualche altro modo non significa che siete au-
tomaticamente loggati via Firefox. Dovete effettuare il
login da Firefox.
Gmail Notifier e una eccellente estensione ma pro-
babilmente vi starete chiedendo perche dovete aprire
Gmail per vedere effettivamente quali sono queste e-
mail. Non chiedetevelo piu. La risposta a questa sec-
catura e impostare un “live bookmark” per sfruttare il
fatto che i bookmark di Firefox possono integrare feed
RSS. Tutto cio che dovete fare e creare una cartella nei
bookmark di Firefox. Selezionate il menu a discesa
Bookmarks e cliccate su Manage Bookmarks. Ora, se-
lezionate il menu a discesa File e scegliete New Live
Bookmark e si aprira una finestra di dialogo e vi verra
richiesto un nome, la locazione del feed e una descri-
zione (opzionale). Nome e descrizione sono arbitrari,
ma si deve seguire un rigido protocollo per il titolo del
feed. Deve assumere il seguente formato:
https://username:[email protected]/gmail/feed/atom
La buona notizia e che la connessione e SSL, ma la no-
tizia meno felice e che username e password vengono
memorizzati in chiaro nel file del bookmark. Effet-
tuate il login a Gmail e nella barra degli indirizzi ve-
drete l’icona di un feed RSS. Cliccate si questa icona
per aggiungere un live bookmark e seguite le richie-
ste. Ora, ogni qualvolta Gmail Notifier vi avvisa che
avete nuova posta, basta andare nel menu Bookmarks
e vedrete il live bookmark del feed Gmail/RSS. Evi-
denziaziondolo vi indichera il titolo(i) della(e) e-mail.
Due avvertimenti: primo, talvolta il live bookmark e
Gmail Notifier vanno fuori sync in termini di numero
di e-mail non lette. La soluzione e semplice: basta un
clic destro sul bookmark live nel menu Bookmarks e
selezionare Reload Live Bookmark. Secondo, il feed
non verra scaricato se non ci sono nuove e-mail nella
cartella inbox.
Better Gmail: un moustrap migliore
La cosa che amo degli hacker dell’open source e che
proprio non possono lasciare le cose come sono. Han-
no un desiderio irresistibile di armeggiare e migliorare
e Firefox e una grotta di Aladino per queste persone.
Gli script Greasmonkey [6] sono ben noti ai devoti del-
la piccola volpe. Wikipedia ha un eccellente articolo a
tal riguardo [7]. Persone piu esperte di me (penso sia-
no molte) hanno messo assieme questi script e hanno
prodotto un’agile estensione in Better Gmail [8] (pote-
te anche visitare la homepage di Better GMail [9] che
aggiunge alcune serie caratteristiche potenti a Gmail
come illustrano le opzioni sottostanti) . Se i pilchard
sono sardine giganti on steroids, allora Better Gmail e
un barracuda. Ed e anche accompagnato da un bonus:
l’approvazione formale di Tim O’Reilly [10].
Computer Programming n. 181 [None 2009] 35
PROGRAMMING
Figura 2: Schede delle opzioni di Better Mail
Nella scheda General avete la possibilita di opportu-
nita di selezionare le checkbox delle seguenti opzioni:
avere una connessione sicura crittografata con Gmail,
integrare Google Reader e aggiungere una gradevole
piccola caratteristica per mostrare l’utilizzo del disco
come barra di avanzamento. L’opzione piu interessan-
te della scheda Compose e Attachment Reminder. Que-
sta opzione vi ricorda di allegare un file a Gmail nel
caso lo aveste dimenticato, se c’e un riferimento a un
allegato nel subject di Gmail. Se questa caratteristica
e abilitata, quando si clicca su invia Gmail vi segna-
lera di non aver allegato il(i) file, con la possibilita di
premere annulla e di eseguire l’attach prima di reinvia-
re, o di inviarla comuqnue. Non vincera alcun premio,
ma e una piccola caratteristica ben fatta e ancor me-
glio quando il riferimento all’allegato si trova anche
nel testo principale o invece nel titolo della e-mail. La
scheda Messages vi da accesso a diverse caratteristiche
realmente utili: Conversation Preview e, ritengo, una
delle migliori. Una volta abilitata, si sara in grado con
un click destro su una e-mail di visualizzarne il con-
tenuto senza aprirla effettivamente nel modo normale.
Inoltre, ci sono delle opzioni all’interno di questa ca-
ratteristica per archiviare o spostare nel cestino l’ele-
mento selezionato. Ottimo. Attachment Icons sembra
banale ma in effetti potrebbe essere un vantaggio per i
patiti dell’iper-sicurezza visto che sostituisce l’anoni-
ma icona a graffetta che potrebbe celare ogni sorta di
indicibile bestialita. Ho provato questa caratteristica
con un allegato PDF e ha funzionato a dovere. (Il solo
svantaggio e che, poiche Gmail e uno strumento Web,
gli allegati non si trovano sul vostro disco rigido lo-
cale e anche dopo che l’e-mail e stata “scaricata” sara
ancora necessario scaricare l’allegato prima di poterlo
visualizzare, il che puo essere scomodo se e un grosso
file). Labels e un’altra utile caratteristica per l’organiz-
zazione di Gmail. Dopo che Better Mail e installato ed
e abilitata l’opzione Labels, troverete un’etichetta nel-
l’angolo in basso a sinistra della finestra di Gmail. Se
si clicca su Edit Labels apparira una videata e una fi-
nestra di dialogo in cui potete eliminare, modificare o
creare nuove etichette per gestire le vostre e-mail.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Se i pilchard sono sardine giganti
on steroids, allora Better Gmail e
un barracuda.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Abilitando Filter Assistant otterrete la stessa funzio-
nalita che vi attendereste da un client e-mail conven-
zionale come Evolution o Thunderbird per instrada-
re la posta desiderata in cartelle preimpostate o per
eliminarla come spam o robaccia.
L’ultima scheda importante in Better Mail e Sidebar.
Le due checkbox piu utili da attivare sono Add Google
calendar Link e Add Google Reader Link. Fatto cio,
questi link verranno aggiunti a Gmail e vi permetteran-
no, se lo desiderate, di accedere a queste applicazioni
Google da Gmail stesso, senza lasciarne i confini.
Utilizzo di GMail con IMAP e POP
Se si clicca sul link Settings in alto alla pagina si ve-
dra un certo numero di impostazioni. Selezionate For-
warding and POP/IMAP dove sarete in grado di predi-
sporre l’abilitazione di questi due protocolli in Gmail
(Figura 3).
Si puo scegliere una delle due opzioni ma in ogni ca-
so si avra una discreta quantita di configurazione nel
normale client e-mail. Questo aspetto e al di la de-
gli scopi immediati di questo articolo, ma si possono
ottenere istruzioni molto dettagliate e degli screenshot
alla pagina GMail Help Centre [11]. Dopo aver se-
36 Computer Programming n. 181 [None 2009]
PROGRAMMING
Figura 3: Scheda delle impostazioni di Gmail per la
configurazione POP e IMAP
guito queste istruzioni, ritornate alle impostazioni di
forwarding e salvate le modifiche. Si puo avere la po-
sta di Gmail inoltrata al normale client e-mail senza
esguire il login a Gmail o scaricarla direttamente nel
proprio programma di e-mail. Il che non va confu-
so con l’impostazione del servizio di Mail Fetcher in
Gmail che permette di scaricare la posta dal POP ser-
ver di un client e-mail (purche il vostro ISP suppor-
ti l’inoltro), pur conservando la possibilita di lasciare
il(i) messaggio(i) sul server. Si puo iniziare il proces-
so di impostazione del Mail Fetcher nella scheda Ac-
counts di Settings, seconda voce in basso. GMail Help
Centre fornisce una spiegazione e un howto [12].
Un’estensione per Firefox per chi non si fida di
nessuno
Molte estensioni per Firefox sono rivolte a utenti che
non si fidano neanche della propria madre che gli da il
bacio della buonanotte. Se siete una di queste persone,
ho un’estensione per voi che si integra con Gmail e of-
frira un sonno tranquillo e sicuro sapendo che nessuno
puo sbirciare o ficcare il naso su cio che inviate tramite
Google.
Molti lettori avranno sentito parlare del software di
crittografia Pretty Good Privacy (PGP) [13] che vie-
ne utilizzato, tra l’altro, per crittografare le e-mail. E
Figura 4: Preferenze di FireGPG
stata solo questione di tempo prima che qualcuno de-
cidesse di scrivere un’estensione per Firefox. Questa
estensione e FireGPG [14] e utilizza GnuPG svilup-
pato dalla Free Software Foundation e fortunatamente
supporta Gmail. Al momento in cui scrivo non e di-
sponibile dal sito ufficiale degli addon di Mozilla (il
che sarebbe piu sicuro), ma non avuto alcun problema
con il precedente link.
Tuttavia, prima di farlo funzionare in Firefox e pri-
ma necessario installare GnuPG sulla propria macchi-
na GNU/Linux. In molti casi sara gia installato. Altri-
menti, controllate sui repository del software e instal-
latelo (o reperitelo dal sito ufficiale [15]). Si tratta di
un tool a riga di comando (si veda man gpg) ma ci sono
diversi frontend disponibili [16], tra cui i due principali
sono KGpg per KDE e Seahorse per Gnome. Entrambi
genereranno le coppie di chiavi necessarie per critto-
grafare e apporre la firma digitale alle e-mail. Il mio
amico-collaboratore, Dmitri Popov, ha scritto un breve
ma eccellente howto su questo passaggio [17]. Ora si
puo installare l’estensione e la schermata Preferences
fornira le opzioni mostrate nella Figura 4.
La prossima volta che componete un messaggio in
Gmail, FireGPG avra aggiunto il pulsante Sign, Crypt
and Send che, se cliccato, vi fara una doppia richiesta:
una volte per la chiave pubblica e una per la chiave pri-
vata. Ci saranno anche altri pulsanti con variazioni di
queste opzioni in base alle proprie preferenze. (Que-
Computer Programming n. 181 [None 2009] 37
PROGRAMMING
Figura 5: Configurazione delle etichette GTD nelle
impostazioni Gmail
ste opzioni appariranno nella schermata di composi-
zione). Se vi fidate di Google per le chiavi private, ed
e un grosso se, allora ora avete una connessione secura
e la posta crittografata. Dopo aver iniziato questo ar-
ticolo FireGPG e stato aggiornato (alla versione 0.4.6)
per lavorare con l’ultima versione di Gmail: crea un
pulsante utilizzato per aggiungere un file crittografato
come allegato.
Perche non utilizzare un Gmail ancora migliore
per far tutto?
Gmail, Better Mail, Gmail crittografato. Perche fer-
marsi? Perche non estendere ulteriormente le cose
e aggiungere qualche stimolo organizzativo realmente
valido a Google in Firefox? Mi riferisco all’estensio-
ne GTD (Getting Things Done), all’estensione Better
Gcal e all’estensione Minimap sidebar.
GTD: Get Things Done
Se siete fanatici del controllo e dovete semplicemente
essere iper-organizzati, allora questa estensione per Fi-
refox fa per voi. Giusto quando si pensa che qualsiasi
altra estensione a Gmail dovra ottenere una concessio-
ne edilizia, si fa avanti GTD [18] per aggiungere una
gran quantita di ulteriori funzionalita a un’interfaccia
Figura 6: Il riquadro GTD search
gia stipata di caratteristiche che sgomitano a vicenda.
Citando le parole del sito web ufficiale, GTD rappre-
senta il massimo di sinergia di gestione e comunicazio-
ne pur garantendo cautela e sicurezza. Perbacco! Se si
e interessati alla filosofia alla base di GTD, la rivista
Wired ha pubblicato un articolo su GTD [19]. Si puo
utilizzare il precedente link [18] per installare questa
estensione super piccola, ma GTD e ora felicemente
presente nel sito ufficiale Mozilla degli addon [20].
Come FireGPG, con Gmail aggiornato alla versione
2.0, GTD non funzionera opportunamente a meno di
non tornare a eseguire la vecchia versione di Gmail.
Basta individuare le impostazioni older version nel-
l’angolo in alto a destra di Gmail e cliccando verranno
ripristinate tutte le configurazioni di queste estensio-
ni (se, come me, avete gia installato GTD). Questa e
la buona notizia, piu il fatto che gli sviluppatori GTD
stanno lavorando alla versione 2.0 per renderla compa-
tibile con Gmail 2.0. Nel frattempo, la cattiva notizia
e che se avete selezionato le impostazioni piu vecchie
di Gmail per ripristinare le impostazioni GTD, dopo
che effettuate il logout e nuovamente il login, riappare
la versione piu recente di Gmail come per vendetta e
siete costretti a ripetere di nuovo il trucco delle impo-
stazioni: e continuerete a doverlo fare fino all’aggior-
namento di GTD; ma questo e un piccolo prezzo da
pagare per questa super piccola estensione.
Dopo aver installato questa estensione, riavviato Fire-
38 Computer Programming n. 181 [None 2009]
PROGRAMMING
Figura 7: Gmail con le opzioni avanzate di GTD
fox e effettuato il login in Gmail, si vedra che cio che fa
e espandere notevolmente la funzionalita della caratte-
ristica Labels. Le etichette ora appaiono sotto varie
intestazioni: Contexts, Status, Projects e References
con la possibilita di aggiungere quante sottointestazio-
ni si vuole. Mentre tutte le etichette extra (collassa-
bili) sono situate nella parte inferiore del lato sinistro
di Gmail, tre altre caratteristiche vengono aggiunte:
un link GTD nell’ultima colonna di ciascuna e-mail,
un link Show GTD Search all’inizio dello schermo e
un pulsante nell’angolo inferiore destro per permetter-
vi di stampare Hipster PDA cards [21]. Cliccando su
una delle categorie delle etichette si aprira la scheda
Gmail Labels Setting in cui si possono selezionare le
sottocategorie o crearne di nuove (Figura 5).
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GTD rappresenta il massimo di
sinergia di gestione e
comunicazione pur garantendo
cautela e sicurezza- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Il servizio “GTD search” apre una finestra di dialogo
con molte opzioni di ottimizzazione fine basate sulle
etichette impostate, sulle date e sul fatto che le e-mail
siano contrassegnate da stellette o abbiano allegati, con
Figura 8: Google calendar attivato da GTD
la possibilita di salvare le ricerche. Si puo effettuare
una ricerca, poi aggiungere Categorie/Etichette a sin-
gole e-mail e quando si ritorna alla propria inbox que-
ste e-mail saranno ora contrassegnate di conseguenza
(Figura 6).
Infine, quando si vuole comporre una e-mail si vedra
che l’estensione GTD ora vi fornisce tre opzioni: Com-
pose E-mail, Compose Myself an action e Compose
Myself a Reference. La prima e autoesplicativa e le
altre due, se selezionate, apriranno ulteriori finestre di
dialogo contestuali (Figura 7).
Con questa caratteristica potete inviarvi un’azione o un
riferimento, compreso qualsiasi allegato, e cliccando
su Add event info si puo inserire dove e quando. Su-
bito sopra l’area principale di composizione del testo
vi e un pulsante di azione more event options. Se si
clicca su di esso si aprira una finestra Google calendar
e permettera una ulteriore configurazione (Figura 8).
GTD e una delizia per il power user con sufficienti
opzioni (ben sette schede) da tenere occupato il piu
inveterato smanettone (Figura 9).
Questo e solo un assaggio di cio che questo meravi-
glioso addon per Firefox puo fare per un’applicazione
Google come Gmail. Il sito web ufficiale vi dira molto
di piu e in modo anche piu dettagliato.
Computer Programming n. 181 [None 2009] 39
PROGRAMMING
Figura 9: Le opzioni di GTD: sette schede, un paradiso per
gli smanettoni
Better Gcal: Google Calendar imbellettato
Google Calendar ha alcune buone caratteristiche ma
al solito i demonietti smanettoni hanno rovistato a fon-
do rummaging e hanno tirato fuori un’estensione detta,
ehm . . . , Better Gcal [22]. Come Better Gmail, lo sco-
po e semplice: aggiungere funzionalita realmente utili
al calendario di default di Google. Non e pieno zeppo
di caratteristiche come Better Gmail ma ha alcune ben
fatte opzioni di configurazione (Figura 10).
Queste, come per Better Gmail, sono una gentile con-
cessione degli script Greasmonkey acclusi e aggiungo-
no, letteralmente, un poı di colore al calendario. Che
si utilizzi Google calendar come applicazione standa-
lone o integrandola con tutti gli altri pacchetti Google,
un’opzione che si deve assolutamente abilitare e forza-
re una connessione sicura (https). In base alla dimen-
sione delle voci del vostro calendario, text wrap events
e utile. Le altre opzioni attivabili sono essenzialmente
estetiche.
Google Calendar: un avvertimento
Un avvertimento sull’utilizzo di Google calendar. Se
rendete pubblico il vostro calendario potete, in base
a cio che inserite, esporvi a qualsiasi cosa, dal furto in
casa al furto di identita al pedinamento. Ho dato un’oc-
chiata ad alcuni calendari pubblici di “singoli privati”
e la quantita di informazioni rivelate era sorprendente
e scioccante. Le informazioni erano tali che era possi-
bile sapere esattamente quando qualcuni sarebbe stato
via per gite o vacanze facilitando cosı le effrazioni e
sufficienti dettagli personali e finanziari da facilitare il
furto di identita. Visitate il sito [23] e vedrete voi stes-
si. E una lettura che impensierisce. La lezione e chiara:
scegliere l’impostazione privata in Google calendar e
se si deve condividere qualcosa perlomeno configura-
telo per limitare la condivisione a specifiche persone
di cui vi fidate.
Ricordati il latte: non un’estensione ma estendera
Google Calendar
Sfortunatamente, Better Gcal non fa per Google calen-
dar cio che fa GTD per Gmail; se si vuole questo tipo
di valore aggiunto, si potrebbe considerare Remember
the Milk for Google Calendar [24]. Andate alla ho-
mepage di RTM, cliccate su Signup Now! e seguite le
indicazioni per iscriversi a uno speciale calendario che
aggiungera piccole icone di task a ciascun giorno (un
segno di spunta blu). E anche disponibile una guida
rapida [25]. Questi segni blu appariranno solo dopo
che vi siete assicurati che il calendario Remember the
Milk e nella vostra Calendars List e che la casella del-
la checklist sia selezionata. Fatto cio, potete cliccare
sulle icone dei task in alto a ciascun giorno del Google
Calendar, effettuare il login (con username e password
che avete impostato quando avete installato RTM) e
creare i task da visualizzare.
Attraverso la funzionalita Locations feature, Remem-
ber the Milk vi offe una mappa relativa ai task che
hanno un componente location (pratico se state con-
dividendo Google calendar con amici che non hanno
familiarita con la vostra localita). Questo fungera da
supplemento a un’altra extension Firefox di nome Mini
Map Sidebar [26], essenzialmente Google Maps nella
barra laterale di Firefox, che ha molte caratteristiche
al di la dello scopo di questo articolo (elencate sul sito
ufficiale dell’add-on).
Comunque, RTM e popolare e la popolarita e fonte di
piu richiesta di feature creep. Pertanto, non sorpren-
de che ci sia un’estensione per Firefox per questo tool
di gestione dei task. Si chiama Delegate to Remem-
ber the Milk e si basa sull’estensione DelegateGCal di
40 Computer Programming n. 181 [None 2009]
PROGRAMMING
Figura 10: Preferenze di Better Gcal
ano.malo.us. Se vi state struggendo come un Python
parrot per le caratteristiche di RTM in Google Calen-
dar allora installatelo [27] e, happy days, un pulsante
verra aggiunto ai messaggi Gmail per generare mes-
saggi verso RTM che crea un nuovo task. Come per
FireGPG, questa estensione e stata colpita dall’aggior-
namento di GMail e funzionera solo con la versione
piu vecchia, richiedendo cosı la modifica della versio-
ne nelle impostazioni di Gmail che ho citato prima.
Tuttavia, sarete ancora in grado di utilizzarla per con-
vertire le e-mail in task pur conservando un collega-
mento all’indietro alla e-mail originale; proprio cosı.
Se vi piace realmente RTM non siete limitati a Gcalen-
dar e Gmail; potete averlo anche nella barra laterale di
Firefox. Con il gadget iGoogle abilitato, aprite Book-
marks Manager e create un nuovo bookmark e digitate
la seguente URL:
http://www.rememberthemilk.com/services/modules/googleig/
e assicuratevi che sia spuntata la casella “Carica questo
bookmark nella barra laterale”. Ora, purche siate log-
gati in RTM potete visualizzarlo da una barra laterale
di Firefox semplicemente selezionando questa opzione
dal menu a discesa Bookmarks. Nel descrivere RTM
ho scalfito solo la superficie di cio che puo fare e su
come si integra con Firefox e le applicazioni Google,
SMS e gli instant messenger (AIM, Gadu-Gadu, Goo-
Figura 11: GMailFS non e il solo modo per accedere a GMail
come se fosse un disco remoto.
gle Talk, ICQ, Jabber, MSN, Skype e Yahoo! sono tutti
supportati).
Gspace: spazio online gratuito tramite Firefox
Gli utenti GNU/Linux avranno familiarita nell’utilizzo
di Fuse (File User Space) in combinazione con Gmail
per creare filesystem Linux virtuali e montabili, me-
glio noti come GmailFS [28]. GmailFS vi permettera
effettivamente di utilizzare GMail come un filesystem.
Se Fuse o GmailFS non fanno parte dei repository soft-
ware delle vostre distribuzioni, potete reperirli sul sito
ufficiale [29]. Molti principianti possono rifiutarsi di
installare i moduli Fuse Kernel (tuttavia in gran parte
delle versioni recenti e installato per default) e insegui-
re le dipendenze, tuttavia l’impegno ne sara valsa la pe-
na: sarete in grado di utilizzare Gmail senza dipenden-
ze dagli aggiornamenti del browser che possono cor-
rompere l’estensione (anche non dovendo accedere ai
comandi per i file).
Se si preferisce un’estensione Firefox che funziona
con Gmail, benche non ufficialmente, allora Gspace
[30] fa per voi. Si tratta di uno spazio online remo-
to di memorizzazione di file con tutti i fronzoli. Siete
distanti una sola estensione dai fino a sei Gigabyte di
facile e comoda capacita di memorizzazione attraver-
so il vostro account Gmail. E facile da usare, e come
Computer Programming n. 181 [None 2009] 41
PROGRAMMING
Figura 12: L’interfaccia a quattro pannelli di Gspace
spostare i file localmente sul vostro computer. Ai file
caricati su Gmail via Gspace potete accedere e recu-
perarli da dovunque, su qualsiasi macchina: compreso
permettere l’accesso ad altri a cui vi fidate di fornire i
dettagli del vostro account Gmail. E una caratteristi-
ca molto utile per grossi file che potrebbero soffocare
il vostro normale client e-mail, anche su una decente
connessione a banda larga. Una volta installato, Gspa-
ce aggiungera un’icona alla barra di stato di Firefox.
Dal menu add-on delle estensioni potete configurare
le opzioni di Gspace e questo dovrebbe essere il vo-
stro primo scalo: Gspace Preferences Settings. Qui,
potete impostare le icone, le miniature, la dimensio-
ne dei file allegati, ec. Per aprire l’applicazione basta
cliccare sull’icona Gspace. In base a come avete confi-
gurato Firefox, Gspace dovrebbe aprirsi in una scheda
separata (Figura 12).
Chiunque ha utilizzato FireFTP, un’estensione client
FTP per Firefox, riconoscera l’organizzazione dell’in-
tefaccia: una schermata contenente i files della propria
directory home, una schermata per il trasferimento di
questi file su Gspace, una schermata Transfer e una
schermata Status (tutte ridimensionabili). Una volta
loggati, selezionate un o piu file cliccate sulla freccia
blu di upload e i file selezionati verranno trasferiti nella
schermata destra. Allo stesso tempo, nella schermata
in basso a sinistra Transfer, una barra d’avanzamento
indichera lo stato dell’upload. Ai file caricati potete in
seguito accedere (e ritrasferirli) da qualsiasi altra mac-
china su cui sono installati Firefox e Gspace. Se ora
aprite Gmail questi file verranno mostrati come una
normale e-mail che puo essere visualizzata, scandita
e/o scaricata. Questa caratteristica e utile per il tra-
sferimento di grossi file con tutti quelli con cui volete
condividerli che hanno un account Gmail, specialmen-
te per chi lavora, ad esempio, in un gruppo di proget-
to. Una delle migliori caratteristiche dell’estensione
Gspace e la gamma dei Transfer Modes che permette
di trasferire file, visualizzare file di immagini caricati
e scaricare da un drive Gmail. Si possono anche ri-
produrre i propri file musicali caricati, benche per fare
cio avrete bisogno del plugin Flash Player (Gspace vi
fornira un link di download). Per questa caratteristica,
dovrete concedere all’estensione Gspace il permesso
di accedere a host esterni come gmail.com. Potete ot-
tenere le istruzioni da [31]. Si possono anche gestire
piu account GMail da Gspace ma solo sequenzialmen-
te, e non consecutivamente, poiche Firefox mantiene
i cookie attraverso la session di login: pertanto, piu
acount GMail su piu schede Firefox non e compreso
nel menu!
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
L’installazione di Customise
Google vi dara accesso a un
ventaglio fenomenale di
impostazioni Google per migliorare
la sicurezza del browser.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Il meglio di tutto il resto: una rapida
panoramica
Avevo intenzione di includere Google Browser Sync
[32]. Anche se i dati sono opzionalmente crittografa-
ti utilizzando un PIN alfanumerico in modo che dati,
password e cookie siano protetti (anche da Google?),
una possibilita migliore e di utilizzare Gspace in com-
binazione con due eccellenti piccole estensioni per Fi-
refox: FEBE [33] e CLEO [34]. Queste estensioni vi
permetteranno, rispettivamente, di eseguire il backup
di tutte le vostre estensioni, temi, bookmark, preferen-
ze, password, cookie, profili e di impacchettare tutte
42 Computer Programming n. 181 [None 2009]
PROGRAMMING
le estensioni e i temi in un unico file compresso xpi
installabile. Potete poi usare Gspace per caricare il fi-
le CLEO e accedere ad esso per installare il tutto su
un’installazione Firefox in esecuzione su un’altra mac-
china dovunque altro sia. Per lo stesso motivo, Google
Notebook [35] (un blocco appunti a scratch pad and
shoe in per del.icio.us?) e un piccolo tool di ricerca ben
fatto da utilizzare in Firefox, specialmente se deside-
rate collaborare online e integrarlo con Gmail e Goo-
gle calendar [36], ma se volete una reale estensione
da “power user” per Firefox, allora Zotero [37] e una
soluzione molto migliore. E standalone ma piu poten-
te, e la uso regolarmente nelle mie ricerche. Il potente
insieme di caratteristiche puo essere realmente apprez-
zato solo installando l’estensione [38]. Infine, benche
sia considerato da maleducati mordere la mano di chi ti
porge il cibo, non ci sono scuse per permettere a Goo-
gle di prendersi delle liberta con la vostra sicurezza e
i vostri dati. L’installazione di Customise Google [39]
vi dara accesso a un ventaglio fenomenale di impo-
stazioni Google per migliorare la sicurezza del brow-
ser. Consideratelo come l’aggiunta di meta-preferenze
a tutte le altre estensioni Google.
Conclusioni
Le estensioni Google vi permettono di ingranare la
potenza di Firefox e di trascorrere un’intera sessio-
ne online senza doverne lasciare i confini. I soli
avvertimenti riguardano la sicurezza e gli aggiorna-
menti alle estensioni e ai browser che corrompono la
compatibilita.
Se questo assortimento non e sufficiente a esaurirvi o
se la mia selezione non e di vostro gradimento, allora
fate una visita a
http://geekpedia.wordpress.com/category/gmail/
un sito web che elenca non meno di ottanta tool e sug-
gerimenti per Gmail e sguazzate nell’abbeveratoio per
Google.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Ci sono abbastanza estensioni da
durare almeno quanto una causa
intentata da SCO.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
le note dell’articolo sono presenti all’indirizzo
http://www.infomedia.it/note/CP181/richmond
Estendere Nautilus: (fotocameree) rotazione di immagini JPG
Personalizzare il filemanager di GNOME con gli script
Scott Carpenter
Recentemente stavo cercando un modo per
ruotare immagini JPG da Nautilus, e ho
trovato un modo per fare questo e altro.
Non e difficile personalizzare il menu po-
pup che si apre con un clic destro in Nautilus per ese-
guire azioni personalizzate sui file. In questo articolo
presento alcune istruzioni e script da cui partire. Spes-
so ho immagini fotografiche orientate verticalmente
che voglio ruotare dal file manager. L’explorer di Win-
dows ha una utile funzionalita con cui si possono sele-
zionare piu immagini in modalita thumbnail, e con un
clic destro si ottiene un menu popup (noto anche come
menu di contesto), e si puo selezionare una rotazione
in senso orario o anti oario. Si tratta di una trasfor-
mazione senza perdita di informazione, al contrario di
cio che probabilmente si ottiene se si apre un’imma-
gine con il proprio programma di grafica preferito, la
si ruota, e la si salva nuovamente. Questo metodo e
anche scomodo se, come accade a me, volete solo ruo-
tare le immagini dopo averle estratte dalla vostra foto-
camera. Si tratta di una delle tante cose che ho appreso
gradualmente nel sostituire le mie precedenti compe-
tenze Windows, e come di solito accade quando trovo
una soluzione in GNU/Linux, sono rimasto compiaciu-
to dal raffinato approccio costruttivo dei sistemi *nix.
Mi sono reso conto di avere la potenza di bash a portata
di mano da Nautilus, con script che sfruttavano l’ulte-
riore vantaggio di alcune eleganti utility che descrivero
piu oltre.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Non e difficile personalizzare il
menu popup che si apre con un
clic destro in Nautilus per eseguire
azioni personalizzate sui file- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
E vero che molti programmi di importazione ruote-
ranno automaticamente le immagini mentre vengono
estratte dalla fotocamera, ma non tutti lo fanno, e non
sarete sempre in grado di utilizzare il programma di
importazione del caso. E anche possibile che la vostra
fotocamera non memorizzi gli opportuni metadati Exif
(http://en.wikipedia.org/wiki/Exif) nel file dell’imma-
gine, lasciando inerme il vostro super fantastico pro-
gramma di importazione. Pertanto ritengo che possia-
mo convenire sul fatto che si tratti di qualcosa che e
necessario avere per facilitare la gestione delle foto.
Mi occupero in modo specifico delle operazioni sui fi-
le immagine per dimostrare come Nautilus puo essere
esteso. Trattero il caso dei file JPG che in pratica rap-
presentano il formato universale delle fotocamere digi-
tali (almeno in quelle utilizzate da noi comuni mortali)
e utilizzero i dati Exif che ci permettono di fare diver-
se cose utili. Dalla lettura di questo articolo, sarete in
grado da Nautilus di effettuare un clic destro sulle vo-
tre immagini e di avere delle opzioni di menu come
quelle mostrate nella Figura 1.
Questo corrisponde alla seguente gerarchia nellavostra directory home:
44 Computer Programming n. 181 [None 2009]
PROGRAMMING
Figura 1: Il menu popup del file manager Nautilus di
GNOME attivabile con un clic destro
˜/.gnome2/nautilus-scripts/img/
autorotate.sh
change-date-and-rename-with-exif.sh
change-mod-date-to-exif.sh
rename-with-exif-date.sh
rotate-left.sh
rotate-right.sh
caution/strip-exif.sh
Preliminari
Il codice di questi script rilasciato come pubblico do-
minio appare piu oltre. Si puo anche scaricare il fi-
le allegato all’articolo downloads.tgz e estrarlo nella
propria directory nautilus-scripts:
/.gnome2/nautilus-scripts$ tar -xvf
downloads.tgz
La pagina GNOME su come estendere Nautilus e un
buon punto da cui partire. Riporta che si puo anche uti-
lizzare il menu File → Scripts per eseguire gli script,
e da lı o dal menu di contesto che si ottiene con un
clic destro, si puo selezionare l’opzione “Open Scripts
Folder” per aprire la directory in Nautilus. Se non ave-
te alcuno script installato, non otterrete queste opzioni
di menu. Accertatevi che gli script che create siano
eseguibili.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Mi sono reso conto di avere la
potenza di bash a portata di mano
da Nautilus, con script che
sfruttavano l’ulteriore vantaggio di
alcune eleganti utility- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Possibili sorprese
Inizialmente non riuscivo a far apparire il menu
degli script quando inserivo gli script nella radice di
nautilus-scripts, e pensavo dovessero essere posizio-
nati nelle sottodirectory. Ma quando ho ricontrollato
mentre scrivevo, funzionava bene in questo modo. Poi
dopo aver rimosso e ripristinato i file nella mia ge-
rarchia preferita, non riuscivo di nuovo a far apparire
gli script nel menu, anche dopo aver chiuso e riaperto
Nautilus. Ho dovuto forzare un ricaricamento delle di-
rectory in Nautilus per vedere nuovamente il tutto nel
menu, utilizzando la piccola freccia circolare blu della
toolbar. Forse cio aveva qualcosa a che fare con il mio
problema iniziale. In ogni caso, se le cose non appaio-
no come previsto, accertatevi di ricaricare la directory
nautilus-scripts. (Disponibile anche nel menu View→
Reload e tramite la scorciatoia di tastiera CTRL + R).
C’e ancora una cosa da fare prima di potere iniziare
a osservare gli script in azione. E necessaria l’uti-
lity jpegtran (http://en.wikipedia.org/wiki/Libjpeg)
prelevabile dal sito Independent JPEG Group
(http://www.ijg.org/) e jhead di Matthias Wandel
(http://www.sentex.net/ mwandel/jhead/). Entrambi
sono piccoli e robusti programmi free software. jhead
e di pubblico dominio, e jpegtran ha una sua licenza
che appare essere pienamente free.
La buona notizia e che probabilmente avete gia jpeg-
tran, e jhead e facilmente disponibile. Nelle mie mac-
chine dotate di Ubuntu 7.04 (Feisty Fawn) e di Fedora
FC5, jpegtran fa parte dell’installazione di default. Su
Ubuntu ho installato jhead con il comando
sudo apt-get install jhead
e su Fedora, come utente root, con il comando
yum install jhead
Per scopi di sperimentazione, raccomando di utilizza-
re una directory temporanea con copie di alcune im-
Computer Programming n. 181 [None 2009] 45
PROGRAMMING
Figura 2: L’immagine monkey.jpg
magini. Molto probabilmente non vorrete utilizzare
le vostre ordinarie directory di immagini mentre lavo-
rate inizialmente con questi script, poiche non si puo
effettuare l’undo delle operazioni.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Per scopi di sperimentazione,
raccomando di utilizzare una
directory temporanea con copie di
alcune immagini- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Una delle cose che vi mostrero e come creare uno
script di “autorotazione” che sfrutta i dati di orien-
tamento di Exif. Se avete ruotato le vostre imma-
gini in precedenza, questo flag puo essere azzerato.
Si puo utilizzare come immagine di prova monkey.jpg
(Figura 2).
E ora passiamo finalmente agli scripts!
rotate-right.sh (in senso orario)
#!/bin/bash
while [[ -n "$1" ]]; do
#if a file and not a dir
if [[ -f "$1" ]]; then
# per default jpegtran copia solo
# alcuni dati Exif; specificare "all"
jpegtran -rotate 90 -copy all \
-outfile "$1" "$1"
# azzera il tag di rotazione/orientamento
# in modo che alcuni visualizzatori
# (ad es. Eye di GNOME) non vengano ingannati
jhead -norot "$1"
fi
shift
done
Ecco cosa fa lo script:
• Processa tutti i file specificati sulla riga di coman-
do in un ciclo. (Se invocato da Nautilus, passera
tutti i nomi di file come argomenti allo script).
• Finche ci sono file, e se il file e in effetti un file e
non una directory, invochera jpegtran per ruotare
l’immagine di 90 gradi. Facendo sı che il file di
output abbia lo stesso nome del file di input, andra
semplicemente a sostituirlo.
• Dopo la rotazione dell’immagine, invoca jhead
per azzerare il flag di orientamento nei metadati
Exif. Come evidenzia il commento nello script,
se non modificate il tag di rotazione, programmi
come Eye di GNOME (il visualizzatore di default
di GNOME) verra confuso e ruotera l’immagine
poiche e abbastanza astuto da leggere i dati Exif e
cercare di orientare al meglio l’immagine per una
corretta visualizzazione.
Per ottenere la rotazione in senso antiorario, pote-
te creare lo script rotate-left.sh copiando il codice
46 Computer Programming n. 181 [None 2009]
PROGRAMMING
precedente, in cui sostituirete -rotate 90 con -rotate
270.
Una volta salvato questo script, si puo aprire una fi-
nestra terminale ed eseguirlo da riga di comando per
verificare che funzioni come previsto:
˜/.gnome2/nautilus-scripts/img/rotate-right.sh ˜/tmp/monkey.jpg
Un motivo per effettuare questa verifica e che quan-
do si eseguono delle cose dal menu degli script di
Nautilus, non otterrete alcun feedback in caso di erro-
ri. Gli script falliscono semplicemente dietro le quin-
te. Ad esempio, se i vostri script non sono eseguibili,
sembrera che uno script non abbia eseguito niente.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Una delle cose che vi mostrero e
come creare uno script di
autorotazione che sfrutta i dati di
orientamento di Exif- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
autorotate.sh
Il prossimo script e ancora migliore. Mi e capitato di
consumare un sacco di tempo in Windows Explorer a
setacciare una grossa directory di immagini thumbnail
per trovare quelle che erano state scattate verticalmen-
te e di multi-selezionarle per poterle ruotare. E un la-
voro noioso: non e sempre ovvio dal thumbnail qual e
l’orientamento, e mentre si scorre la finestra si possono
accidentalmente sia deselezionare i file sia seleziona-
re delle immagini orizzontali. Se la vostra fotocame-
ra memorizza nel file i dati di orientamento Exif (ad
esempio, la mia Canon lo fa), potete selezionare tutti i
file e utilizzare la funzionalita di “autorotate” di jhead
che ruotera solo le immagini verticali. (Nella prati-
ca ho constatato che non e garantito al 100%, forse
perche la fotocamera a volte non rileva correttamente
l’orientamento?).
#!/bin/bash
while [[ -n "$1" ]]; do
if [[ -f "$1" ]]; then
jhead -autorot "$1"
elif [[ -d "$1" ]]; then
# iname -- case insensitive
find "$1" -iname "*\.jpg" \
-exec jhead -autorot {} \;
fi
shift
done
Per questo script, ho fatto in modo che possiate sele-
zionare anche una directory, poiche e piu probabile che
vogliate eseguirlo su intere directory. Ho notato che se
si clicca col tasto destro su una directory nel pannello
sinistro “ad albero” di Nautilus, non si ottiene il menu
degli script, ma e disponibile dal menu File→ Scripts.
Il menu degli script e anche disponibile se si effettua
un clic destro su una directory nel pannello destro di
Nautilus.
Ecco cosa fa lo script:
• Come negli script di rotazione “manuale”, pro-
cessa in un ciclo tutti gli argomenti (file e/o
directory) passati al programma.
• Se e un file (-f ), lo passa semplicemente a jhead
-autorot.
• Se e una directory (-d), esegue il comando find
su questa directory, alla ricerca di file .jpg (non
tenendo conto della grafia), e per ciascun file tro-
vato, invoca jhead -autorot. jhead azzera il flag di
orientamento come parte di questa operazione.
Queste erano le principali caratteristiche che avevo
iniziato a cercare (beh, non avevo previsto di arriva-
re a una “auto” rotazione!), ma dopo questi script ho
proseguito per vedere cos’altro potevano fare jhead e
jpegtran:
change-mod-date-to-exif.sh
#!/bin/bash
while [[ -n "$1" ]]; do
# se un file e non una directory
if [[ -f "$1" ]]; then
jhead -ft "$1"
fi
shift
done
Se si copiano i file direttamente da un lettore di sche-
de USB (o da alcune fotocamere che vi permettono di
leggere via USB come dispositivi rimovibili, come la
Computer Programming n. 181 [None 2009] 47
PROGRAMMING
mia vecchia Olympus ma non come la mia nuova Ca-
non), la data di modifica viene preservata per i file sul
computer. Mi piace questa caratteristica poiche andro
poi a utilizzare un programma Visual Basic che uti-
lizza le date di modifica per rinominare i file con un
timestamp. I miei file di immagini iniziano prevalen-
temente con AAMMGG HHMMSS. E utile perche mantiene
le immagini in sequenza e le identifica in modo uni-
voco. (E vado anche oltre e aggiungo del testo identi-
ficativo al prefisso “data ora”). Quando ho provato a
importare questo programma in GNOME, ho scoper-
to con disappunto che aggiornava l’ora di modifica dei
file mentre li copiava sulla macchina desktop. Bene,
ora potete correggere cio con lo script change-mod-
date-to-exif.sh. Se l’orologio della vostra fotocamera e
impostato correttamente, probabilmente avrete la data
in cui ogni immagine e stata scattata memorizzata nei
dati Exif. Jhead ripristinera l’ora di ultima modifica
del file in base alle informazioni Exif.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Se la vostra fotocamera memorizza
nel file i dati di orientamento Exif
potete selezionare tutti i file e
utilizzare la funzionalita di
“autorotate” di jhead che ruotera
solo le immagini verticali- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
rename-with-exif-date.sh
Ancor meglio, quel vecchio programma VB puo essere
buttato via e possiamo utilizzare jhead per rinominare
direttamente il file con la data Exif:
#!/bin/bash
while [[ -n "$1" ]]; do
# se un file e non una directory
if [[ -f "$1" ]]; then
jhead -nf%y%m%d_%H%M%S "$1"
fi
shift
done
Questo script utilizza un’altra opzione di jhead per ri-
nominare il file con un timestamp AAMMGG HHMMSS.
Cosı com’e opera solo su file, ma puo essere facilmen-
te modificato per operare anche su directory, in modo
simile a autorotate.sh. A questo punto si puo anche
creare facilmente un nuovo script, change-date-and-
rename-with-exif.sh, che invoca semplicemente gli al-
tri due script in modo da poter modificare la data di
modifica del file e rinominarlo con un timestamp in un
solo passo.
strip-exif.sh
E in ultimo, attenzione:
#!/bin/bash
while [[ -n "$1" ]]; do
# se un file e non una directory
if [[ -f "$1" ]]; then
jhead -purejpg "$1"
fi
shift
done
Ho messo questo script in una directory di nome atten-
zione (sotto la directory nautilus-scripts/img) in modo
da ridurre la possibilita di avviarlo accidentalmente.
Questo script elimina tutti i dati Exif da un’immagine,
cosa che il piu delle volte non si desidera fare. Utilizzo
questo script per alcune immagini che carico sul mio
sito (http://www.movingtofreedom.org/), in modo da
ridurre l’utilizzo della banda e il tempo di caricamento
della pagina. Ad esempio, monkey.jpg e di 51 KB con
i dati Exif, e di 44 KB senza. Non una grossa cosa per
le immagini memorizzate sul proprio disco rigido, spe-
cialmente perche di solito le immagini odierne supera-
no 1 MB, ma puo essere di aiuto nel caso improbabile
(per me!) di un post su slashdot o su digg.
48 Computer Programming n. 181 [None 2009]
Filtri audio ... con Gimp
Utilizzare Gimp come un ideale filtro audio digitale
Gianluca Pignalberi
Gimp viene universalmente utilizzato per
la manipolazione di immagini. Tutta-
via, con un po’ di creativita e un paio di
trucchi, puo anche essere utilizzato come
filtro audio! Ecco come. . .
Filtri audio
Se avete familiarita con i filtri audio, potete saltare
questa introduzione. Per chi non conosce i filtri, ecco
una breve spiegazione. Un suono, come tutti i segnali,
viene misurato in Hz (Hertz). Questa misura esprime
la frequenza del segnale. Piu bassa e la misura, piu
bassa e la frequenza. Un filtro e uno strumento che mi-
gliora una o piu frequenze del segnale, in base a un cri-
terio. In un mondo ideale, un filtro sopprime completa-
mente le frequenze indesiderate. Sfortunatamente, non
viviamo in un mondo ideale.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Un reale filtro passa basso e
qualcosa che riceve in input un
segnale e emette in output le
componenti di frequenza piu basse- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Mi concentrero su un solo tipo di filtro: il fitro passa-
basso. Un reale filtro passa-basso e qualcosa che rice-
ve in input un segnale e emette in output le componen-
Figura 1: Risposta di frequenza di un reale e di un ideale
filtro passa-basso
ti di frequenza basse. Ad essere piu precisi, “attenua”
queste frequenze piu alte di una frequenza impostata
(frequenza di taglio). Come si vede nella Figura 1, il
filtro approssima il comportamento teorico.
In questo articolo propongo un metodo in tre passi per
ottenere un ideale filtro passa-basso per segnala audio.
Gimp e lo strumento principale di questo metodo. Na-
turalmente, sto un po’ bluffando: devo utilizzare un
programma che trasforma un file audio in una immagi-
ne idonea. Poi, posso applicare un “filtro passa-basso”
a questa immagine e ottenere da questa l’audio filtra-
Computer Programming n. 181 [None 2009] 49
PROGRAMMING
to. Si noti che ho scritto “filtro passa-basso” tra apici:
non utilizzero Gimp per applicare un filtro passa-basso
grafico (ossia, un operatore blur). Ma siate pazienti:
tra poche righe svelero il “trucco”.
Pre e post-elaborazione audio con Arse
Prima di passare a Gimp, l’audio in in-
put deve essere processato. Ho scelto Arse
(http://arse.sourceforge.net/) come tool di pre-
elaborazione. Arse, acronimo di “Analysis and
Reconstruction Sound Engine”, e un tool a riga di
comando suddiviso in due parti principali: uno spettro-
grafo e un sintetizzatore a spettrogramma. Utilizzero
entrambi i tool per pre-processare e post-processare
un file audio. Nel passaggio di pre-elaborazione
fornisco in input un file audio a Arse, che restituira
in output uno spettrogramma (ossia un’immagine,
buona da fornire in input a Gimp). Nel passaggio di
post-elaborazione, fornisco ad Arse lo spettrogramma
filtrato, per ottenere in output un file audio.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Sfortunatamente, la generazione
dello spettrogramma di un segnale
e la successiva sintesi con Arse
non porteranno al segnale
originale- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Sfortunatamente, la generazione dello spettrogramma
di un segnale e la successiva sintesi con Arse non por-
teranno al segnale originale. Cio significa che il me-
todo che propongo e in teoria perfetto, ma non si puo
utilizzarlo effettivamente senza accettare qualche tra-
sformazione audio (ad esempio, un suono di basso che
viene riprodotto come un suono di piano, o una vo-
ce umana riprodotta come voce sintetica). Comunqne,
procediamo: un utilizzo intelligente di Arse vi dara ri-
sultati abbastanza buoni. Non so se esista o meno un
tool piu efficiente e affidabile di Arse: se cosı fosse,
utilizzatelo e verificate i risultati; e fatemelo sapere!
L’immagine che Arse genera ha le seguenti caratteri-
stiche:
Figura 2: Una schermata che mostra come utilizzare Arse per
eseguire l’analisi audio e la sintesi dello spettrogramma
• e a toni di grigio (i pixel neri rappresentano il
silenzio);
• le righe rappresentano l’analisi di una banda di
frequenze;
• ciascuna colonna rappresenta 1 secondo del
segnale.
Nella Figura 2 si vedere the user interaction with Arse,
mentre nella Figura 3 e mostrato un segnale, l relativo
spettrogramma e i grafici di sintesi.
Arse e un progetto molto giovane, la versione corren-
te e la 0.1. Ha alcune maggiori limitazioni. L’au-
tore le descrive sul sito Web del progetto e nel fi-
le README allegato al programma, che fornisce
ulteriori informazioni sull’utilizzo e sulle specifiche.
Il filtro passa-basso proposto
Una volta ottenuto lo spettrogramma, apritelo con
Gimp. Ricordate che la riga 0 dello spettrogramma
contiene le informazioni sulla frequenza piu alta, e che
la riga n contiene quelle della frequenza piu bassa.
Graficamente, il filtraggio passa-basso di un a “inter-
vallo di frequenze” consiste nel colorare di nero le ri-
ghe di pixel tra 0 e x, dove x e la riga dove e situata la
50 Computer Programming n. 181 [None 2009]
Figura 3: Analisi e sintesi del file d’esempio drama.wav, un
file che fa parte della suite OpenOffice. Da destra a sinistra:
segnale originale, spettrogramma e segnale ricostruito
frequenza di taglio. Per farlo, basta selezionare l’op-
portuna sezione rettangolare dell’immagine, e riempir-
la di nero. E tutto. Cosı facendo, avrete soppresso le
frequenze piu alte della frequenza di taglio, senza inci-
dere sulle altre frequenze: proprio cio che farebbe un
filtro ideale.
Conclusioni
In questo articolo ho proposto un metodo (una trasfor-
mazione) per ottenere un filtro ideale. Questa trasfor-
mazione vi permette di applicare un filtro passa-basso
audio attraverso la relativa immagine dello spettro-
gramma. Sintetizzando l’immagine “filtrata” vi verra
fornito il corrispondente audio filtrato. Al momento il
solo motivo per cui la trasformazione non “funziona” e
per via del tool di post-elaborazione. Una volta che Ar-
se migliorera, otterrete un opportuno filtro passa-basso
ideale.
RUBRICHEWindows Thread e Posix Thread a confronto
Thread contro Thread
Danilo Treffiletti
Il titolo e decisamente da cineteca a rievocare un famoso
film del 1979. A differenza del film, qui non parliamo di
nessuna causa legale, di nessun abbandono e non ci sono
affidamenti di cui parlare. Parliamo di due modi diversi di
realizzare lo stesso concetto: il Thread.
Il Thread e una parte atomica di esecuzione di una elaborazio-
ne. Un processo, che rappresenta l’istanza in esecuzione di un
programma e che comprende oltre al codice del programma stes-
so anche i dati che sta elaborando, puo essere composto da piu
Thread che possono eseguire in modo autonomo e concorrente
condividendo gli stessi dati e lavorando per ottenere lo scopo co-
mune dell’intero processo. I moderni sistemi operativi sono or-
mai multi-task da parecchio tempo: questo significa che e pos-
sibile eseguire processi diversi in parallelo (poi, in realta questo
parallelismo puo essere reale o virtuale a seconda dell’architettu-
ra hardware della macchina che esegue). Molti sistemi operativi,
pero, sono anche multi-threading: permettono ad un processo di
dividersi in tante sottoparti autonome che lavorano in parallelo
per raggiungere il risultato.
Attualmente sono presenti due filosofie diverse di concepire i Th-
read: la prima e quella di Microsoft con i Windows Thread, la
seconda e quella nata dalla comunita *NIX con i POSIX Thread
detti anche PThread.
Sul blog e sul forum di Intel sono presenti due articoli in cui si
parla a favore di uno o dell’altro tipo di Thread.
I thread di Windows
L’articolo sul blog si esprime a favore dei Thread di Windows,
affermando che questi sono piu comodi da usare in quanto e pre-
sente un solo tipo di dato per Thread, Mutex e segnali e dunque
si puo usare una sola funzione per creare un blocco su un thread
che deve terminare, un mutex che e bloccato o un evento che deve
essere segnalato. Inoltre i segnali sono persistenti e permettono
dunque di essere rilevati anche con controlli effettuati dopo che
l’evento sia stato segnalato. Infine e presente la funzione Wait-
ForMultipleObjects che permette di bloccare un Thread in attesa
che terminino una serie di Thread, vengano sbloccati una serie di
Mutex e arrivi un segnale per una serie di eventi, il tutto invocan-
do una sola funzione. Tutto questo, secondo l’autore dell’articolo,
porta ad una maggior eleganza di programmazione.
I thread POSIX
L’articolo presente sul forum, invece, considera soprattutto que-
sti punti uno svantaggio dell’implementazione dei Win Thread, a
favore dunque dell’uso dei PThread. L’uso di tipi di dati diversi
per le tre entita migliora la gestione e rende piu facile la lettura
di codice altrui. Inoltre e piu facile verificare il codice in quanto
sono necessarie funzioni diverse per attendere la terminazione di
un Thread, lo sblocco di un Mutex o la segnalazione di un evento,
evitando dunque errori o confusione. Infine, i segnali persistenti
possono essere un peso per il programmatore che deve ricordarsi
di resettare lo stato del segnale quando sa che potrebbe servire
per un blocco successivo, mentre i segnali POSIX vengono cat-
turati dai Thread in ascolto oppure scartati, evitando di sbloccare
Thread che invece dovrebbero bloccarsi in attesa della prossima
segnalazione.
Un confronto
Personalmente ho usato entrambi i tipi di Thread e devo dire che
mi trovo a condividere pienamente le argomentazioni a favore del-
la versione POSIX. Il dover usare tre tipi di dato diverso non causa
nessun problema in quanto i tre oggetti sono concettualmente di-
versi e dunque devono avere significato diverso anche all’interno
del codice, avere funzioni diverse e non avere una funzione che
permette di attendere un insieme misto di Thread, Mutex e se-
gnali non appesantisce la programmazione ma, invece, rende piu
facile e veloce il debug e la lettura di codice altrui. Infine l’imple-
mentazione POSIX permette la portabilita del codice in quanto i
PThread sono nati per gli ambienti *NIX e Mac OS, ma e stato
creato un port per ambiente Windows che consiste in una DLL da
linkare nel proprio progetto.
Riferimenti
1. Why Windows Threads Are Better Than
POSIX Threads di Clay Breshears (Intel)
http://softwareblogs.intel.com/2006/10/19/why-windows-
threads-are-better-than-posix-threads/
2. Why Pthreads are better than Win32
threads di Clay Breshears (Intel)
http://softwarecommunity.intel.com/ISN/Community/en-
US/forums/post/840096.aspx
Computer Programming n. 181 [None 2009]
RUBRICHELe nuove riviste Infomedia
Pensare – Progettare –Programmare
CONTRIBUIRE alle nuove riviste e possibile in molti
modi. Proprio mentre scriviamo queste note, sono
molti i processi tecnologici, gestionali e editoriali che
stiamo affrontando:
• Abbiamo riorganizzato il sistema aziendale a partire da
una nuova impronta gestionale. La ’Nuova Infomedia’ si
vuole configurare come una Impresa Sociale di Comunita,
partecipata da tutti coloro che hanno interesse nelle sue
attivita.
• Stiamo raccogliendo tutte le linee guida che hanno permes-
so negli anni la pubblicazione di libri e riviste per condivi-
dere queste competenze con tutti coloro che vorranno esse-
re coinvolti in questa impresa. Questo e un passaggio molto
importante perche rendera visibile e trasparente il processo
editoriale e permettera il convolgimento di tutti coloro che
vorranno contribuire anche solo in modo limitato e secondo
la propria disponibilita. Il nuovo processo editoriale per-
mette a ciascuno, anche con minime competenze, di segui-
re l’intero processo produttivo ed essere quindi partecipante
attivo nella comunita.
• Abbiamo costruito un sistema (open source) che elimina i
fattori di intermediazione classici delle strutture redaziona-
li, e basato su strumenti classici dello sviluppo software e,
crediamo, innovativo e cool.
Contribuire e importante per far sentire la propria voce, per farsi
conoscere e anche un po’ per ridistribuire un po’ di quello che
dalla comunita dei programmatori ciascuno di noi prende ogni
giorno.
I suggerimenti che in questi mesi abbiamo avuto sono stati de-
terminanti per determinare l’architettura organizzativa adeguata.
Dobbiamo adesso essere in grado di seguire con la necessaria
costanza una fase costruttiva ed operativa.
E fondamentale proporre nuovi articoli basati sulle proprie espe-
rienze, sulle tecniche piu efficaci, sui trucchi che permettono di ri-
solvere problemi particolarmente oscuri, indicare percorsi e sem-
plicemente raccontare le proprie esperienze nella realizzazione di
programmi interessanti e significativi. I nostri lettori sono cer-
tamente in grado di farlo, se solo il 5% di questi scrivesse un
articolo o ci raccontasse le proprie esperienze di programmazio-
ne avremmo abbastanza materiale per riempire tutte le riviste per
due anni.
Infomedia e la casa editrice dei programmatori e delle software
house italiane. Di quelli che ancora credono e combattono per
mostrare che l’informatica non e fatta solo dai grandi e potenti
nomi, dalle immense societa di intermediazione che sono spesso
solo gusci vuoti che per motivi di dimensione o di coinvolgimen-
to possono accedere alle grandi commesse, e che spesso non fan-
no altro che subappaltare alle societa piccole e specializzate o ai
singoli professionisti.
Le priorita
Stiamo maturando un’importante esperienza nella costruzione di
un modello veramente innovativo di open publishing.
L’area principale in cui cerchiamo la collaborazione dei nostri
lettori, degli autori che in questi anni ci hanno aiutato e quella
dei contenuti. Adesso che il processo di editing, composizione
e impaginazione e stato riorganizzato, arrivare ad avere un flusso
costante di articoli di qualita e il nostro principale obiettivo.
Arrivare ad ottenere un flusso costante e volontario di articoli e
quindi oggi la priorita piu stringente. E un obiettivo allo stesso
tempo semplice, a verificare i numeri necessari e i collegamen-
ti che gia abbiamo, ma reso complesso dalla volonta di assumere
quel ruolo di riferimento che una iniziativa come questa deve ave-
re. La possibilita che un nucleo limitato di autori bravi possano
tenere in piedi questa iniziativa non e cosı remota, al punto che a
ben vedere cosı hanno funzionato le riviste in questi ultimi anni,
e cosı spesso funzionano altrove. Ma se l’obiettivo e la ’pluralita’
dell’espressione, la rappresentazione di quanto veramente avvie-
ne nella piccola ma vitale comunita italiana dei programmatori,
ed eventualmente la rappresentazione delle migliori espressioni
estere nel campo, la storia cambia moltissimo.
Il lavoro da fare si moltiplica, nella ricerca di contatti e di ma-
teriali che, per esempio gia abbozzati in rete su blog o forum,
potrebbero diventare ottimi ed interessanti articoli degni di que-
sto nome. Il lavoro si moltiplica perche un ’bravo informatico’, di
quelli che oltre a conoscere la professione la sa comunicare in uno
scritto adeguato fa spesso molta piu fatica a seguire, indirizzare e
correggere il lavoro altrui che non rifarlo daccapo da se. Eppure
questo e in se stesso un impegno che consideriamo utile.
Il team che lavora dietro questo progetto e variegato e, attual-
mente, deve sopperire alla mancanza di tempo, innanzitutto, e di
competenze specifiche su alcuni campi.
In questo momento, come sa chi gia ci segue sul Web, tutto l’e-
cosistema che e stato creato e (un po’ troppo) variegato, ma que-
sto e stato necessario per contemperare differenti esigenze e modi
di lavorare da parte di chi ha offerto la propria attivita in modo
volontario pur di far andare avanti questa storia.
54 Computer Programming n. 181 [None 2009]
RUBRICHE
I servizi che ci sono (e che mancano)
Come sempre accade nelle comunita di sviluppatori, i servizi che
sono attivati prima, meglio presidiati, sono quelli che servono per
le realizzazioni pratiche.
Il sito http://the.programmers.net rappresenta attualmente solo
una piccola vetrina delle attivita che si stanno realizzando e al-
cune informazioni circa l’iscrizione, le attivita, la rete sociale e,
ovviamente, le riviste. Siamo alla ricerca di un webmaster.
Gli strumenti online che sono stati per ora attivati (trac, SVN,
wiki) sono ad uso esclusivo della redazione e sono gestiti in
autonomia con la minima formalita.
Trac: http://trac.xed.it
Wiki: http://wiki.infomedia.it
Questi servizi avrebbero ciascuno bisogno di un amministratore
dedicato ed esperto. Il lavoro da fare e poco, infinitesimale: ma e
l’insieme di questi infinitesimi che riempie tutti gli interstizi del
nostro tempo libero fino a tarda notte, quindi AIUTO!. E possibile
proporre la propria candidatura usando i moduli che sono online
sul sito the.programmers.net nella sezione Riviste/Moduli.
Il nuovo sito (che c’e)
Il sistema online che ha accompagnato la pubblicazione del-
le riviste sul web della vecchia societa, ancora disponibile su
www.gruppoinfomedia.it e stato sostituito dalla semplice ap-
plicazione di una nuova piattaforma di publishing basata su
Drupal e iScribd.
Sito: http://www.infomedia.it
Il Forum (che non c’e)
Sarebbe invece interessante, per cio che riguarda la costruzione
dei nuovi servizi e dei nuovi strumenti, l’apertura di un forum
online. Le nostre attuali forze ce lo impediscono, ma se qualcuno
dei lettori volesse candidarsi all’amministrazione e alla gestione,
saremo ben felici di aprire anche questo importante servizio.
I coordinatori dei forum dovranno provvedere all’installazione,
all’amministrazione e all’upgrade dei sistemi, nonche ad un mini-
mo di moderazione dei contenuti inappropriati. Per le candidature
e possibile usare i moduli online sul sito.
I team (che ci sono)
Sono tre i team che stanno lavorando:
• La crew editoriale: Si occupa dell’evoluzione dello spa-
zio editoriale ed in particolare della redazione delle riviste
(Michele Monti [email protected]).
• La crew software: Si occupa dell’evoluzione del soft-
ware di gestione dell’associazione per le realizzazioni
editoriali e per la gestione associativa (Adriano Peluso
• La crew web: Si occupa dell’evoluzione degli stru-
menti web dell’associazione per le realizzazioni edi-
toriali e per la gestione associativa (non assegnato
L’email (a cui non rispondiamo)
Per mettersi in contatto con i team che stanno lavorando alla rea-
lizzazione delle riviste non e attualmente molto semplice. Siamo
pochi e i task della produzione hanno certamente la priorita.
Non trascuriamo nessuna email, semplicemente spesso non c’e
una risposta alle vostre domande, o ci sara nel momento in cui
sara opportuno.
Attualmente pero nessuno gestisce il flusso delle richieste (piu
che legittime) degli abbonati. Ci impedirebbe di concentrarci sul-
le gia complesse attivita di ’ricostruzione’. Tutte le mail finora
utilizzate dalle redazioni Infomedia (insieme ad una spaventosa
quantita di spam, messaggi commerciali e promozionali, che nep-
pure gli antispam piu efficaci abbattono piu di tanto) sono ruotate
alla vecchia societa, i quali ci inoltrano solo i messaggi che riten-
gono effettivamente interessanti. Abbiamo intenzione di arrivare
ad affrontare anche questi problemi, ma fare tutto contempora-
neamente non era pensabile. Rimanete sintonizzai, frequentate i
siti web ed in particolare:
Blog: http://blog.infomedia.it
Il sistema d’impaginazione
Il nuovo sistema d’impaginazione e disponibile liberamente su
Internet. E possibile scaricarlo e provarlo da:
https://www.assembla.com/spaces/turing/
Ovviamente non e ne immediato ne user friendly, per ora, ma
avendo un po’ di conoscenze degli strumenti di sviluppo open
source (tra cui SVN, python, bash, make, emacs) e un po’ di di-
mestichezza con il TEX si riesce ad averne ragione. Ovviamente
ogni contribuzione e ben accetta.
Conclusioni
Infomedia realizza le rivista dei programmatori italiani di talento,
che sanno trovare soluzioni geniali che non sempre sono adegua-
tamente conosciute, e che spesso sono obbligati a trovare la pro-
pria strada al di fuori del panorama italiano, ma non per questo
saranno da noi dimenticati. E importante per noi mantenere unita
la nostra comunita indipendentemente dalle distanze geografiche.
Infomedia e tutto questo, ma puo esserlo solo se tu ci metterai del
tuo.
E proprio il caso di dire che in questo momento non dovreste
chiedervi cosa Infomedia puo fare per voi, ma cosa potete fare
voi per Infomedia.
Computer Programming n. 181 [None 2009] 55
RUBRICHE
Hanno collaborato a questonumero...
Lorenzo Dal Col
nato a Vittorio Veneto nel 1985 laurea a pieni voti in Ingegne-
ria Informatica all’Universita di Trieste, studia per la laurea
specialistica. Da 5 anni si occupa di sviluppo di applica-
zioni Web server con PHP, Java, .NET, MySQL, Postgre-
SQL e lato client con Javascript, AJAX.Ha sviluppato un
robot mobile a comando vocale Linux real-time e Micro-
soft Windows Server. Si interessa di grafica digitale e web
design.
Mail [email protected]
Sito www.lordalcol.com
Danilo Treffiletti (Urban)
nato nel 1982. Da sempre interessato al mondo dell’informatica
e delle nuove tecnologie. Ha frequentato l’I.T.I. e successi-
vamente la facolta di Ingegneria Informatica dell’Universita
di Catania, in cui si laureato nel 2008. stato presente sul
web fin dal 1998 con diversi siti di carattere amatoriale e
divulgativo. Nel ottobre del 2006 collabora alla fondazione
del blog di divulgazione informatica StormedBrains.
Blog http://urbands.net/stormedbrains
Gary Richmond
e un aspirante esperto della rete con alle spalle una laurea e una
specializzazione in Inglese del diciassettesimo secolo, ven-
ticinque anni di attivita in un ente pubblico e di recente si e
semi-pensionato per godersi i suoi illeciti guadagni.
Scott Carpenter
ha frequentato il movimento free software sin dal 1998 e nel
2006 ha iniziato a impegnarsi in modo piu attivo (Mo-
ving to freedom). Lavora come sviluppatore/analista soft-
ware dal 1997, e attualmente si occupa di integrazione di
applicazioni enterprise.
Sito www.movingtofreedom.org
Gianluca Pignalberi
dopo la laurea in Scienze dell’Informazione si e occupato di va-
rie cose, tra cui la programmazione della classe TEX per
comporre Free Software Magazine, da cui deriva quella di
Infomedia, e dell’impaginazione della stessa. E attualmen-
te il direttore di ArsTEXnica, rivista italiana di TEX, LATEX e
tipografia digitale. Usa software libero per tutto quello che
puo, e cerca di soddisfare la sua passione per la scrittura
contribuendo a riviste di settore.
Sito http://www.freesoftwaremagazine.com/contacts/g.pignalberi
Gianluigi Spagnuolo
ingegnere informatico si occupa di sicurezza e programmazio-
ne (Ruby e C#). Si interessa di sistemi operativi UNIX, di
compilatori e PLT in generale e partecipa allo sviluppo di
numerosi progetti open source.
Mail [email protected]
Sito http://krsh.info
Emmanuele Somma
programmatore, ingegnere informatico e scrittore, e da anni uno
dei principali animatori della scena del software libero in
Italia. Sia ricorda trafficasse con le prime bbs amatoriali gia
nel ’86, si dice abbia venduto il primo programma GPL in
Italia gia nel ’94, ha fondato e diretto Linux Magazine nel
’99. Oggi lavora per un autorita finanziaria in cui suppor-
ta e sviluppa applicazioni scientifico-econometriche con il
sotware libero, ma non solo.
Mail [email protected]
Sito http://www.exedre.org
Blog http://exedre.xed.it
ed inoltre. . .
Un ringraziamento particolare va anche a: Adriano Peluso,
Andrea De Carolis, Daniela Della Porta, Dino Meoni, Dona-
to Marcello Sabato, Francesco Pallanti, Gianluigi Coccia, Lu-
ciano Talarico, Maria Letizia Mari, Natale Fino, Noemi Somma,
Roberto Galoppini.
56 Computer Programming n. 181 [None 2009]
La conferenza porta sul palco i più importanti esperti nazionali e
internazionali su programmazione agile, open source, web2.0 e tutte le
discipline che contribuiscono alla costruzione di un prodotto stabile,
usabile e vendibile.
www.bettersoftware.it
Better Software è la prima conferenza Italiana dedicata allo sviluppo di software e rivolta a imprenditori e manager del settore.
FIRENZE, 6 E 7 MAGGIO 2009
Sconto del 20% registrandoti online
con il codice promozionale
BM3V2D9G