Computer Programming n. 181

58

description

Geografia Computazionale

Transcript of Computer Programming n. 181

Page 1: Computer Programming n. 181
Page 2: Computer Programming n. 181
Page 3: Computer Programming n. 181

EDITORIALE

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

Non cambierai mai le cose combattendo la realta esistente. Per cambiare

qualcosa, costruisci un modello nuovo che renda la realta obsoleta.

R. Buckminster Fuller

COMPUTER PROGRAMMING e la rivista di programmazione che da quasi venti anni

ha raccolto la voce dei programmatori, dei sistemisti, dei professionisti, degli studenti,

dei ricercatori e dei professori d’informatica italiani.

Sono piu di 800 gli autori che hanno realizzato per le testate Computer Programming,

Dev, Login, Visual Basic Journal e Java Journal, molte migliaia di articoli tecnici, pre-

sentazioni prodotti, tecnologie, protocolli, strumenti di lavoro, tecniche di sviluppo

e semplici trucchi e trabocchetti. Oltre 6 milioni di copie distribuite trentamila pa-

gine stampate fanno di questa impresa la piu grande ed influente realta dell’editoria

specializzata nel campo della programmazione e della sistemistica.

In tutti questi anni le riviste hanno vissuto della passione di tanti, come te, che vedo-

no nella programmazione non solo una professione ma una passione vitale e un vero

divertimento.

Mettere in condivisione le soluzioni adottate nello sviluppo di un programma, riper-

correndone le tappe e un ottimo modo per documentare al meglio il proprio lavoro,

fissare i concetti e verificare la qualita delle proprie realizzazioni. E uno splendido mo-

do per dare agli altri la possibilita di impare nuove tecniche e progredire nelle proprie

competenze e per rendere il nostro ambiente piu vitale, competitivo ed attivo.

La programmazione o la soluzione dei problemi sistemistici ci da molta gioia, perche e

necessario superare i limiti della nostra conoscenza. A volte abbiamo la sensazione che

questo piacere non e possibile da comunicare. Questo e il luogo giusto per farlo. I tuoi

“pari” sono interessati a queste soluzioni, ai passi che hai compiuto per raggiungere un

risultato e perche no, agli errori che commesso nei tuoi tentativi.

L’informatica e un ambito professionale unico, in cui le spinte competitive sono sempre

state forti, ma altrettanto forti ed importanti e stata la tensione a cooperare. La condi-

visione delle informazioni e la diffusione delle conoscenze sono l’anima costitutiva di

questa Comunita.

Le nuove Computer Programming, Dev e Login vogliono incentivare questi aspetti per

essere ancora di piu al centro di questa Comunita. Aiutateci. Perche senza queste riviste

programmatori e sistemisti italiani rimarrebbero senza voce.

Chiunque tu sia, quindi, quale che sia la tua storia, i tuoi strumenti di lavoro, il tuo

linguaggio di programmazione, la tua piattaforma o framework, il tuo sito o il tuo

programma. . . contribuisci a questa Storia per permetterci di andare avanti.

Computer Programming e una

rivista realizzata da

Infomedia Editori Coop.

e Ass. Turing Club

Direzione e Amministrazione:

Via Iannacchini, 28 - Avellino

In attesa di registrazione presso il

Tribunale di Avellino

(richiesta del 4/3/2009)

D R

A. Somma

M E

G. Spagnuolo ([email protected])

M. Monti ([email protected])

L C

XED.it ([email protected])

G

Redsign

(www.redsign.it

[email protected])

A

S. Carpenter

L. Dal Col

G. Pignalberi

G. Richmond

E. Somma

D. Treffiletti

L’

100% O S OO,

E, BHL, LATEX, G, I L,

P BASH

For copyright information about the contents of Compu-

ter Programming, please see the section “Copyright” at

the end of each article if exists, otherwise ask authors.

Infomedia contents is © 2009 Infomedia and released as

Creative Commons 2.5 BY-NC-ND. Turing Club content

is © 2009 Turing Club released as Creative Commons

2.5 BY-ND.

Le informazioni di copyright sul contenuto di Computer

Programming sono riportate nella sezione “Copyright”

alla fine di ciascun articolo o vanno richieste direttamen-

te agli autori. Il contenuto Infomedia e© 2009 Infomedia

e rilasciato con Licenza Creative Commons 2.5 BY-NC-

ND. Il contenuto Turing Club e © 2009 Turing Club e

rilasciato con Licenza Creative Commons 2.5 BY-ND. Si

applicano tutte le norme di tutela dei marchi e dei segni

distintivi.

E in ogni caso ammessa la riproduzione parziale o to-

tale dei testi e delle immagini per scopo didattico pur-

che vengano integralmente citati gli autori e la completa

identificazione della testata.

Manoscritti e foto originali, anche se non pubblicati, non

si restituiscono.

Contenuto pubblicitario inferiore al 45%.

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

$Rev: 45 $

Computer Programming [None 2009]

Page 4: Computer Programming n. 181

Indice Numero , None 2009

EDITORIALE

L’inizio di una nuova avventura 3

GEOGRAFIA COMPUTAZIONALE

Trasformare le coordinate geo-grafiche da WGS84 a UTM 6

Lorenzo Dal Col, Emmanuele Somma

La cartografia si occupa di rappresentare la superficie

terrestre sul piano secondo norme e segni convenzio-

nali. La rappresentazione della superficie fisica ter-

restre e un’operazione complessa poiche la superficie

da rappresentare non e piana, il terreno ha una forma

molto irregolare e le dimensioni dell’oggetto da rap-

presentare eccedono le normali capacita di misura del-

l’uomo. Quest’articolo fornira una breve introdurra al-

la teoria matematica delle trasformazioni geografiche

piu comuni e se ne mostrera una veloce implementa-

zione in linguaggio SQL da usare come stored proce-

dure in MySQL. Si vedra inoltre anche come utilizzare

il noto pacchetto PROJ per realizzare le trasformazioni

geografiche.

Trasformazione di coordinategeografiche in Javascript 14

Lorenzo Dal Col

In numerose applicazioni e necessario risolvere il

problema della trasformazione delle coordinate geo-

grafiche tra sistemi di riferimento differenti. In questo

articolo verra illustrato un applicativo che effettua la

trasformazione delle coordinate del sistema WGS84

a quelle UTM. L’obiettivo e di fornire una procedura

di trasformazione che possa funzionare anche con

dati acquisiti in tempo reale, senza la necessita di

eseguire post-elaborazioni; e stato inoltre scelto il

linguaggio Javascript in modo che possa funzionare in

un qualsiasi browser web che supporti lo scripting e

in un qualsiasi sistema operativo, anche quello degli

smart-phone, che sempre piu spesso integrano un

ricevitore GPS.

USER SPACE

Konqueror: tutto da una interfac-cia 22

Gary Richmond

Suggerimenti, trucchi e funzionalita per sfruttare al

massimo le caratteristiche di Konqueror. Si vedra co-

me migliorarne le prestazioni, utilizzarlo al meglio co-

me file manager e come browser e aggiungere nuove

funzionalita attraverso i Service Menu.

4 Computer Programming n. 181 [None 2009]

Page 5: Computer Programming n. 181

Indice

PROGRAMMING

Estensioni Google in Firefox 32

Gary Richmond

Questo articolo illustrera come far interagire Firefox

con i servizi offerti da Google attraverso con Gmail

Notifier, Better Gmail, FireGPG, Get Things Done,

Better GCal, Remember The Milk, GSpace, FEBE,

Cleo, Zotero, Customize Google...

Estendere Nautilus: (fotocameree) rotazione di immagini JPG 43

Scott Carpenter

Partendo dall’esigenza di ruotare un’immagine diret-

tamente da Nautilus si vedra come come personaliz-

zare il menu popup per adattarlo alle proprie esigenze

sfruttando la potenza di bash.

Filtri audio ... con Gimp 48

Gianluca Pignalberi

Gimp viene universalmente utilizzato per la manipola-

zione di immagini. Tuttavia, con un po’ di creativita

e un paio di trucchi, puo anche essere utilizzato come

filtro audio! Ecco come...

RUBRICHE

Thread contro Thread 52

Danilo Treffiletti

Windows Thread e Posix Thread a confronto...

Pensare – Progettare – Program-mare 53

Hanno collaborato a questo nu-mero... 55

Photo Credit:

Mappa dell’Europa di Mercatore

Gerhard Mercator nacque nel 1512 nelle Fiandre. Ebbe una formazione classica: latino,

greco, logica, grammatica e retorica.

Pubblico una mappa della Terra Santa, un piccola mappa del globo terrestre, una map-

pa delle Fiandre e un libro sulla grafia corsiva. Fu infatti il primo a usare sulle mappe

geografiche il carattere corsivo italic.

Per questa attivita cartografica Mercator fu perseguitato dalle autorita religiose cattoliche,

accusato di eresia e incarcerato per circa sette mesi. Solo le proteste dell’Universita gli

permisero di essere scagionato dalle accuse. Fu pero poi perseguitato dall’Inquisizione

poiche protestante e dovette trasferırsi a Duisburg in cui all’epoca il duca Guglielmo il

Ricco era riuscito a mantenere indipendente tra le le confessioni e vi aveva creato un

significativo circolo di intellettuali.

Lı insegno liberamente geometria, matematica e cosmologia presso il ginnasio, e nel 1563

venne nominato cartografo ducale.

Mercator morı dopo aver raggiunto una invidiabile posizione economica a Duisburg. La

sua tomba e situata nella Chiesa del Salvatore di Duisburg (Salvatorkirche).

Image Credit: WikiMedia

Computer Programming n. 181 [None 2009] 5

Page 6: Computer Programming n. 181
Page 7: Computer Programming n. 181

Trasformare le coordinategeografiche da WGS84 a UTM

Le formule di Molodenskij e Gauss rese semplici

Lorenzo Dal Col, Emmanuele Somma

La cartografia si occupa di rappresentare la

superficie terrestre sul piano secondo nor-

me e segni convenzionali. La rappresenta-

zione della superficie fisica terrestre e un’o-

perazione complessa poiche la superficie da rappresen-

tare non e piana, il terreno ha una forma molto irre-

golare e le dimensioni dell’oggetto da rappresentare

eccedono le normali capacita di misura dell’uomo.

Quest’articolo fornira una breve introdurra alla teoria

matematica delle trasformazioni geografiche piu co-

muni e se ne mostrera una veloce implementazione

in linguaggio SQL da usare come stored procedure

in MySQL. Si vedra inoltre anche come utilizzare il

noto pacchetto PROJ per realizzare le trasformazioni

geografiche.

Le trasformazioni

Per realizzare una trasformazione corretta e necessario

che a ciascun punto del terreno sia associato univoca-

mente un punto sulla superficie di riferimento (mappa)

in modo che:

• la sua trasformazione inversa dia un punto ’vici-

no’ a quello alla superficie terrestre (con un errore

accettabile)

• la sua rappresentazione matematica sia semplice

• si possa stabilire una corrispondenza biunivoca

fra i suoi punti e quelli della superficie terrestre

• si possa istituire sulla mappa una geometria per

eseguire semplicemente calcoli geodetici

Il passaggio dalla Terra alla carta avviene in due pas-

saggi. Innanzitutto si proietta il terreno sulla super-

ficie curva di riferimento e poi se ne realizza una

rappresentazione piana bidimensionale.

Proiezione sulla superficie di riferimento

Questo primo passaggio consiste nel far coincidere un

punto della superficie terrestre con uno preso su una

superficie di riferimento tramite una proiezione verti-

cale. La superficie di riferimento ideale e detta “geoi-

de”, che e la superficie equipotenziale del campo gra-

vitazionale terrestre. Il geoide approssima abbastanza

bene la superficie terrestre, ma poiche non possiamo

conoscere il valore della gravita terrestre in ogni punto

della Terra non e esprimibile con formule analitiche.

Per ovviare a questo problema solitamente si adotta co-

me superficie di riferimento un ellissoide di rotazione,

che si descrive facilmente con formule analitiche.

Attraverso calcoli astronomici sono stati definiti di-

versi ellissoidi di riferimento, nel 1924 furono adot-

tati universalmente quali parametri dell’ellissoide di

riferimento i valori proposti da Hayford. L’ellissoide

cosı dimensionato e da allora indicato come “ellissoide

internazionale”.

Poiche l’ellissoide di riferimento si discosta rispetto al

geoide deve essere ruotato e centrato il piu vicino pos-

Computer Programming n. 181 [None 2009] 7

Page 8: Computer Programming n. 181

GEOGRAFIA COMPUTAZIONALE

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

sibile alla zona terrestre che vogliamo mappare (pun-

to di emanazione), in modo da ridurre al minimo la

distanza tra i due.

Rappresentazione bidimensionale

Per passare dalla rappresentazione su supporto cur-

vo ad una rappresentazione piana si ricorre ad una

rappresentazione cartografica, stabilendo per ciascun

punto una corrispondenza biunivoca fra le coordinate

curvilinee e le coordinate cartesiane ortogonali.

La rappresentazione piana che si ottiene e deformata

rispetto quella disegnata sul supporto curvo.

Ad esempio, la Proiezione universale trasversa di Mer-

catore (UTM) o conforme di Gauss e una proiezio-

ne pseudocilindrica assimilabile alla cilindrica inversa,

ma le sue equazioni della carta sono state costruite in

modo da ottenere l’isogonicita.

I sistemi di riferimento geodetici

I sistemi di riferimento sono basati su coordinate per

descrivere in modo matematico una posizione geogra-

fica. Si tratta di modelli geometrici basati su ellissoidi

di rotazione utilizzati per descrivere la forma della Ter-

ra e ogni posizione sulla sua superficie. Ciascun siste-

ma e identificato dal suo DATUM che identifica la for-

ma, la posizione e l’orientamento del modello rispetto

alla Terra e alla sua superficie.

Quando si esprime una posizione geografica in oriz-

zontale tramite coordinate oppure in verticale con l’al-

tezza, e necessario sempre associare il valore espresso

al DATUM di riferimento. Infatti esistono diversi si-

stemi di riferimento geodetico ed il datum e l’unico

modo univoco per indicare quello prescelto.

I vari sistemi di riferimento geodetico differiscono tra

loro per la definizione dell’ellissoide di rotazione (la

forma geometrica usata per approssimare la forma del-

la Terra). Ad esempio il datum WGS72 definisce un

ellissoide con semiasse maggiore di 6.378.135 metri e

schiacciamento ai poli di 1/298.26, mentre per WGS84

i valori sono 6,378,137 e 1/298.257223563 rispettiva-

mente. Nel DATUM si indica anche l’orientamento e

l’origine delle coordinate.

La conversione delle coordinate di un punto da un si-

stema di riferimento ad un altro non e operazione sem-

plice, si puo generalmente usare la corposa ed efficace

libreria Proj per questo scopo.

8 Computer Programming n. 181 [None 2009]

Page 9: Computer Programming n. 181

GEOGRAFIA COMPUTAZIONALE

Figura 2: Proiezione universale trasversa di Mercatore

(UTM) o conforme di Gauss.

Talvolta pero e necessario programmare direttamente

queste trasformazioni e cio e tutt’altro che comples-

so, come si vedra in seguito. Ma prima e necessario

conoscere alcuni sistemi di riferimento standard. In

particolare:

WGS84 World Geodetic System 1984

UTM Universal Transverse Mercator

ITA40 Roma Monte Mario o Gauss-Boaga

WGS84 – World Geodetic System 1984

E il sistema di riferimento utilizzato nel posiziona-

mento con la tcnologia GPS. E’ espresso tramite le

coordinate geodetiche X,Y,Z, riferite all’ellissoide di

rotazione geocentrico:

• l’asse Z e diretto verso la posizione del polo

medio definito nel 1984

• l’asse X e definito dall’intersezione del piano

equatoriale medio nel 1984 con il meridiano di

Greenwich

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

terna destrorsa

UTM – Universal Transverse Mercator

E la cartografia piu diffusa al mondo, nota anche come

Gauss-Boaga. Questa proiezione e approssimata note-

volmente dalla cilindrica trasversa inversa. Questo tipo

di cartografia e conforme. Le trasformate del meridia-

no centrale (di tangenza) e dell’Equatore sono rette e

rappresentano gli assi del sistema di riferimento (N e

E). Poiche piu ci si allontana dal meridiano centrale

piu il modulo di deformazione lineare sale, nel siste-

ma UTM l’ampiezza di un fuso e di 6 gradi, il sistema

risulta essere quindi policilindrico. Ogni fuso ha un

sistema N,E indipendente. Viene inoltre applicato alle

coordinate un coefficiente di contrazione di 0,9996 per

ridurre le deformazioni. Infine all’origine delle ascis-

se viene applicata una falsa origine di 500000 m, per

evitare valori negativi di E. Il riferimento geodetico e

basato sull’ellissoide internazionale con orientamento

europeo (ED50), cioe orientato a Postdam.

ITA40 – Roma Monte Mario o Gauss-Boaga

La proiezione cartografica Gauss-Boaga e stata adotta-

ta quasi interamente dalla cartografia ufficiale italiana

dal 1940. E’ stata proposta dal prof. Giovanni Boaga

quando era a capo dell’Istituto Geografico Militare, e

utilizza il sistema di riferimento Roma40, con ellissoi-

de orientato a Roma Monte Mario. La Carta d’Italia

dell’IGM in scala 1:25.000 (serie 25V), e stata redatta

in coordinate Gauss-Boaga, poi abbandonate in favo-

re della Proiezione Universale Trasversa di Mercatore

(UTM).

Le formule di trasformazione

La trasformazione delle coordinate avviene in due pas-

si. La prima funzione converte le coordinate ellissoidi-

che WGS84 in coordinate ellissoidiche ED50 usando

le formule di Molodenskij; la seconda converte le coor-

dinate ellissoidiche ED50 in coordinate piane UTM

usando le formule di Gauss adatte a questo scopo.

Le formule di Molodenskij

Le formule di Molodenskij complete a partire dal-

le coordinate ellissoidiche WGS84 ϕ, λ e h sono le

seguenti:

Computer Programming n. 181 [None 2009] 9

Page 10: Computer Programming n. 181

GEOGRAFIA COMPUTAZIONALE

ρ =a(1− e2)

(1− e2 sinϕ2)3

dove ρ e il raggio di curvatura del meridiano, a e

il semiasse equatoriale dell’ellissoide WGS84, e2 e

l’eccentricita dell’ellissoide WGS84

NG =a(1− e2)

1− e2 sinϕ2

dove NG e la Gran Normale

dϕ =sinϕcosλ

ρ+hx0+

sinϕsinλ

ρ+hy0+

cosϕ

ρ+hz0+

a2/NG +h

ρ+h(sinλ)Ex+

a2/NG +h

ρ+h(cosλ)Ey+

(1− (1−α)2)NG

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

ρ+ (1−α)2NG

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

in cui da e la differenza tra semiasse maggiore WGS84

