Обновить
1024K+

Python *

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

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

Поле множественного выбора с автодополнением в Django

Время на прочтение7 мин
Охват и читатели23K
Привет, хабр.
В прошлой своей статье я описал технологию создания кастомного поля для ввода тегов в Django. Сейчас я бы хотел поделиться готовым и более-менее универсальным решением, реализующим поле множественного выбора с автодополнением по AJAX. Отличие этого поля от описанного в предыдущей статье в том, что оно позволяет только выбирать элементы из справочника, но не создавать новые. За front-end часть будет отвечать замечательный jQuery-плагин Select2. Решение будет оформлено в виде отдельного приложения Django.
Всех заинтересованных прошу под кат

Простой способ управления удалёнными устройствами

Время на прочтение4 мин
Охват и читатели23K
Что хотелось:

  • при завершении задачи в jenkins выводить уведомление на компьютере и как дополнение — вывести его на физический дисплей, подключенный к arduino;
  • интерфейс, который можно открыть на телефоне или планшете, для управления проигрывателем музыки на компьютере и видеоплеером на raspberry pi;
  • интерфейс, доступный снаружи локальной сети, для вывода значения с датчиков, установленных на arduino.

Что получилось:

  • клиент, запускаемый на устройстве, с декларацией методов на python;
  • RESTful api для запуска «методов»(картинка справа выведена через него);
  • «панели управления» с web-интерфейсом;
  • сервис для управления устройствами, методами и панелями.

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

Сервер отчетов на django

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

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

Вначале наш отдел делал отчеты,
— Принимая задачи по outlook
— Составляя sql-запрос
— Отправляя результаты заказчику в xls
— В лучшем случае, сохраняя sql-код куда-то в папку (а иногда и не сохраняя)

Но это было скучно и неинтересно. Так появилось простейшее приложение на PHP,
в котором каждый отчет был представлен в виде php-файла с одним классом, имеющим единственный (помимо конструктора) метод show()

В таком виде, система прожила 5,5 лет, за которые мной и еще одним человеком было написано более 500 различных отчетов.
В процессе появился опыт и стало понятно, что многое (если не все) сделано не так, да и PHP уже не устраивал.

Сервер отчетов был переписан на django, где была «админка» и код приложения уже не правился.
В процессе работы снова накопилось несколько мыслей,
в итоге сервер был снова переписан.

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

Это рабочий инструмент, который вы можете (если захотите) использовать в работе,
который нам использовать просто нравится.

Итак, поехали

Взламываем шифры с Python

Время на прочтение1 мин
Охват и читатели53K
Опубликованное неделю назад издание «Взламываем секретные шифры с Python» (Hacking Secret Ciphers with Python) — это учебник по Python для новичков. Авторы разумно рассудили, что учиться программированию нужно на конкретных практических задачах. А что может быть интереснее, чем взлом зашифрованных сообщений?

Книга включает в себя исходный код нескольких шифров и программы для взлома этих шифров. В числе программ на Python — шифр Цезаря, шифр перестановки, шифр простой замены, мультипликативный и аффинный шифры, шифр Виженера и программы для взлома каждого из них. В последней главе рассматривается современный шифр RSA и криптография с открытым ключом.

Книга лежит в открытом доступе, её можно бесплатно скачать в формате pdf (зеркало).
Читать дальше →

DevConf::Python() 14 июня в Москве — приезжает автор книги «Porting to Python 3»

Время на прочтение1 мин
Охват и читатели3.9K
Не пропустите «питонячью» секцию Devconf 2013

imagePrehistoric Python: Patterns Past their Prime
Lennart Regebro — created his first website in 1994, and has been
working full time with open source web development since 2001. He is
the author of the book «Porting to Python 3».

Tulip — новый стандарт на асинхронный код
Андрей Светлов — использует Python с 2000 года.
Занимается разработкой языка и стандартной библиотеки как Python Core Developer.
Участвует в создании tulip.

UI нового поколения с Leap Motion и Python'ом
Павел Коломиец. Занимается разработкой веб-проектов с 2003-го года.
С 2010-го руководит разработкой игр в компании Insollo.
Любит Python3 (!), zeromq, redis и другие прогрессивные технологии.
Читать дальше →

Собственное поле формы в Django

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

Привет, хабр!
Я очень большой фанат фреймворка Django и все свои проекты пишу исключительно на нем. Сегодня я расскажу о том, как расширить стандартную библиотеку полей формы собственным оригинальным решением. Задача статьи не в том чтобы предложить готовое решение, а в том, чтобы осветить технологию создания кастомных полей.
Небольшое отступление. Однажды я корпел над созданием базы знаний для компании, в которой в то время работал. База представляла собой набор статей, помеченных тегами. К элементу ввода тегов предъявлялись следующие требования:
  • Множественный ввод
  • Автодополнение вводимого тега
  • Теги могут содержать пробелы (состоять из нескольких слов)
  • Возможность создать новый тег, а не выбрать из списка

