Обновить
512K+

Python *

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

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

Централизованный сбор конфигураций с MikroTik'ов средствами Python

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

Зачем



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

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

Благо есть небольшой навык написания полезняшек на Python и фантазия.
Читать дальше →

Python на примере демона уведомления о новых коммитах Git

Время на прочтение4 мин
Охват и читатели27K
Работая в команде я люблю быть в курсе активности участников. Поэтому было решено написать демона наблюдающего за поступлением новых коммитов в репозиторий git’а. Так как я работаю в Ubuntu, то уведомление было реализовано встроенным способом — библиотекой libnotify.
Язык — Python!

image

В статье упоминается:
1. Демон на Python;
2. Логирование на Python;
3. Хранение конфигурационных файлов программ на Python;
4. Работа с командами ОС из скриптов Python;
5. Получения списка последних изменений из git’а;
6. Стандартные всплывающие уведомления Ubuntu.
Читать дальше →

Первые шаги в программировании на Python

Время на прочтение3 мин
Охват и читатели38K
Пару месяцев назад взялся я за изучение Python. Прочитав про используемые структуры, работу со строками, генераторы, основы ООП, размышлял какую полезную программу написать, что бы это все применить на реальной задаче.
По счастливому стечению обстоятельств ко мне обратились знакомые с просьбой скачать мультфильм «Чудеса на виражах».
Читать дальше →

Фреймворк для парсинга Grab:Spider

Время на прочтение4 мин
Охват и читатели30K
Я автор python библиотеки Grab, которая упрощает написание парсеров веб-сайтов. Я о ней писал вводную статью некоторое время назад на хабре. Недавно я решил вплотную занять парсингом, стал искать free-lance заказы по парсингу и мне понадобился инструмент для парсинга сайтов с большим количеством страниц.

Раньше я реализовывал мультипоточные парсеры с помощью python-тредов с помощью такой вот библиотечки. У threading-подхода есть плюсы и минусы. Плюс в том, что мы запускаем отдельный поток(thread) и делаем в нём, что хотим: можем делать последовательно несколько сетевых вызовов и всё это в пределах одного контекста — никуда не надо переключаться, что-то запоминать и вспоминать. Минус в том, что треды тормозят и жрут память.

Какие альтернативы?
Читать дальше →

Исследование производительности сервера SockJS

Время на прочтение4 мин
Охват и читатели14K
Доброе время суток!

Так уж сложилось, что я занимаюсь всякими разнообразными push технологиями с использованием Tornado. Чуть ранее описывал Tornadio2, серверную реализацию протокола socket.io поверх Tornado.

Теперь хочу представить похожий проект — sockjs-tornado.

Для тех кому не очень интересно, есть другая полезная информация: сравнительное нагрузочное тестирование PyPy 1.7 против CPython 2.6.6, sockjs-node и socket.io (оба на node.js 0.6.5). Все под катом :-)
Читать дальше →

Как в python снаружи проверить значения, переданные в функцию

Время на прочтение2 мин
Охват и читатели6.4K
Небольшое HowTo для начинающих python-программистов о том как извне проверить некоторые переданные в функцию значения. На самом деле мне это понадобилось в Django, но ничего специфичного для фреймворка в этом нет и…

UPD Лирическое отступление: Изначально тут я написал много глупостей в силу своего кривого понимания работы декораторов. Теперь решение гораздо более правильное и прямое. Более того я даже внятно могу его объяснить, за что огромная благодарность комментаторам.
Читать дальше →

Релиз PyCharm 2.0

Время на прочтение1 мин
Охват и читатели3.6K
Сегодня компания JetBrains представила релиз новой major версии PyCharm, интегрированной среды разработки для Python, Django и Google App Engine. Среди новых фич PyCharm 2.0 стоит отметить:
  • Поддержку двух новых языков шаблонов, Jinja2 и Mako
  • Поддержку Cython
  • Интеграцию с coverage.py для анализа code coverage
  • Поддержку CoffeeScript и встроенный отладчик для JavaScript
  • Переработанный интерфейс основного окна приложения, улучшенную интеграцию с платформами Mac OS X и Linux
