Sei sulla pagina 1di 58

Computer Programming è una

rivista realizzata da
Infomedia Editori Coop.
e Ass. Turing Club
EDITORIALE Direzione e Amministrazione:
Via Iannacchini, 28 - Avellino
L’inizio di una nuova avventura In attesa di registrazione presso il
Tribunale di Avellino
Noi abbiamo deciso di ricominciare. Aiuto! (richiesta del 4/3/2009)

D R
A. Somma
Non cambierai mai le cose combattendo la realtà esistente. Per cambiare
qualcosa, costruisci un modello nuovo che renda la realtà obsoleta. M E
R. Buckminster Fuller G. Spagnuolo (kirash@infomedia.it)
M. Monti (micky@infomedia.it)

COMPUTER PROGRAMMING è la rivista di programmazione che da quasi venti anni L  C
ha raccolto la voce dei programmatori, dei sistemisti, dei professionisti, degli studenti, XED.it (info@xed.it)

dei ricercatori e dei professori d’informatica italiani.


Sono più di 800 gli autori che hanno realizzato per le testate Computer Programming, G
Redsign
Dev, Login, Visual Basic Journal e Java Journal, molte migliaia di articoli tecnici, pre-
(www.redsign.it
sentazioni prodotti, tecnologie, protocolli, strumenti di lavoro, tecniche di sviluppo grafica@infomedia.it)
e semplici trucchi e trabocchetti. Oltre 6 milioni di copie distribuite trentamila pa-
gine stampate fanno di questa impresa la più grande ed influente realtà dell’editoria
A
specializzata nel campo della programmazione e della sistemistica.
In tutti questi anni le riviste hanno vissuto della passione di tanti, come te, che vedo-
S. Carpenter
no nella programmazione non solo una professione ma una passione vitale e un vero
L. Dal Col
divertimento.
G. Pignalberi
Mettere in condivisione le soluzioni adottate nello sviluppo di un programma, riper-
G. Richmond
correndone le tappe è un ottimo modo per documentare al meglio il proprio lavoro,
E. Somma
fissare i concetti e verificare la qualità delle proprie realizzazioni. È uno splendido mo-
D. Treffiletti
do per dare agli altri la possibilità di impare nuove tecniche e progredire nelle proprie
competenze e per rendere il nostro ambiente più vitale, competitivo ed attivo.
La programmazione o la soluzione dei problemi sistemistici ci dà molta gioia, perché è
necessario superare i limiti della nostra conoscenza. A volte abbiamo la sensazione che
questo piacere non è possibile da comunicare. Questo è il luogo giusto per farlo. I tuoi
“pari” sono interessati a queste soluzioni, ai passi che hai compiuto per raggiungere un
risultato e perché no, agli errori che commesso nei tuoi tentativi.
L’informatica è un ambito professionale unico, in cui le spinte competitive sono sempre
state forti, ma altrettanto forti ed importanti è stata la tensione a cooperare. La condi-
visione delle informazioni e la diffusione delle conoscenze sono l’anima costitutiva di L’     ̀  
100%   O S  OO,
questa Comunità. E, BHL, LATEX, G, I    L,
P  BASH
Le nuove Computer Programming, Dev e Login vogliono incentivare questi aspetti per
essere ancora di più al centro di questa Comunità. Aiutateci. Perché senza queste riviste For copyright information about the contents of Compu-
ter Programming, please see the section “Copyright” at
programmatori e sistemisti italiani rimarrebbero senza voce. the end of each article if exists, otherwise ask authors.
Infomedia contents is © 2009 Infomedia and released as
Chiunque tu sia, quindi, quale che sia la tua storia, i tuoi strumenti di lavoro, il tuo Creative Commons 2.5 BY-NC-ND. Turing Club content
is © 2009 Turing Club released as Creative Commons
linguaggio di programmazione, la tua piattaforma o framework, il tuo sito o il tuo 2.5 BY-ND.
programma. . . contribuisci a questa Storia per permetterci di andare avanti. 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 è © 2009 Infomedia
e rilasciato con Licenza Creative Commons 2.5 BY-NC-
ND. Il contenuto Turing Club è © 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.

È in ogni caso ammessa la riproduzione parziale o to-


tale dei testi e delle immagini per scopo didattico pur-
ché 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%.


Computer Programming [None 2009]

$LastChangedDate:: 2009-04-03 11:03:05 #$


$Rev: 45 $
Indice Numero , None 2009

EDITORIALE Trasformazione di coordinate


L’inizio di una nuova avventura 3
geografiche in Javascript 14
Lorenzo Dal Col
In numerose applicazioni è necessario risolvere il
problema della trasformazione delle coordinate geo-
grafiche tra sistemi di riferimento differenti. In questo
articolo verrà illustrato un applicativo che effettua la
trasformazione delle coordinate del sistema WGS84
a quelle UTM. L’obiettivo è di fornire una procedura
di trasformazione che possa funzionare anche con
dati acquisiti in tempo reale, senza la necessità di
eseguire post-elaborazioni; è 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 più spesso integrano un
ricevitore GPS.
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 è un’operazione complessa poiché la superficie
da rappresentare non è piana, il terreno ha una forma
USER SPACE
molto irregolare e le dimensioni dell’oggetto da rap-
presentare eccedono le normali capacità di misura del- Konqueror: tutto da una interfac-
l’uomo. Quest’articolo fornirà una breve introdurrà al- cia 22
la teoria matematica delle trasformazioni geografiche Gary Richmond
più comuni e se ne mostrerà una veloce implementa- Suggerimenti, trucchi e funzionalità per sfruttare al
zione in linguaggio SQL da usare come stored proce- massimo le caratteristiche di Konqueror. Si vedrà co-
dure in MySQL. Si vedrà inoltre anche come utilizzare me migliorarne le prestazioni, utilizzarlo al meglio co-
il noto pacchetto PROJ per realizzare le trasformazioni me file manager e come browser e aggiungere nuove
geografiche. funzionalità attraverso i Service Menu.

4 Computer Programming n. 181 [None 2009]


Indice

PROGRAMMING
Estensioni Google in Firefox 32
Gary Richmond
Questo articolo illustrerà 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: (fotocamere
e) rotazione di immagini JPG 43
Scott Carpenter
Partendo dall’esigenza di ruotare un’immagine diret-
tamente da Nautilus si vedrà 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 creatività
e un paio di trucchi, può anche essere utilizzato come
filtro audio! Ecco come...

Photo Credit:
Mappa dell’Europa di Mercatore
RUBRICHE
Thread contro Thread 52 Gerhard Mercator nacque nel 1512 nelle Fiandre. Ebbe una formazione classica: latino,
greco, logica, grammatica e retorica.
Danilo Treffiletti Pubblicò 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.
Windows Thread e Posix Thread a confronto... Per questa attività cartografica Mercator fu perseguitato dalle autorità religiose cattoliche,
accusato di eresia e incarcerato per circa sette mesi. Solo le proteste dell’Università gli
Pensare – Progettare – Program- permisero di essere scagionato dalle accuse. Fu però poi perseguitato dall’Inquisizione
poiché protestante e dovette trasferı̀rsi a Duisburg in cui all’epoca il duca Guglielmo il

mare 53 Ricco era riuscito a mantenere indipendente tra le le confessioni e vi aveva creato un
significativo circolo di intellettuali.
Lı̀ insegnò 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

Hanno collaborato a questo nu- sua tomba è situata nella Chiesa del Salvatore di Duisburg (Salvatorkirche).

mero... 55
Image Credit: WikiMedia

Computer Programming n. 181 [None 2009] 5


Trasformare le coordinate
geografiche da WGS84 a UTM

Le formule di Molodenskij e Gauss rese semplici

Lorenzo Dal Col, Emmanuele Somma

a cartografia si occupa di rappresentare la • si possa istituire sulla mappa una geometria per

L superficie terrestre sul piano secondo nor-


me e segni convenzionali. La rappresenta-
zione della superficie fisica terrestre è un’o-
perazione complessa poiché la superficie da rappresen-
tare non è piana, il terreno ha una forma molto irre-
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
golare e le dimensioni dell’oggetto da rappresentare rappresentazione piana bidimensionale.
eccedono le normali capacità di misura dell’uomo.
Quest’articolo fornirà una breve introdurrà alla teoria
Proiezione sulla superficie di riferimento
matematica delle trasformazioni geografiche più co-
muni e se ne mostrerà una veloce implementazione Questo primo passaggio consiste nel far coincidere un
in linguaggio SQL da usare come stored procedure punto della superficie terrestre con uno preso su una
in MySQL. Si vedrà inoltre anche come utilizzare il superficie di riferimento tramite una proiezione verti-
noto pacchetto PROJ per realizzare le trasformazioni cale. La superficie di riferimento ideale è detta “geoi-
geografiche. de”, che è la superficie equipotenziale del campo gra-
vitazionale terrestre. Il geoide approssima abbastanza
bene la superficie terrestre, ma poichè non possiamo
Le trasformazioni
conoscere il valore della gravità terrestre in ogni punto
Per realizzare una trasformazione corretta è necessario della Terra non è esprimibile con formule analitiche.
che a ciascun punto del terreno sia associato univoca- Per ovviare a questo problema solitamente si adotta co-
mente un punto sulla superficie di riferimento (mappa) me superficie di riferimento un ellissoide di rotazione,
in modo che: che si descrive facilmente con formule analitiche.
Attraverso calcoli astronomici sono stati definiti di-
• la sua trasformazione inversa dia un punto ’vici- versi ellissoidi di riferimento, nel 1924 furono adot-
no’ a quello alla superficie terrestre (con un errore tati universalmente quali parametri dell’ellissoide di
accettabile) riferimento i valori proposti da Hayford. L’ellissoide
cosı̀ dimensionato è da allora indicato come “ellissoide
• la sua rappresentazione matematica sia semplice
internazionale”.
• si possa stabilire una corrispondenza biunivoca Poiché l’ellissoide di riferimento si discosta rispetto al
fra i suoi punti e quelli della superficie terrestre geoide deve essere ruotato e centrato il più 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- di rotazione utilizzati per descrivere la forma della Ter-
to di emanazione), in modo da ridurre al minimo la ra e ogni posizione sulla sua superficie. Ciascun siste-
distanza tra i due. ma è identificato dal suo DATUM che identifica la for-
ma, la posizione e l’orientamento del modello rispetto
Rappresentazione bidimensionale alla Terra e alla sua superficie.
Quando si esprime una posizione geografica in oriz-
Per passare dalla rappresentazione su supporto cur- zontale tramite coordinate oppure in verticale con l’al-
vo ad una rappresentazione piana si ricorre ad una tezza, è necessario sempre associare il valore espresso
rappresentazione cartografica, stabilendo per ciascun al DATUM di riferimento. Infatti esistono diversi si-
punto una corrispondenza biunivoca fra le coordinate stemi di riferimento geodetico ed il datum è l’unico
curvilinee e le coordinate cartesiane ortogonali. modo univoco per indicare quello prescelto.
La rappresentazione piana che si ottiene è deformata
I vari sistemi di riferimento geodetico differiscono tra
rispetto quella disegnata sul supporto curvo.
loro per la definizione dell’ellissoide di rotazione (la
Ad esempio, la Proiezione universale trasversa di Mer- forma geometrica usata per approssimare la forma del-
catore (UTM) o conforme di Gauss è una proiezio- la Terra). Ad esempio il datum WGS72 definisce un
ne pseudocilindrica assimilabile alla cilindrica inversa, ellissoide con semiasse maggiore di 6.378.135 metri e
ma le sue equazioni della carta sono state costruite in schiacciamento ai poli di 1/298.26, mentre per WGS84
modo da ottenere l’isogonicità. i valori sono 6,378,137 e 1/298.257223563 rispettiva-
mente. Nel DATUM si indica anche l’orientamento e
I sistemi di riferimento geodetici l’origine delle coordinate.
La conversione delle coordinate di un punto da un si-
I sistemi di riferimento sono basati su coordinate per stema di riferimento ad un altro non è operazione sem-
descrivere in modo matematico una posizione geogra- plice, si può generalmente usare la corposa ed efficace
fica. Si tratta di modelli geometrici basati su ellissoidi libreria Proj per questo scopo.

8 Computer Programming n. 181 [None 2009]


GEOGRAFIA COMPUTAZIONALE

UTM – Universal Transverse Mercator

Figura 2: Proiezione universale trasversa di Mercatore È la cartografia più diffusa al mondo, nota anche come
(UTM) o conforme di Gauss. Gauss-Boaga. Questa proiezione è approssimata note-
volmente dalla cilindrica trasversa inversa. Questo tipo
di cartografia è 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). Poiché più ci si allontana dal meridiano centrale
più il modulo di deformazione lineare sale, nel siste-
ma UTM l’ampiezza di un fuso è 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 è
basato sull’ellissoide internazionale con orientamento
europeo (ED50), cioè orientato a Postdam.
Talvolta però è necessario programmare direttamente
queste trasformazioni e ciò è tutt’altro che comples- ITA40 – Roma Monte Mario o Gauss-Boaga
so, come si vedrà in seguito. Ma prima è necessario
conoscere alcuni sistemi di riferimento standard. In La proiezione cartografica Gauss-Boaga è stata adotta-
particolare: ta quasi interamente dalla cartografia ufficiale italiana
dal 1940. E’ stata proposta dal prof. Giovanni Boaga
WGS84 World Geodetic System 1984 quando era a capo dell’Istituto Geografico Militare, e
utilizza il sistema di riferimento Roma40, con ellissoi-
UTM Universal Transverse Mercator de orientato a Roma Monte Mario. La Carta d’Italia
dell’IGM in scala 1:25.000 (serie 25V), è stata redatta
ITA40 Roma Monte Mario o Gauss-Boaga in coordinate Gauss-Boaga, poi abbandonate in favo-
re della Proiezione Universale Trasversa di Mercatore
WGS84 – World Geodetic System 1984 (UTM).

È il sistema di riferimento utilizzato nel posiziona-


mento con la tcnologia GPS. E’ espresso tramite le Le formule di trasformazione
coordinate geodetiche X,Y,Z, riferite all’ellissoide di
rotazione geocentrico: La trasformazione delle coordinate avviene in due pas-
si. La prima funzione converte le coordinate ellissoidi-
• l’asse Z è diretto verso la posizione del polo che WGS84 in coordinate ellissoidiche ED50 usando
medio definito nel 1984 le formule di Molodenskij; la seconda converte le coor-
dinate ellissoidiche ED50 in coordinate piane UTM
• l’asse X è definito dall’intersezione del piano usando le formule di Gauss adatte a questo scopo.
equatoriale medio nel 1984 con il meridiano di
Greenwich Le formule di Molodenskij

• l’asse Y è definito in modo tale da completare la Le formule di Molodenskij complete a partire dal-
terna destrorsa le coordinate ellissoidiche WGS84 ϕ, λ e h sono le
seguenti:

Computer Programming n. 181 [None 2009] 9


GEOGRAFIA COMPUTAZIONALE

a(1 − e2 )
ρ= p Figura 3: Mikhail Sergeevich Molodenksy (1909 - 1991)
(1 − e2 sin ϕ2 )3
dove ρ è il raggio di curvatura del meridiano, a è
il semiasse equatoriale dell’ellissoide WGS84, e2 è
l’eccentricità dell’ellissoide WGS84

a(1 − e2 )
NG = p
1 − e2 sin ϕ2
dove NG è la Gran Normale

sin ϕ cos λ sin ϕ sin λ cos ϕ


dϕ = x0 + y0 + z0 +
ρ+h ρ+h ρ+h
a2 /NG + h a2 /NG + h
(sin λ)E x + (cos λ)Ey +
ρ+h ρ+h
(1 − (1 − α)2 )NG
cos ϕ sin ϕ (K + da /a) −
ρ+h
ρ + (1 − α)2 NG
cos ϕ sin ϕ (dα /α)
ρ+h

in cui da è la differenza tra semiasse maggiore WGS84


e ED50 e dα è la differenza tra schiacciamento WGS84
e ED50, x0 , y0 , z0 sono le traslazioni fra i centri del si-
stema WGS84 e ED50 ed infine E x , Ey , Ez sono le ro-
tazioni attorno agli assi dell’ellissoide ED50 mentre K
è il fattore di scala.
Sebbene queste formule sembrino molto complesse la
loro scrittura con un qualsiasi linguaggio di program-
sin λ cos λ
dλ = x0 + y0 − mazione è semplice e diretta, ad esempio nel Listato
(NG + h) cos ϕ (NG + h) cos ϕ 1 è riportato l’inizio del sorgente di una stored proce-
(1 − α)2 NG + h dure SQL per il database MySQL che realizza questa
(tan ϕ cos λ)E x −
NG + h trasformazione.
(1 − α)2 NG + h In particolare dopo la dichiarazione della funzione e la
(tan ϕ sin λ)Ey + Ez
NG + h definizione dei tipi:

CREATE PROCEDURE ‘MOLODENSKIJ‘(PHI DOUBLE,


LAMBDA DOUBLE,
dh = cos ϕ cos λx0 − cos ϕ sin λy0 − sin ϕz0 − H DOUBLE,
A DOUBLE, e DOUBLE,
(1 − (1 − α)2 )NG (cos ϕ sin ϕ sin λ)E x − OUT D_PHI DOUBLE,
OUT D_LAMBDA DOUBLE,
(1 − (1 − α)2 )NG (cos ϕ sin ϕ cos λ)Ey − OUT D_H DOUBLE )
BEGIN
a2
!
a
+h K + da − DECLARE RHO DOUBLE DEFAULT 0.0;
NG NG DECLARE N_G DOUBLE DEFAULT 0.0;

