Django Dash - международный конкурс, в котором компактные спецназ-команды за 48 часов создают полноценный проект. Правила простые:
- бОльшая часть кода должна использовать django
- никакого кода до соревнования (только идеи и бумажные прототипы)
- команда не больше 3 человек
- git или mercurial для хранения исходных кодов
- ваш проект должен быть open source
- можно ...
Недавно я писал про то, как работать с документами LibreOffice из питона. Я сейчас работаю над исследовательским проектом, в котором django application обращается к LibreOffice через pyuno. В этом проекте натолкнулся на неприятную ошибку - ./manage.py shell при выполнении любых связанных с pyuno методов выдает сообщение "SystemError: pyuno runtime is ...
В проекте Grammarly Handbook, про который я писал вчера, грамматические карточки из формата MS Word нужно было конвертировать в какой-то внутренний формат, чтобы в этом формате было легко добавлять новые карточки и редактировать существующие. Кроме того, нужно было ограничить функционал редактора карточек, чтобы не было чрезмерного разнообразия форматирования и, как ...
Пару недель назад для проекта Grammarly Handbook понадобилось импортировать много форматированного текста из документов MS Word. Текст находился в 40 файлах размером от одной до двадцати страниц. Первые несколько страниц я перенес вручную и несколько утомился - механическая работа меня не очень радует. Начал искать возможность читать вордовские документы из Питона ...
А старый добрый способ форматирования строк с помощью % в 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 - самый популярный язык программирования после Java, C, C++ (именно в таком порядке).


Источник - http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Наконец-то я понял, почему пишут так
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 работает с MySQL в качестве брокера, материала набежало на большую статью. Сергей Лебедев, спасибо за этот замечательный вопрос!
Проблемная область
В каждом более-менее крупном веб-проекте появляются задачи, которые не укладываются в короткий цикл запроса-ответа HTTP. Отправка уведомлений по почте - сервер может не отвечать 20 секунд, зачем ...
Определяем в питоновском коде задачи, которые должны выполняться асинхронно:
from celery.decorators import task
@task
def add(x, y):
return x + y
Запускаем несколько обработчиков на разных серверах (все они связываются брокером, в качестве которого может выступать RabbitMQ, Stomp, Redis и большинство современных СУБД)
Запускаем задачу на асинхронное выполнение:
result ...
И снова цитата из 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 ...
В мейл-конференции Python-Dev всерьез обсуждают включение фукнциональности virtualenv в Python. Это очень удобный инструмент питониста, позволяющий легко работать на одной машине с разными версиями библиотек (например, с django 1.0.4 и django из транка), быстро передавать список зависимостей проекта другим разработчикам (а они смогут поставить все библиотеки одной командой ...
Есть такой замечательный ресурс 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 ...
В питоне есть 2 очень мощных инструмента мета-программирования: декораторы и метаклассы. Декораторы применяются к функциям, метаклассы - к классам. Хочу подробно остановиться на декораторах.
Что это такое
Классический пример декоратора - render_to:
def render_to(template):
def renderer(func):
def wrapper(request, *args, **kw):
output = func(request, *args, **kw)
if isinstance(output, (list ...
Ребята, я тут подумал - а что если раз в месяц собираться на чашечку кофе и делиться опытом разработки, рассказывать про новые технологии и языки, про решение актуальных задач? Особенно интересны аспекты разработки с использованием динамических языков - Python, Ruby, Javascript. Мне это интересно тем, что можно познакомиться друг с другом, перенять ...
- Не нужно ставить точки с запятыми и фигурные скобки повсюду (радует еще больше, чем при переходе с begin-end Паскаля к фигурным скобкам C).
- Очень легко читать чужой код (из-за п.1, стандартизированных отступов, компактности языка, а также благодаря специальному упору на читаемость в дизайне языка). По сравнению с C/C ...

Эта тайна была раскрыта с помощью Google Image Swirl, вот ссылка на доказательство - http://image-swirl.googlelabs.com/html?q=python#377.
from memcache import Client
c = Client(('127.0.0.1:11211',))
c.flush_all()

В джанге многое сразу покорило мое сердце - прекрасные модели, мощный URLconf, красивые шаблоны. Но вот джанго-формы открылись для меня во всей красе лишь недавно. Я быстро научился верстать и обрабатывать формы руками, поэтому не было надобности вникать в довольно большой посвященный им раздел документации (10 разделов!). В новом большом django-проекте ...
Потребовалось мне на днях сделать сериализацию простого 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 ...
В одном из проектов необходимо регулярно выкладывать код из ветки stage на staging сервер. Начали делать это вручную - входишь через ssh, делаешь git push origin stage, если нужно - обновляешь базу и затем перезапускаешь apache. К концу этой недели решили, что хорошо бы все эти действия выполнять одной командой. Я прошерстил ...
Краткий перевод обсуждения Recommendation against Python?:
kng
Я слышал, что сотрудникам Google не рекомендуют использовать Python для новых проектов, что мне кажется глупым, учитывая как много питоновского кода и поддержки самого языка Python исходит из Google. Я начал поиски информации, но ничего не нашел. Вы знаете что-то об этом или ...
Интересные ссылки
Простое и четкое объяснение механизма __slots__ (via @raymondh)
Замечательная бесплатная Khan Academy начала издавать видео-лекции по Computer Science с примерами на Python. И как они пишут в комментариях к одному видео "Google uses it [Python] for a lot of their development (I believe it is their language of choice). Khan Academy's server side code is all Python."
А вот и видео с DjangoCon Europe подоспели. Их по традиции выложили на blip.tv (в отличии от Europython, которые выложили на амазоновский cloudfront).
Видеозаписи выложены на страничках с выступлениями. (via reddit)
Обновил в соответствии с новыми фичами Django 1.3, подчистил и выложил в открытый доступ код этого блога.
Guido van Rossum рассказывает о двух беседах с людьми, активно использующими Python в очень разных областях. Annie Liu - professor of computer science, Drew Houston - co-founder and CEO of Dropbox.
Написал маленький (меньше 100 LOC) плагин для редактора SublimeText 2. Плагин проверяет *.py файлы через pep8 и pyflakes. PEP-8 проверяет соответствие кода python style guide, а pyflakes находит глупые и не очень ошибки (пропущенные/неиспользуемые импорты, неиспользуемые переменные и пр.). Upd. Reddit link - redd.it/hnf08
"Mark Guzdial and Barb Erickson have shown that introducing students to programming by teaching them Python and writing programs that manipulate images and sound (an approach they call Media Computation) clearly improves overall success rates for students in CS 1 and CS 2. (The use of Pyton lowers the learning curve, and the user of muti-media based assignments improves interest and motivation.)"
Уже посмотрел 3 выступления, просто напалм.
Brian Jones портировал библиотеку dateutil на python 3, потратив всего 5 часов. Так держать! (У меня стоит python 3.2 и нехватка привычных библиотек очень чувствуется).
Automating Page Checking without Brittleness (как хорошо писать тесты для selenium на питоне) via convore
Альтарнативный способ написания юниттестов. Если кратко, то в большинстве случаев можно просто писать assert f(a, b, c) = 123 и все равно получать полные сообщения об ошибках. Есть интеграция с django - django-pytest. Via convore
Отличные примеры Zen of Python в виде питоновского кода
Преимущество TestCase.assertEqual(status, 200) vs. assert status == 200 в том, что сообщение об ошибке выдается более информативное: AssertionError: 302 != 200 vs AssertionError.
"PEP 444 is a moving target as people still want to keep changing it and no one agrees about it. PEP 3333 isn't going to change and is what Apache/mod_wsgi has supported for the last two years. CherryPy WSGI server and uWSGI are also PEP 3333 compliant for Python 3." Graham Dumpleton
Пакет вспомогательных инструментов тестирования для django-проектов. Testmaker записывает тесты, пока вы кликаете мышкой по сайту, Crawler проходит по всем URL-ам, которые может найти на сайте, Persistent Database Test Runner выполняет тесты, не пересоздавая тестовую базу. А также Twill Runner и Mock Objects.
До этого самое высокое место (седьмое) он занимал в мае 2004-го. Похоже мы перестаем быть миноритариями, пишущими на стильном экзотическом языке :)))
PyPy все быстрее и быстрее, а также совместим с virtualenv. Похоже скоро у нас появится в 2 раза более быстрая замена CPython. Перевел им 10 долларов
Отличное описание алгоритмов ранжирования hot algorithm, Wilson score interval, используемых в Reddit. Примеры на Python.
В документации твиттера упоминаются другие библиотеки: oauth-python-twitter2, python-oauth2, обе на сегодняший день не слишком активно развиваются. А у tweepy - 427 watchers и активные коммиты в октябре.
Jacob Kaplan-Moss и Frank Wiles (а также другие известные питонисты) отвечают на вопросы, связанные с django.
Подход к хранению древовидных данных в реляционной базе данных от P.J. Eby. Используется closure table, хранящая parent_id, child_id, depth. Получение дерева - за один sql-запрос (с join'ом к closure table).
В Google App Engine будет SQL-подобный интерфейс к BigTable. А в django скорее всего будет хороший db-backend к нему. Результат - можно будет использовать django в Google App Engine без лишних патчей.
Еще рекомендую прочитать - Story of Jython
"I will be speaking at Pycon Ukraine about good API design :)"
Вдогонку к langpop.com. В GitHub python на 4-м месте, после ruby, javascript, perl. Похоже python перестал быть редким языком, для которого не найти программистов.
Еще одна попытка сделать WSGI, совместимый с Python 3. На этот раз автор - P.J. Eby. Единственное серьезное изменение - "headers are strings, bodies are bytes". См. также обсуждение в Python-dev,
Мне не нравится стандартный питоновский модуль logging, а вот модуль logbook, который разрабатывает mitsuhiko (Armin Ronacher) - очень даже ничего!
Москва, отличный офис на м. Китай-город, креативные сильные ребята в команде, хорошие основатели-руководители. Собственные прорывные проекты (один из них - http://bookmate.ru). Работать вместе с Димой Смолиным (одним из лучших программистов, с кем я когда-либо работал).
Я зарегистрировался. Если и правда приедут Armin Ronacher и Andrew Godwin - это будет очень круто!
Похоже веб-приложениям на python3 быть! Chris McDonough, Armin Ronacher - спасибо!
Django-app для логина через Google, Facebook, Twitter, Yahoo!, LinkedIn или произвольный OpenID provider. Это - ссылка на самую активную ветку (и похоже - ветку разработчиков из Hyderabad, India), есть еще десяток активных репозиториев, которые посылают много pull requests.
Про то как ребята из Disqus справляются с высокой нагрузкой (17 000 запросов в секунду). Используют Python/Django/Postres. Написали/дописали хорошие инструменты, поддерживающие процесс разработки.
Модуль ipdb, позволяющий использовать встроенный в IPython дебаггер (работает автодополнение и все прочие приятности). import ipdb; ipdb.set_trace() Upd. pip install ipdb (via Andrey Popp)
Питоновская библиотечка, упрощающая хранение бекапов в Amazon S3.
uWSGI
01.06.2010
uWSGI is a fast (pure C), self-healing, developer-friendly WSGI server, aimed for professional python webapps deployment and development (есть модули для apache2, nginx, cherokee и lighttpd)
Дима пишет: "В кои-то веки сделал Python реализацию Enum, которая мне нравится :) Опыт использования показал, что пользоваться очень удобно :) Идея трюка с определением порядка атрибутов класса сперта из Django. Мы используем строковые константы, но если кому-то нужна числовая автонумерация - код очень легко дополнить"
Programming as a profession is only moderately interesting. It can be a good job, but if you want to make about the same money and be happier you could actually just go run a fast food joint. You are much better off using code as your secret weapon in another profession.
People who can code in the world of technology companies are a dime a dozen and get no respect. People who can code in biology, medicine, government, sociology, physics, history, and mathematics are respected and can do amazing things to advance those disciplines.
В одной компании было 2 команды: одна писала на C#, другая на Python. Прежде чем сделать окончательный переход на Python+Django для веб-приложений, они 6 месяцев проводили измерения скорости разработки в обоих командах. По их измерениям, Python+Django разработчик заменяет двоих разработчиков на C#+ASP.NET
Питоновская библиотека, делающая транслитерацию unicode-строк в максимально близкие ascii-строки. Поддерживается даже китайский язык.
Из этого списка я пропустил только itertools. Ну и Python Cookbook не читал (электронную читать не хочу, разве что бумажную найду когда-нибудь - в метро почитать). Itertools - ого-го! Все остальное - и подавно must read.
It all got started, I believe, because the very earliest Googlers (Sergey, Larry, Craig, ...) made a good engineering decision: "Python where we can, C++ where we must" (Alex Martelli)
Pure-Python implementation of the Git file formats and protocols. Named after the village in which Mr. and Mrs. Git live in the Monty Python sketch.
По совету из статьи Code Like a Pythonista скачал документацию по питону - теперь нырять в неё немного быстрее. Кто бы мог подумать, что в 2010 году, в Москве, с многомегабитным интернетом, это будет актуально :)))))
Swap Values
In other languages:
temp = a
a = b
b = temp
In Python:
b, a = a, b
Юрий Юревич пишет: "Есть один интересный человек, Янис Ляйдель, также известный под ником jezdez. Помимо всего прочего (Pinax & Django core dev, ключевая фигура в немецком Django-коммунити), он известен коллекционированием полезных Django-приложений. Рекомендую посмотреть список “зафоловленных” им приложений на GitHub и Bitbucket, возможно найдете что-нибудь интересное."
Набор лучших практик от ребят из Chicago Tribune: version control, python, django, javascript, html/css, images, testing.
Людвиг - отличный питонист из Швеции. Одна из его библиотек, pylibmc, скорее всего будет использоваться в django.
Some quick notes about the coming plans by the "other" Python implementations from today's Python Language Summit at PyCon 2010
Werkzeug - набор wsgi-утилит, я пользуюсь очень часто их дебаггером. Новая версия дружит с Google Appengine SDK.
"Живой опыт программирования, Python, Django, современные языки и немного фотографий" - много работал с Толиком, даже на питоне вместе от души попрограммировали. Отличный человек и программист, а сейчас еще и блоггер. Рекомендую читать!
Толик Востряков пишет про библиотеку Coverage, показывающую покрытие тестами python/django кода
"Experimental (but obviously restricted) Python-to-C++ compiler." Спросил у автора, в чем отличие от Cython, ответ - "cython relies on type declarations and other manual 'hints' to optimize programs. shed skin's goal is to statically compile restricted python code without any such manual hints"
coev framework is a stab on providing reasonably fast asynchronous IO to both Python code itself, and any C extension modules used
Первый программистский пост Толика Вострякова. 1. MultiTextInputWidget - виджет для формы, представляющий json-поле из базы данных в виде нескольких полей на форме. 2. Разные способы определения свойств в Python
В Unladen Swallow (проект по ускорению CPython) используются патчи к cPickle, изначально написанные для YouTube.
David Beazley использует улучшенные Python-генераторы для реализации coroutines. И с помощью этих coroutines строит кооперативную нано-ОС и микро-веб-фреймворк. Я встречал coroutines в первом томе Кнута и с тех пор не видел их много лет, и вот теперь снова встречаю их в Python. Удивительно и познавательно! Иван, спасибо за наводку!
Очень интересное и свежее (всего 11 дней назад) обсуждение про различные асинхронные python-фреймворки. Все больше и больше новых библиотек опирается на Coroutines via Enhanced Generators и это очень хорошо!
Adisp
11.12.2009
Python-библиотечка (2 декоратора и 1 класс) для удобного написания асинхронного кода без явного указания callbacks.
Исходники
reddit.com. Используют pylons, paste. Понравился декоратор @validateForm - форма создается на лету и валидирует параметры API. Очередь асинхронных задач работает через AMQP (RabbitMQ, Erlang).
Сегодня нашел сайт со ссылками на русскоязычные ресурсы по Python, в том числе - блоги питонистов.
Part1 и
Part 2 - в последние месяцы в блогах о Python и Django много пишут про
Fabric, инструмент позволяющий автоматизировать деплоймент Python-проектов.
Обсуждение в
гугл-группе Unladen Swallow на следующие темы: почему Python используется нечасто в новых проектах Google, какие задачи будут решать Unladen Swallow и PyPy, какова роль Cython. Участвуют сотрудники Google, работающие над Unladen Swallow (ускорение CPython в 5 раз), и другие интересные люди.
Very compliant Python interpreter. Not ready as a drop-in replacement of CPython ... yet. They plan to release JIT-ready version somewhere early 2010. It should be able to speed up real-world programs.
Отличное руководство об использовании библиотеки pdb для отладки python-приложений (via
Simon Willison)