Posted by & filed under javascript.

Смутил следующий код в Firebug:

>>> new Date(2012,03,30).valueOf()
1335733200000
>>> new Date(2012,03,31).valueOf()
1335819600000
>>> new Date(2012,04,01).valueOf()
1335819600000
>>> new Date(2012,04,02).valueOf()
1335906000000

Почему у 1 апреля и 31 марта одно и тоже число?

Ответ прост
Date(2012,04,01) — это не 1 апреля, а 1 мая, месяцы начинаются с 0, как банально (

Posted by & filed under django, python.

Создаем 2 файла настроек:

settings_local.py
settings_server.py

которые будут включать спецификации локально и для сервера.
Заводим главный файл
settings.py
и в нем прописываем:

import socket
ip=socket.gethostbyname(socket.gethostname())
server_ips=['88.88.88.88',]
if  ip in server_ips:
    from settings_server import *
else:
    from settings_local import *

Posted by & filed under python.

Экспорт данных из mongodb за определенный промежуток времени:

mongoexport -h localhost --db mydbname --collection mycollection -o myout -q '{mydatetimefield:{"$gte": new Date(1330059600000),"$lt":new Date(1330146000000)}}'

где 1330059600000 и 1330146000000 — даты полученные через js как:

new Date(2012,01,24).valueOf();
и
new Date(2012,01,25).valueOf();

где new Date(2012,01,24) это 24 февраля(!)
Имеют значения одинарные и двойные ковычки, если бы всё взяли в двойные то пришлось бы экранировать доллар:

mongoexport -h localhost --db mydbname --collection mycollection -o myout -q "{mydatetimefield:{'\$gte': new Date(1330059600000),'\$lt':new Date(1330146000000)}}"

Posted by & filed under python.

Хочу обратить внимание на различия в работе с mongodb напрямую и через pymongo.

Работа с конcолью с mongodb:

db.banners_shows.mapReduce(showMap,showReduce,{out:{reduce:'joined'},'query':{'options':{'$exists':'true'}}});

где banners_shows — наша коллекция,
showMap — map функция
showReduce — reduce функция
joined — коллекция куда выводится результат
options — ключ который может существовать в полях нашей коллекции

Сначала по аналогии делал так и для pymongo

show_result=banner_shows.map_reduce(map_func,reduce_func,out=bson.son.SON({out:{reduce:'joined'},{'options': {'$exists': 'true'}}}

и получал такую ошибку

… collection names must not contain ‘$’ …

Правильный вариант

show_result=banner_shows.map_reduce(map_func,reduce_func,out='joined',query=bson.son.SON({'options': {'$exists': 'true'}} ))

Posted by & filed under css.

В общем, много спецификаций, под каждый почтовый клиент приходится подстраиваться, очень помог ресурс http://premailer.dialect.ca/
который из обычной верстки делает оптимизированную и указывает какие CSS элементы не поддерживает тот или иной почтовый клиент

Posted by & filed under Linux.

xmodmap

позволяет просматривать таблицу соостветствий клавиш.
Пример результата:

xmodmap: up to 4 keys per modifier, (keycodes in parentheses):

shift   Shift_L (0x32), Shift_R (0x3e)
lock    Caps_Lock (0x42)
control    Control_L (0x25), Control_R (0x69)
mod1    Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd)
mod2    Num_Lock (0x4d)
mod3
mod4    Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5    ISO_Level3_Shift (0x5c), Mode_switch (0xcb)