giovedì 26 luglio 2012

Google calculator - la calcolatrice di Google

Recentemente Google ha implementato un'altra delle sue innumerevoli funzioni gratuite; sta volta non è nulla di sensazionale, ma devo dire che merita di essere vista. Si tratta della calcolatrice. Anche prima chiedendo alla grande G di risolverci un qualsiasi calcolo, questa ci dava una mano. Ora però ci presenta una vera e propria calcolatrice in HTML5 che possiamo utilizzare ovunque ci troviamo (ovunque troviamo Google a dire il vero). Putroppo non la troviamo in Google Italia e nemmeno in Google.com in italiano, ma solo in Google.com in inglese per cui per provarla non dovete fare altro che cliccare su questo link http://www.google.com/webhp?hl=en e digitare la vostra complicatissima operazione aritmetica.

mercoledì 20 giugno 2012

Orbis: il webgis dell'Antica Roma

Quanto poteva metterci Cesare a Raggiungere la Gallia Cisalpina? O la sua amata Cleopatra in Egitto?
Lo possiamo sapere con precisione da videogioco con questo webgis ideato dall'università di Standford chiamato "Orbis". Nella mappa troviamo le principali città dell'impero. Il progetto nasce dallo storico, Walter Scheidel, che ha individuato ricostruito tutte le rotte marittime e terrestri dell'impero, e
Elia Meeks, sviluppatore tecnico di GIS. L'interfaccia è quella di Openlayers, ma arricchita di strumenti e opzioni davvero interessanti e il risultato è ottimo. Possiamo cercare la via da Roma a Costantinopoli scegliendo tra le varie opzioni di viaggio, a piedi, con l'esercito, in nave ecc.
Ci viene rstituito il costo in denarii  differenziato per il peso di merci che vogliamo trasportare, oltre che la distanza, il grafico altimetrico e al rotta su mappa. Chiaramente anche i tempi che sono epici, anzi, realistici.
Non resta che esplorarlo a questo indirizzo: http://orbis.stanford.edu/

martedì 5 giugno 2012

Theme Hospital su Ubuntu

Facciamo un tuffo nel passato e grazie a CorsixTH.
CorsixTH è un clone del famosissimo e (forse) immortale Theme Hospital. Possiamo installarlo e giocarci senza problemi su Ubuntu in maniera davvero semplice. Ci basta scaricare il clone dalla CDN di Google:
http://code.google.com/p/corsix-th/
e installarlo seguendo le banali istruzioni.
Chiaramente ci serve il gioco originale che dobbiamo copiare in una cartella del nostro hard disk e segnalare a CorsiTH al momento dell'installazione.
Davvero semplice e funzionante.


venerdì 11 maggio 2012

Adipoli, effetti sulle immagini con javascript

Nell'infinita nuvola di plugin per jQuery che la rete ci offre, a volte capita di trovarne di sorprendenti.
Adipoli sorprende per semplicità ed efficacia. Si tratta di un plugin per dare alle immagini effetti animati al passaggio del mouse, dunque con l'evento 'hover'.
L'attuale versione del plugin dispone di 15 effetti hover e 5 start, ovvero che si avviano al caricamento dell'immagine. Sono presenti anche altre opzioni per la personalizzazione.
La documentazione all'interno del sito è ben curata e semplice.

sabato 28 aprile 2012

Una bussola con javascript

