
Python *
Высокоуровневый язык программирования
Python-digest #29. Новости, интересные проекты, статьи и интервью [25 мая 2014 — 1 июня 2014]
В сегодняшнем дайджесте новостей, статей, интересных проектов из мира python довольно много релизов. Увы, в ущерб количеству статей. Видимо под завязку весны сообщество решило больше писать кода, чем текста. А если учесть, что вышел еще и мажорный релиз git, то можно смело обозвать это явление нелокальным. Или просто все играли в Watch Dogs. Тем не менее, статьи все-таки есть в том числе и на русском, в том числе и не с хабры. Присутствует также забавная аналитика статистики tiobe — говорят, что релиз python 3 в 2011 году сделал проекту смертельную инъекцию. И с тех пор он ударными темпами умирает на пути к светлому будущему.Благодарность owlman75 сегодня многократная — не только иллюстрацию сделал, но и починил верстку общего списка выпусков на инструменте для содания дайджестов. Если сами хотите покодить, а не писать статьи, то могу и вам предложить интересное задание на пользу сообщества и проконтролировать его выполнение. Знаете как правильно вносить изменения в открытые проекты? А на django 1.7 уже попробовали что-нибудь сделать?
Thunderargs: практика использования. Часть 1
Напомню, что эта штука предназначена для обработки параметров функции при помощи аннотаций. Например, так:
OPERATION = {'+': lambda x, y: x+y,
'-': lambda x, y: x-y,
'*': lambda x, y: x*y,
'/': lambda x, y: x/y,
'^': lambda x, y: pow(x,y)}
@Endpoint
def calculate(x:Arg(int), y:Arg(int),
op:Arg(str, default='+', expander=OPERATION)):
return str(op(x,y))
Постараемся по ходу тутора решать вполне определённые проблемы, а не какие-то эфемерные задачки. Ну а теперь — к делу.
Вышел обновленный PyCharm 3.4 с новой расширенной функциональностью и улучшенной общей производительностью

Мы рады сообщить всем хабровчанам: вышла новая версия нашей продвинутой IDE для Python — PyCharm 3.4! Как и раньше, PyCharm 3.4 доступен в платном варианте PyCharm Professional Edition и в бесплатном, с открытым исходным кодом, — PyCharm Community Edition.
PyCharm 3.4 уже доступен для скачивания по этой ссылке.
Разработка ERP на tryton: Часть 2
Работа с иностранными текстами. Как увеличить процент понимания и выучить язык?
Я подумал, что иметь под рукой подобный «переводчик» было бы неплохо, и поэтому решил реализовать его на python. Всех, кого заинтересовало, прошу под кат.
Генераторы словарей
Будет интересно в основном новичкам в Python.
Python-digest #28. Новости, интересные проекты, статьи и интервью [19 мая 2014 — 25 мая 2014]
Вот, наконец-то, и свежие новости о python и близлежащих технологиях. В этот раз будем готовить пакеты, отлаживать регулярные выражения, оптимизировать количество запросов на базу данных, поиграем и порешаем загадки. В общем, развлечения на любой вкус.Большое спасибо всем кто помогает мне словом и делом на инструменте для подготовки дайджеста. Я знаю про движок рассылки, который уже есть в новой ветке, но пока руки не доходят буквально ни до чего. Отдельное спасибо owlman75 за картинку к выпуску.
Подготавливая этот дайджест, наткнулся на довольно забавную статью о том, что не следует обольщаться простотой, с которой можно научиться программировать. Она, конечно, бесполезная, но я порой встречаю интересности не имеющие прямого отношения к python при этом вполне достойные внимания. Хочу спросить и спрашиваю у вас: стоит ли завести для них специальный раздел и публиковать в дайджесте?
os.urandom, CPython, Linux и грабли

