Блог студии Future Colors
Мы пишем про наши достижения в интернете и про новости веб-разработки.
9 августа 2011 г.
Обновили сайт
1 августа 2011 г.
Поиск в Django с помощью Sphinx
Это приложение автоматически генерирует конфигурационный файл (на основе которого строятся поисковые индексы), позволяет делать полнотекстовый поиск по моделям или по нескольким индексам одновременно (получая queryset-подобные объекты).
Управление свойствами индексов, весами атрибутов и тому подобным ведётся прямо из модели:
class MyModel(models.Model):
...
search = SphinxSearch(weights={ 'name': 100, 'description': 10, 'tags': 80}, mode='SPH_MATCH_ALL', rankmode='SPH_RANK_NONE')
...
На основе этих данных manage-команда ./manage.py generate_sphinx_config
К сожалению, проект развивается автором не очень интенсивно, но на github.com существует некоторое количество форков, решающих ряд проблем, среди которых изменившиеся в Django 1.3 настройки баз данных (поддержка нескольких БД) и поиск по нескольким индексам.
Для того, чтобы поиск одновременно по нескольким индексам позволял оперировать с результатами как с ORM-объектами, а не идентификаторами записей, необходимо проследить, чтобы выполнялись следующие два условия:
- В запросах, на основе которых строятся индексы (sql_query в секциях source конфига), в секции SELECT должно присутствовать <число> AS content_type, то есть должна быть связь с типом контента (для того, чтобы django-sphinx смог понять, какой модели принадлежит результат).
- В той же секции должно присутствовать объявление sql_attr_uint = content_type.
Наш форк django-sphinx можно найти тут
6 июня 2011 г.
GeoIP в Django
Мы начали публиковать свои наработки на гитхабе. Это первая ласточка, приложение форк 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 и некоторые другие. Их установка для каждого члена нашей команды однажды заняла неприлично много времени и мы все единодушно решили, что необходимо найти решение для создания локальных зеркал всех необходимых нам репозиториев. В любом случае хорошо уменьшить зависимость своей работы от причуд сторонних сервисов. Да, эти плагины тянутся не так уж и часто, но удобно, когда они под рукой и наверняка доступны в любое время.
25 мая 2011 г.
Вакансия python- & django-разработчика 2
За условиями под кат.
4 мая 2011 г.
29 апреля 2011 г.
Eclipse и SSH passphrase
О чём речь
Многие используют passphrase для защиты своих ssh-ключей, а кто-то оставляет свой id_rsa без пароля. Мы вам рекомендуем в целях безопасности всё-таки использовать passphrase, а иначе можно считать что вы храните доступ ко всем ssh в plain-тексте. Если данный абзац поставил вас в тупик, на гитхабе есть хороший ликбез «Working with SSH key passphrases».Проблема
Последний на данный момент Eclipse Helios плохо дружит с id_rsa с паролем и реагирует на ввод корректной passphrase выдаёт «Auth failed»Решение
Есть очень простой workaround: удалить passphrase, вручную добавить ключ в Eclipse, а потом средствами того же эклипса установить passphrase обратно.Сбрасываем passphrase:
user@futurecolors:~/.ssh$ ssh-keygen -p
По этому пути в меню нужно импортировать id_rsa вручную:
Window → Preferences → General → Network connections → SSH2
Key Management → Load Existing Key…
Сразу же всё на заработает, надо рестартануть эклипс.
Там же импортированному ключу возвращаем passphrase.
Безопасных вам коннектов!











