Июл 15

Логи на удаленный syslog-ng

А все просто, стандартный модуль logging вполне справляется с этим:

import logging
from logging.handlers import SysLogHandler
log = logging.getLogger('loggername')
log.addHandler(SysLogHandler(address=('localhost', 514)))
log.setLever(logging.INFO)
log.info('Log test')

Крайне рекомендуется прочесть logging-cookbook

Июл 14

Как использовать Django из внешнего скрипта

Для асинхронной задачи можно создать команду (django management command), или подключить джагну к своему сприпту:

import sys
sys.path.append('/path/to/django/projectname')
from projectname import settings
from django.core.management import setup_environ
setup_environ(settings)
#Получаем настроенную среду django:
from main.models import Model1
print Model1.objects.all()
Фев 13

Windows, COM, 1C и Python

Пролог

Потребовалось сделать выгрузку из 1С в куда-то еще. 1С версии 8.2, но подобным же образом можно получить данные из 7.7, 8.0, 8.1 и думается 8.3 — только названия документов другие.
Данные будем получать через COM — на сколько я знаю, у 1Сников это довольно распростаненный способ, и документации довольно много.
Для работы с COM на питоне потребуется модуль win32com — установка ничем необычным не отличается.

Для напримера, из стандартной конфигурации 1C Бухгалтерия 2.0 забирать список выставленных счетов и отправлять на некий сайт.
Continue reading

Фев 09

Ускоряем Django: View на С

Иногда требуются ресурсоемкие вычисления, и узким местом становится именно питон. Тогда на помощь приходит код написанный на C/С++
К счастью питон-модули пишутся довольно просто, и документация с примерами есть на официальном сайте. Никакой америки я сейчас не открою, и если вы когда-нибудь сталкивались с написанием модуля для питона — далее можно не читать — все довольно примитивно.

Continue reading

Окт 06

Двухэтапная авторизация django

Понадобилось сделать подтверждение авторизации через SMS… Подумалось, и придумалось вот что:
Переделывать полностью систему авторизации было влом, да и вообще хотелось бы обойтись «малой кровью», поэтому решено было переделать django’ый декоратор login_required — чтобы не только спрашивал логин и пароль, но и активировал сессии через SMS

Идея будет такая:

  1. В профиле пользователя сохраняем телефон и флаг использования SMS-авторизации.
  2. Переписываем декоратор login_required, чтобы после авторизации отправлял на активацию сессии
  3. Заменяем во всех views from django.contrib.auth.decorators import login_required на наш декоратор
  4. ???
  5. PROFIT!

Использован вот этот SMS-шлюз (ибо как-то уже пробовал и работает)
модуль для работы с онным скачать тут
Continue reading

Июн 29

MySQL-python (MySQLdb) in Mac OS X

Послe установки mysql5 из macports

sudo pip install mysql-python

по-умолчанию ругается на mysql_config not found, если клиент mysql5 установлен из портов, надо просто добавить путь до mysql_config в глобальный PATH, т.е. просто добавить

/opt/local/lib/mysql5/bin/

в файл /etc/paths

Янв 28

Одной строчкой

Гуляя по просторам интернетов, наткнулся на такую прикольную штуку:

#include <stdio.h>
#include <stdint.h>
 
int main(int argc, char** argv){
 
        uint32_t t;
        for(t=0;;t++)
            putchar((t*3&t>>7)|(t*5&t>>10));
        return 0;
}

gcc main.c
./a.out | aplay и будет круто
Утянуто у VIznut (там можно подсмотреть еще формулы интересные)
послушать онлайн тут

UPD

Можно и на питоне (работает на N9)

import sys
t=0
while 1:
 sys.stdout.write(chr(( (t*3&t>>7)|(t*5&t>>10)) % 256))
 t+=1

запустать так же: python file.py | aplay