Обновить
607.21

Python *

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

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

Интеграция MS Excel и Python

Время на прочтение6 мин
Количество просмотров378K
Добрый день, уважаемые читатели.

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

Как мы делали небольшую охранную систему на RPi. Часть 1

Время на прочтение6 мин
Количество просмотров42K
Здравствуйте Хабражители!

Думаю многие из вас слышали о Raspberry Pi, более того, думаю довольно большое количество из вас видели его вживую. В начале 2014 года я решил, что пора мне тоже заказать себе парочку RPi и сделать на них что-то интересное. Так как я являюсь iOS разработчиком, я загорелся идеей обязательно прицепить к этому проекту iOS приложение. Ну и т.к. RPi довольно хорошо умеет работать со сторонним железом, я решил что сделаю небольшую охранную систему для личного пользования.



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

Приглашаем на Moscow Django Meetup 31 июля

Время на прочтение1 мин
Количество просмотров4.4K

Если вы ещё не уехали в отпуск (или уже вернулись), то хотим пригласить вас 31 июля на очередной, уже 21-й по счёту, Moscow Django Meetup. Как обычно, формат встречи подразумевает небольшую программу выступлений. Всего будет два доклада:
  1. Использование сервис-ориентированной архитектуры (SOA) для построения сложных веб-проектов.
  2. О вреде априорныхъ формъ познанiя въ примененiи къ содержанiю веб-страниц на прiмерахъ Django и Яндекс.Метрики.
Читать дальше →

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

Время на прочтение3 мин
Количество просмотров6.5K
Очередной выпуск новостей из мира Python. Мы продолжаем собирать для вас интересную информацию о любимом языке программирования и близлежащих технологиях. За иллюстрацию к посту, как и раньше, благодарим owlman75, а так же alrusdi за рождение идеи дайджестов и за то, что я по прежнему могу публиковать эти дайджесты для вас. Возможно, вы спросите, а что же нового в мире python произошло? А мы вам ответим, произошло много интересных событий, таких как, релизы SQLAlchemy 0.8.7, SQLAlchemy 0.9.7, FeinCMS 1.10.0, SVGCompress 0.51, Fiona 1.1.6, django-signup 0.5.0, pythonwhois 2.4.3. Увидели свет интересные статьи: Django-orm в поисках LEFT JOIN, Пишем простой чат на Flask, Современный Торнадо: распределённый хостинг картинок в 30 строк кода и другие, а так же стало доступно видео с EuroPython 2014.
Перейти к дайджесту

Современный торнадо, часть 2: блокирующие операции

Время на прочтение5 мин
Количество просмотров16K
Улучшаем наш распределённый хостинг картинок. В этой части мы поговорим о конфигурировании приложения и подключим защиту от csrf. Затем, на примере создания миниатюр картинок, научимся работать с блокирующими задачами, запускать корутины параллельно и обрабатывать возникающие в них исключения.
Читать дальше →

Практика программирования игр на python: жизнь

Время на прочтение4 мин
Количество просмотров69K


Недавно стало известно, что python признан самым популярным языком для обучения студентов в США. Я, будучи студентом Технопарка, решил не отставать от тренда, поподробнее изучить этот модный язык и заодно написать несколько постов. Для разминки я решил реализовать Conway's Game of Life. Это довольно-таки забавная «игра», в которой мы можем в некотором смысле моделировать развитие группы организмов в окружающей среде. Правила такие: делим пространство на клетки, которые могут быть либо живыми, либо пустыми. А затем на каждом шаге состояние клетки обновляем в зависимости от числа живых соседей. Например, слишком много — клетка умирает, а если нет — рождается. Можно от души экспериментировать с конфигурациями, получаются разные странные вещи, иногда корабли. Корабли (gliders) — отдельная тема, это такие группы клеток, которые изменяются и вместе с тем путешествуют в пространстве. Кроме кораблей могут образовываться и другие группы клеток с хитрыми свойствами, но о них — в Википедии.
Читать дальше →

Мега-Учебник Flask, Часть 9: Пагинация

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

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



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



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

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

