O que é Geolocalização por IP ou GeoIP ?

Geoprocessamento. Onde você está?





 

 

O que é Geoprocessamento por IP?

Este conceito não é muito novo mas não vejo muitas pessoas falando sobre. Trata-se de uma técnica para descobrir informações sobre a localização física, no planeta, de um IP (Internet Protocol). Existem várias empresas que oferecem serviços de geolocalização (ou geo-referenciamento) por IP. Normalmente oferecem interfaces de acesso via REST e retornam XML e disponível em várias linguagens. Estes serviços são bem flexíveis. Alguns oferecem recursos gratuitos, mas são limitados em quantidade de usos, ou obrigam a colocar propagandas. Eu me cadastrei em alguns em modo TRIAL, por isto as aplicações que fiz para testar estão funcionando.

Ferramenta IP Location Tools
Endereço do serviço: http://www.iplocationtools.com/api.html
Onde pode testar: http://www.anselmeit.com/p/ip-geolocalizacao.htm
Funcional: SIM
API oferecida em que linguagens: JavaScript
Pago: Sim

Observações.:
Eles têm também uma página própria para testes:
http://www.iplocationtools.com/api.html
Eles não conseguiram exibir o estado do Rio de Janeiro para o meu IP.
Na verdade eles não acharam meu servidor. Utilizo o Serviço de internet de uma empresa chamada XPTO. Ao invés de achar a XPTO eles acharam o "COMITE GESTOR DA INTERNET NO
BRASIL" que é um nível acima. Acho que é por isso que eles não encontraram o estado do Rio de Janeiro.

Ferramenta MAXMIND
Endereço do serviço: http://www.maxmind.com
Onde pode testar: http://www.maxmind.com/app/isp
Funcional: SIM
API oferecida em que linguagens: C, PHP (Pure), Java, Perl (XS), Perl (Pure), Apache, Python, MS COM, C#, Pascal, Ruby,
Pago: Sim

Observações.:
Eles exibem as informações no nível do ISP corretamente, diferente da ipLocationTools.
Eles oferecem uma página de benchmark http://www.maxmind.com/app/benchmark


Ferramenta IP Info DB
Endereço do serviço: http://ipinfodb.com/ip_location_api.php
Onde pode testar: http://ipinfodb.com/index.php
Funcional: Sim
API oferecida em que linguagens: PHP, Javascript, Ruby, Python e ASP. Mas oferecem consultas via REST que torna facilmente utilizavel via .NET
Pago: Sim

Observações:
Muito bacana e flexível, mas não exibiu o Estado do Rio de Janeiro. Exibiu o país e descobriu que meu host é a XPTO. Reportei o problema para eles. Eles parecem utilizer o serviço da IP2Location.

Ferramenta Quova

Endereço do serviço: http://developer.quova.com/
Onde pode testar: Utilize o código abaixo
Funcional: Sim
API oferecida em que linguagens: PHP, Python, Java, Ruby, Perl,  C#. Mas as consultas são feitas com REST que auxilia o uso em quase todas as linguagens comerciais.
Pago: Sim

Observações:
Eu cheguei a fazer uma aplicação com meu cadastro e senhas e contra-senhas disponibilizadas pelo service Quova. De todos os serviços que pesquisei este é o mais maduro.

Onde encontro uma aplicação de exemplo de geolocalização por IP?
Abaixo você pode encontrar um exemplo. Para executar este exemplo é obrigatório o cadastro no site da empresa que oferece o serviço
// Aplicação ANSELMEGEOIP.EXE
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Net;
using System.Security.Cryptography;

