Обновить
1024K+

Python *

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

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

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

Время на прочтение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 мин
Охват и читатели799K
На 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.5K
Вдохновлённый недавним постом про текучие интерфейсы на PHP, я сразу задумался как можно реализовать подобное на питоне проще и красивее (на питоне всегда всё проще и красивее). Предлагаю несколько способов в порядке поступления мыслей.



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

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

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

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

Пишем консольный переводчик для *nix на Python

Время на прочтение4 мин
Охват и читатели17K
Здравствуйте. Наверняка Вам встречались незнакомые английские слова или фразы, и Вам постоянно приходилось лезть в браузер, открывать сайт с онлайн переводчиком и переводить, при этом думая как хорошо было бы, если это было реализовано бы в виде софта под *nix.
Читать дальше →

Doodle Jump на pygame

Время на прочтение2 мин
Охват и читатели29K
Добрый…
Хочу рассказать и показать вам свой опыт знакомства с библиотекой pygame — предположительно отличной библиотекой для реализации графичиских приложений (в большей степени игр-аркад) на языке python. Для примера была реализована (частично) игра Doodle Jump.
Поехали

Частный случай использования Sikuli для решения проблемы в Facebook

Время на прочтение3 мин
Охват и читатели6.4K
Некоторое время назад Facebook стал использовать решение основанное на NFS для хранения фотографий пользователей. Оно помогает справляться с напором в около 220 миллионов новых файлов занимающих 25TB каждую неделю и в часы пик раздающее более 550 тысяч изображений в секунду [1]. Максимальное количество файлов загружаемых в один альбом было увеличено с 60 до 200 на радость пользователям.

Наличие настроек приватности и то обстоятельство, что свободное место на Picasa благополучно было съедено шедеврами прошлых лет, подтолкнуло меня и некоторых знакомых к попытке использования Facebook в качестве фотохранилища.

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

Визуализация каталогов на Python средствами NetworkX

Время на прочтение5 мин
Охват и читатели18K
Листая на Хабре раздел Python наткнулся на интересную статью о библиотеке NetworkX. Впечатлившись красивыми графами, решил повысить свой python-скилл и покопаться в networkx.
image

Пролог


Первый вопрос — откуда взять данные для визуализации? Генерировать случайные не интересно, они и в комплекте модуля были. Тут вспомнилась Dos утилитка tree, выводящая каталоги файловой системы в виде дерева. Решено было написать красивый аналог на Python и нарисовать все в networkx с помощью matplotlib.
шоу продолжается

List Revolution. Нумерация списков начиная с единицы? Считайте, уже сделано! [UPD]

Время на прочтение2 мин
Охват и читатели16K
Недавно на просторах интернета наткнулся на вот это сообщение из меил-листа сообщества python:
Christopher King: Первый элемент в списке имеет индекс 0, второй имеет индекс 1, третий это 2, и так далее. Иногда это сбивает с толку новичков python и программирования в целом. Такая система нумерации была принята в то время, когда 1 бит все еще имел большое значение. Пришло время обновления. Имейте ввиду, что это предложение для четвертой версии, так-как из-за него не будет обратной совместимости. Я говорю о том, что мы должны сделать первый элемент с индексом 1, второй — с индексом 2 и т.д. Другие языки последуют за этим. Мы хотим сделать питон легким и читабельным, и в эпоху, когда нельзя получить что-то меньше килобайта через USB, мы должны сделать первое первым, второе вторым, а третье третим, как это и должно быть. Я даю этому "+1".
Guido van Rossum: Считайте, что это уже сделано.
Читать дальше →

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

Генерим PDF бочками

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

Предыстория


На хабре неоднократно упоминались различные инструменты и способы создания скриншотов WEB страниц.

Хочу поделиться собственным «велосипедом» для создания PDF на Python и QT, дополненным и улучшенным для централизованного использования несколькими проектами.

Изначально генерация запускалась из PHP скрипта, примерно так:

<?php
// локальный файл
exec('xvfb-run python2 html2pdf.py file:///tmp/in.html /tmp/out.pdf');
// или URL
exec('xvfb-run python2 html2pdf.py http://habrahabr.ru /tmp/habr.pdf');
?>

этого было достаточно и все было хорошо…
Читать дальше →

Отправка важных сообщений из ВКонтакте по электронной почте

Время на прочтение5 мин
Охват и читатели15K
Добрый день!
Наверняка многие сталкивались с ситуацией, что важная информация (новости, объявления и т.д.) публикуется ВКонтакте. Но во-первых, не всегда есть возможность туда попасть (вообще неприлично в рабочее время сидеть вконтакте!), во-вторых информацию приходится получать polling'ом, то есть постоянно обновляя страницу группы или что-нибудь аналогичное.
Отсюда родилась замечательная мысль — было бы удобно, чтобы важные уведомления приходили на почту. И на работе посмотреть можно и судорожно жать F5постоянно обновляться не нужно. Как оказалось, с помощью python'а можно легко справиться с такой задачей.
Читать дальше →

Реализация объектов-словарей, как в Javascript

Время на прочтение3 мин
Охват и читатели9.1K
Недавно, после длительного взаимодействия моего мозга с Javascript я вернулся к привычному для меня Python, и понял, что чего-то мне не хватает, а именно объектов как в Javascript, тех что хеш-таблицы, ага. Фууууу, может быть скажете вы и, возможно зря.
Читать дальше →

Демон для удаленного управления компьтером через e-mail

Время на прочтение5 мин
Охват и читатели6.1K
Здравствуй, Хабр!

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

SQLAlchemy для Django

Время на прочтение2 мин
Охват и читатели31K
image Я не люблю Django. Я не люблю Django ORM, Django templates, Django forms и еще множество вещей в Django. Но у Django есть определенное преимущество — многие используют Django, практически любой python-программист знаком с джанго. Поэтому приходится мириться с недостатками этого фреймворка, но никто не мешает облегчать себе жизнь, используя действительно хорошие python библиотеки, например SQLAlchemy.

Что в SQLAlchemy лучше чем в Django ORM? Это главный вопрос, который я слышу от Django guys1, и у меня есть на него ответ — SQLAlchemy может выразить любой SQL запрос (ну 80-90%), в отличие от Django ORM, в котором можно выразить только весьма простые вещи.

И в некоторых Django проектах возникает необходимость в сложных запросах, на которые стандартный ORM неспособен. Условно предположим, что в момент создания проекта считалось, что Django ORM вполне хватит. Для решения можно писать чистый SQL или воспользоваться SQLAlchemy. Я за второй подход, так как чистый SQL плохо поддается DRY-фикации.

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

Конкурентность в асинхронном приложении на примере twisted

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

Но на практике все выглядит немного по иному:
Читать дальше →

Easy linux management over twitter

Время на прочтение3 мин
Охват и читатели1.5K
Доброго времени суток, дорогие Хабраюзеры.

Этот пост навеян появлением статьи про Twitter бота и всяких свистелок-плясалок для него. Представляю вам свое видение api Твиттера. Добро пожаловать под кат.
Читать дальше →