Обновить
512K+

Python *

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

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

Пишем мониторинг наличия билетов на РЖД, part 2

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


В первой части было показано как написать простейший враппер вокруг существующего http API ржд. В этой части продолжим и напишем действующий мониторинг с уведомлением на почту. Сайт проекта располагается по прежнему тут и тут запасной.
Читать дальше →

Уведомления окончаний fabric задач, с декораторами и детальной информацией

Время на прочтение3 мин
Охват и читатели4.4K
В существующем проекте есть долгоиграющие fab-задачки — получения дампов с удаленных серверов, агрегация данных, етс. Запускаешь задачу, отвлекаешься в соседнее окошко, через N минут(а то и через час) вспоминаешь, проверяешь… неэффективно.
Захотелось сделать всплывающие уведомления на десктоп по завершении задачи, а тут и статья про notify-send подвернулась. Решил сделать декоратор на fab-функции — самое ему место.
Но не так все просто оказалось...

Открытые классы в ruby, заметки для питонистов

Время на прочтение2 мин
Охват и читатели6.1K
По своему опыту знаю, что открытые классы в ruby раздражают и вызывают непонимание в среде питонистов. Ну в самом деле, что за странность открыть класс String и переопределить там size?
Читать дальше →

Об организации кода в django-приложениях или толстые модели – это прекрасно

Время на прочтение6 мин
Охват и читатели39K
От переводчика
Как всегда вольный перевод интересной статьи о конкретном подходе к организации кода в django-приложениях. Будет полезна:
  • Тем, кто еще не задумывался о таких вопросах
  • Тем, кто уже имеет собственные взгляды на организацию логики, но не против оценить альтернативные варианты
  • Тем, кто уже использует обсуждаемый подход, для подтверждения своих мыслей
  • Тем, кто уже не использует обсуждаемый подход и имеет аргументы против

Большого количества кода не будет, статья по большей части дискуссионная. Энжой)


image
Толстые модели.
Читать дальше →

Основы создания 2D персонажа в Godot. Часть 2: компилирование шаблонов, немного о GDScript, движение и анимация героя

Время на прочтение9 мин
Охват и читатели37K
В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр.

Во второй части на повестке дня у нас:
1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры.
2) Новые анимации. Параметры персонажа.
3) Управление.
3) GDScript. Добро пожаловать в настоящий кодинг!
4) Импорт простейших Tilesets.
5) Бонус: разбор устройства простейших задников.

Ну и как обычно, много картинок!

В этот раз действительно много картинок...

Основы создания 2D персонажа в Godot. Часть 1: компилирование игрового движка, создание проекта и анимация покоя героя

Время на прочтение6 мин
Охват и читатели58K
Пару дней назад увидел статью о публикации исходного кода под свободной лицензией MIT игрового движка Godot и сразу решил поковыряться в нём.
Оказалось не всё так сложно, скорее забавно. В своей первой публикации хотелось бы рассказать о первых шагах на пути к созданию игрового платформера, и всех подводных камнях, о которые я чуть было не переломал пальцы за эти дни.



Если это кому-то интересно, добро пожаловать под Хабракат!
Осторожно! Много картинок!

Про сообщества программистов

Время на прочтение7 мин
Охват и читатели35K
Этот пост назревал долгое время, но последняя запись в блоге Йэна Бикинга Saying Goodbye to Python заставила-таки меня сесть и написать его. Он скорее личный, и наверное не очень интересный, но для меня важно, что бы он где-то сохранился.

Довольно просто забыть про всех тех людей, которые сделали вас тем, кем вы сейчас являетесь, зачастую даже не подозревая об этом. Через несколько дней я и Python будем вместе уже 10 лет. Я не помню конкретно день, когда я впервые скачал интерпретатор Python’a, но благодаря моей активной интернет-жизни можно составить некий список прошлых заслуг начиная с определенной точки.
Читать дальше →

Несколько полезных полей Django

Время на прочтение4 мин
Охват и читатели24K
Я работаю штатным программистом в Санкт-Петербургском Государственном Экономическом Университете и моей задачей с недавних пор является сопровождение деятельности отдела фото-видео производства (начинающее университетское телевидение). Как только начальник управления попросил всех зарегистрироваться в Bitrix24 с целью автоматизировать отчёты, я подумал об автоматизации входящих задач (на самом деле всё немного глубже и целью была дисциплина, но к посту не относится).

