Gli strumenti forniti da Google sono sempre più utilizzati per integrare i portali web con servizi sempre più interessanti.
Tra i più utilizzati e apprezzati dagli utenti, vi sono sicuramente le google map, ovvero le mappe che indicano l’esatta posizione di un indirizzo o di una locazione geografica.
Oramai su quasi tutte le pagine “Contatti” sparse per il mondo è presente tale servizio: l’utilizzo  è molto semplice, e la documentazione ricca, anche se per specifiche personalizzazioni bisogna impegnarsi un poco ( giustamente ;) ).

Ad esempio, potremmo avere la necessità di inserire nelle nostre pagine una mappa di google che, a
seconda dell’indirizzo passato (e quindi dinamicamente), visualizzi la posizione desiderata con un “marker” e le informazioni relative.
Lo script per implementare tale meccanismo è il seguente:

<script type=“text/javascript”>
var map = null;
var geocoder = null;

function load() {
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById(“map”));
var latitude = 45.05872;
var longitude = 7.723114;
var zoom = 13;
var location = new GLatLng(latitude, longitude);
// var marker = new GMarker(location);
// map.addOverlay(marker);
map.setCenter(location, zoom);
geocoder = new GClientGeocoder();
showAddress(address);
}
}

function showAddress(address) {
if (geocoder) {
geocoder.getLatLng(
address,
function(point) {
if (!point) {
$(“#nomap”).text(‘indirizzo non disponibile’);
} else {
map.setCenter(point, 13);
var marker = new GMarker(point);
map.addOverlay(marker);
// marker.openInfoWindowHtml(address);
}
}
);
}
}

window.onload = load;
window.onunload = GUnload;
</script>

<div id=“nomap” style=“color: red;”></div>
<div id=“map” style=“width: 300px; height: 200px;”></div>

Il codice HTML delle ultime due righe crea due div: il primo serve per visualizzare un messaggio di
warining nel caso in cui l’indirizzo passato non sia stato trovato dal motore di ricerca, il secondo serve per la visualizzazione della mappa.

Lo script è composto da due funzioni: load() e showAddress(address). La funzione load viene richiamata al caricamento della pagina, ed è ovviamente il cuore di questo script: si occupa di settare tutti i paramentri necessari, tra cui il settaggio dell’id del div che conterrà la mappa (map).
Eseguite tutte le assegnazioni del caso, viene infine richiamata la seconda funzione importante,
showAddress(address).
Questa ha un parametro, address, che potremmo ad esempio generare e passare con computazioni proveniente da pagine php, che è proprio l’indirizzo che verrà visualizzato sulla mappa attraverso l’uso dei marker settati nella prima funzione.
L’indirizzo è un parametro, ed è quindi dinamico: ogni qualvolta la pagina verrà ricaricata, leggerà l’indirizzo attualmente impostato e lo passerà allo script, che si occuperà di visualizzarlo sulla mappa.



Con l’ultima versione di VirtualBox, il prodotto di virtualizzazione ha raggiunto davvero ottimi livelli, anche su piattaforma Linux. Nelle nostre prove, abbiamo riscontrato i soliti problemi con il supporto USB: putroppo ancora non è stata prevista una configurazione totalmente automatica, almeno nelle release di Fedora, e allora….ecco come procedere!

Il problema è ovviamente dato dalla configurazione dei permessi: per prima cosa, dobbiamo aggiungere la nostra utenza al gruppo vboxusers (possiamo controllare che non sia già stato fatto in automatico lanciando il comando groups), con il seguente comando

sudo gpasswd -a $(logname) vboxusers

Ora dobbiamo garantire i permessi di scrittura e lettura su  “usbfs” per gli utenti che appartengono al gruppo “vboxusers”.

Su Fedora 10, “usbfs” è accessibile da /proc/bus/usb che per configurazione di defualt appartiene all’utente root e al gruppo root. Potremmo anche modificare i permessi con il comando chmod, ma ogni qualvolta riavviamo il sistema, dovremmo rifare la medesima procedura. Inoltre non possiamo eseguire a piacimento le operazioni di mount, perchè il sistema comunica constantemente con “usbfs”, e finchè esiste tale comunicazione ( cioè esattamente per tutto il tempo in cui il sistema è running ) il filesystem risulta “busy”. Il “trucco” sta nel “montare” una copia di “usbfs” da qualche parte nel sistema, passando gli effetti delle configurazioni anche su /proc/bus/usb. Per fare questo, ci serve l’id del gruppo “vboxusers”, che troviamo con il seguente comando:

cat /etc/group | grep vboxusers

L’output sarà qualcosa di simile a:

vboxusers:x:501:nomeutente

che specifica appunto che sul proprio sistema l’id del gruppo (gid) “vboxusers” è 501. Ora mpossiamo procedere nella creazione di un altro punto di mount per “usbfs”. Decidiamo di crearlo in /root/usbfs:

sudo mkdir /root/usbfs

Il prossimo passo è la modifica del file /etc/fstab per “montare” una copia di “usbfs” in /root/usbfs. Editiamo quindi il file, ad esempio con vi, e alla fine di questo aggiungiamo le seguenti righe:

none /root/usbfs usbfs rw,devgid=501,devmode=664 0 0

Ovviamente, se nel vostro sistema il gid del gruppo “vboxusers” è differente da 501, dovete sostituirlo con quello appropriato. Per applicare i cambiamenti, lanciamo il comando di “mount”:

sudo mount -a

Dopo questa procedera, finalmente i vostri sistemi virtuali leggerando qualsiasi collegamento USB, esattamente come il vostro sistema operativo. Chiaramente è necessario settare, per ogni macchina virtuale, i controller USB che volete rendere attivi.