Посты с тегом python
dimzon 05.03.2011 05:36

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

Данный скрипт решает достаточно специфичную задачу. Я у себя в квартире активно использую сетевые медиаплееры класса ASUS O!Play и его собратьев от IconBit. Эти плееры по NFS монтируют шару, расположенную на NAS (lubuntu 10.10), который стоит себе в кладовке. К сожалению, интерфейс этих плееров очень примитивен, а коллекция у меня большая. Посему для удобства навигации я при помощи скриптов создаю специальную структуру каталогов (спасибо символическим ссылкам).
Полностью.
+ 3 -
1
simakazi 02.03.2011 17:01

PythonПишем первый плазмоид на Python.

В этом посте я постараюсь максимально доступно описать весь процесс создания простого плазмоида на Python.
Я постараюсь показать, что написание своих виджетов - это просто, быстро и полезно!
Для понимания сути происходящего неплохо бы предварительно познать сам Python, поставить KDE ;-), PyKDE, PyQt и поддержку питоновского скриптового движка для плазмы (пакет plasma-scriptengine-python в deb-based дистрибутивах).
Наш первый плазмоид будет выполнять простую функцию: показывать карму пользователя welinux.ru, имя которого было введено в соответствующее поле.
Полностью.
+ 19 -
14
LeXuS 02.03.2011 00:08

CodingPythonic

Итак, что же это значит, когда кто-либо говорит, что foo выглядит как pythonic? Что значит, когда кто-либо смотрит в наш код и говорит, что он unpythonic? Давайте попробуем разобраться.

В Python-сообществе существует неологизм pythonic, который можно трактовать по разному, но в общем случае он характеризует стиль кода. Поэтому утверждение, что какой-либо код является pythonic, равносильно утверждению, что он написан в соответствии с идиома Python’a. Аналогично, такое утверждение в отношении интерфейса, или какой-либо функциональности, означает, что он (она) согласуется с идиомами Python’a и хорошо вписывается в экосистему.
Полностью.
+ 3 -
1
wiz 01.03.2011 00:16

PythonСистема автоматической сборки

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

Я уже некоторое время ковыряю TDD и задача постоянного контроля качества для меня становится всё актуальней. Особенно при пополнении команды новыми разработчиками.

Сначала я запускал тесты руками: save, switch, $ nosetests. Потом к тестам добавились проверялки качества кода и пришлось всё засунуть в скрипт:
1
2
3
4
pyflakes *.py
pep8 *.py
pylint *.py
nosetests


Скрипт запускать каждый раз ужасно лениво, поэтому небольшая оболочка на inotifywait стала запускать тесты и проверки после каждого сохранения:
1
2
3
4
while true; do
    inotifywait -e modify project/*.py -qq; clear
    ./do_tests
done


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

Кроме того довольно тяжело следить за коллегами, которые тоже могут что-то сделать и забыть прогнать тесты, в результате в репозитории лежит битый код, не прошедший code review и при очередном pull может внезапно начаться clusterfuck.

И тут очень вовремя kmmbvnr@lj выпустил скринкаст, в котором он демонстрировал интеграцию тестирования для django-проектов с сабжем Jenkins (бывш. Hudson). Посмотрел я на все эти красоты, графики и отчёты и тоже захотел чтобы всё само пело и играло. Но у него django-jenkins, как и следует из названия, встраивается в джангу и генерит отчёты используя хитрую систему. Мой проект до джанги не дорос и скорее всего не дорастёт — это достаточно тривиальное WSGI-приложение, которое правда стремительно разрастается. Пришлось поднимать всё с нуля.

Воскресенье я на это убил, но в целом всё довольно прямолинейно и теперь у меня есть симпатичные отчёты:



Что внутри?
Полностью.
+ 11 -
0
07.02.2011 15:16

sagodПишем Indicator Applet для GNOME

В статье описывается процесс создания апплета-индикатора для GNOME.

=amazing applet

Известно, что большинство апплетов для GNOME написаны на C, чем достигается некоторое преемущество в скорости работы перед программами на Perl/Python.
С другой стороны, писать на C сложнее, поэтому работать будем с Python.
Полностью.
+ 21 -
6
wiz 06.02.2011 15:21

PythonВеб-сервер своими руками. Часть 4 — раздача файлов

Переходим к более практической части. Хардкодом побаловались, далее по плану идёт раздача файлов.
Полностью.
+ 12 -
13
wiz 02.02.2011 16:59

PythonВеб-сервер своими руками. Часть 3 — фиксим фичи, добавляем баги

В предыдущей части мы сделали инстурменты для тестирования серверного кода без участия сокетов. Но это получился самый тривиальный из видов тестов ­— Smoke Test. Сервер запрос обработал, но что именно произошло остаётся загадкой.

Как мы помним из кода, липовое соединение содержит в себе буфер отправленного, в котором оказывается ответ сервера. Можно было бы его сравнить с эталонной строкой, но каждый раз её составлять неудобно и муторно. Поэтому неплохо было бы его распарсить.

Но один раз у нас уже кто-то что-то парсит, а именно — сервер, при получении запроса от клиента. Внимательно посмотрев на траффик можно обнаружить, что протокол практически симметричен. И клиент и сервер обмениваются «сообщениями», состоящими из одних и тех же элементов: строка запроса или ответа (формат одинаковый, немного отличается содержимое), заголовки (формат одинаковый) и тело (необязательное для клиента при GET и для сервера при всяких хитрых статусах).

В то же время, наш тестовый клиент уже содержит генератор запросов, преобразующий аргументы функции согласно протоколу.
Полностью.
+ 12 -
3
dini 02.02.2011 14:30

PythonСледим за народом

Как-то начальство поставило задачу узнать чем занимаются люди на рабочем месте и не сливают ли чего конкурентам. После раскопок ответов Гугла было принято решение писать своё. Описание сего чуда под катом.
Полностью.
+ 13 -
35
wiz 01.02.2011 17:40

PythonВеб-сервер своими руками. Часть 2 — наводим порядок.

Один модуль, в котором лежит всё подряд это нормально для мини-серверков, которые просто делают одну функцию и не собираются становиться более универсальными. Используя код из первой части любой теперь может выполнять простейшие операции через свой «веб интерфейс», но даже это скоро станет очень тяжело поддерживать.

Поэтому сейчас мы поделим сервер на части и упакуем всё в коробку с бантиком, чтобы модуль можно было использовать в своих целях, не изменяя код самого сервера.
Полностью.
+ 16 -
6
wiz 01.02.2011 11:05

PythonВеб-сервер своими руками

Многие уже писали себе «сайты» или планируют ими заняться, но при этом плохо представляют себе что же это такое - сайт. Серия постов посвящена построению с нуля учебного (а не супер-быстрого или супер-фичастого) сервера, на примере которого, постараемся разобрать разные практические вопросы из жизни разработчика. Первая, вступительная, часть публичная т.к. возможно многим будет интересно «как это всё устроено». Код на питоне, но это практически псевдокод на английском, поэтому ни у кого тут сложностей возникнуть не должно. Остальные части скорее всего будут показываться только для участников питоноблога.

Сайт это такой многослойный торт, напичканый самыми разными видами крема кода. Давайте посмотрим, что происходит, когда пользователь набирает в браузере http://example.com/ и зачем.
Полностью.
+ 23 -
8
1 2 3 4 5 6 7 8 9 10