Собственно, первом делом я взялся за форму заявки на фото-видео съёмку, которую, недолго думая, набросал в Django. К этому моменту мои познания фрэймворка ограничивались несколькими представлениями для вывода списков на внутреннем сервере отдела. Основной сложность в форме стали внезапно поля — хотелось одновременно и красоту навести и от ошибок ввода пользователя уберечь(ся). Особенно интересовали меня два поля — поле ввода телефона и выбора времени. О них и речь.

Начну с поля для ввода телефона. Сначала я обратился к Хабру и нашёл некий пост, однако увиденное показалось мне слишком громоздким для моей цели (ведь мне надо было просто передать телефон оператору). Я понял, что использование CharField не приведёт ни к одной из моих целей и, пошуршав документацией Django, я нашёл там MultiValueField и MultiWidget в дополнение (сразу хочу сказать, что использование только MultiValueField порождает обычную строку для ввода текста, что никакого смысла не имеет). Через несколько минут был написан код под катом.

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

AES-128. Детали и реализация на python

Время на прочтение12 мин
Охват и читатели86K
Идея написать для себя что-то шифрующее родилась довольно тривиально — пришлось завести еще одну дебетовую карту и, следовательно, хранить в голове еще один пин-код. Хранить такую информацию в открытом виде паранойя не позволяет, использовать сторонние сервисы тоже, поэтому после некоторых поисков остановился на стандарте AES. Сразу захотелось разобраться и реализовать алгоритм самому, не прибегая к дополнительным модулям.

В статье я расскажу подробно о составляющих алгоритма, немного окунемся в мат часть и приведу пример реализации на python. В разработке я ограничивался только тем, что входит в состав стандартной библиотеки.
Читать дальше →

Внедрение зависимостей the Python way

Время на прочтение3 мин
Охват и читатели38K
Зачем нужно внедрение зависимостей? Оно уменьшает связанность компонентов в приложение и упрощает тестирование. У некоторых разработчиков есть мнение, что внедрение зависимостей нужно только в больших проектах и что оно сильно усложняет программы. Думаю, это исторически сложилось из-за популярный фрейморков вроде Спринга или Джуса в Джаве. Особенно из-за Спринга, который является невероятным комбайном.

Python-inject — это небольшая библиотека для внедрения зависимостей в Питоне. Третья версия написана в unix-стиле, т.е. она прекрасно выполняет только одну функцию и не пытается быть всем. В отличие от уже упомянутых Спринга и Джуса Инжект не ворует конструкторы классов у разработчиков, не навязывает разработчикам необходимость писать приложение в каком-то определенном стиле и не пытается управлять всем графом объектов приложения.

Инжект практически не требует конфигурации (об этом подробнее подкатом) и очень прост в использовании.
Например в тестах
# Возможные зависимости
class Db(object): pass
class Mailer(object): pass

# Внедряем зависимости в класс пользователя
class User(object):
    db = inject.attr(Db)
    mailer = inject.attr(Mailer)
    
    def __init__(self, name):
        self.name = name
    
    def register(self):
        self.db.save(self)
        self.mailer.send_welcome_email(self.name)


 # Используем в тестах inmemory базу данных и моки.
class TestUser(unittest.TestCase):
    def setUp(self):
        inject.clear_and_configure(lambda binder: binder \
            .bind(Db, InMemoryDb()) \
            .bind(Mailer, Mock()))
        
        self.mailer = inject.instance(Mailer)
    
    def test_register__should_send_welcome_email(self):
        # Пример теста.
        user = User('John Doe')
        
        # Регистрируем нового пользователя.
        user.register()
        
        # Должно отправиться письмо с приветствием.
        self.mailer.send_welcome_email.assert_called_with('John Doe')


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

Игровой движок Godot отдали в общественное пользование

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


