Посты в Python
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
Elvis 06.01.2011 17:37

PythonСкелет для Django с поддержкой HAML, SASS и Coffee-Script

В Ruby сообществе давно модно использовать альтернативный синтаксис для основных языков веб-разработки: HTML, CSS и JavaScript.
Для HTML документов используется синтаксис HAML.
Для CSS используются LESS, SASS или CleverCSS. Из них SASS самый продвинутый, к и так огромной куче возможностей можно добавить фреймворк Compass, который содержит много полезных функций, миксинов и имеет поддержку популярного CSS фреймворка BluePrint.
Вместо JavaScript люди пишут скрипты на CoffeeScript - альтернативном синтаксисе яваскрипта. CoffeeScript похож по синтаксису на Python и имеет много заимствований "синтаксического сахара" из Ruby и Python.
К сожалению, о том, как организовать поддержку этих технологий в Django-проектах практически не пишут. Я попытался реализовать поддержку сразу трех технологий в одном проекте и столкнулся с ошибками. После нескольких часов копаний в коде я исправил ошибку в webassets (основная библиотека для поддержки этих технологий) и добавил некоторые функции в hamlish (к сожалению после этого он стал зависим от Django, поэтому я не стал его форкать, а сохранил прям в проекте).

Итак, встречайте - django-hsc-skel!
Основа для Django-проектов с поддержкой HAML, SASS (+Compass) и Coffee-Script>
Полностью.
+ 9 -
26
wiz 16.12.2010 00:45

Python«Практическая» задачка для начинающих

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

Поэтому вот такая задачка для питона: напишите реализацию сортировки quicksort.

Я не буду тут рассказывать этот алгоритм, найдите его сами. Это и будет первым уроком. Гугл ваш другл отныне и до конца статьи.
Замечу только, что не надо использовать list comprehensions, это очень неэффективно.

Но это ещё не все. Самое интересное начинается потом. Ведь программирование, как оно преподаётся это прямо таки изобразительное искуство — пара мазков и на холсте появляется ваша Нетленка. Но архитектура тоже была дисциплиной ИЗО, до тех пор пока не рухнул мост, построеный в таком стиле.

Полностью.
+ 8 -
7
wiz 15.12.2010 21:29

PythonСкелет Django-проектов

За вот уже 5 лет работы с джангой (с самого открытия код, ага) я уже столько раз делал ./manage.py startproject что уже и не счесть. И каждый раз это сопровождалось кучей рутинных операций типа настройки бд, созданием одних и тех же приложений. Первое время сама джанга менялась очень быстро и как-то это зафиксировать было практически нереально. К тому же фактически небыло инфраструктуры приложений, репозиториев и прочей обвязки. Но сейчас ситуация намного лучше.

Поэтому, представляю недавно собраный скелет типового джанго-сайта. Две команды и получается готовый сайт-со-страницами, готовый к навешиванию мясца.

Это не просто куча кода, но и некоторые решения из практики. Эти фичи я отметил по тексту жирненьким.

Репа с кодом: https://code.launchpad.net/~wiz/+junk/dbones
Лог работы: http://dumpz.org/25701/

Что внутри?
Полностью.
+ 18 -
34
RANUX 12.12.2010 12:14

PythonУрок 1.1 TDD для начинающих на Python

Представляю вашему вниманию первую часть первого урока посвящённую разработке через тестирование. Надеюсь будет полезно:) Старался написать максимально простым языком:) Комментарии приветствуются.

Добро пожаловать на серию уроков по Test Driven Development. Для тех кто ещё не знает что такое TDD: Разрабо?тка че?рез тести?рование (англ. test-driven development) — техника программирования, при которой модульные тесты для программы или её фрагмента пишутся до самой программы и, по существу, управляют её разработкой. Основная идея - реализовать правильно работающий функционал, обеспечить возможность повторного использования и простого изменения структуры исходного кода, при этом не изменяя его поведения (рефакторинг)
Полностью.
+ 17 -
27
false 30.10.2010 07:39

PythonНемного о python 2 && python3

Писал чат,возникла проблема - не могу передать строку на сервер,
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

код
s.send(msg)

код

Tак питон 3 меня не понял)

Покурив форумы выяснилось,что дело в том,что в python3 , в отличии от второго, аргумент должен быть обязательно набором байтов, а не строкой.. т.е строка во втором считалась набором байтов,а в третьем теперь не считается (насколько я понял)
решается это все так -
msg = str.encode(self.plainTextEdit.toPlainText())
s.send(msg) #отправляем

и
d = data.decode('utf8') # получаем

Может кому будет полезно,т.к я например выкурил половину форумов инета, пока понял в чем проблема))
И если что - прошу сильно не бить,т.к я еще учусь)
+ 4 -
8
f_evgeny 20.09.2010 13:45

PythonПишем расширение приложения для Django

Одна из сильных сторон Django, это наличие большого количества готовых приложений (applications) для него. С другой стороны, часто функциональность этих приложений или недостаточна, или немного не такая, как нам бы хотелось. Возникает неоходимость расширить приложение, добавив свою функциональность. Давайте попробуем это сделать.
Полностью.
+ 4 -
3
1 2 3 4 5