Tailsweep
Svenska UK

Meny

  • Hem
  • Tailsweep
  • Tailsweep Blog Search
  • Tailsweeps Blogg
  • Google group
  • AddThis Social Bookmark Button

Projekt

  • Mammatus
  • Parhely
  • Haloe
  • AbstractCache
  • Utils

Arkiv

  • juni 2008
  • maj 2008
  • mars 2008
  • februari 2008
  • januari 2008
  • december 2007

Sidor

  • Kontakt

Kategorier

    AJAX
    Backup
    BigTable
    Browser
    cache
    Geo
    haloe
    Hibernate
    Javascript
    Job
    Lucene
    Mail
    Monitor
    Monitoring
    MySQL
    optimization
    regex
    release
    SCM
    Server
    sharding
    Spatial
    Tools
    Uncategorized

Prenumerera

RSS Senaste nytt som RSS

Arkiv för kategorin ‘Geo’

Så ska en optimering göras

onsdag, juni 18th, 2008

Vi har de sista veckorna upplevt en ökad last på vår databasserver. Vi tweakade dels lite kod och lade på några index på rätt ställen och simsalabim!

Se och njut!

Tags: MySQL, optimization, performance
Postad i BigTable, Geo, MySQL, optimization | 2 Comments »

GeoTargeting är live

tisdag, maj 13th, 2008

Vi 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.

Tags: Geo
Postad i Geo | 2 Comments »

GeoLookup

onsdag, januari 23rd, 2008

Har 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 ips = gips.getIps();

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 iterator = ips.iterator(); iterator.hasNext();)
{
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 ips = new HashSet();

public void handle(AccessLogLine accessLogLine)
{
ips.add(accessLogLine.getIp());
}

public Set getIps()
{
return ips;
}
}

}

Tags: geo-targeting
Postad i Geo | No Comments »

Copyright © 2007 Tailsweep AB

Tailsweep development Blog is proudly powered by WordPress
Entries (RSS) and Comments (RSS).