Браузерный робот на Sikuli IDE для игры MusicWars

Время на прочтение4 мин
Количество просмотров10K
игрушка на прокачку

Предыстория:

Как-то передо мной стала задача: «хочу прокачать персонажа, но из-за работы не хватает времени». Cразу решил: «я же инженер, сейчас решим задачу».
Music Wars — это новая браузерная MMORPG где вам предстоит в жесткой борьбе отстаивать свои музыкальные предпочтения. Яркая графика, нестандартная боевая система привлекут не только отъявленых меломанов, но и всех поклонников компьютерных игр.

После изучения игрушки MusicWars выяснилось, что она, как и многие браузере игры сделаны на Flash что не даёт полной возможности манипуляции. Выход есть, использовать скрипты ориентирована на программирование графического интерфейса. Я решил использовать sikuli благодаря статье «Подробнее о Sikuli в автоматизации тестирования» от Gulsom.
Читать дальше →

Мега-Учебник Flask, Часть 8: Подписчики, контакты и друзья

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

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



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


Наш маленький микроблог потихоньку растёт, и сегодня мы затронем темы, которые необходимы для законченного приложения.

Сегодня мы немного поработаем с нашей базой данных.
Читать дальше →

Современный Торнадо: распределённый хостинг картинок в 30 строк кода

Время на прочтение3 мин
Количество просмотров36K
Впервые слышите о tornado? Слышали, но боялись асинхронности? Смотрели на него более полугода назад? Тогда я посвящаю эту статью вам.
Там будут: gen.coroutines, обработчики, роутинг, шаблоны, motor, gridfs

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

Время на прочтение3 мин
Количество просмотров11K
Очередной выпуск новостей из мира Python. Мы продолжаем собирать для вас интересную информацию о любимом языке программирования и близлежащих технологиях. Возможно, вы спросите, а что же нового в мире python произошло? А мы вам ответим, произошло много интересных событий, таких как, релизы Tornado 4.0, Widgy CMS, PyMonad, Omega: новый Web Framework Python, pycomedi 0.8. Вышли в свет интересные статьи, эффективная многопоточность в Python, разворачивание developer окружения Django на Windows 7, обоснование для применения python, 1 урок из цикла Python для Android, SQLite — компактный, быстрый и отзывчивый — выбери все три пункта! Подробнее обо всем этом можно прочитать под катом.
Перейти к дайджесту

Измеряем температуру: TEMPer + Python + Windows

Время на прочтение5 мин
Количество просмотров24K
Всем привет.

На написание поста сподвигла, казалось бы, тривиальная задача — мониторинг температуры в серверной. На эту тему существует довольно много различных решений (например, повесить видеокамеру и градусник перед ней), но большинство из крутых систем мониторинга, автоматического управления кондиционерами и т.п. стоят приличных денег. Отличие же предложенного варианта — бюджет. Около 250 российских рублей и немножко мозгов (бесценно).
Читать дальше →

Эффективная многопоточность в Python

Время на прочтение7 мин
Количество просмотров78K
Хочу поделиться простым рецептом, как можно эффективно выполнять большое число http-запросов и других задач ввода-вывода из обычного Питона. Самое правильное, что можно было бы сделать — использовать асинхронные фреймворки вроде Торнадо или gevent. Но иногда этот вариант не подходит, потому что встроить event loop в уже существующий проект проблематично.

В моем случае уже существовало Django-приложение, из которого примерно раз в месяц нужно было выгрузить немного очень мелких файлов на AWS s3. Шло время, количество файлов стало приближаться к 50 тысячам, и выгружать их по очереди стало утомительным. Как известно, s3 не поддерживает множественное обновление за один PUT-запрос, а установленная опытным путем максимальная скорость запросов с сервера ec2 в том же датацентре не превышает 17 в секунду (что очень не мало, кстати). Таким образом, время обновления для 50 тысяч файлов стало приближаться к одному часу.

