• Асинхронный Bitcoin RPC клиент на python

    Star

    Для работы с Bitcoin RPC на python’е есть библиотека Python-BitcoinRPC.

    Но недавно мне понадобилось обратиться к API из приложения на tornado. Указанная библиотека работает в синхронном, т.е. блокирующем режиме. Для торнадо было бы намного лучше использовать асинхронную версию. Готовой найти не удалось, поэтому написал свой форк - асинхронный, который использует торнадовский AsyncHTTPClient: https://github.com/st4lk/python-bitcoinrpc-tornado.

    Коментарии Читать далее
  • Tornado: пример веб приложения

    Star

    Tornado: пример веб приложения

    Tornado - асинхронный веб фреймворк для python’а. Вначале я приведу краткий перечень плюсов и минусов tornado, а потом расскажу о типовом веб проекте с использованием этого инструмента.

    Коментарии Читать далее
  • Django проект: с нуля до работающего сервера

    В этом посте хочу описать свой опыт создания и запуска django проекта на VPS-хостинге.

    Разделим задачу на этапы:

    1. Создание django-проекта
    2. Настройка деплоя
    3. Настройка сервера (установка нужных библиотек)
    4. Деплой проекта
    Коментарии Читать далее
  • Настройки логов для django

    Рассмотрим дефолтные настройки логов в django и попробуем их сделать максимально удобными.

    Вот что есть в settings.py после команды django-admin.py startproject project_name (django 1.5):

    Коментарии Читать далее
  • Python logging на каждый день

    В процессе написания программы, скрипта, часто бывает нужно вывести какую-либо отладочную информацию или сообщить о каком-то событии. Известно, что для этих целей есть встроенный модуль logging. Однако обычно у меня бывает так: времени в обрез, а все эти настройки логов (handlers, loggers, formatters и пр.) никак не могу запомнить, и на скорую руку вставляю просто print. Потом, если скрипт используется часто или его надо отдать заказчику - хочется чтобы все эти сообщения записывались в файл для последующего анализа. И приходится все переделывать с использованием logging. Так вот, чтобы не держать в голове все настройки логирования, пишу этот пост с необходимыми для работы параметрами.

    Коментарии Читать далее
  • Кеширование queryset.count в django

    Кеширование queryset.count в django

    Как-то обнаружил, что у меня идут несколько одинаковых запросов вида SELECT COUNT(*) .... Оказалось (да, для меня это было новостью :) ), что метод queryset.count() в джанго кешируется по особому. Но лучше начать рассказ издалека.

    Коментарии Читать далее
  • Форматирование unicode строк

    Вы знали, что если одно из значений строкового выражения с оператором % - unicode, то вся результирующая строка будет тоже unicode?

    >>> "Hello, %s" % u"Alex"
    u'Hello, Alex'
    >>> "Hello, %s" % u"Алексей"
    u'Hello, \u0410\u043b\u0435\u043a\u0441\u0435\u0439'
    
    Коментарии Читать далее
  • Парсинг url'а, содержащего unicode параметры, используя urlparse.parse_qs

    Задача: получить словарь параметров URL’a. Например, имеем адрес:

    http://example.com/?key=value&a=b
    

    и нужно получить такой словарь:

    {'key': ['value'], 'a': ['b']}
    

    Тут значения являются списками, т.к. у одного ключа может быть несколько значений:

    In: http://example.com/?key=value&a=b&a=c
    Out: {'key': ['value'], 'a': ['b', 'c']}
    
    Коментарии Читать далее
  • Оптимизация админки django

    Django admin site optimisation

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

    В этом посте я рассмотрю некоторые способы уменьшения количества запросов из админки к БД при использовании __unicode__, содержащего поля связанного объекта (ForeignKey). Думаю, глядя на примеры станет понятнее.

    Коментарии Читать далее
  • Функции с изменяемыми значениями по умолчанию в python'e

    Python mutable default arguments

    В python’е значения функции по умолчанию создаются в момент выполнения инструкции def, а не при каждом вызове функции. Если значение - неизменяемый объект (например строка, целое число, кортеж), то никаких подводных камней здесь нет. А вот если объект изменяемый (например список), то есть возможность попасть в ловушку. Вот пример:

    def foo(l=[]):
        l.append('x')
        return l
    

    Казалось бы, при каждом вызове foo() будет возвращаться список [‘x’]. Но:

    Коментарии Читать далее
  • Многоязычный сайт на django без редиректов

    Star

    Начиная с django 1.4, можно задать префикс для url для каждого включенного языка. К примеру, мы хотим сайт, который будет иметь русскую и английскую версию.

    Для этого добавляем в settings.py:

    Коментарии Читать далее
  • Скрипт для скачивания музыки вконтакте

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

    Беглый поиск соответствующего скрипта на python’е не дал результов. В статье на хабре ссылка не работает. Решил написать свой велосипед, он доступен здесь.

    Запуск (нужен установленный python интерпретатор):

    python vkcom_audio_download.py
    

    Проверял на python 2.6 и 2.7. Никаких дополнительных библиотек не требуется.

    Коментарии Читать далее
  • Sublime text и github gists

    Sublime text и github gists

    В Sublime text есть огромное количество полезных инструментов, помогающих быстро писать код. Пока я изучил лишь небольшую их часть, в том числе пытаюсь привыкнуть к Vintage mode (управление курсором в стиле vim). Но сейчас хочу рассказать о другом - об интеграции github gists с sublime text. Если вы не знаете, github gists позволяет сохранять скрипты, снипеты в виде отдельного файла, чтобы не создавать для этого целый репозиторий. При этом поддерживаются многие функции репозитория - версии, возможность форка.

    Коментарии Читать далее
  • MobileESP: Скрипт определения мобильного устройства посетителя

    Скрипт полезен, если вы хотите показывать разные версии сайта для обычных компьютеров и мобильных устройств. Большое количество методов для определения вида девайса. Доступен на разных языках программирования, включая python. Собственно порт на python был написан мной по просьбе freelance заказчика.

    Коментарии Читать далее
  • Отладка django проекта с помощью встроенного python отладчика pdb

    Я использую sublime-text в качестве редактора python кода. В нем нет встроенного отладчика, поэтому для отладки django проектов я в основном делал так:

    print var_name
    

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

    Это можно сделать с помощью встроенного python отладчика pdb:

    import pdb; pdb.set_trace()
    
    Коментарии Читать далее
  • Облачный сервис Openshift

    Облачный сервис Openshift

    Я знаю немного хостингов с бесплатным тарифом и с поддержкой python. Это Google App Engine и Alwaysdata. И вот недавно узнал про замечательный проект Openshift от RedHat, на котором и работает этот блог. Для начала небольшой обзор упомянутых хостингов.

    Коментарии Читать далее
  • Мессенджер афоризмов

    Мессенджер афоризмов

    У меня есть интересный проект, которым хотел бы поделиться. Идея создать его возникла во время изучения Java. Прочел я несколько книжек, сделал маленькие программки-задания и захотелось сделать нечто большее.

    Коментарии Читать далее

Atom feed