Обновить
795.46

Python *

Высокоуровневый язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Python-digest #29. Новости, интересные проекты, статьи и интервью [25 мая 2014 — 1 июня 2014]

Время на прочтение2 мин
Охват и читатели13K
В сегодняшнем дайджесте новостей, статей, интересных проектов из мира python довольно много релизов. Увы, в ущерб количеству статей. Видимо под завязку весны сообщество решило больше писать кода, чем текста. А если учесть, что вышел еще и мажорный релиз git, то можно смело обозвать это явление нелокальным. Или просто все играли в Watch Dogs. Тем не менее, статьи все-таки есть в том числе и на русском, в том числе и не с хабры. Присутствует также забавная аналитика статистики tiobe — говорят, что релиз python 3 в 2011 году сделал проекту смертельную инъекцию. И с тех пор он ударными темпами умирает на пути к светлому будущему.

Благодарность owlman75 сегодня многократная — не только иллюстрацию сделал, но и починил верстку общего списка выпусков на инструменте для содания дайджестов. Если сами хотите покодить, а не писать статьи, то могу и вам предложить интересное задание на пользу сообщества и проконтролировать его выполнение. Знаете как правильно вносить изменения в открытые проекты? А на django 1.7 уже попробовали что-нибудь сделать?

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

Thunderargs: практика использования. Часть 1

Время на прочтение6 мин
Охват и читатели5.7K
Недавно я писал пост про то, как был придуман и написан thunderargs. Сегодня я раccкажу о том, как его можно применять.

Напомню, что эта штука предназначена для обработки параметров функции при помощи аннотаций. Например, так:

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 с новой расширенной функциональностью и улучшенной общей производительностью

Время на прочтение4 мин
Охват и читатели25K


Мы рады сообщить всем хабровчанам: вышла новая версия нашей продвинутой IDE для Python — PyCharm 3.4! Как и раньше, PyCharm 3.4 доступен в платном варианте PyCharm Professional Edition и в бесплатном, с открытым исходным кодом, — PyCharm Community Edition.

PyCharm 3.4 уже доступен для скачивания по этой ссылке.
Читаем дальше, много картинок!

Разработка ERP на tryton: Часть 2

Время на прочтение26 мин
Охват и читатели6.8K
В этой части рассматривается структура именования методов, работа с пользователями и группами, установка дополнительных модулей.
Читать дальше →

Работа с иностранными текстами. Как увеличить процент понимания и выучить язык?

Время на прочтение7 мин
Охват и читатели33K
По жизни или по работе иногда приходится сталкиваться с текстами на иностранном языке, знания которого еще далеки от совершенства. Чтобы прочесть и понять, о чем идет речь (и, в лучшем случае, выучить несколько новых слов), я обычно использовал два варианта. Первый — это перевод текста в браузере, второй — перевод каждого слова по отдельности с помощью, например, ABBYY Lingvo. Но у этих методов есть множество недостатков. Во-первых, браузер предлагает перевод предложениями, а значит, он может менять порядок слов и перевод может оказаться еще более непонятным, чем оригинальный текст. Во-вторых, браузер не предлагает ни альтернативных вариантов перевода, ни синонимов к словам, а значит, учить новые слова становится проблематично. Другие варианты и синонимы можно получить при поиске конкретного слова в переводчике, а это требует некоторого времени, особенно если таких слов много. Наконец, читая текст, мне хотелось бы знать, какие слова наиболее популярны в этом языке, чтобы я мог их запомнить и потом использовать в своей письменной или разговорной речи.

Я подумал, что иметь под рукой подобный «переводчик» было бы неплохо, и поэтому решил реализовать его на python. Всех, кого заинтересовало, прошу под кат.
Читать дальше →

Генераторы словарей

Время на прочтение3 мин
Охват и читатели82K
Некоторые замечательные возможности языка Python незаслуженно оставлены без внимания и многие программисты о них не знают. В этот раз речь пойдет о прекрасной возможности языка, делающей код яснее: генераторы словарей — однострочные выражения, возвращающие словарь. Но начнем с компактных генераторов списков и задачи удаления неуникальных элементов коллекций.

Будет интересно в основном новичкам в Python.
Читать дальше →

Python-digest #28. Новости, интересные проекты, статьи и интервью [19 мая 2014 — 25 мая 2014]

Время на прочтение3 мин
Охват и читатели14K
Вот, наконец-то, и свежие новости о python и близлежащих технологиях. В этот раз будем готовить пакеты, отлаживать регулярные выражения, оптимизировать количество запросов на базу данных, поиграем и порешаем загадки. В общем, развлечения на любой вкус.

Большое спасибо всем кто помогает мне словом и делом на инструменте для подготовки дайджеста. Я знаю про движок рассылки, который уже есть в новой ветке, но пока руки не доходят буквально ни до чего. Отдельное спасибо owlman75 за картинку к выпуску.

