Computer Programming n. 181 - Geografia Computazionale

58

description

Geografia Computazionale

Transcript of Computer Programming n. 181 - Geografia Computazionale

Page 1: Computer Programming n. 181 - Geografia Computazionale
Page 2: Computer Programming n. 181 - Geografia Computazionale
Page 3: Computer Programming n. 181 - Geografia Computazionale

EDITORIALE

L’inizio di una nuova avventuraNoi abbiamo deciso di ricominciare. Aiuto!

Non cambierai mai le cose combattendo la realta esistente. Per cambiarequalcosa, costruisci un modello nuovo che renda la realta obsoleta.R. Buckminster Fuller

COMPUTER PROGRAMMING e la rivista di programmazione che da quasi venti anniha raccolto la voce dei programmatori, dei sistemisti, dei professionisti, degli studenti,dei ricercatori e dei professori d’informatica italiani.Sono piu di 800 gli autori che hanno realizzato per le testate Computer Programming,Dev, Login, Visual Basic Journal e Java Journal, molte migliaia di articoli tecnici, pre-sentazioni prodotti, tecnologie, protocolli, strumenti di lavoro, tecniche di sviluppoe semplici trucchi e trabocchetti. Oltre 6 milioni di copie distribuite trentamila pa-gine stampate fanno di questa impresa la piu grande ed influente realta dell’editoriaspecializzata nel campo della programmazione e della sistemistica.In tutti questi anni le riviste hanno vissuto della passione di tanti, come te, che vedo-no nella programmazione non solo una professione ma una passione vitale e un verodivertimento.Mettere in condivisione le soluzioni adottate nello sviluppo di un programma, riper-correndone le tappe e un ottimo modo per documentare al meglio il proprio lavoro,fissare i concetti e verificare la qualita delle proprie realizzazioni. E uno splendido mo-do per dare agli altri la possibilita di impare nuove tecniche e progredire nelle propriecompetenze e per rendere il nostro ambiente piu vitale, competitivo ed attivo.La programmazione o la soluzione dei problemi sistemistici ci da molta gioia, perche enecessario superare i limiti della nostra conoscenza. A volte abbiamo la sensazione chequesto piacere non e possibile da comunicare. Questo e il luogo giusto per farlo. I tuoi“pari” sono interessati a queste soluzioni, ai passi che hai compiuto per raggiungere unrisultato e perche no, agli errori che commesso nei tuoi tentativi.L’informatica e un ambito professionale unico, in cui le spinte competitive sono semprestate forti, ma altrettanto forti ed importanti e stata la tensione a cooperare. La condi-visione delle informazioni e la diffusione delle conoscenze sono l’anima costitutiva diquesta Comunita.Le nuove Computer Programming, Dev e Login vogliono incentivare questi aspetti peressere ancora di piu al centro di questa Comunita. Aiutateci. Perche senza queste rivisteprogrammatori e sistemisti italiani rimarrebbero senza voce.Chiunque tu sia, quindi, quale che sia la tua storia, i tuoi strumenti di lavoro, il tuolinguaggio di programmazione, la tua piattaforma o framework, il tuo sito o il tuoprogramma. . . contribuisci a questa Storia per permetterci di andare avanti.

Computer Programming e unarivista realizzata daInfomedia Editori Coop.e Ass. Turing ClubDirezione e Amministrazione:Via Iannacchini, 28 - AvellinoIn attesa di registrazione presso ilTribunale di Avellino(richiesta del 4/3/2009)

D RA. Somma

M EG. Spagnuolo ([email protected])

M. Monti ([email protected])

L CXED.it ([email protected])

GRedsign

(www.redsign.it

[email protected])

A

S. CarpenterL. Dal Col

G. PignalberiG. Richmond

E. SommaD. Treffiletti

L’ 100% O S OO,E, BHL, LATEX, G, I L,P BASH

For copyright information about the contents of Compu-ter Programming, please see the section “Copyright” atthe end of each article if exists, otherwise ask authors.Infomedia contents is © 2009 Infomedia and released asCreative Commons 2.5 BY-NC-ND. Turing Club contentis © 2009 Turing Club released as Creative Commons2.5 BY-ND.

Le informazioni di copyright sul contenuto di ComputerProgramming sono riportate nella sezione “Copyright”alla fine di ciascun articolo o vanno richieste direttamen-te agli autori. Il contenuto Infomedia e© 2009 Infomediae rilasciato con Licenza Creative Commons 2.5 BY-NC-ND. Il contenuto Turing Club e © 2009 Turing Club erilasciato con Licenza Creative Commons 2.5 BY-ND. Siapplicano tutte le norme di tutela dei marchi e dei segnidistintivi.

E in ogni caso ammessa la riproduzione parziale o to-tale dei testi e delle immagini per scopo didattico pur-che vengano integralmente citati gli autori e la completaidentificazione della testata.

Manoscritti e foto originali, anche se non pubblicati, nonsi restituiscono.

Contenuto pubblicitario inferiore al 45%.

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

$Rev: 45 $

Computer Programming [None 2009]

Page 4: Computer Programming n. 181 - Geografia Computazionale

Indice Numero , None 2009

EDITORIALE

L’inizio di una nuova avventura 3

GEOGRAFIA COMPUTAZIONALE

Trasformare le coordinate geo-grafiche da WGS84 a UTM 6Lorenzo Dal Col, Emmanuele SommaLa cartografia si occupa di rappresentare la superficieterrestre sul piano secondo norme e segni convenzio-nali. La rappresentazione della superficie fisica ter-restre e un’operazione complessa poiche la superficieda rappresentare non e piana, il terreno ha una formamolto irregolare e le dimensioni dell’oggetto da rap-presentare eccedono le normali capacita di misura del-l’uomo. Quest’articolo fornira una breve introdurra al-la teoria matematica delle trasformazioni geografichepiu comuni e se ne mostrera una veloce implementa-zione in linguaggio SQL da usare come stored proce-dure in MySQL. Si vedra inoltre anche come utilizzareil noto pacchetto PROJ per realizzare le trasformazionigeografiche.

Trasformazione di coordinategeografiche in Javascript 14Lorenzo Dal ColIn numerose applicazioni e necessario risolvere ilproblema della trasformazione delle coordinate geo-grafiche tra sistemi di riferimento differenti. In questoarticolo verra illustrato un applicativo che effettua latrasformazione delle coordinate del sistema WGS84a quelle UTM. L’obiettivo e di fornire una proceduradi trasformazione che possa funzionare anche condati acquisiti in tempo reale, senza la necessita dieseguire post-elaborazioni; e stato inoltre scelto illinguaggio Javascript in modo che possa funzionare inun qualsiasi browser web che supporti lo scripting ein un qualsiasi sistema operativo, anche quello deglismart-phone, che sempre piu spesso integrano unricevitore GPS.

USER SPACE

Konqueror: tutto da una interfac-cia 22Gary RichmondSuggerimenti, trucchi e funzionalita per sfruttare almassimo le caratteristiche di Konqueror. Si vedra co-me migliorarne le prestazioni, utilizzarlo al meglio co-me file manager e come browser e aggiungere nuovefunzionalita attraverso i Service Menu.

4 Computer Programming n. 181 [None 2009]

Page 5: Computer Programming n. 181 - Geografia Computazionale

Indice

PROGRAMMING

Estensioni Google in Firefox 32Gary RichmondQuesto articolo illustrera come far interagire Firefoxcon i servizi offerti da Google attraverso con GmailNotifier, Better Gmail, FireGPG, Get Things Done,Better GCal, Remember The Milk, GSpace, FEBE,Cleo, Zotero, Customize Google...

Estendere Nautilus: (fotocameree) rotazione di immagini JPG 43Scott CarpenterPartendo dall’esigenza di ruotare un’immagine diret-tamente da Nautilus si vedra come come personaliz-zare il menu popup per adattarlo alle proprie esigenzesfruttando la potenza di bash.

Filtri audio ... con Gimp 48Gianluca PignalberiGimp viene universalmente utilizzato per la manipola-zione di immagini. Tuttavia, con un po’ di creativitae un paio di trucchi, puo anche essere utilizzato comefiltro audio! Ecco come...

RUBRICHE

Thread contro Thread 52Danilo TreffilettiWindows Thread e Posix Thread a confronto...

Pensare – Progettare – Program-mare 53

Hanno collaborato a questo nu-mero... 55

Photo Credit:Mappa dell’Europa di Mercatore

Gerhard Mercator nacque nel 1512 nelle Fiandre. Ebbe una formazione classica: latino,greco, logica, grammatica e retorica.Pubblico una mappa della Terra Santa, un piccola mappa del globo terrestre, una map-pa delle Fiandre e un libro sulla grafia corsiva. Fu infatti il primo a usare sulle mappegeografiche il carattere corsivo italic.Per questa attivita cartografica Mercator fu perseguitato dalle autorita religiose cattoliche,accusato di eresia e incarcerato per circa sette mesi. Solo le proteste dell’Universita glipermisero di essere scagionato dalle accuse. Fu pero poi perseguitato dall’Inquisizionepoiche protestante e dovette trasferırsi a Duisburg in cui all’epoca il duca Guglielmo ilRicco era riuscito a mantenere indipendente tra le le confessioni e vi aveva creato unsignificativo circolo di intellettuali.Lı insegno liberamente geometria, matematica e cosmologia presso il ginnasio, e nel 1563venne nominato cartografo ducale.Mercator morı dopo aver raggiunto una invidiabile posizione economica a Duisburg. Lasua tomba e situata nella Chiesa del Salvatore di Duisburg (Salvatorkirche).

Image Credit: WikiMedia

Computer Programming n. 181 [None 2009] 5

Page 6: Computer Programming n. 181 - Geografia Computazionale
Page 7: Computer Programming n. 181 - Geografia Computazionale

Trasformare le coordinategeografiche da WGS84 a UTM

Le formule di Molodenskij e Gauss rese semplici

Lorenzo Dal Col, Emmanuele Somma

L a cartografia si occupa di rappresentare lasuperficie terrestre sul piano secondo nor-me e segni convenzionali. La rappresenta-zione della superficie fisica terrestre e un’o-

perazione complessa poiche la superficie da rappresen-tare non e piana, il terreno ha una forma molto irre-golare e le dimensioni dell’oggetto da rappresentareeccedono le normali capacita di misura dell’uomo.Quest’articolo fornira una breve introdurra alla teoriamatematica delle trasformazioni geografiche piu co-muni e se ne mostrera una veloce implementazionein linguaggio SQL da usare come stored procedurein MySQL. Si vedra inoltre anche come utilizzare ilnoto pacchetto PROJ per realizzare le trasformazionigeografiche.

Le trasformazioni

Per realizzare una trasformazione corretta e necessarioche a ciascun punto del terreno sia associato univoca-mente un punto sulla superficie di riferimento (mappa)in modo che:

• la sua trasformazione inversa dia un punto ’vici-no’ a quello alla superficie terrestre (con un erroreaccettabile)

• la sua rappresentazione matematica sia semplice

• si possa stabilire una corrispondenza biunivocafra i suoi punti e quelli della superficie terrestre

• si possa istituire sulla mappa una geometria pereseguire 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 unarappresentazione piana bidimensionale.

Proiezione sulla superficie di riferimento

Questo primo passaggio consiste nel far coincidere unpunto della superficie terrestre con uno preso su unasuperficie di riferimento tramite una proiezione verti-cale. La superficie di riferimento ideale e detta “geoi-de”, che e la superficie equipotenziale del campo gra-vitazionale terrestre. Il geoide approssima abbastanzabene la superficie terrestre, ma poiche non possiamoconoscere il valore della gravita terrestre in ogni puntodella Terra non e esprimibile con formule analitiche.Per ovviare a questo problema solitamente si adotta co-me superficie di riferimento un ellissoide di rotazione,che si descrive facilmente con formule analitiche.Attraverso calcoli astronomici sono stati definiti di-versi ellissoidi di riferimento, nel 1924 furono adot-tati universalmente quali parametri dell’ellissoide diriferimento i valori proposti da Hayford. L’ellissoidecosı dimensionato e da allora indicato come “ellissoideinternazionale”.Poiche l’ellissoide di riferimento si discosta rispetto algeoide deve essere ruotato e centrato il piu vicino pos-

Computer Programming n. 181 [None 2009] 7

Page 8: Computer Programming n. 181 - Geografia Computazionale

GEOGRAFIA COMPUTAZIONALE

Figura 1: Rapporto tra la superfice terrestre, l’ellissoide e la geoide

sibile alla zona terrestre che vogliamo mappare (pun-to di emanazione), in modo da ridurre al minimo ladistanza tra i due.

Rappresentazione bidimensionale

Per passare dalla rappresentazione su supporto cur-vo ad una rappresentazione piana si ricorre ad unarappresentazione cartografica, stabilendo per ciascunpunto una corrispondenza biunivoca fra le coordinatecurvilinee e le coordinate cartesiane ortogonali.La rappresentazione piana che si ottiene e deformatarispetto quella disegnata sul supporto curvo.Ad esempio, la Proiezione universale trasversa di Mer-catore (UTM) o conforme di Gauss e una proiezio-ne pseudocilindrica assimilabile alla cilindrica inversa,ma le sue equazioni della carta sono state costruite inmodo da ottenere l’isogonicita.

I sistemi di riferimento geodetici

I sistemi di riferimento sono basati su coordinate perdescrivere in modo matematico una posizione geogra-fica. Si tratta di modelli geometrici basati su ellissoidi

di rotazione utilizzati per descrivere la forma della Ter-ra e ogni posizione sulla sua superficie. Ciascun siste-ma e identificato dal suo DATUM che identifica la for-ma, la posizione e l’orientamento del modello rispettoalla Terra e alla sua superficie.

Quando si esprime una posizione geografica in oriz-zontale tramite coordinate oppure in verticale con l’al-tezza, e necessario sempre associare il valore espressoal DATUM di riferimento. Infatti esistono diversi si-stemi di riferimento geodetico ed il datum e l’unicomodo univoco per indicare quello prescelto.

I vari sistemi di riferimento geodetico differiscono traloro per la definizione dell’ellissoide di rotazione (laforma geometrica usata per approssimare la forma del-la Terra). Ad esempio il datum WGS72 definisce unellissoide con semiasse maggiore di 6.378.135 metri eschiacciamento ai poli di 1/298.26, mentre per WGS84i valori sono 6,378,137 e 1/298.257223563 rispettiva-mente. Nel DATUM si indica anche l’orientamento el’origine delle coordinate.

La conversione delle coordinate di un punto da un si-stema di riferimento ad un altro non e operazione sem-plice, si puo generalmente usare la corposa ed efficacelibreria Proj per questo scopo.

8 Computer Programming n. 181 [None 2009]

Page 9: Computer Programming n. 181 - Geografia Computazionale

GEOGRAFIA COMPUTAZIONALE

Figura 2: Proiezione universale trasversa di Mercatore(UTM) o conforme di Gauss.

Talvolta pero e necessario programmare direttamentequeste trasformazioni e cio e tutt’altro che comples-so, come si vedra in seguito. Ma prima e necessarioconoscere alcuni sistemi di riferimento standard. Inparticolare:

WGS84 World Geodetic System 1984

UTM Universal Transverse Mercator

ITA40 Roma Monte Mario o Gauss-Boaga

WGS84 – World Geodetic System 1984

E il sistema di riferimento utilizzato nel posiziona-mento con la tcnologia GPS. E’ espresso tramite lecoordinate geodetiche X,Y,Z, riferite all’ellissoide dirotazione geocentrico:

• l’asse Z e diretto verso la posizione del polomedio definito nel 1984

• l’asse X e definito dall’intersezione del pianoequatoriale medio nel 1984 con il meridiano diGreenwich

• l’asse Y e definito in modo tale da completare laterna destrorsa

UTM – Universal Transverse Mercator

E la cartografia piu diffusa al mondo, nota anche comeGauss-Boaga. Questa proiezione e approssimata note-volmente dalla cilindrica trasversa inversa. Questo tipodi cartografia e conforme. Le trasformate del meridia-no centrale (di tangenza) e dell’Equatore sono rette erappresentano gli assi del sistema di riferimento (N eE). Poiche piu ci si allontana dal meridiano centralepiu il modulo di deformazione lineare sale, nel siste-ma UTM l’ampiezza di un fuso e di 6 gradi, il sistemarisulta essere quindi policilindrico. Ogni fuso ha unsistema N,E indipendente. Viene inoltre applicato allecoordinate un coefficiente di contrazione di 0,9996 perridurre le deformazioni. Infine all’origine delle ascis-se viene applicata una falsa origine di 500000 m, perevitare valori negativi di E. Il riferimento geodetico ebasato sull’ellissoide internazionale con orientamentoeuropeo (ED50), cioe orientato a Postdam.

ITA40 – Roma Monte Mario o Gauss-Boaga

La proiezione cartografica Gauss-Boaga e stata adotta-ta quasi interamente dalla cartografia ufficiale italianadal 1940. E’ stata proposta dal prof. Giovanni Boagaquando era a capo dell’Istituto Geografico Militare, eutilizza il sistema di riferimento Roma40, con ellissoi-de orientato a Roma Monte Mario. La Carta d’Italiadell’IGM in scala 1:25.000 (serie 25V), e stata redattain coordinate Gauss-Boaga, poi abbandonate in favo-re della Proiezione Universale Trasversa di Mercatore(UTM).

Le formule di trasformazione

La trasformazione delle coordinate avviene in due pas-si. La prima funzione converte le coordinate ellissoidi-che WGS84 in coordinate ellissoidiche ED50 usandole formule di Molodenskij; la seconda converte le coor-dinate ellissoidiche ED50 in coordinate piane UTMusando le formule di Gauss adatte a questo scopo.

Le formule di Molodenskij

Le formule di Molodenskij complete a partire dal-le coordinate ellissoidiche WGS84 ϕ, λ e h sono leseguenti:

Computer Programming n. 181 [None 2009] 9

Page 10: Computer Programming n. 181 - Geografia Computazionale

GEOGRAFIA COMPUTAZIONALE

ρ =a(1− e2)√

(1− e2 sinϕ2)3

dove ρ e il raggio di curvatura del meridiano, a eil semiasse equatoriale dell’ellissoide WGS84, e2 el’eccentricita dell’ellissoide WGS84

NG =a(1− e2)√1− e2 sinϕ2

dove NG e la Gran Normale

dϕ =sinϕcosλρ+h

x0+sinϕsinλρ+h

y0+cosϕρ+h

z0+

a2/NG +hρ+h

(sinλ)Ex+a2/NG +hρ+h

(cosλ)Ey+

(1− (1−α)2)NG

ρ+hcosϕsinϕ (K +da/a)−

ρ+ (1−α)2NG

ρ+hcosϕsinϕ (dα/α)

in cui da e la differenza tra semiasse maggiore WGS84e ED50 e dα e la differenza tra schiacciamento WGS84e ED50, x0,y0,z0 sono le traslazioni fra i centri del si-stema WGS84 e ED50 ed infine Ex,Ey,Ez sono le ro-tazioni attorno agli assi dell’ellissoide ED50 mentre Ke il fattore di scala.

dλ =sinλ

(NG +h)cosϕx0+

cosλ(NG +h)cosϕ

y0−

(1−α)2NG +hNG +h

(tanϕcosλ)Ex−

(1−α)2NG +hNG +h

(tanϕsinλ)Ey+Ez

dh = cosϕcosλx0− cosϕsinλy0− sinϕz0−

(1− (1−α)2)NG(cosϕsinϕsinλ)Ex−

(1− (1−α)2)NG(cosϕsinϕcosλ)Ey−(a2

NG+h

)K +

aNG

da−

(1−α)2NG(sinϕ)2 dα1−α

Figura 3: Mikhail Sergeevich Molodenksy (1909 - 1991)

