Бесплатные игровые движки на HTML5 и JavaScript. Дополнительные компоненты для Joomla

Привет, Хабр! Представляю вашему вниманию перевод статьи Inside a super fast CSS engine: Quantum CSS (aka Stylo) автора Лин Кларк .


Вы возможно слышали о Project Quantum… Это проект по существенной переработке внутренностей Firefox с целью ускорить браузер. По частям мы внедряем наработки нашего экспериментального браузера Servo и значительно улучшаем остальные элементы движка.


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



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


И первый крупный компонент из Servo - новый CSS-движок Quantum CSS (ранее известный как Stylo) - теперь доступен для тестирования в ночной сборке Firefox (прим. переводчика: в комментариях подсказали, что уже и в stable 55 есть) . За его включение отвечает опция layout.css.servo.enabled в about:config .


Новый движок воплощает лучшие инновации из других браузеров.



Quantum CSS использует преимущества современного железа, распараллеливая работу между всеми ядрами процессора, что дает ускорение вплоть до 2, 4 или даже 18 раз.


Кроме того, он комбинирует современные оптимизации из других браузеров, так что даже без распараллеливания он очень быстрый.



Но чем конкретно занимается CSS-движок? Для начала давайте рассмотрим что такое движок CSS в целом и каково его место в браузере, а после разберём, как Quantum CSS все это дело ускоряет.

Что такое CSS-движок?

CSS-движок - это часть движка рендеринга браузера. Движок рендеринга принимает HTML и CSS файлы сайта и превращает их в пиксели на экране.



Каждый браузер имеет движок рендеринга. У Chrome это Blink, у Edge - EdgeHTML, у Safari - WebKit, ну а у Firefox - Gecko.


Чтобы переварить файлы в пиксели, все они делают примерно одно и то же:


1) Парсинг файлов в понятные браузеру объекты, включая DOM. На этом этапе DOM знает о структуре страницы, знает о родительских отношениях между элементами, но не знает, как эти элементы должны выглядеть.



2) Определение внешнего вида элементов. Для каждого узла DOM движок CSS выясняет, какие CSS-правила применить. Потом он определяет значение для каждого свойства CSS. Стилизирует каждый узел в DOM-дереве, прикрепляя рассчитанные стили.



3) Определение размеров и положения для каждого узла. Для всего, что должно быть отображено на экране, создаются блоки (boxes). Они представляют не только узлы DOM, но и то, что может быть внутри них. Например, строки текста.



4) Отрисовка блоков. Она может происходить на нескольких слоях. Я представляю это себе, как старые, нарисованные от руки анимации на нескольких листах полупрозрачной бумаги. Это позволяет изменить один слой, без необходимости перерисовывать другие.



5) Объединение слоев в одно изображение, предварительно применив к ним необходимые свойства композитора (например, трансформации). Это как сделать фотографию слоев, совмещенных вместе. Далее это изображение будет отображено на экране.



То есть, перед началом просчёта стилей на входе CSS-движка имеется:

  • DOM-дерево
  • Список правил стилей

И так, он поочередно определяет стили для каждого узла DOM, одного за другим. Значение назначается каждому свойству CSS, даже если оно не задано в таблицах стилей.


Я представляю это себе, как заполнение формы, где все поля обязательны. Нужно заполнить такую форму для каждого узла DOM.



Чтобы сделать это, CSS-движок должен выполнить две вещи:

  • Выбрать правила, которые должны быть применены к узлу (сопоставление селекторов, selector matching)
  • Заполнить все отсутствующие значения стандартными или унаследовать родительские (каскадирование, the cascade)

Сопоставление селекторов

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



Кроме того, браузер сам добавляет некоторые стандартные стили (user agent style sheets). Так как же CSS-движок определяет, какое значение использовать?


Вот где нам приходит на помощь "правило конкретности" (specificity rule). Движок CSS создает таблицу определений, которую потом сортирует по разным столбцам.



Правило с наибольшей конкретностью побеждает. Основываясь на такой таблице, CSS-движок вносит все заданные в ней значения в форму.



Остальные высчитываются за счет каскадирования.

Каскадирование

Каскадирование упрощает написание и сопровождение CSS. Благодаря ему Вы можете установить свойство color у body , и знать, что цвет текста в элементах p , span , li будет таким же (если только Вы не переопределите его самостоятельно).