Питонисты с детства знают, что от использования потоков (тредов операционной системы) нет никакого толка из-за глобального лока интерпретатора. Но немногие догадываются, что как и любой лок, этот время от времени освобождается. В частности, это происходит при операциях ввода-вывода, в том числе и сетевых. А значит, потоки можно использовать для распараллеливания http-запросов — пока один поток ожидает ответа, другой спокойно обрабатывает результат предыдущего или готовит следующий.

Получается, всего-то нужен пул потоков, который будет выполнять запросы. К счастью, такой пул уже написан. Начиная с версии 3.2 для унификации всей асинхронной работы в Питоне появилась библиотека concurrent.futures. Для второй версии Питона есть бекпорт под именем futures. Код до безобразия прост:

from concurrent.futures import ThreadPoolExecutor

with ThreadPoolExecutor(concurrency) as executor:
    for _ in executor.map(upload, queryset):
        pass

Здесь concurrency — число рабочих потоков, upload — функция, выполняющую саму задачу, queryset — итератор объектов, которые по одному будут передаваться в задачу. Уже этот код при concurrency в 150 смог пропихнуть на сервера Амазона ≈450 запросов в секунду.
Читать дальше →

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

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

Время на прочтение3 мин
Количество просмотров14K
Очередной выпуск новостей из мира Python. Мы продолжаем собирать для вас интересную информацию о любимом языке программирования и близлежащих технологиях.
Перейти к дайджесту

Как управлять облачными ресурсами с помощью Python? Поднимаем кластеры по запросу через несколько строк кода

Время на прочтение3 мин
Количество просмотров7.1K
Библиотека Simple Azure позволяет управлять облачными ресурсами, в том числе созданием, управлением и удалением виртуальных машин в облачном окружении. Вы можете использовать данную библиотеку для любых целей: от развертывания песочницы для целей Dev&Test до размещения и управления решениями в промышленной эксплуатации.

С помощью Simple Azure вы можете легко поднять ipython notebook и кластеры ipython в облачном окружении, развернуть готовые виртуальные машины на выбор из сотен представленных в каталоге VMDepot.

Ниже представлено краткое введение и примеры использования Simple Azure для простых задач и задачи развертывания кластера IPython в облаке.
Читать дальше →

Python вышел на 1-е место для обучения программированию в университетах США

Время на прочтение1 мин
Количество просмотров42K
По состоянию на июль 2014 года Python вышел на 1-е место в программах начального обучения программированию в университетах США, пишет журнал Communication of the ACM.



27 из 39 крупнейших факультетов программирования (69%) в университетах предлагают курсы обучения на Python по программам CS0 или CS1 (introductionary courses). Ситуация изменилась в последние три года. В частности, недавно на Python перевели вводные курсы программирования Массачусетский технологический институт и Калифорнийский университет в Беркли.
Читать дальше →

Python-digest #31. Новости, интересные проекты, статьи и интервью [8 июня 2014 — 6 июля 2014] Возрождение

Время на прочтение4 мин
Количество просмотров10K
Очередной дайджест с новостями из мира Python, за месяц опубликовали немало релизов и статей. Произошли изменения и в дайджесте, все подробности под катом.

Перейти к дайджесту

Десятимиллионный скрипт резервного копирования

Время на прочтение10 мин
Количество просмотров47K
image
Это статья-мануал по скрипту резервного копирования, написанному мной. Скрипт написан на python для Linux. Кому интересно прошу под хабракат.
Читать дальше →

Быстрые аналоги популярных библиотек для Python

Время на прочтение2 мин
Количество просмотров23K
Так получилось, что несколько месяцев я пытался серьёзно использовать в качестве сервера, железку на ARM процессоре.
Об этом я писал тут и тут.
Производительности мне часто не хватало, и я находил и искал различные альтернативы, часто активно использующие C/C++. Парочка библиотек под катом.

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

Немного тестов производительности сетевых фреймворков

Время на прочтение6 мин
Количество просмотров23K
Привет Хабр! Пару месяцев назад я захотел провести тестирование производительности некоторых сетевых фреймворков, c целью понять насколько большая разбежка между ними. Надо ли использовать Node.js там, где хотелось бы Python с Gevent или нужен Ruby с его EventMachine.

image

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

Вклад авторов