После недолгих поисков, я нашел jQuery-плагин Tag-It!, который полностью удовлетворял требованиям к виджету. Осталось только прикрутить это поле к Django.
Что из этого получилось, можно увидеть под катом

pymorphy2

Время на прочтение16 мин
Охват и читатели90K
В далеком 2009 году на хабре уже была статья "Кузявые ли бутявки.." про pymorphy — морфологический анализатор для русского языка на Python (штуковину, которая умеет склонять слова, сообщать информацию о части речи, падеже и т.д.)

В 2012м я начал потихоньку делать pymorphy2 (github, bitbucket) — думаю, самое время представить эту библиотеку тут: pymorphy2 может работать в сотни раз быстрее, чем pymorphy (втч без использования C/C++ расширений) и при этом требовать меньше памяти; там лучше словари, лучше качество разбора, лучше поддержка буквы ё, проще установка и более «честный» API. Из негатива — не все возможности pymorphy сейчас реализованы в pymorphy2.

Эта статья о том, как pymorphy2 создавался (иногда с довольно скучными техническими подробностями), и сколько глупостей я при этом наделал; если хочется просто все попробовать, то можно почитать документацию.

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

AppFog и Django. С чего начать?

Время на прочтение4 мин
Охват и читатели20K
Доброго времени суток, уважаемые хабровчане! Недавно я заинтересовался Python и, в частности, веб-фреймворком Django. После ознакомления с основными возможностями захотелось найти бесплатный хостинг с поддержкой Django. Каюсь, в тот момент напрочь забыл про GAE, но, почитав вчера про оный, понял, что выбор получился ничуть не хуже. Итак, встречайте, AppFog! (осторожно, под катом картинки!)
Читать дальше →

Легко настраиваемый python daemon

Время на прочтение2 мин
Охват и читатели62K
В какой-то момент мне потребовалось демонизировать некоторое действие на python. В сети валялась куча примеров подобной деятельности разной степени собранности. Так как в дальнейшем предполагалось использовать код демонизации в дальнейшей деятельности я решил разнести на разные части настройки и собственно демона.
В итоге файлов получилось три:
  • Родительские классы — с небольшим изменением классы взятые из интернет статей
  • Классы настройки — реакция на сигналы, реакция на команды и набор статических настроек для запуска
  • Скрипт запуска — собирает первые два в собственно демона


Дальше я попробую описать логику работы всех трех.
Читать дальше →

Заметки для построения эффективных Django-ORM запросов в нагруженных проектах

Время на прочтение11 мин
Охват и читатели62K
Написано, т.к. возник очередной холивар в комментариях на тему SQL vs ORM в High-Load Project (HL)

Преамбула


В заметке Вы сможете найти, местами, банальные вещи. Большая часть из них доступна в документации, но человек современный часто любит хватать все поверхностно. Да и у многих просто не было возможности опробовать себя в HL проектах.
Читая статью, помните:
  • Никогда нельзя реализовать HL-проект на основе только одной манипуляции с ORM
  • Никогда не складывайте сложные вещи на плечи БД. Она нужна Вам чтобы хранить инфу, а не считать факториалы!
  • Если вы не можете реализовать интересующую Вас идею простыми средствами ORM — не используйте ORM для прямого решения задачи. И тем более не лезте в более низкий уровень, костыли сломаете. Найдите более элегантное решение.
  • Извините за издевательски-юмористический тон статьи. По другому скучно :)
  • Вся информация взята по мотивам Django версии 1.3.4
  • Будьте проще!

И-и-и да, в статье будут показаны ошибки понимания ORM, с которыми я столкнулся за три с лишним года работы с Django.
Читать дальше →

Django ORM, gevent и грабли в зелени

Время на прочтение6 мин
Охват и читатели17K
Очень многие выбирают Django за его простоту. Код на Django прост и лаконичен, мы меньше думаем о костылях и больше о бизнес-логике.

Gevent тоже выбирают из-за того, что он простой, очень шустрый и не несёт за собой callback hell.

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

Не ещё одна статья о функциональном программировании

Время на прочтение6 мин
Охват и читатели20K
Вот уже несколько лет функциональное программирование набирает популярность. Это, конечно, не значит, что люди забрасывают свои старые языки и ООП и массово переходят на Haskell, Lisp или Erlang. Нет. Функциональная парадигма проникает в наш код через лазейки мультипарадигменных языков, а вышеупомянутые языки чаще служат флагами в этом наступлении, чем используются непосредственно.

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

История оптимизации alpha_composite в Pillow 2.0

Время на прочтение7 мин
Охват и читатели6.2K
Недавно вышла вторая версия питоновской библиотеки для работы с изображениями Pillow. Как многие знают, это форк хорошо известной библиотеки PIL, которая, несмотря на свой солидный возраст, до недавнего времени оставалась самым вменяемым способом работы с изображениями в Питоне. Авторы Pillow наконец-то решили не только поддерживать старый код, но и добавлять новые возможности. И одной из этих возможностей стала функция alpha_composite().

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

