Обновить
1024K+

Python *

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

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

Создание плагина для Intellij Platform (IntelliJ IDEA, RubyMine, WebStorm, PhpStorm, PyCharm and AppCode)

Время на прочтение5 мин
Охват и читатели19K
Привет, Хабр!
В данном топике я расскажу как создать простой плагин для IntelliJ IDEA и PyCharm. Так как все IDE содержат одинаковый интерфейс для работы с плагинами, то модификация его для других систем не требует значительных усилий (подробнее), в отличии от процесса непосредственной разработки.

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

Плагины пишутся на Java, UI создается на SWING. Документация для разработки плагинов состоит всего лишь из нескольких страниц и горстки примеров. На просторах интернета данная тематика не отражена совсем. Единственное, что слегка помогает это наличие исходных кодов у некоторых уже созданных плагинов.

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


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

Django Dash 2012

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

В эту субботу в 00:00 по UTC состоится открытие регистрации Django Dash 2012: это один из самых интересных и многообещающих конкурсов для Django-программистов.

В нём проходит 48 часовое соревнование в написании качественного и полезного сервиса/приложения для фреймворка Django. Это международное ежегодное состязание будет проходить уже в 5й раз.

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

Некоторые особенности Django, о которых хорошо знать заранее

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

Django — это прекрасно. В самом деле: если писать о том, как много хорошего появилось в мире с приходом и развитием Django, то можно писать очень долго, и всё равно не рассказать обо всём. Лично я на данный момент постоянно использую Django уже четыре с половиной года, и всё это время Django становилась всё лучше и лучше.

И всё же в какой-то момент понимаешь, что в документации есть не всё. И тут варианты решения задач появляются разные — можно открыть исходники Django, можно посмотреть, что пишут по этому поводу на Stackoverflow и в других местах (часто очень помогают списки рассылки, а также официальный Trac), но ещё лучше — всё это вместе.

Давайте рассмотрим всего несколько примеров того, что может понадобиться в повседневной работе, но чего (пока что) не прочтёшь в официальной документации. Впрочем, если вы считаете, что нужно добавить ещё что-то — пишите, может быть, это действительно так.
Читать дальше →

Интерактивные уроки Python на Codecademy

Время на прочтение1 мин
Охват и читатели68K
Школа программирования Codecademy открылась в августе прошлого года: за это время миллионы человек изучили основы JavaScript, HTML, CSS и jQuery. Кураторы проекта решили, что пришло время расширить программу обучения с фронтенда на серверную часть — и запустили уроки по Python.

Часть 1: Синтаксис Python (16 упражнений)
  1. Переменные и типы данных
  2. Пробелы и выражения
  3. Комментарии
  4. Математические действия
  5. Проверка (практические задания)
Проект: калькулятор чаевых (5 упражнений)

Уроки проходят в традиционном интерактивном режиме. Пользователь читает инструкции, вводит команды в окно терминала — и сразу видит реакцию системы.
Читать дальше →

Программный захват с вебкамеры

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

Flask-Admin

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

Хочу представить проект, над которым работал в последнее время: Flask-Admin. Если в двух словах, это расширение для фреймворка Flask, которое позволяет быстро создавать административный интерфейс в стиле Django.
Читать дальше →

Красивая печать в PDF из Django

Время на прочтение6 мин
Охват и читатели22K
Т.к. эта статья — результат нескольких лет экспериментов, то букв будет много. Но — возможно — она сэкономит кому-то многие месяцы езды велосипедом по граблям, которые и описаны.
В общем случае речь идет даже не о Django, а о печати регламентированных документов из python с использованием шаблонизаторов.
Кому дальше читать лень — сразу скажу — проблема до конца не решена. Но более-менее рабочий вариант вырисовался.
Читать дальше →

Запускаем PyBrain на Python 3

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

Хочу поведать историю о портировании на python3 библиотеки PyBrain, описанной недавно на хабре.
Подробности под катом.
Читать дальше →

Кросс-вмный (CLR/JVM) код на Python

Время на прочтение4 мин
Охват и читатели4.1K
Это узкоспециализированная короткая заметка про то, как я запинывал write once, run everywhere тесты для библиотеки, портированной с C# на Java, при помощи Python.

Смысл в следующем: есть большая, толстая и красивая библиотека, которая была по коммерческим соображениям портирована с C# на Java. API осталось почти одинаковым, naming conventions естественно сменились при переходе на другой язык. Нам нужно было написать толстую пачку тестов, проверяющих, что клон библиотеки работает идентично оригиналу (тесты на регрессии, иными словами). Для этого сравнивались результаты работы кода библиотек (некие бинарники и xml-метаданные). Тесты были нетривиальные, их было много, и что самое неприятное — они постоянно дописывались с одного конца командой из четырех человек. Некоторое время я старательно портировал их на Java, затем плюнул и предложил команде писать тесты на языке, который сразу можно было бы выполнять на CLR (со старой библиотекой) и на JVM (с клоном). Оказалось, они и сами уже некоторое время думали про Python,
и вот как это получилось.

PyBrain работаем с нейронными сетями на Python

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

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

PyBrain — одна из лучших Python библиотек для изучения и реализации большого количества разнообразных алгоритмов связанных с нейронными сетями. Являет собой удачный пример совмещения компактного синтаксиса Python с хорошей реализацией большого набора различных алгоритмов из области машинного интеллекта.