Sebbene queste formule sembrino molto complesse laloro scrittura con un qualsiasi linguaggio di program-mazione e semplice e diretta, ad esempio nel Listato1 e riportato l’inizio del sorgente di una stored proce-dure SQL per il database MySQL che realizza questatrasformazione.In particolare dopo la dichiarazione della funzione e ladefinizione dei tipi:

CREATE PROCEDURE ‘MOLODENSKIJ‘(PHI DOUBLE,

LAMBDA DOUBLE,

H DOUBLE,

A DOUBLE, e DOUBLE,

OUT D_PHI DOUBLE,

OUT D_LAMBDA DOUBLE,

OUT D_H DOUBLE )

BEGIN

DECLARE RHO DOUBLE DEFAULT 0.0;

DECLARE N_G DOUBLE DEFAULT 0.0;

sono scritte le formule relative alle variabili RHO e N G

10 Computer Programming n. 181 [None 2009]

Page 11: Computer Programming n. 181 - Geografia Computazionale

GEOGRAFIA COMPUTAZIONALE

Nome Anno Semiasse maggiore Semiasse minore SchiacciamentoWGS 84 1984 6378137 6356752,3142449996 1/298,257WGS 72 1972 6378135 6356750,5199149996 1/298,258Hayford 1909 6378388 6356911 1/297,0Elliss. Internaz. 1924 1924 6378388 6356911 1/297,0Bessel 1841 6377397 6356078 1/299,1Clarke 1880 1880 6378249 6356514 1/293,5Clarke 1866 1866 6378206 6356583 1/294,9Everest 1830 6377301 6356100 1/300,8Airy 1830 6377563 6356256 1/299,3Krassovsky 1940 6378245 6356863 1/298,3South American 1969 6378160 6356774 1/298,3

Tabella 1: Principali ellissoidi di riferimento

# RHO - Raggio di curvatura del meridiano

SET RHO = (A * (1- eˆ2)) /

( SQRT( 1- eˆ2 * SIN(PHI)ˆ2)ˆ3 );

# N_G - Gran Normale

SET N_G = (A * (1- eˆ2)) /

SQRT( 1- eˆ2 * SIN(PHI)ˆ2) ;

ed infine le formule delle coordinate trasformate:

SET D_PHI = SIN(PHI) * COS(LAMBDA) * x_0 /

(RHO + H) +

SIN(PHI) * COS(LAMBDA) * y_0 /

(RHO + H) +

COS(PHI) * z_0 /

( RHO + H ) +

(Aˆ2 / N_G + H ) /

(RHO + H) * SIN(LAMBDA) * E_x +

(Aˆ2 / N_G + H ) /

(RHO + H) * COS(LAMBDA) * E_y +

(1 - (1 - ALFA)ˆ2 ) * N_G /

(RHO + H) * COS(PHI) * SIN(PHI) ( K + D_a / A ) +

(RHO -+ (1 - ALFA)ˆ2 ) * N_G /

(RHO + H) * COS(PHI) * SIN(PHI) ( D_a / ALFA )

Come si puo vedere l’introduzione di queste formule,anche in un sistema con limitate capacita di program-mazione non comporta particolari problemi essendola formula chiusa e basata su funzioni matematicheelementari.I parametri adottati nei calcoli sono delle formule diMolodenskij :

a 6378388.297e2 0.00669438

x0,y0,z0 (0,0,0)Ex,Ey,Ez (0,0,0)

K 0da 251.297dα 1.257222101

Le formule di Gauss

Una volta ottenute le coordinate ellissoidiche nel siste-ma ED50 e necessario trasformarle nel sistema pianoattraverso le formule di Gauss. Nelle formule seguentisi cercheranno i punti X e Y avendo come parametri diinput le coordinate ellissoidiche ED50 (qui rinominateper semplicita ϕ, λ e h piuttosto che le dϕ, dλ e dh ot-tenute dal passaggio precedente) e come costanti i pa-rametri a che misura il semiasse dell’ellissoide ED50questa volta e e2 l’eccentricita dell’ellissoide ED50.La prima delle equazioni di Gauss e:

Y = g(ϕ,λ) =acosϕ√

1− e2 sinϕ2λ+

16

acos(ϕ)3√1− e2 sinϕ2

(1−

tan(ϕ)2+( e2√

1− e2

)2cos(ϕ)2

)λ3+

1120

acos(ϕ)5√1− e2 sinϕ2

(5−

18tan(ϕ)2+ tan(ϕ)4+( e2√

1− e2

)2(14cos(ϕ)2−58cos(ϕ)2 tan(ϕ)2

)]λ5

Anche in questo caso l’introduzione della funzione al-l’interno del sistema programmato non comporta par-ticolari complessita. La formula e lunga e abbastan-za arzigogolata, ma facilmente esprimibile utilizzan-do funzioni matematiche e trigonometriche elementarialla portata di qualsiasi linguaggio.

Computer Programming n. 181 [None 2009] 11

Page 12: Computer Programming n. 181 - Geografia Computazionale

GEOGRAFIA COMPUTAZIONALE

La seconda equazione di Gauss e:

X = f (ϕ,λ) =∫ ϕ

0

a(1− e2)√(1− e2 sin t2)3

dt+

12

sinϕcosϕ√1− e2 sinϕ2

+1

24sinϕcos(ϕ)3√

1− e2 sinϕ2·

·[5− tan(ϕ)2+

( e2√

1− e2

)2(9cos(ϕ)2+4cos(ϕ)4

)]λ4+

1720

sinϕcos(ϕ)5√1− e2 sinϕ2

·

·[61−58tan(ϕ)2+ tan(ϕ)4+( e2

√1− e2

)2(270cos(ϕ)2−330cos(ϕ)2 tan(ϕ)2

)]λ6

In questo caso l’equazione comporta qualche comples-sita in piu a causa della presenza dell’integrale definitoal primo termine della formula.In questo caso e necessario programmare un semplicealgoritmo per l’integrazione numerica della formula,ad esempio quello basato sul metodo dei trapezi.Il programma in SQL per la soluzione dell’integrale e:CREATE FUNCTION( IBEGIN DOUBLE, IEND DOUBLE,

PARTS INTEGER)

RETURNS DOUBLE

BEGIN

DECLARE STEP DOUBLE DEFAULT 0.0 ;

DECLARE RESULT DOUBLE ;

DECLARE P DOUBLE ;

DECLARE C INTEGER DEFAULT 1 ;

DECLARE TMP1 DOUBLE DEFAULT 0.0 ;

SET P = BEGIN;

SET STEP = (IEND - IBEGIN) / PARTS;

SET TMP1 = A_FACTOR(P) / 2;

loop1: WHILE C < PARTS DO

SET TMP1 = TMP1 + A_FACTOR(P);

SET P = P + STEP;

END WHILE loop1;

SET TMP2 = TMP1;

SET TMP1 = TMP1 + A_FACTOR(P) / 2;

SET RESULT = TMP1 * STEP;

RETURN RESULT;

END

La funzione applicata e definita nella proceduraA FACTOR e rappresenta il fattore:

∫ ϕ

0

a(1− e2)√(1− e2 sin t2)3

dt

che in SQL diventa

Figura 4: Carl Friedrich Gauss (1777 -1855)

CREATE FUNCTION ’A_FACTOR’( VAR DOUBLE )

RETURNS DOUBLE

BEGIN

# ED50 - SEMIMAJOR

DECLARE A DOUBLE DEFAULT 6378388.297 ;

# ED50 - SEMIMINOR

DECLARE B DOUBLE DEFAULT 6378388.297 ;

DECLARE E2 DOUBLE DEFAULT 0.0066943800042605865 ;

# SET E2 = (Aˆ2 - Bˆ2) / Aˆ2;

RETURN A*(1-E2)/SQRT(POW(1 - e2 * SIN(val)ˆ2,3));

END

L’insieme delle procedure sviluppate per la trasforma-zione sono quindi:

MOLODENSKIJ(PHI,LAMBDA,H,D_PHI,D_LAMBDA,D_H)

12 Computer Programming n. 181 [None 2009]

Page 13: Computer Programming n. 181 - Geografia Computazionale

GEOGRAFIA COMPUTAZIONALE

che prende in input i parametri PHI, LAMBDA e H con lecoordinate WGS84 e restituisce i parametri trasformatiin ED50 D PHI, D LAMBDA e D H, e poi:

GAUSS(PHI,LAMBDA,X,Y)

che prende in input i parametri superficiali in ED50restituiti dalla funzione precedente e genera le coor-dinate piane X e Y. I parametri distintivi delle trasfor-mazioni realtivi ai DATUM scelti sono stati introdot-ti come costanti nelle funzioni. La funzione GAUSSfa affidamento su una funzione che calcola l’integra-le definito ed una che esprime il fattore da integrare,rispettivamente:

RESULT = A_FACTOR(VALUE)

INTEGRAL(IBEGIN, IEND, PARTS)

A causa delle limitazioni del linguaggio SQL e neces-sario utilizzare le procedure realizzate in questa for-ma esclusivamente all’interno di una ulteriore storedprocedure esterna come ad esempio:

CREATE PROCEDURE ’TRANS’()

BEGIN

DECLARE PHI,LAMBDA,H DOUBLE DEFAULT 0.0;

DECLARE D_PHI,D_LAMBDA,D_H DOUBLE DEFAULT 0.0;

DECLARE X,Y DOUBLE DEFAULT 0.0;

SET PHI = ;

SET LAMBDA = ;

SET H = ;

CALL MOLODENSKIJ(PHI,LAMBDA,H, D_PHI, D_LAMBDA, D_H);

CALL GAUSS(D_PHI,D_LAMBDA,D_H,X,Y);

SELECT X,Y;

END

Trasformazione su linea di comando

Quando e possibile avere accesso alla linea di coman-do o nei programmi che possono utilizzare liberie col-legate piuttosto che riprogrammare ogni volta gli al-goritmi di proiezione e trasformazione delle coordi-nate e possibile utilizzare la libreria PROJ e i relativicomandi proj e cs2cs.PROJ e un progetto open source (con una licenza ditipo MIT che ne permette l’inclusione anche in siste-mi proprietari), usato da riga di comando (soprattut-to in ambito Unix, GNU/Linux, ecc.), che permette la

trasformare coordinate geografiche in coordinate car-tesiane secondo le regole della proiezione cartografi-ca. Viene solitamente utilizzato in altri progetti co-me GRASS, MapServer, PostGIS, Thuban, OGDI eOGRCoordinateTransformation.L’utilizzo da linea di comando e semplice e diretto. Trale opzioni del programma cs2cs vanno indicate le di-chiarazioni relative al sistema di riferimento di parten-za e poi, dopo l’opzione +to quelle relative al sistemadi riferimento d’arrivo.E possibile indicare questi riferimenti esplicitando iparametri dell’ellissoide, ad es:

+ellps=WGS84

+a= 6378137.0 + rf= 298.257223563

o direttamente i DATUM conosciuti

+datum=WGS84

o ancora attraverso un insieme di dizionari notiche e possibile scoprire sul sito http://www.epsg-registry.org, ad esempio:

+init=epsg:22022

in cui epsg e un dizionario noto e 22022 e l’ogget-to definito in quel dizionario. I dizionari sono file ditesto presenti solitamente nella directory /usr/local/-share/proj in cui e possibile verificare a cosa questeinizializzazioni corrispondono.cs2cs e un filtro e risponde generando sullo standardoutput la trasformazione delle coordinate che ricevenello standard input. Ad esempio nel modo seguente epossibile realizzare l’equivalente delle trasformazioniottenuta con le formule di Molodenskij:

echo 688146.8125 4931557.6875 | \

cs2cs -f "%.6f" +init=epsg:23032 +to

+init=epsg:4326

oppure

cs2cs +proj=latlong +datum=WGS84

+to +proj=utm +zone=32 +datum=ED50

r <<EOF

45d15’33.1" 111.5W

45d15.551666667N -111d30

+45.25919444444 111d30’000w

EOF

Computer Programming n. 181 [None 2009] 13

Page 14: Computer Programming n. 181 - Geografia Computazionale

GEOGRAFIA COMPUTAZIONALE

Conclusioni

Per lo sviluppo di funzioni di trasformazione geogra-fica e sufficiente riportare le funzioni matematiche diMolodensky e Gauss in codice sorgente con un mini-mo di supporto per le funzioni matematiche comples-se. Avendo a disposizione progetti liberi come PROJquesto non e neppure necessario ma, a parte il valo-re didattico di una tale implementazione, esistono ca-si in cui queste librerie non possono essere utilizzate.In questi casi si possono seguire le tracce riportate inquesto articolo o approfondirne l’implementazione nelprossimo.

14 Computer Programming n. 181 [None 2009]

Page 15: Computer Programming n. 181 - Geografia Computazionale

Trasformazione di coordinategeografiche in Javascript

L’implementazione in Javascript delle formule di Molodenskij eGauss

Lorenzo Dal Col

Problema

I n numerose applicazioni e necessario risolve-re il problema della trasformazione delle coor-dinate geografiche tra sistemi di riferimentodifferenti.

In questo articolo verra illustrato un applicativo che ef-fettua la trasformazione delle coordinate del sistemaWGS84 a quelle UTM. L’obiettivo e di fornire unaprocedura di trasformazione che possa funzionare an-che con dati acquisiti in tempo reale, senza la neces-sita di eseguire post-elaborazioni; e stato inoltre sceltoil linguaggio Javascript in modo che possa funzionarein un qualsiasi browser web che supporti lo scriptinge in un qualsiasi sistema operativo, anche quello de-gli smart-phone, che sempre piu spesso integrano unricevitore GPS.Tutti gli applicativi odierni, ad esempio i ricevitori sa-tellitari GPS, i software con riferimenti geografici (co-me Google Earth/Maps) e le varie applicazioni col-legate all’aeronautica utilizzano la codifica WGS84,mentre quasi tutte le carte ufficiali antecedenti al 1984utilizzavano il sistema UTM con “datum” ED50 nelcaso dei paesi europei. Grazie alle funzioni presentatein questo articolo si possono trasformare i dati raccol-ti con un sistema GPS moderno come Google Mapse confrontarli con dati di vecchie carte europee codi-ficati in UTM-ED50 (oppure “Roma Monte Mario”)direttamente in una pagina web.

Figura 1: Una semplice interfaccia HTML del programma

Soluzione

La trasformazione deve essere effettuata in tre passi:

1. Con le formule di Molodenskij si passa dallecoordinate ellissoidiche WGS84 alle coordinateellissoidiche ED50

2. Con le formule di Gauss si ricavano le coordinatepiane UTM

3. Infine si applica un fattore di correzione e una

Computer Programming n. 181 [None 2009] 15

Page 16: Computer Programming n. 181 - Geografia Computazionale

GEOGRAFIA COMPUTAZIONALE

falsa origine per evitare valori negativi, comevogliono le specifiche UTM.

Le superfici di riferimento

I sistemi di riferimento sono basati su degli ellissoi-di con una certa dimensione e posizionati nello spa-zio in modo differente per WGS84 e ED50; sono sta-te quindi create due classi Javascript per esprimerel’orientamento e l’ellissoide stesso:

function RotationElipsoid(a, alpha, orientation) {

this.orientation = orientation;

this.a = a;

this.alpha = alpha;

var semiminor = this.a - this.a * this.alpha;

this.e2 = (Math.pow(this.a,2) - Math.pow(semiminor,2)) /

Math.pow(this.a,2);

// RHO - Raggio di curvatura del meridiano

this.RHO = function(LAMBDA) {

return this.a * (1 - this.e2) /

Math.sqrt(Math.pow(1 - this.e2 *

Math.pow(Math.sin(LAMBDA),2),3));

}

// N_G - Gran Normale

this.N_G = function(LAMBDA) {

return this.a / Math.sqrt(1 - this.e2 *

Math.pow(Math.sin(LAMBDA),2));

}

}

function Orientation(x0, y0, z0, K, Ex, Ey, Ez) {

this.z0 = z0; this.x0 = x0; this.y0 = y0;

this.K = K;

this.Ex = Ex; this.Ey = Ey; this.Ez = Ez;

}

Pur essendo Javascript un linguaggio object-orientednon esiste il costrutto nativo per definire le classi poi-che in realta vengono implementate usando il concettodi “prototype” cioe il prototipo di un oggetto che e leg-germente diverso. Dal punto di vista semantico le clas-si sono scritte come delle funzioni che possono avereal loro interno membri dati e metodi (rispettivamentevariabili e funzioni interne).Si possono creare oggetti utilizzando il costrutto “new”e chiamando la funzione prototipo.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

In JavaScript il modo piu sempliceper creare gli oggetti e farlidiscendere da un prototipo

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Esistono in realta diversi “pattern” per la definizione diclassi in javascript, per supportare l’ereditarieta (anchemultipla) e il polimorfismo; in questo caso ci siamoaccontentati dell’implementazione piu semplice.Gli ellissoidi sono costanti e possono essere definitidirettamente in questo modo:

// inizializzo gli ellissoidi noti (DATUM)

var WGS84 = new RotationElipsoid(6378137.0,

1/298.257222101,

new Orientation(0,0,0,0,0,0,0));

var ED50 = new RotationElipsoid(6378388,

1/297,

new Orientation(-87,-98,-121,0,0,0,0));

var ITA40 = new RotationElipsoid(6378388,

0.00672267002,

new Orientation(-104.1,-49.1,-9.9,-11.68,

0.971,-2.917,0.714));

I parametri passati sono il semiasse maggiore a, loschiacciamento alpha, e l’orientamento: inizializza-to con i valori di traslazione sui tre assi (x,y,z),riscalamento e rotazioni.La classe “RotationElipsoid” ha i metodi RHO e N G,che calcolano rispettivamente il raggio di curvatura delmeridiano passato per argomento e la gran normalerispetto al meridiano.Le funzioni di conversione delle coordinate si chia-mano rispettivamente “molodenskij” e “gauss”, essesono abbastanza complesse ma non fanno altro cheimplementare le formule analitiche dei due rispettivimatematici:

La prima si esegue passando l’ellissoide di partenza,quello di arrivo e le tre coordinate geografiche del pun-to da trasformare: PHI, LAMBDA, H che sono rispet-tivamente longitudine, latitudine e altitudine; viene ri-tornato un oggetto da passare direttamente alla funzio-ne “gauss” che ritorna un array con rispettivamente lecoordinate Nord, Est e altitudine in UTM-ED50.All’interno della funzione “gauss” viene calcolato unintegrale definito di una funzione matematica graziea una procedura di supporto che usa il metodo deitrapezi:

// esegue l’integrale definito di di una funzione con

// il metodo dei trapezi in N parti

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

16 Computer Programming n. 181 [None 2009]

Page 17: Computer Programming n. 181 - Geografia Computazionale

GEOGRAFIA COMPUTAZIONALE

