Разработка под собственные нужды

17 Июл
2012

Предисловие.

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

Опыт первый – не удачный.

Все силы были брошены на сбор информации о вещах первой необходимости. Облазив все найденные форумы и блоги, я начал проектировать и выбирать составляющие.
Я решил не прыгать выше головы и для отделения обработки от верстки использовать наиболее понятный мне шаблонизатор. Ознакомился со всеми за и против и остановился на Quiky, младшим братом Smarty. Как уверяли его разработчики, их шаблонизатор быстрее Smarty, весит меньше, и проще в понимании. Это было то, что нужно. В качестве обработчика был выбран знакомый мне PHP. Хранилищем информации послужила mySQL база данных.
Через некоторое время стало видно, с чем придется работать.
1. Основное
• Серверная обработка – PHP
• Шаблонизатор – Quiky
• База данных – mySQL
2. Дополнительно
• Разметка страниц – HTML
• Свойства элементов страницы — CSS (3)
• Визуальные эффекты – jQuery
• Костыли для IE
Прочитанные книги стали теоретической базой, но теория не сравниться с практикой и у меня изначально не получилось сделать то, что хотелось. Вместо ООП кода родилось, что-то страшное и не структурированное. Все это подталкивало на мысль о завершении только начатой разработки собственного движка. Кстати, первые трудности были испытаны как раз с шаблонизатором, а точнее с его настройкой, все по той же причине отсутствия практики в таких делах. Не смотря на все панические атаки и мысли сдаться, я, не спеша, но уверенно продолжал кодить по страшному. Нарисовались первые страницы «хэлло ворд». Позже был сверстан простенький дизайн страниц для наглядности выводимых данных. Велосипед троил, но потихоньку заводился.
Рабочий год близился к концу, впереди лето и выпускные экзамены из школы. Почти 3 месяца на велосипеде никто не ездил. Я начал забывать, как работала моя CMS, мысли были только об учебе. Благополучно сданные экзамены позволили мне без проблем поступить в политехнический университет (ЮРГТУ(НПИ)).
До начала лекций оставалось чуть меньше месяца, и я снова взялся за свое творение. Немало времени ушло на разбор того, что там было написано. Спасали периодически оставленные комментарии и понятный только мне почерк. Я не ощутил особых трудностей в первом семестре и уверенно продолжал работать. Первая сессия выбила меня из колеи примерно на месяц, но все же была успешно сдана. Вернувшись к своему движку, я понял, что продолжать его не стоит по причине его не расширяемости. За первый семестр я пересмотрел свои взгляды и узнал много нового.
Главная ошибка – недостаточные знания и отсутствие правильно понимания.
Опыт второй – промежуточный.

Без слез, но с камнем на душе я отправил на помойку больше года работы. Это было очень важным шагом. Ведь продолжив такой движок, рано или поздно, я пришел бы в тупик, выхода из которого уже бы не было, а время потерял бы больше.
Недолго думая, я снова собираю все необходимое для второго опыта. Настройка и компоновка теперь заняли меньше часа. Появился фронт работы. Мне хотелось сделать легкую модульную систему изначально не привязанную к определенному типу направленности и в ее основу положить реальный ООП.
Не прошло и месяца, как у меня уже была первая версия движка с показательно натянутым на него дизайном. Полный желания поделиться впечатлениями я побежал к своему знакомому. Он презренно осмотрел мое творение и полез внутрь. Через пять минут я проклинал все на свете. Он ткнул пальцем в сторону дыры невероятных размеров.
Как оказалось, я настолько увлекся функциональностью, что напрочь забыл про безопасность. Ни в одном из обработчиков я не нашел каких либо проверок. Входящие данные не обрабатывались, переменные не предопределялись, запись в базу происходила просто мерзко. Мне стало стыдно, я был взбешен. Ведь это уже вторая попытка сделать движок и она благополучно провалилась.
Опыт третий – ура!

В этот же вечер я принялся штудировать просторы блога и иных источников. Я искал все, что возможно найти по защите php приложений. Сотни закладок полетели в хром. Всю ночь я хлестал кофе и, не спуская глаз с очередной статьи, жрал информацию. Я не мог позволить себе еще раз все переписывать и решил допилить то, что было. Проспавшись после информативной ночи, я принялся закрывать уязвимости.
Обнаружение их в ядре движка и во всех модулях было очень своевременным. Я оперативно позакрывал все наиболее явные дыры и принялся за тонкости. Спасибо моему знакомому, если бы он мне не открыл глаза, все могло быть очень плачевно.
На данный момент я продолжаю работу над своим велосипедом. Теперь я уделяю внимание всем известным мне граням подводным камням. В ближайшее время появится альфа-версия движка и начнется тестирование в массах.
Я не претендую на лучшую CMS и не ору, что мой велосипед ездит быстрее. Была поставлена конкретная задача, которая была решена, пусть и тернистыми путями. Сейчас я отказался от известных CMS и наслаждаюсь разработкой.
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх