Журнал Компьютерра - Журнал «Компьютерра» №32 от 06 сентября 2005 года
Сайт WebMastak.comсуществует около года, однако на нем можно найти немало полезных статей по веб-программированию на PHP, Perl и несколько сотен (!) о JavaScript, а также материалы по использованию таких интернет-технологий, как SSI и XML. Еще здесь есть такие интересные разделы, как «Оптимизация и продвижение сайта в Сети» и «Настройка веб-сервера Apache».
В рамках этого информационного ресурса существует несколько проектов - например, «ХостОбзор», посвященный выбору хостинга и регистрации доменных имен. Вы можете почитать статьи, сравнить предложения хостингов, получить информацию о киберсквоттинге.
Наверняка пригодится вам и небольшая, но активно пополняемая коллекция скриптов на 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, [email protected]
Базы знаний (KnowledgeBase) позволяют накапливать опыт множества разработчиков, работающих (или работавших) в какой-либо одной. Каждая такая база знаний имеет свою специфичную структуру, поэтому никаких общих решений на данный момент не предложено. Самая известная из существующих баз знаний - RFC[Request For Comment - запрос на комментирование. Обычно описание работы с каким-либо протоколом и т. п. Публикуется в виде небольшого документа - как правило, с примером программы].