Обновить
840.28

Python *

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

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

Скачивание музыкальной коллекции vk.com

Время на прочтение7 мин
Охват и читатели58K
Привет, хабрахабр!

Решил я как-то скачать свою музыкальную коллекцию из vkontakte (а это без малого 1000 песен). Связываться с vk.api не хотелось, поэтому решил использовать python + библиотека request. Что из этого получилось — под катом!
Читать дальше →

PyGA: использование трекинга Google Analytics в бекенде, написанном на Python

Время на прочтение2 мин
Охват и читатели6.7K
Для недавно сделанного мной в рамках изучения Flask микросервиса shares.datagreed.ru мне захотелось отслеживать переходы по разным адресам API. Как это сделать, если Google Analytics интегрируется в страницу посредством JS?

Вот и я тоже не знал. Поиск привел меня к официальной библиотеке на PHP для мобильных сайтов, на которых не предполагалось (когда-то) использовать JavaScript.

Дальнейшие мои изыскания вылились в небольшой модуль для питона, который позволяет использовать трекинг страниц (ивенты, увы, не поддерживаются) Google Analytics со стороны сервера. Штатно в библиотеку влючены классы для Django и Flask. Класс для Flask в данный момент развернут и обкатывается у меня на shares.datagreed.ru, а класс для Django я пока что не тестировал, так что багрепорты приветствуются.

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

Производительность в Python. Легкий путь

Время на прочтение2 мин
Охват и читатели76K
Всегда знал, что одно из достоинств Python — возможность переписать самые тормозные куски кода на Си и увеличить быстродействие программы до недостижимых интерпретируемым языкам высот. Но сам ни разу не пробовал, т.к. считал что это слишком сложно. После прочтения этой статьи больше так не считаю.

Программисты знакомые с ctypes врядли найдут тут что-то интересное, новичков же прошу под кат.
Читать дальше →

Питон в коробке – venv в python 3.3

Время на прочтение4 мин
Охват и читатели169K
Наверняка, большинство из тех, кто разрабатывает или деплоит Python приложения, использует виртуальные окружения. В частности через virtualenv, написанный Ian Bicking.

Идея оказалась так хороша и распространена, что нечто похожее теперь присутствует в Python 3.3 из коробки в виде модуля venv. Он почти такой же, как virtualenv, только немного лучше.
Читать дальше →

Абстрагирование потока управления

Время на прочтение4 мин
Охват и читатели15K
Любой программист, даже если не смотрит на свою работу в таком ключе, постоянно занимается построением абстракций. Чаще всего мы абстрагируем вычисления (пишем функции) или поведение (процедуры и классы), но кроме этих двух случаев в нашей работе возникает множество повторяющихся шаблонов особенно при обработке ошибок, управлении ресурсами, написании стандартных обработчиков и оптимизаций.

Что значит абстрагирование потока управления или «control flow», как выражаются наши заморские друзья? В случае, когда никто не выпендривается, потоком занимаются управляющие конструкции. Иногда этих управляющих конструкций недостаточно и мы дописываем свои, абстрагирующие нужное нам поведение программы. Это просто в языках вроде lisp, ruby или perl, но и в других языках это возможно, например, с помощью функций высшего порядка.
Читать дальше →

Интернационализация локального проекта django

Время на прочтение4 мин
Охват и читатели9.9K
Хорошо, когда при разработке проекта под django, разработчики проекта изначально озаботились его интернационализацией.

Минимальными усилиями, проект адаптируется под различные языки. Django имеет богатый набор инструментов, достаточный для почти автоматического добавления новых языков, исправления и добавления переводов отдельных участков текста и так далее.

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

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

MongoDb for developers. Неделя 1

Время на прочтение7 мин
Охват и читатели47K
Вечер добрый, хабр. На прошлой неделе стартовал курс «MongoDb for developers» от 10gen, о котором уже писали на хабре. Если вы смотрели уроки, то можете смело проходить мимо. Остальным — добро пожаловать.

В этой статье будет изложен основной материал первой недели обучения. Если аудитория проявит интерес — то подобные посты будут выходить в конце каждой недели.

Мы вкратце рассмотрим, что представляет собой MongoDB, сравним разницу в структурах данных между монго и реляционными базами для простого веб-приложения, поиграемся с шеллом, и немножко покодим на пхп и питоне.

Зачем эта статья? Предвижу подобный вопрос. Не все успели записаться на курсы, не у всех есть достаточно свободного времени, не у всех хорошо обстоят дела с восприятием устной английской речи. Ну и для гуглящих подобный материал не помешает.
Читать дальше →

Мониторинг сервисов Windows средствами PowerShell и Python