Создатели движка Godot опубликовали исходный код под свободной лицензией MIT, так что теперь любой желающий может использовать его для создания собственных 2D- и 3D-игр. Авторы программы утверждают, что Godot предоставляет богатый набор функций и новый подход к разработке игр, что в совокупности «позволяет разработчикам-одиночкам и группам работать более эффективно, чем когда-либо». Они также отмечают простоту и лёгкость освоения программы: язык программирования похож на Python.
Читать дальше →

Python-digest #13. Новости, интересные проекты, статьи и интервью [31 января 2014 — 9 февраля 2014]

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


Хочу сказать традиционное спасибо owlman75 за иллюстрацию к выпуску. Он пока readonly, но возможно опубликует интересную статью подходящую нашему дайджесту и получит от кого-нибудь приглашение. Говорят частенько это делает НЛО.

Самих статей на этой неделе не очень много. Все получающие PythonWeekly и PythonCoders не дадут соврать — там тоже не было ничего особо интересного. Хочу сказать, что информационный фон python-сообщества формируем мы сами — поэтому поддерживайте любимый ЯП: пишите статьи, афишируйте свои интересные проекты, экспериментируйте с новшествами.

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

Google Calendar, как бесплатный СМС гейт

Время на прочтение4 мин
Охват и читатели67K
Вы знали, что google календарь может отправлять СМС напоминания? Скорее всего, да. Я сам этим пользуюсь постоянно. А знали ли вы, что с помощью таких напоминаний можно сделать себе СМС оповещения? А вот можно. Эдакий персональный бесплатный СМС гейт. Я об этом когда-то давно читал, но тогда мне это нужно не было. Недавно понадобилось отправлять СМС оповещения от железки аля умный дом и я вспомнил об этом способе. Вспомнил, нашел готовый django модуль, реализующий его, и подключил к своему сайту. Работает! На все у меня ушло где-то пол часа. Но обо всем по порядку.
Читать дальше →

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

Простой скрипт на Python для заучивания английских слов или почему я не использую карточки

Время на прочтение4 мин
Охват и читатели34K
На хабре уже не раз поднималась тема изучения английского языка (пруф). Она рассматривалась с разных ракурсов. Кто-то писал, что не зачем учить слова, при изучении иностранного. Кто-то делился способами, коих великое множество, от простых карточек, до целой тетради, исписанной по самое не хочу. В конце концов есть LinguaLeo, так же замечательный сервис, на котором без дополнительной платы можно учить по 10 слов в день. Хотя иногда платить не хочется, а 10 слов кажутся весьма небольшим количество для молодого организма, который познает таинства и прелести иностранной мовы. Тогда возможно этот скрипт вам будет полезен.
Читать дальше →

Python на страже кошелька

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


Однажды забрел я на сайт мобильного оператора в поисках чего-нибудь интересного. Интересным оказалось только наличие большого количества разнообразных тарифных планов на любой вкус и цвет. Тут — низкий тариф внутри сети, там — тарификация по длительности звонка, а вот и фиксированная плата за звонок. В общем, маркетологи подзаработали на славу. На сайтах других операторов картина была похожая. Мне стало интересно, насколько мои расходы на мобильную связь изменились бы в зависимости от выбранного тарифа. Но одной только силы мысли оказалось недостаточно, чтобы проанализировать статистику звонков за последние месяцы и сопоставить их со всеми тарифами. Решив отложить это дело до лучших времен, нажимаю Alt+Tab и попадаю — правильно, в консоль с заголовком Python 2.7.5+ и манящим приглашением >>>
Итак, вызов принят!

Выпущен обновленный PyCharm 3.1 с поддержкой Python 3.4 и Django 1.6: что стало лучше?

Время на прочтение4 мин
Охват и читатели23K
Хотим поделиться радостью: мы только что выпустили PyCharm 3.1. Это — хоть и минорный, но все же наполненный новой функциональностью релиз PyCharm. Как вы знаете, PyCharm начиная с версии 3.0 доступен как в платном варианте PyCharm Professional Edition, так и в бесплатном с открытым исходным кодом — PyCharm Community Edition.

Загрузите PyCharm 3.1 прямо сейчас (и продолжайте читать, пока он загружается).

Новый PyCharm 3.1 теперь поддерживает последние версии Python 3.4 и Django 1.6. Мы не обошли вниманием и поддержку Google App Engine — она заметно улучшена. В PyCharm 3.1 также интегрированы улучшения, сделанные в последнее время в общей для всех наших IDE платформе — IntelliJ.