(1 − α)2 NG (sin ϕ)2
1−α 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 Le formule di Gauss


SET RHO = (A * (1- eˆ2)) /
( SQRT( 1- eˆ2 * SIN(PHI)ˆ2)ˆ3 );
# N_G - Gran Normale Una volta ottenute le coordinate ellissoidiche nel siste-
SET N_G = (A * (1- eˆ2)) / ma ED50 è necessario trasformarle nel sistema piano
SQRT( 1- eˆ2 * SIN(PHI)ˆ2) ;
attraverso le formule di Gauss. Nelle formule seguenti
si cercheranno i punti X e Y avendo come parametri di
ed infine le formule delle coordinate trasformate: input le coordinate ellissoidiche ED50 (qui rinominate
per semplicità ϕ, λ e h piuttosto che le dϕ , dλ e dh ot-
SET D_PHI = SIN(PHI) * COS(LAMBDA) * x_0 / tenute dal passaggio precedente) e come costanti i pa-
(RHO + H) +
SIN(PHI) * COS(LAMBDA) * y_0 / rametri a che misura il semiasse dell’ellissoide ED50
(RHO + H) + questa volta e e2 l’eccentricità dell’ellissoide ED50.
COS(PHI) * z_0 /
( RHO + H ) + La prima delle equazioni di Gauss è:
(Aˆ2 / N_G + H ) /
(RHO + H) * SIN(LAMBDA) * E_x +
a cos ϕ 1 a cos (ϕ)3 
(Aˆ2 / N_G + H ) / Y = g(ϕ, λ) = p λ+ p 1−
(RHO + H) * COS(LAMBDA) * E_y +
(1 - (1 - ALFA)ˆ2 ) * N_G /
1 − e2 sin ϕ2 6 1 − e2 sin ϕ2
(RHO + H) * COS(PHI) * SIN(PHI) ( K + D_a / A ) +  e2 2 
(RHO -+ (1 - ALFA)ˆ2 ) * N_G / tan (ϕ)2 + √ cos (ϕ)2 λ3 +
(RHO + H) * COS(PHI) * SIN(PHI) ( D_a / ALFA ) 1 − e2
1 a cos (ϕ)5 
5−
Come si può vedere l’introduzione di queste formule, 120 1 − e2 sin ϕ2
p
anche in un sistema con limitate capacità di program-
18 tan (ϕ)2 + tan (ϕ)4 +
mazione non comporta particolari problemi essendo
 e2 2 
la formula chiusa e basata su funzioni matematiche
i
√ 14 cos (ϕ)2 − 58 cos (ϕ)2 tan (ϕ)2 λ5
elementari. 1 − e2
I parametri adottati nei calcoli sono delle formule di Anche in questo caso l’introduzione della funzione al-
Molodenskij : l’interno del sistema programmato non comporta par-
a 6378388.297 ticolari complessità. La formula è lunga e abbastan-
e2 0.00669438 za arzigogolata, ma facilmente esprimibile utilizzan-
x0 , y0 , z0 (0, 0, 0) do funzioni matematiche e trigonometriche elementari
E x , Ey , Ez (0, 0, 0) alla portata di qualsiasi linguaggio.
K 0
da 251.297 Computer Programming n. 181 [None 2009] 11
dα 1.257222101
GEOGRAFIA COMPUTAZIONALE

La seconda equazione di Gauss è:


Figura 4: Carl Friedrich Gauss (1777 -1855)
ϕ
a(1 − e2 )
Z
X = f (ϕ, λ) = p dt+
(1 − e2 sin t2 )3
0

1 sin ϕ cos ϕ 1 sin ϕ cos (ϕ)3


+ ·
2 1 − e2 sin ϕ2 24 1 − e2 sin ϕ2
p p

h  e2 2  i
· 5 − tan (ϕ)2 + √ 9 cos (ϕ)2 + 4 cos (ϕ)4 λ4 +
1 − e2
1 sin ϕ cos (ϕ)5
·
720 1 − e2 sin ϕ2
p
h
· 61 − 58 tan (ϕ)2 + tan (ϕ)4 +
 e2 2  i
√ 270 cos (ϕ)2 − 330 cos (ϕ)2 tan (ϕ)2 λ6
1 − e2

In questo caso l’equazione comporta qualche comples-


sità in più a causa della presenza dell’integrale definito
al primo termine della formula.
In questo caso è 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 è:
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; CREATE FUNCTION ’A_FACTOR’( VAR DOUBLE )
SET STEP = (IEND - IBEGIN) / PARTS; RETURNS DOUBLE
SET TMP1 = A_FACTOR(P) / 2; BEGIN
loop1: WHILE C < PARTS DO # ED50 - SEMIMAJOR
SET TMP1 = TMP1 + A_FACTOR(P); DECLARE A DOUBLE DEFAULT 6378388.297 ;
SET P = P + STEP;
END WHILE loop1; # ED50 - SEMIMINOR
SET TMP2 = TMP1; DECLARE B DOUBLE DEFAULT 6378388.297 ;
SET TMP1 = TMP1 + A_FACTOR(P) / 2;
SET RESULT = TMP1 * STEP; DECLARE E2 DOUBLE DEFAULT 0.0066943800042605865 ;
RETURN RESULT; # SET E2 = (Aˆ2 - Bˆ2) / Aˆ2;
END
RETURN A*(1-E2)/SQRT(POW(1 - e2 * SIN(val)ˆ2,3));
La funzione applicata è definita nella procedura END
A FACTOR e rappresenta il fattore:

ϕ L’insieme delle procedure sviluppate per la trasforma-


a(1 − e2 )
Z
p dt zione sono quindi:
0 (1 − e2 sin t2 )3
che in SQL diventa 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 trasformare coordinate geografiche in coordinate car-
coordinate WGS84 e restituisce i parametri trasformati tesiane secondo le regole della proiezione cartografi-
in ED50 D PHI, D LAMBDA e D H, e poi: ca. Viene solitamente utilizzato in altri progetti co-
me GRASS, MapServer, PostGIS, Thuban, OGDI e
GAUSS(PHI,LAMBDA,X,Y)
OGRCoordinateTransformation.
L’utilizzo da linea di comando è semplice e diretto. Tra
che prende in input i parametri superficiali in ED50
le opzioni del programma cs2cs vanno indicate le di-
restituiti dalla funzione precedente e genera le coor-
chiarazioni relative al sistema di riferimento di parten-
dinate piane X e Y. I parametri distintivi delle trasfor-
za e poi, dopo l’opzione +to quelle relative al sistema
mazioni realtivi ai DATUM scelti sono stati introdot-
di riferimento d’arrivo.
ti come costanti nelle funzioni. La funzione GAUSS
fa affidamento su una funzione che calcola l’integra- È possibile indicare questi riferimenti esplicitando i
le definito ed una che esprime il fattore da integrare, parametri dell’ellissoide, ad es:
rispettivamente:
+ellps=WGS84
+a= 6378137.0 + rf= 298.257223563
RESULT = A_FACTOR(VALUE)
INTEGRAL(IBEGIN, IEND, PARTS)
o direttamente i DATUM conosciuti
A causa delle limitazioni del linguaggio SQL è neces-
+datum=WGS84
sario utilizzare le procedure realizzate in questa for-
ma esclusivamente all’interno di una ulteriore stored
procedure esterna come ad esempio: o ancora attraverso un insieme di dizionari noti
che è possibile scoprire sul sito http://www.epsg-
CREATE PROCEDURE ’TRANS’() registry.org, ad esempio:
BEGIN

DECLARE PHI,LAMBDA,H DOUBLE DEFAULT 0.0; +init=epsg:22022


DECLARE D_PHI,D_LAMBDA,D_H DOUBLE DEFAULT 0.0;
DECLARE X,Y DOUBLE DEFAULT 0.0;
SET PHI = ; in cui epsg è un dizionario noto e 22022 è l’ogget-
SET LAMBDA = ;
SET H = ; to definito in quel dizionario. I dizionari sono file di
testo presenti solitamente nella directory /usr/local/-
CALL MOLODENSKIJ(PHI,LAMBDA,H, D_PHI, D_LAMBDA, D_H);
CALL GAUSS(D_PHI,D_LAMBDA,D_H,X,Y); share/proj in cui è possibile verificare a cosa queste
SELECT X,Y;
inizializzazioni corrispondono.
cs2cs è un filtro e risponde generando sullo standard
END
output la trasformazione delle coordinate che riceve
nello standard input. Ad esempio nel modo seguente è
possibile realizzare l’equivalente delle trasformazioni
Trasformazione su linea di comando ottenuta con le formule di Molodenskij:

Quando è possibile avere accesso alla linea di coman- echo 688146.8125 4931557.6875 | \
cs2cs -f "%.6f" +init=epsg:23032 +to
do o nei programmi che possono utilizzare liberie col- +init=epsg:4326
legate piuttosto che riprogrammare ogni volta gli al-
goritmi di proiezione e trasformazione delle coordi- oppure
nate è possibile utilizzare la libreria PROJ e i relativi
comandi proj e cs2cs. cs2cs +proj=latlong +datum=WGS84
+to +proj=utm +zone=32 +datum=ED50
PROJ è un progetto open source (con una licenza di r <<EOF
tipo MIT che ne permette l’inclusione anche in siste- 45d15’33.1" 111.5W
45d15.551666667N -111d30
mi proprietari), usato da riga di comando (soprattut- +45.25919444444 111d30’000w
to in ambito Unix, GNU/Linux, ecc.), che permette la EOF

Computer Programming n. 181 [None 2009] 13


GEOGRAFIA COMPUTAZIONALE

Conclusioni

Per lo sviluppo di funzioni di trasformazione geogra-


fica è 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 è 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 coordinate
geografiche in Javascript
L’implementazione in Javascript delle formule di Molodenskij e
Gauss

Lorenzo Dal Col

Problema

n numerose applicazioni è necessario risolve- Figura 1: Una semplice interfaccia HTML del programma

I re il problema della trasformazione delle coor-


dinate geografiche tra sistemi di riferimento
differenti.
In questo articolo verrà illustrato un applicativo che ef-
fettua la trasformazione delle coordinate del sistema
WGS84 a quelle UTM. L’obiettivo è di fornire una
procedura di trasformazione che possa funzionare an-
che con dati acquisiti in tempo reale, senza la neces-
sità di eseguire post-elaborazioni; è 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 più 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- Soluzione
legate all’aeronautica utilizzano la codifica WGS84,
mentre quasi tutte le carte ufficiali antecedenti al 1984 La trasformazione deve essere effettuata in tre passi:
utilizzavano il sistema UTM con “datum” ED50 nel
caso dei paesi europei. Grazie alle funzioni presentate 1. Con le formule di Molodenskij si passa dalle
in questo articolo si possono trasformare i dati raccol- coordinate ellissoidiche WGS84 alle coordinate
ti con un sistema GPS moderno come Google Maps ellissoidiche ED50
e confrontarli con dati di vecchie carte europee codi-
ficati in UTM-ED50 (oppure “Roma Monte Mario”) 2. Con le formule di Gauss si ricavano le coordinate
direttamente in una pagina web. 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 Esistono in realtà diversi “pattern” per la definizione di
vogliono le specifiche UTM. classi in javascript, per supportare l’ereditarietà (anche
multipla) e il polimorfismo; in questo caso ci siamo
accontentati dell’implementazione più semplice.
Le superfici di riferimento
Gli ellissoidi sono costanti e possono essere definiti
I sistemi di riferimento sono basati su degli ellissoi- direttamente in questo modo:
di con una certa dimensione e posizionati nello spa- // inizializzo gli ellissoidi noti (DATUM)
zio in modo differente per WGS84 e ED50; sono sta- var WGS84 = new RotationElipsoid(6378137.0,
1/298.257222101,
te quindi create due classi Javascript per esprimere new Orientation(0,0,0,0,0,0,0));
l’orientamento e l’ellissoide stesso:
var ED50 = new RotationElipsoid(6378388,
1/297,
function RotationElipsoid(a, alpha, orientation) { new Orientation(-87,-98,-121,0,0,0,0));
this.orientation = orientation;
this.a = a; var ITA40 = new RotationElipsoid(6378388,
this.alpha = alpha; 0.00672267002,
var semiminor = this.a - this.a * this.alpha; new Orientation(-104.1,-49.1,-9.9,-11.68,
this.e2 = (Math.pow(this.a,2) - Math.pow(semiminor,2)) / 0.971,-2.917,0.714));
Math.pow(this.a,2);

// RHO - Raggio di curvatura del meridiano I parametri passati sono il semiasse maggiore a, lo
this.RHO = function(LAMBDA) {
return this.a * (1 - this.e2) / schiacciamento alpha, e l’orientamento: inizializza-
Math.sqrt(Math.pow(1 - this.e2 * to con i valori di traslazione sui tre assi (x,y,z),
Math.pow(Math.sin(LAMBDA),2),3));
} riscalamento e rotazioni.
// N_G - Gran Normale La classe “RotationElipsoid” ha i metodi RHO e N G,
this.N_G = function(LAMBDA) {
return this.a / Math.sqrt(1 - this.e2 * che calcolano rispettivamente il raggio di curvatura del
Math.pow(Math.sin(LAMBDA),2)); meridiano passato per argomento e la gran normale
}
} rispetto al meridiano.
function Orientation(x0, y0, z0, K, Ex, Ey, Ez) { Le funzioni di conversione delle coordinate si chia-
this.z0 = z0; this.x0 = x0; this.y0 = y0; mano rispettivamente “molodenskij” e “gauss”, esse
this.K = K;
this.Ex = Ex; this.Ey = Ey; this.Ez = Ez; sono abbastanza complesse ma non fanno altro che
} implementare le formule analitiche dei due rispettivi
matematici:
Pur essendo Javascript un linguaggio object-oriented
non esiste il costrutto nativo per definire le classi poi- La prima si esegue passando l’ellissoide di partenza,
ché in realtà vengono implementate usando il concetto quello di arrivo e le tre coordinate geografiche del pun-
di “prototype” cioè il prototipo di un oggetto che è leg- to da trasformare: PHI, LAMBDA, H che sono rispet-
germente diverso. Dal punto di vista semantico le clas- tivamente longitudine, latitudine e altitudine; viene ri-
si sono scritte come delle funzioni che possono avere tornato un oggetto da passare direttamente alla funzio-
al loro interno membri dati e metodi (rispettivamente ne “gauss” che ritorna un array con rispettivamente le
variabili e funzioni interne). coordinate Nord, Est e altitudine in UTM-ED50.
Si possono creare oggetti utilizzando il costrutto “new” All’interno della funzione “gauss” viene calcolato un
e chiamando la funzione prototipo. integrale definito di una funzione matematica grazie
------------------------------------ a una procedura di supporto che usa il metodo dei
trapezi:
In JavaScript il modo più semplice
per creare gli oggetti è farli // esegue l’integrale definito di di una funzione con
discendere da un prototipo // il metodo dei trapezi in N parti