CSS-движок проверяет незаполненные поля в форме. Если свойство наследуется по умолчанию, то CSS-движок поднимается по дереву и проверяет, задано ли значение этому свойству у родительского элемента. Если ни один из предков значения не определяет, или оно не наследуется, то выставляется значение по умолчанию.



Так что теперь все стили для заданного узла DOM просчитаны, форма заполнена.

Примечание: совместное использование структур стилей

Описанная форма немного упрощена. CSS имеет сотни свойств. Если бы CSS-движок сохранял значение каждого свойства для каждого DOM-узла, он быстро использовал бы всю доступную память.


Вместо этого, движки обычно используют механизм совместного использования структур стилей (style struct sharing). Они сохраняют значения, которые обычно используются вместе (например свойства шрифта) в другом объекте под названием "структура стилей". Далее, вместо хранения всех свойств в одном объекте, объекты рассчитанных стилей содержат только указатель. Для каждой категории свойств существует указатель на структуру стилей с нужными значениями.



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

Так как же мы все это ускоряем?

Так выглядит неоптимизированный процесс расчёта стилей.



Здесь выполняется достаточно много работы. При чём не только в момент первой загрузки страницы. А снова и снова, по ходу взаимодействия со страницей, при наведении курсора на элементы или изменении DOM вызывается перерасчёт стилей.



Это значит, что вычисление CSS стилей - отличный кандидат для оптимизации… И за последние 20 лет браузеры перетестировали множество разных стратегий оптимизации. Quantum CSS пытается совместить лучшие из них для создания нового супер-быстрого движка.


Давайте рассмотрим, как это всё работает вместе.

Распараллеливание

Проект Servo (из которого вышел Quantum CSS) - это экспериментальный браузер, который пытается распараллелить всё в процессе отрисовки веб-страницы. Что это значит?


Можно сравнить компьютер с мозгом. Есть элемент, отвечающий за мышление (АЛУ). Возле него располагается что-то типа краткосрочной памяти (регистры), последние сгруппированы вместе на центральном процессоре. Кроме того есть долгосрочная память (ОЗУ).



Ранние компьютеры могли думать только одну мысль за раз. Но за последние десятилетия процессоры изменились, теперь они имеют несколько сгруппированных в ядра АЛУ и регистров. Так что теперь процессоры могут думать несколько мыслей одновременно - параллельно.



Quantum CSS использует эти преимущества, разделяя вычисление стилей для разных узлов DOM по разным ядрам.


Может показаться, что это легко… Всего лишь разделить ветви дерева и обрабатывать их на разных ядрах. На самом деле всё гораздо сложнее по нескольким причинам. Первая причина в том, что DOM-деревья часто неравномерные. То есть, одни ядра получат значительно больше работы, чем другие.



Чтобы распределить работу более равномерно Quantum CSS использует технику под названием "воровство работы" (work stealing). Когда узел DOM обрабатывается, программа берет его прямые дочерние элементы и разделяет их на одну или несколько "единиц работы" (work unit). Эти единицы работы ставятся в очередь.



Когда какое-то ядро доделало всю работу в своей очереди, оно может поискать себе работы в других очередях. Таким образом мы равномерно распределяем работу без необходимости предварительной оценки с проходом по всему дереву.



В большинстве браузеров будет сложно реализовать это правильно. Параллелизм - это заведомо сложная задача, а CSS-движок достаточно сложный и сам по себе. Он также находится между двумя другими самыми сложными частями движка рендеринга - DOM и разметки. В общем, ошибку допустить легко, и распараллеливание может привести к достаточно трудноотловимым багам, под названием "гонки данных" (data races). Я описываю эти баги подробнее в другой статье (есть и перевод на русский).


Если Вы принимаете правки от сотен тысяч контрибьюторов, как Вы можете применять параллелизм без страха? Для этого у нас есть Rust .



Rust позволяет статически удостоверится, что гонки данных отсутствуют. То есть, Вы избегаете сложноотловимых багов, не допуская их в Ваш код изначально. Компилятор просто не разрешит Вам это сделать. Я напишу об этом подробнее в будущих статьях. Также Вы можете посмотреть вступительное видео о параллелизме в Rust или этот более детальный разговор о "воровсте работы" .


