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

PHP и Perl

Структура CMS
   Функции, выполняемые системами управления содержимым, можно разделить на три основные группы:
   Добавление — предоставление авторам удобных и привычных средств создания (добавления) контента на ресурс.
   Публикация — автоматическое размещение информации на сайте и представление данных пользователю в едином внешнем представлении для всего сайта.
   Редактирование данных, содержащихся на сайте.
   CMS, как правило, обеспечивают хранение данных в едином репозитории (хранилище).
   Существует несколько моделей, по которым строятся системы управления:
   Модульная модель. Такие CMS представляют собой набор отдельных суб-CMS, каждая из которых управляет своим набором типов данных. Модули независимы и полностью отвечают за работу с документами данного типа. Зачастую такой принцип организации является самым удачным, так как расширять функциональность можно за счет добавления нового модуля, замены или редактирования существующего кода. Системы на основе описываемой модели наиболее популярны благодаря своей простоте. В качестве примера можно упомянуть PHPNuke и XOOPS.
   Объектная модель. CMS этого типа работают с классами и объектами. Классы определяют структуру данных и набор атрибутов (свойств). Объект является экземпляром класса, его задача — хранить в себе реальные данные. Объект может наследовать свойства, содержание и поведение объектов, которые в них содержатся.
   Существуют и другие модели, однако они распространены в гораздо меньшей степени.
   При запросе какой-либо страницы выполняется программный код, обрабатывающий запрошенный тип данных. Он извлекает данные из хранилища (коим может быть база данных или файловая система), после чего собирает страницу на основе шаблонов и представляет ее пользователю. Благодаря системе шаблонов решается вопрос одновременного обновления сразу всех страниц (например, при необходимости редизайна), плюс — появляется возможность создания нескольких вариантов представления страниц.
   CMS также различаются по месту хранения сгенерированных страниц:
   Динамические. Страница формируется динамически, как только приходит запрос. Это самый ресурсоемкий вариант, поскольку движок работает постоянно. Если посетителей очень много, то возможно чрезмерное использование ресурсов сервера. Главное преимущество подобной схемы — каждый посетитель получает самый свежий вариант контента. Кроме того, возможна индивидуальная настройка страницы под каждого пользователя.
   С динамической сборкой. Динамически собранная (после соответствующей команды) страница кэшируется до тех пор, пока для нее не приходит обновление (очередная команда на регенерацию). В этот момент кэш сбрасывается, и цикл повторяется. Возможно учитывать пользовательские предпочтения: страница каждый раз собирается динамически, но из статических (сгенерированных заранее) фрагментов. Если какой-либо фрагмент обновляется, то при следующем запросе он (один фрагмент, а не все вообще) будет перегенерирован и занесен в кэш.
   Генерация статических страниц на основе динамических данных. При обновлении CMS перегенерирует все связанные страницы. Поэтому при запросе выдается уже сформированная статическая (возможно, собранная с помощью SSI[Server-Side Includes — включения на стороне сервера, то есть в страничку вставляются динамически сгенерированные сервером данные (например, IP-адрес посетителя и др.)]) страница.
   Современное аппаратное обеспечение хостинг-провайдеров вполне может потянуть первый вариант даже для сильнопосещаемого ресурса. Однако при необходимости экономии ресурсов лучше применять два других.
 
   Весьма и весьма полезен для новичков ресурс «Постройка.ру». Тут подробно рассказывается о создании сайтов, немало статей на тему «HTML», «Графика» и «Дизайн». Хорошо известен в Сети справочник, выходящий на этом сайте: «HTML: шаг за шагом». А еще есть такой раздел, как «Справочная»: определения различных терминов, связанных с Интернетом, разбиты по алфавиту. Самым интересным местом на «Постройке.ру» (по крайней мере, для меня) является форум. Здесь обсуждаются материалы, опубликованные на сайте, и не только. Кстати, оставив там ссылку на свой сайт, я в за несколько дней получил больше десятка отзывов.
