Python и Git. Автоматическая проверка кода требованиям спецификации

Программирование 01.04.2012

Многие команды делают Code Review, другие больше сосредотачиваются над Design Review, а многие не делают и вовсе, но статья не о том зачем это нужно, а о том, как частично автоматизировать процесс Code Review. Для своих проектов я решил съэкономить немного времени и человеческих ресурсов, и использовать автоматизированную проверку кода проекта на соответствие PEP 8, а также качества кода (pyflakes) и качество сообщений в Git. Полноценный Code Review при этом делать всёравно нужно, но уже в меньших объемах, а иногда и вовсе можно им пренебречь.

Итак, для работы нам понадобится установить pep8, pyflakes, а также отредактировать на рабочих станциях разработчиков хуки для Git: «pre-commit» и «commit-msg».

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

Читать полностью »

Python и Django. Отладка при помощи PuDB

Программирование 24.03.2012

Этим отладчиком я пользуюсь недавно, где-то полгода, может чуть больше. До этого обходился (надо признаться мучался) с pdb, а также print'ами, logger'ом, debug_toolbar'ом и т.д. Главное отличие в том, что у PuDB есть графический интерфейс с подсветкой синтаксиса, панелями для вывода дополнительной информации, интеграцией с IPython, удобными хоткеями и т.д., всё это делает его незаменимым инструмент на каждый день!

Автор: Andreas Klöckner
Страница проекта на PyPI: http://pypi.python.org/pypi/pudb
Исходный код проекта на GitHub или в GitWeb автора
Текущая версия: 2012.1

Отладчик использует urwid для построения графического интерфейса и pygments для подсветки синтаксиса.

Читать полностью »

Обрабатываем LESS «на лету» с помощью Nginx и Node.js

Операционные системы, Программирование 04.03.2012

Сегодня начал использовать twitter-bootstrap и решил процессить less не на клиентской стороне, а средствами сервера, просто по приколу. Сразу же вспомнил про статью на хабре Серверный процессинг LESS файлов «на лету» своими руками и решил реализовать то, что там написано.

Принцип работы заключается в том, что все обращения к файлам «*.less» будут проксироваться через Nginx и преобразовываться на лету (можно и nginx-кеш прикрутить, если надо) в css средствами node.js.

Читать полностью »

jQuery. Написал плагин jquery-cleverfocus

Программирование, Проекты 01.03.2012

Зарелизил сегодня плагин для jQuery, который при вводе на сайте текста пользователем «в никуда» перехватывает это и по истечению лимита введенных символов выбрасывает собранные данные в нужный нам инпут и ставит на него фокус.

Плагин совместим с версией jQuery 1.7.1, так как тестировался только на нём.

А зачем вообще это?

Случай #1
Пользователь приходит на сайт, видит форму поиска, набирает искомое слово (при этом он чаще всего смотрит в клавиатуру), подняв голову он понимает что набирал текст «в никуда», сильно бесится, ставит фокус, вводит несколько символов, проверяет что у него получается набирать текст «куда надо» и со спокойной душой продолжает набирать искомое слово.

Тут вы скажете «Эй! надо ставить фокус после загрузки DOM!», ан нет, это тоже плохое решение, разберем второй кейс.

Случай #2
Пользователь приходит на сайт, ему не интересна форма поиска, он хочет поскроллить/полистать (Left/Right, Up/Down, PgUp/PgDown, Home/End и т.д.) страницу с помощью клавиатуры (пользователей, которые пользуются ноутбуками без использования мыши достаточно много), а так как у нас стоит фокус в форме поиска, то он снова обламывается.

Для решения этих вот двух кейсов и был создан плагин jquery-cleverfocus.

Читать полностью »

Python. Работаем с xls через xlwt/xlrd и python-uno

Программирование 28.02.2012

Понадобилось без потери данных и функциональности модифицировать xls документы, то есть мы имеем несколько листов в документе, на одном из листов есть фильтры, списки и прочие компоненты современного екселя.

Первое что приходит на ум — это старый-добрый Python Excel (xlwt/xlrd), попробуем реализовать модификацию ячейки с помощью этого инструмента, а потом перейдем к PyUNO.

Читать полностью »