Время на прочтение7 мин
Охват и читатели26K
image
Предыстория:
Сам я работаю в техотделе одной брокерской компании в Торонто, Канаде. Так же у нас есть еще один офис в Калгари. Как-то после планового установления Windows обновлений на единственном доменном контроллере в удаленном офисе не запустился W32Time сервис, который отвечает за синхронизацию времени с внешним источником. Таким образом в течение около недели время на сервере сбилось приблизительно на 20 секунд. Наши рабочие станции на тот момент времени по умолчанию получали время с контроллера. Сами понимаете, что случилось. В торгах время очень важно, разница в секунды может решить многое. Первыми расхождение во времени, к сожалению, заметили наши брокеры. Наш отдел техподдержки, состоящий по сути из 3 человек за это распекли. Надо было срочно что-то делать. Решением было применение групповой политики, которая отсылала все машины к внутреннему NTP серверу, работающему на CentOS. Еще были проблемы с DC Barracuda Agent, сервисом, отвечающим за соединение контроллеров домена с нашим Веб фильтром, и еще парочка сервисов причиняла нам порой беспокойство. Тем не менее решили что-то придумать, чтобы следить за пару сервисами. Я немного погуглил и понял, что есть много решений, в основном коммерчиских для данной проблемы, но так как я хотел научиться какому-нибудь скриптовому языку, то вызвался написать скрипт на Питоне с помощью нашего местного линукс-гуру. В последствие это переросло в скрипт, который проверяет все сервисы, сравнивая их наличие и состояние со списком желаемых сервисов, которые к сожалению надо делать вручную отдельно для каждой машины.

Решение:
Читать дальше →

Массовая запись с камер на выборах

Время на прочтение4 мин
Охват и читатели19K
Внимание. Хабр — не для политики. Пожалуйста, воздержитесь от обсуждения оной в комментариях.
В предверии первых выборов в России, в ходе которых все участки были оснащены веб-камерами, многие выражали желание записать для себя видео с камеры. Для этого предлагались разнообразные решения, от записи FRAPSом, до использования ffmpeg и так далее. Самым удачным, на мой взгляд, была утилита Qwertovsky, выложенная тут
В данном небольшом топике я хотел бы предложить свое решение и вкратце напомнить, как вообще работает вся эта система, благо что завтра состоятся парламентские выборы на братской Украине, за ходом которых любой желающий может наблюдать на сайте vybory2012.gov.ua.

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

Как просто подключить любой датчик OPC сервера к проекту narodmon.ru

Время на прочтение4 мин
Охват и читатели29K
Здравствуйте.

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

Руководство: Pyramid для Людей — часть 4

Время на прочтение7 мин
Охват и читатели5.7K
Часть 3: юнит- и функциональное тестирование, Hello World в Chameleon

Шаг 04: Каркас представлений

Хватит с нас “hello world”, теперь приступим к работе над Projector'ом. UX-человек обычно имеет ряд представлений, которые нуждаются в прототипировании и отображении в URL-структуру.

Мы хотим сделать этот процесс быстрым и продуктивным.

В этом шаге мы копируем структуру карты сайта такую:
/
/about.html
/acme
/people
… и сделаем ряд URL'ов которые это осуществят. По ходу, мы создаем больше представлений и больше шаблонов.

Цели
  • Введение в UX рабочий процесс, для примера, используя произвольные данные
Что ожидается
  • “Стандартные” и “именованные” представления
  • Больше ZPT конструкций
Шаги

$ cd ../../creatingux; mkdir step04; cd step04
Читать дальше →

Руководство: Pyramid для Людей — часть 3

Время на прочтение6 мин
Охват и читатели8K
Часть 2: концепция, установка и простое «hello world» приложение

Шаг 02: юнит- и функциональное тестирование

Безусловно, тестирование помогает обеспечить будущее качество и облегчает рефакторинг. И это же, конечно, делает разработку более быстрой, в особенности при использовании умных редакторов и IDE. Перезапуск вашего приложения и щёлканье в вашем браузере это грустьпичаль(drag).

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

Цели
  • Покрыть код юнит-тестами
  • Создать функциональные тесты на ответы
Технические требования
  • Написать юнит-тест в Pyramid-стиле
  • Использовать WebTest, чтобы включить функциональный тест, в модуль тестов
  • Использовать nose и nosetests просмотрщик, для запуска тестов

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

Руководство: Pyramid для Людей — часть 2

Время на прочтение4 мин
Охват и читатели26K
Часть 1 — предисловие и содержание.

Сценарий


Pyramid превосходен в построении веб-приложений несколькими способами. Также как и Pylons, до его появления, Pyramid может строить традиционные маршрут-ориентированные(routes-oriented) RDBMS приложения, используя SQLAlchemy. В отличии от других, основанных на RDBMS, веб-фреймворков, Pyramid к тому же очень хорошо оснащен, чтобы легко строить контент-ориентированные приложения, знакомые из мира Plone и Zope.

Поскольку это пособие для Plone конференции, мы выбрали сценарий представления, который показывает сильные стороны Pyramid в контент-ориентированных приложениях. Если точнее — иерархическая система управления проектами, где вы можете ставить задачи командам.

По ходу изучения этого пособия, мы будем создавать приложение под названием Projector.
Читать дальше →

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

Руководство: Pyramid для Людей — оглавление

