Bing Maps e WPF

Mi è capitato di dover sviluppare una applicazione desktop usando il WPF che visualizzasse le mappe di Bing.
Pensavo sarebbe stato facile (“E’ tutto di Microsoft, sarà sicuramente facile”, pensavo) ed invece con qualche rapida ricerca su internet mi sono reso conto che non esiste un metodo “standard”, semplice e supportato direttamente da Microsoft di fare ciò.

Ho cercato un po’ di documentazione, e vagliato almeno due possibilità

  • Scrivere una semplice applicazione Silverlight, renderla disponibile su qualche server ed usarla all’interno di una window WPF (ma anche l’embedding di Silverlight in WPF non è a noi “concesso” da Microsoft in modo nativo)
  • Scrivere una pagina HTML ed interagire con essa tramite Javascript.

La soluzione che ho scelto di utilizzare è la seconda: più semplice e senza necessità di hostare niente su un server.

Partiamo con un po’ di documentazione:
Qui potete trovare un esempio di utilizzo dei servizi SOAP di Bing.
Qui trovate un esempio di interazione tra WPF e WebBrowser tramite javascript.

Il progetto di esempio, che potete scaricare in fondo a questa mini-guida, è composto principalmente da una pagina HTML che si occupa di visualizzare le mappe di Bing e da una finestra WPF che interagisce con la pagina HTML fornendo coordinate e ricevendo informazioni da essa.
La classe che permette la conunicazione tra WPF e Javascript è la seguente:

[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
[ComVisible(true)]
public class ObjectForScriptingHelper
{
    Window1 mExternalWPF;
    public ObjectForScriptingHelper(Window1 w)
    {
        this.mExternalWPF = w;
    }

    public void ActionChanged(string action)
    {
      this.mExternalWPF.ActionChanged(action);
    }

    public void PinAdded(string latitude, string longitude)
    {
      this.mExternalWPF.PinAdded(latitude, longitude);
    }
}

Come vedete è molto semplice. Da notare soltanto i metodi ActionChanged e PinAdded, che sono quelli che verrano chiamati da Javascript per comunicare con il programma principale.

La pagina HTML usa i normali metodi AJAX utilizzati sul web.
Qui potete trovare molti esempi di utilizzo.

La parte WPF non fa altro che visualizzare il contenuto HTML in un controllo WebBrowser, comunicando con essa attraverso Javascript.

Visto che un esempio vale più di mille parole, ecco il progetto di test.
BingMapsTest

Per poterlo utilizzare dovete registrare un account al Bing Maps Account Center ed inserire la chiave nella costante:

private const string m_BingKey = "Your Bing Maps Key";

Debian: bloccare pacchetti alla versione corrente

Visto che mi dimentico sempre come si fa, pubblico qui questa mini guida così almeno so dove ritrovarla in modo semplice. 🙂

Per evitare che un pacchetto venga aggiornato con un apt-get upgrade è sufficiente metterlo in hold usando dpgk
echo "packageName hold" | dpkg --set-selections

Per rimuovere un pacchetto dallo stato di hold:
echo "packageName install" | dpkg --set-selections

Per controllare lo stato attuale di tutti i pacchetti:
dpkg --get-selections

Per controllare quelli in stato di hold:
dpkg --get-selections | grep hold

Nokia N9(50), forse ci siamo!

Dopo mesi e mesi di rumors e smentite forse ci stiamo avvicinando all’evento che (credo) tutti i possessori di Nokia N900 stanno aspettando.

Le specifiche tecniche di questo nuovo device non sono ancora state rilasciate ufficialmente da Nokia (solo rumors in giro per la rete, senza fonte) ma ciò che interessa veramente è che, finalmente, avremo un successore di Maemo 5 (che si tratti di Maemo 6 o Meego).

Dal video sembra di capire che sarà equipaggiato con una fotocamera da 12 megapixel (la stessa dell’N8?)

Nokia N900: SMS a gruppi di numeri con Group SMS

Ritengo il Nokia N900, pur con tutti i suoi difetti, un ottimo smartphone, ma ritengo altresì che Nokia gli abbia riservato un pessimo trattamento.
Il software sembra letteralmente “lasciato a metà” con alcune carenze ridicole.
Una di queste è l’impossibilità di gestire i gruppi nella rubrica e, conseguentemente, di inviare SMS ad un gruppo di numeri.

Ci sono certo dei workaround coi quali ci si può arrangiare (uno è quello di mettere a tutti i contatti del “gruppo” un nickname uguale, inserire il nickname come destinatario e selezionare a mano ogni contatto che ha quel nickname) ma restano “trucchetti”.

Visto che il problema non era di difficile soluzione (e mi chiedo quanto tempo ci avrebbe messo Nokia a mettere direttamente la gestione dei gruppi nella rubrica, visto che in tutti i suoi cellulari è possibile farlo) ho pensato di risolverlo. 🙂

Ecco a voi Group SMS, semplice programma che permette di creare gruppi di numeri e poi inviare ad essi SMS.

Potete installare il programma con l’application manager del Nokia N900 dal repository Extras-devel

Sinceramente credo che utilizzerò questo programma pochissimo (forse mai: non uso molto gli SMS) ma ho letto spesso su forums dedicati di persone che si lamentavano di questa mancanza.