Хочу поведать поучительную историю ошибки в реализации функции urandom из модуля os в CPython на UNIX-подобных ОС (Linux, Mac OS X, etc.).
Цитата из документации по тройке:
Return a string of n random bytes suitable for cryptographic use.Документация по двойке добавляет:
This function returns random bytes from an OS-specific randomness source. The returned data should be unpredictable enough for cryptographic applications, though its exact quality depends on the OS implementation. On a Unix-like system this will query /dev/urandom, and on Windows it will use CryptGenRandom().
New in version 2.4.Другими словами, к примеру, под Linux, urandom читает и возвращает байты из системного устройства /dev/urandom. Напомню, что в этой ОС существуют два типичных устройства-источника энтропии: /dev/random и /dev/urandom. Как известно, первое устройство «медленное» и блокирующее, а второе «быстрое», и вопреки распространенному мнению, оба они криптостойкие источники (псевдо-)случайных чисел. Сразу скажу, КДПВ к статье отношения не имеет и речь пойдёт совсем не о криптографии, безопасности
Казалось бы, как можно ошибиться в реализации столь простой рутины? Как это часто бывает, дооптимизировались…
Мега-Учебник Flask, Часть 7: Unit-тестирование
Цель данного руководства — разработать довольно функциональное приложение-микроблог, которое я за полным отсутствием оригинальности решил назвать microblog.
Часть 3: Формы
Часть 4: База данных
Часть 5: Вход пользователей
Часть 6: Страница профиля и аватары
Часть 7: Unit-тестирование (данная статья)
Часть 8: Подписчики, контакты и друзья
Часть 9: Пагинация
Часть 10: Полнотекстовый поиск
Часть 11: Поддержка e-mail
Часть 12: Реконструкция
Часть 13: Дата и время
Часть 14: I18n and L10n
Часть 15: Ajax
Часть 16: Отладка, тестирование и профилирование
Часть 17: Развертывание на Linux (и даже на Raspberry Pi!)
Часть 18: Развертывание на Heroku Cloud
Краткое повторение
В предыдущих частях этого руководства мы постепенно развивали наш микроблог, шаг за шагом добавляя новые возможности. К этому времени наше приложение умеет использовать базу данных, может регистрировать и авторизовывать пользователей, а также позволяет им редактировать собственные данные в профиле.
Сегодня мы не будем добавлять новых возможностей. Вместо этого мы постараемся сделать уже написанный код более устойчивым, а также создадим свой фреймворк, который в будущем поможет нам предотвратить возможные сбои.
Pautomount — демон автоматического монтирования, запуска скриптов и всего такого прочего

Возникла передо мной задача — автоматически выполнять действие при вставке какого-нибудь storage device в Дебиане. К примеру, просто автоматически монтировать его. А может, монтировать и синхронизировать данные, если устройство известно. А может, проверять его clamav на всякую фигню и запускать на нём что-нибудь типа USB-вакцины. Может, и включить сирену, если владельца рядом с компьютером нет =)
К примеру, есть у меня флешки, штук этак 5-7. На каждой записано что-то своё, одна — загрузочная, одна с документами, одна с программами, одна с музыкой и с фотками… И стоит дома сервер, на котором все-все копии того, что на флешках, есть. Хотелось бы мне, чтобы с одной флешкой синхронизировались документы, с другой — музыка и фотки, с третьей — загрузочные образы, и так далее. Только вот нужно это дело как-то автоматически запускать, потому как не годится каждый раз через SSH на сервер лезть и ручками всё править. Поэтому нужно что-то, где можно было бы флешки прописать и действия, нужные при подключении, задать. А там один раз скрипт синхронизации написал — и готово.
Только вот ничего готового и полностью подходящего в Гугле не нашлось. Часть решений тянут за собой кучу зависимостей и не рассчитаны на headless-установку, часть устарели, часть не имеют всего необходимого функционала, а часть позволяют это сделать, только вот слишком муторно, настраивать трудно, и вообще, NIH ;-) Поэтому написал я свой демон автоматического монтирования, ну и выкладываю его сюда, может, пригодится кому-то ещё, может, такому же владельцу домашнего сервера, который точно так же хочет синхронизировать флешки с домашним NAS. Да и хочется, чтобы кто-нибудь код покритиковал, на ошибки указал и решения некоторых проблем подсказал — смотреть в конце топика.
Мега-Учебник Flask, Часть 6: Страница профиля и аватарка
Цель данного руководства — разработать довольно функциональное приложение-микроблог, которое я за полным отсутствием оригинальности решил назвать microblog.
Часть 2: Шаблоны
Часть 3: Формы
Часть 4: База данных
Часть 5: Вход пользователей
Часть 6: Страница профиля и аватары(данная статья)
Часть 7: Unit-тестирование
Часть 8: Подписчики, контакты и друзья
Часть 9: Пагинация
Часть 10: Полнотекстовый поиск
Часть 11: Поддержка e-mail
Часть 12: Реконструкция
Часть 13: Дата и время
Часть 14: I18n and L10n
Часть 15: Ajax
Часть 16: Отладка, тестирование и профилирование
Часть 17: Развертывание на Linux (и даже на Raspberry Pi!)
Часть 18: Развертывание на Heroku Cloud
Краткое повторение
В прошлой статье мы создали систему авторизации, сейчас пользователи могут авторизоваться на сайте используя OpenID.
Сегодня мы будем работать с профилем пользователя. Сперва, создадим страницу профиля, на которой будет показываться информация о пользователе, и его постах, так же мы научимся показывать аватарку. А потом мы создадим форму редактирования личных данных.
Python Meetup: апрельская встреча