Подготавливая этот дайджест, наткнулся на довольно забавную статью о том, что не следует обольщаться простотой, с которой можно научиться программировать. Она, конечно, бесполезная, но я порой встречаю интересности не имеющие прямого отношения к python при этом вполне достойные внимания. Хочу спросить и спрашиваю у вас: стоит ли завести для них специальный раздел и публиковать в дайджесте?

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

os.urandom, CPython, Linux и грабли

Время на прочтение5 мин
Охват и читатели21K


Хочу поведать поучительную историю ошибки в реализации функции 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. Как известно, первое устройство «медленное» и блокирующее, а второе «быстрое», и вопреки распространенному мнению, оба они криптостойкие источники (псевдо-)случайных чисел. Сразу скажу, КДПВ к статье отношения не имеет и речь пойдёт совсем не о криптографии, безопасности и об OpenSSL с Heartbleed-ом.

Казалось бы, как можно ошибиться в реализации столь простой рутины? Как это часто бывает, дооптимизировались…
Читать дальше →

Мега-Учебник Flask, Часть 7: Unit-тестирование

Время на прочтение11 мин
Охват и читатели40K
Это седьмая статья в серии, где я описываю свой опыт написания веб-приложения на Python с использованием микрофреймворка Flask.

Цель данного руководства — разработать довольно функциональное приложение-микроблог, которое я за полным отсутствием оригинальности решил назвать microblog.



Краткое повторение


В предыдущих частях этого руководства мы постепенно развивали наш микроблог, шаг за шагом добавляя новые возможности. К этому времени наше приложение умеет использовать базу данных, может регистрировать и авторизовывать пользователей, а также позволяет им редактировать собственные данные в профиле.

Сегодня мы не будем добавлять новых возможностей. Вместо этого мы постараемся сделать уже написанный код более устойчивым, а также создадим свой фреймворк, который в будущем поможет нам предотвратить возможные сбои.

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

Pautomount — демон автоматического монтирования, запуска скриптов и всего такого прочего

Время на прочтение10 мин
Охват и читатели13K
image

Возникла передо мной задача — автоматически выполнять действие при вставке какого-нибудь storage device в Дебиане. К примеру, просто автоматически монтировать его. А может, монтировать и синхронизировать данные, если устройство известно. А может, проверять его clamav на всякую фигню и запускать на нём что-нибудь типа USB-вакцины. Может, и включить сирену, если владельца рядом с компьютером нет =)

К примеру, есть у меня флешки, штук этак 5-7. На каждой записано что-то своё, одна — загрузочная, одна с документами, одна с программами, одна с музыкой и с фотками… И стоит дома сервер, на котором все-все копии того, что на флешках, есть. Хотелось бы мне, чтобы с одной флешкой синхронизировались документы, с другой — музыка и фотки, с третьей — загрузочные образы, и так далее. Только вот нужно это дело как-то автоматически запускать, потому как не годится каждый раз через SSH на сервер лезть и ручками всё править. Поэтому нужно что-то, где можно было бы флешки прописать и действия, нужные при подключении, задать. А там один раз скрипт синхронизации написал — и готово.

Только вот ничего готового и полностью подходящего в Гугле не нашлось. Часть решений тянут за собой кучу зависимостей и не рассчитаны на headless-установку, часть устарели, часть не имеют всего необходимого функционала, а часть позволяют это сделать, только вот слишком муторно, настраивать трудно, и вообще, NIH ;-) Поэтому написал я свой демон автоматического монтирования, ну и выкладываю его сюда, может, пригодится кому-то ещё, может, такому же владельцу домашнего сервера, который точно так же хочет синхронизировать флешки с домашним NAS. Да и хочется, чтобы кто-нибудь код покритиковал, на ошибки указал и решения некоторых проблем подсказал — смотреть в конце топика.
Читать дальше →

Мега-Учебник Flask, Часть 6: Страница профиля и аватарка

Время на прочтение10 мин
Охват и читатели35K
Это шестая статья в серии, где я буду документировать мой опыт написания веб-приложения на Python, используя микрофреймворк Flask.

Цель данного руководства — разработать довольно функциональное приложение-микроблог, которое я за полным отсутствием оригинальности решил назвать microblog.



Краткое повторение

В прошлой статье мы создали систему авторизации, сейчас пользователи могут авторизоваться на сайте используя OpenID.

Сегодня мы будем работать с профилем пользователя. Сперва, создадим страницу профиля, на которой будет показываться информация о пользователе, и его постах, так же мы научимся показывать аватарку. А потом мы создадим форму редактирования личных данных.
Читать дальше →

Python Meetup: апрельская встреча

Время на прочтение2 мин
Охват и читатели11K
image

