Fork me on GitHub

Django Dash 9-10 июля

Django Dash - международный конкурс, в котором компактные спецназ-команды за 48 часов создают полноценный проект. Правила простые:

Читать дальше →

Интерактивная консоль для pyuno + django

Недавно я писал про то, как работать с документами LibreOffice из питона. Я сейчас работаю над исследовательским проектом, в котором django application обращается к LibreOffice через pyuno. В этом проекте натолкнулся на неприятную ошибку - ./manage.py shell при выполнении любых связанных с pyuno методов выдает сообщение "SystemError: pyuno runtime is ...

Читать дальше →

Использование Markdown

В проекте Grammarly Handbook, про который я писал вчера, грамматические карточки из формата MS Word нужно было конвертировать в какой-то внутренний формат, чтобы в этом формате было легко добавлять новые карточки и редактировать существующие. Кроме того, нужно было ограничить функционал редактора карточек, чтобы не было чрезмерного разнообразия форматирования и, как ...

Читать дальше →

OpenOffice + Python, pабота с файлами MS Word

Пару недель назад для проекта Grammarly Handbook понадобилось импортировать много форматированного текста из документов MS Word. Текст находился в 40 файлах размером от одной до двадцати страниц. Первые несколько страниц я перенес вручную и несколько утомился - механическая работа меня не очень радует. Начал искать возможность читать вордовские документы из Питона ...

Читать дальше →

В Python 3.x работает старый способ форматирования строк

А старый добрый способ форматирования строк с помощью % в Python 3000 всё-таки оставили!

~ > workon python3
(python3)~ > ipython    

Python 3.2 (r32:88445, Feb 28 2011, 11:06:14) 

In [1]: 'Good old %s still works in Python 3!' % 'string formatting'
Out[1]: 'Good old string formatting still works in Python ...

Читать дальше →

Python - на 4-м месте

Python - самый популярный язык программирования после Java, C, C++ (именно в таком порядке).

таблица

график

Источник - http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

if request.method == 'GET'

Наконец-то я понял, почему пишут так

def item_view(request, id):
    item = get_object_or_404(Item, id=id)
    if request.method == 'POST':
        form = ItemForm(request.POST, instance=answer)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(item.get_absolute_url())
    else:
        form = ItemForm(instance=item)
    return render('item.html', {'item': item, 'form': form})

и не пишут ...

Читать дальше →

Подробнее о Celery

Пока проверял как Celery работает с MySQL в качестве брокера, материала набежало на большую статью. Сергей Лебедев, спасибо за этот замечательный вопрос!

Проблемная область

В каждом более-менее крупном веб-проекте появляются задачи, которые не укладываются в короткий цикл запроса-ответа HTTP. Отправка уведомлений по почте - сервер может не отвечать 20 секунд, зачем ...

Читать дальше →

Celery - task queue/job queue based on distributed message passing

Определяем в питоновском коде задачи, которые должны выполняться асинхронно:

from celery.decorators import task

@task
def add(x, y):
    return x + y

Запускаем несколько обработчиков на разных серверах (все они связываются брокером, в качестве которого может выступать RabbitMQ, Stomp, Redis и большинство современных СУБД)

Запускаем задачу на асинхронное выполнение:

result ...

Читать дальше →

Sorting with keys

И снова цитата из Code Like a Pythonista:

Python 2.4 introduced an optional argument to the sort list method, "key", which specifies a function of one argument that is used to compute a comparison key from each list element. For example:

def my_key(item):
    return (item[1], item[3 ...

Читать дальше →

Pip, virtualenv и virtualenvwrapper

В мейл-конференции Python-Dev всерьез обсуждают включение фукнциональности virtualenv в Python. Это очень удобный инструмент питониста, позволяющий легко работать на одной машине с разными версиями библиотек (например, с django 1.0.4 и django из транка), быстро передавать список зависимостей проекта другим разработчикам (а они смогут поставить все библиотеки одной командой ...

Читать дальше →

Python quotes

Есть такой замечательный ресурс Python Quotes - 10 страниц отборных цитат из переписки в python-dev, вот некоторые из них:

This is Python! If we didn't care what code looked like, most of us would probably be hacking in some version of Lisp -- which already covered most of Python's abstract ...

Читать дальше →

Декораторы Python

В питоне есть 2 очень мощных инструмента мета-программирования: декораторы и метаклассы. Декораторы применяются к функциям, метаклассы - к классам. Хочу подробно остановиться на декораторах.

Что это такое

Классический пример декоратора - render_to:

def render_to(template):
    def renderer(func):
        def wrapper(request, *args, **kw):
            output = func(request, *args, **kw)
            if isinstance(output, (list ...

Читать дальше →

Идея - регулярные встречи разработчиков в Москвe

Ребята, я тут подумал - а что если раз в месяц собираться на чашечку кофе и делиться опытом разработки, рассказывать про новые технологии и языки, про решение актуальных задач? Особенно интересны аспекты разработки с использованием динамических языков - Python, Ruby, Javascript. Мне это интересно тем, что можно познакомиться друг с другом, перенять ...

Читать дальше →

10 причин любить Python

  1. Не нужно ставить точки с запятыми и фигурные скобки повсюду (радует еще больше, чем при переходе с begin-end Паскаля к фигурным скобкам C).
  2. Очень легко читать чужой код (из-за п.1, стандартизированных отступов, компактности языка, а также благодаря специальному упору на читаемость в дизайне языка). По сравнению с C/C ...

Читать дальше →

Язык программирования Python создан специально для киборгов

Эта тайна была раскрыта с помощью Google Image Swirl, вот ссылка на доказательство - http://image-swirl.googlelabs.com/html?q=python#377.

Очистка кеша memcached

from memcache import Client
c = Client(('127.0.0.1:11211',))
c.flush_all()

Django Forms

pony powered

В джанге многое сразу покорило мое сердце - прекрасные модели, мощный URLconf, красивые шаблоны. Но вот джанго-формы открылись для меня во всей красе лишь недавно. Я быстро научился верстать и обрабатывать формы руками, поэтому не было надобности вникать в довольно большой посвященный им раздел документации (10 разделов!). В новом большом django-проекте ...

Читать дальше →

Python XML serializer

Потребовалось мне на днях сделать сериализацию простого Python-dictionary в XML. Элементы словаря - списки и прочие объекты. Готового сниппета я не нашел, написал свой компактный (меньше 30 строчек) сериализатор.

from StringIO import StringIO
from xml.etree.cElementTree import Element, ElementTree
try:
    from django.utils.encoding import smart_unicode as unicode
except:
    pass ...

Читать дальше →

Развертывание Django-проектов c помощью Fabric

В одном из проектов необходимо регулярно выкладывать код из ветки stage на staging сервер. Начали делать это вручную - входишь через ssh, делаешь git push origin stage, если нужно - обновляешь базу и затем перезапускаешь apache. К концу этой недели решили, что хорошо бы все эти действия выполнять одной командой. Я прошерстил ...

Читать дальше →

Python и скорость: Unladen Swallow, PyPy, Cython

Краткий перевод обсуждения Recommendation against Python?:

kng Я слышал, что сотрудникам Google не рекомендуют использовать Python для новых проектов, что мне кажется глупым, учитывая как много питоновского кода и поддержки самого языка Python исходит из Google. Я начал поиски информации, но ничего не нашел. Вы знаете что-то об этом или ...

Читать дальше →

Архив статей