e ED50 e dα e la differenza tra schiacciamento WGS84

e ED50, x0,y0,z0 sono le traslazioni fra i centri del si-

stema WGS84 e ED50 ed infine Ex,Ey,Ez sono le ro-

tazioni attorno agli assi dell’ellissoide ED50 mentre K

e il fattore di scala.

dλ =sinλ

(NG +h)cosϕx0+

cosλ

(NG +h)cosϕy0−

(1−α)2NG +h

NG +h(tanϕcosλ)Ex−

(1−α)2NG +h

NG +h(tanϕsinλ)Ey+Ez

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

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

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

a2

NG+h

)

K +a

NGda−

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

1−α

Figura 3: Mikhail Sergeevich Molodenksy (1909 - 1991)

Sebbene queste formule sembrino molto complesse la

loro scrittura con un qualsiasi linguaggio di program-

mazione e semplice e diretta, ad esempio nel Listato

1 e riportato l’inizio del sorgente di una stored proce-

dure SQL per il database MySQL che realizza questa

trasformazione.

In particolare dopo la dichiarazione della funzione e la

definizione dei tipi:

CREATE PROCEDURE ‘MOLODENSKIJ‘(PHI DOUBLE,

LAMBDA DOUBLE,

H DOUBLE,

A DOUBLE, e DOUBLE,

OUT D_PHI DOUBLE,

OUT D_LAMBDA DOUBLE,

OUT D_H DOUBLE )

BEGIN

DECLARE RHO DOUBLE DEFAULT 0.0;

DECLARE N_G DOUBLE DEFAULT 0.0;

sono scritte le formule relative alle variabili RHO e N G

10 Computer Programming n. 181 [None 2009]

Page 11: Computer Programming n. 181

GEOGRAFIA COMPUTAZIONALE

Nome Anno Semiasse maggiore Semiasse minore Schiacciamento

WGS 84 1984 6378137 6356752,3142449996 1/298,257

WGS 72 1972 6378135 6356750,5199149996 1/298,258

Hayford 1909 6378388 6356911 1/297,0

Elliss. Internaz. 1924 1924 6378388 6356911 1/297,0

Bessel 1841 6377397 6356078 1/299,1

Clarke 1880 1880 6378249 6356514 1/293,5

Clarke 1866 1866 6378206 6356583 1/294,9

Everest 1830 6377301 6356100 1/300,8

Airy 1830 6377563 6356256 1/299,3

Krassovsky 1940 6378245 6356863 1/298,3

South American 1969 6378160 6356774 1/298,3

Tabella 1: Principali ellissoidi di riferimento

# RHO - Raggio di curvatura del meridiano

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

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

# N_G - Gran Normale

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

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

ed infine le formule delle coordinate trasformate:

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

(RHO + H) +

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

(RHO + H) +

COS(PHI) * z_0 /

( RHO + H ) +

(Aˆ2 / N_G + H ) /

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

(Aˆ2 / N_G + H ) /

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

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

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

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

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

Come si puo vedere l’introduzione di queste formule,

anche in un sistema con limitate capacita di program-

mazione non comporta particolari problemi essendo

la formula chiusa e basata su funzioni matematiche

elementari.

I parametri adottati nei calcoli sono delle formule di

Molodenskij :

a 6378388.297

e2 0.00669438

x0,y0,z0 (0,0,0)

Ex,Ey,Ez (0,0,0)

K 0

da 251.297

dα 1.257222101

Le formule di Gauss

Una volta ottenute le coordinate ellissoidiche nel siste-

ma ED50 e necessario trasformarle nel sistema piano

attraverso le formule di Gauss. Nelle formule seguenti

si cercheranno i punti X e Y avendo come parametri di

input le coordinate ellissoidiche ED50 (qui rinominate

per semplicita ϕ, λ e h piuttosto che le dϕ, dλ e dh ot-

tenute dal passaggio precedente) e come costanti i pa-

rametri a che misura il semiasse dell’ellissoide ED50

questa volta e e2 l’eccentricita dell’ellissoide ED50.

La prima delle equazioni di Gauss e:

Y = g(ϕ,λ) =acosϕ

1− e2 sinϕ2λ+

1

6

acos(ϕ)3

1− e2 sinϕ2

(

1−

tan(ϕ)2+( e2

√1− e2

)2cos(ϕ)2

)

λ3+

1

120

acos(ϕ)5

1− e2 sinϕ2