Всё это сильно упрощяет дело. Теперь почти ничего не останавливает Вас реализовать вычисление CSS стилей эффективно параллельно. Это значит, что мы можем приблизиться к линейному ускорению. Если Ваш процессор 4-х ядерный, то распараллеливание даст прирост в скорости почти в 4 раза.

Ускорение перерасчёта с помощью дерева правил

Для каждого DOM-узла CSS-движок должен пройтись по всем правилам и выполнить сопоставление селекторов. Для большинства узлов соответствующие селекторы скорее всего будут меняться не очень часто. К примеру, если пользователь наводит указатель мыши на какой-то элемент, то соответствующие ему правила могут измениться. Нам необходимо пересчитать стили для всех его потомков, чтобы обработать наследование свойств. Но правила, соответствующие этим потомкам, вероятно не изменятся.


Было бы неплохо запоминать, какие правила соответствуют этим потомкам, чтобы не пришлось сопоставлять селекторы снова… И дерево правил, пришедшее из предыдущих версий Firefox, делает именно это.


Движок CSS выбирает селекторы, соответствующие элементу, а потом сортирует их по конкретности (specificity). В результате выходит связанный список правил.


Этот список добавляется в дерево.



CSS-движок пытается минимизировать количество веток в дереве, переиспользуя их, когда возможно.


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