------------------------------------ function Integral(myFunction, scope, begin, end, parts) {

16 Computer Programming n. 181 [None 2009]


GEOGRAFIA COMPUTAZIONALE

 var step = (end - begin) / parts;


function molodenskij ( fromElipsoid , destElipsoid , var temp = myFunction.call(scope, begin) / 2;
PHI , LAMBDA , H) { begin += step;
var alpha = fromElipsoid . alpha ; for (var c = 0; c < parts - 1; c++) {
var a = fromElipsoid .a; temp += myFunction.call(scope, begin);
var Da = fromElipsoid .a - destElipsoid .a; begin += step;
var Dalpha = fromElipsoid . alpha - }
destElipsoid . alpha ; temp += myFunction.call(scope, begin) / 2;
var DEx = destElipsoid . orientation .Ex - return temp*step;
fromElipsoid . orientation .Ex; }
var DEy = destElipsoid . orientation .Ey -
fromElipsoid . orientation .Ey; La trasformazione viene fatta infine mettendo insieme
var DEz = destElipsoid . orientation .Ez -
fromElipsoid . orientation .Ez; le diverse conversioni:
var Dx0 = destElipsoid . orientation .x0 -
// funzione che esegue la conversione completa
fromElipsoid . orientation .x0;
// da WGS84 a ED50
var Dy0 = destElipsoid . orientation .y0 -
function convert(PHI, LAMBDA, H) {
fromElipsoid . orientation .y0;
var m = molodenskij(WGS84, ED50, PHI, LAMBDA, H);
var Dz0 = destElipsoid . orientation .z0 -
var g = gauss(ED50, m);
fromElipsoid . orientation .z0;
// correzione coordinate per UTM
var DK = destElipsoid . orientation .K -
g[0] = g[0] * 0.9996;
destElipsoid . orientation .K;
g[1] = g[1] * 0.9996 + 500000;
var RHO = fromElipsoid .RHO( LAMBDA );
return { x: g[0], y: g[1], h: g[2] };
var N_G = fromElipsoid .N_G( LAMBDA );
}
// scorciatoie
var sinPHI = Math.sin(PHI ); La funzione “convert” accetta come argomenti la lon-
var cosPHI = Math.cos(PHI ); gitudine PHI, latitudine LAMBDA e altitudine H
var sinLAMBDA = Math.sin( LAMBDA );
var cosLAMBDA = Math.cos( LAMBDA ); espresse in radianti. Se si vogliono convertire dei va-
var tanLAMBDA = Math.tan( LAMBDA ); lori espressi in gradi, primi e secondi si usa la seguenti
var tempVar = RHO + H;
var tempVar2 = Math.pow(a ,2) / N_G + H; funzione:
var tempVar6 = Math.pow (1 - alpha ,2);
var tempVar5 = (1 - tempVar6 ) * N_G; // converte gradi, primi, secondi in radianti
var tempVar3 = ( N_G + H ) * cosLAMBDA ; function toRadians(d, m, s) {
var tempVar4 = ( tempVar6 *N_G + H) / (N_G+H); return (Math.PI/180)*(d + m / 60 + s / 3600);
var o1 = ( sinLAMBDA * cosPHI / tempVar )* Dx0; }
var o2 = ( sinLAMBDA * sinPHI / tempVar )* Dy0;
var o3 = ( cosLAMBDA / tempVar ) * Dz0; A questo punto possiamo testare il tutto con dei dati
var o4 = ( tempVar2 / tempVar ) * sinPHI *DEx;
var o5 = ( tempVar2 / tempVar ) * cosPHI *DEy;
noti in WGS84:
var o6 = ( tempVar5 / tempVar ) * cosLAMBDA * longitudine: 44° 45’ 12.20809’’
sinLAMBDA * ( DK + Da / a ); latitudine: 14° 1’ 30.28015’’
var o7 = (( RHO + tempVar6 * N_G) / tempVar )* altitudine: 589
cosLAMBDA * sinLAMBDA *
( Dalpha / (1 - alpha ));
var dLAMBDA = o1+o2 -o3+o4 -o5 -o6 -o7;
ci aspettiamo come risultato i seguenti:
var dPHI = sinPHI / tempVar3 * Dx0 -cosPHI / x: 5067303, y: 424247, h: 547
tempVar3 * Dy0 -
tempVar4 * tanLAMBDA * cosPHI *DEx - // funzione per testare il funzionamento
tempVar4 * tanLAMBDA * sinPHI *DEy+ // (esegue una conversione e confronta con risultati noti)
DEz; function test() {
var dH = - cosLAMBDA * cosPHI * Dx0 - // preparo le variabili di ingresso (sono in gradi,
cosLAMBDA * sinPHI * Dy0 - // le converto in radianti)
sinLAMBDA * Dz0 + var LAMBDA = toRadians(45, 45, 12.20809);
tempVar5 * sinLAMBDA * cosLAMBDA * var PHI = toRadians(14, 1, 30.28015);
sinPHI * DEx - var H = 589;
tempVar5 * sinLAMBDA * cosLAMBDA * // eseguo la conversione
cosPHI * DEy - var converted = convert(PHI, LAMBDA, H);
tempVar2 * DK + a / N_G * Da - // accedo al risultato usando: converted.x,
tempVar6 * N_G * // converted.y, converted.h
Math.pow(sinLAMBDA , 2) * // controllo i risultati
( Dalpha / (1 - alpha )); if (Math.round(converted.x) != 5067303) return false;
return { LAMBDA : LAMBDA + dLAMBDA , if (Math.round(converted.y) != 424247) return false;
PHI: PHI + dPHI , H: H + dH }; if (Math.round(converted.h) != 547) return false;
} return true;


 }

Listato 1: La formula di Molodenskij in JavaScript

Computer Programming n. 181 [None 2009] 17


GEOGRAFIA COMPUTAZIONALE

 Discussione
function gauss (surface , m) {
var precision = 10000;
var PHI = m.PHI; Osservazioni sulla precisione
var LAMBDA = m. LAMBDA ;
var H = m.H;
var a = surface .a; Sono stati confrontati i risultati forniti da questa appli-
var e2 = surface .e2; cazione con dei valori noti ed è ne è conseguito che il
// funzione da integrare
Integral_Function = function (val) { calcolo viene fatto in modo preciso, con uno scarto di
var tempVal = (a * (1 - e2 )); al massimo una decina di millimetri per coordinata.
return tempVal /
Math.sqrt(Math.pow (1 - In tutti i calcoli sono state mantenute tutte le cifre
e2 * Math.pow(Math.sin(val ),2),
3));
significative gestite dal linguaggio Javascript.
} ------------------------------------
// calcolo il fuso e sistemo la longitudine
var fuse_length = 6 * Math.PI / 180;
var fuse; Sono state mantenute tutte le cifre
if (PHI > Math.PI)
fuse=Math. floor ((PHI -Math.PI )/ fuse_length ); significative gestite dal linguaggio
else
fuse=Math. floor (( PHI+Math.PI )/ fuse_length ); Javascript.
var deltalength =( fuse -30) * fuse_length ------------------------------------
+ fuse_length /2;
var dPHI = PHI - deltalength ;
// scorciatoie Il calcolo più dispendioso in termini di tempo è l’in-
var sinLAMBDA = Math.sin( LAMBDA );
var cosLAMBDA = Math.cos( LAMBDA ); tegrale (per via numerica) della funzione non lineare
var tanLAMBDA = Math.tan( LAMBDA ); (contenente radice quadrata, funzioni trigonometriche,
var tempVar1 =Math.sqrt (1-e2*
Math.pow(sinLAMBDA , 2)); potenze, ecc). Facendo alcuni test con diverse funzio-
var tempVar2 =Math.pow(e2/Math.sqrt (1 - e2), 2); ni è stato visto che sono sufficienti 10 000 passi per il
var valoreIntegrale = Integral ( Integral_Function ,
this , 0, calcolo dell’integrale. Aumentare ulteriormente il nu-
LAMBDA , precision ); mero di passi allunga notevolmente l’attesa e non mi-
var x = valoreIntegrale +
(1/2 * a* sinLAMBDA * cosLAMBDA / tempVar1 ) * gliora il risultato, almeno per le prime 9 cifre significa-
Math.pow(dPHI ,2) +
(1/24 * a* sinLAMBDA *Math.pow(cosLAMBDA ,3)) /
tive. Javascript è un linguaggio interpretato, pertanto
tempVar1 * non permette il raggiungimento delle prestazioni otti-
(5 - Math.pow(tanLAMBDA ,2) +
9* tempVar2 *Math.pow(cosLAMBDA ,2) +
mali della macchina, tuttavia la velocità di esecuzione
4 * Math.pow(tempVar2 , 2) * in questo caso (alcuni decimi di secondo) è completa-
Math.pow(cosLAMBDA ,4)) *
Math.pow(dPHI ,4) +
mente soddisfacente, e permette un utilizzo completo
1/720 * a* sinLAMBDA *Math.pow(cosLAMBDA ,5)/ in tempo reale.
tempVar1 *
(61 - 58* Math.pow(tanLAMBDA ,2) + Il programma è stato testato con Internet Explorer (5+,
Math.pow(tanLAMBDA , 4) + 6, 7), Mozilla Firefox (1.5, 2, 3), Opera (9.5) e Safari
270 * tempVar2 * Math.pow(cosLAMBDA ,2) -
330 * tempVar2 * Math.pow(cosLAMBDA ,2) * (3+).
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) +
Futuri sviluppi
(1/120) * a*Math.pow(cosLAMBDA , 5) / tempVar1 *
(5 - 18 * Math.pow(tanLAMBDA , 2) + Si potrebbe rifattorizzare tutto il codice Javascript e
Math.pow(tanLAMBDA , 4) +
14 * tempVar2 * Math.pow(cosLAMBDA , 2) -
renderlo completamente ad oggetti, come è già sta-
58 * tempVar2 * Math.pow(cosLAMBDA , 2) * to fatto per la classe dell’ellissoide di rotazione. Se
Math.pow(tanLAMBDA , 2)) *
Math.pow(dPHI , 5); ad esempio trasformassimo in classi anche le due lun-
return [x,y,H]; ghe funzioni analitiche potremmo riutilizzare la stes-
}


 sa istanza per elaborare molte coordinate in sequenza,


guadagnando in velocità perché potremmo mantenere
Listato 2: La formula di Gauss in JavaScript 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 : 25 px ;" id =" latD" value ="0" °/>
<input type =" text" style =" width : 25 px ;" id =" latM" value ="0" />’
<input type =" text" style =" width : 75 px ;" id =" latP" value ="0" />"
Lng: <input type =" text" style =" width : 25 px ;" id =" lngD" value ="0" °/>
<input type =" text" style =" width : 25 px ;" id =" lngM" value ="0" />’
<input type =" text" style =" width : 75 px ;" id =" lngP" value ="0" />"
h: <input type =" text" style =" width : 25 px ;" 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

------------------------------------
Per approfondire l’argomento sulla trasformazio-
Si potrebbe inoltre estendere la ne di coordinate è consigliato il sito dell’Asso-
trasformazione anche ad altri ciazione Italiana Topografi, in particolare l’artico-
lo “Alcuni metodi per il passaggio dal Sistema
“datum” come ad esempio ITA40
WGS84 ai Sistemi Geodetici Locali” all’indirizzo
(già suggerito tra gli ellissoidi http://www.asit.biz/public/portale/articles.asp?id=5
disponibili). Per imparare la basi sulla programmazione in Java-
------------------------------------ script sono disponibili nelle librerie numerosi libri, e
nel web centinaia di tutorial.
Lo sviluppo più interessante potrebbe essere di inte- Per i pattern avanzati di javascript come classi, ere-
grare la trasformazione con un sistema di mappe su ditarietà, prototipi e altro si troveranno sicuramen-
web (come Google Maps o Live Search Maps), in te informazioni sulla pagina di Douglas Crockford,
modo da leggere le coordinate direttamente in metri. un guru di questo linguaggio che lavora per Yahoo:
http://javascript.crockford.com/
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”.
Konqueror: tutto da una
interfaccia

Sfruttare al massimo il gioiello della corona di KDE

Gary Richmond

TAVA riferendosi alla vittoria romana della rere un’intera sessione senza abbandonarne i confini.

S 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
Naturalmente, ciò può tendere a renderlo una sorta di
factotum e signore del nulla, pertanto se avete neces-
sità 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
conoscerà questa famosa frase. già note, si spera che le altre non lo siano e che possiate
Premiamo il pulsante avanzamento veloce fino al pre- utilizzarle per migliorare la vostra esperienza di navi-
sente e queste parole potrebbero non essere fuori luo- gazione. Ciò che segue è appunto la mia scelta perso-
go sulle labbra delle brave persone che hanno svilup- nale di suggerimenti, trucchi e funzionalità che trovo
pato Konqueror, il browser e file manager “tutto in più utili. Inevitabilmente, avrete anche voi delle pre-
uno”, meglio descritto come visualizzatore universale ferenze (scorciatoie per la ricerca sul web, movimenti
di documenti. del mouse, file remoti) e vi chiederete perché non le ho
Dipendendo solo da kdebase è una parte standard del trattate: beh .. vi faccio le mie scuse anticipate.
desktop KDE e gran parte degli utenti GNU/Linux ad
un certo punto hanno navigato o gestito file utilizzando Più intelligente, più veloce
Konqueror. Precisamente perché viene pre-installato
tendiamo a darlo per scontato; inoltre, nel periodo suc- I tesori sepolti sono i più affascinanti, pertanto tiriamo
cessivo al lancio avvenuto nel 2000, molte estensio- fuori la vanga e iniziamo a estrarre alcuni delle gemme
ni e alternative sono diventate disponibili: in modo di Konqueror. Una delle prime, migliori e più sempli-
particolare l’immensamente diffuso Firefox. ci cose che si possa fare è ottenere facilmente un in-
Prima di dar vita a una guerra infiammata tra utenti di cremento di velocità. Si può ottenere che Konqueror
KDE e di GNOME e ai sostenitori dei vari file mana- si carichi più velocemente modificando le impostazio-
ger e browser, lasciatemi premettere che questo artico- ni: cliccate su Impostazioni, poi Configura Konqueror
lo non è un esercizio comparativo delle caratteristiche e scorrete in basso all’ultima opzione, Prestazioni. Si
concorrenti. Lo scopo di questo articolo è di far co- può minimizzare l’utilizzo della memoria e “precarica-
noscere al lettore le caratteristiche di Konqueror, delle re” un certo numero di istanze del browser. Fate degli
quali possono non essere consapevoli e di dimostrare esperimenti con queste impostazione finché non otte-
che, con alcune eccezioni, è possibile utilizzare e con- nete una combinazione che meglio si adatta alle vostre
figurare Konqueror in modo tale che si possa trascor- necessità e alle specifiche della macchina in termini

Computer Programming n. 181 [None 2009] 23


USER SPACE

Figure 1: Konqueror in modalità browser e file Figura 2: Konqueror in “modalità FTP”

di capacità di memoria e di processore. Se piuttosto pagina web che volete e trascinate la favicon (sulla si-
non volete armeggiare con queste impostazioni e sta- nistra dell’indirizzo) sul Desktop e selezionate Collega
te utilizzando Konqueror da GNOME, un trucco spor- qui e verrà creata una scorciatoia sul Desktop. Meglio
co e veloce è avviare una piccola applicazione KDE e ancora, se si desidera creare una serie di scorciatoie a
minimizzarla. In questo modo, l’avvio di Konqueror pagine web sul desktop, selezionate Bookmarks e poi
richiederà un minor sollevamento pesi. scegliete Modifica Bookmark e trascinate i link che vo-
Si può anche avviare Konqueror con una pagina vuota lete sul Desktop per quante icone di bookmark deside-
digitando riate. Inoltre, questo metodo non vi chiederà di copiare
o do creare collegamenti sul desktop. Installerà auto-
about:blank maticamente un’icona Desktop. La stessa cosa vale
per il trascinamento al pannello.
in una finestra di dialogo KDE ottenuta premendo Alt
+ F2 o con
Sfogliare e archiviare
about:konqueror

Una caratteristica che rende unico Konqueror, e dico


una pagina di default che vi permetterà di scegliere unico, è che mentre altri web browser hanno molte
verso dove procedere. (Più oltre vedrete come incor- caratteristiche eccellenti, e effettivamente uniche, par-
porare queste viste nei vostri profili Konqueror). Se ticolarmente Flock, Firefox e Opera, Konqueror non
volete queste opzioni di avvio sul desktop, effettuate ha pari in virtù della sua capacità di navigare il web e
un clic destro su un’area libera (del desktop) e sele- il filesystem del computer dalla stessa interfaccia. Sı̀,
zionate Crea Nuovo e poi Collegamento a locazione lo so, Firefox ha un’estensione che permette di suddi-
(URL) e al prompt digitate un nome idoneo per il “pro- videre lo schermo e di visualizzare due differenti siti
filo” e, nella casella sottostante, digitate uno di questi web, ma si tratta di “siti web” e non di “un sito web e
comandi. di un file personale” come si vede nella Figura 1.
Un ultimo modo per aprire Konqueror rapidamente e In questo esempio, avete effettivamente un client
da dove si vuole è sfruttare il fatto che l’etichetta della FTP a due pannelli: basta trascinare il collegamen-
locazione è effettivamente trascinabile. Navigate alla 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 Figura 4: Konqueror in modalità file e terminale
“elastico”

mata del browser dei file e Konqueror vi chiederà di


anche i supporti esterni: CD, DVD, drive USB e pen-
spostare/copiare l’immagine ISO (Figura 2).
ne USB. Non potete costruire una catapulta da Kon-
Se non avete impostato una cartella specifica per questi queror, ma potete utilizzare il suo metodo a “elastico”
download non è necessario perdere tempo a cercarla. per selezionare i file contigui e selezionare dal menu
(Se avete impostato KGet per intercettare tutte le ri- di contesto le opzioni. Basta utilizzare il mouse per
chieste di download per le cartelle preimpostate KGet disegnare un’area attorno ai file desiderati (Figura 3).
ridefinirà questa impostazione). Se si preferisce si può
aprire una finestra terminale in Konqueror e trascina- Se dovete svolgere delle operazioni da riga di coman-
re, rilasciare e scaricare un file lı̀ (dirò di più su questa do, Konqueror vi può far risparmiare la seccatura di
tecnica più oltre). aprire una console separata. Se selezionate il menu
Per ottenere questo risultato, selezionare Impostazio- a discesa Impostazioni vedrete una voce per “mostra-
ni dal menu a discesa e scegliere Suddividi lo scher- re l’emulatore di terminale” (o per aggiungere l’icona
mo verticalmente. Tuttavia, per una azione più ve- per esso attraverso il menu a discesa Impostazioni, sot-
loce da tastiera basta eseguire semplicemente una to Configura barra degli strumenti e trascinarla sulla
delle seguenti operazioni per aprire e chiudere le toolbar): ciò farà aprire un’istanza di un terminale al-
configurazioni di suddivisione dello schermo: l’interno di Konqueror. Per i neofiti di GNU/Linux, si
tratta di un modo utile per seguire la struttura dei file
• Ctrl + Shift + L suddivide lo schermo vertical-
di sistema, poiché cliccando su una cartella non solo vi
mente
porterà a quell’elemento in modo grafico ma sarà an-
• Ctrl + Shift + T suddivide lo schermo orizzontal- che seguito dalla riga di comando. Dopo aver aperto
mente la scorciatoia alla directory desiderata potete eseguire
comandi su un particolare file nel terminale integrato
• Ctrl + Shift + R chiude lo schermo(i) suddiviso (Figura 4).
attivo
La copia e o il trasferimento di file è reso molto più
facile dall’utilizzo degli schermi suddivisi poiché ren-
de il drag&drop ancora più semplice. E ciò riguarda

