6 июня 2011 г.

GeoIP в Django

UPD: Мы зарелизили более новую версию библиотеки для работы с ipgeobase: django-geoip

Мы начали публиковать свои наработки на гитхабе. Это первая ласточка, приложение форк django-ipgeobase.

На нашем последнем проекте для того, чтобы определять, из какого города посетитель сайта, мы использовали базу адресов от ipgeobase.ru. Она содержит достаточно подробную информацию по России и Украине (886 городов) и регулярно обновляется. Этого оказалось вполне достаточно, чтобы привязать контент сайта к разным регионам России, например.

Для геолокации в Django обнаружилось готовое приложение от Ивана Петухова, которое умело импортировать данные с ipgeobase и определять город и регион по ip. А также хорошй форк от mjr27, добавивший админку и поддержку адресов Украины.

В апреле поменялся формат базы данных на ipgeobase, теперь, чтобы получать актуальные ежедневные обновления, нам пришлось изменить процедуру импорта. Так появился наш собственный форк django-ipgeobase.

Пример использования:
from django_ipgeobase.models import IPGeoBase

  ip = "212.49.98.48"

  ipgeobases = IPGeoBase.objects.by_ip(ip)
  if ipgeobases.exists():
      ipgeobase = ipgeobases[0]
      print ipgeobase.city # Населенный пункт (Екатеринбург)
      print ipgeobase.region # Регион (Свердловская область)
      print ipgeobase.country # Страна (Россия)
Очень удобно вынести определение города или региона в отдельную middleware и записать в request значение region, таким образом оно станет сразу доступно во всех видах и шаблонах.

3 июня 2011 г.

Зеркалирование репозиториев Eclipse

Мы не по наслышке знакомы с проблемой медленных и очень медленных зеркал репозиториев Eclipse. И это касается не только основного репозитория текущего Eclipse Helios, но и популярных плагинов к нему, которые мы используем в нашей повседневной работе: PyDev, Aptana, FileSync и некоторые другие. Их установка для каждого члена нашей команды однажды заняла неприлично много времени и мы все единодушно решили, что необходимо найти решение для создания локальных зеркал всех необходимых нам репозиториев. В любом случае хорошо уменьшить зависимость своей работы от причуд сторонних сервисов. Да, эти плагины тянутся не так уж и часто, но удобно, когда они под рукой и наверняка доступны в любое время.