Arkiv för kategorin ‘Geo’
GeoTargeting är live
tisdag, maj 13th, 2008Vi kör nu vår första kampanj där geo targeting är påslaget. Denna kampanj riktar sig endast mot Stockholmare. Cool teknik där spatiala index i kombination med regionshiarkier utgör basen.
GeoLookup
onsdag, januari 23rd, 2008Har använt maxminds geoip lookup i över ett år nu och får säga att jag är riktigt nöjd med noggrannheten. Så hur gör man då? Visar ett exempel där jag parsar ut ip nummer ur en access logg med Tailsweep Utils och slår upp dem med Maxminds LookupService. Jag använder en 1 år gammal version deras binära databas.
import org.tailsweep.utils.http.AccessLogParser;
import org.tailsweep.utils.http.AccessLogHandler;
import org.tailsweep.utils.http.AccessLogLine;
import com.maxmind.geoip.LookupService;
import com.maxmind.geoip.Location;
import java.io.File;
import java.util.Set;
import java.util.Iterator;
import java.util.HashSet;
public class TestIpLocation
{
public static void main(String[] args)
{
try
{
AccessLogParser parser = new AccessLogParser();
GetUniqueIps gips = new GetUniqueIps();
parser.parseFile(new File(”/srv/data/access.log”), gips);
Set
LookupService lookupService = new LookupService(”/usr/local/share/GeoIP/GeoIPCity.dat”, LookupService.GEOIP_MEMORY_CACHE);
//Warmup
int size = ips.size();
System.out.println(”Nr of ips: ” +size);
for(int i = 0; i < 1000; i++)
{
Location l1 = lookupService.getLocation(”213.52.50.8″);
}
long start = System.currentTimeMillis();
Location l1 = null;
for (Iterator
{
String ip = iterator.next();
l1 = lookupService.getLocation(ip);
}
long stop = System.currentTimeMillis();
double diff = (stop-start);
System.out.println(”Total time=”+diff + “, per ip = ” + (diff/(double)size));
System.out.println(”countryCode: ” + l1.countryCode +
“\n countryName: ” + l1.countryName +
“\n region: ” + l1.region +
“\n city: ” + l1.city +
“\n postalCode: ” + l1.postalCode +
“\n latitude: ” + l1.latitude +
“\n longitude: ” + l1.longitude +
“\n distance: ” + l1.distance(l1) +
“\n dma code: ” + l1.dma_code +
“\n area code: ” + l1.area_code );
}
catch (Exception e)
{
e.printStackTrace();
}
}
static class GetUniqueIps implements AccessLogHandler
{
protected Set
public void handle(AccessLogLine accessLogLine)
{
ips.add(accessLogLine.getIp());
}
public Set
{
return ips;
}
}
}