Как и раньше, попробовать PyCharm можно бесплатно в течение 30 дней, а для open-source проектов есть возможность получить бесплатную лицензию. Скачивайте, пробуйте — будем рады вашему фидбэку.

Украшаем рабочий стол случайными обоями с GoodFon

Время на прочтение3 мин
Охват и читатели19K
Сидел я как-то вечером, делать было нечего, и я решил слегка разнообразить свой рабочий стол, написав небольшой скриптик, ставящий на него случайную картинку с GoodFon. Язык я выбрал просто — простой, скриптовый, мощный, а именно — несравненный Python.

Если хотите сделать себе и своему рабочему столу приятно — подробности под катом.
Читать дальше →

Работа с PySide

Время на прочтение9 мин
Охват и читатели62K
Этот пост участвует в конкурсе «Умные телефоны за умные посты»


В Сети имеется некоторое количество информации по проекту PySide, но русскоязычной не так много.

Данная статья является попыткой восполнить этот пробел. Далее будет описана сборка проекта, запуск приложений на эмуляторе, пример создания собственной привязки. Некоторые ключевые особенности PySide будут показаны на примерах.
Читать дальше →

Gray Hat Python — Immunity Debugger

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

Intro


Рассмотрев создание и использования отладчика на чистом Python’е в виде PyDbg, пришло время изучить Immunity Debugger, который состоит из полноценного пользовательского интерфейса и наимощнейшей Python-библиотекой, на сегодняшний день, для разработки эксплойтов, обнаружения уязвимостей и анализа вредоносного кода. Выпущенный в 2007 году, Immunity Debugger имеет хорошее сочетание возможностей как динамической отладки, так и статического анализа. Помимо этого он имеет полностью настраиваемый графический интерфейс, реализованный на чистом Питоне. В начале этой главы мы кратко познакомимся с отладчиком Immunity Debugger и его пользовательским интерфейсом. Затем начнем постепенное углубление в разработку эксплойта и некоторых методов, для автоматического обхода анти-отладочных приемов, применяемых в вредоносном ПО. Давайте начнем с загрузки Immunity Debugger и его запуска.

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

ep.io — хостинг для python web-приложений

Время на прочтение3 мин
Охват и читатели32K
Сразу хочу сказать что не имею никакого отношения к компании, которая создала этот сервис.

Вступление


До того, как я опробовал хостинг от ep.io, я несколько раз встречал упоминание о нем в интернете, в основном на буржуйских сайтах. Отзывы были только положительные, гики радовались и хвалили сервис. В итоге я все-таки решил его попробовать и недолгая переписка с поддержкой сервиса дала свои результаты — мне выдали инвайт.

Для чего?


Как написано в документации хостинг предназначен для Django, Pylons, Pyramid, Flask, Trac или любых других WSGI-совместимых приложений. Я пока успел попробовать побаловаться с небольшими приложениями на фреймворке bottle.
Читать дальше →

Используем «Яндекс Музыку» вне браузера

Время на прочтение2 мин
Охват и читатели124K
Недавно мне захотелось поработать с «Яндекс Музыкой» не через браузер. Как выяснилось, у них нет открытого api, и дело оказалось не тривиальным. Да и ничего готового найти не удалось.

Те, кому лень читать, могут сразу перейти к результату — python-yamusic.
Читать дальше →

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

Введение в Tkinter

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

Всем доброго времени суток!

Tkinter – это кроссплатформенная библиотека для разработки графического интерфейса на языке Python (начиная с Python 3.0 переименована в tkinter). Tkinter расшифровывается как Tk interface, и является интерфейсом к Tcl/Tk.
Tkinter входит в стандартный дистрибутив Python.
Читать дальше →

