Feeds:
Articoli
Commenti

SMS Send & Receive is a web API that provides you with the capability to send and receive SMS messages using a simple REST-like web API.

When you sign up for an API key you will get

  • 1000 SMS messages that you can send for free
  • A service identifier on the SMS Send & Receive API shared short code, allowing you to receive messages sent from mobile phones
  • A shared phone number that can be used to send and receive messages internationally, as well as a shared short code that works in Sweden.

Register for a free API key and start experimenting with SMS enabled web applications now!

Mi limito a riportare quanto annunciato da Ericsson Labs

Tra le novità che ci porterà HTML 5, e che in parte ha già portato, c’è un ricco set di API.

Tra queste, di notevole interesse è la Geolocation API:

The Geolocation API defines a high-level interface to location information associated only with the device hosting the implementation, such as latitude and longitude. The API itself is agnostic of the underlying location information sources. Common sources of location information include Global Positioning System (GPS) and location inferred from network signals such as IP address, RFID, WiFi and Bluetooth MAC addresses, and GSM/CDMA cell IDs, as well as user input. No guarantee is given that the API returns the device’s actual location.

In pratica, grazie alla GeoAPI, viene rilevata la posizione dello User Agent e i relativi dati (lat e lng) vengono manipolati dallo script, per offrire all’utente accesso ai dati e alle features della webapp.

Il primo dubbio che può venire in mente riguarda, giustamente, la privacy dell’utente che accede al servizio. Se io non volessi dare i miei dati?

Risponde il W3C:

User Agents must not send location information to Web sites without the express permission of the user. User Agents must acquire permission through a user interface, unless they have prearranged trust relationships with users…

che significa, più o meno, che l’utente deve avere la ossibilità di negare al browser, in qualunque momento, la possibilità di trasmettere le coordinate al web service.

ALtra domanda. Da dove vengono prese le informazioni sulla località dello User Agent? L’abbiamo letto nella prima citazione riportata. Se non abbiamo un cellulare dotato di GPS, la rilevazione si basa sulla triangolazione tramite Wi-Fi o ripetitori della rete cellulare, oppure ancora attraverso l’indirizzo IP del provider che fornisce l’accesso alla rete.
Ovviamente, a meno che non si abbia un cellulare dotato di GPS, la rilevazione potrà essere solo vagamente approssimativa.

Rientrando nel progetto di sviluppo di HTML 5, sono ancora pochi i browser che supportano la GeoAPI. Tra questi vale la pena di provare la beta 3.5 di Firefox, che al momento sembra quello che offre il maggior supporto ad HTML 5 e alle nuove API.

Allora, dopo aver istallato FF 3.5, andiamo a dare un’occhiata a quello che si dice in casa Mozilla.

Prima di tutto, ci viene spiegato di cosa si tratta:

Websites that use location-aware browsing will ask where you are in order to bring you more relevant information, or to save you time while searching.

Where I am

Poi ci viene spiegato come funziona la rilevazione e la trasmissione dei dati:

If you consent, Firefox gathers information about nearby wireless access points and your computer’s IP address. Then Firefox sends this information to the default geolocation service provider, Google Location Services, to get an estimate of your location. That location estimate is then shared with the requesting website.

If you say that you do not consent, Firefox will not do anything.

Privacy

Quindi Firefox mostrerà un messaggio, in alto nella pagina, che avverte l’utente della trasmissione dei dati e ne chiederà la conferma.

Privacy

Firefox offre anche la possibilità, come previsto dalle raccomandazioni del W3C, di rendere stabili le proprie scelte, attraverso le opzioni che si raggiungono dal menu Strumenti -> Informazioni sulla pagina -> Permessi

Privacy

Detto questo, qual è la prima applicazione che utilizza le GeoAPI di HTML 5 che vale la pena conoscere? Ovviamente, trattandosi di geodati, il battistrada lo fanno Google e Flickr. E proprio Flickr propone il servizio Nearby (annunciato proprio ieri su code.flickr.com).

Accedete al servizio (ovviamente, con FF 3.5), date fiducia a Flickr e autorizzate Firefox a trasmettere i dati. Ed ecco che vi verranno proposte le foto scattate dagli utenti intorno al vostro ISP.