С тех пор я уже смог написать для своих нужд более оптимальную реализацию, чем приведена в конце той статьи. И оказалось, что эта реализация быстрее alpha_composite() из новой версии Pillow, написанной на Си. Конечно, мне это польстило, но я все-таки решил попытаться улучшить реализацию из Pillow.
Читать дальше →

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

Выпущена новая версия Python Tools for Visual Studio 2.0

Время на прочтение1 мин
Охват и читатели18K
Для загрузки доступна новая версия инструментов разработки на языке Python в среде Visual Studio. Инструменты Python Tools for Visual Studio распространяются с открытым кодом и предлагают следующие возможности: поддержка CPython, IronPython, функциональный редактор кода, Intellisense, отладка, профилирование, HPC-кластеры, IPython, Django и облачные решения с клиентскими библиотеками для Windows, Linux и MacOS.



Python Tools for Visual Studio 2.0 Alpha содержит важные нововведения, такие как: усовершенствованные анализ кода и intellisense для Python, virtualEnviroment for Python, удаленная отладка из Linux/OSX, функция Debug as a Script (для быстрой отладки).
ниже эти функции описаны в виде коротких видео

Новый дизайн Python.org

Время на прочтение1 мин
Охват и читатели14K
На проходящем в Санта Кларе(США) PyCon 2013 была представлена бета версия нового сайта Python.orgpreview.python.org.
Новая адаптивная версия сайта выглядит приятней и современней, навигация по сайту стала более удобной и понятной.

Последний раз дизайн сайта был обновлен в 2006 году. Хотя если смотреть глубже, структура сайта не менялась с конца 90-х.

Новый сайт сделан на платформе Django 1.5 (Python 3.3)

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

Grab — новый интерфейс для работы с DOM-деревом HTML-документа

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

Исторический экскурс


Ранее я уже писал на хабре о Grab — фреймворке для написания парсеров сайтов: раз, два, три, четыре. В двух словах, Grab это удобная оболочка поверх двух библиотек: pycurl для работы с сетью и lxml для разбора HTML-документов.
Читать дальше →

Настройка Vim для работы с Python и Django

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


Vim — уникальный по своей гибкости редактор, который при должной настройке может едва ли не идеально удовлетворять все пожелания работающего с ним. Правда эта настройка может продолжаться месяцы, а то и годы, что является и достоинством, и недостатком vim’а. Существует множество статей и туториалов по использованию Vim для разработки на Python и Django, надеюсь мне удастся рассказать что-то новое. В своей статье я постараюсь по минимуму упоминать плагины общего назначения, вроде NERDTree или surround.vim и опишу несколько более специализированных расширений и настроек, которые существенно упростили процесс работы на Python.
Читать дальше →

Щелевая съёмка: Ловля птичек с помощью питона

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


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

Препроцессинг данных и анализ моделей

Время на прочтение8 мин
Охват и читатели33K
Всем привет. В прошлом посте я рассказывал про некоторые базовые методы классификации. Сегодня, в силу специфики последней домашки, пост будет не столько про сами методы, сколько про обработку данных и анализ полученных моделей.

Задача


Данные были предоставлены факультетом статистики Мюнхенского университета. Вот здесь можно взять сам датасет, а также само описание данных (названия полей даны на немецком). В данных собраны заявки на предоставление кредита, где каждая заявка описывается 20 переменными. Помимо этого, каждой заявке соответствует, выдали ли заявителю кредит, или нет. Вот здесь можно подробно посмотреть, что какая из переменных означает.

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


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

Про отток разработчиков из свободных проектов, преподавание Python в качестве первого языка и другие темы

Время на прочтение2 мин
Охват и читатели33K
Долго думал над заголовком, в итоге в него попали пара интересных вопросов из докладов прошедшей недавно, уже восьмой по счету, конференции «Свободное программное обеспечение в высшей школе».

Мероприятие это традиционно проводится зимой в уютном здании Университета города Переславля-Залесского Ярославской области, в несколько как бы семейной обстановке, а потому совсем широкой общественности не известное. А меж тем, каждый год бывают весьма любопытные доклады, и еще более интересные докладчики. Четыре из них хотелось бы выделить в этом топике, хотя внимания заслуживают все. По традиции тематика докладов (особенно в первый день) выходит за рамки тематики конференции, и тем интереснее их слушать.

1) «СПО. Кризис среднего возраста?» (Хотел вынести в заголовок топика один из слайдов доклада — «Куда уехал цирк?», но воздержался)
В преддверии 30-летнего юбилея движения GNU, известный аналитик Антолий Якушин, человек широчайших познаний в области программного обеспечения, подводит некоторые итоги и, в частности, рассказывает: куда направлен отток разработчиков свободных проектов, так ли это страшно, почему в MIT сейчас так мало свободных проектов, почему Столлман не является социалистом и прочие животрепещущие вопросы



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