Что нового?


Поддерживается Python 3.4


image

PyCharm 3.1 поддерживает Python 3.4, включая новые стандартные библиотеки и последние новшества языка. Можно смело переключаться на новый интерпретатор и работать, наслаждаясь новыми фичами Python.
а еще?

Vim-крокет

Время на прочтение7 мин
Охват и читатели16K
Переводчик из меня совершенно никакой, но я просто не мог пройти мимо этой статьи, ибо она излучает волны крутости, а концентрация дзена в ней зашкаливает. Поэтому welcome.

Введение


Недавно я обнаружил интересную игру под названием VimGolf. Цель этой игры заключается в том, чтобы преобразовать кусок текста из одной формы в другую наименьшим возможным количеством нажатий клавиш. Пока я играл на этом сайте с разными пазлами, мне стало любопытно — а какие привычки редактирования текста есть у меня? Мне захотелось лучше понять способы манипулирования текстом в Vim и проверить, смогу ли я найти неэффективные моменты в моем рабочем процессе. Я провожу огромное количество времени в моем текстовом редакторе, поэтому устранение даже незначительных шероховатостей может привести к значительному увеличению производительности. В этом посте я расскажу о своем анализе и о том, как я уменьшил количество нажатий клавиш при использовании Vim. Я назвал эту игру Vim-крокет.
Читать дальше →

Простейший способ добавить WebSocket в Django

Время на прочтение4 мин
Охват и читатели31K
Примечение переводчика: вебсокеты и Django — это довольно сложная тема, которая уже не раз поднималась на хабрахабре и основной идеей является написание параллельного бэкенда для вебсокетов. Автор же предлагает довольно лаконичное решение этой проблемы, которому правда еще предстоит проверка временем.

TL;DR — Я пришел к очень простому решению для работы с вебсокетами в Django. Все что вам нужно — это установить django-websocket-request, запустить скрипт, и теперь ваше приложение поддерживает вебсокеты! Это решение заставляет Django думать, будто он получает нормальный (в какой-то мере) HTTP-запрос, поэтому оно будет совместимо почти со всем вашим существующим кодом. Решение работает нормально как с Django Rest Framework, так и с обычными функциями-представлениями и представлениями, основанными на классах (Class Based Views).
Читать дальше →

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

Время на прочтение3 мин
Охват и читатели13K
Итак, снова новости о Python и близлежащих технологиях. Сегодня много интересного о Wheels и пакетах в целом, MoviePy, AI для игр, русская документация по argparser и другое.

Огромное спасибо тем, кто прислал новости на инструмент для создания дайджестов и тем кто помог прикрутить к нему домен pythondigest.ru (inetava, vaal особенно). Он теперь наш как
минимум на два с половиной года. Спасибо огромное owlman за предоставленную иллюстрацию.

Обсуждение. Похоже что последнее время очень часто всплывает тема о пакетах модулей и управлении ими. Как думаете грянет ли революция на эту тему? Может кто-то предложит очень удобный инструмент, который заменит pip и PyPI, или возродится Anaconda? А как вы на своем предприятии организуете работу с пакетами? Какие критерии для вас важны в пакетном менеджере?

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

Построение модели SARIMA с помощью Python+R

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

Введение


Добрый день, уважаемые читатели.
После написания предыдущего поста про анализ временных рядов на Python, я решил исправить замечания, которые были указаны в комментариях, но при их исправлении я столкнулся с рядом проблем, например при построении сезонной модели ARIMA, т.к. подобной функции а пакете statsmodels я не нашел. В итоге я решил использовать для этого функции из R, а поиски привели меня к библиотеке rpy2 которая позволяетиспользовать функции из библиотек упомянутого языка.
У многих может возникнуть вопрос «зачем это нужно?», ведь проще просто взять R и выполнить всю работу в нем. Я полность согласен с этим утверждением, но как мне кажется, если данные требуют предварительной обработки, то ее проще произвести на Python, а возможности R использовать при необходимости именно для анализа.
Кроме этого, будет показано как интегрировать результаты выдачи работы функции R в IPython Notebook.
Читать дальше →