Время на прочтение4 мин
Охват и читатели20K
Данный перевод, по-традиции, имеет вольное содержание. Ненужные, по мнению автора, части убраны, другие дополнены. Огромная просьба тем, кто заметил сильные искажения в тексте, которые меняют смысл повествования — писать в личку, поправлю. UPD: перевод начат давно, но сейчас фокус деятельности смещен в другую область — возможно кому-то и эта переведенная, небольшая часть, послужит хорошим стартом в изучении новой для себя технологии.

Pyramid появился как быстрый, современный, web-фреймворк, для Pylons и Zope сообществ. Когда вам нужно только веб-приложение, а не полноценная CMS, Pyramid дает вам возможность сохранить большинство похожих на Plone технологий, или собрать проект на скорую руку.

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

На подходе к основной части


Методичка собрана, по основным разделам. Начинается с создания UI\UX(прим.перевод.UI — англ. user interface; UX — User eXperience) для чайников. Каждая основная область состоит из последовательности шагов, в которых есть очень небольшое количество определений. Рабочий код понемногу накапливается.

Как описано в сценарии, простое приложение это система управления проектом, для большого количества компаний, которые ведут множество проектов. Мы выбрали traversal и ZODB как начальную архитектуру, для этого пособия.
Читать дальше →

Определение доминирующих цветов: Python и метод k-средних

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

Assorium

На Хабре публиковалось несколько статей с алгоритмами и скриптами для выбора доминирующих цветов на изображении: 1, 2, 3. В комментариях к тем статьям можно найти ссылки ещё на десяток подобных программ и сервисов. Но нет предела совершенству — и почему бы не рассмотреть способ, который кажется самым оптимальным? Речь идёт об использовании кластеризации методом k-средних (k-means).
Читать дальше →

Python: надежная защита от потери запятой в вертикальном списке строк

Время на прочтение3 мин
Охват и читатели29K
Списки строк в программах встречаются часто. Для удобства чтения их не менее часто форматируют вертикально, по одной строке. И есть в такой конструкции уязвимость — если при изменении списка потерять запятую между элементами, то многие языки просто склеют строки слева и справа от пропущенной запятой — в результате получится валидный с точки зрения языка список, в котором на один элемент меньше чем ожидается и один элемент имеет некорректное значение. Есть много способов профилактики этой проблемы, но недавно на stackoverflow мне показали настолько простой и надежный способ, что я просто не могу им не поделиться.

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

Решение проблемы оперативного ресайза изображений

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

1. В теге изображения указываем другие размеры:
<img src='/path/to/image.jpg' width: 100px height:150px>
Очевидно, что в этом случае грузится слишком много не нужного трафика. Не у всех же скоростной интернет, да и глупо это как-то.
Читать дальше →

Самая короткая запись асинхронных вызовов в tornado v2, или патчим AST

Время на прочтение9 мин
Охват и читатели4.6K
Меня очень заинтересовала статья Самая короткая запись асинхронных вызовов в tornado или патчим байткод в декораторе, не столько с практической точки зрения, сколько с точки зрения реализации.
Всё-таки модификация байткода в рантайме это слишком опасная и ненадежная операция. И уж наверняка не поддерживаемая альтернативными интерпретаторами Python.

Попробуем исправить этот недостаток способом, который для этого предназначен куда больше и который применяется для схожих целей во многих других языках (я точно встречал в Lisp или Erlang). Этот способ — модификация Абстрактного синтаксического дерева (AST) программы.
Читать дальше →

Смс оповещение для студентов со странички вконтакте

Время на прочтение7 мин
Охват и читатели34K
Здравствуйте уважаемые хабровчане!
Хотелось бы рассказать от том как я делал смс оповещение для своего факультета.
Я учусь на первом курсе ФСПО ИТМО. У нас на факультете есть так называемая диспетчерская служба которая занимается оповещением студентов об изменении в расписании, в интернете это осуществляется через страничку в контакте и твиттер.
Однажды произошёл небольшой скандал по поводу того что пол-группы не явилось на занятия из-за того, что не успели отследить изменение в расписании. В тот день у меня появилась идея создать смс оповещение с той самой Vk странички.
Да, я знаю, что для это есть специализированные сервисы, но это слишком просто…

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

Как GPS трекер стал логером или простой и дешевый способ организовать мониторинг физических параметров удаленных объектов

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

Задача


Как часто бывает задачи не вписываются в стандартные возможности доступных инструментов. Так случилось и в этот раз. Далее обрисую задачу.

Имеется несколько удаленных объектов на просторах страны (Украина) электрифицированных, но не имеющих простых технических возможностей для подключения интернета. Объекты, как правило, расположены так что про 3G или WiMax заикаться не приходится. Доступен только GPRS. Нужно иметь возможность мониторить температуру в нескольких помещениях этих объектов. Причем желательно если не в реальном времени то с минимальной задержкой. Усложняется все еще тем что объекты хоть и недвижимость, но возможны ситуации что будет переезд. Поэтому капитальные методы установки оборудования отпадают.

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


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