Partendo dalla libreria Highstock o Highcharts (http://www.highcharts.com/) è possibile realizzare una semplice ma funzionale bussola in Javascript che indichi i punti cardinali e una direzione.
Come detto sopra occorre la libreria Highstock, la cui licenza è a pagamento ma è possibile scaricarla gratuitamente dal sito per provarla. Ritengo questa forma di vendita davvero intelligente in quanto permette agli sviluppatori di provare il prodotto prima di comprarlo.
Per far funzionare la nostra bussola sarà necessario includere la libreria nel nostro sito. Ci basterà aggiungerla nell'header con questo codice

<script src="http://www.agriculturalsupport.it/wp-content/themes/provisionpress/js/highstock.js" type="text/javascript">

</script>


Passiamo quindi alla creazione di un DIV con un ID specifico all'interno della pagina.



<div id="chart"></div>



A questo punto non dobbiamo fare altro che creare un grafico di tipo "gauge". Ovvero i grafici che indicano un valore con la lancetta. In rete si trovano esempi di come creare gauge a 180° ovvero π, ma noi dovremmo crearlo a 360° o meglio a .

function drawDial(options) {

var mis= 90;

var renderTo = options.renderTo,

    value = options.value,

    centerX = options.centerX,

    centerY = options.centerY,

    min = options.min,

    max = options.max,

    minAngle = options.minAngle,

    maxAngle = options.maxAngle,

    tickInterval = options.tickInterval,

    ranges = options.ranges;

    

var renderer = new Highcharts.Renderer(

    document.getElementById(renderTo),

    240,

    240

);





// internals

var angle,

    pivot;



function valueToAngle(value) {

    return (maxAngle - minAngle) / (max - min) * value-Math.PI/2 + minAngle;

}



function setValue(value) {

    // the pivot

    angle = valueToAngle(value);

    

    var path = [

         'M',

         centerX, centerY,

         'L',

         centerX + mis * Math.cos(angle), centerY + mis * Math.sin(angle)

     ];

    

    if (!pivot) {

        pivot = renderer.path(path)

        .attr({

            stroke: 'black',

            'stroke-width': 3

        })

        .add();

    } else {

        pivot.attr({

            d: path

        });

    }

}



// background area

renderer.arc(centerX, centerY, mis+5, 0, minAngle, maxAngle)

    .attr({

        fill: {

            linearGradient: [0, 0, 0, 200],

            stops: [

                [0, '#FFF'],

                [1, '#DDD']

            ]

        },

        stroke: 'silver',

        'stroke-width': 1

    })

    .add();





// ranges

$.each(ranges, function(i, rangesOptions) {

    renderer.arc(

        centerX,

        centerY,

        mis,

        mis-5,

        valueToAngle(rangesOptions.from),

        valueToAngle(rangesOptions.to)

    )

    .attr({

        fill: rangesOptions.color

    })

    .add();

});



// ticks

var dir;

for (var i = min; i <= max; i += tickInterval) {

dir=''

        if (i==0){dir='N'}

    if (i==90){dir='E'}

    if (i==180){dir='S'}

    if (i==270){dir='W'}

            if (i==360){dir='N'}

    angle = valueToAngle(i);

    

    // draw the tick marker

    renderer.path([

            'M',

            centerX + 90 * Math.cos(angle), centerY + 90 * Math.sin(angle),

            'L',

            centerX + 70 * Math.cos(angle), centerY + 70 * Math.sin(angle)

        ])

        .attr({

            stroke: 'silver',

            'stroke-width': 2

        })

        .add();

    

    // draw the text

    renderer.text(

            dir,

            centerX + 90 * Math.cos(angle),

            centerY + 90 * Math.sin(angle)

        )

        .attr({

            align: 'center'

        })

        .add();

    

}



// the initial value

setValue(value);



// center disc

renderer.circle(centerX, centerY, 20)

    .attr({

        fill: '#4572A7',

        stroke: 'black',

        'stroke-width': 1

    })

    .add();



return {

    setValue: setValue

};



}

    

    

// Build the dial

var dial = drawDial({

    renderTo: 'statsframe',

    value: 250, //<-- questo valore espresso in gradi indica la direzione

    centerX: 120,

    centerY: 120,

    min: 0,

    max: 360,

    minAngle: 0,

    maxAngle: 2*Math.PI,

    tickInterval: 45,

    ranges: [{

        from: 0,

        to: 45,

        color: '#D3fd53'

    }, {

        from: 45,

        to: 90,

        color: 'transparent'

    }, {

        from: 90,

        to: 135,

        color: '#D3fd53'

    }, {

        from: 135,

        to: 180,

        color: 'transparent'

    }, {

        from: 180,

        to: 225,

        color: '#D3fd53'

    }, {

        from: 225,

        to: 270,

        color: 'transparent'

    }, {

        from: 270,

        to: 315,

        color: '#D3fd53'

    }, {

        from: 315,

        to: 360,

        color: 'transparent'

    }]

});


Nel codice soprastante la variabile "mis" è utilizzata per stabilire la grandezza della nostra bussola. Assegnandole valori più grandi si ingrandirà anche la bussola. Dobbiamo però prestare attenzione anche ai parametri della variabile "render" che vanno a stabilire larghezza e lunghezza del div su cui la bussola viene rappresentata.
Per direzionare l'ago della bussola non dobbiamo fare altro che cambiare il valore del parametro "value" nella variabile dial, che è quella che costruisce il grafico. Il valore è espresso in gradi, perciò se vogliamo indicare il Nord il valore da assegnare sarà 0 (o 360), per l'Est sarà 90, per il Sud 180, per l'Ovest 270. Ovviamente possiamo assegnare un qualsiasi valore intermedio.

giovedì 12 aprile 2012

Google Current, ogni blog un'app

È sbarcato in Italia Google Current. Ottimo strumento pensato dalla casa di Mountain View. Cosa fa?
Potremmo definirlo un aggregatore di notizie, ma sarebbe un doppione di Google News se fosse così semplice; con questo strumento le notizie pubblicate non sono scelte da Google, ma dai lettori e dai publishers. Per diventare publisher e iniziare a pubblicare le proprie notizie è sufficiente avere un feed RSS che le raccolga e iscriversi a Current andando su https://www.google.com/producer/home (attenzione è necessario usare Google Chrome).
Il pannello di controllo ci consente di creare la nostra App personalizzata (nulla di straordinario, ma ci sono date delle buone possibilità preimpostate) in cui raccogliere gli articoli del nostro blog. Possiamo creare sezioni personalizzate della nostra applicazione corrispondenti a diversi feed o al canale Youtube. Il nostro lettore, dopo aver scaricato Google Current sul proprio tablet o smartphone (Android o iOS) potrà decidere di seguire il blog da noi pubblicato. Tra le opportunità di Google Current la possibilità di decidere la lingua predefinita, la traduzione automatica, i Paesi da escludere o includere nella pubblicazione.
Davvero un ottimo strumento per la diffusione dei nostri contenuti. Sicuramente Current si colloca nella via scelta da Google di premiare i produttori di contenuti interessanti per gli utenti della rete.

sabato 7 aprile 2012

La Regenbogenfabrik di Kreuzberg, Berlino

Trovandomi a Berlino non ho potuto non acquistare una bicicletta, ovviamente usata, ovviamente al Mauerpark.
Ma come ognuno di noi sa, ogni bici usata necessita di revisioni, stringimenti di bulloni, oliate e una serie di altre operazioni che possono rendere il nostro economico acquisto qualcosa di cui andare fieri, aggiungendo con il nostro lavoro quel valore che abbiamo risparmiato nell'acquisto.
Per fare questo però necessitiamo di parecchi strumenti, che se andassimo ad acquistare rischierebbero di farci perdere quel poco che abbiamo risparmiato con la scelta dell'usato. Per questo ho scoperto che qui a Berlino esiste la Regenbogenfabrik che oltre ad essere ostello, centro culturale, cinema, bar ecc. è anche un'officina per la riparazione delle biciclette. Con 3€ l'ora posso riparare la mia bici utilizzando i loro ottimi strumenti. L'ambiente è amichevole e i meccanici sono sempre disposti a dare una mano; è piuttosto frequentata per cui occorre scegliere le ore giuste.
Il loro sito nel quale reperire le informazioni sulle loro attività e sugli orari: http://www.regenbogenfabrik.de.