Как я делал pechat-noginsk.ru

pechat-noginsk.ru
pechat-noginsk.ru

Продолжаю рассказ о проектах и сайтах, которые мне приходилось делать.

Первой была заметка о каталоге объектов недвижимости http://www.buyrealty.su/.

Сегодня речь пойдет о сайте для заказа печати фотографийhttp://pechat-noginsk.ru/

В один прекрасный день я получил сообщение на моем круге приблизительно следующего содержания:

«Андрей, нам необходим специалист для разработки программы приема заказов фото печати через интернет…»

После некоторой переписки выяснилось, что заказчику нужна именно программа, т.е. реальное десктопное приложение. Я естественно отказался, так как писать десктоп-приложения — это не моя специализация. Однако в своем «прощальном» письме все же предложил вместо приложения реализовать сайт/портал для приема этих самых заказов. Через некоторое время мне ответили согласием, но с одной оговоркой, которая касалась бюджета. Заказчик хотел опробовать наш местный рынок и посмотреть пойдут ли вообще эти услуги. В связи с этим бюджет был весьма ограничен, более того от услуг дизайнера/верстальщика тоже решили отказаться. Как и большинство своих проектов, этот проект я решил делать на фреймворке Yii, который активно изучал (и продолжаю это делать). В качестве «дизайна» самого сайта и личного кабинета пользователя/администратора я предложил использовать макеты, кторые Yii генерирует при создании CRUD-а для моделей базы данных. Заказчик одобрил это.

Практически любой сайт состоит из стандартных элементов, таких как: страницы, регистрация и авторизация пользователя, форма обратной связи и т.д. После того как человек слез с дерева и заменил палку-копалку клавиатурой и монитором — изобрели CMS, которые все эти проблемы решают на «раз два». В то время я активно разрабатывал свой «движок» на фреймворке Yii и решил попробовать применить его в первом «настоящем» проекте. Так как управление страничками, пользователями, регистрациями и авторизациями, а так же форма обратной связи — у меня уже были реализованы, осталось всего лишь написать модуль для работы с заказами.

Модуль оказался довольно простой. Вот что он умеет:

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

Проект размещается на простеньком хостинге, который не отличается супер производительностью и бесконечными ресурсами. В связи с этим были введены некоторые ограничения:

  • за один раз можно загружать только 5 фотографий (экономим ресурсы)
  • после того как заказ выполнен, все фотографии и превьюшки удаляются (экономим диск)
  • пустые заказы периодически чистятся (они ведь тоже занимаю кое-какое место =) )

В процессе разработки возникло несколько ситуаций, когда ресурсов хостинга мягко говоря «не хватало». Вот они:

  • генерация превью для фотографий — если позволить пользователю загружать за один раз произвольное количество фотографий — при загрузке, приблизительно 10-15 фотографий и более —  упираемся в недостаток памяти, а иногда работа прекращается из-за таймаута. По хорошему можно было просто загружать фотографии, а генерацию превью производить в фоновом режиме или вообще организовать что-то типа очереди.
  • менеджер магазина может скачать все фотографии по заказу за один раз, для этого фотографии ужимаются в архив и уже этот архив отдается на скачку, после чего удаляется. При генерации таких вот архивов тоже бывали ситуации когда не хватало оперативной памяти. После переговоров с хостером немного памяти нам все же добавили.

В записной книжке сохранилось несколько TODO-листов по этому проекту, вот они (фото с мобильника):

pechat-noginsk.ru
pechat-noginsk.ru

pechat-noginsk.ru
pechat-noginsk.ru

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

Хозяин — барин!

В целом и я и заказчик остались довольны проделанной работой (я надеюсь =)).

http://pechat-noginsk.ru/

Продолжение следует =)

Читайте еще:

Как я делал pechat-noginsk.ru: 4 комментария

  • 22 января 2011 в 21:49
    Permalink

    Я толи дурак толи куда, но в упор не понимаю зачем «Разрабатывать свои движки»
    Тем более на Yii который обладает жутчайшей мощьностью скафолдингом. Ведь с каждым сайтом каждый раз придется в любом случае переделывать функционал, а обсолютно универсального решения нет.

  • 23 января 2011 в 12:35
    Permalink

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

  • 4 апреля 2011 в 9:45
    Permalink

    Мне интересно посмотреть как устроены такие движки, сам YII я пока никак не могу освоить, не получается понять все эти ООП дела… точнее кое что понятно, но многое и непонятно. Так посмотреть хоть на готовые решения на этом фреймворке… так сказать в целях обучения.

  • 4 апреля 2011 в 9:50
    Permalink

    Исходный код можно найти вот тут http://code.google.com/p/yupe/ а живую демку вот здесь http://yupe.ru/ (используется очень старая версия Yupe, в эти выходные планирую обновиться) Если будут вопросы — пишите =)

Обсуждение закрыто.