TornadIO2 = Tornado + Socket.IO

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

Что такое Socket.IO?


Это библиотека предназначенная для организации постоянного соединения между сервером и браузером.

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

Браузер умеет веб сокеты? Отлично, будем использовать их. Браузер умеет AJAX? Будем использовать long polling. Это древний Internet Explorer? Будем использовать html file object. Ну и так далее.

О socket.io уже писали на Хабре. «Родной» сервер Socket.IO написан на node.js.
Читать дальше →

Проксируем RSS поток при помощи Python

Время на прочтение5 мин
Охват и читатели9K
Одним из безусловно удобных способов получать новости, статьи и т.п. с различных сайтов — является RSS. Однако с каждым годом число лент неуклонно возрастает, кол-во фидов увеличивается, а времени на разгребание всего этого хозяйства становится все меньше и меньше. Очевидно — нужно как-то автоматически фильтровать статьи. Этим мы сегодня и займемся.
Читать дальше →

Скрипт поиска проектов на odesk.com

Время на прочтение2 мин
Охват и читатели7.1K
Хочу поделиться полезным скриптом для поиска проектов на odesk.com Честно говоря, я не понял, как на odesk.com задать вопрос с OR оператором, чтобы за один присест найти все интерсующие меня проекты, поэтому я искал в несколько подходов, что не очень удобно. Этот скрипт решает проблему. Я поставил его на крон, добавил закладку на локальный файл в браузер и просто смотрю её периодически.

Код скрипта под катом:
Читать дальше →

Как работает yield

Время на прочтение6 мин
Охват и читатели803K
На StackOverflow часто задают вопросы, подробно освещённые в документации. Ценность их в том, что на некоторые из них кто-нибудь даёт ответ, обладающий гораздо большей степенью ясности и наглядности, чем может себе позволить документация. Этот — один из них.

Вот исходный вопрос:
Как используется ключевое слово yield в Python? Что оно делает?

Например, я пытаюсь понять этот код (**):
def _get_child_candidates(self, distance, min_dist, max_dist):
    if self._leftchild and distance - max_dist < self._median:
        yield self._leftchild
    if self._rightchild and distance + max_dist >= self._median:
        yield self._rightchild

Вызывается он так:
result, candidates = list(), [self]
while candidates:
    node = candidates.pop()
    distance = node._get_dist(obj)
    if distance <= max_dist and distance >= min_dist:
        result.extend(node._values)
        candidates.extend(node._get_child_candidates(distance, min_dist, max_dist))
        return result


Что происходит при вызове метода _get_child_candidates? Возвращается список, какой-то элемент? Вызывается ли он снова? Когда последующие вызовы прекращаются?

** Код принадлежит Jochen Schulz (jrschulz), который написал отличную Python-библиотеку для метрических пространств. Вот ссылка на исходники: http://well-adjusted.de/~jrschulz/mspace/

Подробный и обстоятельный ответ

Организация текучих (fluent) интерфейсов в Python

Время на прочтение4 мин
Охват и читатели6.6K
Вдохновлённый недавним постом про текучие интерфейсы на PHP, я сразу задумался как можно реализовать подобное на питоне проще и красивее (на питоне всегда всё проще и красивее). Предлагаю несколько способов в порядке поступления мыслей.



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

Поиск в строке. Реализация в CPython

Время на прочтение4 мин
Охват и читатели8.6K
Довольно давно на одной из презентаций выпускников одной из так называемых ИТ-академий докладчика спросили о деталях реализации поиска подстроки в строке толи в Java, толи в .Net. Выпускник конечно не смог ничего вразумительного ответить, а я отложил вопрос в и без того длинный todo-лист.

Прошло время, Python стал для меня актуальней enterprise платформ, так что вашему вниманию разбор алгоритма поиска подстроки в Python.
Читать дальше →