�function molodenskij(fromElipsoid , destElipsoid ,

PHI, LAMBDA, H) {

var alpha = fromElipsoid.alpha;

var a = fromElipsoid.a;

var Da = fromElipsoid.a - destElipsoid.a;

var Dalpha = fromElipsoid.alpha -

destElipsoid.alpha;

var DEx = destElipsoid.orientation.Ex -

fromElipsoid.orientation.Ex;

var DEy = destElipsoid.orientation.Ey -

fromElipsoid.orientation.Ey;

var DEz = destElipsoid.orientation.Ez -

fromElipsoid.orientation.Ez;

var Dx0 = destElipsoid.orientation.x0 -

fromElipsoid.orientation.x0;

var Dy0 = destElipsoid.orientation.y0 -

fromElipsoid.orientation.y0;

var Dz0 = destElipsoid.orientation.z0 -

fromElipsoid.orientation.z0;

var DK = destElipsoid.orientation.K -

destElipsoid.orientation.K;

var RHO = fromElipsoid.RHO(LAMBDA);

var N_G = fromElipsoid.N_G(LAMBDA);

// scorciatoie

var sinPHI = Math.sin(PHI);

var cosPHI = Math.cos(PHI);

var sinLAMBDA = Math.sin(LAMBDA);

var cosLAMBDA = Math.cos(LAMBDA);

var tanLAMBDA = Math.tan(LAMBDA);

var tempVar = RHO + H;

var tempVar2 = Math.pow(a,2) / N_G + H;

var tempVar6 = Math.pow(1 - alpha ,2);

var tempVar5 = (1 - tempVar6) * N_G;

var tempVar3 = ( N_G + H ) * cosLAMBDA;

var tempVar4 = (tempVar6*N_G + H) / (N_G+H);

var o1 = (sinLAMBDA * cosPHI / tempVar)*Dx0;

var o2 = (sinLAMBDA * sinPHI / tempVar)*Dy0;

var o3 = (cosLAMBDA / tempVar) * Dz0;

var o4 = (tempVar2 / tempVar) * sinPHI*DEx;

var o5 = (tempVar2 / tempVar) * cosPHI*DEy;

var o6 = (tempVar5 / tempVar) * cosLAMBDA *

sinLAMBDA * ( DK + Da / a );

var o7 = ((RHO + tempVar6 * N_G) /tempVar)*

cosLAMBDA * sinLAMBDA *

( Dalpha / (1 - alpha));

var dLAMBDA = o1+o2-o3+o4-o5-o6-o7;

var dPHI = sinPHI / tempVar3 * Dx0 -cosPHI/

tempVar3 * Dy0 -

tempVar4 * tanLAMBDA*cosPHI*DEx-

tempVar4 * tanLAMBDA*sinPHI*DEy+

DEz;

var dH = - cosLAMBDA * cosPHI * Dx0 -

cosLAMBDA * sinPHI * Dy0 -

sinLAMBDA * Dz0 +

tempVar5 * sinLAMBDA * cosLAMBDA*

sinPHI * DEx -

tempVar5 * sinLAMBDA * cosLAMBDA*

cosPHI * DEy -

tempVar2 * DK + a / N_G * Da -

tempVar6 * N_G *

Math.pow(sinLAMBDA , 2) *

(Dalpha / (1 - alpha));

return { LAMBDA: LAMBDA + dLAMBDA,

PHI: PHI + dPHI, H: H + dH };

}� �Listato 1: La formula di Molodenskij in JavaScript

var step = (end - begin) / parts;

var temp = myFunction.call(scope, begin) / 2;

begin += step;

for (var c = 0; c < parts - 1; c++) {

temp += myFunction.call(scope, begin);

begin += step;

}

temp += myFunction.call(scope, begin) / 2;

return temp*step;

}

La trasformazione viene fatta infine mettendo insiemele diverse conversioni:// funzione che esegue la conversione completa

// da WGS84 a ED50

function convert(PHI, LAMBDA, H) {

var m = molodenskij(WGS84, ED50, PHI, LAMBDA, H);

var g = gauss(ED50, m);

// correzione coordinate per UTM

g[0] = g[0] * 0.9996;

g[1] = g[1] * 0.9996 + 500000;

return { x: g[0], y: g[1], h: g[2] };

}

La funzione “convert” accetta come argomenti la lon-gitudine PHI, latitudine LAMBDA e altitudine Hespresse in radianti. Se si vogliono convertire dei va-lori espressi in gradi, primi e secondi si usa la seguentifunzione:// converte gradi, primi, secondi in radianti

function toRadians(d, m, s) {

return (Math.PI/180)*(d + m / 60 + s / 3600);

}

A questo punto possiamo testare il tutto con dei datinoti in WGS84:longitudine: 44° 45’ 12.20809’’latitudine: 14° 1’ 30.28015’’altitudine: 589

ci aspettiamo come risultato i seguenti:x: 5067303, y: 424247, h: 547

// funzione per testare il funzionamento

// (esegue una conversione e confronta con risultati noti)

function test() {

// preparo le variabili di ingresso (sono in gradi,

// le converto in radianti)

var LAMBDA = toRadians(45, 45, 12.20809);

var PHI = toRadians(14, 1, 30.28015);

var H = 589;

// eseguo la conversione

var converted = convert(PHI, LAMBDA, H);

// accedo al risultato usando: converted.x,

// converted.y, converted.h

// controllo i risultati

if (Math.round(converted.x) != 5067303) return false;

if (Math.round(converted.y) != 424247) return false;

if (Math.round(converted.h) != 547) return false;

return true;

}

Computer Programming n. 181 [None 2009] 17

Page 18: Computer Programming n. 181 - Geografia Computazionale

GEOGRAFIA COMPUTAZIONALE

�function gauss(surface, m) {

var precision = 10000;

var PHI = m.PHI;

var LAMBDA = m.LAMBDA;

var H = m.H;

var a = surface.a;

var e2 = surface.e2;

//funzione da integrare

Integral_Function = function(val) {

var tempVal = (a * (1 - e2));

return tempVal /

Math.sqrt(Math.pow(1 -

e2 * Math.pow(Math.sin(val),2),

3));

}

// calcolo il fuso e sistemo la longitudine

var fuse_length = 6 * Math.PI / 180;

var fuse;

if (PHI > Math.PI)

fuse=Math.floor((PHI-Math.PI)/fuse_length);

else

fuse=Math.floor((PHI+Math.PI)/fuse_length);

var deltalength=(fuse -30) * fuse_length

+ fuse_length/2;

var dPHI = PHI - deltalength;

// scorciatoie

var sinLAMBDA = Math.sin(LAMBDA);

var cosLAMBDA = Math.cos(LAMBDA);

var tanLAMBDA = Math.tan(LAMBDA);

var tempVar1 =Math.sqrt(1-e2*

Math.pow(sinLAMBDA , 2));

var tempVar2 =Math.pow(e2/Math.sqrt(1 - e2), 2);

var valoreIntegrale = Integral(Integral_Function ,

this, 0,

LAMBDA, precision);

var x = valoreIntegrale +

(1/2 * a*sinLAMBDA*cosLAMBDA/tempVar1) *

Math.pow(dPHI,2) +

(1/24 * a*sinLAMBDA*Math.pow(cosLAMBDA ,3)) /

tempVar1 *

(5 - Math.pow(tanLAMBDA ,2) +

9*tempVar2*Math.pow(cosLAMBDA ,2) +

4 * Math.pow(tempVar2, 2) *

Math.pow(cosLAMBDA ,4)) *

Math.pow(dPHI,4) +

1/720 * a*sinLAMBDA*Math.pow(cosLAMBDA ,5)/

tempVar1 *

(61 - 58*Math.pow(tanLAMBDA ,2) +

Math.pow(tanLAMBDA , 4) +

270 * tempVar2 * Math.pow(cosLAMBDA ,2) -

330 * tempVar2 * Math.pow(cosLAMBDA ,2) *

Math.pow(tanLAMBDA ,2)) * Math.pow(dPHI, 6);

var y = (a * cosLAMBDA / tempVar1) * dPHI +

(1/6) * a * Math.pow(cosLAMBDA , 3) / tempVar1 *

(1 - Math.pow(tanLAMBDA ,2) +

tempVar2 * Math.pow(cosLAMBDA , 2)) *

Math.pow(dPHI, 3) +

(1/120) * a*Math.pow(cosLAMBDA , 5) / tempVar1 *

(5 - 18 * Math.pow(tanLAMBDA , 2) +

Math.pow(tanLAMBDA , 4) +

14 * tempVar2 * Math.pow(cosLAMBDA , 2) -

58 * tempVar2 * Math.pow(cosLAMBDA , 2) *

Math.pow(tanLAMBDA , 2)) *

Math.pow(dPHI, 5);

return [x,y,H];

}� �Listato 2: La formula di Gauss in JavaScript

Discussione

Osservazioni sulla precisione

Sono stati confrontati i risultati forniti da questa appli-cazione con dei valori noti ed e ne e conseguito che ilcalcolo viene fatto in modo preciso, con uno scarto dial massimo una decina di millimetri per coordinata.In tutti i calcoli sono state mantenute tutte le cifresignificative gestite dal linguaggio Javascript.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Sono state mantenute tutte le cifresignificative gestite dal linguaggio

Javascript.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Il calcolo piu dispendioso in termini di tempo e l’in-tegrale (per via numerica) della funzione non lineare(contenente radice quadrata, funzioni trigonometriche,potenze, ecc). Facendo alcuni test con diverse funzio-ni e stato visto che sono sufficienti 10 000 passi per ilcalcolo dell’integrale. Aumentare ulteriormente il nu-mero di passi allunga notevolmente l’attesa e non mi-gliora il risultato, almeno per le prime 9 cifre significa-tive. Javascript e un linguaggio interpretato, pertantonon permette il raggiungimento delle prestazioni otti-mali della macchina, tuttavia la velocita di esecuzionein questo caso (alcuni decimi di secondo) e completa-mente soddisfacente, e permette un utilizzo completoin tempo reale.Il programma e stato testato con Internet Explorer (5+,6, 7), Mozilla Firefox (1.5, 2, 3), Opera (9.5) e Safari(3+).

Futuri sviluppi

Si potrebbe rifattorizzare tutto il codice Javascript erenderlo completamente ad oggetti, come e gia sta-to fatto per la classe dell’ellissoide di rotazione. Sead esempio trasformassimo in classi anche le due lun-ghe funzioni analitiche potremmo riutilizzare la stes-sa istanza per elaborare molte coordinate in sequenza,guadagnando in velocita perche potremmo mantenerenello stato alcuni calcoli parziali.

18 Computer Programming n. 181 [None 2009]

Page 19: Computer Programming n. 181 - Geografia Computazionale

GEOGRAFIA COMPUTAZIONALE

�<!DOCTYPE html PUBLIC

"-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"

xmlns:v="urn:schemas-microsoft -com:vml">

<head>

<title>WGS84-UTM</title>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8" />

<link rel="stylesheet" type="text/css"

href="style.css"></link>

<script type="text/javascript"

src="RotationElipsoid.js"></script>

<script type="text/javascript"

src="Molodenskij.js"></script>

<script type="text/javascript"

src="Gauss.js"></script>

<script type="text/javascript"

src="Main.js"></script>

</head>

<body>

<script type="text/javascript">

function trasforma() {

var latD = parseFloat(document.getElementById(’latD’).value);

var latM = parseFloat(document.getElementById(’latM’).value);

var latP = parseFloat(document.getElementById(’latP’).value);

var lngD = parseFloat(document.getElementById(’lngD’).value);

var lngM = parseFloat(document.getElementById(’lngM’).value);

var lngP = parseFloat(document.getElementById(’lngP’).value);

var H = parseFloat(document.getElementById(’h’).value);

var LAMBDA = toRadians(latD, latM, latP);

var PHI = toRadians(lngD, lngM, lngP);

var converted = convert(PHI, LAMBDA, H);

var output = ’\n<strong>UTM</strong >\n’ +

’N: ’ + Math.round(converted.x) + ’ m\n’ +

’E: ’ + Math.round(converted.y) + ’ m\n’ +

’h: ’ + Math.round(converted.h) + ’ m\n’;

document.getElementById("risultato").innerHTML = output;

}

</script>

<h1>Conversione di coordinate WGS84-UTM</h1>

<h3>Inserisci latitudine , longitudine , altezza:</h3>

<pre>

Esempio:°45 45’ 12.20809"°14 1’ 30.28015"

589 m

<strong>WGS84</strong>

Lat: <input type="text" style="width: 25px;" id="latD" value="0" °/><input type="text" style="width: 25px;" id="latM" value="0" />’

<input type="text" style="width: 75px;" id="latP" value="0" />"

Lng: <input type="text" style="width: 25px;" id="lngD" value="0" °/><input type="text" style="width: 25px;" id="lngM" value="0" />’

<input type="text" style="width: 75px;" id="lngP" value="0" />"

h: <input type="text" style="width: 25px;" id="h" value="0" /> m

<input type="button" value="calcola" onclick="trasforma();" />

<input type="button" value="test" onclick="alert(test());" />

<span id="risultato" style="margin: 1em;"></span>

</pre>

</body>

</html>� �Listato 3: Codice HTML per richiamare il programma

Computer Programming n. 181 [None 2009] 19

Page 20: Computer Programming n. 181 - Geografia Computazionale

GEOGRAFIA COMPUTAZIONALE

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Si potrebbe inoltre estendere latrasformazione anche ad altri

“datum” come ad esempio ITA40(gia suggerito tra gli ellissoidi

disponibili).- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Lo sviluppo piu interessante potrebbe essere di inte-grare la trasformazione con un sistema di mappe suweb (come Google Maps o Live Search Maps), inmodo da leggere le coordinate direttamente in metri.

Riferimenti

La teoria della trasformazione delle coordinate e alcu-ni esempi realizzati come stored procedure per mysqlsi trovano nell’articolo “Trasformazione di coordinategeografiche da WGS84 a UTM”.

Per approfondire l’argomento sulla trasformazio-ne di coordinate e consigliato il sito dell’Asso-ciazione Italiana Topografi, in particolare l’artico-lo “Alcuni metodi per il passaggio dal SistemaWGS84 ai Sistemi Geodetici Locali” all’indirizzohttp://www.asit.biz/public/portale/articles.asp?id=5Per imparare la basi sulla programmazione in Java-script sono disponibili nelle librerie numerosi libri, enel web centinaia di tutorial.Per i pattern avanzati di javascript come classi, ere-ditarieta, prototipi e altro si troveranno sicuramen-te informazioni sulla pagina di Douglas Crockford,un guru di questo linguaggio che lavora per Yahoo:http://javascript.crockford.com/

Page 21: Computer Programming n. 181 - Geografia Computazionale
Page 22: Computer Programming n. 181 - Geografia Computazionale
Page 23: Computer Programming n. 181 - Geografia Computazionale

Konqueror: tutto da unainterfaccia

Sfruttare al massimo il gioiello della corona di KDE

Gary Richmond

S TAVA riferendosi alla vittoria romana dellabattaglia di Zela o stava facendo un saluto “adue 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 latinoconoscera questa famosa frase.Premiamo il pulsante avanzamento veloce fino al pre-sente e queste parole potrebbero non essere fuori luo-go sulle labbra delle brave persone che hanno svilup-pato Konqueror, il browser e file manager “tutto inuno”, meglio descritto come visualizzatore universaledi documenti.Dipendendo solo da kdebase e una parte standard deldesktop KDE e gran parte degli utenti GNU/Linux adun certo punto hanno navigato o gestito file utilizzandoKonqueror. Precisamente perche viene pre-installatotendiamo a darlo per scontato; inoltre, nel periodo suc-cessivo al lancio avvenuto nel 2000, molte estensio-ni e alternative sono diventate disponibili: in modoparticolare l’immensamente diffuso Firefox.Prima di dar vita a una guerra infiammata tra utenti diKDE e di GNOME e ai sostenitori dei vari file mana-ger e browser, lasciatemi premettere che questo artico-lo non e un esercizio comparativo delle caratteristicheconcorrenti. Lo scopo di questo articolo e di far co-noscere al lettore le caratteristiche di Konqueror, dellequali possono non essere consapevoli e di dimostrareche, con alcune eccezioni, e possibile utilizzare e con-figurare Konqueror in modo tale che si possa trascor-

rere un’intera sessione senza abbandonarne i confini.Naturalmente, cio puo tendere a renderlo una sorta difactotum e signore del nulla, pertanto se avete neces-sita di un particolare strumento GNU/Linux mette adisposizione una scelta imbarazzante anche per il “po-wer user”. Se molte di queste caratteristiche vi sonogia note, si spera che le altre non lo siano e che possiateutilizzarle per migliorare la vostra esperienza di navi-gazione. Cio che segue e appunto la mia scelta perso-nale di suggerimenti, trucchi e funzionalita che trovopiu utili. Inevitabilmente, avrete anche voi delle pre-ferenze (scorciatoie per la ricerca sul web, movimentidel mouse, file remoti) e vi chiederete perche non le hotrattate: beh .. vi faccio le mie scuse anticipate.

Piu intelligente, piu veloce

I tesori sepolti sono i piu affascinanti, pertanto tiriamofuori la vanga e iniziamo a estrarre alcuni delle gemmedi Konqueror. Una delle prime, migliori e piu sempli-ci cose che si possa fare e ottenere facilmente un in-cremento di velocita. Si puo ottenere che Konquerorsi carichi piu velocemente modificando le impostazio-ni: cliccate su Impostazioni, poi Configura Konquerore scorrete in basso all’ultima opzione, Prestazioni. Sipuo minimizzare l’utilizzo della memoria e “precarica-re” un certo numero di istanze del browser. Fate degliesperimenti con queste impostazione finche non otte-nete una combinazione che meglio si adatta alle vostrenecessita e alle specifiche della macchina in termini

Computer Programming n. 181 [None 2009] 23

Page 24: Computer Programming n. 181 - Geografia Computazionale

USER SPACE

Figure 1: Konqueror in modalita browser e file

di capacita di memoria e di processore. Se piuttostonon volete armeggiare con queste impostazioni e sta-te utilizzando Konqueror da GNOME, un trucco spor-co e veloce e avviare una piccola applicazione KDE eminimizzarla. In questo modo, l’avvio di Konquerorrichiedera un minor sollevamento pesi.Si puo anche avviare Konqueror con una pagina vuotadigitando

about:blank

in una finestra di dialogo KDE ottenuta premendo Alt+ F2 o con

about:konqueror

una pagina di default che vi permettera di scegliereverso dove procedere. (Piu oltre vedrete come incor-porare queste viste nei vostri profili Konqueror). Sevolete queste opzioni di avvio sul desktop, effettuateun clic destro su un’area libera (del desktop) e sele-zionate Crea Nuovo e poi Collegamento a locazione(URL) e al prompt digitate un nome idoneo per il “pro-filo” e, nella casella sottostante, digitate uno di questicomandi.Un ultimo modo per aprire Konqueror rapidamente eda dove si vuole e sfruttare il fatto che l’etichetta dellalocazione e effettivamente trascinabile. Navigate alla

Figura 2: Konqueror in “modalita FTP”

pagina web che volete e trascinate la favicon (sulla si-nistra dell’indirizzo) sul Desktop e selezionate Collegaqui e verra creata una scorciatoia sul Desktop. Meglioancora, se si desidera creare una serie di scorciatoie apagine web sul desktop, selezionate Bookmarks e poiscegliete Modifica Bookmark e trascinate i link che vo-lete sul Desktop per quante icone di bookmark deside-riate. Inoltre, questo metodo non vi chiedera di copiareo do creare collegamenti sul desktop. Installera auto-maticamente un’icona Desktop. La stessa cosa valeper il trascinamento al pannello.

Sfogliare e archiviare

Una caratteristica che rende unico Konqueror, e dicounico, e che mentre altri web browser hanno moltecaratteristiche eccellenti, e effettivamente uniche, par-ticolarmente Flock, Firefox e Opera, Konqueror nonha pari in virtu della sua capacita di navigare il web eil filesystem del computer dalla stessa interfaccia. Sı,lo so, Firefox ha un’estensione che permette di suddi-videre lo schermo e di visualizzare due differenti sitiweb, ma si tratta di “siti web” e non di “un sito web edi un file personale” come si vede nella Figura 1.In questo esempio, avete effettivamente un clientFTP a due pannelli: basta trascinare il collegamen-to FTP nella schermata destra del browser alla scher-

24 Computer Programming n. 181 [None 2009]

Page 25: Computer Programming n. 181 - Geografia Computazionale

USER SPACE

Figura 3: Selezionando di file contigui con il metodo a“elastico”