(

5−

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

( e2

√1− e2

)2(

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

λ5

Anche in questo caso l’introduzione della funzione al-

l’interno del sistema programmato non comporta par-

ticolari complessita. La formula e lunga e abbastan-

za arzigogolata, ma facilmente esprimibile utilizzan-

do funzioni matematiche e trigonometriche elementari

alla portata di qualsiasi linguaggio.

Computer Programming n. 181 [None 2009] 11

Page 12: Computer Programming n. 181

GEOGRAFIA COMPUTAZIONALE

La seconda equazione di Gauss e:

X = f (ϕ,λ) =

∫ ϕ

0

a(1− e2)√

(1− e2 sin t2)3dt+

1

2

sinϕcosϕ√

1− e2 sinϕ2+

1

24

sinϕcos(ϕ)3

1− e2 sinϕ2·

·[

5− tan(ϕ)2+( e2

√1− e2

)2(

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

λ4+

1

720

sinϕcos(ϕ)5

1− e2 sinϕ2·

·[

61−58tan(ϕ)2+ tan(ϕ)4+

( e2

√1− e2

)2(

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

λ6

In questo caso l’equazione comporta qualche comples-

sita in piu a causa della presenza dell’integrale definito

al primo termine della formula.

In questo caso e necessario programmare un semplice

algoritmo per l’integrazione numerica della formula,

ad esempio quello basato sul metodo dei trapezi.

Il programma in SQL per la soluzione dell’integrale e:

CREATE FUNCTION( IBEGIN DOUBLE, IEND DOUBLE,

PARTS INTEGER)

RETURNS DOUBLE

BEGIN

DECLARE STEP DOUBLE DEFAULT 0.0 ;

DECLARE RESULT DOUBLE ;

DECLARE P DOUBLE ;

DECLARE C INTEGER DEFAULT 1 ;

DECLARE TMP1 DOUBLE DEFAULT 0.0 ;

SET P = BEGIN;

SET STEP = (IEND - IBEGIN) / PARTS;

SET TMP1 = A_FACTOR(P) / 2;

loop1: WHILE C < PARTS DO

SET TMP1 = TMP1 + A_FACTOR(P);

SET P = P + STEP;

END WHILE loop1;

SET TMP2 = TMP1;

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

SET RESULT = TMP1 * STEP;

RETURN RESULT;

END

La funzione applicata e definita nella procedura

A FACTOR e rappresenta il fattore:

∫ ϕ

0

a(1− e2)√

(1− e2 sin t2)3dt

che in SQL diventa

Figura 4: Carl Friedrich Gauss (1777 -1855)

CREATE FUNCTION ’A_FACTOR’( VAR DOUBLE )

RETURNS DOUBLE

BEGIN

# ED50 - SEMIMAJOR

DECLARE A DOUBLE DEFAULT 6378388.297 ;

# ED50 - SEMIMINOR

DECLARE B DOUBLE DEFAULT 6378388.297 ;

DECLARE E2 DOUBLE DEFAULT 0.0066943800042605865 ;

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

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

END

L’insieme delle procedure sviluppate per la trasforma-

zione sono quindi:

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

12 Computer Programming n. 181 [None 2009]

Page 13: Computer Programming n. 181

GEOGRAFIA COMPUTAZIONALE

che prende in input i parametri PHI, LAMBDA e H con le

coordinate WGS84 e restituisce i parametri trasformati

in ED50 D PHI, D LAMBDA e D H, e poi:

GAUSS(PHI,LAMBDA,X,Y)

che prende in input i parametri superficiali in ED50

restituiti dalla funzione precedente e genera le coor-

dinate piane X e Y. I parametri distintivi delle trasfor-

mazioni realtivi ai DATUM scelti sono stati introdot-

ti come costanti nelle funzioni. La funzione GAUSS

fa affidamento su una funzione che calcola l’integra-

le definito ed una che esprime il fattore da integrare,

rispettivamente:

RESULT = A_FACTOR(VALUE)

INTEGRAL(IBEGIN, IEND, PARTS)

A causa delle limitazioni del linguaggio SQL e neces-

sario utilizzare le procedure realizzate in questa for-

ma esclusivamente all’interno di una ulteriore stored

procedure esterna come ad esempio:

CREATE PROCEDURE ’TRANS’()

BEGIN

DECLARE PHI,LAMBDA,H DOUBLE DEFAULT 0.0;

DECLARE D_PHI,D_LAMBDA,D_H DOUBLE DEFAULT 0.0;

DECLARE X,Y DOUBLE DEFAULT 0.0;

SET PHI = ;

SET LAMBDA = ;

SET H = ;

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

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

SELECT X,Y;

END

Trasformazione su linea di comando

Quando e possibile avere accesso alla linea di coman-

do o nei programmi che possono utilizzare liberie col-

legate piuttosto che riprogrammare ogni volta gli al-

goritmi di proiezione e trasformazione delle coordi-

nate e possibile utilizzare la libreria PROJ e i relativi

comandi proj e cs2cs.

PROJ e un progetto open source (con una licenza di

tipo MIT che ne permette l’inclusione anche in siste-

mi proprietari), usato da riga di comando (soprattut-

to in ambito Unix, GNU/Linux, ecc.), che permette la

trasformare coordinate geografiche in coordinate car-

tesiane secondo le regole della proiezione cartografi-

ca. Viene solitamente utilizzato in altri progetti co-

me GRASS, MapServer, PostGIS, Thuban, OGDI e

OGRCoordinateTransformation.

L’utilizzo da linea di comando e semplice e diretto. Tra

le opzioni del programma cs2cs vanno indicate le di-

chiarazioni relative al sistema di riferimento di parten-

za e poi, dopo l’opzione +to quelle relative al sistema

di riferimento d’arrivo.

E possibile indicare questi riferimenti esplicitando i

parametri dell’ellissoide, ad es:

+ellps=WGS84

+a= 6378137.0 + rf= 298.257223563

o direttamente i DATUM conosciuti

+datum=WGS84

o ancora attraverso un insieme di dizionari noti

che e possibile scoprire sul sito http://www.epsg-

registry.org, ad esempio:

+init=epsg:22022

in cui epsg e un dizionario noto e 22022 e l’ogget-

to definito in quel dizionario. I dizionari sono file di

testo presenti solitamente nella directory /usr/local/-

share/proj in cui e possibile verificare a cosa queste

inizializzazioni corrispondono.

cs2cs e un filtro e risponde generando sullo standard

output la trasformazione delle coordinate che riceve

nello standard input. Ad esempio nel modo seguente e

possibile realizzare l’equivalente delle trasformazioni

ottenuta con le formule di Molodenskij:

echo 688146.8125 4931557.6875 | \

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

+init=epsg:4326

oppure

cs2cs +proj=latlong +datum=WGS84

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

r <<EOF

45d15’33.1" 111.5W

45d15.551666667N -111d30

+45.25919444444 111d30’000w

EOF

Computer Programming n. 181 [None 2009] 13

Page 14: Computer Programming n. 181

GEOGRAFIA COMPUTAZIONALE

Conclusioni

Per lo sviluppo di funzioni di trasformazione geogra-

fica e sufficiente riportare le funzioni matematiche di

Molodensky e Gauss in codice sorgente con un mini-

mo di supporto per le funzioni matematiche comples-

se. Avendo a disposizione progetti liberi come PROJ

questo non e neppure necessario ma, a parte il valo-

re didattico di una tale implementazione, esistono ca-

si in cui queste librerie non possono essere utilizzate.

In questi casi si possono seguire le tracce riportate in

questo articolo o approfondirne l’implementazione nel

prossimo.

14 Computer Programming n. 181 [None 2009]

Page 15: Computer Programming n. 181

Trasformazione di coordinategeografiche in Javascript

L’implementazione in Javascript delle formule di Molodenskij eGauss

Lorenzo Dal Col

Problema

In numerose applicazioni e necessario risolve-

re il problema della trasformazione delle coor-

dinate geografiche tra sistemi di riferimento

differenti.

In questo articolo verra illustrato un applicativo che ef-

fettua la trasformazione delle coordinate del sistema

WGS84 a quelle UTM. L’obiettivo e di fornire una

procedura di trasformazione che possa funzionare an-

che con dati acquisiti in tempo reale, senza la neces-

sita di eseguire post-elaborazioni; e stato inoltre scelto

il linguaggio Javascript in modo che possa funzionare

in un qualsiasi browser web che supporti lo scripting

e in un qualsiasi sistema operativo, anche quello de-

gli smart-phone, che sempre piu spesso integrano un

ricevitore GPS.

Tutti gli applicativi odierni, ad esempio i ricevitori sa-

tellitari GPS, i software con riferimenti geografici (co-

me Google Earth/Maps) e le varie applicazioni col-

legate all’aeronautica utilizzano la codifica WGS84,

mentre quasi tutte le carte ufficiali antecedenti al 1984

utilizzavano il sistema UTM con “datum” ED50 nel

caso dei paesi europei. Grazie alle funzioni presentate

in questo articolo si possono trasformare i dati raccol-

ti con un sistema GPS moderno come Google Maps

e confrontarli con dati di vecchie carte europee codi-

ficati in UTM-ED50 (oppure “Roma Monte Mario”)

direttamente in una pagina web.

Figura 1: Una semplice interfaccia HTML del programma

Soluzione

La trasformazione deve essere effettuata in tre passi:

1. Con le formule di Molodenskij si passa dalle

coordinate ellissoidiche WGS84 alle coordinate

ellissoidiche ED50

2. Con le formule di Gauss si ricavano le coordinate

piane UTM

3. Infine si applica un fattore di correzione e una

Computer Programming n. 181 [None 2009] 15

Page 16: Computer Programming n. 181

GEOGRAFIA COMPUTAZIONALE

falsa origine per evitare valori negativi, come

vogliono le specifiche UTM.

Le superfici di riferimento

I sistemi di riferimento sono basati su degli ellissoi-

di con una certa dimensione e posizionati nello spa-

zio in modo differente per WGS84 e ED50; sono sta-

te quindi create due classi Javascript per esprimere

l’orientamento e l’ellissoide stesso:

function RotationElipsoid(a, alpha, orientation) {

this.orientation = orientation;

this.a = a;

this.alpha = alpha;

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

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

Math.pow(this.a,2);

// RHO - Raggio di curvatura del meridiano

this.RHO = function(LAMBDA) {

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

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

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

}

// N_G - Gran Normale

this.N_G = function(LAMBDA) {

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

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

}

}

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

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

this.K = K;

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

}

Pur essendo Javascript un linguaggio object-oriented

non esiste il costrutto nativo per definire le classi poi-

che in realta vengono implementate usando il concetto

di “prototype” cioe il prototipo di un oggetto che e leg-

germente diverso. Dal punto di vista semantico le clas-

si sono scritte come delle funzioni che possono avere

al loro interno membri dati e metodi (rispettivamente

variabili e funzioni interne).

Si possono creare oggetti utilizzando il costrutto “new”

e chiamando la funzione prototipo.

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

In JavaScript il modo piu semplice

per creare gli oggetti e farli

discendere da un prototipo- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Esistono in realta diversi “pattern” per la definizione di

classi in javascript, per supportare l’ereditarieta (anche

multipla) e il polimorfismo; in questo caso ci siamo

accontentati dell’implementazione piu semplice.

Gli ellissoidi sono costanti e possono essere definiti

direttamente in questo modo:

// inizializzo gli ellissoidi noti (DATUM)

var WGS84 = new RotationElipsoid(6378137.0,

1/298.257222101,

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

var ED50 = new RotationElipsoid(6378388,

1/297,

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

var ITA40 = new RotationElipsoid(6378388,

0.00672267002,

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

0.971,-2.917,0.714));

I parametri passati sono il semiasse maggiore a, lo

schiacciamento alpha, e l’orientamento: inizializza-

to con i valori di traslazione sui tre assi (x,y,z),

riscalamento e rotazioni.

La classe “RotationElipsoid” ha i metodi RHO e N G,

che calcolano rispettivamente il raggio di curvatura del

meridiano passato per argomento e la gran normale

rispetto al meridiano.

Le funzioni di conversione delle coordinate si chia-

mano rispettivamente “molodenskij” e “gauss”, esse

sono abbastanza complesse ma non fanno altro che

implementare le formule analitiche dei due rispettivi

matematici:

La prima si esegue passando l’ellissoide di partenza,

quello di arrivo e le tre coordinate geografiche del pun-

to da trasformare: PHI, LAMBDA, H che sono rispet-

tivamente longitudine, latitudine e altitudine; viene ri-

tornato un oggetto da passare direttamente alla funzio-

ne “gauss” che ritorna un array con rispettivamente le

coordinate Nord, Est e altitudine in UTM-ED50.

All’interno della funzione “gauss” viene calcolato un

integrale definito di una funzione matematica grazie

a una procedura di supporto che usa il metodo dei

trapezi:

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

// il metodo dei trapezi in N parti

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

16 Computer Programming n. 181 [None 2009]

Page 17: Computer Programming n. 181

GEOGRAFIA COMPUTAZIONALE

�function molodenskij(fromElipsoid , destElipsoid ,

PHI, LAMBDA, H) {

var alpha = fromElipsoid.alpha;

var a = fromElipsoid.a;

var Da = fromElipsoid.a - destElipsoid.a;

var Dalpha = fromElipsoid.alpha -

destElipsoid.alpha;

var DEx = destElipsoid.orientation.Ex -

fromElipsoid.orientation.Ex;

var DEy = destElipsoid.orientation.Ey -

fromElipsoid.orientation.Ey;

var DEz = destElipsoid.orientation.Ez -

fromElipsoid.orientation.Ez;

var Dx0 = destElipsoid.orientation.x0 -

fromElipsoid.orientation.x0;

var Dy0 = destElipsoid.orientation.y0 -

fromElipsoid.orientation.y0;

var Dz0 = destElipsoid.orientation.z0 -

fromElipsoid.orientation.z0;

var DK = destElipsoid.orientation.K -

destElipsoid.orientation.K;

var RHO = fromElipsoid.RHO(LAMBDA);

var N_G = fromElipsoid.N_G(LAMBDA);

// scorciatoie

var sinPHI = Math.sin(PHI);

var cosPHI = Math.cos(PHI);

var sinLAMBDA = Math.sin(LAMBDA);

var cosLAMBDA = Math.cos(LAMBDA);

var tanLAMBDA = Math.tan(LAMBDA);

var tempVar = RHO + H;

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

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

var tempVar5 = (1 - tempVar6) * N_G;

var tempVar3 = ( N_G + H ) * cosLAMBDA;

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

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

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

var o3 = (cosLAMBDA / tempVar) * Dz0;

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

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

var o6 = (tempVar5 / tempVar) * cosLAMBDA *

sinLAMBDA * ( DK + Da / a );

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

cosLAMBDA * sinLAMBDA *

( Dalpha / (1 - alpha));

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

var dPHI = sinPHI / tempVar3 * Dx0 -cosPHI/

tempVar3 * Dy0 -

tempVar4 * tanLAMBDA*cosPHI*DEx-

tempVar4 * tanLAMBDA*sinPHI*DEy+

DEz;

var dH = - cosLAMBDA * cosPHI * Dx0 -

cosLAMBDA * sinPHI * Dy0 -

sinLAMBDA * Dz0 +

tempVar5 * sinLAMBDA * cosLAMBDA*

sinPHI * DEx -

tempVar5 * sinLAMBDA * cosLAMBDA*

cosPHI * DEy -

tempVar2 * DK + a / N_G * Da -

tempVar6 * N_G *

Math.pow(sinLAMBDA , 2) *

(Dalpha / (1 - alpha));

return { LAMBDA: LAMBDA + dLAMBDA,

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

}

� �

Listato 1: La formula di Molodenskij in JavaScript

var step = (end - begin) / parts;

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

begin += step;

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

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

begin += step;

}

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

return temp*step;

}

La trasformazione viene fatta infine mettendo insieme

le diverse conversioni:

// funzione che esegue la conversione completa

// da WGS84 a ED50

function convert(PHI, LAMBDA, H) {

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

var g = gauss(ED50, m);

// correzione coordinate per UTM

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

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

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

}

La funzione “convert” accetta come argomenti la lon-

gitudine PHI, latitudine LAMBDA e altitudine H

espresse in radianti. Se si vogliono convertire dei va-

lori espressi in gradi, primi e secondi si usa la seguenti

funzione:

// converte gradi, primi, secondi in radianti

function toRadians(d, m, s) {

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

}

A questo punto possiamo testare il tutto con dei dati

noti in WGS84:

longitudine: 44° 45’ 12.20809’’

latitudine: 14° 1’ 30.28015’’

altitudine: 589

ci aspettiamo come risultato i seguenti:

x: 5067303, y: 424247, h: 547

// funzione per testare il funzionamento

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

function test() {

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

// le converto in radianti)

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

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

var H = 589;

// eseguo la conversione

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

// accedo al risultato usando: converted.x,

// converted.y, converted.h

// controllo i risultati

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

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

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

return true;

}

Computer Programming n. 181 [None 2009] 17

Page 18: Computer Programming n. 181

GEOGRAFIA COMPUTAZIONALE

�function gauss(surface, m) {

var precision = 10000;

var PHI = m.PHI;

var LAMBDA = m.LAMBDA;

var H = m.H;

var a = surface.a;

var e2 = surface.e2;

//funzione da integrare

Integral_Function = function(val) {

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

return tempVal /

Math.sqrt(Math.pow(1 -

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

3));

}

// calcolo il fuso e sistemo la longitudine

var fuse_length = 6 * Math.PI / 180;

var fuse;

if (PHI > Math.PI)

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

else

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

var deltalength=(fuse -30) * fuse_length

+ fuse_length/2;

var dPHI = PHI - deltalength;

// scorciatoie

var sinLAMBDA = Math.sin(LAMBDA);

var cosLAMBDA = Math.cos(LAMBDA);

var tanLAMBDA = Math.tan(LAMBDA);

var tempVar1 =Math.sqrt(1-e2*

Math.pow(sinLAMBDA , 2));

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

var valoreIntegrale = Integral(Integral_Function ,

this, 0,

LAMBDA, precision);

var x = valoreIntegrale +

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

Math.pow(dPHI,2) +

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

tempVar1 *

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

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

4 * Math.pow(tempVar2, 2) *

Math.pow(cosLAMBDA ,4)) *

Math.pow(dPHI,4) +

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

tempVar1 *

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

Math.pow(tanLAMBDA , 4) +

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

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

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

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

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

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

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

Math.pow(dPHI, 3) +

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

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

Math.pow(tanLAMBDA , 4) +

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

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

Math.pow(tanLAMBDA , 2)) *

Math.pow(dPHI, 5);

return [x,y,H];

}

� �

Listato 2: La formula di Gauss in JavaScript

Discussione

Osservazioni sulla precisione

Sono stati confrontati i risultati forniti da questa appli-

cazione con dei valori noti ed e ne e conseguito che il

calcolo viene fatto in modo preciso, con uno scarto di

al massimo una decina di millimetri per coordinata.

In tutti i calcoli sono state mantenute tutte le cifre

significative gestite dal linguaggio Javascript.

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

Sono state mantenute tutte le cifre

significative gestite dal linguaggio

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

Il calcolo piu dispendioso in termini di tempo e l’in-

tegrale (per via numerica) della funzione non lineare

(contenente radice quadrata, funzioni trigonometriche,

potenze, ecc). Facendo alcuni test con diverse funzio-

ni e stato visto che sono sufficienti 10 000 passi per il

calcolo dell’integrale. Aumentare ulteriormente il nu-

mero di passi allunga notevolmente l’attesa e non mi-

gliora il risultato, almeno per le prime 9 cifre significa-

tive. Javascript e un linguaggio interpretato, pertanto

non permette il raggiungimento delle prestazioni otti-

mali della macchina, tuttavia la velocita di esecuzione

in questo caso (alcuni decimi di secondo) e completa-

mente soddisfacente, e permette un utilizzo completo

in tempo reale.

Il programma e stato testato con Internet Explorer (5+,

6, 7), Mozilla Firefox (1.5, 2, 3), Opera (9.5) e Safari

(3+).

Futuri sviluppi

Si potrebbe rifattorizzare tutto il codice Javascript e

renderlo completamente ad oggetti, come e gia sta-

to fatto per la classe dell’ellissoide di rotazione. Se

ad esempio trasformassimo in classi anche le due lun-

ghe funzioni analitiche potremmo riutilizzare la stes-

sa istanza per elaborare molte coordinate in sequenza,

guadagnando in velocita perche potremmo mantenere

nello stato alcuni calcoli parziali.

18 Computer Programming n. 181 [None 2009]

Page 19: Computer Programming n. 181

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

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

Si potrebbe inoltre estendere la

trasformazione anche ad altri

“datum” come ad esempio ITA40

(gia suggerito tra gli ellissoidi

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

Lo sviluppo piu interessante potrebbe essere di inte-

grare la trasformazione con un sistema di mappe su

web (come Google Maps o Live Search Maps), in

modo da leggere le coordinate direttamente in metri.

Riferimenti

La teoria della trasformazione delle coordinate e alcu-

ni esempi realizzati come stored procedure per mysql

si trovano nell’articolo “Trasformazione di coordinate

geografiche da WGS84 a UTM”.

Per approfondire l’argomento sulla trasformazio-

ne di coordinate e consigliato il sito dell’Asso-

ciazione Italiana Topografi, in particolare l’artico-

lo “Alcuni metodi per il passaggio dal Sistema

WGS84 ai Sistemi Geodetici Locali” all’indirizzo

http://www.asit.biz/public/portale/articles.asp?id=5

Per imparare la basi sulla programmazione in Java-

script sono disponibili nelle librerie numerosi libri, e

nel web centinaia di tutorial.

Per i pattern avanzati di javascript come classi, ere-

ditarieta, prototipi e altro si troveranno sicuramen-

te informazioni sulla pagina di Douglas Crockford,

un guru di questo linguaggio che lavora per Yahoo:

http://javascript.crockford.com/

Page 21: Computer Programming n. 181
Page 22: Computer Programming n. 181
Page 23: Computer Programming n. 181

Konqueror: tutto da unainterfaccia

Sfruttare al massimo il gioiello della corona di KDE

Gary Richmond

STAVA riferendosi alla vittoria romana della

battaglia di Zela o stava facendo un saluto “a

due dita” al Senato patrizio di Roma, Giu-

lio Cesare quando disse, come riportato da

Seutonio e Plutarco, “veni, vidi, vici”? Ogni studen-

te che ha dovuto tollerare le squisite torture del latino

conoscera questa famosa frase.

Premiamo il pulsante avanzamento veloce fino al pre-

sente e queste parole potrebbero non essere fuori luo-

go sulle labbra delle brave persone che hanno svilup-

pato Konqueror, il browser e file manager “tutto in

uno”, meglio descritto come visualizzatore universale

di documenti.

Dipendendo solo da kdebase e una parte standard del

desktop KDE e gran parte degli utenti GNU/Linux ad

un certo punto hanno navigato o gestito file utilizzando

Konqueror. Precisamente perche viene pre-installato

tendiamo a darlo per scontato; inoltre, nel periodo suc-

cessivo al lancio avvenuto nel 2000, molte estensio-

ni e alternative sono diventate disponibili: in modo

particolare l’immensamente diffuso Firefox.

Prima di dar vita a una guerra infiammata tra utenti di

KDE e di GNOME e ai sostenitori dei vari file mana-

ger e browser, lasciatemi premettere che questo artico-

lo non e un esercizio comparativo delle caratteristiche

concorrenti. Lo scopo di questo articolo e di far co-

noscere al lettore le caratteristiche di Konqueror, delle

quali possono non essere consapevoli e di dimostrare

che, con alcune eccezioni, e possibile utilizzare e con-

figurare Konqueror in modo tale che si possa trascor-

rere un’intera sessione senza abbandonarne i confini.

Naturalmente, cio puo tendere a renderlo una sorta di

factotum e signore del nulla, pertanto se avete neces-

sita di un particolare strumento GNU/Linux mette a

disposizione una scelta imbarazzante anche per il “po-

wer user”. Se molte di queste caratteristiche vi sono

gia note, si spera che le altre non lo siano e che possiate

utilizzarle per migliorare la vostra esperienza di navi-

gazione. Cio che segue e appunto la mia scelta perso-

nale di suggerimenti, trucchi e funzionalita che trovo

piu utili. Inevitabilmente, avrete anche voi delle pre-

ferenze (scorciatoie per la ricerca sul web, movimenti

del mouse, file remoti) e vi chiederete perche non le ho

trattate: beh .. vi faccio le mie scuse anticipate.

Piu intelligente, piu veloce

I tesori sepolti sono i piu affascinanti, pertanto tiriamo

fuori la vanga e iniziamo a estrarre alcuni delle gemme

di Konqueror. Una delle prime, migliori e piu sempli-

ci cose che si possa fare e ottenere facilmente un in-

cremento di velocita. Si puo ottenere che Konqueror

si carichi piu velocemente modificando le impostazio-

ni: cliccate su Impostazioni, poi Configura Konqueror

e scorrete in basso all’ultima opzione, Prestazioni. Si

puo minimizzare l’utilizzo della memoria e “precarica-

re” un certo numero di istanze del browser. Fate degli

esperimenti con queste impostazione finche non otte-

nete una combinazione che meglio si adatta alle vostre

necessita e alle specifiche della macchina in termini

Computer Programming n. 181 [None 2009] 23

Page 24: Computer Programming n. 181

USER SPACE

Figure 1: Konqueror in modalita browser e file

di capacita di memoria e di processore. Se piuttosto

non volete armeggiare con queste impostazioni e sta-

te utilizzando Konqueror da GNOME, un trucco spor-

co e veloce e avviare una piccola applicazione KDE e

minimizzarla. In questo modo, l’avvio di Konqueror

richiedera un minor sollevamento pesi.

Si puo anche avviare Konqueror con una pagina vuota

digitando

about:blank

in una finestra di dialogo KDE ottenuta premendo Alt

+ F2 o con

about:konqueror

una pagina di default che vi permettera di scegliere

verso dove procedere. (Piu oltre vedrete come incor-

porare queste viste nei vostri profili Konqueror). Se

volete queste opzioni di avvio sul desktop, effettuate

un clic destro su un’area libera (del desktop) e sele-

zionate Crea Nuovo e poi Collegamento a locazione

(URL) e al prompt digitate un nome idoneo per il “pro-

filo” e, nella casella sottostante, digitate uno di questi

comandi.

Un ultimo modo per aprire Konqueror rapidamente e

da dove si vuole e sfruttare il fatto che l’etichetta della

locazione e effettivamente trascinabile. Navigate alla

Figura 2: Konqueror in “modalita FTP”

pagina web che volete e trascinate la favicon (sulla si-

nistra dell’indirizzo) sul Desktop e selezionate Collega

qui e verra creata una scorciatoia sul Desktop. Meglio

ancora, se si desidera creare una serie di scorciatoie a

pagine web sul desktop, selezionate Bookmarks e poi

scegliete Modifica Bookmark e trascinate i link che vo-

lete sul Desktop per quante icone di bookmark deside-

riate. Inoltre, questo metodo non vi chiedera di copiare

o do creare collegamenti sul desktop. Installera auto-

maticamente un’icona Desktop. La stessa cosa vale

per il trascinamento al pannello.

Sfogliare e archiviare

Una caratteristica che rende unico Konqueror, e dico

unico, e che mentre altri web browser hanno molte

caratteristiche eccellenti, e effettivamente uniche, par-

ticolarmente Flock, Firefox e Opera, Konqueror non

ha pari in virtu della sua capacita di navigare il web e

il filesystem del computer dalla stessa interfaccia. Sı,

lo so, Firefox ha un’estensione che permette di suddi-

videre lo schermo e di visualizzare due differenti siti

web, ma si tratta di “siti web” e non di “un sito web e

di un file personale” come si vede nella Figura 1.

In questo esempio, avete effettivamente un client

FTP a due pannelli: basta trascinare il collegamen-

to FTP nella schermata destra del browser alla scher-

24 Computer Programming n. 181 [None 2009]

Page 25: Computer Programming n. 181

USER SPACE

Figura 3: Selezionando di file contigui con il metodo a

“elastico”

mata del browser dei file e Konqueror vi chiedera di

spostare/copiare l’immagine ISO (Figura 2).

Se non avete impostato una cartella specifica per questi

download non e necessario perdere tempo a cercarla.

(Se avete impostato KGet per intercettare tutte le ri-

chieste di download per le cartelle preimpostate KGet

ridefinira questa impostazione). Se si preferisce si puo

aprire una finestra terminale in Konqueror e trascina-

re, rilasciare e scaricare un file lı (diro di piu su questa

tecnica piu oltre).

Per ottenere questo risultato, selezionare Impostazio-

ni dal menu a discesa e scegliere Suddividi lo scher-

mo verticalmente. Tuttavia, per una azione piu ve-

loce da tastiera basta eseguire semplicemente una

delle seguenti operazioni per aprire e chiudere le

configurazioni di suddivisione dello schermo:

• Ctrl + Shift + L suddivide lo schermo vertical-

mente

• Ctrl + Shift + T suddivide lo schermo orizzontal-

mente

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

attivo

La copia e o il trasferimento di file e reso molto piu

facile dall’utilizzo degli schermi suddivisi poiche ren-

de il drag&drop ancora piu semplice. E cio riguarda

Figura 4: Konqueror in modalita file e terminale

anche i supporti esterni: CD, DVD, drive USB e pen-

ne USB. Non potete costruire una catapulta da Kon-

queror, ma potete utilizzare il suo metodo a “elastico”

per selezionare i file contigui e selezionare dal menu

di contesto le opzioni. Basta utilizzare il mouse per

disegnare un’area attorno ai file desiderati (Figura 3).

Se dovete svolgere delle operazioni da riga di coman-

do, Konqueror vi puo far risparmiare la seccatura di

aprire una console separata. Se selezionate il menu

a discesa Impostazioni vedrete una voce per “mostra-

re l’emulatore di terminale” (o per aggiungere l’icona

per esso attraverso il menu a discesa Impostazioni, sot-

to Configura barra degli strumenti e trascinarla sulla

toolbar): cio fara aprire un’istanza di un terminale al-

l’interno di Konqueror. Per i neofiti di GNU/Linux, si

tratta di un modo utile per seguire la struttura dei file

di sistema, poiche cliccando su una cartella non solo vi

portera a quell’elemento in modo grafico ma sara an-

che seguito dalla riga di comando. Dopo aver aperto

la scorciatoia alla directory desiderata potete eseguire

comandi su un particolare file nel terminale integrato

(Figura 4).

Computer Programming n. 181 [None 2009] 25

Page 26: Computer Programming n. 181

USER SPACE

Figura 5: Schermo suddiviso che mostra la pagina HTML e

l’editor di testo integrato

Gestione e navigazione di file

preimpostati

Una ulteriore ottima caratteristica di Konqueror fara

risparmiare tempo e facilitera la navigazione: si tratta

del filtro di visualizzazione (View Filter). Si puo acce-

dere ad esso dal menu Strumenti e si puo anche aggiun-

gere l’icona alla toolbar selezionandola e aggiungen-

dola da Impostazioni e poi scegliendo Configura barra

degli strumenti. Se si seleziona il tipo di file che ave-

te scaricato, allora tutti i file di quel tipo appariranno.

Come tutti i menu ben fatti, il filtro di visualizzazione

e contestuale. Non lo vedrete se Konqueror e in moda-

lita browser web. Un vantaggio per i “terminalmente

disorganizzati”! Il filtro di visualizzazione funziona

anche in modo incrementale; cioe, se dopo un primo

esercizio di filtraggio selezionate un ulteriore tipo di

file, questo viene aggiunto alla selezione. Si deve se-

lezionare Reimposta per ripristinare le impostazioni di

default del file manager.

Se si sta navigando una pagina web, il filtro di vista

viene negato per ovvie ragioni; tuttavia, il filtro di vi-

sta offerto in modalita browser puo offrire all’utente un

utile strumento di apprendimento. Ad esempio, nella

scrittura di articoli che prevedono dei tag XML spesso

mi dimentico quali sono i tag ammessi (o non ne co-

nosco neanche uno). In questo caso mi avvalgo della

Figura 6: Konqueror “dopato”: ogni visualizzazione che si

possa desiderare

suddivisione dello schermo. Apro sul web un artico-

lo pubblicato che contiene i tag corretti, suddivido lo

schermo (replicando cosı la pagina), clicco sul nuovo

schermo per renderlo attivo (un “led” verde si accen-

dera nella parta in basso del browser) e seleziono il

menu Visualizza e modifico la Modalita visualizzazio-

ne in Editor di testo avanzato integrato. Cosı facendo

appariranno i tag XML dell’articolo e posso effettuare

un confronto riga per riga per capire come l’articolo e

stato costruito a livello di tag (Figura 5).

Si tratta di un aiuto molto utile. Certo, Visualizza →

Sorgente pagina in Firefox fa la stessa cosa, ma in due

finestre separate, mentre Opera aprira un’altra scheda

(Ctrl + UM nella versione 9.5 alfa). Tuttavia, que-

sti non facilitano il confronto riga per riga. Per inci-

so, se si vuole duplicare lo schermo suddiviso per se-

guire la navigazione dell’originale, basta cliccare sul

piccolo riquadro vuoto in basso al browser. Appa-

rira un piccolo simbolo “a catena”. Devo ammetterlo,

non riesco tuttavia a immaginare un utilizzo di questa

funzionalita. E voi?

Se nel browser si vuole una navigazione senza mouse

sui collegamenti ipertestuali, premete Ctrl e i collega-

menti verranno contrassegnati con un piccolo riquadro

beige con delle lettere. Per seguire un link basta pre-

mere la lettera corrispondente sulla tastiera. Il vostro

proverbiale vantaggio puo comunque variare: se anda-

26 Computer Programming n. 181 [None 2009]

Page 27: Computer Programming n. 181

USER SPACE

Figura 7: schermo suddiviso di Konqueror con colori

preimpostati

te sul sito Distrowatch, un sito fitto di link molto ravvi-

cinati, la navigazione dei link per mezzo della tastiera

puo essere problematica.

Come ogni browser che si rispetti, si puo naturalmente

impostare la propria homepage nei file di configurazio-

ne di Konqueror ma a differenza di Firefox non potete

impostare piu homepage da aprire in schede separate.

In Firefox il trucco si ottiene digitando quanto segue:

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

http://www.distrowatch.com |

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

Cio non funzionera in Konqueror, ma almeno e ver-

satile. Konqueror supporta il caricamento dei profi-

li (come fanno Firefox e Opera) per aggirare questo

problema, tra l’altro.

Per inciso, ho notato che Konqueror puo variare nel

menu profili da distro a distro. Se si utilizza Ubuntu

si vedra che mancano alcuni caratteristiche. Si posso-

no comunque ripristinare, basta che puntiate il vostro

browser all’indirizzo

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

Aprite Konqueror. In base a quante homepage volete

per default, suddividete lo schermo e ridimensionatelo

come desiderato e a turno, rendete ciascuna area atti-

va, navigate a una pagina web e ripetete questo pro-

cedimento per tutte le schermate finche non le avete

Figura 8: File di configurazione di Konqueror

impostate tutte. Poi cliccate su Impostazioni e selezio-

nate Salva profilo visualizzazione “navigazione Web”,

scegliendo un nome pertinente e idoneo per il profilo e

spuntate la casella salva url nel profilo. E tutto. In base

alle dimensioni del vostro schermo potreste voler au-

mentare la superficie premendo il tasto F11. Se avete

uno schermo realmente grande o state utilizzando una

TV ad alta risoluzione una combinazione di queste im-

postazioni vi dara spazio in abbondanza di cui potre-

ste aver bisogno se volete visualizzare una schermata

come quella mostrata nella Figura 6.

Se lo spazio e da preservare si puo invece impostare

un profilo a schede e chiamare il profilo, ad esempio,

“homepage a schede” invece di “homepage a schermo

splittato”. La stessa cosa puo essere fatta con i profili

Konqueror in modalita file. Un bonus in piu in moda-

lita visualizzazione file e che si puo impostare il colo-

re di sfondo per distinguere le differenti aree suddivise

dello schermo. La Figura 7 illustra le possibilita.

Mettilo sulla scheda

Nei preistorici giorni bui di Internet Explorer il concet-

to di navigazione a schede era esotico quanto il concet-

to di calcolo sicuro in Microsoft, ma Konqueror, come

Firefox, Opera, Galeon, Epiphany e altri hanno offerto

agli utenti gli indispensabili vantaggi della navigazio-

Computer Programming n. 181 [None 2009] 27

Page 28: Computer Programming n. 181

USER SPACE

Figura 9: Konqueror con i pulsanti di chiusura sulle schede

ne a schede da anni. La navigazione a schede di Kon-

queror si integra bene con profili, ma puo fare anche

piu di cio, con un po’ di impegno.

La via piu lunga e selezionare dal menu File l’opzione

Nuova Scheda e con un clic destro su questa seleziona-

re Chiudi Scheda. Ci sono anche altri modi: clic “cen-

trale” su un link in modalita browser per aprire una

nuova scheda, o clic centrale su una directory o su uno

specifico file in modalita file per lo stesso effetto. Se

si preferisce si puo trascinare e rilasciare un collega-

mento web nello spazio vuoto sulla destra dell’ultima

scheda.

Aspetto frustrante e che Konqueror non ha per default

il pulsante di chiusura sulle schede, ma potete aggiun-

gere questa caratteristica molto utile. I file di configu-

razione di Konqueror sono tutti in semplice testo, facili

da leggere e da modificare (come utente root). Aprite

il vostro editor di testo preferito come root e navigate

alla cartella:

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

scorrete in basso alla sezione intitolata FMSettings e

modificate la riga MouseMiddleClickClosesTab a true

(Figura 8).

Un pulsante di chiusura e una caratteristica utile nel-

la navigazione a schede. Opera, Firefox e Flock

Figura 10: Tweak GUI con schede

la hanno. E anche Konqueror puo averla. Ba-

sta andare sul wiki di KDE (http://wiki.kde.org/tiki-

index.php?page=Hidden%20configuration) e prende-

re un piccolo e utile tool GUI per la modifica delle

impostazioni nascoste di configurazione o prenderlo

da

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

Tweaking+Konqueror+tabs?content=44376

Per eseguirlo basta aprire con Alt + F2 una finestra

di comando e digitare tweak, o digitare il seguente

kioslave nella barra degli indirizzi di Konqueror:

settings:/Components/

e l’icona dell’applet Tweak sara disponibile (Figure 9

e 10).

Se si vuole rendere il lavoro con le schede piu faci-

le, passate il mouse su una scheda e fate scorrere la

rotellina avanti e indietro per passare da una scheda

all’altra; se si vuole anche riorganizzare l’ordine del-

le schede, trascinatele e rilasciatele altrove sulla riga

delle schede.

Konqueror ha un ulteriore utile trucco nella manica. A

volte vorreste che aprisse una visualizzazione di un file

sempre in un particolare modo e non solo durante una

specifica sessione: che si tratti della visualizzazione di

una icona, di un file, dei dettagli di un file, ecc. Di

nuovo, aprite

28 Computer Programming n. 181 [None 2009]

Page 29: Computer Programming n. 181

USER SPACE

Figura 11: Impostazione di Konqueror della visualizzazione

per cartella

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

e modificate (come root) nella sezione MainViewSet-

tings il valore a true (Figura 11).

SaveViewPropertiesLocally=true

Dopo aver apportato questa modifica e aver selezio-

nato la visualizzazione del file desiderata dal menu

Visualizza (selezionate Modalita visualizzazione) per

una particolare directory, chiudete Konqueror e ria-

pritelo: questa sara la visualizzazione di default del-

la directory finche non la modificate. I piu acuti di

voi avranno capito che questa modifica puo essere “fu-

sa” con le configurazioni di profilo per creare le vostre

impostazioni preferite di navigazione dei file.

Un ultimo suggerimento sulle schede. Se preferite le

schede di Konqueror in basso, basta modificare (co-

me root) nella sezione di configurazione FMSettings

la proprieta TabPosition=Top in TabPosition=Bottom.

Liberta attraverso la schiavitu

Benche possa sembrare un incrocio tra un brano di

“Newspeak” di Orwell e la saggezza gnomica di Bla-

ke ci porta a una delle piu utili e potenti caratteristi-

che di Konqueror: i kioslave. Kio e l’abbreviazione

Figura 12: Kioslave audio in azione

di KDE input/output, che gli fornisce una omogenea

trasparenza in rete. Assumono la forma, giusto per

citarne alcuni, di help:/, man:/ e info:/.

Un elenco dei kioslave supportati e disponibile nella

sezione Protocols di KInfoCenter ed e un elenco abba-

stanza grande. Se siete allergici alla riga di comando e

alla visualizzazione delle pagine man in un terminale,

aprite Konqueror e digitate nella barra degli indirizzi

man:/ seguito dalla pagina man che volete e otterrete

una gradevole e lineare pagina HTML. State scrivendo

un articolo su Amarok e non volete aprire questa ap-

plicazione solo per conferma su qualche piccolo detta-

glio? Bene, basta digitare help:/amarok e Konqueror

lancera il manuale dell’applicazione. E qualcosa di li-

neare e pratico ma i kioslave possono fare cose molto

piu potenti.

Schiavi del ritmo e qualcosa sulla barra

laterale

Chiunque ha le sue preferenze e la mia antologia e del

tutto personale, in base alle mie preferenze e all’utiliz-

zo: e voi avrete certamente le vostre. Ecco una breve

antologia che ritengo dimostri la grande potenza e uti-

lita della loro trasparenza. GNU/Linux ha molti buone

utility di ripping e codifica per file musicali (compresa

l’ultima release di K3B che ora comprende una fun-

Computer Programming n. 181 [None 2009] 29

Page 30: Computer Programming n. 181

USER SPACE

Figura 13: Un file mp3 trascinato sulla barra laterale di

Konqueror

zionalita di ripping) e io le uso. Tuttavia, audiocd:/ e

un kioslave che puo fare molto da un’unica interfaccia

Konqueror quando serve al volo.

Se inserite un CD musicale, aprite Konqueror e digitate

audiocd:/ nella barra degli indirizzi vi verra presentato

cio che mostra la Figura 12.

Cio che otterrete e l’elenco dei file WAV originali pre-

senti nel CD (e se lo fate mentre siete connessi a In-

ternet verranno visualizzati i titoli delle canzoni gra-

zie a CDDB, http://en.wikipedia.org/wiki/CDDB, al-

trimenti verranno semplicemente elencati come traccia

1, traccia 2, ecc.). Konqueror crea anche dei file virtua-

li in tutti i codec musicali che la vostra distro supporta

in modo nativo, compreso quelli proprietari che avete

scaricato e installato. Eseguire il ripping e la codifi-

ca di tutte le tracce selezionate e semplicemente una

questione di drag&drop del codec selezionato in una

directory del disco rigido. Konqueror fara il resto. Cio

che non puo fare, senza un vostro precedente interven-

to diretto, e configurare i parametri. Pertanto, nello

spirito di questo articolo, aprite una ulteriore scheda e

digitate nella barra degli indirizzi

settings:/Sound/

selezionate Audio CD e potete manipolare le varie

impostazioni (bitrate, tag ID3) per MP3 e Ogg Vorbis.

Figura 14: Il kioslave “sysinfo” vi fornisce una gran quantita

di informazioni azionabili

I devoti della riga di comando che hanno molto spazio

libero su disco possono trascinare il file WAV in una

finestra terminale in Konqueror e kfmclient (uno script

Konqueror) vi offrira diverse opzioni. cp e quella che

fa al caso vostro. Questa opzione copiera il file nella

directory di default. Se si vuole copiare il file altrove

bastera cambiare directory con cd e poi copiare. Kon-

queror non ha ancora finito con i file musicali. Se non

state memorizzando i file sul disco rigido o su un dri-

ve esterno USB potreste voler masterizzare il tutto su

CD. Bene, se avete installato Konqburn (in preceden-

za Kio–burn) potete anche masterizzare con Konque-

ror. Basta trascinare le tracce selezionate sull’icona

CD nella barra laterale e procedere.

Se volete campionare la musica che avete appena “rip-

pato” e codificato con Konqueror, non e necessario av-

viare un media player di grosso calibro (a meno che

non abbiate necessita di caratteristiche avanzate). Ba-

sta cliccare sul pulsante Media Player nella barra la-

terale di Konqueror. (Se non lo vedete, aggiungetelo

con un clic destro su una parte vuota della barra late-

rale, selezionando Aggiungi nuovo e aggiungetelo. Per

inciso, si puo avere piu di una barra laterale. Sempre

con un clic destro su una parte libera della barra la-

terale selezionate Visualizzazione multipla). Cliccate

sull’icona Media Player nella barra laterale, trascinate

la traccia e state incidendo (Figura 13). (Per qualco-

30 Computer Programming n. 181 [None 2009]

Page 31: Computer Programming n. 181

USER SPACE

Figura 15: Opzioni del menu di Kim

sa di piu sostanziale provate il pulsante Amarok nella

barra laterale).

Un ulteriore kioslave che permette di fare qual-

cosa senza abbandonare i confini di Konqueror e

Kio–sysinfo. E necessario che sia installato apt slave

perche funzioni ma come potete vedere i risultati sono

abbastanza impressionanti (Figura 14)

Se utilizzate una distro basata su apt c’e un pul-

sante azionabile per apt collegato al repository che

vi permette di eseguire una ricerca in locale e onli-

ne e di effettuare il download; tutti i pulsanti sotto

Cartelle comuni e Informazioni sui dischi sono an-

che azionabili. Potete scaricare i binari precompila-

ti di Kio-sysinfo per le distro piu diffuse dall’indiriz-

zo http://jerrad.tuxfamily.org/kiosysinfo eng.html. Se

non vi va a genio l’overhead di ricerca relativamente

alto di Beagle e della sua stirpe e/o la vostra macchina

e poco potente, il kioslave locate:/ sara una utile al-

ternativa. Questo kioslave presenta i risultati in file e

cartelle, queste ultime con colori non di default, ed e

molto veloce.

Ci sono molti altri kioslave eseguibili. Ho senza dub-

bio tralasciato il vostro preferito, specialmente i pro-

tocolli remoti come fish, ssh, webdav, smb, vnc, ecc.

Ho smesso di contare il numero di IO slave elencati in

Kinfocenter a settanta; comunque utilizzandone mol-

ti o pochi, specialmente in combinazione con la bar-

Figura 16: Opzioni di Audiokonvert

ra laterale, potete ottenere molti seri vantaggi da una

interfaccia Konqueror ben configurata.

Lieto di essere d’aiuto!

I preveggenti, compıti, esistenzialmente stressati,

ascensori progettati dalla Sirius Cybernetics Corpora-

tion che tanto annoiavano Marvin l’androide paranoi-

co potrebbero aver tratto l’ispirazione dai progettisti di

Konqueror e dalla stretta integrazione con KDE. En-

trambi sono ansiosi di piacere e di fornire un buon ser-

vizio. I felici trasportatori verticali di persone lo fe-

cero in un modo (a parte il saltuario broncio ai piani

interrati come protesta) e Konqueror lo fa con i Ser-

vice Menu. Per molti aspetti, sono molto simili alle

estensioni di Firefox; installando una propria selezione

personale otterrete quelle caratteristiche che rendono

possibile trascorrere un’intera sessione in Konqueror

senza staccarsi dalla sua interfaccia.

Naturalmente, tutti i browser di file e i web bro-

wser hanno i loro menu di contesto, ma ulterio-

ri menu di servizio metteranno il turbo a Konque-

ror. Il posto migliore per incrociarli e il sito KDE

Apps (http://www.kde-apps.org/). Selezionando “ser-

vice menus” avrete subito accesso a 251 di essi. Al

solito, la mia selezione riflette le mie preferenze e i

miei requisiti.

Computer Programming n. 181 [None 2009] 31

Page 32: Computer Programming n. 181

USER SPACE

Figura 17: Il menu di servizio Debian

KIM

Siccome mi piace aggiungere delle schermate ai miei

articoli e talvolta devo fare qualche modifica senza in-

vocare un vero pacchetto grafico, trovo molto utile il

menu di servizio KIM (KDE Image Menu). Tra i co-

mandi contenuti nel menu Action ci sono le seguenti

operazioni: ridimensiona, converti, ruota, comprimi,

aggiungi testo, aggiungi bordi. Le funzioni di Undo

sarebbero utili, ma cio nonostante KIM aggiunge al-

cune funzioni molto veloci e utili a Konqueror quan-

do si ha necessita solo di qualche modifica di “post

produzione” su queste schermate catturate dalla riga

di comando (Figura 15).

Audiokonvert

Questo menu di servizio integra la capacita di Konque-

ror di eseguire il ripping e la codifica di un CD musi-

cale. Per le volte in cui avete scaricato un file musicale

e non e in un formato che potete riprodurre, o in cui

lo volete, Konqueror vi permettera di convertire i file

audio da e verso cinque differenti formati (Figura 16).

Nonostante il messaggio di errore, il file viene conver-

tito senza problemi. Se lo state convertendo nel for-

mato per l’iPod (M4A) allora potete trasferirlo sul ri-

produttore attraverso il kioslave iPod:/ dalla barra degli

indirizzi di Konqueror.

Uno per utenti Debian

Di solito, aprite il gestore dei package (Synaptic, Ky-

naptic, Adept, ecc.) per installare un file binario o da

riga di comando utilizzate

apt-get

Se state eseguendo delle operazioni rudimentali con

il pacchetto lo potete fare da Konqueror con Debian

Menu, un menu di servizio che vi permette di in-

stallare, disinstallare e interrogare le informazioni sul

pacchetto.

Questi sono solo alcuni dei miei favoriti. Voi avrete

i vostri. Ce ne sono 250 tra cui scegliere! E se non

trovate cio che vi serve e disponibile un rapido tutorial

su come si creano su:

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

Creating_Konqueror_Service_Menus

PDF toolkit

Quest’ultimo e una perla. E un menu di servi-

zio con un’ampia gamma di potenti opzioni, ed

e disponibile dal sito Kde-look (http://www.kde-

look.org/content/show.php/konq-pdf+(new+PDF-

smp)?content=37321).

Conclusioni

Konqueror come visualizzatore universale di docu-

menti si e dimostrato degno del suo nome; con l’ag-

giunta dei menu di servizio e dei kioslave e di un po’

di configurazione, Konqueror puo supportarvi per una

intera sessione, purche non abbiate particolari esigen-

ze da “power user”. Certo, supera il test di compati-

bilita Web Acid2 ma non funziona bene con ogni sito

(quale browser lo fa?); funziona con GMail ma solo

nella versione di base in HTML (e potete sempre sele-

zionare Modifica identificazione del browser nel menu

Strumenti e impostarlo a “Firefox”), e non ha esten-

sioni alla Firefox. Cio nonostante, spero che questo

articolo abbia dimostrato sia la potenza sia la versati-

lita di Konqueror a fare molto piu degli altri browser

senza abbandonare la sua interfaccia.

32 Computer Programming n. 181 [None 2009]

Page 33: Computer Programming n. 181

Estensioni Google in Firefox

Interagire con le utility Google attraverso Firefox

Gary Richmond

Voglio dare un’occhiata in dettaglio su co-

me “superdotare” il browser Firefox con

una selezione d’elite di utility Google. Fi-

refox ha le sue critiche e i suoi difetti, ma

ad oggi e stato scaricato oltre 400 milioni di volte: e

come si dice “quello che mangiano gli flies, non posso-

no sbagliarsi tutti!”. Firefox e abbastanza buono cosı

com’e, ma ognuno sa che la funzionalita di Firefox

si estende enormemente con la semplice aggiunta di

estensioni, nonostante i problemi di sicurezza [1].

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

In questo articolo descrivero come

estendere Firefox in modo che

possa interagire meglio con

Google.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

La scelta delle utility Google abilitate per mezzo di

estensioni e naturalmente del tutto personale, basata

sulle mie necessita e preferenze mentre navigo. Qual

e la mia scelta? Gmail, GSpace, Better Gmail, Bet-

ter Gcal, Customise Google, Gmail Notifier, Mini-

map Sidebar. Pero . . . dovrebbe essere sufficiente come

assortimento!

Una nota su Google

Quando Google inizia a parlare messianicamente su

cio che chiamano la loro missione da 300 anni [2] ini-

zia a sembrare come un’incrocio tra James T Kirk e

Giovanni il Battista e inizio a preoccuparmi che il man-

tra “non essere malvagio” si sia tramutato nell’impero

malvagio di Microsoft. Quando iniziano a parlare di

linkare tutti a tutti e tutto il resto, posso vedere Ri-

chard Stallman che si strofina la sua sindrome del tun-

nel carpale. Inizio ad avere allucinazioni che Google

estendera la sua portata a estensioni chiamate “Google

Murder”, “Google Blackmail” e “Google Torture” [3].

Larry Page e Sergy Brin possono non essere Steve

Ballmer e Bill Gates, i Ronnie e Reggie Kray del

mondo del computer, (a right pair of diamond geezers

and no bleeding mistake) ma un bisticcio con Ebay, il

Grande Firewall della Cina e le preoccupazioni gene-

rali sulla sicurezza personale quando si usano le utility

Google hanno alquanto offuscato la nostra visione del

grande ciclopico motore di ricerca. Gia, almeno Goo-

gle e stato relativamente “GNU/Linux friendly”. Pen-

sate a Picasa e a Google Earth per cominciare e anche

alla sponsorizzazione del Summer of Code. Indubbia-

mente, hanno anche dei motivi commmerciali ma al-

meno non sono entrati far parte di una duplice una-

nimita con Microsoft sui brevetti: ma sono abbastan-

za riservati. Tuttavia, cio non mi impedisce di testare

queste estensioni per Firefox.

Computer Programming n. 181 [None 2009] 33

Page 34: Computer Programming n. 181

PROGRAMMING

Una nota sull’installazione delle

estensioni

In questo articolo, trattero diverse estensioni. Nel caso

non abbiate mai usato le estensioni, ci sono tre modi

per installarle:

1. cliccare semplicemente sull’icona installa ora e

tutto verra eseguito automaticamente;

2. clic destro sull’icona, scegliere salva collegamen-

to come dal menu e salvare l’estensione in una

cartella prescelta. Poi, cliccare sul menu a di-

scesa File e selezionare Apri File, spostarsi nel-

la cartella in cui si e salvato il file con estensione

xpi e installarlo. (Scommetto che non in molti

utilizzerete questo percorso tortuoso!)

3. trascinare e rilasciare il file xpi su una istanza di

Firefox in esecuzione, che si occupera di tutto.

In questo articolo forniro i link diretti alle estensio-

ni dai repository ufficiali, e un link alla homepage del

progetto se disponibile. Tenete presente che il down-

load e l’installazione delle estensioni dal sito web uffi-

ciale e sicuro di Mozilla minimizza la possibilita di un

attacco “man-in-the-middle”.

Gmail e roba associata

Sono arrivato tardi, molto tardi, a Google Mail (d’ora

in poi “Gmail”) ma dopotutto, non sono mai stato un’i-

cona della moda. Una crudele necessita, come avrebbe

detto Oliver Cromwell. E probabile che molti di voi

stiano gia utilizzando Gmail, ma nella remota possibi-

lita che cosı non fosse, potete puntare il vostro browser

al sito ufficiale (https://www.gmail.com/) e iscrivervi

al servizio.

Da quando e stato inaugurato il servizio, l’insieme di

funzionalita di GMail e sbocciato. Quando mi iscris-

si a Google Mail e installai l’estensione per Firefox

mi furono messi a disposizione circa 2.9 GB di spazio

su disco che consideravo essere piu che sufficiente per

i miei scopi. La buona notizia, specialmente per chi e

alla ricerca di una capacita realmente importante, e che

dal Gennaio 2008 sono disponibili fino a 6 GB [4]. Il

link [4] vi mostrera l’incremento dinamico dello spa-

zio di memorizzazione in tempo reale, facendo parte

del programma di storage che Google chiama “Infini-

ty+1”. Dovreste inviare e-mail di proporzioni bizan-

tine per esaurire questa capacita, tuttavia l’offerta di

Google non e l’offerta piu capiente [5]. Va sottolinea-

to che avrete accesso ad allegati e-mail fuino a 20 MB

e questa sara una caratteristica piu utile (nonostante la

vostra ampiezza di banda). Una caratteristica grade-

vole e che questi allegati (inviati o ricevuti) verranno

scanditi automaticamente da un antivirus. A parte lo

spazio di memorizzazione, Gmail vi da una ovvia por-

tabilita su vari computer e dovunque sul globo abbiate

accesso a una macchina. Il cuore di Gmail sono ca-

ratteristiche come labels, voicemail, chat e l’integra-

zione con altri servizi Google come calendar, Docs e

Reader. Tornero a parlare di alcuni di questi piu oltre.

Suppongo che Gmail sia un buon punto di partenza per

la ricerca di estensioni Firefox, poiche portera a varia-

zioni su questo tema: Gmail Notifier, Better Gmail e

FireGPG. Pertanto, mettiamoci al lavoro.

Gmail Notifier

L’estensione Gmail Notifier [5] ha una licenza GPL ed

e compatibile con le versioni di Firefox dalla 1.5 alla

3.0 pertanto gran parte degli utenti dovrebbero esse-

re coperti. Ha senso installarla prima di Better Gmail

poiche questa estensione vi permettera di ricevere no-

tifiche nel browser Firefox (dopo aver eseguito il lo-

gin) e dopo aver impostato l’estensione potete inizia-

re a testare realmente le capacita di Gmail con Better

Gmail.

Al solito, vi verra richiesto di riavviare Firefox per

completare l’installazione di Gmail Notifier. Dopo che

Firefox si e riavviato, selezionate il menu a discesa

Strumenti e scegliete Add-Ons e cliccate su Estensio-

ni. Scorrete verso il basso e localizzate l’estensione

(sono in ordine alfabetico). Selezionatela e cliccate su

Preferenze e vi verranno presentate le seguenti opzioni

modificabili:

Le opzioni sono in gran parte autoesplicative e questa

videata illustra le impostazioni di default. Potete impo-

starle a cio che vi soddisfa di piu. Forse la caratteristi-

ca piu interessante e la capacita di abilitare piu account

Gmail. Siccome questa caratteristica impatta su un’al-

34 Computer Programming n. 181 [None 2009]

Page 35: Computer Programming n. 181

PROGRAMMING

Figura 1: Preferenze di Gmail Notifier

tra estensione descritta in questo articolo, la terro per

dopo, come fara per la checkbox di abilitazione delle

connessioni non protette.

Per default avrete ora un’icona disattivata sulla barra

di stato nella parte inferiore del browser. Portando il

mouse su di essa vi verra richiesto di effettuare il login.

Cliccando si aprira una finestra di dialogo di login: una

volta effettuato il login l’icona diventera rossa; finche

siete loggati restera in questo stato. Se spostate ora il

mouse sull’icona vi avvisera se ci sono nuovi messaggi

(il colore diventa blu); ci sara anche una notifica accan-

to all’icona colorata sul numero di e-mail non ancora

lette. In base a come avete impostato le preferenze,

cliccando sull’icona Gmail si aprira in una nuova fine-

stra, nella scheda corrente, in una nuova scheda o in

una nuova scheda senza focus. Se avete impostato le

preferenze di Gmail Notifier per reimpostare il conta-

tore di Notifier quando l’icona viene cliccata per apri-

re una e-mail, questo verra decrementato/incrementato

ogni volta. Per inciso, solo perche vi siete loggati in

Gmail in qualche altro modo non significa che siete au-

tomaticamente loggati via Firefox. Dovete effettuare il

login da Firefox.

Gmail Notifier e una eccellente estensione ma pro-

babilmente vi starete chiedendo perche dovete aprire

Gmail per vedere effettivamente quali sono queste e-

mail. Non chiedetevelo piu. La risposta a questa sec-

catura e impostare un “live bookmark” per sfruttare il

fatto che i bookmark di Firefox possono integrare feed

RSS. Tutto cio che dovete fare e creare una cartella nei

bookmark di Firefox. Selezionate il menu a discesa

Bookmarks e cliccate su Manage Bookmarks. Ora, se-

lezionate il menu a discesa File e scegliete New Live

Bookmark e si aprira una finestra di dialogo e vi verra

richiesto un nome, la locazione del feed e una descri-

zione (opzionale). Nome e descrizione sono arbitrari,

ma si deve seguire un rigido protocollo per il titolo del

feed. Deve assumere il seguente formato:

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

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

tizia meno felice e che username e password vengono

memorizzati in chiaro nel file del bookmark. Effet-

tuate il login a Gmail e nella barra degli indirizzi ve-

drete l’icona di un feed RSS. Cliccate si questa icona

per aggiungere un live bookmark e seguite le richie-

ste. Ora, ogni qualvolta Gmail Notifier vi avvisa che

avete nuova posta, basta andare nel menu Bookmarks

e vedrete il live bookmark del feed Gmail/RSS. Evi-

denziaziondolo vi indichera il titolo(i) della(e) e-mail.

Due avvertimenti: primo, talvolta il live bookmark e

Gmail Notifier vanno fuori sync in termini di numero

di e-mail non lette. La soluzione e semplice: basta un

clic destro sul bookmark live nel menu Bookmarks e

selezionare Reload Live Bookmark. Secondo, il feed

non verra scaricato se non ci sono nuove e-mail nella

cartella inbox.

Better Gmail: un moustrap migliore

La cosa che amo degli hacker dell’open source e che

proprio non possono lasciare le cose come sono. Han-

no un desiderio irresistibile di armeggiare e migliorare

e Firefox e una grotta di Aladino per queste persone.

Gli script Greasmonkey [6] sono ben noti ai devoti del-

la piccola volpe. Wikipedia ha un eccellente articolo a

tal riguardo [7]. Persone piu esperte di me (penso sia-

no molte) hanno messo assieme questi script e hanno

prodotto un’agile estensione in Better Gmail [8] (pote-

te anche visitare la homepage di Better GMail [9] che

aggiunge alcune serie caratteristiche potenti a Gmail

come illustrano le opzioni sottostanti) . Se i pilchard

sono sardine giganti on steroids, allora Better Gmail e

un barracuda. Ed e anche accompagnato da un bonus:

l’approvazione formale di Tim O’Reilly [10].

Computer Programming n. 181 [None 2009] 35

Page 36: Computer Programming n. 181

PROGRAMMING

Figura 2: Schede delle opzioni di Better Mail

Nella scheda General avete la possibilita di opportu-

nita di selezionare le checkbox delle seguenti opzioni:

avere una connessione sicura crittografata con Gmail,

integrare Google Reader e aggiungere una gradevole

piccola caratteristica per mostrare l’utilizzo del disco

come barra di avanzamento. L’opzione piu interessan-

te della scheda Compose e Attachment Reminder. Que-

sta opzione vi ricorda di allegare un file a Gmail nel

caso lo aveste dimenticato, se c’e un riferimento a un

allegato nel subject di Gmail. Se questa caratteristica

e abilitata, quando si clicca su invia Gmail vi segna-

lera di non aver allegato il(i) file, con la possibilita di

premere annulla e di eseguire l’attach prima di reinvia-

re, o di inviarla comuqnue. Non vincera alcun premio,

ma e una piccola caratteristica ben fatta e ancor me-

glio quando il riferimento all’allegato si trova anche

nel testo principale o invece nel titolo della e-mail. La

scheda Messages vi da accesso a diverse caratteristiche

realmente utili: Conversation Preview e, ritengo, una

delle migliori. Una volta abilitata, si sara in grado con

un click destro su una e-mail di visualizzarne il con-

tenuto senza aprirla effettivamente nel modo normale.

Inoltre, ci sono delle opzioni all’interno di questa ca-

ratteristica per archiviare o spostare nel cestino l’ele-

mento selezionato. Ottimo. Attachment Icons sembra

banale ma in effetti potrebbe essere un vantaggio per i

patiti dell’iper-sicurezza visto che sostituisce l’anoni-

ma icona a graffetta che potrebbe celare ogni sorta di

indicibile bestialita. Ho provato questa caratteristica

con un allegato PDF e ha funzionato a dovere. (Il solo

svantaggio e che, poiche Gmail e uno strumento Web,

gli allegati non si trovano sul vostro disco rigido lo-

cale e anche dopo che l’e-mail e stata “scaricata” sara

ancora necessario scaricare l’allegato prima di poterlo

visualizzare, il che puo essere scomodo se e un grosso

file). Labels e un’altra utile caratteristica per l’organiz-

zazione di Gmail. Dopo che Better Mail e installato ed

e abilitata l’opzione Labels, troverete un’etichetta nel-

l’angolo in basso a sinistra della finestra di Gmail. Se

si clicca su Edit Labels apparira una videata e una fi-

nestra di dialogo in cui potete eliminare, modificare o

creare nuove etichette per gestire le vostre e-mail.

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

Se i pilchard sono sardine giganti

on steroids, allora Better Gmail e

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

Abilitando Filter Assistant otterrete la stessa funzio-

nalita che vi attendereste da un client e-mail conven-

zionale come Evolution o Thunderbird per instrada-

re la posta desiderata in cartelle preimpostate o per

eliminarla come spam o robaccia.

L’ultima scheda importante in Better Mail e Sidebar.

Le due checkbox piu utili da attivare sono Add Google

calendar Link e Add Google Reader Link. Fatto cio,

questi link verranno aggiunti a Gmail e vi permetteran-

no, se lo desiderate, di accedere a queste applicazioni

Google da Gmail stesso, senza lasciarne i confini.

Utilizzo di GMail con IMAP e POP

Se si clicca sul link Settings in alto alla pagina si ve-

dra un certo numero di impostazioni. Selezionate For-

warding and POP/IMAP dove sarete in grado di predi-

sporre l’abilitazione di questi due protocolli in Gmail

(Figura 3).

Si puo scegliere una delle due opzioni ma in ogni ca-

so si avra una discreta quantita di configurazione nel

normale client e-mail. Questo aspetto e al di la de-

gli scopi immediati di questo articolo, ma si possono

ottenere istruzioni molto dettagliate e degli screenshot

alla pagina GMail Help Centre [11]. Dopo aver se-

36 Computer Programming n. 181 [None 2009]

Page 37: Computer Programming n. 181

PROGRAMMING

Figura 3: Scheda delle impostazioni di Gmail per la

configurazione POP e IMAP

guito queste istruzioni, ritornate alle impostazioni di

forwarding e salvate le modifiche. Si puo avere la po-

sta di Gmail inoltrata al normale client e-mail senza

esguire il login a Gmail o scaricarla direttamente nel

proprio programma di e-mail. Il che non va confu-

so con l’impostazione del servizio di Mail Fetcher in

Gmail che permette di scaricare la posta dal POP ser-

ver di un client e-mail (purche il vostro ISP suppor-

ti l’inoltro), pur conservando la possibilita di lasciare

il(i) messaggio(i) sul server. Si puo iniziare il proces-

so di impostazione del Mail Fetcher nella scheda Ac-

counts di Settings, seconda voce in basso. GMail Help

Centre fornisce una spiegazione e un howto [12].

Un’estensione per Firefox per chi non si fida di

nessuno

Molte estensioni per Firefox sono rivolte a utenti che

non si fidano neanche della propria madre che gli da il

bacio della buonanotte. Se siete una di queste persone,

ho un’estensione per voi che si integra con Gmail e of-

frira un sonno tranquillo e sicuro sapendo che nessuno

puo sbirciare o ficcare il naso su cio che inviate tramite

Google.

Molti lettori avranno sentito parlare del software di

crittografia Pretty Good Privacy (PGP) [13] che vie-

ne utilizzato, tra l’altro, per crittografare le e-mail. E

Figura 4: Preferenze di FireGPG

stata solo questione di tempo prima che qualcuno de-

cidesse di scrivere un’estensione per Firefox. Questa

estensione e FireGPG [14] e utilizza GnuPG svilup-

pato dalla Free Software Foundation e fortunatamente

supporta Gmail. Al momento in cui scrivo non e di-

sponibile dal sito ufficiale degli addon di Mozilla (il

che sarebbe piu sicuro), ma non avuto alcun problema

con il precedente link.

Tuttavia, prima di farlo funzionare in Firefox e pri-

ma necessario installare GnuPG sulla propria macchi-

na GNU/Linux. In molti casi sara gia installato. Altri-

menti, controllate sui repository del software e instal-

latelo (o reperitelo dal sito ufficiale [15]). Si tratta di

un tool a riga di comando (si veda man gpg) ma ci sono

diversi frontend disponibili [16], tra cui i due principali

sono KGpg per KDE e Seahorse per Gnome. Entrambi

genereranno le coppie di chiavi necessarie per critto-

grafare e apporre la firma digitale alle e-mail. Il mio

amico-collaboratore, Dmitri Popov, ha scritto un breve

ma eccellente howto su questo passaggio [17]. Ora si

puo installare l’estensione e la schermata Preferences

fornira le opzioni mostrate nella Figura 4.

La prossima volta che componete un messaggio in

Gmail, FireGPG avra aggiunto il pulsante Sign, Crypt

and Send che, se cliccato, vi fara una doppia richiesta:

una volte per la chiave pubblica e una per la chiave pri-

vata. Ci saranno anche altri pulsanti con variazioni di

queste opzioni in base alle proprie preferenze. (Que-

Computer Programming n. 181 [None 2009] 37

Page 38: Computer Programming n. 181

PROGRAMMING

Figura 5: Configurazione delle etichette GTD nelle

impostazioni Gmail

ste opzioni appariranno nella schermata di composi-

zione). Se vi fidate di Google per le chiavi private, ed

e un grosso se, allora ora avete una connessione secura

e la posta crittografata. Dopo aver iniziato questo ar-

ticolo FireGPG e stato aggiornato (alla versione 0.4.6)

per lavorare con l’ultima versione di Gmail: crea un

pulsante utilizzato per aggiungere un file crittografato

come allegato.

Perche non utilizzare un Gmail ancora migliore

per far tutto?

Gmail, Better Mail, Gmail crittografato. Perche fer-

marsi? Perche non estendere ulteriormente le cose

e aggiungere qualche stimolo organizzativo realmente

valido a Google in Firefox? Mi riferisco all’estensio-

ne GTD (Getting Things Done), all’estensione Better

Gcal e all’estensione Minimap sidebar.

GTD: Get Things Done

Se siete fanatici del controllo e dovete semplicemente

essere iper-organizzati, allora questa estensione per Fi-

refox fa per voi. Giusto quando si pensa che qualsiasi

altra estensione a Gmail dovra ottenere una concessio-

ne edilizia, si fa avanti GTD [18] per aggiungere una

gran quantita di ulteriori funzionalita a un’interfaccia

Figura 6: Il riquadro GTD search

gia stipata di caratteristiche che sgomitano a vicenda.

Citando le parole del sito web ufficiale, GTD rappre-

senta il massimo di sinergia di gestione e comunicazio-

ne pur garantendo cautela e sicurezza. Perbacco! Se si

e interessati alla filosofia alla base di GTD, la rivista

Wired ha pubblicato un articolo su GTD [19]. Si puo

utilizzare il precedente link [18] per installare questa

estensione super piccola, ma GTD e ora felicemente

presente nel sito ufficiale Mozilla degli addon [20].

Come FireGPG, con Gmail aggiornato alla versione

2.0, GTD non funzionera opportunamente a meno di

non tornare a eseguire la vecchia versione di Gmail.

Basta individuare le impostazioni older version nel-

l’angolo in alto a destra di Gmail e cliccando verranno

ripristinate tutte le configurazioni di queste estensio-

ni (se, come me, avete gia installato GTD). Questa e

la buona notizia, piu il fatto che gli sviluppatori GTD

stanno lavorando alla versione 2.0 per renderla compa-

tibile con Gmail 2.0. Nel frattempo, la cattiva notizia

e che se avete selezionato le impostazioni piu vecchie

di Gmail per ripristinare le impostazioni GTD, dopo

che effettuate il logout e nuovamente il login, riappare

la versione piu recente di Gmail come per vendetta e

siete costretti a ripetere di nuovo il trucco delle impo-

stazioni: e continuerete a doverlo fare fino all’aggior-

namento di GTD; ma questo e un piccolo prezzo da

pagare per questa super piccola estensione.

Dopo aver installato questa estensione, riavviato Fire-

38 Computer Programming n. 181 [None 2009]

Page 39: Computer Programming n. 181

PROGRAMMING

Figura 7: Gmail con le opzioni avanzate di GTD

fox e effettuato il login in Gmail, si vedra che cio che fa

e espandere notevolmente la funzionalita della caratte-

ristica Labels. Le etichette ora appaiono sotto varie

intestazioni: Contexts, Status, Projects e References

con la possibilita di aggiungere quante sottointestazio-

ni si vuole. Mentre tutte le etichette extra (collassa-

bili) sono situate nella parte inferiore del lato sinistro

di Gmail, tre altre caratteristiche vengono aggiunte:

un link GTD nell’ultima colonna di ciascuna e-mail,

un link Show GTD Search all’inizio dello schermo e

un pulsante nell’angolo inferiore destro per permetter-

vi di stampare Hipster PDA cards [21]. Cliccando su

una delle categorie delle etichette si aprira la scheda

Gmail Labels Setting in cui si possono selezionare le

sottocategorie o crearne di nuove (Figura 5).

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

GTD rappresenta il massimo di

sinergia di gestione e

comunicazione pur garantendo

cautela e sicurezza- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Il servizio “GTD search” apre una finestra di dialogo

con molte opzioni di ottimizzazione fine basate sulle

etichette impostate, sulle date e sul fatto che le e-mail

siano contrassegnate da stellette o abbiano allegati, con

Figura 8: Google calendar attivato da GTD

la possibilita di salvare le ricerche. Si puo effettuare

una ricerca, poi aggiungere Categorie/Etichette a sin-

gole e-mail e quando si ritorna alla propria inbox que-

ste e-mail saranno ora contrassegnate di conseguenza

(Figura 6).

Infine, quando si vuole comporre una e-mail si vedra

che l’estensione GTD ora vi fornisce tre opzioni: Com-

pose E-mail, Compose Myself an action e Compose

Myself a Reference. La prima e autoesplicativa e le

altre due, se selezionate, apriranno ulteriori finestre di

dialogo contestuali (Figura 7).

Con questa caratteristica potete inviarvi un’azione o un

riferimento, compreso qualsiasi allegato, e cliccando

su Add event info si puo inserire dove e quando. Su-

bito sopra l’area principale di composizione del testo

vi e un pulsante di azione more event options. Se si

clicca su di esso si aprira una finestra Google calendar

e permettera una ulteriore configurazione (Figura 8).

GTD e una delizia per il power user con sufficienti

opzioni (ben sette schede) da tenere occupato il piu

inveterato smanettone (Figura 9).

Questo e solo un assaggio di cio che questo meravi-

glioso addon per Firefox puo fare per un’applicazione

Google come Gmail. Il sito web ufficiale vi dira molto

di piu e in modo anche piu dettagliato.

Computer Programming n. 181 [None 2009] 39

Page 40: Computer Programming n. 181

PROGRAMMING

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

gli smanettoni

Better Gcal: Google Calendar imbellettato

Google Calendar ha alcune buone caratteristiche ma

al solito i demonietti smanettoni hanno rovistato a fon-

do rummaging e hanno tirato fuori un’estensione detta,

ehm . . . , Better Gcal [22]. Come Better Gmail, lo sco-

po e semplice: aggiungere funzionalita realmente utili

al calendario di default di Google. Non e pieno zeppo

di caratteristiche come Better Gmail ma ha alcune ben

fatte opzioni di configurazione (Figura 10).

Queste, come per Better Gmail, sono una gentile con-

cessione degli script Greasmonkey acclusi e aggiungo-

no, letteralmente, un poı di colore al calendario. Che

si utilizzi Google calendar come applicazione standa-

lone o integrandola con tutti gli altri pacchetti Google,

un’opzione che si deve assolutamente abilitare e forza-

re una connessione sicura (https). In base alla dimen-

sione delle voci del vostro calendario, text wrap events

e utile. Le altre opzioni attivabili sono essenzialmente

estetiche.

Google Calendar: un avvertimento

Un avvertimento sull’utilizzo di Google calendar. Se

rendete pubblico il vostro calendario potete, in base

a cio che inserite, esporvi a qualsiasi cosa, dal furto in

casa al furto di identita al pedinamento. Ho dato un’oc-

chiata ad alcuni calendari pubblici di “singoli privati”

e la quantita di informazioni rivelate era sorprendente

e scioccante. Le informazioni erano tali che era possi-

bile sapere esattamente quando qualcuni sarebbe stato

via per gite o vacanze facilitando cosı le effrazioni e

sufficienti dettagli personali e finanziari da facilitare il

furto di identita. Visitate il sito [23] e vedrete voi stes-

si. E una lettura che impensierisce. La lezione e chiara:

scegliere l’impostazione privata in Google calendar e

se si deve condividere qualcosa perlomeno configura-

telo per limitare la condivisione a specifiche persone

di cui vi fidate.

Ricordati il latte: non un’estensione ma estendera

Google Calendar

Sfortunatamente, Better Gcal non fa per Google calen-

dar cio che fa GTD per Gmail; se si vuole questo tipo

di valore aggiunto, si potrebbe considerare Remember

the Milk for Google Calendar [24]. Andate alla ho-

mepage di RTM, cliccate su Signup Now! e seguite le

indicazioni per iscriversi a uno speciale calendario che

aggiungera piccole icone di task a ciascun giorno (un

segno di spunta blu). E anche disponibile una guida

rapida [25]. Questi segni blu appariranno solo dopo

che vi siete assicurati che il calendario Remember the

Milk e nella vostra Calendars List e che la casella del-

la checklist sia selezionata. Fatto cio, potete cliccare

sulle icone dei task in alto a ciascun giorno del Google

Calendar, effettuare il login (con username e password

che avete impostato quando avete installato RTM) e

creare i task da visualizzare.

Attraverso la funzionalita Locations feature, Remem-

ber the Milk vi offe una mappa relativa ai task che

hanno un componente location (pratico se state con-

dividendo Google calendar con amici che non hanno

familiarita con la vostra localita). Questo fungera da

supplemento a un’altra extension Firefox di nome Mini

Map Sidebar [26], essenzialmente Google Maps nella

barra laterale di Firefox, che ha molte caratteristiche

al di la dello scopo di questo articolo (elencate sul sito

ufficiale dell’add-on).

Comunque, RTM e popolare e la popolarita e fonte di

piu richiesta di feature creep. Pertanto, non sorpren-

de che ci sia un’estensione per Firefox per questo tool

di gestione dei task. Si chiama Delegate to Remem-

ber the Milk e si basa sull’estensione DelegateGCal di

40 Computer Programming n. 181 [None 2009]

Page 41: Computer Programming n. 181

PROGRAMMING

Figura 10: Preferenze di Better Gcal

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

parrot per le caratteristiche di RTM in Google Calen-

dar allora installatelo [27] e, happy days, un pulsante

verra aggiunto ai messaggi Gmail per generare mes-

saggi verso RTM che crea un nuovo task. Come per

FireGPG, questa estensione e stata colpita dall’aggior-

namento di GMail e funzionera solo con la versione

piu vecchia, richiedendo cosı la modifica della versio-

ne nelle impostazioni di Gmail che ho citato prima.

Tuttavia, sarete ancora in grado di utilizzarla per con-

vertire le e-mail in task pur conservando un collega-

mento all’indietro alla e-mail originale; proprio cosı.

Se vi piace realmente RTM non siete limitati a Gcalen-

dar e Gmail; potete averlo anche nella barra laterale di

Firefox. Con il gadget iGoogle abilitato, aprite Book-

marks Manager e create un nuovo bookmark e digitate

la seguente URL:

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

e assicuratevi che sia spuntata la casella “Carica questo

bookmark nella barra laterale”. Ora, purche siate log-

gati in RTM potete visualizzarlo da una barra laterale

di Firefox semplicemente selezionando questa opzione

dal menu a discesa Bookmarks. Nel descrivere RTM

ho scalfito solo la superficie di cio che puo fare e su

come si integra con Firefox e le applicazioni Google,

SMS e gli instant messenger (AIM, Gadu-Gadu, Goo-

Figura 11: GMailFS non e il solo modo per accedere a GMail

come se fosse un disco remoto.

gle Talk, ICQ, Jabber, MSN, Skype e Yahoo! sono tutti

supportati).

Gspace: spazio online gratuito tramite Firefox

Gli utenti GNU/Linux avranno familiarita nell’utilizzo

di Fuse (File User Space) in combinazione con Gmail

per creare filesystem Linux virtuali e montabili, me-

glio noti come GmailFS [28]. GmailFS vi permettera

effettivamente di utilizzare GMail come un filesystem.

Se Fuse o GmailFS non fanno parte dei repository soft-

ware delle vostre distribuzioni, potete reperirli sul sito

ufficiale [29]. Molti principianti possono rifiutarsi di

installare i moduli Fuse Kernel (tuttavia in gran parte

delle versioni recenti e installato per default) e insegui-

re le dipendenze, tuttavia l’impegno ne sara valsa la pe-

na: sarete in grado di utilizzare Gmail senza dipenden-

ze dagli aggiornamenti del browser che possono cor-

rompere l’estensione (anche non dovendo accedere ai

comandi per i file).

Se si preferisce un’estensione Firefox che funziona

con Gmail, benche non ufficialmente, allora Gspace

[30] fa per voi. Si tratta di uno spazio online remo-

to di memorizzazione di file con tutti i fronzoli. Siete

distanti una sola estensione dai fino a sei Gigabyte di

facile e comoda capacita di memorizzazione attraver-

so il vostro account Gmail. E facile da usare, e come

Computer Programming n. 181 [None 2009] 41

Page 42: Computer Programming n. 181

PROGRAMMING

Figura 12: L’interfaccia a quattro pannelli di Gspace

spostare i file localmente sul vostro computer. Ai file

caricati su Gmail via Gspace potete accedere e recu-

perarli da dovunque, su qualsiasi macchina: compreso

permettere l’accesso ad altri a cui vi fidate di fornire i

dettagli del vostro account Gmail. E una caratteristi-

ca molto utile per grossi file che potrebbero soffocare

il vostro normale client e-mail, anche su una decente

connessione a banda larga. Una volta installato, Gspa-

ce aggiungera un’icona alla barra di stato di Firefox.

Dal menu add-on delle estensioni potete configurare

le opzioni di Gspace e questo dovrebbe essere il vo-

stro primo scalo: Gspace Preferences Settings. Qui,

potete impostare le icone, le miniature, la dimensio-

ne dei file allegati, ec. Per aprire l’applicazione basta

cliccare sull’icona Gspace. In base a come avete confi-

gurato Firefox, Gspace dovrebbe aprirsi in una scheda

separata (Figura 12).

Chiunque ha utilizzato FireFTP, un’estensione client

FTP per Firefox, riconoscera l’organizzazione dell’in-

tefaccia: una schermata contenente i files della propria

directory home, una schermata per il trasferimento di

questi file su Gspace, una schermata Transfer e una

schermata Status (tutte ridimensionabili). Una volta

loggati, selezionate un o piu file cliccate sulla freccia

blu di upload e i file selezionati verranno trasferiti nella

schermata destra. Allo stesso tempo, nella schermata

in basso a sinistra Transfer, una barra d’avanzamento

indichera lo stato dell’upload. Ai file caricati potete in

seguito accedere (e ritrasferirli) da qualsiasi altra mac-

china su cui sono installati Firefox e Gspace. Se ora

aprite Gmail questi file verranno mostrati come una

normale e-mail che puo essere visualizzata, scandita

e/o scaricata. Questa caratteristica e utile per il tra-

sferimento di grossi file con tutti quelli con cui volete

condividerli che hanno un account Gmail, specialmen-

te per chi lavora, ad esempio, in un gruppo di proget-

to. Una delle migliori caratteristiche dell’estensione

Gspace e la gamma dei Transfer Modes che permette

di trasferire file, visualizzare file di immagini caricati

e scaricare da un drive Gmail. Si possono anche ri-

produrre i propri file musicali caricati, benche per fare

cio avrete bisogno del plugin Flash Player (Gspace vi

fornira un link di download). Per questa caratteristica,

dovrete concedere all’estensione Gspace il permesso

di accedere a host esterni come gmail.com. Potete ot-

tenere le istruzioni da [31]. Si possono anche gestire

piu account GMail da Gspace ma solo sequenzialmen-

te, e non consecutivamente, poiche Firefox mantiene

i cookie attraverso la session di login: pertanto, piu

acount GMail su piu schede Firefox non e compreso

nel menu!

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

L’installazione di Customise

Google vi dara accesso a un

ventaglio fenomenale di

impostazioni Google per migliorare

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

Il meglio di tutto il resto: una rapida

panoramica

Avevo intenzione di includere Google Browser Sync

[32]. Anche se i dati sono opzionalmente crittografa-

ti utilizzando un PIN alfanumerico in modo che dati,

password e cookie siano protetti (anche da Google?),

una possibilita migliore e di utilizzare Gspace in com-

binazione con due eccellenti piccole estensioni per Fi-

refox: FEBE [33] e CLEO [34]. Queste estensioni vi

permetteranno, rispettivamente, di eseguire il backup

di tutte le vostre estensioni, temi, bookmark, preferen-

ze, password, cookie, profili e di impacchettare tutte

42 Computer Programming n. 181 [None 2009]

Page 43: Computer Programming n. 181

PROGRAMMING

le estensioni e i temi in un unico file compresso xpi

installabile. Potete poi usare Gspace per caricare il fi-

le CLEO e accedere ad esso per installare il tutto su

un’installazione Firefox in esecuzione su un’altra mac-

china dovunque altro sia. Per lo stesso motivo, Google

Notebook [35] (un blocco appunti a scratch pad and

shoe in per del.icio.us?) e un piccolo tool di ricerca ben

fatto da utilizzare in Firefox, specialmente se deside-

rate collaborare online e integrarlo con Gmail e Goo-

gle calendar [36], ma se volete una reale estensione

da “power user” per Firefox, allora Zotero [37] e una

soluzione molto migliore. E standalone ma piu poten-

te, e la uso regolarmente nelle mie ricerche. Il potente

insieme di caratteristiche puo essere realmente apprez-

zato solo installando l’estensione [38]. Infine, benche

sia considerato da maleducati mordere la mano di chi ti

porge il cibo, non ci sono scuse per permettere a Goo-

gle di prendersi delle liberta con la vostra sicurezza e

i vostri dati. L’installazione di Customise Google [39]

vi dara accesso a un ventaglio fenomenale di impo-

stazioni Google per migliorare la sicurezza del brow-

ser. Consideratelo come l’aggiunta di meta-preferenze

a tutte le altre estensioni Google.

Conclusioni

Le estensioni Google vi permettono di ingranare la

potenza di Firefox e di trascorrere un’intera sessio-

ne online senza doverne lasciare i confini. I soli

avvertimenti riguardano la sicurezza e gli aggiorna-

menti alle estensioni e ai browser che corrompono la

compatibilita.

Se questo assortimento non e sufficiente a esaurirvi o

se la mia selezione non e di vostro gradimento, allora

fate una visita a

http://geekpedia.wordpress.com/category/gmail/

un sito web che elenca non meno di ottanta tool e sug-

gerimenti per Gmail e sguazzate nell’abbeveratoio per

Google.

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

Ci sono abbastanza estensioni da

durare almeno quanto una causa

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

le note dell’articolo sono presenti all’indirizzo

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

Page 44: Computer Programming n. 181

Estendere Nautilus: (fotocameree) rotazione di immagini JPG

Personalizzare il filemanager di GNOME con gli script

Scott Carpenter

Recentemente stavo cercando un modo per

ruotare immagini JPG da Nautilus, e ho

trovato un modo per fare questo e altro.

Non e difficile personalizzare il menu po-

pup che si apre con un clic destro in Nautilus per ese-

guire azioni personalizzate sui file. In questo articolo

presento alcune istruzioni e script da cui partire. Spes-

so ho immagini fotografiche orientate verticalmente

che voglio ruotare dal file manager. L’explorer di Win-

dows ha una utile funzionalita con cui si possono sele-

zionare piu immagini in modalita thumbnail, e con un

clic destro si ottiene un menu popup (noto anche come

menu di contesto), e si puo selezionare una rotazione

in senso orario o anti oario. Si tratta di una trasfor-

mazione senza perdita di informazione, al contrario di

cio che probabilmente si ottiene se si apre un’imma-

gine con il proprio programma di grafica preferito, la

si ruota, e la si salva nuovamente. Questo metodo e

anche scomodo se, come accade a me, volete solo ruo-

tare le immagini dopo averle estratte dalla vostra foto-

camera. Si tratta di una delle tante cose che ho appreso

gradualmente nel sostituire le mie precedenti compe-

tenze Windows, e come di solito accade quando trovo

una soluzione in GNU/Linux, sono rimasto compiaciu-

to dal raffinato approccio costruttivo dei sistemi *nix.

Mi sono reso conto di avere la potenza di bash a portata

di mano da Nautilus, con script che sfruttavano l’ulte-

riore vantaggio di alcune eleganti utility che descrivero

piu oltre.

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

Non e difficile personalizzare il

menu popup che si apre con un

clic destro in Nautilus per eseguire

azioni personalizzate sui file- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

E vero che molti programmi di importazione ruote-

ranno automaticamente le immagini mentre vengono

estratte dalla fotocamera, ma non tutti lo fanno, e non

sarete sempre in grado di utilizzare il programma di

importazione del caso. E anche possibile che la vostra

fotocamera non memorizzi gli opportuni metadati Exif

(http://en.wikipedia.org/wiki/Exif) nel file dell’imma-

gine, lasciando inerme il vostro super fantastico pro-

gramma di importazione. Pertanto ritengo che possia-

mo convenire sul fatto che si tratti di qualcosa che e

necessario avere per facilitare la gestione delle foto.

Mi occupero in modo specifico delle operazioni sui fi-

le immagine per dimostrare come Nautilus puo essere

esteso. Trattero il caso dei file JPG che in pratica rap-

presentano il formato universale delle fotocamere digi-

tali (almeno in quelle utilizzate da noi comuni mortali)

e utilizzero i dati Exif che ci permettono di fare diver-

se cose utili. Dalla lettura di questo articolo, sarete in

grado da Nautilus di effettuare un clic destro sulle vo-

tre immagini e di avere delle opzioni di menu come

quelle mostrate nella Figura 1.

Questo corrisponde alla seguente gerarchia nellavostra directory home:

44 Computer Programming n. 181 [None 2009]

Page 45: Computer Programming n. 181

PROGRAMMING

Figura 1: Il menu popup del file manager Nautilus di

GNOME attivabile con un clic destro

˜/.gnome2/nautilus-scripts/img/

autorotate.sh

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

change-mod-date-to-exif.sh

rename-with-exif-date.sh

rotate-left.sh

rotate-right.sh

caution/strip-exif.sh

Preliminari

Il codice di questi script rilasciato come pubblico do-

minio appare piu oltre. Si puo anche scaricare il fi-

le allegato all’articolo downloads.tgz e estrarlo nella

propria directory nautilus-scripts:

/.gnome2/nautilus-scripts$ tar -xvf

downloads.tgz

La pagina GNOME su come estendere Nautilus e un

buon punto da cui partire. Riporta che si puo anche uti-

lizzare il menu File → Scripts per eseguire gli script,

e da lı o dal menu di contesto che si ottiene con un

clic destro, si puo selezionare l’opzione “Open Scripts

Folder” per aprire la directory in Nautilus. Se non ave-

te alcuno script installato, non otterrete queste opzioni

di menu. Accertatevi che gli script che create siano

eseguibili.

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

Mi sono reso conto di avere la

potenza di bash a portata di mano

da Nautilus, con script che

sfruttavano l’ulteriore vantaggio di

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

Possibili sorprese

Inizialmente non riuscivo a far apparire il menu

degli script quando inserivo gli script nella radice di

nautilus-scripts, e pensavo dovessero essere posizio-

nati nelle sottodirectory. Ma quando ho ricontrollato

mentre scrivevo, funzionava bene in questo modo. Poi

dopo aver rimosso e ripristinato i file nella mia ge-

rarchia preferita, non riuscivo di nuovo a far apparire

gli script nel menu, anche dopo aver chiuso e riaperto

Nautilus. Ho dovuto forzare un ricaricamento delle di-

rectory in Nautilus per vedere nuovamente il tutto nel

menu, utilizzando la piccola freccia circolare blu della

toolbar. Forse cio aveva qualcosa a che fare con il mio

problema iniziale. In ogni caso, se le cose non appaio-

no come previsto, accertatevi di ricaricare la directory

nautilus-scripts. (Disponibile anche nel menu View→

Reload e tramite la scorciatoia di tastiera CTRL + R).

C’e ancora una cosa da fare prima di potere iniziare

a osservare gli script in azione. E necessaria l’uti-

lity jpegtran (http://en.wikipedia.org/wiki/Libjpeg)

prelevabile dal sito Independent JPEG Group

(http://www.ijg.org/) e jhead di Matthias Wandel

(http://www.sentex.net/ mwandel/jhead/). Entrambi

sono piccoli e robusti programmi free software. jhead

e di pubblico dominio, e jpegtran ha una sua licenza

che appare essere pienamente free.

La buona notizia e che probabilmente avete gia jpeg-

tran, e jhead e facilmente disponibile. Nelle mie mac-

chine dotate di Ubuntu 7.04 (Feisty Fawn) e di Fedora

FC5, jpegtran fa parte dell’installazione di default. Su

Ubuntu ho installato jhead con il comando

sudo apt-get install jhead

e su Fedora, come utente root, con il comando

yum install jhead

Per scopi di sperimentazione, raccomando di utilizza-

re una directory temporanea con copie di alcune im-

Computer Programming n. 181 [None 2009] 45

Page 46: Computer Programming n. 181

PROGRAMMING

Figura 2: L’immagine monkey.jpg

magini. Molto probabilmente non vorrete utilizzare

le vostre ordinarie directory di immagini mentre lavo-

rate inizialmente con questi script, poiche non si puo

effettuare l’undo delle operazioni.

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

Per scopi di sperimentazione,

raccomando di utilizzare una

directory temporanea con copie di

alcune immagini- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Una delle cose che vi mostrero e come creare uno

script di “autorotazione” che sfrutta i dati di orien-

tamento di Exif. Se avete ruotato le vostre imma-

gini in precedenza, questo flag puo essere azzerato.

Si puo utilizzare come immagine di prova monkey.jpg

(Figura 2).

E ora passiamo finalmente agli scripts!

rotate-right.sh (in senso orario)

#!/bin/bash

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

#if a file and not a dir

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

# per default jpegtran copia solo

# alcuni dati Exif; specificare "all"

jpegtran -rotate 90 -copy all \

-outfile "$1" "$1"

# azzera il tag di rotazione/orientamento

# in modo che alcuni visualizzatori

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

jhead -norot "$1"

fi

shift

done

Ecco cosa fa lo script:

• Processa tutti i file specificati sulla riga di coman-

do in un ciclo. (Se invocato da Nautilus, passera

tutti i nomi di file come argomenti allo script).

• Finche ci sono file, e se il file e in effetti un file e

non una directory, invochera jpegtran per ruotare

l’immagine di 90 gradi. Facendo sı che il file di

output abbia lo stesso nome del file di input, andra

semplicemente a sostituirlo.

• Dopo la rotazione dell’immagine, invoca jhead

per azzerare il flag di orientamento nei metadati

Exif. Come evidenzia il commento nello script,

se non modificate il tag di rotazione, programmi

come Eye di GNOME (il visualizzatore di default

di GNOME) verra confuso e ruotera l’immagine

poiche e abbastanza astuto da leggere i dati Exif e

cercare di orientare al meglio l’immagine per una

corretta visualizzazione.

Per ottenere la rotazione in senso antiorario, pote-

te creare lo script rotate-left.sh copiando il codice

46 Computer Programming n. 181 [None 2009]

Page 47: Computer Programming n. 181

PROGRAMMING

precedente, in cui sostituirete -rotate 90 con -rotate

270.

Una volta salvato questo script, si puo aprire una fi-

nestra terminale ed eseguirlo da riga di comando per

verificare che funzioni come previsto:

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

Un motivo per effettuare questa verifica e che quan-

do si eseguono delle cose dal menu degli script di

Nautilus, non otterrete alcun feedback in caso di erro-

ri. Gli script falliscono semplicemente dietro le quin-

te. Ad esempio, se i vostri script non sono eseguibili,

sembrera che uno script non abbia eseguito niente.

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

Una delle cose che vi mostrero e

come creare uno script di

autorotazione che sfrutta i dati di

orientamento di Exif- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

autorotate.sh

Il prossimo script e ancora migliore. Mi e capitato di

consumare un sacco di tempo in Windows Explorer a

setacciare una grossa directory di immagini thumbnail

per trovare quelle che erano state scattate verticalmen-

te e di multi-selezionarle per poterle ruotare. E un la-

voro noioso: non e sempre ovvio dal thumbnail qual e

l’orientamento, e mentre si scorre la finestra si possono

accidentalmente sia deselezionare i file sia seleziona-

re delle immagini orizzontali. Se la vostra fotocame-

ra memorizza nel file i dati di orientamento Exif (ad

esempio, la mia Canon lo fa), potete selezionare tutti i

file e utilizzare la funzionalita di “autorotate” di jhead

che ruotera solo le immagini verticali. (Nella prati-

ca ho constatato che non e garantito al 100%, forse

perche la fotocamera a volte non rileva correttamente

l’orientamento?).

#!/bin/bash

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

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

jhead -autorot "$1"

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

# iname -- case insensitive

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

-exec jhead -autorot {} \;

fi

shift

done

Per questo script, ho fatto in modo che possiate sele-

zionare anche una directory, poiche e piu probabile che

vogliate eseguirlo su intere directory. Ho notato che se

si clicca col tasto destro su una directory nel pannello

sinistro “ad albero” di Nautilus, non si ottiene il menu

degli script, ma e disponibile dal menu File→ Scripts.

Il menu degli script e anche disponibile se si effettua

un clic destro su una directory nel pannello destro di

Nautilus.

Ecco cosa fa lo script:

• Come negli script di rotazione “manuale”, pro-

cessa in un ciclo tutti gli argomenti (file e/o

directory) passati al programma.

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

-autorot.

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

su questa directory, alla ricerca di file .jpg (non

tenendo conto della grafia), e per ciascun file tro-

vato, invoca jhead -autorot. jhead azzera il flag di

orientamento come parte di questa operazione.

Queste erano le principali caratteristiche che avevo

iniziato a cercare (beh, non avevo previsto di arriva-

re a una “auto” rotazione!), ma dopo questi script ho

proseguito per vedere cos’altro potevano fare jhead e

jpegtran:

change-mod-date-to-exif.sh

#!/bin/bash

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

# se un file e non una directory

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

jhead -ft "$1"

fi

shift

done

Se si copiano i file direttamente da un lettore di sche-

de USB (o da alcune fotocamere che vi permettono di

leggere via USB come dispositivi rimovibili, come la

Computer Programming n. 181 [None 2009] 47

Page 48: Computer Programming n. 181

PROGRAMMING

mia vecchia Olympus ma non come la mia nuova Ca-

non), la data di modifica viene preservata per i file sul

computer. Mi piace questa caratteristica poiche andro

poi a utilizzare un programma Visual Basic che uti-

lizza le date di modifica per rinominare i file con un

timestamp. I miei file di immagini iniziano prevalen-

temente con AAMMGG HHMMSS. E utile perche mantiene

le immagini in sequenza e le identifica in modo uni-

voco. (E vado anche oltre e aggiungo del testo identi-

ficativo al prefisso “data ora”). Quando ho provato a

importare questo programma in GNOME, ho scoper-

to con disappunto che aggiornava l’ora di modifica dei

file mentre li copiava sulla macchina desktop. Bene,

ora potete correggere cio con lo script change-mod-

date-to-exif.sh. Se l’orologio della vostra fotocamera e

impostato correttamente, probabilmente avrete la data

in cui ogni immagine e stata scattata memorizzata nei

dati Exif. Jhead ripristinera l’ora di ultima modifica

del file in base alle informazioni Exif.

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

Se la vostra fotocamera memorizza

nel file i dati di orientamento Exif

potete selezionare tutti i file e

utilizzare la funzionalita di

“autorotate” di jhead che ruotera

solo le immagini verticali- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

rename-with-exif-date.sh

Ancor meglio, quel vecchio programma VB puo essere

buttato via e possiamo utilizzare jhead per rinominare

direttamente il file con la data Exif:

#!/bin/bash

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

# se un file e non una directory

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

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

fi

shift

done

Questo script utilizza un’altra opzione di jhead per ri-

nominare il file con un timestamp AAMMGG HHMMSS.

Cosı com’e opera solo su file, ma puo essere facilmen-

te modificato per operare anche su directory, in modo

simile a autorotate.sh. A questo punto si puo anche

creare facilmente un nuovo script, change-date-and-

rename-with-exif.sh, che invoca semplicemente gli al-

tri due script in modo da poter modificare la data di

modifica del file e rinominarlo con un timestamp in un

solo passo.

strip-exif.sh

E in ultimo, attenzione:

#!/bin/bash

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

# se un file e non una directory

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

jhead -purejpg "$1"

fi

shift

done

Ho messo questo script in una directory di nome atten-

zione (sotto la directory nautilus-scripts/img) in modo

da ridurre la possibilita di avviarlo accidentalmente.

Questo script elimina tutti i dati Exif da un’immagine,

cosa che il piu delle volte non si desidera fare. Utilizzo

questo script per alcune immagini che carico sul mio

sito (http://www.movingtofreedom.org/), in modo da

ridurre l’utilizzo della banda e il tempo di caricamento

della pagina. Ad esempio, monkey.jpg e di 51 KB con

i dati Exif, e di 44 KB senza. Non una grossa cosa per

le immagini memorizzate sul proprio disco rigido, spe-

cialmente perche di solito le immagini odierne supera-

no 1 MB, ma puo essere di aiuto nel caso improbabile

(per me!) di un post su slashdot o su digg.

48 Computer Programming n. 181 [None 2009]

Page 49: Computer Programming n. 181

Filtri audio ... con Gimp

Utilizzare Gimp come un ideale filtro audio digitale

Gianluca Pignalberi

Gimp viene universalmente utilizzato per

la manipolazione di immagini. Tutta-

via, con un po’ di creativita e un paio di

trucchi, puo anche essere utilizzato come

filtro audio! Ecco come. . .

Filtri audio

Se avete familiarita con i filtri audio, potete saltare

questa introduzione. Per chi non conosce i filtri, ecco

una breve spiegazione. Un suono, come tutti i segnali,

viene misurato in Hz (Hertz). Questa misura esprime

la frequenza del segnale. Piu bassa e la misura, piu

bassa e la frequenza. Un filtro e uno strumento che mi-

gliora una o piu frequenze del segnale, in base a un cri-

terio. In un mondo ideale, un filtro sopprime completa-

mente le frequenze indesiderate. Sfortunatamente, non

viviamo in un mondo ideale.

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

Un reale filtro passa basso e

qualcosa che riceve in input un

segnale e emette in output le

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

Mi concentrero su un solo tipo di filtro: il fitro passa-

basso. Un reale filtro passa-basso e qualcosa che rice-

ve in input un segnale e emette in output le componen-

Figura 1: Risposta di frequenza di un reale e di un ideale

filtro passa-basso

ti di frequenza basse. Ad essere piu precisi, “attenua”

queste frequenze piu alte di una frequenza impostata

(frequenza di taglio). Come si vede nella Figura 1, il

filtro approssima il comportamento teorico.

In questo articolo propongo un metodo in tre passi per

ottenere un ideale filtro passa-basso per segnala audio.

Gimp e lo strumento principale di questo metodo. Na-

turalmente, sto un po’ bluffando: devo utilizzare un

programma che trasforma un file audio in una immagi-

ne idonea. Poi, posso applicare un “filtro passa-basso”

a questa immagine e ottenere da questa l’audio filtra-

Computer Programming n. 181 [None 2009] 49

Page 50: Computer Programming n. 181

PROGRAMMING

to. Si noti che ho scritto “filtro passa-basso” tra apici:

non utilizzero Gimp per applicare un filtro passa-basso

grafico (ossia, un operatore blur). Ma siate pazienti:

tra poche righe svelero il “trucco”.

Pre e post-elaborazione audio con Arse

Prima di passare a Gimp, l’audio in in-

put deve essere processato. Ho scelto Arse

(http://arse.sourceforge.net/) come tool di pre-

elaborazione. Arse, acronimo di “Analysis and

Reconstruction Sound Engine”, e un tool a riga di

comando suddiviso in due parti principali: uno spettro-

grafo e un sintetizzatore a spettrogramma. Utilizzero

entrambi i tool per pre-processare e post-processare

un file audio. Nel passaggio di pre-elaborazione

fornisco in input un file audio a Arse, che restituira

in output uno spettrogramma (ossia un’immagine,

buona da fornire in input a Gimp). Nel passaggio di

post-elaborazione, fornisco ad Arse lo spettrogramma

filtrato, per ottenere in output un file audio.

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

Sfortunatamente, la generazione

dello spettrogramma di un segnale

e la successiva sintesi con Arse

non porteranno al segnale

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

Sfortunatamente, la generazione dello spettrogramma

di un segnale e la successiva sintesi con Arse non por-

teranno al segnale originale. Cio significa che il me-

todo che propongo e in teoria perfetto, ma non si puo

utilizzarlo effettivamente senza accettare qualche tra-

sformazione audio (ad esempio, un suono di basso che

viene riprodotto come un suono di piano, o una vo-

ce umana riprodotta come voce sintetica). Comunqne,

procediamo: un utilizzo intelligente di Arse vi dara ri-

sultati abbastanza buoni. Non so se esista o meno un

tool piu efficiente e affidabile di Arse: se cosı fosse,

utilizzatelo e verificate i risultati; e fatemelo sapere!

L’immagine che Arse genera ha le seguenti caratteri-

stiche:

Figura 2: Una schermata che mostra come utilizzare Arse per

eseguire l’analisi audio e la sintesi dello spettrogramma

• e a toni di grigio (i pixel neri rappresentano il

silenzio);

• le righe rappresentano l’analisi di una banda di

frequenze;

• ciascuna colonna rappresenta 1 secondo del

segnale.

Nella Figura 2 si vedere the user interaction with Arse,

mentre nella Figura 3 e mostrato un segnale, l relativo

spettrogramma e i grafici di sintesi.

Arse e un progetto molto giovane, la versione corren-

te e la 0.1. Ha alcune maggiori limitazioni. L’au-

tore le descrive sul sito Web del progetto e nel fi-

le README allegato al programma, che fornisce

ulteriori informazioni sull’utilizzo e sulle specifiche.

Il filtro passa-basso proposto

Una volta ottenuto lo spettrogramma, apritelo con

Gimp. Ricordate che la riga 0 dello spettrogramma

contiene le informazioni sulla frequenza piu alta, e che

la riga n contiene quelle della frequenza piu bassa.

Graficamente, il filtraggio passa-basso di un a “inter-

vallo di frequenze” consiste nel colorare di nero le ri-

ghe di pixel tra 0 e x, dove x e la riga dove e situata la

50 Computer Programming n. 181 [None 2009]

Page 51: Computer Programming n. 181

Figura 3: Analisi e sintesi del file d’esempio drama.wav, un

file che fa parte della suite OpenOffice. Da destra a sinistra:

segnale originale, spettrogramma e segnale ricostruito

frequenza di taglio. Per farlo, basta selezionare l’op-

portuna sezione rettangolare dell’immagine, e riempir-

la di nero. E tutto. Cosı facendo, avrete soppresso le

frequenze piu alte della frequenza di taglio, senza inci-

dere sulle altre frequenze: proprio cio che farebbe un

filtro ideale.

Conclusioni

In questo articolo ho proposto un metodo (una trasfor-

mazione) per ottenere un filtro ideale. Questa trasfor-

mazione vi permette di applicare un filtro passa-basso

audio attraverso la relativa immagine dello spettro-

gramma. Sintetizzando l’immagine “filtrata” vi verra

fornito il corrispondente audio filtrato. Al momento il

solo motivo per cui la trasformazione non “funziona” e

per via del tool di post-elaborazione. Una volta che Ar-

se migliorera, otterrete un opportuno filtro passa-basso

ideale.

Page 52: Computer Programming n. 181
Page 53: Computer Programming n. 181

RUBRICHEWindows Thread e Posix Thread a confronto

Thread contro Thread

Danilo Treffiletti

Il titolo e decisamente da cineteca a rievocare un famoso

film del 1979. A differenza del film, qui non parliamo di

nessuna causa legale, di nessun abbandono e non ci sono

affidamenti di cui parlare. Parliamo di due modi diversi di

realizzare lo stesso concetto: il Thread.

Il Thread e una parte atomica di esecuzione di una elaborazio-

ne. Un processo, che rappresenta l’istanza in esecuzione di un

programma e che comprende oltre al codice del programma stes-

so anche i dati che sta elaborando, puo essere composto da piu

Thread che possono eseguire in modo autonomo e concorrente

condividendo gli stessi dati e lavorando per ottenere lo scopo co-

mune dell’intero processo. I moderni sistemi operativi sono or-

mai multi-task da parecchio tempo: questo significa che e pos-

sibile eseguire processi diversi in parallelo (poi, in realta questo

parallelismo puo essere reale o virtuale a seconda dell’architettu-

ra hardware della macchina che esegue). Molti sistemi operativi,

pero, sono anche multi-threading: permettono ad un processo di

dividersi in tante sottoparti autonome che lavorano in parallelo

per raggiungere il risultato.

Attualmente sono presenti due filosofie diverse di concepire i Th-

read: la prima e quella di Microsoft con i Windows Thread, la

seconda e quella nata dalla comunita *NIX con i POSIX Thread

detti anche PThread.

Sul blog e sul forum di Intel sono presenti due articoli in cui si

parla a favore di uno o dell’altro tipo di Thread.

I thread di Windows

L’articolo sul blog si esprime a favore dei Thread di Windows,

affermando che questi sono piu comodi da usare in quanto e pre-

sente un solo tipo di dato per Thread, Mutex e segnali e dunque

si puo usare una sola funzione per creare un blocco su un thread

che deve terminare, un mutex che e bloccato o un evento che deve

essere segnalato. Inoltre i segnali sono persistenti e permettono

dunque di essere rilevati anche con controlli effettuati dopo che

l’evento sia stato segnalato. Infine e presente la funzione Wait-

ForMultipleObjects che permette di bloccare un Thread in attesa

che terminino una serie di Thread, vengano sbloccati una serie di

Mutex e arrivi un segnale per una serie di eventi, il tutto invocan-

do una sola funzione. Tutto questo, secondo l’autore dell’articolo,

porta ad una maggior eleganza di programmazione.

I thread POSIX

L’articolo presente sul forum, invece, considera soprattutto que-

sti punti uno svantaggio dell’implementazione dei Win Thread, a

favore dunque dell’uso dei PThread. L’uso di tipi di dati diversi

per le tre entita migliora la gestione e rende piu facile la lettura

di codice altrui. Inoltre e piu facile verificare il codice in quanto

sono necessarie funzioni diverse per attendere la terminazione di

un Thread, lo sblocco di un Mutex o la segnalazione di un evento,

evitando dunque errori o confusione. Infine, i segnali persistenti

possono essere un peso per il programmatore che deve ricordarsi

di resettare lo stato del segnale quando sa che potrebbe servire

per un blocco successivo, mentre i segnali POSIX vengono cat-

turati dai Thread in ascolto oppure scartati, evitando di sbloccare

Thread che invece dovrebbero bloccarsi in attesa della prossima

segnalazione.

Un confronto

Personalmente ho usato entrambi i tipi di Thread e devo dire che

mi trovo a condividere pienamente le argomentazioni a favore del-

la versione POSIX. Il dover usare tre tipi di dato diverso non causa

nessun problema in quanto i tre oggetti sono concettualmente di-

versi e dunque devono avere significato diverso anche all’interno

del codice, avere funzioni diverse e non avere una funzione che

permette di attendere un insieme misto di Thread, Mutex e se-

gnali non appesantisce la programmazione ma, invece, rende piu

facile e veloce il debug e la lettura di codice altrui. Infine l’imple-

mentazione POSIX permette la portabilita del codice in quanto i

PThread sono nati per gli ambienti *NIX e Mac OS, ma e stato

creato un port per ambiente Windows che consiste in una DLL da

linkare nel proprio progetto.

Riferimenti

1. Why Windows Threads Are Better Than

POSIX Threads di Clay Breshears (Intel)

http://softwareblogs.intel.com/2006/10/19/why-windows-

threads-are-better-than-posix-threads/

2. Why Pthreads are better than Win32

threads di Clay Breshears (Intel)

http://softwarecommunity.intel.com/ISN/Community/en-

US/forums/post/840096.aspx

Computer Programming n. 181 [None 2009]

Page 54: Computer Programming n. 181

RUBRICHELe nuove riviste Infomedia

Pensare – Progettare –Programmare

CONTRIBUIRE alle nuove riviste e possibile in molti

modi. Proprio mentre scriviamo queste note, sono

molti i processi tecnologici, gestionali e editoriali che

stiamo affrontando:

• Abbiamo riorganizzato il sistema aziendale a partire da

una nuova impronta gestionale. La ’Nuova Infomedia’ si

vuole configurare come una Impresa Sociale di Comunita,

partecipata da tutti coloro che hanno interesse nelle sue

attivita.

• Stiamo raccogliendo tutte le linee guida che hanno permes-

so negli anni la pubblicazione di libri e riviste per condivi-

dere queste competenze con tutti coloro che vorranno esse-

re coinvolti in questa impresa. Questo e un passaggio molto

importante perche rendera visibile e trasparente il processo

editoriale e permettera il convolgimento di tutti coloro che

vorranno contribuire anche solo in modo limitato e secondo

la propria disponibilita. Il nuovo processo editoriale per-

mette a ciascuno, anche con minime competenze, di segui-

re l’intero processo produttivo ed essere quindi partecipante

attivo nella comunita.

• Abbiamo costruito un sistema (open source) che elimina i

fattori di intermediazione classici delle strutture redaziona-

li, e basato su strumenti classici dello sviluppo software e,

crediamo, innovativo e cool.

Contribuire e importante per far sentire la propria voce, per farsi

conoscere e anche un po’ per ridistribuire un po’ di quello che

dalla comunita dei programmatori ciascuno di noi prende ogni

giorno.

I suggerimenti che in questi mesi abbiamo avuto sono stati de-

terminanti per determinare l’architettura organizzativa adeguata.

Dobbiamo adesso essere in grado di seguire con la necessaria

costanza una fase costruttiva ed operativa.

E fondamentale proporre nuovi articoli basati sulle proprie espe-

rienze, sulle tecniche piu efficaci, sui trucchi che permettono di ri-

solvere problemi particolarmente oscuri, indicare percorsi e sem-

plicemente raccontare le proprie esperienze nella realizzazione di

programmi interessanti e significativi. I nostri lettori sono cer-

tamente in grado di farlo, se solo il 5% di questi scrivesse un

articolo o ci raccontasse le proprie esperienze di programmazio-

ne avremmo abbastanza materiale per riempire tutte le riviste per

due anni.

Infomedia e la casa editrice dei programmatori e delle software

house italiane. Di quelli che ancora credono e combattono per

mostrare che l’informatica non e fatta solo dai grandi e potenti

nomi, dalle immense societa di intermediazione che sono spesso

solo gusci vuoti che per motivi di dimensione o di coinvolgimen-

to possono accedere alle grandi commesse, e che spesso non fan-

no altro che subappaltare alle societa piccole e specializzate o ai

singoli professionisti.

Le priorita

Stiamo maturando un’importante esperienza nella costruzione di

un modello veramente innovativo di open publishing.

L’area principale in cui cerchiamo la collaborazione dei nostri

lettori, degli autori che in questi anni ci hanno aiutato e quella

dei contenuti. Adesso che il processo di editing, composizione

e impaginazione e stato riorganizzato, arrivare ad avere un flusso

costante di articoli di qualita e il nostro principale obiettivo.

Arrivare ad ottenere un flusso costante e volontario di articoli e

quindi oggi la priorita piu stringente. E un obiettivo allo stesso

tempo semplice, a verificare i numeri necessari e i collegamen-

ti che gia abbiamo, ma reso complesso dalla volonta di assumere

quel ruolo di riferimento che una iniziativa come questa deve ave-

re. La possibilita che un nucleo limitato di autori bravi possano

tenere in piedi questa iniziativa non e cosı remota, al punto che a

ben vedere cosı hanno funzionato le riviste in questi ultimi anni,

e cosı spesso funzionano altrove. Ma se l’obiettivo e la ’pluralita’

dell’espressione, la rappresentazione di quanto veramente avvie-

ne nella piccola ma vitale comunita italiana dei programmatori,

ed eventualmente la rappresentazione delle migliori espressioni

estere nel campo, la storia cambia moltissimo.

Il lavoro da fare si moltiplica, nella ricerca di contatti e di ma-

teriali che, per esempio gia abbozzati in rete su blog o forum,

potrebbero diventare ottimi ed interessanti articoli degni di que-

sto nome. Il lavoro si moltiplica perche un ’bravo informatico’, di

quelli che oltre a conoscere la professione la sa comunicare in uno

scritto adeguato fa spesso molta piu fatica a seguire, indirizzare e

correggere il lavoro altrui che non rifarlo daccapo da se. Eppure

questo e in se stesso un impegno che consideriamo utile.

Il team che lavora dietro questo progetto e variegato e, attual-

mente, deve sopperire alla mancanza di tempo, innanzitutto, e di

competenze specifiche su alcuni campi.

In questo momento, come sa chi gia ci segue sul Web, tutto l’e-

cosistema che e stato creato e (un po’ troppo) variegato, ma que-

sto e stato necessario per contemperare differenti esigenze e modi

di lavorare da parte di chi ha offerto la propria attivita in modo

volontario pur di far andare avanti questa storia.

54 Computer Programming n. 181 [None 2009]

Page 55: Computer Programming n. 181

RUBRICHE

I servizi che ci sono (e che mancano)

Come sempre accade nelle comunita di sviluppatori, i servizi che

sono attivati prima, meglio presidiati, sono quelli che servono per

le realizzazioni pratiche.

Il sito http://the.programmers.net rappresenta attualmente solo

una piccola vetrina delle attivita che si stanno realizzando e al-

cune informazioni circa l’iscrizione, le attivita, la rete sociale e,

ovviamente, le riviste. Siamo alla ricerca di un webmaster.

Gli strumenti online che sono stati per ora attivati (trac, SVN,

wiki) sono ad uso esclusivo della redazione e sono gestiti in

autonomia con la minima formalita.

Trac: http://trac.xed.it

Wiki: http://wiki.infomedia.it

Questi servizi avrebbero ciascuno bisogno di un amministratore

dedicato ed esperto. Il lavoro da fare e poco, infinitesimale: ma e

l’insieme di questi infinitesimi che riempie tutti gli interstizi del

nostro tempo libero fino a tarda notte, quindi AIUTO!. E possibile

proporre la propria candidatura usando i moduli che sono online

sul sito the.programmers.net nella sezione Riviste/Moduli.

Il nuovo sito (che c’e)

Il sistema online che ha accompagnato la pubblicazione del-

le riviste sul web della vecchia societa, ancora disponibile su

www.gruppoinfomedia.it e stato sostituito dalla semplice ap-

plicazione di una nuova piattaforma di publishing basata su

Drupal e iScribd.

Sito: http://www.infomedia.it

Il Forum (che non c’e)

Sarebbe invece interessante, per cio che riguarda la costruzione

dei nuovi servizi e dei nuovi strumenti, l’apertura di un forum

online. Le nostre attuali forze ce lo impediscono, ma se qualcuno

dei lettori volesse candidarsi all’amministrazione e alla gestione,

saremo ben felici di aprire anche questo importante servizio.

I coordinatori dei forum dovranno provvedere all’installazione,

all’amministrazione e all’upgrade dei sistemi, nonche ad un mini-

mo di moderazione dei contenuti inappropriati. Per le candidature

e possibile usare i moduli online sul sito.

I team (che ci sono)

Sono tre i team che stanno lavorando:

• La crew editoriale: Si occupa dell’evoluzione dello spa-

zio editoriale ed in particolare della redazione delle riviste

(Michele Monti [email protected]).

• La crew software: Si occupa dell’evoluzione del soft-

ware di gestione dell’associazione per le realizzazioni

editoriali e per la gestione associativa (Adriano Peluso

[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 assegnato

[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. Siamo

pochi e i task della produzione hanno certamente la priorita.

Non trascuriamo nessuna email, semplicemente spesso non c’e

una risposta alle vostre domande, o ci sara nel momento in cui

sara opportuno.

Attualmente pero nessuno gestisce il flusso delle richieste (piu

che legittime) degli abbonati. Ci impedirebbe di concentrarci sul-

le gia complesse attivita di ’ricostruzione’. Tutte le mail finora

utilizzate dalle redazioni Infomedia (insieme ad una spaventosa

quantita di spam, messaggi commerciali e promozionali, che nep-

pure gli antispam piu efficaci abbattono piu di tanto) sono ruotate

alla vecchia societa, i quali ci inoltrano solo i messaggi che riten-

gono effettivamente interessanti. Abbiamo intenzione di arrivare

ad affrontare anche questi problemi, ma fare tutto contempora-

neamente non era pensabile. Rimanete sintonizzai, frequentate i

siti web ed in particolare:

Blog: http://blog.infomedia.it

Il sistema d’impaginazione

Il nuovo sistema d’impaginazione e disponibile liberamente su

Internet. E possibile scaricarlo e provarlo da:

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

Ovviamente non e ne immediato ne user friendly, per ora, ma

avendo un po’ di conoscenze degli strumenti di sviluppo open

source (tra cui SVN, python, bash, make, emacs) e un po’ di di-

mestichezza con il TEX si riesce ad averne ragione. Ovviamente

ogni contribuzione e ben accetta.

Conclusioni

Infomedia realizza le rivista dei programmatori italiani di talento,

che sanno trovare soluzioni geniali che non sempre sono adegua-

tamente conosciute, e che spesso sono obbligati a trovare la pro-

pria strada al di fuori del panorama italiano, ma non per questo

saranno da noi dimenticati. E importante per noi mantenere unita

la nostra comunita indipendentemente dalle distanze geografiche.

Infomedia e tutto questo, ma puo esserlo solo se tu ci metterai del

tuo.

E proprio il caso di dire che in questo momento non dovreste

chiedervi cosa Infomedia puo fare per voi, ma cosa potete fare

voi per Infomedia.

Computer Programming n. 181 [None 2009] 55

Page 56: Computer Programming n. 181

RUBRICHE

Hanno collaborato a questonumero...

Lorenzo Dal Col

nato a Vittorio Veneto nel 1985 laurea a pieni voti in Ingegne-

ria Informatica all’Universita di Trieste, studia per la laurea

specialistica. Da 5 anni si occupa di sviluppo di applica-

zioni Web server con PHP, Java, .NET, MySQL, Postgre-

SQL e lato client con Javascript, AJAX.Ha sviluppato un

robot mobile a comando vocale Linux real-time e Micro-

soft Windows Server. Si interessa di grafica digitale e web

design.

Mail [email protected]

Sito www.lordalcol.com

Danilo Treffiletti (Urban)

nato nel 1982. Da sempre interessato al mondo dell’informatica

e delle nuove tecnologie. Ha frequentato l’I.T.I. e successi-

vamente la facolta di Ingegneria Informatica dell’Universita

di Catania, in cui si laureato nel 2008. stato presente sul

web fin dal 1998 con diversi siti di carattere amatoriale e

divulgativo. Nel ottobre del 2006 collabora alla fondazione

del blog di divulgazione informatica StormedBrains.

Blog http://urbands.net/stormedbrains

Gary Richmond

e un aspirante esperto della rete con alle spalle una laurea e una

specializzazione in Inglese del diciassettesimo secolo, ven-

ticinque anni di attivita in un ente pubblico e di recente si e

semi-pensionato per godersi i suoi illeciti guadagni.

Scott Carpenter

ha frequentato il movimento free software sin dal 1998 e nel

2006 ha iniziato a impegnarsi in modo piu attivo (Mo-

ving to freedom). Lavora come sviluppatore/analista soft-

ware dal 1997, e attualmente si occupa di integrazione di

applicazioni enterprise.

Sito www.movingtofreedom.org

Gianluca Pignalberi

dopo la laurea in Scienze dell’Informazione si e occupato di va-

rie cose, tra cui la programmazione della classe TEX per

comporre Free Software Magazine, da cui deriva quella di

Infomedia, e dell’impaginazione della stessa. E attualmen-

te il direttore di ArsTEXnica, rivista italiana di TEX, LATEX e

tipografia digitale. Usa software libero per tutto quello che

puo, e cerca di soddisfare la sua passione per la scrittura

contribuendo a riviste di settore.

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

Gianluigi Spagnuolo

ingegnere informatico si occupa di sicurezza e programmazio-

ne (Ruby e C#). Si interessa di sistemi operativi UNIX, di

compilatori e PLT in generale e partecipa allo sviluppo di

numerosi progetti open source.

Mail [email protected]

Sito http://krsh.info

Emmanuele Somma

programmatore, ingegnere informatico e scrittore, e da anni uno

dei principali animatori della scena del software libero in

Italia. Sia ricorda trafficasse con le prime bbs amatoriali gia

nel ’86, si dice abbia venduto il primo programma GPL in

Italia gia nel ’94, ha fondato e diretto Linux Magazine nel

’99. Oggi lavora per un autorita finanziaria in cui suppor-

ta e sviluppa applicazioni scientifico-econometriche con il

sotware libero, ma non solo.

Mail [email protected]

Sito http://www.exedre.org

Blog http://exedre.xed.it

ed inoltre. . .

Un ringraziamento particolare va anche a: Adriano Peluso,

Andrea De Carolis, Daniela Della Porta, Dino Meoni, Dona-

to Marcello Sabato, Francesco Pallanti, Gianluigi Coccia, Lu-

ciano Talarico, Maria Letizia Mari, Natale Fino, Noemi Somma,

Roberto Galoppini.

56 Computer Programming n. 181 [None 2009]

Page 57: Computer Programming n. 181
Page 58: Computer Programming n. 181

La conferenza porta sul palco i più importanti esperti nazionali e

internazionali su programmazione agile, open source, web2.0 e tutte le

discipline che contribuiscono alla costruzione di un prodotto stabile,

usabile e vendibile.

www.bettersoftware.it

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

FIRENZE, 6 E 7 MAGGIO 2009

Sconto del 20% registrandoti online

con il codice promozionale

BM3V2D9G