вторник, 17 мая 2011 г.

пятница, 6 мая 2011 г.

Django + MongoDB

Рабочая связка

* django-nonrel
* django-mongodb-engine
* djangotoolbox (setup.py mongo-engine поставит сам)
* permission-backend-nonrel (вернет группы и права в систему доступа)

Работает админка. У моделей можно использовать OneToOneField и ManyToManyField.

Обязательно в settings.py добавить:
* djangotoolbox
* permission_backend_nonrel

Модели пишутся стандартно.

Минус - у моделей всегда id=ObjectId. Не смотрел, возможно ли это изменить.

Локализация

Русская локализация работает только если локаль в settings = ru.

Не забывать:
* создать каталог locale в корне проекта
* django-admin.py makemessages -l ru (создает файл для переводов)
* django-admin.py compilemessages

Начальная установка проекта

django-admin.py startproject mySite
правка settings.py
django-admin.py syncdb
зайти через консоль монго в django_site и выбрать id сайта ( db.django_site.findOne() ) - он нужен в settings (пример: "4dc3b2ef8ddf87288d00001d").

четверг, 24 марта 2011 г.

MongoDB обновление множества записей

Обнаружил неприятную особенность. При частом использовании:

update(
    query={Field:{$in:[x],$nin:[y]}},
    update={$addToSet:{Field:z}},
    multi=true
}

монго плодит кучу под-процессов (и соединений) и сильно лочит коллекцию. Что приводит к 90% локу и зависанию скрипта.

Скрипт - в цикле обновляет поля.

Помогает использование вместо мулти-обновления - обновления каждой записи по одной (под-цикл в скрипте).

Gitolite - удобно!

Очень советую использовать на сервере с git-репозиториями gitolite. Инструкция. Обязательно ставить под пользователем git.

Gitosis у меня не заработал - при push выдавал неизлечимую ошибку.

четверг, 10 февраля 2011 г.

Clodo.ru - не оправдывает моих надежд

Вчера (9.02.2011) была последняя капля. LA достиг 10 и машина умерла. В панели весело отображалось 2ТБ из 15 ГБ диска. Это интересно как???

Кроме того, когда я поднял минимум памяти с 512 до 1,5 ГБ и перезапустил сервер - ничего не изменилось. Как было 512 так и осталось (т.е. выше никак не росло).

Сегодня опять мой скрипт довел сервер до la 8.

Срочно уползаю на selectel.ru! Там la нормально держится на 3-4 и память честно выделяется...

среда, 9 февраля 2011 г.

Clodo.ru - обязательно ставьте fail2ban.

Сегодня слегка озадачился - а не атакуют ли мой сервер (который вообще то никак не фигурирует в интернете)?

sudo cat /var/log/secure* | grep 'Failed password' | grep sshd | awk '{print $1,$2}' | sort | uniq -c

232 Feb 1
800 Feb 2
 15 Feb 4
 15 Feb 7
238 Feb 8

Ого!!! Срочно ставлю fail2ban!

Шаги такие:
1. поставить пакет (yum install fail2ban)
2. настроить конфиг (ssh jail, проверьте правильность имени файла лога!)
3. прописать емаил для рута (sudo vi /etc/aliases)
4. включить fail2ban (/etc/init.d/fail2ban start)
5. добавить его в init.d (chkconfig fail2ban on)

P.S.: проверьте - установлен ли sendmail (/usr/sbin/sendmail)!

четверг, 3 февраля 2011 г.

YML и СЕОшные развлечения

По работе столкнулся с интересной ситуацией - многие интернет магазины используют трюк с подменой символов в названии товаров. Т.е. есть слово "cумка". Они заменяют букву "с" на английскую "c".

Зачем? Да вот какой-то гений понял, что это даст больше уникального контента для поискового робота. Ладно. Всё по-умному - заменяют только в названии товара, а в описании обязательно дублируют слово в правильном виде.

Кому интересно - вбейте в поисковики (советую гугл) "сумка" (и замените первую букву). Результат вас поразит.

Но всё бы хорошо, но эти горе-сеошники совсем не понимают, что они портят контент сайта. Почему? Да потому что, когда интернет-магазин вдруг решит работать с Яндекс-Маркетом... Да, да! Название товара то - уникальное... И кривое.

Хотя возможно яндекс это знает и заменяет обратно. Но вот мне дают xml-файл. Я его обрабатываю и вижу битые слова. И мне приходится как то это решать!

П.С.: Намного проще было бы сео-умникам пнуть своих программистов, что бы те написали ма-а-аленький скрипт...