Последняя пятница апреля не стала исключением из правил для Python Meetup Minsk: все прошло в то же время, в том же месте. На этот раз было три доклада и одно блиц-выступление. Мы рассмотрели следующие темы:
— "Разработка мобильных приложений на Python" от Дмитрия Овчинникова
— "Python для ленивых или как сделать свою жизнь проще" от Никиты Гришко
— "Unittesting. Как?" от Максима Щепелина
— "Pathlib. Маленькие вкусности Python 3.4" от Алексея Черкеса

Все подробности и видео докладов можно найти под катом. Приятного просмотра!
Читать дальше →

Ближайшие события

Python-digest #27. Новости, интересные проекты, статьи и интервью [12 мая 2014 — 18 мая 2014]

Время на прочтение2 мин
Охват и читатели13K
Многовато нынче дайджестов на хабре развелось, но этот-то о python! Сегодня и о ТДД и о PyQT и о MPTT — да и вообще приличное количество приличных букв на любой вкус.

Спасибо owlman75 за подготовку иллюстрации — она далась не с первого раза, но зато, как всегда, очень и очень неплохо. Спасибо и тем кто присылает новости — я их с благодарностью публикую.

За время подготовки дайджестов в базе данных накопилось более 800 статей. У них есть атрибуты к какому разделу они относятся, в каком выпуске опубликованы, откуда взяты. Нет ли желающих построить красивые диаграммки на основе этих данных? Думаю читателям было бы интересно увидеть тренды и распределения. Мне и самому, признаться, любопытно, вот только заняться этим, видимо, не будет времени никода.

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

ТОП-10 докладов с PyConRu 2013

Время на прочтение4 мин
Охват и читатели12K
Пока суть да дело, мы выбрали для вас самые популярные видео докладов с PyCon 2013. Видеозаписи отранжированы по количеству просмотров видео на нашем канале YouTube

new_logo_white.png"
Читать дальше →

Один вариант использования аннотаций

Время на прочтение4 мин
Охват и читатели14K
Сразу хочу объявить, что здесь под аннотациями подразумеваются НЕ декораторы. И я не знаю по какой причине декораторы иногда именуют аннотациями.

Недавно я открыл для себя что в питоне есть фишка, которую я очень давно искал — аннотации к функциям. Это — возможность пихнуть в декларацию функции какую-либо информацию по каждому отдельному её параметру.

Вот каноничный пример из 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: Вход пользователей

Время на прочтение7 мин
Охват и читатели112K

Предисловие от переводчика.
Переводом предыдущих частей этого руководства занимался wiygn. С его согласия я продолжаю это дело.


Это пятая статья в серии, где я описываю свой опыт написания веб-приложения на Python с использованием микрофреймворка Flask.



Цель данного руководства — разработать довольно функциональное приложение-микроблог, которое я за полным отсутствием оригинальности решил назвать microblog.





Краткое повторение


В предыдущей части мы создали базу данных и научились заполнять её пользователями и постами, однако этот функционал еще не реализован в нашем приложении. Две главы назад мы узнали, как создавать веб-формы и создали форму для авторизации.



В этой статье мы объединим наши знания о веб-формах и базах данных и напишем свою систему для входа пользователей. В конце данного руководства наше небольшое приложение будет регистрировать новых пользователей и проводить их авторизацию.



Для работы с этой главой ваше приложение должно быть таким, каким мы оставили его в конце предыдущей главы. Пожалуйста, убедитесь, что приложение установлено и работает.



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

Внутренняя кухня организации PyCon Russia и международные отношения

Время на прочтение4 мин
Охват и читатели17K
«Я не хочу, чтобы меня арестовали в России просто за то, что я рассказываю о своей жизни», — эти и другие причины, почему иностранцы отказываются ехать на наши конференции. Под катом – несколько баек из жизни.

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

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

Время на прочтение2 мин
Охват и читатели6.7K
image

В марте состоялась ежемесячная встреча любителей языка программирования Python Meetup Minsk. В сетке митапа были зачитаны следующие доклады: Python for switch-heads от Максима Барышникова, "Redis. Как мы боролись со сложностью" от Романа Иманкулова и "Обзор фреймворка Twisted" от Андрея Жлобича.

Как всегда видео всех докладов и ссылки на презентации можно найти в нашем блоге. Кроме этого уже известны подробности новой встречи Python Meetup Minsk, которая пройдет 30 мая — все это можно найти под катом. Удачного просмотра!
Читать дальше →

Организация OLAP куба средствами Python

Время на прочтение4 мин
Охват и читатели27K
Добрый день, уважаемые читатели.
Сегодня я расскажу вам о том, как можно построить простенькую систему анализа данных на Python. В этом мне помогут framework cubes и пакет cubesviewer.
Сubes представляет собой framework'ом для работы с многомерными данными с помощью Python. Кроме того он включает в себя OLAP HTTP-сервер для упрощенной разработки приложений отчетности и общего просмотра данных.
Сubesviewer представляет собой web-интерфейс для работы с вышеуказанным сервером.

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