namespace QuovaRESTSample
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Entre com um número de IP: ");
            string ip = Console.ReadLine().Trim();
            string resultadoXML = default(string);

            string service = "http://api.quova.com/";
            string version = "v1/";
            string method = "ipinfo/";
            string ipAddress = ip;
            string apikey = "100.aej8whetsr3enu2ea8ee";
            string secret = "vWhvrZvy";
            string sig = MD5GenerateHash(apikey + secret + (Int32)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds);
            string fullURL = service + version + method + ipAddress + "?apikey=" + apikey + "&sig=" + sig + "&format=xml";

            // Create the web request
            HttpWebRequest request = WebRequest.Create(fullURL) as HttpWebRequest;

            // Get response
            using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
            {
                // Get the response stream
                StreamReader reader = new StreamReader(response.GetResponseStream());

                // Write response to the console
                resultadoXML =reader.ReadToEnd();
            }

            using (StreamWriter sw = new StreamWriter("anselmelocalizacao.xml"))
            {
                sw.WriteLine(resultadoXML);
            }

        }

        private static string MD5GenerateHash(string strInput)
        {
            // Create a new instance of the MD5CryptoServiceProvider object.
            MD5 md5Hasher = MD5.Create();

            // Convert the input string to a byte array and compute the hash.
            byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(strInput));

            // Create a new Stringbuilder to collect the bytes and create a string.
            StringBuilder sBuilder = new StringBuilder();

            // Loop through each byte of the hashed data and format each one as a hexadecimal string.
            for (int nIndex = 0; nIndex < data.Length; ++nIndex)
            {
                sBuilder.Append(data[nIndex].ToString("x2"));
            }

            // Return the hexadecimal string.
            return sBuilder.ToString();
        }
    }
}


Como funciona o AnselmeGeoIP.exe?
É uma aplicação console muito simples que pergunta seu endereço IP.
Se for de sua preferencia, insira vários endereços IP para testar.
Será gerado um arquivo chamado anselmelocalization.xml.
Abra este arquivo no Internet Explorer.


Como atualizar o Windows Phone 7 para 7.5, codenome Mango?

O Windows Phone 7.5 está disponível para quem possui o Windows Phone 7 conforme o site http://migre.me/5PzZB

Entretanto,
vários usuários tentaram fazer a atualização e não conseguiram. Isto porque nem tem todos os usuário receberam esta atualização. A atualização está sendo enviada aos poucos,http://migre.me/5PA0N.




Como atualizar o Windows Phone 7 para 7.5 de maneira forçada?


Existe uma solução manual, muito curiosa, mas funciona perfeitamente.
Para fazer a solução, siga os passos:

1 - Retirar o cartão SIM e desligar as conexões do celular
É necessário retirar o cartão SIM, desligar o Wireless e o Bluetooth.

2 - Conecte o seu Windows Phone ao seu computador
Conecte seu Windows Phone 7 via USB ao seu computador.
É importante que seu computador esteja conectado a internet via cabo ou Wireless que possa ser facilmente desconectável.

3 - Solicite a Atualização do Windows Phone 7
Abra o Zune.
Vá em Settings > Phone > Update.
Memorize o tempo que o Zune demora para exibir uma mensagem dizendo que não existe atualização.

4 - Solicitar novamente, desconectando a rede 2 segundos antes da mensagem do Zune
Clique em "Sync Options", depois clique novamente em "Update".
Desconecte o cabo de rede, ou desligue o wireless quando estiver cerca de 2 segundos antes do tempo que memorizou.

Por exemplo: Se demorar 6 segundos para o Zune dar a mensagem sobre a não existencia de atualizações, desconecte a rede em 4 segundos.

5 - Pronto para atualizar
Podem ser necessarias várias tentativas até que este procedimento de certo.

Quando der certo,
Uma atualização estará disponível.


Zune mostrando a atualização disponível para Windows Phone 7.5

Tela do Zune mostrando a atualização do Windows Phone 7.5

Atualização do Windows Phone em progresso

Nova atualização do Windows Phone

Atualização para Windows Phone 7 concluída com sucesso


Detalhes:
O Windows Phone 7.5 "Mango" é a versão 7720.
Se sua versão atual for a 7392, você atualizará para a versão 7403, e após isto, atualizar para o 7720, WP7 Mango.