Pull to refresh

Портировали сайт Рисоваськи на Django

Reading time 3 min
Views 1.8K
I wish this site was powered by Django. Когда мы делали Рисоваську, то сайту отвели не очень много внимания. «Простой, быстрый, „продающий“ нашего скачиваемого клиента» — такие требования получил dmalinovsky. В итоге сайт был написан на PHP с использованием авторского мини-фреймворка. Когда же Денис переключился на другие задачи, то стало понятно, что сайт никто не хочет расширять — не прикольно. На Эрланге писать — прикольно, на C++ — тоже прикольно (но после Эрланга конечно же все ворчали), на PHP — «не-не-не, я лучше на Эрланге попишу».

Меня это всё не устраивало, поэтому как только у меня выдалось время, я начал портирование сайта на технологии, поработать с которыми захочет каждый из нашей команды. Кандидатами были — Ruby on Rails и Django. Оба фреймворка — прекрасны! И самое главное — подходят по уровню инноваций, фана, красивого кода. Django я выбрал из-за языка — Python мне как-то сразу запал в душу.

После первых helloworld сайтов стало ясно, что «нужно еще что-то почитать». И тут я весьма кстати наткнулся на djangobook, которую читал запоем несколько дней подряд. Дочитав до 12й главы, я решил что готов :))))

В первый день я перенес главную страницу (включая импорт записей из wordpress) и был на десятом небе от радости. На второй день я перенес пару статических страниц, а вот когда подошел к странице со списком пользователей, то тут меня и ждала настоящая работа.

Первое мини-просветление я получил, когда начал писать функции для вызова API сервера приложений. Нужна была функция «получить список последних комиксов». Протокол — близкий к XML-RPC (и я планирую начать работу по замене его на RESTful web service). Собираю XML, отправляю, получаю ответ, разбираю, определяю класс Comic и возвращаю массив этих классов. Потом — список пользователей. Опять то же самое + класс User. На третьей функции я вспомнил, что Python — это не C++ и удалил описания классов, возвращая вместо них массив из словарей (гениальнейший встроенный тип данных, в C++ есть его аналог std::map). В общем, все функции работы с application server заняли сотню строк, и при ближайшем рефакторинге я планирую сократить код процентов на 20 :))))

День на пятый я сделал-таки страничку со списком пользователей (еще немного времени поглотил paging и прочие мелочи). За шестой и седьмой день я доделал все остальное (страница профиля, список комиксов, страница комикса, обратная связь + десяток статических страниц).

Т.е. за одну неделю новый сайт был готов. Еще полдня — и я выложил его на test.risovaska.ru. Потом мы его неспешно тестировали, добавляли какие-то мелочи, вчера он заменил основной — risovaska.ru

В Django, кроме собственно технических вкусностей и красот архитектуры, меня особо радуют:
— Офигенная документация
— Очень хорошее сообщество вокруг фреймворка (например, есть такие люди как Иван Сагалаев — softwaremaniacs.org/blog/category/django)

Кроме Django и Python, при разработке использовал распределенную систему версионирования Mercurial. Главное её удобство — это то, что не нужно настраивать никаких репозиториев под апачем на сервере, если у тебя есть туда доступ по SSH. Один репозиторий лежит у тебя на компьютере, второй — на сервере. Изменения просто переливаешь по SSH. Dev-ветка создается очень быстро — простым клонированием репозитория. Во-первых удобно, а во-вторых — какая-то новая извилина появилась в мозгу. Ну и в-третьих — поскольку все чаще люди просят открыть код Рисоваськи, то такой распределенный подход может очень пригодиться, когда мы переведем клиентское приложение в open-source.

Новые интересные технологии приходят на смену старым и скучным!
Tags:
Hubs:
+46
Comments 47
Comments Comments 47

Articles