Computer Programming n. 181 [None 2009] 25


USER SPACE

Figura 5: Schermo suddiviso che mostra la pagina HTML e Figura 6: Konqueror “dopato”: ogni visualizzazione che si
l’editor di testo integrato possa desiderare

Gestione e navigazione di file suddivisione dello schermo. Apro sul web un artico-
preimpostati lo pubblicato che contiene i tag corretti, suddivido lo
schermo (replicando cosı̀ la pagina), clicco sul nuovo
Una ulteriore ottima caratteristica di Konqueror farà schermo per renderlo attivo (un “led” verde si accen-
risparmiare tempo e faciliterà la navigazione: si tratta derà nella parta in basso del browser) e seleziono il
del filtro di visualizzazione (View Filter). Si può acce- menu Visualizza e modifico la Modalità visualizzazio-
dere ad esso dal menu Strumenti e si può anche aggiun- ne in Editor di testo avanzato integrato. Cosı̀ facendo
gere l’icona alla toolbar selezionandola e aggiungen- appariranno i tag XML dell’articolo e posso effettuare
dola da Impostazioni e poi scegliendo Configura barra un confronto riga per riga per capire come l’articolo è
degli strumenti. Se si seleziona il tipo di file che ave- stato costruito a livello di tag (Figura 5).
te scaricato, allora tutti i file di quel tipo appariranno. Si tratta di un aiuto molto utile. Certo, Visualizza →
Come tutti i menu ben fatti, il filtro di visualizzazione Sorgente pagina in Firefox fa la stessa cosa, ma in due
è contestuale. Non lo vedrete se Konqueror è in moda- finestre separate, mentre Opera aprirà un’altra scheda
lità browser web. Un vantaggio per i “terminalmente (Ctrl + UM nella versione 9.5 alfa). Tuttavia, que-
disorganizzati”! Il filtro di visualizzazione funziona sti non facilitano il confronto riga per riga. Per inci-
anche in modo incrementale; cioè, se dopo un primo so, se si vuole duplicare lo schermo suddiviso per se-
esercizio di filtraggio selezionate un ulteriore tipo di guire la navigazione dell’originale, basta cliccare sul
file, questo viene aggiunto alla selezione. Si deve se- piccolo riquadro vuoto in basso al browser. Appa-
lezionare Reimposta per ripristinare le impostazioni di rirà un piccolo simbolo “a catena”. Devo ammetterlo,
default del file manager. non riesco tuttavia a immaginare un utilizzo di questa
Se si sta navigando una pagina web, il filtro di vista funzionalità. E voi?
viene negato per ovvie ragioni; tuttavia, il filtro di vi- Se nel browser si vuole una navigazione senza mouse
sta offerto in modalità browser può offrire all’utente un sui collegamenti ipertestuali, premete Ctrl e i collega-
utile strumento di apprendimento. Ad esempio, nella menti verranno contrassegnati con un piccolo riquadro
scrittura di articoli che prevedono dei tag XML spesso beige con delle lettere. Per seguire un link basta pre-
mi dimentico quali sono i tag ammessi (o non ne co- mere la lettera corrispondente sulla tastiera. Il vostro
nosco neanche uno). In questo caso mi avvalgo della proverbiale vantaggio può comunque variare: se anda-

26 Computer Programming n. 181 [None 2009]


USER SPACE

Figura 7: schermo suddiviso di Konqueror con colori Figura 8: File di configurazione di Konqueror
preimpostati

impostate tutte. Poi cliccate su Impostazioni e selezio-


te sul sito Distrowatch, un sito fitto di link molto ravvi- nate Salva profilo visualizzazione “navigazione Web”,
cinati, la navigazione dei link per mezzo della tastiera scegliendo un nome pertinente e idoneo per il profilo e
può essere problematica. spuntate la casella salva url nel profilo. È tutto. In base
Come ogni browser che si rispetti, si può naturalmente alle dimensioni del vostro schermo potreste voler au-
impostare la propria homepage nei file di configurazio- mentare la superficie premendo il tasto F11. Se avete
ne di Konqueror ma a differenza di Firefox non potete uno schermo realmente grande o state utilizzando una
impostare più homepage da aprire in schede separate. TV ad alta risoluzione una combinazione di queste im-
In Firefox il trucco si ottiene digitando quanto segue: postazioni vi darà spazio in abbondanza di cui potre-
http://www.google.com/linux | ste aver bisogno se volete visualizzare una schermata
http://www.distrowatch.com |
http://www.bbc.co.uk.
come quella mostrata nella Figura 6.
Se lo spazio è da preservare si può invece impostare
Ciò non funzionerà in Konqueror, ma almeno è ver- un profilo a schede e chiamare il profilo, ad esempio,
satile. Konqueror supporta il caricamento dei profi- “homepage a schede” invece di “homepage a schermo
li (come fanno Firefox e Opera) per aggirare questo splittato”. La stessa cosa può essere fatta con i profili
problema, tra l’altro. Konqueror in modalità file. Un bonus in più in moda-
Per inciso, ho notato che Konqueror può variare nel lità visualizzazione file è che si può impostare il colo-
menu profili da distro a distro. Se si utilizza Ubuntu re di sfondo per distinguere le differenti aree suddivise
si vedrà che mancano alcuni caratteristiche. Si posso- dello schermo. La Figura 7 illustra le possibilità.
no comunque ripristinare, basta che puntiate il vostro
browser all’indirizzo
http://awebfactory.com.ar/node/91
Mettilo sulla scheda

Aprite Konqueror. In base a quante homepage volete Nei preistorici giorni bui di Internet Explorer il concet-
per default, suddividete lo schermo e ridimensionatelo to di navigazione a schede era esotico quanto il concet-
come desiderato e a turno, rendete ciascuna area atti- to di calcolo sicuro in Microsoft, ma Konqueror, come
va, navigate a una pagina web e ripetete questo pro- Firefox, Opera, Galeon, Epiphany e altri hanno offerto
cedimento per tutte le schermate finché non le avete 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 Figura 10: Tweak GUI con schede

ne a schede da anni. La navigazione a schede di Kon- la hanno. E anche Konqueror può averla. Ba-
queror si integra bene con profili, ma può fare anche sta andare sul wiki di KDE (http://wiki.kde.org/tiki-
più di ciò, con un po’ di impegno. index.php?page=Hidden%20configuration) e prende-
La via più lunga è selezionare dal menu File l’opzione re un piccolo e utile tool GUI per la modifica delle
Nuova Scheda e con un clic destro su questa seleziona- impostazioni nascoste di configurazione o prenderlo
re Chiudi Scheda. Ci sono anche altri modi: clic “cen- da
trale” su un link in modalità browser per aprire una http://www.kde-apps.org/content/show.php/
nuova scheda, o clic centrale su una directory o su uno Tweaking+Konqueror+tabs?content=44376

specifico file in modalità file per lo stesso effetto. Se


Per eseguirlo basta aprire con Alt + F2 una finestra
si preferisce si può trascinare e rilasciare un collega-
di comando e digitare tweak, o digitare il seguente
mento web nello spazio vuoto sulla destra dell’ultima
kioslave nella barra degli indirizzi di Konqueror:
scheda.
Aspetto frustrante è che Konqueror non ha per default settings:/Components/

il pulsante di chiusura sulle schede, ma potete aggiun-


e l’icona dell’applet Tweak sarà disponibile (Figure 9
gere questa caratteristica molto utile. I file di configu-
e 10).
razione di Konqueror sono tutti in semplice testo, facili
da leggere e da modificare (come utente root). Aprite Se si vuole rendere il lavoro con le schede più faci-
il vostro editor di testo preferito come root e navigate le, passate il mouse su una scheda e fate scorrere la
alla cartella: 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
/home/__nomeutente__/.kde/share/config/konquerorrc
delle schede.
Konqueror ha un ulteriore utile trucco nella manica. A
scorrete in basso alla sezione intitolata FMSettings e volte vorreste che aprisse una visualizzazione di un file
modificate la riga MouseMiddleClickClosesTab a true sempre in un particolare modo e non solo durante una
(Figura 8). specifica sessione: che si tratti della visualizzazione di
Un pulsante di chiusura è una caratteristica utile nel- una icona, di un file, dei dettagli di un file, ecc. Di
la navigazione a schede. Opera, Firefox e Flock nuovo, aprite

28 Computer Programming n. 181 [None 2009]


USER SPACE

Figura 11: Impostazione di Konqueror della visualizzazione Figura 12: Kioslave audio in azione
per cartella

di KDE input/output, che gli fornisce una omogenea


/home/__nomeutente__/.kde/share/config/konquerorrc trasparenza in rete. Assumono la forma, giusto per
citarne alcuni, di help:/, man:/ e info:/.
e modificate (come root) nella sezione MainViewSet- Un elenco dei kioslave supportati è disponibile nella
tings il valore a true (Figura 11). sezione Protocols di KInfoCenter ed è un elenco abba-
SaveViewPropertiesLocally=true
stanza grande. Se siete allergici alla riga di comando e
alla visualizzazione delle pagine man in un terminale,
Dopo aver apportato questa modifica e aver selezio- aprite Konqueror e digitate nella barra degli indirizzi
nato la visualizzazione del file desiderata dal menu man:/ seguito dalla pagina man che volete e otterrete
Visualizza (selezionate Modalità visualizzazione) per una gradevole e lineare pagina HTML. State scrivendo
una particolare directory, chiudete Konqueror e ria- un articolo su Amarok e non volete aprire questa ap-
pritelo: questa sarà la visualizzazione di default del- plicazione solo per conferma su qualche piccolo detta-
la directory finché non la modificate. I più acuti di glio? Bene, basta digitare help:/amarok e Konqueror
voi avranno capito che questa modifica può essere “fu- lancerà il manuale dell’applicazione. È qualcosa di li-
sa” con le configurazioni di profilo per creare le vostre neare e pratico ma i kioslave possono fare cose molto
impostazioni preferite di navigazione dei file. più potenti.
Un ultimo suggerimento sulle schede. Se preferite le
schede di Konqueror in basso, basta modificare (co- Schiavi del ritmo e qualcosa sulla barra
me root) nella sezione di configurazione FMSettings
la proprietà TabPosition=Top in TabPosition=Bottom. laterale

Chiunque ha le sue preferenze e la mia antologia è del


Libertà attraverso la schiavitù tutto personale, in base alle mie preferenze e all’utiliz-
zo: e voi avrete certamente le vostre. Ecco una breve
Benché possa sembrare un incrocio tra un brano di antologia che ritengo dimostri la grande potenza e uti-
“Newspeak” di Orwell e la saggezza gnomica di Bla- lità della loro trasparenza. GNU/Linux ha molti buone
ke ci porta a una delle più utili e potenti caratteristi- utility di ripping e codifica per file musicali (compresa
che di Konqueror: i kioslave. Kio è l’abbreviazione 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 Figura 14: Il kioslave “sysinfo” vi fornisce una gran quantità
Konqueror di informazioni azionabili

zionalità di ripping) e io le uso. Tuttavia, audiocd:/ è I devoti della riga di comando che hanno molto spazio
un kioslave che può fare molto da un’unica interfaccia libero su disco possono trascinare il file WAV in una
Konqueror quando serve al volo. finestra terminale in Konqueror e kfmclient (uno script
Se inserite un CD musicale, aprite Konqueror e digitate Konqueror) vi offrirà diverse opzioni. cp è quella che
audiocd:/ nella barra degli indirizzi vi verrà presentato fa al caso vostro. Questa opzione copierà il file nella
ciò che mostra la Figura 12. directory di default. Se si vuole copiare il file altrove
Ciò che otterrete è l’elenco dei file WAV originali pre- basterà cambiare directory con cd e poi copiare. Kon-
senti nel CD (e se lo fate mentre siete connessi a In- queror non ha ancora finito con i file musicali. Se non
ternet verranno visualizzati i titoli delle canzoni gra- state memorizzando i file sul disco rigido o su un dri-
zie a CDDB, http://en.wikipedia.org/wiki/CDDB, al- ve esterno USB potreste voler masterizzare il tutto su
trimenti verranno semplicemente elencati come traccia CD. Bene, se avete installato Konqburn (in preceden-
1, traccia 2, ecc.). Konqueror crea anche dei file virtua- za Kio–burn) potete anche masterizzare con Konque-
li in tutti i codec musicali che la vostra distro supporta ror. Basta trascinare le tracce selezionate sull’icona
in modo nativo, compreso quelli proprietari che avete CD nella barra laterale e procedere.
scaricato e installato. Eseguire il ripping e la codifi- Se volete campionare la musica che avete appena “rip-
ca di tutte le tracce selezionate è semplicemente una pato” e codificato con Konqueror, non è necessario av-
questione di drag&drop del codec selezionato in una viare un media player di grosso calibro (a meno che
directory del disco rigido. Konqueror farà il resto. Ciò non abbiate necessità di caratteristiche avanzate). Ba-
che non può fare, senza un vostro precedente interven- sta cliccare sul pulsante Media Player nella barra la-
to diretto, è configurare i parametri. Pertanto, nello terale di Konqueror. (Se non lo vedete, aggiungetelo
spirito di questo articolo, aprite una ulteriore scheda e con un clic destro su una parte vuota della barra late-
digitate nella barra degli indirizzi rale, selezionando Aggiungi nuovo e aggiungetelo. Per
inciso, si può avere più di una barra laterale. Sempre
settings:/Sound/ con un clic destro su una parte libera della barra la-
terale selezionate Visualizzazione multipla). Cliccate
selezionate Audio CD e potete manipolare le varie sull’icona Media Player nella barra laterale, trascinate
impostazioni (bitrate, tag ID3) per MP3 e Ogg Vorbis. 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 Figura 16: Opzioni di Audiokonvert