mata del browser dei file e Konqueror vi chiedera dispostare/copiare l’immagine ISO (Figura 2).Se non avete impostato una cartella specifica per questidownload non e necessario perdere tempo a cercarla.(Se avete impostato KGet per intercettare tutte le ri-chieste di download per le cartelle preimpostate KGetridefinira questa impostazione). Se si preferisce si puoaprire una finestra terminale in Konqueror e trascina-re, rilasciare e scaricare un file lı (diro di piu su questatecnica piu oltre).Per ottenere questo risultato, selezionare Impostazio-ni dal menu a discesa e scegliere Suddividi lo scher-mo verticalmente. Tuttavia, per una azione piu ve-loce da tastiera basta eseguire semplicemente unadelle seguenti operazioni per aprire e chiudere leconfigurazioni di suddivisione dello schermo:

• Ctrl + Shift + L suddivide lo schermo vertical-mente

• Ctrl + Shift + T suddivide lo schermo orizzontal-mente

• Ctrl + Shift + R chiude lo schermo(i) suddivisoattivo

La copia e o il trasferimento di file e reso molto piufacile dall’utilizzo degli schermi suddivisi poiche ren-de il drag&drop ancora piu semplice. E cio riguarda

Figura 4: Konqueror in modalita file e terminale

anche i supporti esterni: CD, DVD, drive USB e pen-ne USB. Non potete costruire una catapulta da Kon-queror, ma potete utilizzare il suo metodo a “elastico”per selezionare i file contigui e selezionare dal menudi contesto le opzioni. Basta utilizzare il mouse perdisegnare un’area attorno ai file desiderati (Figura 3).

Se dovete svolgere delle operazioni da riga di coman-do, Konqueror vi puo far risparmiare la seccatura diaprire una console separata. Se selezionate il menua discesa Impostazioni vedrete una voce per “mostra-re l’emulatore di terminale” (o per aggiungere l’iconaper esso attraverso il menu a discesa Impostazioni, sot-to Configura barra degli strumenti e trascinarla sullatoolbar): cio fara aprire un’istanza di un terminale al-l’interno di Konqueror. Per i neofiti di GNU/Linux, sitratta di un modo utile per seguire la struttura dei filedi sistema, poiche cliccando su una cartella non solo viportera a quell’elemento in modo grafico ma sara an-che seguito dalla riga di comando. Dopo aver apertola scorciatoia alla directory desiderata potete eseguirecomandi su un particolare file nel terminale integrato(Figura 4).

Computer Programming n. 181 [None 2009] 25

Page 26: Computer Programming n. 181 - Geografia Computazionale

USER SPACE

Figura 5: Schermo suddiviso che mostra la pagina HTML el’editor di testo integrato

Gestione e navigazione di filepreimpostati

Una ulteriore ottima caratteristica di Konqueror fararisparmiare tempo e facilitera la navigazione: si trattadel filtro di visualizzazione (View Filter). Si puo acce-dere ad esso dal menu Strumenti e si puo anche aggiun-gere l’icona alla toolbar selezionandola e aggiungen-dola da Impostazioni e poi scegliendo Configura barradegli strumenti. Se si seleziona il tipo di file che ave-te scaricato, allora tutti i file di quel tipo appariranno.Come tutti i menu ben fatti, il filtro di visualizzazionee contestuale. Non lo vedrete se Konqueror e in moda-lita browser web. Un vantaggio per i “terminalmentedisorganizzati”! Il filtro di visualizzazione funzionaanche in modo incrementale; cioe, se dopo un primoesercizio di filtraggio selezionate un ulteriore tipo difile, questo viene aggiunto alla selezione. Si deve se-lezionare Reimposta per ripristinare le impostazioni didefault del file manager.Se si sta navigando una pagina web, il filtro di vistaviene negato per ovvie ragioni; tuttavia, il filtro di vi-sta offerto in modalita browser puo offrire all’utente unutile strumento di apprendimento. Ad esempio, nellascrittura di articoli che prevedono dei tag XML spessomi dimentico quali sono i tag ammessi (o non ne co-nosco neanche uno). In questo caso mi avvalgo della

Figura 6: Konqueror “dopato”: ogni visualizzazione che sipossa desiderare

suddivisione dello schermo. Apro sul web un artico-lo pubblicato che contiene i tag corretti, suddivido loschermo (replicando cosı la pagina), clicco sul nuovoschermo per renderlo attivo (un “led” verde si accen-dera nella parta in basso del browser) e seleziono ilmenu Visualizza e modifico la Modalita visualizzazio-ne in Editor di testo avanzato integrato. Cosı facendoappariranno i tag XML dell’articolo e posso effettuareun confronto riga per riga per capire come l’articolo estato costruito a livello di tag (Figura 5).Si tratta di un aiuto molto utile. Certo, Visualizza →Sorgente pagina in Firefox fa la stessa cosa, ma in duefinestre separate, mentre Opera aprira un’altra scheda(Ctrl + UM nella versione 9.5 alfa). Tuttavia, que-sti non facilitano il confronto riga per riga. Per inci-so, se si vuole duplicare lo schermo suddiviso per se-guire la navigazione dell’originale, basta cliccare sulpiccolo riquadro vuoto in basso al browser. Appa-rira un piccolo simbolo “a catena”. Devo ammetterlo,non riesco tuttavia a immaginare un utilizzo di questafunzionalita. E voi?Se nel browser si vuole una navigazione senza mousesui collegamenti ipertestuali, premete Ctrl e i collega-menti verranno contrassegnati con un piccolo riquadrobeige con delle lettere. Per seguire un link basta pre-mere la lettera corrispondente sulla tastiera. Il vostroproverbiale vantaggio puo comunque variare: se anda-

26 Computer Programming n. 181 [None 2009]

Page 27: Computer Programming n. 181 - Geografia Computazionale

USER SPACE

Figura 7: schermo suddiviso di Konqueror con coloripreimpostati

te sul sito Distrowatch, un sito fitto di link molto ravvi-cinati, la navigazione dei link per mezzo della tastierapuo essere problematica.Come ogni browser che si rispetti, si puo naturalmenteimpostare la propria homepage nei file di configurazio-ne di Konqueror ma a differenza di Firefox non poteteimpostare piu homepage da aprire in schede separate.In Firefox il trucco si ottiene digitando quanto segue:

http://www.google.com/linux |

http://www.distrowatch.com |

http://www.bbc.co.uk.

Cio non funzionera in Konqueror, ma almeno e ver-satile. Konqueror supporta il caricamento dei profi-li (come fanno Firefox e Opera) per aggirare questoproblema, tra l’altro.Per inciso, ho notato che Konqueror puo variare nelmenu profili da distro a distro. Se si utilizza Ubuntusi vedra che mancano alcuni caratteristiche. Si posso-no comunque ripristinare, basta che puntiate il vostrobrowser all’indirizzo

http://awebfactory.com.ar/node/91

Aprite Konqueror. In base a quante homepage voleteper default, suddividete lo schermo e ridimensionatelocome desiderato e a turno, rendete ciascuna area atti-va, navigate a una pagina web e ripetete questo pro-cedimento per tutte le schermate finche non le avete

Figura 8: File di configurazione di Konqueror

impostate tutte. Poi cliccate su Impostazioni e selezio-nate Salva profilo visualizzazione “navigazione Web”,scegliendo un nome pertinente e idoneo per il profilo espuntate la casella salva url nel profilo. E tutto. In basealle dimensioni del vostro schermo potreste voler au-mentare la superficie premendo il tasto F11. Se aveteuno schermo realmente grande o state utilizzando unaTV ad alta risoluzione una combinazione di queste im-postazioni vi dara spazio in abbondanza di cui potre-ste aver bisogno se volete visualizzare una schermatacome quella mostrata nella Figura 6.Se lo spazio e da preservare si puo invece impostareun profilo a schede e chiamare il profilo, ad esempio,“homepage a schede” invece di “homepage a schermosplittato”. La stessa cosa puo essere fatta con i profiliKonqueror in modalita file. Un bonus in piu in moda-lita visualizzazione file e che si puo impostare il colo-re di sfondo per distinguere le differenti aree suddivisedello schermo. La Figura 7 illustra le possibilita.

Mettilo sulla scheda

Nei preistorici giorni bui di Internet Explorer il concet-to di navigazione a schede era esotico quanto il concet-to di calcolo sicuro in Microsoft, ma Konqueror, comeFirefox, Opera, Galeon, Epiphany e altri hanno offertoagli utenti gli indispensabili vantaggi della navigazio-

Computer Programming n. 181 [None 2009] 27

Page 28: Computer Programming n. 181 - Geografia Computazionale

USER SPACE

Figura 9: Konqueror con i pulsanti di chiusura sulle schede

ne a schede da anni. La navigazione a schede di Kon-queror si integra bene con profili, ma puo fare anchepiu di cio, con un po’ di impegno.La via piu lunga e selezionare dal menu File l’opzioneNuova Scheda e con un clic destro su questa seleziona-re Chiudi Scheda. Ci sono anche altri modi: clic “cen-trale” su un link in modalita browser per aprire unanuova scheda, o clic centrale su una directory o su unospecifico file in modalita file per lo stesso effetto. Sesi preferisce si puo trascinare e rilasciare un collega-mento web nello spazio vuoto sulla destra dell’ultimascheda.Aspetto frustrante e che Konqueror non ha per defaultil pulsante di chiusura sulle schede, ma potete aggiun-gere questa caratteristica molto utile. I file di configu-razione di Konqueror sono tutti in semplice testo, facilida leggere e da modificare (come utente root). Apriteil vostro editor di testo preferito come root e navigatealla cartella:

/home/__nomeutente__/.kde/share/config/konquerorrc

scorrete in basso alla sezione intitolata FMSettings emodificate la riga MouseMiddleClickClosesTab a true(Figura 8).Un pulsante di chiusura e una caratteristica utile nel-la navigazione a schede. Opera, Firefox e Flock

Figura 10: Tweak GUI con schede