Предназначен для:

  • Исследователей — предоставляет единообразную среду для реализации различных алгоритмов, избавляя от потребности в использовании десятков различных библиотек. Позволяет сосредоточится на самом алгоритме а не особенностях его реализации.
  • Студентов — с использованием PyBrain удобно реализовать домашнее задание, курсовой проект или вычисления в дипломной работе. Гибкость архитектуры позволяет удобно реализовывать разнообразные сложные методы, структуры и топологии.
  • Лекторов — обучение методам Machine Learning было одной из основных целей при создании библиотеки. Авторы будут рады, если результаты их труда помогут в подготовке грамотных студентов и специалистов.
  • Разработчиков — проект Open Source, поэтому новым разработчикам всегда рады.

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

Django своими руками часть 3: Роуты, отладка, middleware, bottle, beaker

Время на прочтение7 мин
Охват и читатели7.2K
Часть 1.
Часть 2.

Введение.


В этой статье речь пойдет о тонкостях реализации wsgi приложения. Мы не будем рассматривать написание сервера приложений с нуля, поскольку есть масса микрофреймворков которые это уже делают, не говоря о крупных. Для этих целей был выбран bottle. В основном за его минималистичность. Также мы поговорим о роутах, статике, и сессиях которыми заведовать будет beaker.
Читать дальше →

Прочие варианты использования оператора else

Время на прочтение3 мин
Охват и читатели28K
Всем нам хорошо известен способ использования ключевого слова else совместно с if:

if x > 0: 
    print 'positive' 
elif x < 0: 
    print 'negative' 
else: 
    print 'zero' 


Однако в Python’е существует и несколько других, неизвестных большинству программистов, применений else.

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

Queryfeed — RSS-ленты из Твиттера и Фейсбука

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

Вступление

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

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

Итак, милости прошу на Queryfeed.
Читать дальше →

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

Откуда тормоза в ORM?

Время на прочтение8 мин
Охват и читатели11K
Анализ некоторых python ORM на непроизводительные расходы

Введение


При разработке приложения на python django, я столкнулся с его неадекватным торможением.
После нескольких попыток улучшить довольно сложные алгоритмы расчетов, я обратил внимание, что существенные улучшения этих алгоритмов приводили к весьма скромному результату — из чего я сделал вывод, что узкое место вовсе не в алгоритмах.

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

Префиксные деревья в Python

Время на прочтение6 мин
Охват и читатели15K
Доделал на днях питонью библиотеку datrie, реализующую префиксное дерево (см. википедию или хабр), спешу поделиться.

Если вкратце, то можно считать, что datrie.Trie — это замена стандартному питоньему dict, которая при определенных условиях (ключи — строки) занимает меньше памяти, имеет сравнимую скорость получения отдельного элемента и поддерживает дополнительные операции (получение всех префиксов данной строки, получение всех строк, начинающихся с данной строки и др.), которые работают примерно так же быстро, как и «словарные» операции.

Работает под Python 2.6-3.3, поддерживает юникод, лицензия LGPL.

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

Реализация кеша с ограничением по числу элементов на Python — решения: простое и посложнее

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

Формулировка задачи


Предположим, что у нас есть необходимость иметь некий сервис, который бы отдавал нам по запросу какую-либо информацию, и отдавал как можно быстрее. Что для этого делает любой нормальный человек? Налаживает кэширование наиболее часто запрашиваемых данных. При этом, если хоть немного задуматься о перспективе, то размеры кэша необходимо ограничивать.
Для простоты реализации в случае Питона сделаем ограничение по числу элементов в кэше (здесь предполагается, что данные более-менее однородны по размеру, а также учитывается специфика, что определить объём памяти, реально занимаемый каким-либо Питоновским объектом — весьма нетривиальная задача, кому интересно, пусть пожалует сюда), а для того, чтобы кэш содержал как можно более часто используемую информацию — построим его по принципу least recently used, т.е. чем более давно запрашивали кусочек информации, тем больше у него шансов «вылететь» из кэша.

О двух решениях (попроще и посложнее) я и расскажу в этой статье.
Читать дальше →

Космическая Змея в Магазине или Как Мы «CheeseShop» Ставили

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

Ниже приведена увлекательная(?) история о том как наша организация решала проблему т.н. «деплоймента как у людей». Наш основной язык разработки Python, с примесями разных интересных (и не очень) пакетов (Django, Bottle, Flask, PIL, ZMQ, и т.д.).

Начнём с краткого описания одного из наших приложений:

  • Django 1.4
  • MySQL
  • Celery для крон-имитации и поддержки вспомогательных функций в фоновом режиме
  • Daemon-процесс, основанный на Django management command


Всё это дело работает под связкой gUnicorn и nginx, на ОС CentOS 5.8.

Детали, как принято, ниже.

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

Geeknote — консольный клиент для Evernote

Время на прочтение4 мин
Охват и читатели7.2K
Приветствую, коллеги!

Хочу рассказать вам о нашем проекте — Geeknote. Это консольный клиент для Evernote. Проект Open Source и исходные коды доступны на Github. Geeknote позволяет работать с Evernote из командной строки. Реализованы все основные функции Evernote — создание/удаление заметок, создание блокнотов и тегов, поиск, а так же редактирование через обычный текстовый редактор заметок в формате markdown. То есть можно использовать Evernote в bash скриптах, cron, любых приложениях, где нельзя использовать Evernote SDK. Расскажу подробнее про проект.
Читать дальше →

Мысли о Python 3

Время на прочтение16 мин
Охват и читатели81K
Предлагаю вашему вниманю пересказ замечательной статьи автора Jinja2, Werkzeug и Flask, соавтора Sphinx и Pygments Армина Ронахера. Я получил огромное удовольствие разбирая исходные коды его творений и очень многое для себя почерпнул. Армин пишет отличные фреймворки, и как никто другой может разъяснить, чем чреват переход с Python 2 на Python 3 и почему его не так легко осуществить.

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