sa di più sostanziale provate il pulsante Amarok nella ra laterale, potete ottenere molti seri vantaggi da una
barra laterale). interfaccia Konqueror ben configurata.
Un ulteriore kioslave che permette di fare qual-
cosa senza abbandonare i confini di Konqueror è Lieto di essere d’aiuto!
Kio–sysinfo. È necessario che sia installato apt slave
perché funzioni ma come potete vedere i risultati sono
I preveggenti, compı̀ti, esistenzialmente stressati,
abbastanza impressionanti (Figura 14)
ascensori progettati dalla Sirius Cybernetics Corpora-
Se utilizzate una distro basata su apt c’è un pul- tion che tanto annoiavano Marvin l’androide paranoi-
sante azionabile per apt collegato al repository che co potrebbero aver tratto l’ispirazione dai progettisti di
vi permette di eseguire una ricerca in locale e onli- Konqueror e dalla stretta integrazione con KDE. En-
ne e di effettuare il download; tutti i pulsanti sotto trambi sono ansiosi di piacere e di fornire un buon ser-
Cartelle comuni e Informazioni sui dischi sono an- vizio. I felici trasportatori verticali di persone lo fe-
che azionabili. Potete scaricare i binari precompila- cero in un modo (a parte il saltuario broncio ai piani
ti di Kio-sysinfo per le distro più diffuse dall’indiriz- interrati come protesta) e Konqueror lo fa con i Ser-
zo http://jerrad.tuxfamily.org/kiosysinfo eng.html. Se vice Menu. Per molti aspetti, sono molto simili alle
non vi va a genio l’overhead di ricerca relativamente estensioni di Firefox; installando una propria selezione
alto di Beagle e della sua stirpe e/o la vostra macchina personale otterrete quelle caratteristiche che rendono
è poco potente, il kioslave locate:/ sarà una utile al- possibile trascorrere un’intera sessione in Konqueror
ternativa. Questo kioslave presenta i risultati in file e senza staccarsi dalla sua interfaccia.
cartelle, queste ultime con colori non di default, ed è Naturalmente, tutti i browser di file e i web bro-
molto veloce. wser hanno i loro menu di contesto, ma ulterio-
Ci sono molti altri kioslave eseguibili. Ho senza dub- ri menu di servizio metteranno il turbo a Konque-
bio tralasciato il vostro preferito, specialmente i pro- ror. Il posto migliore per incrociarli è il sito KDE
tocolli remoti come fish, ssh, webdav, smb, vnc, ecc. Apps (http://www.kde-apps.org/). Selezionando “ser-
Ho smesso di contare il numero di IO slave elencati in vice menus” avrete subito accesso a 251 di essi. Al
Kinfocenter a settanta; comunque utilizzandone mol- solito, la mia selezione riflette le mie preferenze e i
ti o pochi, specialmente in combinazione con la bar- miei requisiti.

Computer Programming n. 181 [None 2009] 31


USER SPACE

Uno per utenti Debian

Figura 17: Il menu di servizio 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 ciò che vi serve è disponibile un rapido tutorial
su come si creano su:
http://techbase.kde.org/Development/Tutorials/
Creating_Konqueror_Service_Menus
KIM

Siccome mi piace aggiungere delle schermate ai miei PDF toolkit


articoli e talvolta devo fare qualche modifica senza in-
vocare un vero pacchetto grafico, trovo molto utile il Quest’ultimo è una perla. È un menu di servi-
menu di servizio KIM (KDE Image Menu). Tra i co- zio con un’ampia gamma di potenti opzioni, ed
mandi contenuti nel menu Action ci sono le seguenti è disponibile dal sito Kde-look (http://www.kde-
operazioni: ridimensiona, converti, ruota, comprimi, look.org/content/show.php/konq-pdf+(new+PDF-
aggiungi testo, aggiungi bordi. Le funzioni di Undo smp)?content=37321).
sarebbero utili, ma ciò nonostante KIM aggiunge al-
cune funzioni molto veloci e utili a Konqueror quan-
do si ha necessità solo di qualche modifica di “post Conclusioni
produzione” su queste schermate catturate dalla riga
di comando (Figura 15). Konqueror come visualizzatore universale di docu-
menti si è dimostrato degno del suo nome; con l’ag-
giunta dei menu di servizio e dei kioslave e di un po’
Audiokonvert di configurazione, Konqueror può supportarvi per una
intera sessione, purché non abbiate particolari esigen-
Questo menu di servizio integra la capacità di Konque-
ze da “power user”. Certo, supera il test di compati-
ror di eseguire il ripping e la codifica di un CD musi-
bilità Web Acid2 ma non funziona bene con ogni sito
cale. Per le volte in cui avete scaricato un file musicale
(quale browser lo fa?); funziona con GMail ma solo
e non è in un formato che potete riprodurre, o in cui
nella versione di base in HTML (e potete sempre sele-
lo volete, Konqueror vi permetterà di convertire i file
zionare Modifica identificazione del browser nel menu
audio da e verso cinque differenti formati (Figura 16).
Strumenti e impostarlo a “Firefox”), e non ha esten-
Nonostante il messaggio di errore, il file viene conver- sioni alla Firefox. Ciò nonostante, spero che questo
tito senza problemi. Se lo state convertendo nel for- articolo abbia dimostrato sia la potenza sia la versati-
mato per l’iPod (M4A) allora potete trasferirlo sul ri- lità di Konqueror a fare molto più degli altri browser
produttore attraverso il kioslave iPod:/ dalla barra degli senza abbandonare la sua interfaccia.
indirizzi di Konqueror.

32 Computer Programming n. 181 [None 2009]


Estensioni Google in Firefox

Interagire con le utility Google attraverso Firefox

Gary Richmond

oglio dare un’occhiata in dettaglio su co- Una nota su Google

V me “superdotare” il browser Firefox con


una selezione d’élite di utility Google. Fi-
refox ha le sue critiche e i suoi difetti, ma
ad oggi è stato scaricato oltre 400 milioni di volte: e
come si dice “quello che mangiano gli flies, non posso-
Quando Google inizia a parlare messianicamente su
ciò 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-
no sbagliarsi tutti!”. Firefox è abbastanza buono cosı̀ tra “non essere malvagio” si sia tramutato nell’impero
com’è, ma ognuno sa che la funzionalità di Firefox malvagio di Microsoft. Quando iniziano a parlare di
si estende enormemente con la semplice aggiunta di linkare tutti a tutti e tutto il resto, posso vedere Ri-
estensioni, nonostante i problemi di sicurezza [1]. chard Stallman che si strofina la sua sindrome del tun-
------------------------------------ nel carpale. Inizio ad avere allucinazioni che Google
estenderà la sua portata a estensioni chiamate “Google
In questo articolo descriverò come Murder”, “Google Blackmail” e “Google Torture” [3].
estendere Firefox in modo che Larry Page e Sergy Brin possono non essere Steve
possa interagire meglio con Ballmer e Bill Gates, i Ronnie e Reggie Kray del
mondo del computer, (a right pair of diamond geezers
Google.
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
La scelta delle utility Google abilitate per mezzo di Google hanno alquanto offuscato la nostra visione del
estensioni è naturalmente del tutto personale, basata grande ciclopico motore di ricerca. Già, almeno Goo-
sulle mie necessità e preferenze mentre navigo. Qual gle è stato relativamente “GNU/Linux friendly”. Pen-
è la mia scelta? Gmail, GSpace, Better Gmail, Bet- sate a Picasa e a Google Earth per cominciare e anche
ter Gcal, Customise Google, Gmail Notifier, Mini- alla sponsorizzazione del Summer of Code. Indubbia-
map Sidebar. Però . . . dovrebbe essere sufficiente come mente, hanno anche dei motivi commmerciali ma al-
assortimento! meno non sono entrati far parte di una duplice una-
nimità con Microsoft sui brevetti: ma sono abbastan-
za riservati. Tuttavia, ciò non mi impedisce di testare
queste estensioni per Firefox.

Computer Programming n. 181 [None 2009] 33


PROGRAMMING

Una nota sull’installazione delle link [4] vi mostrerà l’incremento dinamico dello spa-
estensioni zio di memorizzazione in tempo reale, facendo parte
del programma di storage che Google chiama “Infini-
In questo articolo, tratterò diverse estensioni. Nel caso ty+1”. Dovreste inviare e-mail di proporzioni bizan-
non abbiate mai usato le estensioni, ci sono tre modi tine per esaurire questa capacità, tuttavia l’offerta di
per installarle: Google non è l’offerta più capiente [5]. Va sottolinea-
to che avrete accesso ad allegati e-mail fuino a 20 MB
1. cliccare semplicemente sull’icona installa ora e e questa sarà una caratteristica più utile (nonostante la
tutto verrà eseguito automaticamente; vostra ampiezza di banda). Una caratteristica grade-
vole è che questi allegati (inviati o ricevuti) verranno
2. clic destro sull’icona, scegliere salva collegamen- scanditi automaticamente da un antivirus. A parte lo
to come dal menu e salvare l’estensione in una spazio di memorizzazione, Gmail vi dà una ovvia por-
cartella prescelta. Poi, cliccare sul menu a di- tabilità su vari computer e dovunque sul globo abbiate
scesa File e selezionare Apri File, spostarsi nel- accesso a una macchina. Il cuore di Gmail sono ca-
la cartella in cui si è salvato il file con estensione ratteristiche come labels, voicemail, chat e l’integra-
xpi e installarlo. (Scommetto che non in molti zione con altri servizi Google come calendar, Docs e
utilizzerete questo percorso tortuoso!) Reader. Tornerò a parlare di alcuni di questi più oltre.
Suppongo che Gmail sia un buon punto di partenza per
3. trascinare e rilasciare il file xpi su una istanza di la ricerca di estensioni Firefox, poiché porterà a varia-
Firefox in esecuzione, che si occuperà di tutto. zioni su questo tema: Gmail Notifier, Better Gmail e
FireGPG. Pertanto, mettiamoci al lavoro.
In questo articolo fornirò i link diretti alle estensio-
ni dai repository ufficiali, e un link alla homepage del
progetto se disponibile. Tenete presente che il down- Gmail Notifier
load e l’installazione delle estensioni dal sito web uffi-
L’estensione Gmail Notifier [5] ha una licenza GPL ed
ciale e sicuro di Mozilla minimizza la possibilità di un
è compatibile con le versioni di Firefox dalla 1.5 alla
attacco “man-in-the-middle”.
3.0 pertanto gran parte degli utenti dovrebbero esse-
re coperti. Ha senso installarla prima di Better Gmail
Gmail e roba associata poiché questa estensione vi permetterà di ricevere no-
tifiche nel browser Firefox (dopo aver eseguito il lo-
Sono arrivato tardi, molto tardi, a Google Mail (d’ora gin) e dopo aver impostato l’estensione potete inizia-
in poi “Gmail”) ma dopotutto, non sono mai stato un’i- re a testare realmente le capacità di Gmail con Better
cona della moda. Una crudele necessità, come avrebbe Gmail.
detto Oliver Cromwell. È probabile che molti di voi Al solito, vi verrà richiesto di riavviare Firefox per
stiano già utilizzando Gmail, ma nella remota possibi- completare l’installazione di Gmail Notifier. Dopo che
lità che cosı̀ non fosse, potete puntare il vostro browser Firefox si è riavviato, selezionate il menu a discesa
al sito ufficiale (https://www.gmail.com/) e iscrivervi Strumenti e scegliete Add-Ons e cliccate su Estensio-
al servizio. ni. Scorrete verso il basso e localizzate l’estensione
Da quando è stato inaugurato il servizio, l’insieme di (sono in ordine alfabetico). Selezionatela e cliccate su
funzionalità di GMail è sbocciato. Quando mi iscris- Preferenze e vi verranno presentate le seguenti opzioni
si a Google Mail e installai l’estensione per Firefox modificabili:
mi furono messi a disposizione circa 2.9 GB di spazio Le opzioni sono in gran parte autoesplicative e questa
su disco che consideravo essere più che sufficiente per videata illustra le impostazioni di default. Potete impo-
i miei scopi. La buona notizia, specialmente per chi è starle a ciò che vi soddisfa di più. Forse la caratteristi-
alla ricerca di una capacità realmente importante, è che ca più interessante è la capacità di abilitare più account
dal Gennaio 2008 sono disponibili fino a 6 GB [4]. Il Gmail. Siccome questa caratteristica impatta su un’al-

34 Computer Programming n. 181 [None 2009]


PROGRAMMING

fatto che i bookmark di Firefox possono integrare feed


RSS. Tutto ciò che dovete fare è creare una cartella nei
Figura 1: Preferenze di Gmail Notifier
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 aprirà una finestra di dialogo e vi verrà
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:password@gmail.google.com/gmail/feed/atom

La buona notizia è che la connessione è SSL, ma la no-


tizia meno felice è 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
tra estensione descritta in questo articolo, la terrò per avete nuova posta, basta andare nel menu Bookmarks
dopo, come farà per la checkbox di abilitazione delle e vedrete il live bookmark del feed Gmail/RSS. Evi-
connessioni non protette. denziaziondolo vi indicherà il titolo(i) della(e) e-mail.
Per default avrete ora un’icona disattivata sulla barra Due avvertimenti: primo, talvolta il live bookmark e
di stato nella parte inferiore del browser. Portando il Gmail Notifier vanno fuori sync in termini di numero
mouse su di essa vi verrà richiesto di effettuare il login. di e-mail non lette. La soluzione è semplice: basta un
Cliccando si aprirà una finestra di dialogo di login: una clic destro sul bookmark live nel menu Bookmarks e
volta effettuato il login l’icona diventerà rossa; finché selezionare Reload Live Bookmark. Secondo, il feed
siete loggati resterà in questo stato. Se spostate ora il non verrà scaricato se non ci sono nuove e-mail nella
mouse sull’icona vi avviserà se ci sono nuovi messaggi cartella inbox.
(il colore diventa blu); ci sarà anche una notifica accan-
to all’icona colorata sul numero di e-mail non ancora
Better Gmail: un moustrap migliore
lette. In base a come avete impostato le preferenze,
cliccando sull’icona Gmail si aprirà in una nuova fine- La cosa che amo degli hacker dell’open source è che
stra, nella scheda corrente, in una nuova scheda o in proprio non possono lasciare le cose come sono. Han-
una nuova scheda senza focus. Se avete impostato le no un desiderio irresistibile di armeggiare e migliorare
preferenze di Gmail Notifier per reimpostare il conta- e Firefox è una grotta di Aladino per queste persone.
tore di Notifier quando l’icona viene cliccata per apri- Gli script Greasmonkey [6] sono ben noti ai devoti del-
re una e-mail, questo verrà decrementato/incrementato la piccola volpe. Wikipedia ha un eccellente articolo a
ogni volta. Per inciso, solo perché vi siete loggati in tal riguardo [7]. Persone più esperte di me (penso sia-
Gmail in qualche altro modo non significa che siete au- no molte) hanno messo assieme questi script e hanno
tomaticamente loggati via Firefox. Dovete effettuare il prodotto un’agile estensione in Better Gmail [8] (pote-
login da Firefox. te anche visitare la homepage di Better GMail [9] che
Gmail Notifier è una eccellente estensione ma pro- aggiunge alcune serie caratteristiche potenti a Gmail
babilmente vi starete chiedendo perché dovete aprire come illustrano le opzioni sottostanti) . Se i pilchard
Gmail per vedere effettivamente quali sono queste e- sono sardine giganti on steroids, allora Better Gmail è
mail. Non chiedetevelo più. La risposta a questa sec- un barracuda. Ed è anche accompagnato da un bonus:
catura è impostare un “live bookmark” per sfruttare il l’approvazione formale di Tim O’Reilly [10].

Computer Programming n. 181 [None 2009] 35


PROGRAMMING

indicibile bestialità. Ho provato questa caratteristica


con un allegato PDF e ha funzionato a dovere. (Il solo
Figura 2: Schede delle opzioni di Better Mail
svantaggio è che, poiché Gmail è uno strumento Web,
gli allegati non si trovano sul vostro disco rigido lo-
cale e anche dopo che l’e-mail è stata “scaricata” sarà
ancora necessario scaricare l’allegato prima di poterlo
visualizzare, il che può essere scomodo se è un grosso
file). Labels è un’altra utile caratteristica per l’organiz-
zazione di Gmail. Dopo che Better Mail è installato ed
è abilitata l’opzione Labels, troverete un’etichetta nel-
l’angolo in basso a sinistra della finestra di Gmail. Se
si clicca su Edit Labels apparirà 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 è
Nella scheda General avete la possibilità di opportu- un barracuda.
nità di selezionare le checkbox delle seguenti opzioni: ------------------------------------
avere una connessione sicura crittografata con Gmail,
integrare Google Reader e aggiungere una gradevole Abilitando Filter Assistant otterrete la stessa funzio-
piccola caratteristica per mostrare l’utilizzo del disco nalità che vi attendereste da un client e-mail conven-
come barra di avanzamento. L’opzione più interessan- zionale come Evolution o Thunderbird per instrada-
te della scheda Compose è Attachment Reminder. Que- re la posta desiderata in cartelle preimpostate o per
sta opzione vi ricorda di allegare un file a Gmail nel eliminarla come spam o robaccia.
caso lo aveste dimenticato, se c’è un riferimento a un L’ultima scheda importante in Better Mail è Sidebar.
allegato nel subject di Gmail. Se questa caratteristica Le due checkbox più utili da attivare sono Add Google
è abilitata, quando si clicca su invia Gmail vi segna- calendar Link e Add Google Reader Link. Fatto ciò,
lerà di non aver allegato il(i) file, con la possibilità di questi link verranno aggiunti a Gmail e vi permetteran-
premere annulla e di eseguire l’attach prima di reinvia- no, se lo desiderate, di accedere a queste applicazioni
re, o di inviarla comuqnue. Non vincerà alcun premio, Google da Gmail stesso, senza lasciarne i confini.
ma è una piccola caratteristica ben fatta e ancor me-
glio quando il riferimento all’allegato si trova anche Utilizzo di GMail con IMAP e POP
nel testo principale o invece nel titolo della e-mail. La
scheda Messages vi dà accesso a diverse caratteristiche Se si clicca sul link Settings in alto alla pagina si ve-
realmente utili: Conversation Preview è, ritengo, una drà un certo numero di impostazioni. Selezionate For-
delle migliori. Una volta abilitata, si sarà in grado con warding and POP/IMAP dove sarete in grado di predi-
un click destro su una e-mail di visualizzarne il con- sporre l’abilitazione di questi due protocolli in Gmail
tenuto senza aprirla effettivamente nel modo normale. (Figura 3).
Inoltre, ci sono delle opzioni all’interno di questa ca- Si può scegliere una delle due opzioni ma in ogni ca-
ratteristica per archiviare o spostare nel cestino l’ele- so si avrà una discreta quantità di configurazione nel
mento selezionato. Ottimo. Attachment Icons sembra normale client e-mail. Questo aspetto è al di là de-
banale ma in effetti potrebbe essere un vantaggio per i gli scopi immediati di questo articolo, ma si possono
patiti dell’iper-sicurezza visto che sostituisce l’anoni- ottenere istruzioni molto dettagliate e degli screenshot
ma icona a graffetta che potrebbe celare ogni sorta di 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 Figura 4: Preferenze di FireGPG


configurazione POP e IMAP

stata solo questione di tempo prima che qualcuno de-


guito queste istruzioni, ritornate alle impostazioni di cidesse di scrivere un’estensione per Firefox. Questa
forwarding e salvate le modifiche. Si può avere la po- estensione è FireGPG [14] e utilizza GnuPG svilup-
sta di Gmail inoltrata al normale client e-mail senza pato dalla Free Software Foundation e fortunatamente
esguire il login a Gmail o scaricarla direttamente nel supporta Gmail. Al momento in cui scrivo non è di-
proprio programma di e-mail. Il che non va confu- sponibile dal sito ufficiale degli addon di Mozilla (il
so con l’impostazione del servizio di Mail Fetcher in che sarebbe più sicuro), ma non avuto alcun problema
Gmail che permette di scaricare la posta dal POP ser- con il precedente link.
ver di un client e-mail (purché il vostro ISP suppor- Tuttavia, prima di farlo funzionare in Firefox è pri-
ti l’inoltro), pur conservando la possibilità di lasciare ma necessario installare GnuPG sulla propria macchi-
il(i) messaggio(i) sul server. Si può iniziare il proces- na GNU/Linux. In molti casi sarà già installato. Altri-
so di impostazione del Mail Fetcher nella scheda Ac- menti, controllate sui repository del software e instal-
counts di Settings, seconda voce in basso. GMail Help latelo (o reperitelo dal sito ufficiale [15]). Si tratta di
Centre fornisce una spiegazione e un howto [12]. un tool a riga di comando (si veda man gpg) ma ci sono
diversi frontend disponibili [16], tra cui i due principali
Un’estensione per Firefox per chi non si fida di sono KGpg per KDE e Seahorse per Gnome. Entrambi
nessuno genereranno le coppie di chiavi necessarie per critto-
grafare e apporre la firma digitale alle e-mail. Il mio
Molte estensioni per Firefox sono rivolte a utenti che amico-collaboratore, Dmitri Popov, ha scritto un breve
non si fidano neanche della propria madre che gli da il ma eccellente howto su questo passaggio [17]. Ora si
bacio della buonanotte. Se siete una di queste persone, può installare l’estensione e la schermata Preferences
ho un’estensione per voi che si integra con Gmail e of- fornirà le opzioni mostrate nella Figura 4.
frirà un sonno tranquillo e sicuro sapendo che nessuno La prossima volta che componete un messaggio in
può sbirciare o ficcare il naso su ciò che inviate tramite Gmail, FireGPG avrà aggiunto il pulsante Sign, Crypt
Google. and Send che, se cliccato, vi farà una doppia richiesta:
Molti lettori avranno sentito parlare del software di una volte per la chiave pubblica e una per la chiave pri-
crittografia Pretty Good Privacy (PGP) [13] che vie- vata. Ci saranno anche altri pulsanti con variazioni di
ne utilizzato, tra l’altro, per crittografare le e-mail. È queste opzioni in base alle proprie preferenze. (Que-

Computer Programming n. 181 [None 2009] 37


PROGRAMMING

Figura 5: Configurazione delle etichette GTD nelle Figura 6: Il riquadro GTD search
impostazioni Gmail

già stipata di caratteristiche che sgomitano a vicenda.


ste opzioni appariranno nella schermata di composi- Citando le parole del sito web ufficiale, GTD rappre-
zione). Se vi fidate di Google per le chiavi private, ed senta il massimo di sinergia di gestione e comunicazio-
è un grosso se, allora ora avete una connessione secura ne pur garantendo cautela e sicurezza. Perbacco! Se si
e la posta crittografata. Dopo aver iniziato questo ar- è interessati alla filosofia alla base di GTD, la rivista
ticolo FireGPG è stato aggiornato (alla versione 0.4.6) Wired ha pubblicato un articolo su GTD [19]. Si può
per lavorare con l’ultima versione di Gmail: crea un utilizzare il precedente link [18] per installare questa
pulsante utilizzato per aggiungere un file crittografato estensione super piccola, ma GTD è ora felicemente
come allegato. presente nel sito ufficiale Mozilla degli addon [20].
Come FireGPG, con Gmail aggiornato alla versione
Perché non utilizzare un Gmail ancora migliore 2.0, GTD non funzionerà opportunamente a meno di
per far tutto? non tornare a eseguire la vecchia versione di Gmail.
Basta individuare le impostazioni older version nel-
Gmail, Better Mail, Gmail crittografato. Perché fer- l’angolo in alto a destra di Gmail e cliccando verranno
marsi? Perché non estendere ulteriormente le cose ripristinate tutte le configurazioni di queste estensio-
e aggiungere qualche stimolo organizzativo realmente ni (se, come me, avete già installato GTD). Questa è
valido a Google in Firefox? Mi riferisco all’estensio- la buona notizia, più il fatto che gli sviluppatori GTD
ne GTD (Getting Things Done), all’estensione Better stanno lavorando alla versione 2.0 per renderla compa-
Gcal e all’estensione Minimap sidebar. tibile con Gmail 2.0. Nel frattempo, la cattiva notizia
è che se avete selezionato le impostazioni più vecchie
GTD: Get Things Done di Gmail per ripristinare le impostazioni GTD, dopo
che effettuate il logout e nuovamente il login, riappare
Se siete fanatici del controllo e dovete semplicemente la versione più recente di Gmail come per vendetta e
essere iper-organizzati, allora questa estensione per Fi- siete costretti a ripetere di nuovo il trucco delle impo-
refox fa per voi. Giusto quando si pensa che qualsiasi stazioni: e continuerete a doverlo fare fino all’aggior-
altra estensione a Gmail dovrà ottenere una concessio- namento di GTD; ma questo è un piccolo prezzo da
ne edilizia, si fa avanti GTD [18] per aggiungere una pagare per questa super piccola estensione.
gran quantità di ulteriori funzionalità a un’interfaccia Dopo aver installato questa estensione, riavviato Fire-

38 Computer Programming n. 181 [None 2009]


PROGRAMMING

Figura 7: Gmail con le opzioni avanzate di GTD Figura 8: Google calendar attivato da GTD

fox e effettuato il login in Gmail, si vedrà che ciò che fa la possibilità di salvare le ricerche. Si può effettuare
è espandere notevolmente la funzionalità della caratte- una ricerca, poi aggiungere Categorie/Etichette a sin-
ristica Labels. Le etichette ora appaiono sotto varie gole e-mail e quando si ritorna alla propria inbox que-
intestazioni: Contexts, Status, Projects e References ste e-mail saranno ora contrassegnate di conseguenza
con la possibilità di aggiungere quante sottointestazio- (Figura 6).
ni si vuole. Mentre tutte le etichette extra (collassa- Infine, quando si vuole comporre una e-mail si vedrà
bili) sono situate nella parte inferiore del lato sinistro che l’estensione GTD ora vi fornisce tre opzioni: Com-
di Gmail, tre altre caratteristiche vengono aggiunte: pose E-mail, Compose Myself an action e Compose
un link GTD nell’ultima colonna di ciascuna e-mail, Myself a Reference. La prima è autoesplicativa e le
un link Show GTD Search all’inizio dello schermo e altre due, se selezionate, apriranno ulteriori finestre di
un pulsante nell’angolo inferiore destro per permetter- dialogo contestuali (Figura 7).
vi di stampare Hipster PDA cards [21]. Cliccando su Con questa caratteristica potete inviarvi un’azione o un
una delle categorie delle etichette si aprirà la scheda riferimento, compreso qualsiasi allegato, e cliccando
Gmail Labels Setting in cui si possono selezionare le su Add event info si può inserire dove e quando. Su-
sottocategorie o crearne di nuove (Figura 5). bito sopra l’area principale di composizione del testo
------------------------------------ vi è un pulsante di azione more event options. Se si
clicca su di esso si aprirà una finestra Google calendar
GTD rappresenta il massimo di
e permetterà una ulteriore configurazione (Figura 8).
sinergia di gestione e
GTD è una delizia per il power user con sufficienti
comunicazione pur garantendo opzioni (ben sette schede) da tenere occupato il più
cautela e sicurezza inveterato smanettone (Figura 9).
------------------------------------ Questo è solo un assaggio di ciò che questo meravi-
glioso addon per Firefox può fare per un’applicazione
Il servizio “GTD search” apre una finestra di dialogo Google come Gmail. Il sito web ufficiale vi dirà molto
con molte opzioni di ottimizzazione fine basate sulle di più e in modo anche più dettagliato.
etichette impostate, sulle date e sul fatto che le e-mail
siano contrassegnate da stellette o abbiano allegati, con

Computer Programming n. 181 [None 2009] 39


PROGRAMMING

e la quantità di informazioni rivelate era sorprendente


e scioccante. Le informazioni erano tali che era possi-
Figura 9: Le opzioni di GTD: sette schede, un paradiso per
bile sapere esattamente quando qualcuni sarebbe stato
gli smanettoni
via per gite o vacanze facilitando cosı̀ le effrazioni e
sufficienti dettagli personali e finanziari da facilitare il
furto di identità. Visitate il sito [23] e vedrete voi stes-
si. È una lettura che impensierisce. La lezione è 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 estenderà


Google Calendar

Sfortunatamente, Better Gcal non fa per Google calen-


dar ciò 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-
Better Gcal: Google Calendar imbellettato mepage di RTM, cliccate su Signup Now! e seguite le
indicazioni per iscriversi a uno speciale calendario che
Google Calendar ha alcune buone caratteristiche ma
aggiungerà piccole icone di task a ciascun giorno (un
al solito i demonietti smanettoni hanno rovistato a fon-
segno di spunta blu). È anche disponibile una guida
do rummaging e hanno tirato fuori un’estensione detta,
rapida [25]. Questi segni blu appariranno solo dopo
ehm . . . , Better Gcal [22]. Come Better Gmail, lo sco-
che vi siete assicurati che il calendario Remember the
po è semplice: aggiungere funzionalità realmente utili
Milk è nella vostra Calendars List e che la casella del-
al calendario di default di Google. Non è pieno zeppo
la checklist sia selezionata. Fatto ciò, potete cliccare
di caratteristiche come Better Gmail ma ha alcune ben
sulle icone dei task in alto a ciascun giorno del Google
fatte opzioni di configurazione (Figura 10).
Calendar, effettuare il login (con username e password
Queste, come per Better Gmail, sono una gentile con-
che avete impostato quando avete installato RTM) e
cessione degli script Greasmonkey acclusi e aggiungo-
creare i task da visualizzare.
no, letteralmente, un poı̀ di colore al calendario. Che
si utilizzi Google calendar come applicazione standa- Attraverso la funzionalità Locations feature, Remem-
lone o integrandola con tutti gli altri pacchetti Google, ber the Milk vi offe una mappa relativa ai task che
un’opzione che si deve assolutamente abilitare è forza- hanno un componente location (pratico se state con-
re una connessione sicura (https). In base alla dimen- dividendo Google calendar con amici che non hanno
sione delle voci del vostro calendario, text wrap events familiarità con la vostra località). Questo fungerà da
è utile. Le altre opzioni attivabili sono essenzialmente supplemento a un’altra extension Firefox di nome Mini
estetiche. Map Sidebar [26], essenzialmente Google Maps nella
barra laterale di Firefox, che ha molte caratteristiche
al di là dello scopo di questo articolo (elencate sul sito
Google Calendar: un avvertimento
ufficiale dell’add-on).
Un avvertimento sull’utilizzo di Google calendar. Se Comunque, RTM è popolare e la popolarità è fonte di
rendete pubblico il vostro calendario potete, in base più richiesta di feature creep. Pertanto, non sorpren-
a ciò che inserite, esporvi a qualsiasi cosa, dal furto in de che ci sia un’estensione per Firefox per questo tool
casa al furto di identità al pedinamento. Ho dato un’oc- di gestione dei task. Si chiama Delegate to Remem-
chiata ad alcuni calendari pubblici di “singoli privati” ber the Milk e si basa sull’estensione DelegateGCal di

40 Computer Programming n. 181 [None 2009]


PROGRAMMING

Figura 10: Preferenze di Better Gcal Figura 11: GMailFS non è il solo modo per accedere a GMail
come se fosse un disco remoto.

ano.malo.us. Se vi state struggendo come un Python


parrot per le caratteristiche di RTM in Google Calen- gle Talk, ICQ, Jabber, MSN, Skype e Yahoo! sono tutti
dar allora installatelo [27] e, happy days, un pulsante supportati).
verrà aggiunto ai messaggi Gmail per generare mes-
saggi verso RTM che crea un nuovo task. Come per Gspace: spazio online gratuito tramite Firefox
FireGPG, questa estensione è stata colpita dall’aggior-
namento di GMail e funzionerà solo con la versione Gli utenti GNU/Linux avranno familiarità nell’utilizzo
più vecchia, richiedendo cosı̀ la modifica della versio- di Fuse (File User Space) in combinazione con Gmail
ne nelle impostazioni di Gmail che ho citato prima. per creare filesystem Linux virtuali e montabili, me-
Tuttavia, sarete ancora in grado di utilizzarla per con- glio noti come GmailFS [28]. GmailFS vi permetterà
vertire le e-mail in task pur conservando un collega- effettivamente di utilizzare GMail come un filesystem.
mento all’indietro alla e-mail originale; proprio cosı̀. Se Fuse o GmailFS non fanno parte dei repository soft-
Se vi piace realmente RTM non siete limitati a Gcalen- ware delle vostre distribuzioni, potete reperirli sul sito
dar e Gmail; potete averlo anche nella barra laterale di ufficiale [29]. Molti principianti possono rifiutarsi di
Firefox. Con il gadget iGoogle abilitato, aprite Book- installare i moduli Fuse Kernel (tuttavia in gran parte
marks Manager e create un nuovo bookmark e digitate delle versioni recenti è installato per default) e insegui-
la seguente URL: re le dipendenze, tuttavia l’impegno ne sarà valsa la pe-
na: sarete in grado di utilizzare Gmail senza dipenden-
http://www.rememberthemilk.com/services/modules/googleig/ ze dagli aggiornamenti del browser che possono cor-
rompere l’estensione (anche non dovendo accedere ai
e assicuratevi che sia spuntata la casella “Carica questo comandi per i file).
bookmark nella barra laterale”. Ora, purché siate log- Se si preferisce un’estensione Firefox che funziona
gati in RTM potete visualizzarlo da una barra laterale con Gmail, benché non ufficialmente, allora Gspace
di Firefox semplicemente selezionando questa opzione [30] fa per voi. Si tratta di uno spazio online remo-
dal menu a discesa Bookmarks. Nel descrivere RTM to di memorizzazione di file con tutti i fronzoli. Siete
ho scalfito solo la superficie di ciò che può fare e su distanti una sola estensione dai fino a sei Gigabyte di
come si integra con Firefox e le applicazioni Google, facile e comoda capacità di memorizzazione attraver-
SMS e gli instant messenger (AIM, Gadu-Gadu, Goo- so il vostro account Gmail. È facile da usare, è come

Computer Programming n. 181 [None 2009] 41


PROGRAMMING

seguito accedere (e ritrasferirli) da qualsiasi altra mac-


china su cui sono installati Firefox e Gspace. Se ora
Figura 12: L’interfaccia a quattro pannelli di Gspace
aprite Gmail questi file verranno mostrati come una
normale e-mail che può essere visualizzata, scandita
e/o scaricata. Questa caratteristica è 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 è 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, benché per fare
ciò avrete bisogno del plugin Flash Player (Gspace vi
fornirà 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
più account GMail da Gspace ma solo sequenzialmen-
spostare i file localmente sul vostro computer. Ai file
te, e non consecutivamente, poiché Firefox mantiene
caricati su Gmail via Gspace potete accedere e recu-
i cookie attraverso la session di login: pertanto, più
perarli da dovunque, su qualsiasi macchina: compreso
acount GMail su più schede Firefox non è compreso
permettere l’accesso ad altri a cui vi fidate di fornire i
nel menu!
dettagli del vostro account Gmail. È una caratteristi-
------------------------------------
ca molto utile per grossi file che potrebbero soffocare
il vostro normale client e-mail, anche su una decente L’installazione di Customise
connessione a banda larga. Una volta installato, Gspa- Google vi darà accesso a un
ce aggiungerà un’icona alla barra di stato di Firefox.
Dal menu add-on delle estensioni potete configurare ventaglio fenomenale di
le opzioni di Gspace e questo dovrebbe essere il vo- impostazioni Google per migliorare
stro primo scalo: Gspace Preferences Settings. Qui, la sicurezza del browser.
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 Il meglio di tutto il resto: una rapida
separata (Figura 12). panoramica
Chiunque ha utilizzato FireFTP, un’estensione client
FTP per Firefox, riconoscerà l’organizzazione dell’in- Avevo intenzione di includere Google Browser Sync
tefaccia: una schermata contenente i files della propria [32]. Anche se i dati sono opzionalmente crittografa-
directory home, una schermata per il trasferimento di ti utilizzando un PIN alfanumerico in modo che dati,
questi file su Gspace, una schermata Transfer e una password e cookie siano protetti (anche da Google?),
schermata Status (tutte ridimensionabili). Una volta una possibilità migliore è di utilizzare Gspace in com-
loggati, selezionate un o più file cliccate sulla freccia binazione con due eccellenti piccole estensioni per Fi-
blu di upload e i file selezionati verranno trasferiti nella refox: FEBE [33] e CLEO [34]. Queste estensioni vi
schermata destra. Allo stesso tempo, nella schermata permetteranno, rispettivamente, di eseguire il backup
in basso a sinistra Transfer, una barra d’avanzamento di tutte le vostre estensioni, temi, bookmark, preferen-
indicherà lo stato dell’upload. Ai file caricati potete in 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 Conclusioni


installabile. Potete poi usare Gspace per caricare il fi-
le CLEO e accedere ad esso per installare il tutto su Le estensioni Google vi permettono di ingranare la
un’installazione Firefox in esecuzione su un’altra mac- potenza di Firefox e di trascorrere un’intera sessio-
china dovunque altro sia. Per lo stesso motivo, Google ne online senza doverne lasciare i confini. I soli
Notebook [35] (un blocco appunti a scratch pad and avvertimenti riguardano la sicurezza e gli aggiorna-
shoe in per del.icio.us?) è un piccolo tool di ricerca ben menti alle estensioni e ai browser che corrompono la
fatto da utilizzare in Firefox, specialmente se deside- compatibilità.
rate collaborare online e integrarlo con Gmail e Goo- Se questo assortimento non è sufficiente a esaurirvi o
gle calendar [36], ma se volete una reale estensione se la mia selezione non è di vostro gradimento, allora
da “power user” per Firefox, allora Zotero [37] è una fate una visita a
soluzione molto migliore. È standalone ma più poten- http://geekpedia.wordpress.com/category/gmail/
te, e la uso regolarmente nelle mie ricerche. Il potente un sito web che elenca non meno di ottanta tool e sug-
insieme di caratteristiche può essere realmente apprez- gerimenti per Gmail e sguazzate nell’abbeveratoio per
zato solo installando l’estensione [38]. Infine, benché Google.
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 libertà con la vostra sicurezza e Ci sono abbastanza estensioni da
i vostri dati. L’installazione di Customise Google [39] durare almeno quanto una causa
vi darà accesso a un ventaglio fenomenale di impo-
stazioni Google per migliorare la sicurezza del brow- intentata da SCO.
ser. Consideratelo come l’aggiunta di meta-preferenze ------------------------------------
a tutte le altre estensioni Google. le note dell’articolo sono presenti all’indirizzo
http://www.infomedia.it/note/CP181/richmond
Estendere Nautilus: (fotocamere
e) rotazione di immagini JPG

Personalizzare il filemanager di GNOME con gli script

Scott Carpenter

------------------------------------
ecentemente stavo cercando un modo per

R ruotare immagini JPG da Nautilus, e ho


trovato un modo per fare questo e altro.
Non è 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
Non è difficile personalizzare il
menu popup che si apre con un
clic destro in Nautilus per eseguire
azioni personalizzate sui file
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- È vero che molti programmi di importazione ruote-
dows ha una utile funzionalità con cui si possono sele- ranno automaticamente le immagini mentre vengono
zionare più immagini in modalità thumbnail, e con un estratte dalla fotocamera, ma non tutti lo fanno, e non
clic destro si ottiene un menu popup (noto anche come sarete sempre in grado di utilizzare il programma di
menu di contesto), e si può selezionare una rotazione importazione del caso. È anche possibile che la vostra
in senso orario o anti oario. Si tratta di una trasfor- fotocamera non memorizzi gli opportuni metadati Exif
mazione senza perdita di informazione, al contrario di (http://en.wikipedia.org/wiki/Exif) nel file dell’imma-
ciò che probabilmente si ottiene se si apre un’imma- gine, lasciando inerme il vostro super fantastico pro-
gine con il proprio programma di grafica preferito, la gramma di importazione. Pertanto ritengo che possia-
si ruota, e la si salva nuovamente. Questo metodo è mo convenire sul fatto che si tratti di qualcosa che è
anche scomodo se, come accade a me, volete solo ruo- necessario avere per facilitare la gestione delle foto.
tare le immagini dopo averle estratte dalla vostra foto- Mi occuperò in modo specifico delle operazioni sui fi-
camera. Si tratta di una delle tante cose che ho appreso le immagine per dimostrare come Nautilus può essere
gradualmente nel sostituire le mie precedenti compe- esteso. Tratterò il caso dei file JPG che in pratica rap-
tenze Windows, e come di solito accade quando trovo presentano il formato universale delle fotocamere digi-
una soluzione in GNU/Linux, sono rimasto compiaciu- tali (almeno in quelle utilizzate da noi comuni mortali)
to dal raffinato approccio costruttivo dei sistemi *nix. e utilizzerò i dati Exif che ci permettono di fare diver-
Mi sono reso conto di avere la potenza di bash a portata se cose utili. Dalla lettura di questo articolo, sarete in
di mano da Nautilus, con script che sfruttavano l’ulte- grado da Nautilus di effettuare un clic destro sulle vo-
riore vantaggio di alcune eleganti utility che descriverò tre immagini e di avere delle opzioni di menu come
più oltre. quelle mostrate nella Figura 1.
Questo corrisponde alla seguente gerarchia nella
vostra directory home:

44 Computer Programming n. 181 [None 2009]


PROGRAMMING

------------------------------------
Mi sono reso conto di avere la
Figura 1: Il menu popup del file manager Nautilus di
GNOME attivabile con un clic destro 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
˜/.gnome2/nautilus-scripts/img/ Nautilus. Ho dovuto forzare un ricaricamento delle di-
autorotate.sh rectory in Nautilus per vedere nuovamente il tutto nel
change-date-and-rename-with-exif.sh
change-mod-date-to-exif.sh menu, utilizzando la piccola freccia circolare blu della
rename-with-exif-date.sh toolbar. Forse ciò aveva qualcosa a che fare con il mio
rotate-left.sh
rotate-right.sh problema iniziale. In ogni caso, se le cose non appaio-
caution/strip-exif.sh 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’è ancora una cosa da fare prima di potere iniziare
Preliminari a osservare gli script in azione. È necessaria l’uti-
lity jpegtran (http://en.wikipedia.org/wiki/Libjpeg)
Il codice di questi script rilasciato come pubblico do- prelevabile dal sito Independent JPEG Group
minio appare più oltre. Si può anche scaricare il fi- (http://www.ijg.org/) e jhead di Matthias Wandel
le allegato all’articolo downloads.tgz e estrarlo nella (http://www.sentex.net/ mwandel/jhead/). Entrambi
propria directory nautilus-scripts: sono piccoli e robusti programmi free software. jhead
è di pubblico dominio, e jpegtran ha una sua licenza
/.gnome2/nautilus-scripts$ tar -xvf che appare essere pienamente free.
downloads.tgz La buona notizia è che probabilmente avete già jpeg-
La pagina GNOME su come estendere Nautilus è un tran, e jhead è facilmente disponibile. Nelle mie mac-
buon punto da cui partire. Riporta che si può anche uti- chine dotate di Ubuntu 7.04 (Feisty Fawn) e di Fedora
lizzare il menu File → Scripts per eseguire gli script, FC5, jpegtran fa parte dell’installazione di default. Su
e da lı̀ o dal menu di contesto che si ottiene con un Ubuntu ho installato jhead con il comando
clic destro, si può selezionare l’opzione “Open Scripts sudo apt-get install jhead
Folder” per aprire la directory in Nautilus. Se non ave- e su Fedora, come utente root, con il comando
te alcuno script installato, non otterrete queste opzioni yum install jhead
di menu. Accertatevi che gli script che create siano Per scopi di sperimentazione, raccomando di utilizza-
eseguibili. re una directory temporanea con copie di alcune im-

Computer Programming n. 181 [None 2009] 45


PROGRAMMING

tamento di Exif. Se avete ruotato le vostre imma-


gini in precedenza, questo flag può essere azzerato.
Figura 2: L’immagine monkey.jpg
Si può 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, passerà
tutti i nomi di file come argomenti allo script).
• Finché ci sono file, e se il file è in effetti un file e
non una directory, invocherà jpegtran per ruotare
l’immagine di 90 gradi. Facendo sı̀ che il file di
magini. Molto probabilmente non vorrete utilizzare
output abbia lo stesso nome del file di input, andrà
le vostre ordinarie directory di immagini mentre lavo-
semplicemente a sostituirlo.
rate inizialmente con questi script, poiché non si può
effettuare l’undo delle operazioni. • Dopo la rotazione dell’immagine, invoca jhead
------------------------------------ per azzerare il flag di orientamento nei metadati
Exif. Come evidenzia il commento nello script,
Per scopi di sperimentazione, se non modificate il tag di rotazione, programmi
raccomando di utilizzare una come Eye di GNOME (il visualizzatore di default
directory temporanea con copie di di GNOME) verrà confuso e ruoterà l’immagine
poiché è abbastanza astuto da leggere i dati Exif e
alcune immagini
cercare di orientare al meglio l’immagine per una
------------------------------------ corretta visualizzazione.

Una delle cose che vi mostrerò è come creare uno Per ottenere la rotazione in senso antiorario, pote-
script di “autorotazione” che sfrutta i dati di orien- 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 find "$1" -iname "*\.jpg" \
-exec jhead -autorot {} \;
270. fi
Una volta salvato questo script, si può aprire una fi- shift
done
nestra terminale ed eseguirlo da riga di comando per
verificare che funzioni come previsto:
Per questo script, ho fatto in modo che possiate sele-
˜/.gnome2/nautilus-scripts/img/rotate-right.sh ˜/tmp/monkey.jpg zionare anche una directory, poiché è più probabile che
vogliate eseguirlo su intere directory. Ho notato che se
Un motivo per effettuare questa verifica è che quan- si clicca col tasto destro su una directory nel pannello
do si eseguono delle cose dal menu degli script di sinistro “ad albero” di Nautilus, non si ottiene il menu
Nautilus, non otterrete alcun feedback in caso di erro- degli script, ma è disponibile dal menu File → Scripts.
ri. Gli script falliscono semplicemente dietro le quin- Il menu degli script è anche disponibile se si effettua
te. Ad esempio, se i vostri script non sono eseguibili, un clic destro su una directory nel pannello destro di
sembrerà che uno script non abbia eseguito niente. Nautilus.
------------------------------------ Ecco cosa fa lo script:

Una delle cose che vi mostrerò è • Come negli script di rotazione “manuale”, pro-
come creare uno script di cessa in un ciclo tutti gli argomenti (file e/o
autorotazione che sfrutta i dati di directory) passati al programma.
orientamento di Exif • Se è un file (-f ), lo passa semplicemente a jhead
------------------------------------ -autorot.

• Se è una directory (-d), esegue il comando find


autorotate.sh su questa directory, alla ricerca di file .jpg (non
tenendo conto della grafia), e per ciascun file tro-
Il prossimo script è ancora migliore. Mi è capitato di vato, invoca jhead -autorot. jhead azzera il flag di
consumare un sacco di tempo in Windows Explorer a orientamento come parte di questa operazione.
setacciare una grossa directory di immagini thumbnail
per trovare quelle che erano state scattate verticalmen- Queste erano le principali caratteristiche che avevo
te e di multi-selezionarle per poterle ruotare. È un la- iniziato a cercare (beh, non avevo previsto di arriva-
voro noioso: non è sempre ovvio dal thumbnail qual è re a una “auto” rotazione!), ma dopo questi script ho
l’orientamento, e mentre si scorre la finestra si possono proseguito per vedere cos’altro potevano fare jhead e
accidentalmente sia deselezionare i file sia seleziona- jpegtran:
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 change-mod-date-to-exif.sh
file e utilizzare la funzionalità di “autorotate” di jhead #!/bin/bash
che ruoterà solo le immagini verticali. (Nella prati-
while [[ -n "$1" ]]; do
ca ho constatato che non è garantito al 100%, forse # se un file e non una directory
perché la fotocamera a volte non rileva correttamente if [[ -f "$1" ]]; then
jhead -ft "$1"
l’orientamento?). fi
shift
#!/bin/bash done

while [[ -n "$1" ]]; do


if [[ -f "$1" ]]; then Se si copiano i file direttamente da un lettore di sche-
jhead -autorot "$1"
elif [[ -d "$1" ]]; then
de USB (o da alcune fotocamere che vi permettono di
# iname -- case insensitive 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- simile a autorotate.sh. A questo punto si può anche
non), la data di modifica viene preservata per i file sul creare facilmente un nuovo script, change-date-and-
computer. Mi piace questa caratteristica poiché andrò rename-with-exif.sh, che invoca semplicemente gli al-
poi a utilizzare un programma Visual Basic che uti- tri due script in modo da poter modificare la data di
lizza le date di modifica per rinominare i file con un modifica del file e rinominarlo con un timestamp in un
timestamp. I miei file di immagini iniziano prevalen- solo passo.
temente con AAMMGG HHMMSS. È utile perché mantiene
le immagini in sequenza e le identifica in modo uni-
voco. (E vado anche oltre e aggiungo del testo identi- strip-exif.sh
ficativo al prefisso “data ora”). Quando ho provato a
importare questo programma in GNOME, ho scoper- E in ultimo, attenzione:
to con disappunto che aggiornava l’ora di modifica dei #!/bin/bash
file mentre li copiava sulla macchina desktop. Bene,
while [[ -n "$1" ]]; do
ora potete correggere ciò con lo script change-mod- # se un file e non una directory
date-to-exif.sh. Se l’orologio della vostra fotocamera è if [[ -f "$1" ]]; then
jhead -purejpg "$1"
impostato correttamente, probabilmente avrete la data fi
in cui ogni immagine è stata scattata memorizzata nei shift
done
dati Exif. Jhead ripristinerà l’ora di ultima modifica
del file in base alle informazioni Exif.
Ho messo questo script in una directory di nome atten-
------------------------------------ zione (sotto la directory nautilus-scripts/img) in modo
Se la vostra fotocamera memorizza da ridurre la possibilità di avviarlo accidentalmente.
Questo script elimina tutti i dati Exif da un’immagine,
nel file i dati di orientamento Exif
cosa che il più delle volte non si desidera fare. Utilizzo
potete selezionare tutti i file e questo script per alcune immagini che carico sul mio
utilizzare la funzionalità di sito (http://www.movingtofreedom.org/), in modo da
“autorotate” di jhead che ruoterà ridurre l’utilizzo della banda e il tempo di caricamento
della pagina. Ad esempio, monkey.jpg è di 51 KB con
solo le immagini verticali
i dati Exif, e di 44 KB senza. Non una grossa cosa per
------------------------------------
le immagini memorizzate sul proprio disco rigido, spe-
cialmente perché di solito le immagini odierne supera-
rename-with-exif-date.sh no 1 MB, ma può essere di aiuto nel caso improbabile
(per me!) di un post su slashdot o su digg.
Ancor meglio, quel vecchio programma VB può 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’è opera solo su file, ma può essere facilmen-
te modificato per operare anche su directory, in modo

48 Computer Programming n. 181 [None 2009]


Filtri audio ... con Gimp

Utilizzare Gimp come un ideale filtro audio digitale

Gianluca Pignalberi

imp viene universalmente utilizzato per

G la manipolazione di immagini. Tutta-


via, con un po’ di creatività e un paio di
trucchi, può anche essere utilizzato come
filtro audio! Ecco come. . .
Figura 1: Risposta di frequenza di un reale e di un ideale
filtro passa-basso

Filtri audio

Se avete familiarità 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. Più bassa è la misura, più
bassa è la frequenza. Un filtro è uno strumento che mi-
gliora una o più 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.
------------------------------------ ti di frequenza basse. Ad essere più precisi, “attenua”
Un reale filtro passa basso è queste frequenze più alte di una frequenza impostata
(frequenza di taglio). Come si vede nella Figura 1, il
qualcosa che riceve in input un filtro approssima il comportamento teorico.
segnale e emette in output le In questo articolo propongo un metodo in tre passi per
componenti di frequenza più basse ottenere un ideale filtro passa-basso per segnala audio.
------------------------------------ Gimp è lo strumento principale di questo metodo. Na-
turalmente, sto un po’ bluffando: devo utilizzare un
Mi concentrerò su un solo tipo di filtro: il fitro passa- programma che trasforma un file audio in una immagi-
basso. Un reale filtro passa-basso è qualcosa che rice- ne idonea. Poi, posso applicare un “filtro passa-basso”
ve in input un segnale e emette in output le componen- 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 utilizzerò Gimp per applicare un filtro passa-basso
Figura 2: Una schermata che mostra come utilizzare Arse per
grafico (ossia, un operatore blur). Ma siate pazienti:
eseguire l’analisi audio e la sintesi dello spettrogramma
tra poche righe svelerò 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”, è un tool a riga di
comando suddiviso in due parti principali: uno spettro-
grafo e un sintetizzatore a spettrogramma. Utilizzerò
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 restituirà
in output uno spettrogramma (ossia un’immagine,
buona da fornire in input a Gimp). Nel passaggio di • è a toni di grigio (i pixel neri rappresentano il
post-elaborazione, fornisco ad Arse lo spettrogramma silenzio);
filtrato, per ottenere in output un file audio.
• le righe rappresentano l’analisi di una banda di
------------------------------------ frequenze;
Sfortunatamente, la generazione • ciascuna colonna rappresenta 1 secondo del
dello spettrogramma di un segnale segnale.
e la successiva sintesi con Arse
non porteranno al segnale Nella Figura 2 si vedere the user interaction with Arse,
mentre nella Figura 3 è mostrato un segnale, l relativo
originale
spettrogramma e i grafici di sintesi.
------------------------------------
Arse è un progetto molto giovane, la versione corren-
te è la 0.1. Ha alcune maggiori limitazioni. L’au-
Sfortunatamente, la generazione dello spettrogramma
tore le descrive sul sito Web del progetto e nel fi-
di un segnale e la successiva sintesi con Arse non por-
le README allegato al programma, che fornisce
teranno al segnale originale. Ciò significa che il me-
ulteriori informazioni sull’utilizzo e sulle specifiche.
todo che propongo è in teoria perfetto, ma non si può
utilizzarlo effettivamente senza accettare qualche tra-
sformazione audio (ad esempio, un suono di basso che Il filtro passa-basso proposto
viene riprodotto come un suono di piano, o una vo-
ce umana riprodotta come voce sintetica). Comunqne, Una volta ottenuto lo spettrogramma, apritelo con
procediamo: un utilizzo intelligente di Arse vi darà ri- Gimp. Ricordate che la riga 0 dello spettrogramma
sultati abbastanza buoni. Non so se esista o meno un contiene le informazioni sulla frequenza più alta, e che
tool più efficiente e affidabile di Arse: se cosı̀ fosse, la riga n contiene quelle della frequenza più bassa.
utilizzatelo e verificate i risultati; e fatemelo sapere! Graficamente, il filtraggio passa-basso di un a “inter-
L’immagine che Arse genera ha le seguenti caratteri- vallo di frequenze” consiste nel colorare di nero le ri-
stiche: ghe di pixel tra 0 e x, dove x è la riga dove è 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. È tutto. Cosı̀ facendo, avrete soppresso le
frequenze più alte della frequenza di taglio, senza inci-
dere sulle altre frequenze: proprio ciò 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 verrà
fornito il corrispondente audio filtrato. Al momento il
solo motivo per cui la trasformazione non “funziona” è
per via del tool di post-elaborazione. Una volta che Ar-
se migliorerà, otterrete un opportuno filtro passa-basso
ideale.
RUBRICHE
Windows Thread e Posix Thread a confronto

Thread contro Thread


Danilo Treffiletti

l titolo è decisamente da cineteca a rievocare un famoso I thread POSIX

I 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.
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 entità migliora la gestione e rende più facile la lettura
Il Thread è una parte atomica di esecuzione di una elaborazio-
ne. Un processo, che rappresenta l’istanza in esecuzione di un di codice altrui. Inoltre è più facile verificare il codice in quanto
programma e che comprende oltre al codice del programma stes- sono necessarie funzioni diverse per attendere la terminazione di
so anche i dati che sta elaborando, può essere composto da più un Thread, lo sblocco di un Mutex o la segnalazione di un evento,
Thread che possono eseguire in modo autonomo e concorrente evitando dunque errori o confusione. Infine, i segnali persistenti
condividendo gli stessi dati e lavorando per ottenere lo scopo co- possono essere un peso per il programmatore che deve ricordarsi
mune dell’intero processo. I moderni sistemi operativi sono or- di resettare lo stato del segnale quando sa che potrebbe servire
mai multi-task da parecchio tempo: questo significa che è pos- per un blocco successivo, mentre i segnali POSIX vengono cat-
sibile eseguire processi diversi in parallelo (poi, in realtà questo turati dai Thread in ascolto oppure scartati, evitando di sbloccare
parallelismo può essere reale o virtuale a seconda dell’architettu- Thread che invece dovrebbero bloccarsi in attesa della prossima
ra hardware della macchina che esegue). Molti sistemi operativi, segnalazione.
però, sono anche multi-threading: permettono ad un processo di
dividersi in tante sottoparti autonome che lavorano in parallelo
per raggiungere il risultato.
Un confronto
Attualmente sono presenti due filosofie diverse di concepire i Th- Personalmente ho usato entrambi i tipi di Thread e devo dire che
read: la prima è quella di Microsoft con i Windows Thread, la mi trovo a condividere pienamente le argomentazioni a favore del-
seconda è quella nata dalla comunità *NIX con i POSIX Thread la versione POSIX. Il dover usare tre tipi di dato diverso non causa
detti anche PThread. nessun problema in quanto i tre oggetti sono concettualmente di-
Sul blog e sul forum di Intel sono presenti due articoli in cui si versi e dunque devono avere significato diverso anche all’interno
parla a favore di uno o dell’altro tipo di Thread. 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 più
facile e veloce il debug e la lettura di codice altrui. Infine l’imple-
I thread di Windows mentazione POSIX permette la portabilità del codice in quanto i
PThread sono nati per gli ambienti *NIX e Mac OS, ma è stato
L’articolo sul blog si esprime a favore dei Thread di Windows, creato un port per ambiente Windows che consiste in una DLL da
affermando che questi sono più comodi da usare in quanto è pre- linkare nel proprio progetto.
sente un solo tipo di dato per Thread, Mutex e segnali e dunque
si può usare una sola funzione per creare un blocco su un thread
che deve terminare, un mutex che è bloccato o un evento che deve Riferimenti
essere segnalato. Inoltre i segnali sono persistenti e permettono
dunque di essere rilevati anche con controlli effettuati dopo che 1. Why Windows Threads Are Better Than
l’evento sia stato segnalato. Infine è presente la funzione Wait- POSIX Threads di Clay Breshears (Intel)
ForMultipleObjects che permette di bloccare un Thread in attesa http://softwareblogs.intel.com/2006/10/19/why-windows-
che terminino una serie di Thread, vengano sbloccati una serie di threads-are-better-than-posix-threads/
Mutex e arrivi un segnale per una serie di eventi, il tutto invocan- 2. Why Pthreads are better than Win32
do una sola funzione. Tutto questo, secondo l’autore dell’articolo, threads di Clay Breshears (Intel)
porta ad una maggior eleganza di programmazione. http://softwarecommunity.intel.com/ISN/Community/en-
US/forums/post/840096.aspx

Computer Programming n. 181 [None 2009]


Le nuove riviste Infomedia RUBRICHE

Pensare – Progettare –
Programmare

ONTRIBUIRE alle nuove riviste è possibile in molti mostrare che l’informatica non è fatta solo dai grandi e potenti

C 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


nomi, dalle immense società 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 società piccole e specializzate o ai
singoli professionisti.
una nuova impronta gestionale. La ’Nuova Infomedia’ si
vuole configurare come una Impresa Sociale di Comunità,
partecipata da tutti coloro che hanno interesse nelle sue Le priorità
attività. Stiamo maturando un’importante esperienza nella costruzione di
• Stiamo raccogliendo tutte le linee guida che hanno permes- un modello veramente innovativo di open publishing.
so negli anni la pubblicazione di libri e riviste per condivi- L’area principale in cui cerchiamo la collaborazione dei nostri
dere queste competenze con tutti coloro che vorranno esse- lettori, degli autori che in questi anni ci hanno aiutato è quella
re coinvolti in questa impresa. Questo è un passaggio molto dei contenuti. Adesso che il processo di editing, composizione
importante perché renderà visibile e trasparente il processo e impaginazione è stato riorganizzato, arrivare ad avere un flusso
editoriale e permetterà il convolgimento di tutti coloro che costante di articoli di qualità è il nostro principale obiettivo.
vorranno contribuire anche solo in modo limitato e secondo Arrivare ad ottenere un flusso costante e volontario di articoli è
la propria disponibilità. Il nuovo processo editoriale per- quindi oggi la priorità più stringente. È un obiettivo allo stesso
mette a ciascuno, anche con minime competenze, di segui- tempo semplice, a verificare i numeri necessari e i collegamen-
re l’intero processo produttivo ed essere quindi partecipante ti che già abbiamo, ma reso complesso dalla volontà di assumere
attivo nella comunità. quel ruolo di riferimento che una iniziativa come questa deve ave-
• Abbiamo costruito un sistema (open source) che elimina i re. La possibilità che un nucleo limitato di autori bravi possano
fattori di intermediazione classici delle strutture redaziona- tenere in piedi questa iniziativa non è cosı̀ remota, al punto che a
li, è basato su strumenti classici dello sviluppo software e, ben vedere cosı̀ hanno funzionato le riviste in questi ultimi anni,
crediamo, innovativo e cool. e cosı̀ spesso funzionano altrove. Ma se l’obiettivo è la ’pluralità’
dell’espressione, la rappresentazione di quanto veramente avvie-
Contribuire è importante per far sentire la propria voce, per farsi ne nella piccola ma vitale comunità italiana dei programmatori,
conoscere e anche un po’ per ridistribuire un po’ di quello che ed eventualmente la rappresentazione delle migliori espressioni
dalla comunità dei programmatori ciascuno di noi prende ogni estere nel campo, la storia cambia moltissimo.
giorno. Il lavoro da fare si moltiplica, nella ricerca di contatti e di ma-
I suggerimenti che in questi mesi abbiamo avuto sono stati de- teriali che, per esempio già abbozzati in rete su blog o forum,
terminanti per determinare l’architettura organizzativa adeguata. potrebbero diventare ottimi ed interessanti articoli degni di que-
Dobbiamo adesso essere in grado di seguire con la necessaria sto nome. Il lavoro si moltiplica perchè un ’bravo informatico’, di
costanza una fase costruttiva ed operativa. quelli che oltre a conoscere la professione la sa comunicare in uno
È fondamentale proporre nuovi articoli basati sulle proprie espe- scritto adeguato fa spesso molta più fatica a seguire, indirizzare e
rienze, sulle tecniche più efficaci, sui trucchi che permettono di ri- correggere il lavoro altrui che non rifarlo daccapo da sé. Eppure
solvere problemi particolarmente oscuri, indicare percorsi e sem- questo è in sé stesso un impegno che consideriamo utile.
plicemente raccontare le proprie esperienze nella realizzazione di Il team che lavora dietro questo progetto è variegato e, attual-
programmi interessanti e significativi. I nostri lettori sono cer- mente, deve sopperire alla mancanza di tempo, innanzitutto, e di
tamente in grado di farlo, se solo il 5% di questi scrivesse un competenze specifiche su alcuni campi.
articolo o ci raccontasse le proprie esperienze di programmazio- In questo momento, come sa chi già ci segue sul Web, tutto l’e-
ne avremmo abbastanza materiale per riempire tutte le riviste per cosistema che è stato creato è (un po’ troppo) variegato, ma que-
due anni. sto è stato necessario per contemperare differenti esigenze e modi
Infomedia è la casa editrice dei programmatori e delle software di lavorare da parte di chi ha offerto la propria attività in modo
house italiane. Di quelli che ancora credono e combattono per volontario pur di far andare avanti questa storia.

54 Computer Programming n. 181 [None 2009]


RUBRICHE

I servizi che ci sono (e che mancano) • La crew web: Si occupa dell’evoluzione degli stru-
menti web dell’associazione per le realizzazioni edi-
Come sempre accade nelle comunità di sviluppatori, i servizi che toriali e per la gestione associativa (non assegnato
sono attivati prima, meglio presidiati, sono quelli che servono per info@programmers.net)
le realizzazioni pratiche.
Il sito http://the.programmers.net rappresenta attualmente solo
L’email (a cui non rispondiamo)
una piccola vetrina delle attività che si stanno realizzando e al-
cune informazioni circa l’iscrizione, le attività, la rete sociale e, Per mettersi in contatto con i team che stanno lavorando alla rea-
ovviamente, le riviste. Siamo alla ricerca di un webmaster. lizzazione delle riviste non è attualmente molto semplice. Siamo
Gli strumenti online che sono stati per ora attivati (trac, SVN, pochi e i task della produzione hanno certamente la priorità.
wiki) sono ad uso esclusivo della redazione e sono gestiti in Non trascuriamo nessuna email, semplicemente spesso non c’è
autonomia con la minima formalità. una risposta alle vostre domande, o ci sarà nel momento in cui
sarà opportuno.
Trac: http://trac.xed.it
Wiki: http://wiki.infomedia.it
Attualmente però nessuno gestisce il flusso delle richieste (più
che legittime) degli abbonati. Ci impedirebbe di concentrarci sul-
le già complesse attività di ’ricostruzione’. Tutte le mail finora
Questi servizi avrebbero ciascuno bisogno di un amministratore
utilizzate dalle redazioni Infomedia (insieme ad una spaventosa
dedicato ed esperto. Il lavoro da fare è poco, infinitesimale: ma è
quantità di spam, messaggi commerciali e promozionali, che nep-
l’insieme di questi infinitesimi che riempie tutti gli interstizi del
pure gli antispam più efficaci abbattono più di tanto) sono ruotate
nostro tempo libero fino a tarda notte, quindi AIUTO!. È possibile
alla vecchia società, i quali ci inoltrano solo i messaggi che riten-
proporre la propria candidatura usando i moduli che sono online
gono effettivamente interessanti. Abbiamo intenzione di arrivare
sul sito the.programmers.net nella sezione Riviste/Moduli.
ad affrontare anche questi problemi, ma fare tutto contempora-
neamente non era pensabile. Rimanete sintonizzai, frequentate i
Il nuovo sito (che c’è) siti web ed in particolare:
Il sistema online che ha accompagnato la pubblicazione del-
Blog: http://blog.infomedia.it
le riviste sul web della vecchia società, ancora disponibile su
www.gruppoinfomedia.it è stato sostituito dalla semplice ap-
plicazione di una nuova piattaforma di publishing basata su Il sistema d’impaginazione
Drupal e iScribd.
Il nuovo sistema d’impaginazione è disponibile liberamente su
Internet. È possibile scaricarlo e provarlo da:
Sito: http://www.infomedia.it

https://www.assembla.com/spaces/turing/
Il Forum (che non c’è)

Sarebbe invece interessante, per ciò che riguarda la costruzione Ovviamente non è né immediato né user friendly, per ora, ma
dei nuovi servizi e dei nuovi strumenti, l’apertura di un forum avendo un po’ di conoscenze degli strumenti di sviluppo open
online. Le nostre attuali forze ce lo impediscono, ma se qualcuno source (tra cui SVN, python, bash, make, emacs) e un po’ di di-
dei lettori volesse candidarsi all’amministrazione e alla gestione, mestichezza con il TEX si riesce ad averne ragione. Ovviamente
saremo ben felici di aprire anche questo importante servizio. ogni contribuzione è ben accetta.
I coordinatori dei forum dovranno provvedere all’installazione,
all’amministrazione e all’upgrade dei sistemi, nonchè ad un mini-
mo di moderazione dei contenuti inappropriati. Per le candidature
Conclusioni
è possibile usare i moduli online sul sito.
Infomedia realizza le rivista dei programmatori italiani di talento,
che sanno trovare soluzioni geniali che non sempre sono adegua-
I team (che ci sono) tamente conosciute, e che spesso sono obbligati a trovare la pro-
pria strada al di fuori del panorama italiano, ma non per questo
Sono tre i team che stanno lavorando:
saranno da noi dimenticati. È importante per noi mantenere unita
• La crew editoriale: Si occupa dell’evoluzione dello spa- la nostra comunità indipendentemente dalle distanze geografiche.
zio editoriale ed in particolare della redazione delle riviste Infomedia è tutto questo, ma può esserlo solo se tu ci metterai del
(Michele Monti michele.monti@infomedia.it). tuo.
È proprio il caso di dire che in questo momento non dovreste
• La crew software: Si occupa dell’evoluzione del soft-
chiedervi cosa Infomedia può fare per voi, ma cosa potete fare
ware di gestione dell’associazione per le realizzazioni
voi per Infomedia.
editoriali e per la gestione associativa (Adriano Peluso
catonano@programmers.net)

Computer Programming n. 181 [None 2009] 55


RUBRICHE
Hanno collaborato a questo
numero...

Lorenzo Dal Col Infomedia, e dell’impaginazione della stessa. È attualmen-


te il direttore di ArsTEXnica, rivista italiana di TEX, LATEX e
nato a Vittorio Veneto nel 1985 laurea a pieni voti in Ingegne-
tipografia digitale. Usa software libero per tutto quello che
ria Informatica all’Università di Trieste, studia per la laurea
può, e cerca di soddisfare la sua passione per la scrittura
specialistica. Da 5 anni si occupa di sviluppo di applica-
contribuendo a riviste di settore.
zioni Web server con PHP, Java, .NET, MySQL, Postgre-
SQL e lato client con Javascript, AJAX.Ha sviluppato un Sito http://www.freesoftwaremagazine.com/contacts/g.pignalberi
robot mobile a comando vocale Linux real-time e Micro-
soft Windows Server. Si interessa di grafica digitale e web Gianluigi Spagnuolo
design.
ingegnere informatico si occupa di sicurezza e programmazio-
Mail lorenzo.dalcol@gmail.com
Sito www.lordalcol.com
ne (Ruby e C#). Si interessa di sistemi operativi UNIX, di
compilatori e PLT in generale e partecipa allo sviluppo di
Danilo Treffiletti (Urban) numerosi progetti open source.
Mail kirash@infomedia.it
nato nel 1982. Da sempre interessato al mondo dell’informatica Sito http://krsh.info
e delle nuove tecnologie. Ha frequentato l’I.T.I. e successi-
vamente la facoltà di Ingegneria Informatica dell’Università Emmanuele Somma
di Catania, in cui si laureato nel 2008. stato presente sul
web fin dal 1998 con diversi siti di carattere amatoriale e programmatore, ingegnere informatico e scrittore, è da anni uno
divulgativo. Nel ottobre del 2006 collabora alla fondazione dei principali animatori della scena del software libero in
del blog di divulgazione informatica StormedBrains. Italia. Sia ricorda trafficasse con le prime bbs amatoriali già
nel ’86, si dice abbia venduto il primo programma GPL in
Blog http://urbands.net/stormedbrains Italia già nel ’94, ha fondato e diretto Linux Magazine nel
’99. Oggi lavora per un autorità finanziaria in cui suppor-
Gary Richmond ta e sviluppa applicazioni scientifico-econometriche con il
sotware libero, ma non solo.
è un aspirante esperto della rete con alle spalle una laurea e una
Mail exedre@programmers.net
specializzazione in Inglese del diciassettesimo secolo, ven- Sito http://www.exedre.org
ticinque anni di attività in un ente pubblico e di recente si è Blog http://exedre.xed.it

semi-pensionato per godersi i suoi illeciti guadagni.


ed inoltre. . .

Un ringraziamento particolare va anche a: Adriano Peluso,


Scott Carpenter Andrea De Carolis, Daniela Della Porta, Dino Meoni, Dona-
ha frequentato il movimento free software sin dal 1998 e nel to Marcello Sabato, Francesco Pallanti, Gianluigi Coccia, Lu-
2006 ha iniziato a impegnarsi in modo più attivo (Mo- ciano Talarico, Maria Letizia Mari, Natale Fino, Noemi Somma,
ving to freedom). Lavora come sviluppatore/analista soft- Roberto Galoppini.
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 è occupato di va-
rie cose, tra cui la programmazione della classe TEX per
comporre Free Software Magazine, da cui deriva quella di

56 Computer Programming n. 181 [None 2009]


FIRENZE, 6 E 7 MAGGIO 2009

Sconto del 20%


registrandoti online
con il codice
promozionale
Better Software è la prima conferenza Italiana BM3V2D9G
dedicata allo sviluppo di software e rivolta a
imprenditori e manager del settore.

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