la hanno. E anche Konqueror puo averla. Ba-sta andare sul wiki di KDE (http://wiki.kde.org/tiki-index.php?page=Hidden%20configuration) e prende-re un piccolo e utile tool GUI per la modifica delleimpostazioni nascoste di configurazione o prenderloda

http://www.kde-apps.org/content/show.php/

Tweaking+Konqueror+tabs?content=44376

Per eseguirlo basta aprire con Alt + F2 una finestradi comando e digitare tweak, o digitare il seguentekioslave nella barra degli indirizzi di Konqueror:

settings:/Components/

e l’icona dell’applet Tweak sara disponibile (Figure 9e 10).Se si vuole rendere il lavoro con le schede piu faci-le, passate il mouse su una scheda e fate scorrere larotellina avanti e indietro per passare da una schedaall’altra; se si vuole anche riorganizzare l’ordine del-le schede, trascinatele e rilasciatele altrove sulla rigadelle schede.Konqueror ha un ulteriore utile trucco nella manica. Avolte vorreste che aprisse una visualizzazione di un filesempre in un particolare modo e non solo durante unaspecifica sessione: che si tratti della visualizzazione diuna icona, di un file, dei dettagli di un file, ecc. Dinuovo, aprite

28 Computer Programming n. 181 [None 2009]

Page 29: Computer Programming n. 181 - Geografia Computazionale

USER SPACE

Figura 11: Impostazione di Konqueror della visualizzazioneper cartella

/home/__nomeutente__/.kde/share/config/konquerorrc

e modificate (come root) nella sezione MainViewSet-tings il valore a true (Figura 11).

SaveViewPropertiesLocally=true

Dopo aver apportato questa modifica e aver selezio-nato la visualizzazione del file desiderata dal menuVisualizza (selezionate Modalita visualizzazione) peruna particolare directory, chiudete Konqueror e ria-pritelo: questa sara la visualizzazione di default del-la directory finche non la modificate. I piu acuti divoi avranno capito che questa modifica puo essere “fu-sa” con le configurazioni di profilo per creare le vostreimpostazioni preferite di navigazione dei file.Un ultimo suggerimento sulle schede. Se preferite leschede di Konqueror in basso, basta modificare (co-me root) nella sezione di configurazione FMSettingsla proprieta TabPosition=Top in TabPosition=Bottom.

Liberta attraverso la schiavitu

Benche possa sembrare un incrocio tra un brano di“Newspeak” di Orwell e la saggezza gnomica di Bla-ke ci porta a una delle piu utili e potenti caratteristi-che di Konqueror: i kioslave. Kio e l’abbreviazione

Figura 12: Kioslave audio in azione

di KDE input/output, che gli fornisce una omogeneatrasparenza in rete. Assumono la forma, giusto percitarne alcuni, di help:/, man:/ e info:/.Un elenco dei kioslave supportati e disponibile nellasezione Protocols di KInfoCenter ed e un elenco abba-stanza grande. Se siete allergici alla riga di comando ealla visualizzazione delle pagine man in un terminale,aprite Konqueror e digitate nella barra degli indirizziman:/ seguito dalla pagina man che volete e otterreteuna gradevole e lineare pagina HTML. State scrivendoun articolo su Amarok e non volete aprire questa ap-plicazione solo per conferma su qualche piccolo detta-glio? Bene, basta digitare help:/amarok e Konquerorlancera il manuale dell’applicazione. E qualcosa di li-neare e pratico ma i kioslave possono fare cose moltopiu potenti.

Schiavi del ritmo e qualcosa sulla barralaterale

Chiunque ha le sue preferenze e la mia antologia e deltutto personale, in base alle mie preferenze e all’utiliz-zo: e voi avrete certamente le vostre. Ecco una breveantologia che ritengo dimostri la grande potenza e uti-lita della loro trasparenza. GNU/Linux ha molti buoneutility di ripping e codifica per file musicali (compresal’ultima release di K3B che ora comprende una fun-

Computer Programming n. 181 [None 2009] 29

Page 30: Computer Programming n. 181 - Geografia Computazionale

USER SPACE

Figura 13: Un file mp3 trascinato sulla barra laterale diKonqueror

zionalita di ripping) e io le uso. Tuttavia, audiocd:/ eun kioslave che puo fare molto da un’unica interfacciaKonqueror quando serve al volo.Se inserite un CD musicale, aprite Konqueror e digitateaudiocd:/ nella barra degli indirizzi vi verra presentatocio che mostra la Figura 12.Cio che otterrete e l’elenco dei file WAV originali pre-senti nel CD (e se lo fate mentre siete connessi a In-ternet verranno visualizzati i titoli delle canzoni gra-zie a CDDB, http://en.wikipedia.org/wiki/CDDB, al-trimenti verranno semplicemente elencati come traccia1, traccia 2, ecc.). Konqueror crea anche dei file virtua-li in tutti i codec musicali che la vostra distro supportain modo nativo, compreso quelli proprietari che avetescaricato e installato. Eseguire il ripping e la codifi-ca di tutte le tracce selezionate e semplicemente unaquestione di drag&drop del codec selezionato in unadirectory del disco rigido. Konqueror fara il resto. Cioche non puo fare, senza un vostro precedente interven-to diretto, e configurare i parametri. Pertanto, nellospirito di questo articolo, aprite una ulteriore scheda edigitate nella barra degli indirizzi

settings:/Sound/

selezionate Audio CD e potete manipolare le varieimpostazioni (bitrate, tag ID3) per MP3 e Ogg Vorbis.

Figura 14: Il kioslave “sysinfo” vi fornisce una gran quantitadi informazioni azionabili

I devoti della riga di comando che hanno molto spaziolibero su disco possono trascinare il file WAV in unafinestra terminale in Konqueror e kfmclient (uno scriptKonqueror) vi offrira diverse opzioni. cp e quella chefa al caso vostro. Questa opzione copiera il file nelladirectory di default. Se si vuole copiare il file altrovebastera cambiare directory con cd e poi copiare. Kon-queror non ha ancora finito con i file musicali. Se nonstate memorizzando i file sul disco rigido o su un dri-ve esterno USB potreste voler masterizzare il tutto suCD. Bene, se avete installato Konqburn (in preceden-za Kio–burn) potete anche masterizzare con Konque-ror. Basta trascinare le tracce selezionate sull’iconaCD nella barra laterale e procedere.

Se volete campionare la musica che avete appena “rip-pato” e codificato con Konqueror, non e necessario av-viare un media player di grosso calibro (a meno chenon abbiate necessita di caratteristiche avanzate). Ba-sta cliccare sul pulsante Media Player nella barra la-terale di Konqueror. (Se non lo vedete, aggiungetelocon un clic destro su una parte vuota della barra late-rale, selezionando Aggiungi nuovo e aggiungetelo. Perinciso, si puo avere piu di una barra laterale. Semprecon un clic destro su una parte libera della barra la-terale selezionate Visualizzazione multipla). Cliccatesull’icona Media Player nella barra laterale, trascinatela traccia e state incidendo (Figura 13). (Per qualco-

30 Computer Programming n. 181 [None 2009]

Page 31: Computer Programming n. 181 - Geografia Computazionale

USER SPACE

Figura 15: Opzioni del menu di Kim

sa di piu sostanziale provate il pulsante Amarok nellabarra laterale).

Un ulteriore kioslave che permette di fare qual-cosa senza abbandonare i confini di Konqueror eKio–sysinfo. E necessario che sia installato apt slaveperche funzioni ma come potete vedere i risultati sonoabbastanza impressionanti (Figura 14)

Se utilizzate una distro basata su apt c’e un pul-sante azionabile per apt collegato al repository chevi permette di eseguire una ricerca in locale e onli-ne e di effettuare il download; tutti i pulsanti sottoCartelle comuni e Informazioni sui dischi sono an-che azionabili. Potete scaricare i binari precompila-ti di Kio-sysinfo per le distro piu diffuse dall’indiriz-zo http://jerrad.tuxfamily.org/kiosysinfo eng.html. Senon vi va a genio l’overhead di ricerca relativamentealto di Beagle e della sua stirpe e/o la vostra macchinae poco potente, il kioslave locate:/ sara una utile al-ternativa. Questo kioslave presenta i risultati in file ecartelle, queste ultime con colori non di default, ed emolto veloce.

Ci sono molti altri kioslave eseguibili. Ho senza dub-bio tralasciato il vostro preferito, specialmente i pro-tocolli remoti come fish, ssh, webdav, smb, vnc, ecc.Ho smesso di contare il numero di IO slave elencati inKinfocenter a settanta; comunque utilizzandone mol-ti o pochi, specialmente in combinazione con la bar-

Figura 16: Opzioni di Audiokonvert

ra laterale, potete ottenere molti seri vantaggi da unainterfaccia Konqueror ben configurata.

Lieto di essere d’aiuto!

I preveggenti, compıti, esistenzialmente stressati,ascensori progettati dalla Sirius Cybernetics Corpora-tion che tanto annoiavano Marvin l’androide paranoi-co potrebbero aver tratto l’ispirazione dai progettisti diKonqueror e dalla stretta integrazione con KDE. En-trambi sono ansiosi di piacere e di fornire un buon ser-vizio. I felici trasportatori verticali di persone lo fe-cero in un modo (a parte il saltuario broncio ai pianiinterrati come protesta) e Konqueror lo fa con i Ser-vice Menu. Per molti aspetti, sono molto simili alleestensioni di Firefox; installando una propria selezionepersonale otterrete quelle caratteristiche che rendonopossibile trascorrere un’intera sessione in Konquerorsenza staccarsi dalla sua interfaccia.Naturalmente, tutti i browser di file e i web bro-wser hanno i loro menu di contesto, ma ulterio-ri menu di servizio metteranno il turbo a Konque-ror. Il posto migliore per incrociarli e il sito KDEApps (http://www.kde-apps.org/). Selezionando “ser-vice menus” avrete subito accesso a 251 di essi. Alsolito, la mia selezione riflette le mie preferenze e imiei requisiti.

Computer Programming n. 181 [None 2009] 31

Page 32: Computer Programming n. 181 - Geografia Computazionale

USER SPACE

Figura 17: Il menu di servizio Debian

KIM

Siccome mi piace aggiungere delle schermate ai mieiarticoli e talvolta devo fare qualche modifica senza in-vocare un vero pacchetto grafico, trovo molto utile ilmenu di servizio KIM (KDE Image Menu). Tra i co-mandi contenuti nel menu Action ci sono le seguentioperazioni: ridimensiona, converti, ruota, comprimi,aggiungi testo, aggiungi bordi. Le funzioni di Undosarebbero utili, ma cio nonostante KIM aggiunge al-cune funzioni molto veloci e utili a Konqueror quan-do si ha necessita solo di qualche modifica di “postproduzione” su queste schermate catturate dalla rigadi comando (Figura 15).

Audiokonvert

Questo menu di servizio integra la capacita di Konque-ror di eseguire il ripping e la codifica di un CD musi-cale. Per le volte in cui avete scaricato un file musicalee non e in un formato che potete riprodurre, o in cuilo volete, Konqueror vi permettera di convertire i fileaudio da e verso cinque differenti formati (Figura 16).Nonostante il messaggio di errore, il file viene conver-tito senza problemi. Se lo state convertendo nel for-mato per l’iPod (M4A) allora potete trasferirlo sul ri-produttore attraverso il kioslave iPod:/ dalla barra degliindirizzi di Konqueror.

Uno per utenti Debian

Di solito, aprite il gestore dei package (Synaptic, Ky-naptic, Adept, ecc.) per installare un file binario o dariga di comando utilizzate

apt-get

Se state eseguendo delle operazioni rudimentali conil pacchetto lo potete fare da Konqueror con DebianMenu, un menu di servizio che vi permette di in-stallare, disinstallare e interrogare le informazioni sulpacchetto.

Questi sono solo alcuni dei miei favoriti. Voi avretei vostri. Ce ne sono 250 tra cui scegliere! E se nontrovate cio che vi serve e disponibile un rapido tutorialsu come si creano su:

http://techbase.kde.org/Development/Tutorials/

Creating_Konqueror_Service_Menus

PDF toolkit

Quest’ultimo e una perla. E un menu di servi-zio con un’ampia gamma di potenti opzioni, ede disponibile dal sito Kde-look (http://www.kde-look.org/content/show.php/konq-pdf+(new+PDF-smp)?content=37321).

Conclusioni

Konqueror come visualizzatore universale di docu-menti si e dimostrato degno del suo nome; con l’ag-giunta dei menu di servizio e dei kioslave e di un po’di configurazione, Konqueror puo supportarvi per unaintera sessione, purche non abbiate particolari esigen-ze da “power user”. Certo, supera il test di compati-bilita Web Acid2 ma non funziona bene con ogni sito(quale browser lo fa?); funziona con GMail ma solonella versione di base in HTML (e potete sempre sele-zionare Modifica identificazione del browser nel menuStrumenti e impostarlo a “Firefox”), e non ha esten-sioni alla Firefox. Cio nonostante, spero che questoarticolo abbia dimostrato sia la potenza sia la versati-lita di Konqueror a fare molto piu degli altri browsersenza abbandonare la sua interfaccia.

32 Computer Programming n. 181 [None 2009]

Page 33: Computer Programming n. 181 - Geografia Computazionale

Estensioni Google in Firefox

Interagire con le utility Google attraverso Firefox

Gary Richmond

V oglio dare un’occhiata in dettaglio su co-me “superdotare” il browser Firefox conuna selezione d’elite di utility Google. Fi-refox ha le sue critiche e i suoi difetti, ma

ad oggi e stato scaricato oltre 400 milioni di volte: ecome si dice “quello che mangiano gli flies, non posso-no sbagliarsi tutti!”. Firefox e abbastanza buono cosıcom’e, ma ognuno sa che la funzionalita di Firefoxsi estende enormemente con la semplice aggiunta diestensioni, nonostante i problemi di sicurezza [1].

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

In questo articolo descrivero comeestendere Firefox in modo che

possa interagire meglio conGoogle.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

La scelta delle utility Google abilitate per mezzo diestensioni e naturalmente del tutto personale, basatasulle mie necessita e preferenze mentre navigo. Quale la mia scelta? Gmail, GSpace, Better Gmail, Bet-ter Gcal, Customise Google, Gmail Notifier, Mini-map Sidebar. Pero . . . dovrebbe essere sufficiente comeassortimento!

Una nota su Google

Quando Google inizia a parlare messianicamente sucio che chiamano la loro missione da 300 anni [2] ini-zia a sembrare come un’incrocio tra James T Kirk eGiovanni il Battista e inizio a preoccuparmi che il man-tra “non essere malvagio” si sia tramutato nell’imperomalvagio di Microsoft. Quando iniziano a parlare dilinkare tutti a tutti e tutto il resto, posso vedere Ri-chard Stallman che si strofina la sua sindrome del tun-nel carpale. Inizio ad avere allucinazioni che Googleestendera la sua portata a estensioni chiamate “GoogleMurder”, “Google Blackmail” e “Google Torture” [3].Larry Page e Sergy Brin possono non essere SteveBallmer e Bill Gates, i Ronnie e Reggie Kray delmondo del computer, (a right pair of diamond geezersand no bleeding mistake) ma un bisticcio con Ebay, ilGrande Firewall della Cina e le preoccupazioni gene-rali sulla sicurezza personale quando si usano le utilityGoogle hanno alquanto offuscato la nostra visione delgrande ciclopico motore di ricerca. Gia, almeno Goo-gle e stato relativamente “GNU/Linux friendly”. Pen-sate a Picasa e a Google Earth per cominciare e anchealla sponsorizzazione del Summer of Code. Indubbia-mente, hanno anche dei motivi commmerciali ma al-meno non sono entrati far parte di una duplice una-nimita con Microsoft sui brevetti: ma sono abbastan-za riservati. Tuttavia, cio non mi impedisce di testarequeste estensioni per Firefox.

Computer Programming n. 181 [None 2009] 33

Page 34: Computer Programming n. 181 - Geografia Computazionale

PROGRAMMING

Una nota sull’installazione delleestensioni

In questo articolo, trattero diverse estensioni. Nel casonon abbiate mai usato le estensioni, ci sono tre modiper installarle:

1. cliccare semplicemente sull’icona installa ora etutto verra eseguito automaticamente;

2. clic destro sull’icona, scegliere salva collegamen-to come dal menu e salvare l’estensione in unacartella prescelta. Poi, cliccare sul menu a di-scesa File e selezionare Apri File, spostarsi nel-la cartella in cui si e salvato il file con estensionexpi e installarlo. (Scommetto che non in moltiutilizzerete questo percorso tortuoso!)

3. trascinare e rilasciare il file xpi su una istanza diFirefox in esecuzione, che si occupera di tutto.

In questo articolo forniro i link diretti alle estensio-ni dai repository ufficiali, e un link alla homepage delprogetto se disponibile. Tenete presente che il down-load e l’installazione delle estensioni dal sito web uffi-ciale e sicuro di Mozilla minimizza la possibilita di unattacco “man-in-the-middle”.

Gmail e roba associata

Sono arrivato tardi, molto tardi, a Google Mail (d’orain poi “Gmail”) ma dopotutto, non sono mai stato un’i-cona della moda. Una crudele necessita, come avrebbedetto Oliver Cromwell. E probabile che molti di voistiano gia utilizzando Gmail, ma nella remota possibi-lita che cosı non fosse, potete puntare il vostro browseral sito ufficiale (https://www.gmail.com/) e iscrivervial servizio.Da quando e stato inaugurato il servizio, l’insieme difunzionalita di GMail e sbocciato. Quando mi iscris-si a Google Mail e installai l’estensione per Firefoxmi furono messi a disposizione circa 2.9 GB di spaziosu disco che consideravo essere piu che sufficiente peri miei scopi. La buona notizia, specialmente per chi ealla ricerca di una capacita realmente importante, e chedal Gennaio 2008 sono disponibili fino a 6 GB [4]. Il

link [4] vi mostrera l’incremento dinamico dello spa-zio di memorizzazione in tempo reale, facendo partedel programma di storage che Google chiama “Infini-ty+1”. Dovreste inviare e-mail di proporzioni bizan-tine per esaurire questa capacita, tuttavia l’offerta diGoogle non e l’offerta piu capiente [5]. Va sottolinea-to che avrete accesso ad allegati e-mail fuino a 20 MBe questa sara una caratteristica piu utile (nonostante lavostra ampiezza di banda). Una caratteristica grade-vole e che questi allegati (inviati o ricevuti) verrannoscanditi automaticamente da un antivirus. A parte lospazio di memorizzazione, Gmail vi da una ovvia por-tabilita su vari computer e dovunque sul globo abbiateaccesso a una macchina. Il cuore di Gmail sono ca-ratteristiche come labels, voicemail, chat e l’integra-zione con altri servizi Google come calendar, Docs eReader. Tornero a parlare di alcuni di questi piu oltre.Suppongo che Gmail sia un buon punto di partenza perla ricerca di estensioni Firefox, poiche portera a varia-zioni su questo tema: Gmail Notifier, Better Gmail eFireGPG. Pertanto, mettiamoci al lavoro.

Gmail Notifier

L’estensione Gmail Notifier [5] ha una licenza GPL ede compatibile con le versioni di Firefox dalla 1.5 alla3.0 pertanto gran parte degli utenti dovrebbero esse-re coperti. Ha senso installarla prima di Better Gmailpoiche questa estensione vi permettera di ricevere no-tifiche nel browser Firefox (dopo aver eseguito il lo-gin) e dopo aver impostato l’estensione potete inizia-re a testare realmente le capacita di Gmail con BetterGmail.Al solito, vi verra richiesto di riavviare Firefox percompletare l’installazione di Gmail Notifier. Dopo cheFirefox si e riavviato, selezionate il menu a discesaStrumenti e scegliete Add-Ons e cliccate su Estensio-ni. Scorrete verso il basso e localizzate l’estensione(sono in ordine alfabetico). Selezionatela e cliccate suPreferenze e vi verranno presentate le seguenti opzionimodificabili:Le opzioni sono in gran parte autoesplicative e questavideata illustra le impostazioni di default. Potete impo-starle a cio che vi soddisfa di piu. Forse la caratteristi-ca piu interessante e la capacita di abilitare piu accountGmail. Siccome questa caratteristica impatta su un’al-

34 Computer Programming n. 181 [None 2009]

Page 35: Computer Programming n. 181 - Geografia Computazionale

PROGRAMMING

Figura 1: Preferenze di Gmail Notifier

tra estensione descritta in questo articolo, la terro perdopo, come fara per la checkbox di abilitazione delleconnessioni non protette.Per default avrete ora un’icona disattivata sulla barradi stato nella parte inferiore del browser. Portando ilmouse su di essa vi verra richiesto di effettuare il login.Cliccando si aprira una finestra di dialogo di login: unavolta effettuato il login l’icona diventera rossa; finchesiete loggati restera in questo stato. Se spostate ora ilmouse sull’icona vi avvisera se ci sono nuovi messaggi(il colore diventa blu); ci sara anche una notifica accan-to all’icona colorata sul numero di e-mail non ancoralette. In base a come avete impostato le preferenze,cliccando sull’icona Gmail si aprira in una nuova fine-stra, nella scheda corrente, in una nuova scheda o inuna nuova scheda senza focus. Se avete impostato lepreferenze di Gmail Notifier per reimpostare il conta-tore di Notifier quando l’icona viene cliccata per apri-re una e-mail, questo verra decrementato/incrementatoogni volta. Per inciso, solo perche vi siete loggati inGmail in qualche altro modo non significa che siete au-tomaticamente loggati via Firefox. Dovete effettuare illogin da Firefox.Gmail Notifier e una eccellente estensione ma pro-babilmente vi starete chiedendo perche dovete aprireGmail per vedere effettivamente quali sono queste e-mail. Non chiedetevelo piu. La risposta a questa sec-catura e impostare un “live bookmark” per sfruttare il

fatto che i bookmark di Firefox possono integrare feedRSS. Tutto cio che dovete fare e creare una cartella neibookmark di Firefox. Selezionate il menu a discesaBookmarks e cliccate su Manage Bookmarks. Ora, se-lezionate il menu a discesa File e scegliete New LiveBookmark e si aprira una finestra di dialogo e vi verrarichiesto 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 delfeed. Deve assumere il seguente formato:

https://username:[email protected]/gmail/feed/atom

La buona notizia e che la connessione e SSL, ma la no-tizia meno felice e che username e password vengonomemorizzati 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 iconaper aggiungere un live bookmark e seguite le richie-ste. Ora, ogni qualvolta Gmail Notifier vi avvisa cheavete nuova posta, basta andare nel menu Bookmarkse vedrete il live bookmark del feed Gmail/RSS. Evi-denziaziondolo vi indichera il titolo(i) della(e) e-mail.Due avvertimenti: primo, talvolta il live bookmark eGmail Notifier vanno fuori sync in termini di numerodi e-mail non lette. La soluzione e semplice: basta unclic destro sul bookmark live nel menu Bookmarks eselezionare Reload Live Bookmark. Secondo, il feednon verra scaricato se non ci sono nuove e-mail nellacartella inbox.

Better Gmail: un moustrap migliore

La cosa che amo degli hacker dell’open source e cheproprio non possono lasciare le cose come sono. Han-no un desiderio irresistibile di armeggiare e miglioraree Firefox e una grotta di Aladino per queste persone.Gli script Greasmonkey [6] sono ben noti ai devoti del-la piccola volpe. Wikipedia ha un eccellente articolo atal riguardo [7]. Persone piu esperte di me (penso sia-no molte) hanno messo assieme questi script e hannoprodotto un’agile estensione in Better Gmail [8] (pote-te anche visitare la homepage di Better GMail [9] cheaggiunge alcune serie caratteristiche potenti a Gmailcome illustrano le opzioni sottostanti) . Se i pilchardsono sardine giganti on steroids, allora Better Gmail eun barracuda. Ed e anche accompagnato da un bonus:l’approvazione formale di Tim O’Reilly [10].

Computer Programming n. 181 [None 2009] 35

Page 36: Computer Programming n. 181 - Geografia Computazionale

PROGRAMMING

Figura 2: Schede delle opzioni di Better Mail

Nella scheda General avete la possibilita di opportu-nita di selezionare le checkbox delle seguenti opzioni:avere una connessione sicura crittografata con Gmail,integrare Google Reader e aggiungere una gradevolepiccola caratteristica per mostrare l’utilizzo del discocome barra di avanzamento. L’opzione piu interessan-te della scheda Compose e Attachment Reminder. Que-sta opzione vi ricorda di allegare un file a Gmail nelcaso lo aveste dimenticato, se c’e un riferimento a unallegato nel subject di Gmail. Se questa caratteristicae abilitata, quando si clicca su invia Gmail vi segna-lera di non aver allegato il(i) file, con la possibilita dipremere annulla e di eseguire l’attach prima di reinvia-re, o di inviarla comuqnue. Non vincera alcun premio,ma e una piccola caratteristica ben fatta e ancor me-glio quando il riferimento all’allegato si trova anchenel testo principale o invece nel titolo della e-mail. Lascheda Messages vi da accesso a diverse caratteristicherealmente utili: Conversation Preview e, ritengo, unadelle migliori. Una volta abilitata, si sara in grado conun click destro su una e-mail di visualizzarne il con-tenuto senza aprirla effettivamente nel modo normale.Inoltre, ci sono delle opzioni all’interno di questa ca-ratteristica per archiviare o spostare nel cestino l’ele-mento selezionato. Ottimo. Attachment Icons sembrabanale ma in effetti potrebbe essere un vantaggio per ipatiti dell’iper-sicurezza visto che sostituisce l’anoni-ma icona a graffetta che potrebbe celare ogni sorta di

indicibile bestialita. Ho provato questa caratteristicacon un allegato PDF e ha funzionato a dovere. (Il solosvantaggio e che, poiche Gmail e uno strumento Web,gli allegati non si trovano sul vostro disco rigido lo-cale e anche dopo che l’e-mail e stata “scaricata” saraancora necessario scaricare l’allegato prima di poterlovisualizzare, il che puo essere scomodo se e un grossofile). Labels e un’altra utile caratteristica per l’organiz-zazione di Gmail. Dopo che Better Mail e installato ede abilitata l’opzione Labels, troverete un’etichetta nel-l’angolo in basso a sinistra della finestra di Gmail. Sesi clicca su Edit Labels apparira una videata e una fi-nestra di dialogo in cui potete eliminare, modificare ocreare nuove etichette per gestire le vostre e-mail.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Se i pilchard sono sardine gigantion steroids, allora Better Gmail e

un barracuda.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Abilitando Filter Assistant otterrete la stessa funzio-nalita che vi attendereste da un client e-mail conven-zionale come Evolution o Thunderbird per instrada-re la posta desiderata in cartelle preimpostate o pereliminarla come spam o robaccia.L’ultima scheda importante in Better Mail e Sidebar.Le due checkbox piu utili da attivare sono Add Googlecalendar Link e Add Google Reader Link. Fatto cio,questi link verranno aggiunti a Gmail e vi permetteran-no, se lo desiderate, di accedere a queste applicazioniGoogle da Gmail stesso, senza lasciarne i confini.

Utilizzo di GMail con IMAP e POP

Se si clicca sul link Settings in alto alla pagina si ve-dra un certo numero di impostazioni. Selezionate For-warding and POP/IMAP dove sarete in grado di predi-sporre l’abilitazione di questi due protocolli in Gmail(Figura 3).Si puo scegliere una delle due opzioni ma in ogni ca-so si avra una discreta quantita di configurazione nelnormale client e-mail. Questo aspetto e al di la de-gli scopi immediati di questo articolo, ma si possonoottenere istruzioni molto dettagliate e degli screenshotalla pagina GMail Help Centre [11]. Dopo aver se-

36 Computer Programming n. 181 [None 2009]

Page 37: Computer Programming n. 181 - Geografia Computazionale

PROGRAMMING

Figura 3: Scheda delle impostazioni di Gmail per laconfigurazione POP e IMAP

guito queste istruzioni, ritornate alle impostazioni diforwarding e salvate le modifiche. Si puo avere la po-sta di Gmail inoltrata al normale client e-mail senzaesguire il login a Gmail o scaricarla direttamente nelproprio programma di e-mail. Il che non va confu-so con l’impostazione del servizio di Mail Fetcher inGmail che permette di scaricare la posta dal POP ser-ver di un client e-mail (purche il vostro ISP suppor-ti l’inoltro), pur conservando la possibilita di lasciareil(i) messaggio(i) sul server. Si puo iniziare il proces-so di impostazione del Mail Fetcher nella scheda Ac-counts di Settings, seconda voce in basso. GMail HelpCentre fornisce una spiegazione e un howto [12].

Un’estensione per Firefox per chi non si fida dinessuno

Molte estensioni per Firefox sono rivolte a utenti chenon si fidano neanche della propria madre che gli da ilbacio della buonanotte. Se siete una di queste persone,ho un’estensione per voi che si integra con Gmail e of-frira un sonno tranquillo e sicuro sapendo che nessunopuo sbirciare o ficcare il naso su cio che inviate tramiteGoogle.Molti lettori avranno sentito parlare del software dicrittografia Pretty Good Privacy (PGP) [13] che vie-ne utilizzato, tra l’altro, per crittografare le e-mail. E

Figura 4: Preferenze di FireGPG

stata solo questione di tempo prima che qualcuno de-cidesse di scrivere un’estensione per Firefox. Questaestensione e FireGPG [14] e utilizza GnuPG svilup-pato dalla Free Software Foundation e fortunatamentesupporta Gmail. Al momento in cui scrivo non e di-sponibile dal sito ufficiale degli addon di Mozilla (ilche sarebbe piu sicuro), ma non avuto alcun problemacon il precedente link.Tuttavia, prima di farlo funzionare in Firefox e pri-ma necessario installare GnuPG sulla propria macchi-na GNU/Linux. In molti casi sara gia installato. Altri-menti, controllate sui repository del software e instal-latelo (o reperitelo dal sito ufficiale [15]). Si tratta diun tool a riga di comando (si veda man gpg) ma ci sonodiversi frontend disponibili [16], tra cui i due principalisono KGpg per KDE e Seahorse per Gnome. Entrambigenereranno le coppie di chiavi necessarie per critto-grafare e apporre la firma digitale alle e-mail. Il mioamico-collaboratore, Dmitri Popov, ha scritto un brevema eccellente howto su questo passaggio [17]. Ora sipuo installare l’estensione e la schermata Preferencesfornira le opzioni mostrate nella Figura 4.La prossima volta che componete un messaggio inGmail, FireGPG avra aggiunto il pulsante Sign, Cryptand Send che, se cliccato, vi fara una doppia richiesta:una volte per la chiave pubblica e una per la chiave pri-vata. Ci saranno anche altri pulsanti con variazioni diqueste opzioni in base alle proprie preferenze. (Que-

Computer Programming n. 181 [None 2009] 37

Page 38: Computer Programming n. 181 - Geografia Computazionale

PROGRAMMING

Figura 5: Configurazione delle etichette GTD nelleimpostazioni Gmail

ste opzioni appariranno nella schermata di composi-zione). Se vi fidate di Google per le chiavi private, ede un grosso se, allora ora avete una connessione securae la posta crittografata. Dopo aver iniziato questo ar-ticolo FireGPG e stato aggiornato (alla versione 0.4.6)per lavorare con l’ultima versione di Gmail: crea unpulsante utilizzato per aggiungere un file crittografatocome allegato.

Perche non utilizzare un Gmail ancora miglioreper far tutto?

Gmail, Better Mail, Gmail crittografato. Perche fer-marsi? Perche non estendere ulteriormente le cosee aggiungere qualche stimolo organizzativo realmentevalido a Google in Firefox? Mi riferisco all’estensio-ne GTD (Getting Things Done), all’estensione BetterGcal e all’estensione Minimap sidebar.

GTD: Get Things Done

Se siete fanatici del controllo e dovete semplicementeessere iper-organizzati, allora questa estensione per Fi-refox fa per voi. Giusto quando si pensa che qualsiasialtra estensione a Gmail dovra ottenere una concessio-ne edilizia, si fa avanti GTD [18] per aggiungere unagran quantita di ulteriori funzionalita a un’interfaccia

Figura 6: Il riquadro GTD search

gia stipata di caratteristiche che sgomitano a vicenda.Citando le parole del sito web ufficiale, GTD rappre-senta il massimo di sinergia di gestione e comunicazio-ne pur garantendo cautela e sicurezza. Perbacco! Se sie interessati alla filosofia alla base di GTD, la rivistaWired ha pubblicato un articolo su GTD [19]. Si puoutilizzare il precedente link [18] per installare questaestensione super piccola, ma GTD e ora felicementepresente nel sito ufficiale Mozilla degli addon [20].Come FireGPG, con Gmail aggiornato alla versione2.0, GTD non funzionera opportunamente a meno dinon tornare a eseguire la vecchia versione di Gmail.Basta individuare le impostazioni older version nel-l’angolo in alto a destra di Gmail e cliccando verrannoripristinate tutte le configurazioni di queste estensio-ni (se, come me, avete gia installato GTD). Questa ela buona notizia, piu il fatto che gli sviluppatori GTDstanno lavorando alla versione 2.0 per renderla compa-tibile con Gmail 2.0. Nel frattempo, la cattiva notiziae che se avete selezionato le impostazioni piu vecchiedi Gmail per ripristinare le impostazioni GTD, dopoche effettuate il logout e nuovamente il login, riapparela versione piu recente di Gmail come per vendetta esiete costretti a ripetere di nuovo il trucco delle impo-stazioni: e continuerete a doverlo fare fino all’aggior-namento di GTD; ma questo e un piccolo prezzo dapagare per questa super piccola estensione.Dopo aver installato questa estensione, riavviato Fire-

38 Computer Programming n. 181 [None 2009]

Page 39: Computer Programming n. 181 - Geografia Computazionale

PROGRAMMING

Figura 7: Gmail con le opzioni avanzate di GTD

fox e effettuato il login in Gmail, si vedra che cio che fae espandere notevolmente la funzionalita della caratte-ristica Labels. Le etichette ora appaiono sotto varieintestazioni: Contexts, Status, Projects e Referencescon la possibilita di aggiungere quante sottointestazio-ni si vuole. Mentre tutte le etichette extra (collassa-bili) sono situate nella parte inferiore del lato sinistrodi Gmail, tre altre caratteristiche vengono aggiunte:un link GTD nell’ultima colonna di ciascuna e-mail,un link Show GTD Search all’inizio dello schermo eun pulsante nell’angolo inferiore destro per permetter-vi di stampare Hipster PDA cards [21]. Cliccando suuna delle categorie delle etichette si aprira la schedaGmail Labels Setting in cui si possono selezionare lesottocategorie o crearne di nuove (Figura 5).

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

GTD rappresenta il massimo disinergia di gestione e

comunicazione pur garantendocautela e sicurezza

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Il servizio “GTD search” apre una finestra di dialogocon molte opzioni di ottimizzazione fine basate sulleetichette impostate, sulle date e sul fatto che le e-mailsiano contrassegnate da stellette o abbiano allegati, con

Figura 8: Google calendar attivato da GTD

la possibilita di salvare le ricerche. Si puo effettuareuna ricerca, poi aggiungere Categorie/Etichette a sin-gole e-mail e quando si ritorna alla propria inbox que-ste e-mail saranno ora contrassegnate di conseguenza(Figura 6).

Infine, quando si vuole comporre una e-mail si vedrache l’estensione GTD ora vi fornisce tre opzioni: Com-pose E-mail, Compose Myself an action e ComposeMyself a Reference. La prima e autoesplicativa e lealtre due, se selezionate, apriranno ulteriori finestre didialogo contestuali (Figura 7).

Con questa caratteristica potete inviarvi un’azione o unriferimento, compreso qualsiasi allegato, e cliccandosu Add event info si puo inserire dove e quando. Su-bito sopra l’area principale di composizione del testovi e un pulsante di azione more event options. Se siclicca su di esso si aprira una finestra Google calendare permettera una ulteriore configurazione (Figura 8).

GTD e una delizia per il power user con sufficientiopzioni (ben sette schede) da tenere occupato il piuinveterato smanettone (Figura 9).

Questo e solo un assaggio di cio che questo meravi-glioso addon per Firefox puo fare per un’applicazioneGoogle come Gmail. Il sito web ufficiale vi dira moltodi piu e in modo anche piu dettagliato.

Computer Programming n. 181 [None 2009] 39

Page 40: Computer Programming n. 181 - Geografia Computazionale

PROGRAMMING

Figura 9: Le opzioni di GTD: sette schede, un paradiso pergli smanettoni

Better Gcal: Google Calendar imbellettato

Google Calendar ha alcune buone caratteristiche maal solito i demonietti smanettoni hanno rovistato a fon-do rummaging e hanno tirato fuori un’estensione detta,ehm . . . , Better Gcal [22]. Come Better Gmail, lo sco-po e semplice: aggiungere funzionalita realmente utilial calendario di default di Google. Non e pieno zeppodi caratteristiche come Better Gmail ma ha alcune benfatte opzioni di configurazione (Figura 10).Queste, come per Better Gmail, sono una gentile con-cessione degli script Greasmonkey acclusi e aggiungo-no, letteralmente, un poı di colore al calendario. Chesi utilizzi Google calendar come applicazione standa-lone o integrandola con tutti gli altri pacchetti Google,un’opzione che si deve assolutamente abilitare e forza-re una connessione sicura (https). In base alla dimen-sione delle voci del vostro calendario, text wrap eventse utile. Le altre opzioni attivabili sono essenzialmenteestetiche.

Google Calendar: un avvertimento

Un avvertimento sull’utilizzo di Google calendar. Serendete pubblico il vostro calendario potete, in basea cio che inserite, esporvi a qualsiasi cosa, dal furto incasa al furto di identita al pedinamento. Ho dato un’oc-chiata ad alcuni calendari pubblici di “singoli privati”

e la quantita di informazioni rivelate era sorprendentee scioccante. Le informazioni erano tali che era possi-bile sapere esattamente quando qualcuni sarebbe statovia per gite o vacanze facilitando cosı le effrazioni esufficienti dettagli personali e finanziari da facilitare ilfurto di identita. Visitate il sito [23] e vedrete voi stes-si. E una lettura che impensierisce. La lezione e chiara:scegliere l’impostazione privata in Google calendar ese si deve condividere qualcosa perlomeno configura-telo per limitare la condivisione a specifiche personedi cui vi fidate.

Ricordati il latte: non un’estensione ma estenderaGoogle Calendar

Sfortunatamente, Better Gcal non fa per Google calen-dar cio che fa GTD per Gmail; se si vuole questo tipodi valore aggiunto, si potrebbe considerare Rememberthe Milk for Google Calendar [24]. Andate alla ho-mepage di RTM, cliccate su Signup Now! e seguite leindicazioni per iscriversi a uno speciale calendario cheaggiungera piccole icone di task a ciascun giorno (unsegno di spunta blu). E anche disponibile una guidarapida [25]. Questi segni blu appariranno solo dopoche vi siete assicurati che il calendario Remember theMilk e nella vostra Calendars List e che la casella del-la checklist sia selezionata. Fatto cio, potete cliccaresulle icone dei task in alto a ciascun giorno del GoogleCalendar, effettuare il login (con username e passwordche avete impostato quando avete installato RTM) ecreare i task da visualizzare.Attraverso la funzionalita Locations feature, Remem-ber the Milk vi offe una mappa relativa ai task chehanno un componente location (pratico se state con-dividendo Google calendar con amici che non hannofamiliarita con la vostra localita). Questo fungera dasupplemento a un’altra extension Firefox di nome MiniMap Sidebar [26], essenzialmente Google Maps nellabarra laterale di Firefox, che ha molte caratteristicheal di la dello scopo di questo articolo (elencate sul sitoufficiale dell’add-on).Comunque, RTM e popolare e la popolarita e fonte dipiu richiesta di feature creep. Pertanto, non sorpren-de che ci sia un’estensione per Firefox per questo tooldi gestione dei task. Si chiama Delegate to Remem-ber the Milk e si basa sull’estensione DelegateGCal di

40 Computer Programming n. 181 [None 2009]

Page 41: Computer Programming n. 181 - Geografia Computazionale

PROGRAMMING

Figura 10: Preferenze di Better Gcal

ano.malo.us. Se vi state struggendo come un Pythonparrot per le caratteristiche di RTM in Google Calen-dar allora installatelo [27] e, happy days, un pulsanteverra aggiunto ai messaggi Gmail per generare mes-saggi verso RTM che crea un nuovo task. Come perFireGPG, questa estensione e stata colpita dall’aggior-namento di GMail e funzionera solo con la versionepiu vecchia, richiedendo cosı la modifica della versio-ne nelle impostazioni di Gmail che ho citato prima.Tuttavia, sarete ancora in grado di utilizzarla per con-vertire le e-mail in task pur conservando un collega-mento all’indietro alla e-mail originale; proprio cosı.Se vi piace realmente RTM non siete limitati a Gcalen-dar e Gmail; potete averlo anche nella barra laterale diFirefox. Con il gadget iGoogle abilitato, aprite Book-marks Manager e create un nuovo bookmark e digitatela seguente URL:

http://www.rememberthemilk.com/services/modules/googleig/

e assicuratevi che sia spuntata la casella “Carica questobookmark nella barra laterale”. Ora, purche siate log-gati in RTM potete visualizzarlo da una barra lateraledi Firefox semplicemente selezionando questa opzionedal menu a discesa Bookmarks. Nel descrivere RTMho scalfito solo la superficie di cio che puo fare e sucome si integra con Firefox e le applicazioni Google,SMS e gli instant messenger (AIM, Gadu-Gadu, Goo-

Figura 11: GMailFS non e il solo modo per accedere a GMailcome se fosse un disco remoto.

gle Talk, ICQ, Jabber, MSN, Skype e Yahoo! sono tuttisupportati).

Gspace: spazio online gratuito tramite Firefox

Gli utenti GNU/Linux avranno familiarita nell’utilizzodi Fuse (File User Space) in combinazione con Gmailper creare filesystem Linux virtuali e montabili, me-glio noti come GmailFS [28]. GmailFS vi permetteraeffettivamente di utilizzare GMail come un filesystem.Se Fuse o GmailFS non fanno parte dei repository soft-ware delle vostre distribuzioni, potete reperirli sul sitoufficiale [29]. Molti principianti possono rifiutarsi diinstallare i moduli Fuse Kernel (tuttavia in gran partedelle versioni recenti e installato per default) e insegui-re le dipendenze, tuttavia l’impegno ne sara valsa la pe-na: sarete in grado di utilizzare Gmail senza dipenden-ze dagli aggiornamenti del browser che possono cor-rompere l’estensione (anche non dovendo accedere aicomandi per i file).Se si preferisce un’estensione Firefox che funzionacon Gmail, benche non ufficialmente, allora Gspace[30] fa per voi. Si tratta di uno spazio online remo-to di memorizzazione di file con tutti i fronzoli. Sietedistanti una sola estensione dai fino a sei Gigabyte difacile e comoda capacita di memorizzazione attraver-so il vostro account Gmail. E facile da usare, e come

Computer Programming n. 181 [None 2009] 41

Page 42: Computer Programming n. 181 - Geografia Computazionale

PROGRAMMING

Figura 12: L’interfaccia a quattro pannelli di Gspace

spostare i file localmente sul vostro computer. Ai filecaricati su Gmail via Gspace potete accedere e recu-perarli da dovunque, su qualsiasi macchina: compresopermettere l’accesso ad altri a cui vi fidate di fornire idettagli del vostro account Gmail. E una caratteristi-ca molto utile per grossi file che potrebbero soffocareil vostro normale client e-mail, anche su una decenteconnessione a banda larga. Una volta installato, Gspa-ce aggiungera un’icona alla barra di stato di Firefox.Dal menu add-on delle estensioni potete configurarele opzioni di Gspace e questo dovrebbe essere il vo-stro primo scalo: Gspace Preferences Settings. Qui,potete impostare le icone, le miniature, la dimensio-ne dei file allegati, ec. Per aprire l’applicazione bastacliccare sull’icona Gspace. In base a come avete confi-gurato Firefox, Gspace dovrebbe aprirsi in una schedaseparata (Figura 12).Chiunque ha utilizzato FireFTP, un’estensione clientFTP per Firefox, riconoscera l’organizzazione dell’in-tefaccia: una schermata contenente i files della propriadirectory home, una schermata per il trasferimento diquesti file su Gspace, una schermata Transfer e unaschermata Status (tutte ridimensionabili). Una voltaloggati, selezionate un o piu file cliccate sulla frecciablu di upload e i file selezionati verranno trasferiti nellaschermata destra. Allo stesso tempo, nella schermatain basso a sinistra Transfer, una barra d’avanzamentoindichera lo stato dell’upload. Ai file caricati potete in

seguito accedere (e ritrasferirli) da qualsiasi altra mac-china su cui sono installati Firefox e Gspace. Se oraaprite Gmail questi file verranno mostrati come unanormale e-mail che puo essere visualizzata, scanditae/o scaricata. Questa caratteristica e utile per il tra-sferimento di grossi file con tutti quelli con cui voletecondividerli che hanno un account Gmail, specialmen-te per chi lavora, ad esempio, in un gruppo di proget-to. Una delle migliori caratteristiche dell’estensioneGspace e la gamma dei Transfer Modes che permettedi trasferire file, visualizzare file di immagini caricatie scaricare da un drive Gmail. Si possono anche ri-produrre i propri file musicali caricati, benche per farecio avrete bisogno del plugin Flash Player (Gspace vifornira un link di download). Per questa caratteristica,dovrete concedere all’estensione Gspace il permessodi accedere a host esterni come gmail.com. Potete ot-tenere le istruzioni da [31]. Si possono anche gestirepiu account GMail da Gspace ma solo sequenzialmen-te, e non consecutivamente, poiche Firefox mantienei cookie attraverso la session di login: pertanto, piuacount GMail su piu schede Firefox non e compresonel menu!- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

L’installazione di CustomiseGoogle vi dara accesso a un

ventaglio fenomenale diimpostazioni Google per migliorare

la sicurezza del browser.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Il meglio di tutto il resto: una rapidapanoramica

Avevo intenzione di includere Google Browser Sync[32]. Anche se i dati sono opzionalmente crittografa-ti utilizzando un PIN alfanumerico in modo che dati,password e cookie siano protetti (anche da Google?),una possibilita migliore e di utilizzare Gspace in com-binazione con due eccellenti piccole estensioni per Fi-refox: FEBE [33] e CLEO [34]. Queste estensioni vipermetteranno, rispettivamente, di eseguire il backupdi tutte le vostre estensioni, temi, bookmark, preferen-ze, password, cookie, profili e di impacchettare tutte

42 Computer Programming n. 181 [None 2009]

Page 43: Computer Programming n. 181 - Geografia Computazionale

PROGRAMMING

le estensioni e i temi in un unico file compresso xpiinstallabile. Potete poi usare Gspace per caricare il fi-le CLEO e accedere ad esso per installare il tutto suun’installazione Firefox in esecuzione su un’altra mac-china dovunque altro sia. Per lo stesso motivo, GoogleNotebook [35] (un blocco appunti a scratch pad andshoe in per del.icio.us?) e un piccolo tool di ricerca benfatto da utilizzare in Firefox, specialmente se deside-rate collaborare online e integrarlo con Gmail e Goo-gle calendar [36], ma se volete una reale estensioneda “power user” per Firefox, allora Zotero [37] e unasoluzione molto migliore. E standalone ma piu poten-te, e la uso regolarmente nelle mie ricerche. Il potenteinsieme di caratteristiche puo essere realmente apprez-zato solo installando l’estensione [38]. Infine, benchesia considerato da maleducati mordere la mano di chi tiporge il cibo, non ci sono scuse per permettere a Goo-gle di prendersi delle liberta con la vostra sicurezza ei vostri dati. L’installazione di Customise Google [39]vi dara accesso a un ventaglio fenomenale di impo-stazioni Google per migliorare la sicurezza del brow-ser. Consideratelo come l’aggiunta di meta-preferenzea tutte le altre estensioni Google.

Conclusioni

Le estensioni Google vi permettono di ingranare lapotenza di Firefox e di trascorrere un’intera sessio-ne online senza doverne lasciare i confini. I soliavvertimenti riguardano la sicurezza e gli aggiorna-menti alle estensioni e ai browser che corrompono lacompatibilita.Se questo assortimento non e sufficiente a esaurirvi ose la mia selezione non e di vostro gradimento, allorafate una visita ahttp://geekpedia.wordpress.com/category/gmail/un sito web che elenca non meno di ottanta tool e sug-gerimenti per Gmail e sguazzate nell’abbeveratoio perGoogle.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Ci sono abbastanza estensioni dadurare almeno quanto una causa

intentata da SCO.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

le note dell’articolo sono presenti all’indirizzo

http://www.infomedia.it/note/CP181/richmond

Page 44: Computer Programming n. 181 - Geografia Computazionale

Estendere Nautilus: (fotocameree) rotazione di immagini JPG

Personalizzare il filemanager di GNOME con gli script

Scott Carpenter

R ecentemente stavo cercando un modo perruotare immagini JPG da Nautilus, e hotrovato un modo per fare questo e altro.Non e difficile personalizzare il menu po-

pup che si apre con un clic destro in Nautilus per ese-guire azioni personalizzate sui file. In questo articolopresento alcune istruzioni e script da cui partire. Spes-so ho immagini fotografiche orientate verticalmenteche voglio ruotare dal file manager. L’explorer di Win-dows ha una utile funzionalita con cui si possono sele-zionare piu immagini in modalita thumbnail, e con unclic destro si ottiene un menu popup (noto anche comemenu di contesto), e si puo selezionare una rotazionein senso orario o anti oario. Si tratta di una trasfor-mazione senza perdita di informazione, al contrario dicio che probabilmente si ottiene se si apre un’imma-gine con il proprio programma di grafica preferito, lasi ruota, e la si salva nuovamente. Questo metodo eanche scomodo se, come accade a me, volete solo ruo-tare le immagini dopo averle estratte dalla vostra foto-camera. Si tratta di una delle tante cose che ho appresogradualmente nel sostituire le mie precedenti compe-tenze Windows, e come di solito accade quando trovouna soluzione in GNU/Linux, sono rimasto compiaciu-to dal raffinato approccio costruttivo dei sistemi *nix.Mi sono reso conto di avere la potenza di bash a portatadi mano da Nautilus, con script che sfruttavano l’ulte-riore vantaggio di alcune eleganti utility che descriveropiu oltre.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Non e difficile personalizzare ilmenu popup che si apre con un

clic destro in Nautilus per eseguireazioni personalizzate sui file

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

E vero che molti programmi di importazione ruote-ranno automaticamente le immagini mentre vengonoestratte dalla fotocamera, ma non tutti lo fanno, e nonsarete sempre in grado di utilizzare il programma diimportazione del caso. E anche possibile che la vostrafotocamera non memorizzi gli opportuni metadati Exif(http://en.wikipedia.org/wiki/Exif) nel file dell’imma-gine, lasciando inerme il vostro super fantastico pro-gramma di importazione. Pertanto ritengo che possia-mo convenire sul fatto che si tratti di qualcosa che enecessario avere per facilitare la gestione delle foto.Mi occupero in modo specifico delle operazioni sui fi-le immagine per dimostrare come Nautilus puo essereesteso. Trattero il caso dei file JPG che in pratica rap-presentano il formato universale delle fotocamere digi-tali (almeno in quelle utilizzate da noi comuni mortali)e utilizzero i dati Exif che ci permettono di fare diver-se cose utili. Dalla lettura di questo articolo, sarete ingrado da Nautilus di effettuare un clic destro sulle vo-tre immagini e di avere delle opzioni di menu comequelle mostrate nella Figura 1.Questo corrisponde alla seguente gerarchia nellavostra directory home:

44 Computer Programming n. 181 [None 2009]

Page 45: Computer Programming n. 181 - Geografia Computazionale

PROGRAMMING

Figura 1: Il menu popup del file manager Nautilus diGNOME attivabile con un clic destro

˜/.gnome2/nautilus-scripts/img/

autorotate.sh

change-date-and-rename-with-exif.sh

change-mod-date-to-exif.sh

rename-with-exif-date.sh

rotate-left.sh

rotate-right.sh

caution/strip-exif.sh

Preliminari

Il codice di questi script rilasciato come pubblico do-minio appare piu oltre. Si puo anche scaricare il fi-le allegato all’articolo downloads.tgz e estrarlo nellapropria directory nautilus-scripts:

/.gnome2/nautilus-scripts$ tar -xvf

downloads.tgz

La pagina GNOME su come estendere Nautilus e unbuon punto da cui partire. Riporta che si puo anche uti-lizzare il menu File → Scripts per eseguire gli script,e da lı o dal menu di contesto che si ottiene con unclic destro, si puo selezionare l’opzione “Open ScriptsFolder” per aprire la directory in Nautilus. Se non ave-te alcuno script installato, non otterrete queste opzionidi menu. Accertatevi che gli script che create sianoeseguibili.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Mi sono reso conto di avere lapotenza di bash a portata di mano

da Nautilus, con script chesfruttavano l’ulteriore vantaggio di

alcune eleganti utility- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Possibili sorprese

Inizialmente non riuscivo a far apparire il menudegli script quando inserivo gli script nella radice dinautilus-scripts, e pensavo dovessero essere posizio-nati nelle sottodirectory. Ma quando ho ricontrollatomentre scrivevo, funzionava bene in questo modo. Poidopo aver rimosso e ripristinato i file nella mia ge-rarchia preferita, non riuscivo di nuovo a far appariregli script nel menu, anche dopo aver chiuso e riapertoNautilus. Ho dovuto forzare un ricaricamento delle di-rectory in Nautilus per vedere nuovamente il tutto nelmenu, utilizzando la piccola freccia circolare blu dellatoolbar. Forse cio aveva qualcosa a che fare con il mioproblema iniziale. In ogni caso, se le cose non appaio-no come previsto, accertatevi di ricaricare la directorynautilus-scripts. (Disponibile anche nel menu View→Reload e tramite la scorciatoia di tastiera CTRL + R).C’e ancora una cosa da fare prima di potere iniziarea osservare gli script in azione. E necessaria l’uti-lity jpegtran (http://en.wikipedia.org/wiki/Libjpeg)prelevabile dal sito Independent JPEG Group(http://www.ijg.org/) e jhead di Matthias Wandel(http://www.sentex.net/ mwandel/jhead/). Entrambisono piccoli e robusti programmi free software. jheade di pubblico dominio, e jpegtran ha una sua licenzache appare essere pienamente free.La buona notizia e che probabilmente avete gia jpeg-tran, e jhead e facilmente disponibile. Nelle mie mac-chine dotate di Ubuntu 7.04 (Feisty Fawn) e di FedoraFC5, jpegtran fa parte dell’installazione di default. SuUbuntu ho installato jhead con il comandosudo apt-get install jhead

e su Fedora, come utente root, con il comandoyum install jhead

Per scopi di sperimentazione, raccomando di utilizza-re una directory temporanea con copie di alcune im-

Computer Programming n. 181 [None 2009] 45

Page 46: Computer Programming n. 181 - Geografia Computazionale

PROGRAMMING

Figura 2: L’immagine monkey.jpg

magini. Molto probabilmente non vorrete utilizzarele vostre ordinarie directory di immagini mentre lavo-rate inizialmente con questi script, poiche non si puoeffettuare l’undo delle operazioni.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Per scopi di sperimentazione,raccomando di utilizzare una

directory temporanea con copie dialcune immagini

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Una delle cose che vi mostrero e come creare unoscript di “autorotazione” che sfrutta i dati di orien-

tamento di Exif. Se avete ruotato le vostre imma-gini in precedenza, questo flag puo essere azzerato.Si puo utilizzare come immagine di prova monkey.jpg(Figura 2).E ora passiamo finalmente agli scripts!

rotate-right.sh (in senso orario)

#!/bin/bash

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

#if a file and not a dir

if [[ -f "$1" ]]; then

# per default jpegtran copia solo

# alcuni dati Exif; specificare "all"

jpegtran -rotate 90 -copy all \

-outfile "$1" "$1"

# azzera il tag di rotazione/orientamento

# in modo che alcuni visualizzatori

# (ad es. Eye di GNOME) non vengano ingannati

jhead -norot "$1"

fi

shift

done

Ecco cosa fa lo script:

• Processa tutti i file specificati sulla riga di coman-do in un ciclo. (Se invocato da Nautilus, passeratutti i nomi di file come argomenti allo script).

• Finche ci sono file, e se il file e in effetti un file enon una directory, invochera jpegtran per ruotarel’immagine di 90 gradi. Facendo sı che il file dioutput abbia lo stesso nome del file di input, andrasemplicemente a sostituirlo.

• Dopo la rotazione dell’immagine, invoca jheadper azzerare il flag di orientamento nei metadatiExif. Come evidenzia il commento nello script,se non modificate il tag di rotazione, programmicome Eye di GNOME (il visualizzatore di defaultdi GNOME) verra confuso e ruotera l’immaginepoiche e abbastanza astuto da leggere i dati Exif ecercare di orientare al meglio l’immagine per unacorretta visualizzazione.

Per ottenere la rotazione in senso antiorario, pote-te creare lo script rotate-left.sh copiando il codice

46 Computer Programming n. 181 [None 2009]

Page 47: Computer Programming n. 181 - Geografia Computazionale

PROGRAMMING

precedente, in cui sostituirete -rotate 90 con -rotate270.Una volta salvato questo script, si puo aprire una fi-nestra terminale ed eseguirlo da riga di comando perverificare che funzioni come previsto:

˜/.gnome2/nautilus-scripts/img/rotate-right.sh ˜/tmp/monkey.jpg

Un motivo per effettuare questa verifica e che quan-do si eseguono delle cose dal menu degli script diNautilus, non otterrete alcun feedback in caso di erro-ri. Gli script falliscono semplicemente dietro le quin-te. Ad esempio, se i vostri script non sono eseguibili,sembrera che uno script non abbia eseguito niente.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Una delle cose che vi mostrero ecome creare uno script di

autorotazione che sfrutta i dati diorientamento di Exif

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

autorotate.sh

Il prossimo script e ancora migliore. Mi e capitato diconsumare un sacco di tempo in Windows Explorer asetacciare una grossa directory di immagini thumbnailper trovare quelle che erano state scattate verticalmen-te e di multi-selezionarle per poterle ruotare. E un la-voro noioso: non e sempre ovvio dal thumbnail qual el’orientamento, e mentre si scorre la finestra si possonoaccidentalmente sia deselezionare i file sia seleziona-re delle immagini orizzontali. Se la vostra fotocame-ra memorizza nel file i dati di orientamento Exif (adesempio, la mia Canon lo fa), potete selezionare tutti ifile e utilizzare la funzionalita di “autorotate” di jheadche ruotera solo le immagini verticali. (Nella prati-ca ho constatato che non e garantito al 100%, forseperche la fotocamera a volte non rileva correttamentel’orientamento?).

#!/bin/bash

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

if [[ -f "$1" ]]; then

jhead -autorot "$1"

elif [[ -d "$1" ]]; then

# iname -- case insensitive

find "$1" -iname "*\.jpg" \

-exec jhead -autorot {} \;

fi

shift

done

Per questo script, ho fatto in modo che possiate sele-zionare anche una directory, poiche e piu probabile chevogliate eseguirlo su intere directory. Ho notato che sesi clicca col tasto destro su una directory nel pannellosinistro “ad albero” di Nautilus, non si ottiene il menudegli script, ma e disponibile dal menu File→ Scripts.Il menu degli script e anche disponibile se si effettuaun clic destro su una directory nel pannello destro diNautilus.Ecco cosa fa lo script:

• Come negli script di rotazione “manuale”, pro-cessa in un ciclo tutti gli argomenti (file e/odirectory) passati al programma.

• Se e un file (-f ), lo passa semplicemente a jhead-autorot.

• Se e una directory (-d), esegue il comando findsu questa directory, alla ricerca di file .jpg (nontenendo conto della grafia), e per ciascun file tro-vato, invoca jhead -autorot. jhead azzera il flag diorientamento come parte di questa operazione.

Queste erano le principali caratteristiche che avevoiniziato a cercare (beh, non avevo previsto di arriva-re a una “auto” rotazione!), ma dopo questi script hoproseguito per vedere cos’altro potevano fare jhead ejpegtran:

change-mod-date-to-exif.sh

#!/bin/bash

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

# se un file e non una directory

if [[ -f "$1" ]]; then

jhead -ft "$1"

fi

shift

done

Se si copiano i file direttamente da un lettore di sche-de USB (o da alcune fotocamere che vi permettono dileggere via USB come dispositivi rimovibili, come la

Computer Programming n. 181 [None 2009] 47

Page 48: Computer Programming n. 181 - Geografia Computazionale

PROGRAMMING

mia vecchia Olympus ma non come la mia nuova Ca-non), la data di modifica viene preservata per i file sulcomputer. Mi piace questa caratteristica poiche andropoi a utilizzare un programma Visual Basic che uti-lizza le date di modifica per rinominare i file con untimestamp. I miei file di immagini iniziano prevalen-temente con AAMMGG HHMMSS. E utile perche mantienele immagini in sequenza e le identifica in modo uni-voco. (E vado anche oltre e aggiungo del testo identi-ficativo al prefisso “data ora”). Quando ho provato aimportare questo programma in GNOME, ho scoper-to con disappunto che aggiornava l’ora di modifica deifile mentre li copiava sulla macchina desktop. Bene,ora potete correggere cio con lo script change-mod-date-to-exif.sh. Se l’orologio della vostra fotocamera eimpostato correttamente, probabilmente avrete la datain cui ogni immagine e stata scattata memorizzata neidati Exif. Jhead ripristinera l’ora di ultima modificadel file in base alle informazioni Exif.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Se la vostra fotocamera memorizzanel file i dati di orientamento Exif

potete selezionare tutti i file eutilizzare la funzionalita di

“autorotate” di jhead che ruoterasolo le immagini verticali

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

rename-with-exif-date.sh

Ancor meglio, quel vecchio programma VB puo esserebuttato via e possiamo utilizzare jhead per rinominaredirettamente il file con la data Exif:

#!/bin/bash

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

# se un file e non una directory

if [[ -f "$1" ]]; then

jhead -nf%y%m%d_%H%M%S "$1"

fi

shift

done

Questo script utilizza un’altra opzione di jhead per ri-nominare il file con un timestamp AAMMGG HHMMSS.Cosı com’e opera solo su file, ma puo essere facilmen-te modificato per operare anche su directory, in modo

simile a autorotate.sh. A questo punto si puo anchecreare facilmente un nuovo script, change-date-and-rename-with-exif.sh, che invoca semplicemente gli al-tri due script in modo da poter modificare la data dimodifica del file e rinominarlo con un timestamp in unsolo passo.

strip-exif.sh

E in ultimo, attenzione:

#!/bin/bash

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

# se un file e non una directory

if [[ -f "$1" ]]; then

jhead -purejpg "$1"

fi

shift

done

Ho messo questo script in una directory di nome atten-zione (sotto la directory nautilus-scripts/img) in mododa ridurre la possibilita di avviarlo accidentalmente.Questo script elimina tutti i dati Exif da un’immagine,cosa che il piu delle volte non si desidera fare. Utilizzoquesto script per alcune immagini che carico sul miosito (http://www.movingtofreedom.org/), in modo daridurre l’utilizzo della banda e il tempo di caricamentodella pagina. Ad esempio, monkey.jpg e di 51 KB coni dati Exif, e di 44 KB senza. Non una grossa cosa perle immagini memorizzate sul proprio disco rigido, spe-cialmente perche di solito le immagini odierne supera-no 1 MB, ma puo essere di aiuto nel caso improbabile(per me!) di un post su slashdot o su digg.

48 Computer Programming n. 181 [None 2009]

Page 49: Computer Programming n. 181 - Geografia Computazionale

Filtri audio ... con Gimp

Utilizzare Gimp come un ideale filtro audio digitale

Gianluca Pignalberi

G imp viene universalmente utilizzato perla manipolazione di immagini. Tutta-via, con un po’ di creativita e un paio ditrucchi, puo anche essere utilizzato come

filtro audio! Ecco come. . .

Filtri audio

Se avete familiarita con i filtri audio, potete saltarequesta introduzione. Per chi non conosce i filtri, eccouna breve spiegazione. Un suono, come tutti i segnali,viene misurato in Hz (Hertz). Questa misura esprimela frequenza del segnale. Piu bassa e la misura, piubassa e la frequenza. Un filtro e uno strumento che mi-gliora una o piu frequenze del segnale, in base a un cri-terio. In un mondo ideale, un filtro sopprime completa-mente le frequenze indesiderate. Sfortunatamente, nonviviamo in un mondo ideale.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Un reale filtro passa basso equalcosa che riceve in input unsegnale e emette in output le

componenti di frequenza piu basse- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Mi concentrero su un solo tipo di filtro: il fitro passa-basso. Un reale filtro passa-basso e qualcosa che rice-ve in input un segnale e emette in output le componen-

Figura 1: Risposta di frequenza di un reale e di un idealefiltro passa-basso

ti di frequenza basse. Ad essere piu precisi, “attenua”queste frequenze piu alte di una frequenza impostata(frequenza di taglio). Come si vede nella Figura 1, ilfiltro approssima il comportamento teorico.In questo articolo propongo un metodo in tre passi perottenere un ideale filtro passa-basso per segnala audio.Gimp e lo strumento principale di questo metodo. Na-turalmente, sto un po’ bluffando: devo utilizzare unprogramma che trasforma un file audio in una immagi-ne idonea. Poi, posso applicare un “filtro passa-basso”a questa immagine e ottenere da questa l’audio filtra-

Computer Programming n. 181 [None 2009] 49

Page 50: Computer Programming n. 181 - Geografia Computazionale

PROGRAMMING

to. Si noti che ho scritto “filtro passa-basso” tra apici:non utilizzero Gimp per applicare un filtro passa-bassografico (ossia, un operatore blur). Ma siate pazienti:tra poche righe svelero il “trucco”.

Pre e post-elaborazione audio con Arse

Prima di passare a Gimp, l’audio in in-put deve essere processato. Ho scelto Arse(http://arse.sourceforge.net/) come tool di pre-elaborazione. Arse, acronimo di “Analysis andReconstruction Sound Engine”, e un tool a riga dicomando suddiviso in due parti principali: uno spettro-grafo e un sintetizzatore a spettrogramma. Utilizzeroentrambi i tool per pre-processare e post-processareun file audio. Nel passaggio di pre-elaborazionefornisco in input un file audio a Arse, che restituirain output uno spettrogramma (ossia un’immagine,buona da fornire in input a Gimp). Nel passaggio dipost-elaborazione, fornisco ad Arse lo spettrogrammafiltrato, per ottenere in output un file audio.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Sfortunatamente, la generazionedello spettrogramma di un segnale

e la successiva sintesi con Arsenon porteranno al segnale

originale- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Sfortunatamente, la generazione dello spettrogrammadi un segnale e la successiva sintesi con Arse non por-teranno al segnale originale. Cio significa che il me-todo che propongo e in teoria perfetto, ma non si puoutilizzarlo effettivamente senza accettare qualche tra-sformazione audio (ad esempio, un suono di basso cheviene riprodotto come un suono di piano, o una vo-ce umana riprodotta come voce sintetica). Comunqne,procediamo: un utilizzo intelligente di Arse vi dara ri-sultati abbastanza buoni. Non so se esista o meno untool piu efficiente e affidabile di Arse: se cosı fosse,utilizzatelo e verificate i risultati; e fatemelo sapere!L’immagine che Arse genera ha le seguenti caratteri-stiche:

Figura 2: Una schermata che mostra come utilizzare Arse pereseguire l’analisi audio e la sintesi dello spettrogramma

• e a toni di grigio (i pixel neri rappresentano ilsilenzio);

• le righe rappresentano l’analisi di una banda difrequenze;

• ciascuna colonna rappresenta 1 secondo delsegnale.

Nella Figura 2 si vedere the user interaction with Arse,mentre nella Figura 3 e mostrato un segnale, l relativospettrogramma e i grafici di sintesi.Arse e un progetto molto giovane, la versione corren-te e la 0.1. Ha alcune maggiori limitazioni. L’au-tore le descrive sul sito Web del progetto e nel fi-le README allegato al programma, che fornisceulteriori informazioni sull’utilizzo e sulle specifiche.

Il filtro passa-basso proposto

Una volta ottenuto lo spettrogramma, apritelo conGimp. Ricordate che la riga 0 dello spettrogrammacontiene le informazioni sulla frequenza piu alta, e chela riga n contiene quelle della frequenza piu bassa.Graficamente, il filtraggio passa-basso di un a “inter-vallo di frequenze” consiste nel colorare di nero le ri-ghe di pixel tra 0 e x, dove x e la riga dove e situata la

50 Computer Programming n. 181 [None 2009]

Page 51: Computer Programming n. 181 - Geografia Computazionale

Figura 3: Analisi e sintesi del file d’esempio drama.wav, unfile che fa parte della suite OpenOffice. Da destra a sinistra:segnale originale, spettrogramma e segnale ricostruito

frequenza di taglio. Per farlo, basta selezionare l’op-portuna sezione rettangolare dell’immagine, e riempir-la di nero. E tutto. Cosı facendo, avrete soppresso lefrequenze piu alte della frequenza di taglio, senza inci-dere sulle altre frequenze: proprio cio che farebbe unfiltro 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-bassoaudio attraverso la relativa immagine dello spettro-gramma. Sintetizzando l’immagine “filtrata” vi verrafornito il corrispondente audio filtrato. Al momento ilsolo motivo per cui la trasformazione non “funziona” eper via del tool di post-elaborazione. Una volta che Ar-se migliorera, otterrete un opportuno filtro passa-bassoideale.

Page 52: Computer Programming n. 181 - Geografia Computazionale
Page 53: Computer Programming n. 181 - Geografia Computazionale

RUBRICHEWindows Thread e Posix Thread a confronto

Thread contro Thread

Danilo Treffiletti

Il titolo e decisamente da cineteca a rievocare un famosofilm del 1979. A differenza del film, qui non parliamo dinessuna causa legale, di nessun abbandono e non ci sonoaffidamenti di cui parlare. Parliamo di due modi diversi di

realizzare lo stesso concetto: il Thread.

Il Thread e una parte atomica di esecuzione di una elaborazio-ne. Un processo, che rappresenta l’istanza in esecuzione di unprogramma e che comprende oltre al codice del programma stes-so anche i dati che sta elaborando, puo essere composto da piuThread che possono eseguire in modo autonomo e concorrentecondividendo gli stessi dati e lavorando per ottenere lo scopo co-mune dell’intero processo. I moderni sistemi operativi sono or-mai multi-task da parecchio tempo: questo significa che e pos-sibile eseguire processi diversi in parallelo (poi, in realta questoparallelismo puo essere reale o virtuale a seconda dell’architettu-ra hardware della macchina che esegue). Molti sistemi operativi,pero, sono anche multi-threading: permettono ad un processo didividersi in tante sottoparti autonome che lavorano in paralleloper raggiungere il risultato.

Attualmente sono presenti due filosofie diverse di concepire i Th-read: la prima e quella di Microsoft con i Windows Thread, laseconda e quella nata dalla comunita *NIX con i POSIX Threaddetti anche PThread.

Sul blog e sul forum di Intel sono presenti due articoli in cui siparla a favore di uno o dell’altro tipo di Thread.

I thread di Windows

L’articolo sul blog si esprime a favore dei Thread di Windows,affermando che questi sono piu comodi da usare in quanto e pre-sente un solo tipo di dato per Thread, Mutex e segnali e dunquesi puo usare una sola funzione per creare un blocco su un threadche deve terminare, un mutex che e bloccato o un evento che deveessere segnalato. Inoltre i segnali sono persistenti e permettonodunque di essere rilevati anche con controlli effettuati dopo chel’evento sia stato segnalato. Infine e presente la funzione Wait-ForMultipleObjects che permette di bloccare un Thread in attesache terminino una serie di Thread, vengano sbloccati una serie diMutex e arrivi un segnale per una serie di eventi, il tutto invocan-do una sola funzione. Tutto questo, secondo l’autore dell’articolo,porta ad una maggior eleganza di programmazione.

I thread POSIX

L’articolo presente sul forum, invece, considera soprattutto que-sti punti uno svantaggio dell’implementazione dei Win Thread, afavore dunque dell’uso dei PThread. L’uso di tipi di dati diversiper le tre entita migliora la gestione e rende piu facile la letturadi codice altrui. Inoltre e piu facile verificare il codice in quantosono necessarie funzioni diverse per attendere la terminazione diun Thread, lo sblocco di un Mutex o la segnalazione di un evento,evitando dunque errori o confusione. Infine, i segnali persistentipossono essere un peso per il programmatore che deve ricordarsidi resettare lo stato del segnale quando sa che potrebbe servireper un blocco successivo, mentre i segnali POSIX vengono cat-turati dai Thread in ascolto oppure scartati, evitando di sbloccareThread che invece dovrebbero bloccarsi in attesa della prossimasegnalazione.

Un confronto

Personalmente ho usato entrambi i tipi di Thread e devo dire chemi trovo a condividere pienamente le argomentazioni a favore del-la versione POSIX. Il dover usare tre tipi di dato diverso non causanessun problema in quanto i tre oggetti sono concettualmente di-versi e dunque devono avere significato diverso anche all’internodel codice, avere funzioni diverse e non avere una funzione chepermette di attendere un insieme misto di Thread, Mutex e se-gnali non appesantisce la programmazione ma, invece, rende piufacile e veloce il debug e la lettura di codice altrui. Infine l’imple-mentazione POSIX permette la portabilita del codice in quanto iPThread sono nati per gli ambienti *NIX e Mac OS, ma e statocreato un port per ambiente Windows che consiste in una DLL dalinkare nel proprio progetto.

Riferimenti

1. Why Windows Threads Are Better ThanPOSIX Threads di Clay Breshears (Intel)http://softwareblogs.intel.com/2006/10/19/why-windows-threads-are-better-than-posix-threads/

2. Why Pthreads are better than Win32threads di Clay Breshears (Intel)http://softwarecommunity.intel.com/ISN/Community/en-US/forums/post/840096.aspx

Computer Programming n. 181 [None 2009]

Page 54: Computer Programming n. 181 - Geografia Computazionale

RUBRICHELe nuove riviste Infomedia

Pensare – Progettare –Programmare

CONTRIBUIRE alle nuove riviste e possibile in moltimodi. Proprio mentre scriviamo queste note, sonomolti i processi tecnologici, gestionali e editoriali chestiamo affrontando:

• Abbiamo riorganizzato il sistema aziendale a partire dauna nuova impronta gestionale. La ’Nuova Infomedia’ sivuole configurare come una Impresa Sociale di Comunita,partecipata da tutti coloro che hanno interesse nelle sueattivita.

• Stiamo raccogliendo tutte le linee guida che hanno permes-so negli anni la pubblicazione di libri e riviste per condivi-dere queste competenze con tutti coloro che vorranno esse-re coinvolti in questa impresa. Questo e un passaggio moltoimportante perche rendera visibile e trasparente il processoeditoriale e permettera il convolgimento di tutti coloro chevorranno contribuire anche solo in modo limitato e secondola propria disponibilita. Il nuovo processo editoriale per-mette a ciascuno, anche con minime competenze, di segui-re l’intero processo produttivo ed essere quindi partecipanteattivo nella comunita.

• Abbiamo costruito un sistema (open source) che elimina ifattori di intermediazione classici delle strutture redaziona-li, e basato su strumenti classici dello sviluppo software e,crediamo, innovativo e cool.

Contribuire e importante per far sentire la propria voce, per farsiconoscere e anche un po’ per ridistribuire un po’ di quello chedalla comunita dei programmatori ciascuno di noi prende ognigiorno.I suggerimenti che in questi mesi abbiamo avuto sono stati de-terminanti per determinare l’architettura organizzativa adeguata.Dobbiamo adesso essere in grado di seguire con la necessariacostanza una fase costruttiva ed operativa.E fondamentale proporre nuovi articoli basati sulle proprie espe-rienze, sulle tecniche piu efficaci, sui trucchi che permettono di ri-solvere problemi particolarmente oscuri, indicare percorsi e sem-plicemente raccontare le proprie esperienze nella realizzazione diprogrammi interessanti e significativi. I nostri lettori sono cer-tamente in grado di farlo, se solo il 5% di questi scrivesse unarticolo o ci raccontasse le proprie esperienze di programmazio-ne avremmo abbastanza materiale per riempire tutte le riviste perdue anni.Infomedia e la casa editrice dei programmatori e delle softwarehouse italiane. Di quelli che ancora credono e combattono per

mostrare che l’informatica non e fatta solo dai grandi e potentinomi, dalle immense societa di intermediazione che sono spessosolo gusci vuoti che per motivi di dimensione o di coinvolgimen-to possono accedere alle grandi commesse, e che spesso non fan-no altro che subappaltare alle societa piccole e specializzate o aisingoli professionisti.

Le priorita

Stiamo maturando un’importante esperienza nella costruzione diun modello veramente innovativo di open publishing.L’area principale in cui cerchiamo la collaborazione dei nostrilettori, degli autori che in questi anni ci hanno aiutato e quelladei contenuti. Adesso che il processo di editing, composizionee impaginazione e stato riorganizzato, arrivare ad avere un flussocostante di articoli di qualita e il nostro principale obiettivo.Arrivare ad ottenere un flusso costante e volontario di articoli equindi oggi la priorita piu stringente. E un obiettivo allo stessotempo semplice, a verificare i numeri necessari e i collegamen-ti che gia abbiamo, ma reso complesso dalla volonta di assumerequel ruolo di riferimento che una iniziativa come questa deve ave-re. La possibilita che un nucleo limitato di autori bravi possanotenere in piedi questa iniziativa non e cosı remota, al punto che aben vedere cosı hanno funzionato le riviste in questi ultimi anni,e cosı spesso funzionano altrove. Ma se l’obiettivo e la ’pluralita’dell’espressione, la rappresentazione di quanto veramente avvie-ne nella piccola ma vitale comunita italiana dei programmatori,ed eventualmente la rappresentazione delle migliori espressioniestere nel campo, la storia cambia moltissimo.Il lavoro da fare si moltiplica, nella ricerca di contatti e di ma-teriali che, per esempio gia abbozzati in rete su blog o forum,potrebbero diventare ottimi ed interessanti articoli degni di que-sto nome. Il lavoro si moltiplica perche un ’bravo informatico’, diquelli che oltre a conoscere la professione la sa comunicare in unoscritto adeguato fa spesso molta piu fatica a seguire, indirizzare ecorreggere il lavoro altrui che non rifarlo daccapo da se. Eppurequesto e in se stesso un impegno che consideriamo utile.Il team che lavora dietro questo progetto e variegato e, attual-mente, deve sopperire alla mancanza di tempo, innanzitutto, e dicompetenze specifiche su alcuni campi.In questo momento, come sa chi gia ci segue sul Web, tutto l’e-cosistema che e stato creato e (un po’ troppo) variegato, ma que-sto e stato necessario per contemperare differenti esigenze e modidi lavorare da parte di chi ha offerto la propria attivita in modovolontario pur di far andare avanti questa storia.

54 Computer Programming n. 181 [None 2009]

Page 55: Computer Programming n. 181 - Geografia Computazionale

RUBRICHE

I servizi che ci sono (e che mancano)

Come sempre accade nelle comunita di sviluppatori, i servizi chesono attivati prima, meglio presidiati, sono quelli che servono perle realizzazioni pratiche.Il sito http://the.programmers.net rappresenta attualmente solouna piccola vetrina delle attivita che si stanno realizzando e al-cune informazioni circa l’iscrizione, le attivita, la rete sociale e,ovviamente, le riviste. Siamo alla ricerca di un webmaster.Gli strumenti online che sono stati per ora attivati (trac, SVN,wiki) sono ad uso esclusivo della redazione e sono gestiti inautonomia con la minima formalita.

Trac: http://trac.xed.it

Wiki: http://wiki.infomedia.it

Questi servizi avrebbero ciascuno bisogno di un amministratorededicato ed esperto. Il lavoro da fare e poco, infinitesimale: ma el’insieme di questi infinitesimi che riempie tutti gli interstizi delnostro tempo libero fino a tarda notte, quindi AIUTO!. E possibileproporre la propria candidatura usando i moduli che sono onlinesul sito the.programmers.net nella sezione Riviste/Moduli.

Il nuovo sito (che c’e)

Il sistema online che ha accompagnato la pubblicazione del-le riviste sul web della vecchia societa, ancora disponibile suwww.gruppoinfomedia.it e stato sostituito dalla semplice ap-plicazione di una nuova piattaforma di publishing basata suDrupal e iScribd.

Sito: http://www.infomedia.it

Il Forum (che non c’e)

Sarebbe invece interessante, per cio che riguarda la costruzionedei nuovi servizi e dei nuovi strumenti, l’apertura di un forumonline. Le nostre attuali forze ce lo impediscono, ma se qualcunodei lettori volesse candidarsi all’amministrazione e alla gestione,saremo ben felici di aprire anche questo importante servizio.I coordinatori dei forum dovranno provvedere all’installazione,all’amministrazione e all’upgrade dei sistemi, nonche ad un mini-mo di moderazione dei contenuti inappropriati. Per le candidaturee possibile usare i moduli online sul sito.

I team (che ci sono)

Sono tre i team che stanno lavorando:

• La crew editoriale: Si occupa dell’evoluzione dello spa-zio editoriale ed in particolare della redazione delle riviste(Michele Monti [email protected]).

• La crew software: Si occupa dell’evoluzione del soft-ware di gestione dell’associazione per le realizzazionieditoriali e per la gestione associativa (Adriano [email protected])

• La crew web: Si occupa dell’evoluzione degli stru-menti web dell’associazione per le realizzazioni edi-toriali e per la gestione associativa (non [email protected])

L’email (a cui non rispondiamo)

Per mettersi in contatto con i team che stanno lavorando alla rea-lizzazione delle riviste non e attualmente molto semplice. Siamopochi e i task della produzione hanno certamente la priorita.Non trascuriamo nessuna email, semplicemente spesso non c’euna risposta alle vostre domande, o ci sara nel momento in cuisara opportuno.Attualmente pero nessuno gestisce il flusso delle richieste (piuche legittime) degli abbonati. Ci impedirebbe di concentrarci sul-le gia complesse attivita di ’ricostruzione’. Tutte le mail finorautilizzate dalle redazioni Infomedia (insieme ad una spaventosaquantita di spam, messaggi commerciali e promozionali, che nep-pure gli antispam piu efficaci abbattono piu di tanto) sono ruotatealla vecchia societa, i quali ci inoltrano solo i messaggi che riten-gono effettivamente interessanti. Abbiamo intenzione di arrivaread affrontare anche questi problemi, ma fare tutto contempora-neamente non era pensabile. Rimanete sintonizzai, frequentate isiti web ed in particolare:

Blog: http://blog.infomedia.it

Il sistema d’impaginazione

Il nuovo sistema d’impaginazione e disponibile liberamente suInternet. E possibile scaricarlo e provarlo da:

https://www.assembla.com/spaces/turing/

Ovviamente non e ne immediato ne user friendly, per ora, maavendo un po’ di conoscenze degli strumenti di sviluppo opensource (tra cui SVN, python, bash, make, emacs) e un po’ di di-mestichezza con il TEX si riesce ad averne ragione. Ovviamenteogni contribuzione e ben accetta.

Conclusioni

Infomedia realizza le rivista dei programmatori italiani di talento,che sanno trovare soluzioni geniali che non sempre sono adegua-tamente conosciute, e che spesso sono obbligati a trovare la pro-pria strada al di fuori del panorama italiano, ma non per questosaranno da noi dimenticati. E importante per noi mantenere unitala nostra comunita indipendentemente dalle distanze geografiche.Infomedia e tutto questo, ma puo esserlo solo se tu ci metterai deltuo.E proprio il caso di dire che in questo momento non dovrestechiedervi cosa Infomedia puo fare per voi, ma cosa potete farevoi per Infomedia.

Computer Programming n. 181 [None 2009] 55

Page 56: Computer Programming n. 181 - Geografia Computazionale

RUBRICHEHanno collaborato a questonumero...

Lorenzo Dal Col

nato a Vittorio Veneto nel 1985 laurea a pieni voti in Ingegne-ria Informatica all’Universita di Trieste, studia per la laureaspecialistica. Da 5 anni si occupa di sviluppo di applica-zioni Web server con PHP, Java, .NET, MySQL, Postgre-SQL e lato client con Javascript, AJAX.Ha sviluppato unrobot mobile a comando vocale Linux real-time e Micro-soft Windows Server. Si interessa di grafica digitale e webdesign.

Mail [email protected] www.lordalcol.com

Danilo Treffiletti (Urban)

nato nel 1982. Da sempre interessato al mondo dell’informaticae delle nuove tecnologie. Ha frequentato l’I.T.I. e successi-vamente la facolta di Ingegneria Informatica dell’Universitadi Catania, in cui si laureato nel 2008. stato presente sulweb fin dal 1998 con diversi siti di carattere amatoriale edivulgativo. Nel ottobre del 2006 collabora alla fondazionedel blog di divulgazione informatica StormedBrains.

Blog http://urbands.net/stormedbrains

Gary Richmond

e un aspirante esperto della rete con alle spalle una laurea e unaspecializzazione in Inglese del diciassettesimo secolo, ven-ticinque anni di attivita in un ente pubblico e di recente si esemi-pensionato per godersi i suoi illeciti guadagni.

Scott Carpenter

ha frequentato il movimento free software sin dal 1998 e nel2006 ha iniziato a impegnarsi in modo piu attivo (Mo-ving to freedom). Lavora come sviluppatore/analista soft-ware dal 1997, e attualmente si occupa di integrazione diapplicazioni enterprise.

Sito www.movingtofreedom.org

Gianluca Pignalberi

dopo la laurea in Scienze dell’Informazione si e occupato di va-rie cose, tra cui la programmazione della classe TEX percomporre Free Software Magazine, da cui deriva quella di

Infomedia, e dell’impaginazione della stessa. E attualmen-te il direttore di ArsTEXnica, rivista italiana di TEX, LATEX etipografia digitale. Usa software libero per tutto quello chepuo, e cerca di soddisfare la sua passione per la scritturacontribuendo a riviste di settore.

Sito http://www.freesoftwaremagazine.com/contacts/g.pignalberi

Gianluigi Spagnuolo

ingegnere informatico si occupa di sicurezza e programmazio-ne (Ruby e C#). Si interessa di sistemi operativi UNIX, dicompilatori e PLT in generale e partecipa allo sviluppo dinumerosi progetti open source.

Mail [email protected] http://krsh.info

Emmanuele Somma

programmatore, ingegnere informatico e scrittore, e da anni unodei principali animatori della scena del software libero inItalia. Sia ricorda trafficasse con le prime bbs amatoriali gianel ’86, si dice abbia venduto il primo programma GPL inItalia gia nel ’94, ha fondato e diretto Linux Magazine nel’99. Oggi lavora per un autorita finanziaria in cui suppor-ta e sviluppa applicazioni scientifico-econometriche con ilsotware libero, ma non solo.

Mail [email protected] http://www.exedre.org

Blog http://exedre.xed.it

ed inoltre. . .

Un ringraziamento particolare va anche a: Adriano Peluso,Andrea De Carolis, Daniela Della Porta, Dino Meoni, Dona-to Marcello Sabato, Francesco Pallanti, Gianluigi Coccia, Lu-ciano Talarico, Maria Letizia Mari, Natale Fino, Noemi Somma,Roberto Galoppini.

56 Computer Programming n. 181 [None 2009]

Page 57: Computer Programming n. 181 - Geografia Computazionale
Page 58: Computer Programming n. 181 - Geografia Computazionale

La conferenza porta sul palco i più importanti esperti nazionali einternazionali su programmazione agile, open source, web2.0 e tutte lediscipline che contribuiscono alla costruzione di un prodotto stabile,usabile e vendibile.

www.bettersoftware.it

Better Software è la prima conferenza Italiana dedicata allo sviluppo di software e rivolta a imprenditori e manager del settore.

FIRENZE, 6 E 7 MAGGIO 2009

Sconto del 20% registrandoti online

con il codice promozionale BM3V2D9G