Классификация CMS
   За несколько лет системы управления содержимым веб-ресурсов значительно усовершенствовались. Их можно классифицировать по областям применения.
   Порталы. Используются для информационных ресурсов, основной целью ставят максимальное упрощение публикации статей и новостей. Могут включать в себя нижеперечисленные типы CMS как самостоятельные модули. Наиболее известные представители данного класса: AngelineCMS, Bes-cms, CoolPHP, CPG-Nuke, вебZE, Xaraya, xNuke, XOOPS и др.
   Движки без SQL. Это ответвление в разработке CMS развито относительно слабо, так как использование в качестве хранилища информации файлов вместо таблиц базы данных сопряжено с множеством труднорешаемых проблем (таких, как одновременная запись в один файл несколькими копиями скрипта)[Скрипт (от англ. Script) есть интерпретируемая (то есть не компилируемая заранее) программа]. Достоинство этих CMS — в доступности для модификации контента и возможности размещения на бесплатных хостингах[Хостинг (от англ. Hosting) — сервер сети, предоставляющий услуги размещения сайтов]. Есть несколько реализаций данной идеи: Cute News, DeeLight CMS, Progressive, SAPID.
   Блог[Происходит от англ. weblog. То есть weblog — blog — блог. Русский термин — «сетевой дневник»] — это сайт, на котором находятся личные заметки автора. В основном заметками являются ссылки на сайты, которые кажутся владельцу ресурса наиболее интересными, и комментарии к ним. Блог может содержать не только ссылки, но и просто электронный дневник пользователя.
   К этой категории можно отнести следующие CMS: b2evolution, bBlog, BLOG:CMS, MyPHPblog, Nucleus, pLog, pMachine Free, Serendipity, Textpattern, WordPress, XHP.
   Уже ведутся дискуссии о том, кто же влиятельнее: СМИ или блоги? Например, в Штатах выходит телепередача о блогах.
   Форумы — это инструмент для общения на сайте. Сообщения в форуме в чем-то похожи на почтовые — каждое из них имеет автора, тему и содержание. Но для того, чтобы отправить сообщение в форум, не нужна никакая дополнительная программа — нужно просто заполнить соответствующую форму на сайте. Принципиальное свойство форума заключается в том, что сообщения в нем объединены в треды (от англ. thread — «нить»). Когда вы отвечаете в форуме на чье-то сообщение, ваш ответ будет «привязан» к исходному сообщению.
   К форумам, достойным внимания, можно причислить FUDforum, openBB, Phorum, phpBB, PunBB, W-Agora, XMB, Zorum, ExBB, IPB, vBulletin.
   Магазины. К магазинам отнесем любой сайт, с которого можно заказать какой-либо товар. В данном случае в определение «товара» может входить абсолютно все, включая время доступа в Интернет, минуты сотовой связи. Абсолютное большинство интернет-магазинов являются нелегальными[Вопросы — к автору. — Прим. ред].
   CMS, позволяющие создать виртуальный магазин: MyMarket, osc2nuke, osCommerce, Zen Cart.
   Групповая работа (Groupware) — комплекс программного обеспечения, позволяющий организовать работу предприятия, отношения с клиентами и заказчиками в Интернете. Обычно представляет собой полностью или частично закрытую часть сайта с возможностью отслеживать сроки выполнения поставленных задач, распределение ролей и временных нормативов. Иногда можно выносить вопросы на обсуждения и решения вышестоящего руководства.
   Как правило, пользуются следующими CMS: dotProject, eGroupWare, MoreGroupware, phpCollab, PHProjekt.
   Обучение (e-Learning) — дистанционная форма обучения с использованием Интернета. Онлайновая форма обучения уже не один год является «маяком», на который ориентируются образовательные системы разных стран мира. Главным стратегическим направлением является быстрое обновление знаний и эффективное использование информации.
   Таких систем немного: ATutor, Claroline, LogiCampus, Moodle, Segue, Site@School.
   Базы знаний (KnowledgeBase) позволяют накапливать опыт множества разработчиков, работающих (или работавших) в какой-либо одной. Каждая такая база знаний имеет свою специфичную структуру, поэтому никаких общих решений на данный момент не предложено. Самая известная из существующих баз знаний — RFC[Request For Comment — запрос на комментирование. Обычно описание работы с каким-либо протоколом и т. п. Публикуется в виде небольшого документа — как правило, с примером программы].
   Биллинг (Billing). Программное обеспечение, позволяющее провайдерам[Провайдер (от англ. Provider) — организация, предоставляющая какие-либо услуги (как правило, информационные)] и реселлерам[Реселлер (от англ. Reseller) — организация или частное лицо, занимающееся продажей услуг крупных компаний рядовым потребителям] работать со счетами клиентов. Такие CMS являются неотъемлемой частью крупной системы учета потребления услуг пользователями. Задача же CMS данной категории — в отображении информации о предоставленных услугах, подключении новых услуг, изменении текущих параметров, приеме платежей и т. п. Часто такие системы пишутся своими силами. Для примера можно привести биллинг-панель RuWEB[Помимо нее автор имел удовольствие работать с net.ru, agava.ru, IPI.CONTROL, CLX.ru, Spaceвеб, — ни одна фирма не может порадовать гибкими тарифными планами]. В ней создано огромное количество тарифных планов, позволяющих платить только за те параметры хостинга (трафик, место на жестком диске, MySQL, PHP, Perl…), которые используются в полном объеме.
   Администраторская панель хостинга. К этому классу относятся такие продукты, как Direct Admin и Control Panel. Немало хостинг-провайдеров стараются написать панель управления для пользователя хостинга своими силами, однако ни одно подобное решение, насколько мне известно, так и не смогло по возможностям и эргономике хоть немного приблизится к вышеупомянутым системам. Например, админпанель хостинга net.ru дает лишь простейшие функции управления и способна показать только то, что может сделать администратор за день работы. Самоделки.
   Системы управления бывают свободно-распространяемыми и платными. Вместе с последними в подавляющем большинстве случаев вы получаете сопровождение и поддержку.
   Платные системы можно разделить на три ценовые категории:
   Самые дешевые, которые произведены одним веб-разработчиком или группой. Такие системы стараются сделать как можно более универсальными, чтобы продать как можно большему числу потенциальных покупателей (как правило, интернет-представительствам некрупных компаний).
   К среднему ценовому диапазону относятся системы, созданные под конкретного заказчика.
   Системы, созданные гигантами разработки — Microsoft и др.
 
   Тем, кто интересуется системами управления контентом, рекомендую посетить сайт «CMS Обзор», посвященный CMS, их использованию и настройке. Описаны основные стандарты, которым должна соответствовать CMS, сравниваются платные CMS от различных разработчиков. Весьма любопытный форум. Для сведения: аналогичный англоязычный ресурс располагается по адресу www.cmswatch.com
Текущее состояние рынка CMS
   Развитие чего-либо всегда определяется потребностями рынка. Состояние же рынка CMS на данный момент таково, что нет серьезной конкуренции из-за ненасыщенности рынка. Конкурентная борьба между производителями систем практически отсутствует. Абсолютное большинство мелких и средних веб-разработчиков предпочитают иметь пусть и примитивную, но свою CMS, нежели пользоваться чужими, более продвинутыми разработками. Поэтому в России ни одна система пока не может похвастаться долей рынка хотя бы в десяток процентов. К тому же до сих пор не проведено практически ни одного серьезного анализа рынка и его характеристик. Многие публикации являются скрытой рекламой какой-либо CMS. Подавляющее большинство существующих CMS несовместимы друг с другом, то есть нет возможности экспорта/импорта данных из одной системы в другую, даже через промежуточные форматы данных; несовместимы и модули разных систем. Таким образом, при желании сменить CMS, не меняя оформления, придется заново программировать интерфейс. Диапазон цен на рассматриваемые программные продукты довольно широк — от $50 до $10000, а порой и выше. То есть за долгие годы развития так и не была сформирована даже ценовая политика большинства производителей.