| Сегодня Вторник 16.04.2024

Опыт написания своей CMS — общие рекомендации и советы начинающим


Введение.

В этой статье я хочу рассказать о том, как и почему я всё-таки пришел к тому, чтобы написать свою CMS/CMF, несмотря на огромное количество доступных и бесплатных систем управления и фреймворков. Итак, конечно же, прежде чем я решил написать действительно что-то стоящее и подходящее мне в большинстве случаев для разработки всяческих сайтов и интернет-проектов, мною было «поюзано» несколько готовых CMS, были взвешены все плюсы и минусы: удобство привязки шаблонов, сложность дописания к CMS необходимой функциональности конечного проекта (если она не была уже реализована и доступна в паблике), итд. Также стоит отметить, что в не очень далеком прошлом (2006 году) я написал первое отдаленное подобие системы управления содержимым сайта и моё представление о подобных системах только начинало формироваться. Это «первое решение» даже прослужило в нескольких первых, так сказать, «тестовых» проектах, но вскоре было осознана вся ущербность данной CMS и её совсем немалые минусы.

Обдумав основные неудобства готовых CMS лично для меня, я составил такой вот список:
  1. В большинстве систем управления малоудобная реализация привязки конечной верстки к самой CMS (например в некоторых каша из PHP и HTML кода, в других приходится очень дохрена редактировать мелких шаблонов и перепрописывать множество переменных, итд.)
  2. Несмотря на то, что я конечно же знаком с базовыми принципами взлома сайтов, тот факт, что система общедоступна и каждый потенциальный хаккиръ вася пупкин может скачать её и тестить на бажность до потери пульса, немного смущает (потому, что этот продукт писал не я лично и также не я могу гарантировать его стабильность и не дырявость)
  3. Лично я не люблю когда система имеет необъятные габарариты, никому ненужный функционал для большинства случаев (привет Zend Framework), на неё навешивают всякие «новомодные плюшки», которые тормозят админку как минимум. (хотя есть мнение, что подобную CMS всего-навсего писали криворукие уебаны из деревни дилетанты)
  4. Минимализм и желание знать где, что и для чего у тебя находится в той CMS, с которой ты работаешь, склоняло меня большим грузом к тому, чтобы взять и сделать именно так, как мне хотелось, чтобы это было реализовано и как работало.
  5. Дальнейший рост проекта более затруднителен при использовании сторонних систем, т.к для того чтобы написать новый необходимый дополнительный модуль, раздел админки, итд. в самой CMS будет необходимо перелопатить весь доступный мануал по этой CMS и еще долго познавать детали и её «недокументированные возможности»
Вот эти основные минусы при использовании готовых продуктов и склонили меня окончательно к разработке своей CMS (кстати отмечу, из основных бесплатных кандидатов больше всего я смотрел в сторону WordPress и ModX, откуда я также и подчерпнул некоторые идеи для своей CMS).

Итоги

Какие сроки были поставлены?
– 3 месяца

Что было сделано в итоге?
– Нарисован несложный удобный юзабельный дизайн всех страниц админки с одновременным «продумыванием» необходимой и достаточной функциональности CMS (1-2 недели)
– Дальнейшая верстка страниц и написание меньшей части JS/AJAX составляющей (также заняло 1-2)
– Третий основной этап разработки, который включал в себя создание необходимой структуры таблиц базы (MySQL), написание каркаса (ядра) и всех классов (PHP/JS), модулей, сниппетов, итд.

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

И что теперь?
– Теперь у меня под рукой та система, с которой мне приятно и удобно работать, которая экономит моё время и всё остальное, к тому же этот опыт работы над достаточно крупным проектом был очень полезен для меня.

Рекомендации

Если вы такой же «велосипедист» как я также склонились к тому, чтобы написать свою CMS, то ниже я привожу несколько советов для создания успешного проекта по моему мнению:
  1. Убедитесь в том, что у вас достаточно свободный график и много времени, чтобы ежедневно уделять по 1-7 часов на работу над проектом спешите. Запаситесь достаточным количество терпения, хорошей музыки, литрами кофе и килограммами конфет :) Спешка как известно, нужна при ловле блох.
  2. Прежде чем начать писать первые строчки, достаточно плотно подойдите к теоретической части (сюда входит ознакомление с мануалами библиотек, стандартами кодирования и деталями языка программирования (PHP/JS), базой данных (MySQL) и языка её запросов (SQL), с которыми мы будем работать, итд.)
  3. Старайтесь разрабатывать максимально расширяемый и сопровождаемый код, уделяйте время на поиск лучших решений, а не применение первого рабочего варианта, который пришел в голову.
  4. В свободное от работы время полезно задумываться о дальнейшем небольшом этапе написания кода, поиска каких-то новых идей, «дошлифовки» уже готовой части (у меня, например, перед сном приходило много новых идей)
  5. И последний пункт, никогда не останавливайтесь на достигнутом. Нет предела совершенству, как и пути назад.

Советы

  1. Если вы считаете, что не в состоянии осилить подобный проект в одиночку, берите себе в команду не больше 1-2 человек
  2. Применяйте последние расширения и библиотеки того языка, на котором пишете CMS (я использовал PHP 5.1+ и либы PDO, Multibyte String, Simple XML, Zip File Functions и GD)
  3. Что мне очень пригодилось и понравилось при написании кода, так это то, что я всё разрабатывал в едином ключе, на классах, с применением принципов MVC (до этого моя первая CMS была очень далека от этого) — всё это дает большие плюсы при дальнейшей доработке и сопровождении проекта.
  4. Не стоит навешивать на проект слишком большое количество яваскрипта и аякса, это совсем не удобно и не модно (во всём нужен балланс)
  5. Перед началом работы над проектом обязательно установите выполнимые сроки, составьте схему, этапы работы, начинайте собирать идеи и их реализации, которые потом могут пригодиться в процессе работы.
Вот и всё. Если у кого-то возникли дополнительные вопросы или пожелания, прошу в комменты.
Категория: Разное | Добавил: Admin (10.10.2010)
Просмотров: 3118 | Рейтинг: 5.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]