Последняя пятница апреля не стала исключением из правил для Python Meetup Minsk: все прошло в то же время, в том же месте. На этот раз было три доклада и одно блиц-выступление. Мы рассмотрели следующие темы:
— "Разработка мобильных приложений на Python" от Дмитрия Овчинникова
— "Python для ленивых или как сделать свою жизнь проще" от Никиты Гришко
— "Unittesting. Как?" от Максима Щепелина
— "Pathlib. Маленькие вкусности Python 3.4" от Алексея Черкеса
Все подробности и видео докладов можно найти под катом. Приятного просмотра!
Ближайшие события
Python-digest #27. Новости, интересные проекты, статьи и интервью [12 мая 2014 — 18 мая 2014]
Многовато нынче дайджестов на хабре развелось, но этот-то о python! Сегодня и о ТДД и о PyQT и о MPTT — да и вообще приличное количество приличных букв на любой вкус.Спасибо owlman75 за подготовку иллюстрации — она далась не с первого раза, но зато, как всегда, очень и очень неплохо. Спасибо и тем кто присылает новости — я их с благодарностью публикую.
За время подготовки дайджестов в базе данных накопилось более 800 статей. У них есть атрибуты к какому разделу они относятся, в каком выпуске опубликованы, откуда взяты. Нет ли желающих построить красивые диаграммки на основе этих данных? Думаю читателям было бы интересно увидеть тренды и распределения. Мне и самому, признаться, любопытно, вот только заняться этим, видимо, не будет времени никода.
ТОП-10 докладов с PyConRu 2013
" Один вариант использования аннотаций
Недавно я открыл для себя что в питоне есть фишка, которую я очень давно искал — аннотации к функциям. Это — возможность пихнуть в декларацию функции какую-либо информацию по каждому отдельному её параметру.
Вот каноничный пример из PEP:
def compile(source: "something compilable",
filename: "where the compilable thing comes from",
mode: "is this a single statement or a suite?"):
...
Там же, чуть ниже, приводятся примеры, которые дают понять, что комментирование параметров — не единственное возможное использование данной фичи. Это натолкнуло меня на мысль об одной старой беде, которая досаждала моей нервной системе уже приличное время. А именно — получение данных из форм во Flask.
Мега-Учебник Flask, Часть 5: Вход пользователей
Предисловие от переводчика.
Переводом предыдущих частей этого руководства занимался wiygn. С его согласия я продолжаю это дело.
Это пятая статья в серии, где я описываю свой опыт написания веб-приложения на Python с использованием микрофреймворка Flask.
Цель данного руководства — разработать довольно функциональное приложение-микроблог, которое я за полным отсутствием оригинальности решил назвать microblog.
Часть 3: Формы
Часть 4: База данных
Часть 5: Вход пользователей (данная статья)
Часть 6: Страница профиля и аватары
Часть 7: Unit-тестирование
Часть 8: Подписчики, контакты и друзья
Часть 9: Пагинация
Часть 10: Полнотекстовый поиск
Часть 11: Поддержка e-mail
Часть 12: Реконструкция
Часть 13: Дата и время
Часть 14: I18n and L10n
Часть 15: Ajax
Часть 16: Отладка, тестирование и профилирование
Часть 17: Развертывание на Linux (и даже на Raspberry Pi!)
Часть 18: Развертывание на Heroku Cloud
Краткое повторение
В предыдущей части мы создали базу данных и научились заполнять её пользователями и постами, однако этот функционал еще не реализован в нашем приложении. Две главы назад мы узнали, как создавать веб-формы и создали форму для авторизации.
В этой статье мы объединим наши знания о веб-формах и базах данных и напишем свою систему для входа пользователей. В конце данного руководства наше небольшое приложение будет регистрировать новых пользователей и проводить их авторизацию.
Для работы с этой главой ваше приложение должно быть таким, каким мы оставили его в конце предыдущей главы. Пожалуйста, убедитесь, что приложение установлено и работает.
Внутренняя кухня организации PyCon Russia и международные отношения

Python Meetup: мартовская встреча

В марте состоялась ежемесячная встреча любителей языка программирования Python Meetup Minsk. В сетке митапа были зачитаны следующие доклады: Python for switch-heads от Максима Барышникова, "Redis. Как мы боролись со сложностью" от Романа Иманкулова и "Обзор фреймворка Twisted" от Андрея Жлобича.
Как всегда видео всех докладов и ссылки на презентации можно найти в нашем блоге. Кроме этого уже известны подробности новой встречи Python Meetup Minsk, которая пройдет 30 мая — все это можно найти под катом. Удачного просмотра!
Организация OLAP куба средствами Python
Сегодня я расскажу вам о том, как можно построить простенькую систему анализа данных на Python. В этом мне помогут framework cubes и пакет cubesviewer.
Сubes представляет собой framework'ом для работы с многомерными данными с помощью Python. Кроме того он включает в себя OLAP HTTP-сервер для упрощенной разработки приложений отчетности и общего просмотра данных.
Сubesviewer представляет собой web-интерфейс для работы с вышеуказанным сервером.