DOM-узел получит указатель на то правило, которое было добавлено последним (в нашем примере, div#warning). Оно самое конкретное.


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



И так, это помогает сэкономить время при перерасчёте стилей, но начальный расчет все-равно трудоемкий. Если есть 10000 узлов, то необходимо проделать сопоставление селекторов 10000 раз. Но есть способ ускорить и это.

Ускорение начального рендеринга при помощи общего кеша стилей

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


Без оптимизаций CSS-движок должен сопоставить селекторы и рассчитать стили для каждого параграфа отдельно. Но если бы был способ доказать, что стили для всех параграфов совпадают, то движок мог бы просто выполнить эту работу один раз, и из каждого узла просто указывать на тот же рассчитанный стиль.


Именно это делает общий кеш правил, черпающий вдохновение из Safari и Chrome. После обработки элемента, рассчитанный стиль ложится в кеш. Далее, перед началом расчёта стилей следующего элемента, выполняются несколько проверок, чтобы проверить, нельзя ли использовать что-то из кеша.


Проверки следующие:

  • Имеют ли 2 узла одинаковые ID, классы, и т.д. Если да - они будут соответствовать тем же правилам.
  • Имеют ли они одинаковые значения для всего, что не основывается на селекторах (например, встроенные стили). Если да, то вышеупомянутые правила не будут переопределены, либо будут переопределены одинаково для обеих.
  • Указывают ли родители обеих на тот же объект рассчитанных стилей. Если да, то наследуемые значения тоже будут одинаковыми.


Эти проверки были реализованы еще в ранних версиях общего кеша стилей с самого начала. Но существует много мелких ситуаций, в которых стили не совпадут. Например, если CSS правило использует селектор:first-child , то стили двух параграфов могут не совпадать, даже если вышеописанные проверки утверждают обратное.


WebKit и Blink в таких ситуациях сдаются и не используют общий кеш стилей. И чем больше сайтов используют эти современные селекторы, тем менее становится польза от такой оптимизации, поэтому команда Blink недавно удалила ее совсем. Но оказывается, что есть возможность поспеть за всеми этими обновлениями и с общим кешем стилей.


В Quantum CSS мы собираем все те странные селекторы и проверяем, применяются ли они к узлу DOM. Потом мы сохраняем результат этой проверки в виде единиц и нолей для каждого такого селектора. Если два элемента имеют идентичный набор единиц и нолей - мы знаем, что они точно совпадают.



Если DOM-узел может использовать стили, которые уже рассчитаны, то по сути почти вся работа пропускается. Страницы часто имеют много узлов с одинаковыми стилями, поэтому общий кеш стилей экономит память и действительно ускоряет работу.


Вывод

Это первый крупный трансфер технологии из Servo в Firefox. Мы многому научились, о том, как вносить современный, высокопроизводительный код на Rust в ядро Firefox.


Мы очень рады, что большой кусок Project Quantum готов для бета-использования. Будем благодарны, если Вы попробуете его и, в случае ошибок, сообщите о них .

О Лин Кларк

Лин - инженер в команде Mozilla Developer Relations. Она работает с JavaScript, WebAssembly, Rust и Servo. А также рисует code cartoons .

Теги: Добавить метки

HTML5 вместе с CSS3 и JavaScript дают разработчику широкие возможности создания игр с использованием 3D, анимации, Canvas, математики, цветов, звука, WebGL. Одно из наиболее очевидных преимуществ HTML5 заключается в его независимости и от платформы, и в общем случае от аппаратной начинки.

При детальном рассмотрении можно выявить предоставляемые движками дополнительные возможности: упрощение некоторых часто встречающихся задач или подгрузка ресурсов, оформленный ввод, физика, звук, bitmap’ы (таких, конечно же, немного). Есть и довольно слабо оформленные движки, а есть и те, которые предоставляют в пользование разработчику редактор 2D уровней и инструменты отладки.

Предполагается, что большинство движков служат для сокращения временных затрат на разработку полноценной игры. Однако многие разработчики предпочитают создавать свой проект полностью с нуля, чтобы лучше представлять его устройство. Существует немного JavaScript-HTML5 движков, которые действительно чего-то стоят, однако и у них может быть один большой недостаток: они более не поддерживаются или близки к прекращению поддержки. Поэтому, выбирая движок, остановите свой выбор на тех продуктах, поддержка которых будет длиться достаточно продолжительное время.

Итак, вот, собственно, сами движки.

Crafty

Идеально подойдет для реализации 2D спрайтовых аркад в ретро-стиле и головоломок вроде Судоку. Он имеет готовый к использованию самозапускающийся игровой цикл. Поддерживаются мышь и клавиатура. Отлично документирован, и главным недостатком можно считать только отсутствие поддержки звуков.

lycheeJS

Кросс-браузерный опенсорсный , написанный полностью на JavаScript. Созданный с нуля для того, чтобы быть максимально гибким, он имеет обширный API и использует самые новые фичи современных браузеров. Этот фреймворк предназначен, чтобы делать все за вас: ваша идея – его реализация с помощью самых часто используемых инструментов.

GameJS

Для формирования страницы используются JavaScript и CSS. Вместе они работают достаточно уверенно и слаженно. Разработан для новичков, обучающихся азам программирования видеоигр. Вам будет проще, если у вас уже есть какие-то навыки работы с CSS.

ClanFX

Портированный с iPhone графический 2D HTML5-движок на JavaScript. Позволяет быстро создавать 2D игры и графические приложения, которые могут работать на всех современных устройствах без установки дополнительных плагинов.

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

Обратите внимание, все сайты мы, как обычно, разместили на нашем тестовом сервере Condor.ru (на нем же установлены все движки, которые мы рассматривали в статье «CMS калейдоскоп» из «Игромании» №1"2008), куда всегда можно зайти, посмотреть, какой движок подходит именно для вашего сайта, и только после этого делать окончательный выбор.

Gallery 2 - в шаге от идеала

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

О популярности Gallery 2 говорит тот факт, что на ее основе работают десятки тысяч онлайновых галерей, фотохранилищ и видеопорталов. Движок позволяет выполнять автоматическую обработку загруженных на сервер изображений - масштабирование, поворот картинки на заданный угол, сжатие, цветокоррекцию. В новой версии добавлена функция многопользовательского доступа к галерее: это означает, что любой желающий может зарегистрироваться на сайте, где установлен движок, и создать серию своих собственных фотоальбомов. Не менее важно, что вторая итерация движка позволяет хранить на сервере файлы любого типа - не только картинки и видеоклипы, но и музыкальные треки, текстовые документы, 3D-модели и много чего еще.

Еще один козырь системы - возможность полной двусторонней интеграции интернет-галереи с наиболее популярными движками сайтов, блогов и форумов. Gallery 2 отлично ладит с WordPress (что это за движок и как сделать на нем сайт буквально за полчаса, читайте в прошлом выпуске «Игромании»), phpBB 2 , Mambo/Joomla , PHP-Nuke , Invision Power Board (IPB) , Drupal , PostNuke и vBulletin .

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

Еще один довод в пользу Gallery - загружать контент на сайт можно самыми разными способами. Через браузер, с помощью мастера публикации Windows, компактного Java-апплета или специальной клиентской программы Gallery Remote (скачать ее можно по ссылке http://gallery.menalto.com/wiki/Gallery_Remote ). Разрешено даже импортировать изображения с мобильного телефона или веб-камеры.

Управлять Gallery 2 тоже очень удобно. Администратор галереи может устанавливать определенные дисковые квоты для каждого из зарегистрированных пользователей или их групп, выполнять массовое редактирование элементов одного типа (скажем, альбомов или фотографий), менять уровень вложенности альбомов, просматривать и редактировать профили пользователей.

Из мелких отличий: встроенные модули для отладки и отслеживания ошибок, мощный поисковый движок (есть далеко не во всех галереях), ЧПУ (человекопонятные урлы, то есть логичные названия всех внутренних страничек: например, форум, согласно ЧПУ, должен проживать по адресу www.название сайта.ru/forum , а не www.название сайта.ru/d97fd9f7sdf97sdf145 ), функция слайд-шоу, поддержка нескольких типов баз данных, удобный веб-инсталлятор, а главное - соответствие всем современным веб-стандартам (в том числе XHTML 1.0 Strict ).

Устанавливается Gallery 2 следующим образом. Прежде всего, распакуйте архив с дистрибутивом движка в любой каталог. Далее загрузите все системные файлы и папки веб-галереи из директории \gallery2 (всего их 13 , не считая англоязычного мануала по работе с программой) на удаленный веб-сервер провайдера (в корневую папку сайта, например, \condor01.ru ) с помощью FTP-клиента, скажем, FileZilla . Запустите браузер и введите в адресной строке имя ресурса, который указывает на директорию с Gallery 2 (в нашем случае - www.condor01.ru ). Загрузится страничка с простенькой серверной программой для настройки галереи (создание аккаунта суперадминистратора, установка хранилища и добавочных модулей, инсталляция ядра). Всего вам предстоит проделать 11 последовательных шагов - не пугайтесь, в большинстве случаев нужно лишь кликать на кнопочку Далее . При необходимости вы можете в любой момент вернуться к предыдущему этапу и внести необходимые поправки - например, изменить логин и пароль или параметры подключения к базе данных MySQL , так что можете поэкспериментировать с разными вариантами.

В заключение буквально несколько слов о стабильности работы движка. Все интернет-галереи, сделанные на основе Gallery 2, загружаются в среднем за 3-5 секунд (пропускная способность нашего тестового канала - 10 Мб/с), практически не нагружают сервер и базы данных и, что самое главное, не сбоят. Каких-либо недостатков при тестировании движка мы не обнаружили. В общем, почти идеал.

ОЦЕНКИ «МАНИИ»:

- Легкость установки: 4/5

- Удобство работы: 5/5

- Функционал: 5/5

- Надежность: 5/5

4images - функционал превыше всего

Следующий участник нашего обзора попроще, чем Gallery 2, но не менее популярен. Это движок 4images . Он используется не только простыми пользователями, но и крупными организациями, правда, им приходится платить: 4images бесплатен только для частного некоммерческого использования. Таким образом, если захотите сконструировать на основе 4images платный онлайн-сервис для хранения фотографий, придется раскошелиться на 99 евро.

По набору функций система очень похожа на Gallery 2. Здесь есть все, что нужно для комфортной работы, - и пользовательские аккаунты, и защищенный паролем админ-центр, и различные счетчики, и RSS-ленты, и незамысловатая поисковая система, и даже удобный веб-инсталлятор. Движок поддерживает все современные графические библиотеки (ImageMagick , GD , NetPBM ) и, как следствие, позволяет производить простейшие манипуляции над изображениями, загруженными на сайт, - изменение размеров, поворот картинок, автоматическая генерация превью. Зарегистрированные в системе пользователи могут оставлять комментарии к выбранным файлам и обмениваться личными сообщениями.

Администратор галереи вправе создать любое количество рубрик и фотоальбомов, модифицировать все установки системы за считанные секунды, добавлять и редактировать пользователей и комментарии, модерировать новые фотографии, подключать к движку новые плагины и темы оформления. При этом стоит отметить, что все параметры 4images не просто раскиданы по панели управления, а сгруппированы в логичные блоки (именно этого часто не хватает более примитивным галереям).

Плавно переходим к разбору отличительных особенностей 4images. Первое, что бросается в глаза, - поддержка огромного числа различных форматов. Движок отлично справляется с обработкой файлов JPG , GIF , AIF , PNG , AU , AVI , MID , MOV , MP3 , MPGM , WAV , RA , RM , PD , 3GPP и даже PSD . К тому же никто не мешает вам самостоятельно расширить линейку поддерживаемых расширений - написать и подключить к галерее плагины для обработки документов определенного типа, скажем, OGG . Что у нас там дальше по списку? Уникальная возможность генерации поздравительных открыток. С помощью 4images вы буквально в несколько кликов сможете создать фирменную электронную открытку на базе выбранного арта и отправить ее близкому (или не очень) родственнику, знакомому или просто пользователю, зарегистрировавшемуся на вашем сайте. Следующее несомненное достоинство 4images - прекрасная защищенность. Взломать или вывести из строя движок практически невозможно. Но последнюю роль в этом сыграли защищенные по современной технологии CAPTCHA формы ввода и вывода данных и панель администрирования, а также надежные алгоритмы кодирования данных. Вдобавок в 4images интегрирована мощная система резервного копирования данных, которая присутствует далеко не во всех современных хранилищах фотографий. Мы честно попытались заселить систему троянами, вышедшими за последние несколько месяцев (только теми, что уже описаны «Лабораторией Касперского»), ни один из них не смог укорениться в движке.

А вот за что можно пожурить 4images, так это за чересчур простой интерфейс. Никаких наворотов в виде выпадающих окон и сочных вебдванольных панелек, одни только невзрачные кнопочки. К тому же в некоторых меню наблюдается довольно странная группировка параметров; так и хочется взять их и поставить в правильном порядке, но такой возможности нет.

ОЦЕНКИ «МАНИИ»:

- Легкость установки: 4/5

- Простота использования: 4/5

- Удобство работы: 4/5

- Функционал: 5/5

- Надежность: 5/5

WR-Gallery - проще некуда

Официальный сайт (он же сайт русской поддержки): www.wr-script.ru

WR-Gallery - простецкий, но крайне оригинальный и удобный в обращении скрипт интернет-галереи отечественного розлива. Движок написан на PHP и не требует наличия базы данных MySQL (для хранения информации используются простые текстовые файлы с расширением.dat). Если выражаться более понятным языком, этот движок можно использовать как для создания небольших онлайновых галерей на сильно загруженных бесплатных хостингах, где отсутствует поддержка баз данных, так и для мощных хранилищ фотографий. WR-Gallery не перегружает сервер, на котором установлен, выдерживает любой наплыв пользователей и, что самое важное, не сбоит (за весь период существования WR-Gallery 1.3 не было зафиксировано ни одного падения системы).

Если такие функции, как сортировка картинок по рейтингу, количеству комментариев, дате загрузки и размеру, давно стали стандартом де-факто, то вот возможность загружать изображения без предварительной регистрации есть далеко не у всех галерей.

Буквально несколько слов об установке движка. Чтобы проинсталлировать WR-Gallery 1.3, достаточно скопировать все файлы и каталоги движка на веб-сервер и установить права доступа на определенные папки и отдельно взятые исполняемые файлы.

ОЦЕНКИ «МАНИИ»:

- Легкость установки: 5/5

- Простота использования: 5/5

- Удобство работы: 4/5

- Функционал: 3,5/5

- Надежность: 4/5

Wallist - совершенная эргономика

Wallist умеет автоматически наносить надписи на все загружаемые картинки.

Последний участник нашего тестирования - активно развивающаяся отечественная фотогалерея Wallist , разработанная силами одного-единственного человека - Андрея Пикина. Вся необыкновенность движка заключается в том, что он состоит из нескольких информационных блоков (новостная лента, графический счетчик посещений, подсказки) и умеет необычайно быстро генерировать веб-страницы (за 0,05-0,1 секунды).

По возможностям Wallist не уступает таким профессиональным движкам, как Gallery и 4images. Судите сами. Пользователи могут регистрироваться на сайте, добавлять в сформированные администратором фотоальбомы собственные изображения, комментировать выбранные записи, проставлять рейтинги. Не забыл автор системы и о таких приятных мелочах, как функция нанесения цифровых водяных знаков (копирайтов) на поверхность артов и скрытие старых файлов, хранящихся на сервисе больше месяца. Администратору разрешается редактировать любые параметры движка - формировать списки запрещенных литер, слов и выражений, которые должна вырезать система, блокировать доступ к определенным рубрикам и разделам сайта, модифицировать максимальный размер закачиваемых на сервер картинок, удалять выбранные пользовательские фотографии. К недостаткам движка можно отнести не очень удобную панель управления, а также слабую защищенность - опытный хакер сможет вывести сайт из строя.

Установить Wallist 1.2 на веб-сервер хостинг-провайдера сможет даже начинающий. Загружаете все файлы и папки движка по FTP-протоколу, формируете новую базу данных для галереи и настраиваете систему с помощью симпатичного веб-инсталлятора.

ОЦЕНКИ «МАНИИ»:

- Легкость установки: 4/5

- Простота использования: 4/5

- Удобство работы: 3/5

- Функционал: 4/5

- Надежность: 3/5

* * *

Если вы решили создать по-настоящему мощную, надежную и красивую веб-галерею, обратите пристальное внимание на профессиональный движок Gallery - лучший программный пакет в своем классе. Если лишние навороты вам ни к чему, но функционал все же должен быть на уровне, не проходите мимо 4images и Wallist. Что касается WR-Gallery, это настоящая находка для начинающих веб-мастеров, а также всех тех, кто пользуется услугами сильно загруженных бесплатных хостингов.

У Вас в браузере заблокирован JavaScript. Разрешите JavaScript для работы сайта!

Система управления сайтом (content management system - CMS) - это специальный программный механизм, который еще называют "Конструктор сайтов".

Конструктор сайтов как правило состоит из двух частей - административной страницы и редактора сайта.

На административной странице конструктора сайтов пользователь редактирует общие данные - пароль, привязку доменного имени, видит статистику используемого пространства и может внести файлы и изображения в библиотеку своего сайта.

В редакторе сайта идет непосредственная работа с содержанием сайта - добавление и изменение информации на нем.

Движки сайтов (CMS) на PHP

  • Joomla - одна из наиболее мощных Систем Управления Содержимым с Открытым Кодом. Сайты рускоязычной поддержки: joom.ru , joomlaportal.ru . Требует базу данных MySQL, Занимает на диске 8+Мб.
  • WordPress, русскоязычный сайт - мощная система управления блогом или новостным сайтом. Имеется возможность публикации с помощью сторонних программ и сервисов. Высокая гибкость системы обеспечивается возможностью использования подключаемых модулей (плагинов). Поддержка тем, позволяет легко менять как внешний вид, так и способы вывода данных. На тематических сайтах и форумах можно найти громадные библиотеки тем и плагинов. Требует базу данных MySQL, Занимает на диске 10+Мб.
  • Textpattern - мощная молодая система управления блогом или новостным сайтом. Подойдёт как пользователю, так и опытному web-разработчику. Имеет возможность предварительного просмотра публикуемой заметки, систему комментариев к статьям и средства борьбы со спамом, встроенная система статистики, а так же интегрированную систему управления изображениями и многое другое. Опытные пользователи оценят расширяемую архитектуру, позволяющую использовать плагины, увеличивая, таким образом функционал сайта под свои нужды. Требует базу данных MySQL, Занимает на диске 1+Мб.
  • Mambo Mamboserver.ru Ru-Mambo.ru Mamboserver.com - движок - прародитель Joomla 1.0
  • WebDirector - коммерческая система, ориентированная на задачи создания и поискового продвижения корпоративных сайтов.
  • Drupal - мощная система для создания сайтов любой направленности.
  • hostCMS - удобная современная система управления сайтами. Корректировка содержания сайта производится с использованием интуитивно-понятного интерфейса.
  • phpBB , phpbb2.ru - форум для вашего сайта. Мощное, полностью масштабируемое и легко изменяемое программное обеспечение для создания конференций.
  • Gallery - галерея изображений. Этот инструмент позволит вам закачивать и управлять вашими изображениями с лёгкостью и удобством.
  • nano CMS - простейшая CMS. PHP.
  • MODx - это профессиональный инструмент разработки сайтов, позволяющий управлять контентом, да и самим сайтом абсолютно на все 100%! Эта система с открытым кодом (open source), а поэтому бесплатна. В отличие от большинства бесплатных CMS На MODx вы можете построить сайт любой сложности, практически с любым набором функций, при этом система не будет никоим образом влиять на ваш html-код. Требует базу данных MySQL, Занимает на диске 6+Мб.
  • AmiroCMS - совсем недавно разработчики открыли исходный код этого движка, что позволяет использовать не только движек в пределах его обширного функционала, но и создавать любые нестандартные решения. А учитывая хорошую "заточенность" движка под поисковое продвижение, то это достойный выбор для специалистов, которые смотрят в будущее.
  • osCommerce" - интернет магазин.
  • Mediawiki - сайтовый движок, предназначеный для создания ресурсов, где каждый может вносить свои правки и свободно писать статьи. Наиболее популярный ресурс на этой технологии - Wikipedia.
  • RunCMS - универсальный движок, предназначенный для создания веб-сайтов различной степени сложности и тематической направленности.

Фреймворки

  • Symfony предлагает быструю разработку и управление веб-приложениями, позволяет легко решать рутинные задачи веб-программиста. При его разработке использовался современный язык веб-программирования PHP5. Также он поддерживает множество популярных баз данных. Не требует базу данных MySQL, занимает на диске 9+Мб.
  • Smarty - компилирующий обработчик шаблонов для PHP, один из инструментов, позволяющих отделить прикладную логику и данные от представления в духе концепции Model-view-controller. Он поддерживает кэширвание страниц, что значительно снижает нагрузку на сервер. Не требует базу данных MySQL, занимает на диске 1Мб.
  • CodeIgniter это известный PHP фреймворк, который по сути является готовым каркасом для разработки сложных веб-приложений. Он пользуется заслуженной популярностью у веб-разработчиков всего мира.
    К его главным достоинствам можно отнести:
    • использование модели MVC (Модель-Отображение-Контроллер), которая хорошо зарекомендовавала себя при разработке приложений самой разной направленности;
    • поддержка множества баз данных, в числе которых MySQL и PostgreSQL;
    • богатая документация;
    • великолепная производительность.
    Не требует базу данных MySQL, занимает на диске 2Мб.
  • Yii - это высокоэффективный основанный на компонентной структуре PHP-фреймворк для разработки масштабных веб-приложений. Он позволяет максимально применить концепцию повторного использования кода и может существенно ускорить процесс веб-разработки.
    Русскоязычное сообщество Yii

Как подобрать CMS

Ориентироваться на использование CMS следует в подавляющем большинстве случаев. Действительно, несколько лет назад, для того чтобы получить удовлетворительную CMS, требовалось потратить ощутимую сумму денег на покупку лицензии и оплату услуг специалиста, настраивающего систему. И не для всякого сайта подобные траты выглядят оправданными. Сейчас ситуация поменялась кардинальным образом: появились бесплатные CMS, удобные в настройке, при этом установка современных систем занимает немного времени и не требует особенных навыков.

Единственный вид сайтов, для которых использование CMS выглядит малоэффективным, это статичные сайты-визитки, состоящие из нескольких страниц, на которых указаны чем фирма занимается, почтовый адрес и телефонный номер. Такой сайт не требует ни оперативных обновлений, ни развитой информационной структуры, так что любая CMS просто будет простаивать.

Во всех других случаях CMS очень сильно облегчит жизнь сайтовладельца. Если только правильно CMS выбрать. Для верного выбора прежде всего следует определиться по нескольким вопросам.

Вопрос первый: Какова информационная структура сайта?

Это наиболее важный вопрос. Дело в том, что даже самая мощная и гибкая "универсальная" CMS имеет свои ограничения по отображению иерархии материалов.

Например, предположим, что вы наметили сделать каталог товаров, где будет представлено несколько сотен наименований разнородной продукции, каждому виду которой будут соответствовать два-три десятка качественных характеристик. Скорее всего, ни одна "универсальная" CMS не позволит такое реализовать. Придётся либо обратить внимание на специализированные системы для интернет-каталогов, либо рассмотреть вариант с заказом разработки CMS "под конкретный сайт". С другой стороны, CMS, ориентированная на интернет-каталоги, вряд ли годится для корпоративного или тематического сайта.

Так что прежде чем останавливать выбор на какой-то из предлагаемых CMS, хорошо бы сделать набросок структурной организации содержимого сайта и перечень требований к преобразованию этого содержимого.

Второй вопрос: Кто и как часто будет обновлять информацию на сайте?

Дело в том, что CMS должна обеспечивать удобную работу администраторам сайта. И если планируется, что над сайтом будет работать несколько авторов, то и CMS должна предоставлять достаточные возможности по коллективной работе. Если же автор один, то и каких-то многопользовательских функций не требуется.

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

    Читать