Обновить
512K+

Python *

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

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

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

Время на прочтение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 мин
Охват и читатели34K
Это шестая статья в серии, где я буду документировать мой опыт написания веб-приложения на 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-интерфейс для работы с вышеуказанным сервером.

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

Python Webmoney API

Время на прочтение4 мин
Охват и читатели14K
Потребовалось мне как то реализовать поддержку Webmoney API (Документация) в проекте. Библиотек на питоне я не нашел, поэтому решил написать свою.
Читать дальше →

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

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

Выражаю традиционную благодарность owlman75 за иллюстрацию к выпуску. И просто огромное спасибо axce1 — я наконец то влил его изменения касающиеся импорта rss и теперь вероятность того, что я пропущу интересную новость в частности с Планеты python стремится к нулю.

Присылайте мне, пожалуйста, ваши новости/исправления/предложения, а если хотите поучаствовать в создании дайджеста и освободить меня от мониторинга какого-то направления — можно ко мне даже в скайп постучаться: alrusdi

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

И снова про опасность eval()

Время на прочтение6 мин
Охват и читатели125K
Сколько было сломано копий при обсуждении вопроса «Возможно ли сделать eval безопасным?» — невозможно сосчитать. Всегда находится кто-то, кто утверждает, что нашёл способ оградиться от всех возможных последствий выполнения этой функции.
Когда мне понадобилось найти развёрнутый ответ на этот вопрос, я наткнулся на один пост. Меня приятно удивила глубина исследования, так что я решил, что это стоит перевести.

Коротко о проблеме


В Python есть встроенная функция eval(), которая выполняет строку с кодом и возвращает результат выполнения:
assert eval("2 + 3 * len('hello')") == 17

Это очень мощная, но в то же время и очень опасная инструкция, особенно если строки, которые вы передаёте в eval, получены не из доверенного источника. Что будет, если строкой, которую мы решим скормить eval'у, окажется os.system('rm -rf /')? Интерпретатор честно запустит процесс удаления всех данных с компьютера, и хорошо ещё, если он будет выполняться от имени наименее привилегированного пользователя (в последующих примерах я буду использовать clear (cls, если вы используете Windows) вместо rm -rf /, чтобы никто из читателей случайно не выстрелил себе в ногу).
Читать дальше →

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

Время на прочтение28 мин
Охват и читатели17K
К нам пришел крупный проект по созданию ERP-системы для компании производителя. В качестве сервера выбор пал на tryton. Однако у них с документацией достаточно плохо. На просторах интернета удалось найти официальную документацию, куски кода с описанием и логи irc канала tryton. Данной информации очень мало для разработки какой-либо системы на tryton. Что б закрыть этот пробел, было решено документировать весь процесс разработки, в особенности подводные камни, с которыми пришлось столкнуться. Итак приступим.
Читать дальше →

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

Время на прочтение2 мин
Охват и читатели12K
Юбилейный 25-й выпуск для хабры подборки статей, релизов, описаний интересных проектов о python и близлежащих технологиях.

Спасибо owlman75 за первомайскую иллюстрацию. Кстати, всех поздравляю с первомаем и наступающим днем Победы.

Благодарю хабраюзеров за плюсики в прошлую публикацию их оказалось неожиданно много, но правила я, оказывается, не дочитал и одного поста с 50+ недостаточно для вывода денежки — их должно быть минимум два. Но ничего, все равно очень приятно было.

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

Легкий python веб-фреймворк: Bottle

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

Введение


Недавно я осознал, что на Хабре нет ни одной статьи, посвящённой прекрасному фреймворку Bottle, которым, кстати говоря, пользуется не мало людей, поэтому в этой статье я попытаюсь рассказать вам о нем.
Читать дальше →