flickr nearby

Questo video mostra come cambiano la grafica e il multimedia in Firefox 3.5beta, grazie al supporto dei tag <canvas>, <video> e <audio> di HTML5:

Se avete già istallato l’ultima beta, potete apprezzare qui lo stesso filmato inserito con il nuovo elemento <video>: http://tinyvid.tv/show/23lrkhc9wdzts

Eccoci al consueto appuntamento con ioProgrammo.

Il mio articolo del mese – il numero di luglio è in edicola in questi giorni – offre una presentazione dei Google Gadgets dal punto di vista dello sviluppatore (ovviamente).

I Google Gadgets si presentano come applicazioni estremamente flessibili, facili da creare e da condividere: con i gadget si aggiungono funzionalità uniche alla propria pagina su iGoogle, su Orkut e su qualunque container li supporti.

E poi … possono essere ospitati dai server di Google e facilmente incorporati in qualsiasi pagina web.

E poi … sono scritti in semplice HTML/JS

E poi … colloquiano in modo estremamente semplice con i Google Spreasheets

Questo mese offro una prima presentazione dei gadget. Il mese prossimo approfondirò il discorso, mostrando come visualizzare i dati di uno spreadsheet all’interno di un gadget. E quindi, appuntamento in edicola ;-)

Sto scrivendo un articolo su Google Wave e ne sto scoprendo funzionalità e potenzialità.

Devo dire di essere alquanto stordito dalle applicazioni praticamente infinite, sia in ambito “ludico” (che parola odiosa) che professionale.

Ho pensato di offrirvi una preview, segnalandovi alcuni screenshots, giusto per farvene un’idea. Qui di seguito c’è la vista della inbox del client:

Ecco, invece, come appare una singola onda:

Per altre immagini e video, potete dare un’occhiata qui.

Cos’è un browser?

Vedendo questo video, mi viene voglia di prendere la videocamera e andare in giro a fare interviste…

Beh, non è la cosa più immediata del mondo…

Flock è uno dei miei browser preferiti, fortemente orientato al web 2.0. Mi sarebbe dispiaciuto rinunciarci una volta passato a Linux, così l’ho scaricato e istallato sul mio Ubuntu 9.04.

flock

Prima nota: Flock non è tra le applicazioni istallabili direttamente dal menu applicazioni.

Per questo è necessario scaricare manualmente il pacchetto dal sito ufficiale.

L’istallazione del pacchetto è molto semplice. Se, come me, non siete esperti di Linux, potete seguire le linee guida di questo tutorial, ma non è strettamente necessario fare tutto da command line (io ho preferito aprire la finestra nautilus e scompattare manualmente l’archivio compresso nella directory /opt). Per le altre operazioni, consiglio comunque di seguire il tutorial.

Seconda nota: ad un certo punto vi rendete conto che, ovviamente, bisogna istallare i vari plugin, tra cui l’indispensabile flash player.

Probabilmente ce l’avrete già istallato come plugin per Firefox. In ogni caso, per istallare il pacchetto ci vuole davvero un attimo. Il guaio è che, una volta istallato, Flock non lo rileva e vi continuerà ad avvertire della necessità di istallare il plugin.

Il problema nasce dal fatto che il plugin è istallato tra i plugin di Firefox e non è, quindi, disponibile per Flock.

Allora bisogna creare un link simbolico (come spiegato qui) all’interno della directory /opt/flock/plugins che punti a tutti i plugin disponibili per Firefox. Ecco il comando:

sudo ln -s /usr/lib/mozilla/plugins/* /opt/flock/plugins

Ora Flock non vi darà più problemi … o quasi. I problemi continuano con i video ad HD di YouTube, ma è un problema che riscontro anche in Firefox.

Qualcuno sa dove mettere le mani?

Bluefish

Se doveste decidere di non usare un editor a pagamento, come Dreamweaver, quali sono le soluzioni che adottereste?

Ho provato per un po’ ad usare Kompozer (il vecchio NVU), ma non l’ho mai gradito.

bluefish

Nei giorni scorsi ho scoperto, un po’ per caso, un ottimo editor testuale per sistemi Linux che lavora benissimo anche con Php: Bluefish. Il motivo per cui mi è piaciuto subito è la disponibilità di un menu che consente, con un click, di inserire al volo del codice, senza star lì a digitarlo:

iterate

La voce “Iterate over Array”, ad esempio, genera il seguente codice:

foreach ($mioarray as $key => $value) {

}

Inoltre, è estremamente semplice inserire le classiche scorciatoie da tastiera. Se volete inserire, ad esempio, questo codice con un rapidissimo CTRL+i, basta posizionare il mouse sulla voce di menu e digitare la combinazione di tasti. Immediatamente la voce di menu cambia così:

iterate

Per eliminare la combinazione di tasti, basta posizionarsi di nuovo col mouse sulla voce di menu e premere backspace (vedi la documentazione).

Insomma, mi piace :-)

In passato ho parlato più volte di come accedere all’API di Flickr via Php. Non avevo, però, ancora provato ad accedere via cURL, e gli script erano abbastanza lunghi.

flickr

Poi mi è venuta la curiosità di provare ad accedere inviando una richiesta REST via libcurl e, con poche righe viene fuori l’output a video.
Insomma, il codice si semplifica moltissimo (ah, se non avete mai usato cURL, è indispensabile leggere i due post precedenti).

E quindi, qui seguiamo lo schema degli ultimi post, con l’avvertenza che sarò sbrigativo sui concetti introduttivi dell’API di Flickr, rinviandovi alla lettura dei post in cui ne ho già parlato.

Ovviamente, prima ricordatevi di chiedere la chiave API (http://www.flickr.com/services/api/keys/apply/).

La URL della richiesta

Il percorso da seguire per accedere via cURL all’API di Flickr parte sempre dall’endpoint REST:

http://api.flickr.com/services/rest/

Alla URL dovremo aggiungere i parametri della richiesta, cioè chiave api, metodo, formato di risposta e argomenti aggiuntivi.
Se utilizziamo il metodo flickr.photos.getInfo, che ci consente di ottenere una serie (corposa) di informazioni su singole fotografie, dovremo specificare tra gli argomenti l’ID della foto:

$api_hey = "MIA_CHIAVE_API";
$format = "rest";
$method = "flickr.photos.getInfo";
$photo_id = "ID_MIA_FOTO";

Il codice necessario alla costruzione dell’URL diventa:

$params = array(
'api_key' => '787b8623c59bd1c17434d988108711a3',
'method' => 'flickr.photos.getInfo',
'photo_id' => '3569999657',
'format' => 'rest',
);
$encoded_params = array();
foreach ($params as $k => $v){
$encoded_params[] = urlencode($k).'='.urlencode($v);
}
$url = "http://api.flickr.com/services/rest/?".implode('&', $encoded_params);

Invochiamo l’API via libcurl

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch);
curl_close($ch);

Avrete notato che il protocollo di trasmissione è http, e non https come nel caso di delicious. Questo significa che non ci servirà la versione di cURL con supporto SSL (Se siete utenti di sistemi win32, l’istallazione della versione SSL di cURL potrebbe essere alquanto noiosa).
Ripeto ancora che, se lavorate su un sistema *nix, cURL è già presente nella vostra istallazione lampp, quindi dovrete solo preoccuparvi del codice.

Manipoliamo i dati

$xml = simplexml_load_string($result);
if($xml['stat'] == "ok"){
echo "Photo id: " . $xml->photo['id'] . "<br />";
echo "Photo secret: " . $xml->photo['secret'] . "<br />";
echo "Photo server: " . $xml->photo['server'] . "<br />";
echo "Photo farm: " . $xml->photo['farm'] . "<br />";
echo "Photo originalsecret: " . $xml->photo['originalsecret'] . "<br />";
echo "Photo originalformat: " . $xml->photo['originalformat'] . "<br />";
echo "Owner nsid: " . $xml->photo->owner['nsid'] . "<br />";
echo "Owner username: " . $xml->photo->owner['username'] . "<br />";
echo "Title: " . $xml->photo->title . "<br />";
}else{
echo "non hai vinto, ritenta.";
}

Se avete letto il post precedente, questo codice non ha bisogno di commenti. Se Flickr risponde positivamente, allora mostriamo i dati a schermo.

Vediamo la foto

Ora che abbiamo tutti i dati, possiamo utilizzarli per costruire le URL delle fotografie e, quindi, mostrarle a schermo.
Per visualizzare una foto è, ovviamente, necessario conoscere la struttura della URL:

http://farm{farm-id}.static.flickr.com/{server-id}/{id}_{secret}_[mstb].jpg

I parametri da inserire, quindi, sono:

{farm-id}
{server-id}
{id}
{secret}
[mstb]

I primi 4 dati vengono restituiti da Flickr nel blocco XML. Dando un’occhiata al codice di sopra, i valori sono dati da:

$xml->photo['farm']
$xml->photo['server']
$xml->photo['id']
$xml->photo['secret']

L’ultimo dato, invece, lo stabiliamo noi quando impostiamo le dimensioni dell’immagine da visualizzare:

s: quadratino 75 x 75
t: miniatura, 100 sul lato più lungo
m: piccolo, 240 sul lato più lungo
-: medio, 500 sul lato più lungo
b: grande, 1024 sul lato più lungo (solo per immagini originali molto grandi)
o: immagine originale jpg, gif o png, in base al formato di origine

Un miniatura di 240px della foto di sopra, avrà la seguente URL:

http://farm4.static.flickr.com/3324/3569999657_47a970a1ca_m.jpg

E questa è l’anteprima. Ma la pagina originale? Anche in questo caso, la URL si struttura secondo un modello stabilito:

http://www.flickr.com/photos/{user-id}/{photo-id}

Anche in questo caso, dal codice precedente ricaviamo i dati che occorrono:

$xml->photo->owner['nsid']
$xml->photo['id']

e quindi:

http://www.flickr.com/photos/13667501@N02/3569999657

A questo punto, possiamo inserire nella nostra pagina sia la miniatura, sia il link alla foto originale:

Detto questo, rinvio alla lettura della reference ufficiale alla costruzione delle URL di Flickr:
http://www.flickr.com/services/api/misc.urls.html

Continua…

Se ricordate gli assiomi del Web2.0, come definito originariamente da Tim O’Reilly, “Data is the Next Intel Inside”, che vuol dire che il vantaggio economico nel Web 2.0 si basa su enormi disponibilità di dati. Ed è sull’immensa quantità di dati che Google basa la sua posizione economica in un mercato che ormai domina in quasi monopolio.

Quindi Google accumula dati e offre servizi ad elevato valore aggiunto. Noi gli offriamo i nostri dati, diventiamo parte del suo target, e otteniamo tutti il nostro vantaggio.

Tra i servizi (ormai innumerevoli) che sfruttano questa logica, c’è il servizio di localizzazione geografica delle attività commerciali.

Il servizio è, ovviamente, collegato alle ormai onnipresenti mappe e consente ai titolari di attività commerciali (meglio dire, più in generale, attività economiche) di essere localizzati nelle Google Maps ed apparire nei risultati di ricerca degli utenti.

Insomma, “local business”.

Ma come si procede per inserire la propria attività nel servizio Business Center di Google Maps?

In effetti in rete non c’è molto materiale.

Una comoda guida passo-passo è stata predisposta da posizionamentoo.com, ed è scaricabile a questo link.

Oltre al pdf, sono disponibili anche degli ottimi video tutorials:

Il video tutorial è suddiviso in 4 parti:

Prima parte – http://www.youtube.com/watch?v=CZA1oV2Vnx0
Seconda parte – http://www.youtube.com/watch?v=OzLsy2ReXss
Terza parte – http://www.youtube.com/watch?v=9wsgTP0k-gU
Quarta parte – http://www.youtube.com/watch?v=fyWB862mtrQ

Oltre al materiale sul “local business”, spulciando nel canale di posizionamentoo, ho trovato altre utili guide, come questa “Twitter in GMail”, dove si spiega come attivare il twittergadget in GMail:

Insomma, vale la pena darci un’occhiata.

Articoli precedenti »