Share This
Связаться со мной
Крути в низ
Categories
//RevolveR Contents Management Framework v.1.9.4.9

RevolveR Contents Management Framework v.1.9.4.9

01.11.2020Category : My Habr

Лет 10 назад мне нужна была какая-то система, чтобы вести блог о web-разработке и я использовал сильно хакнутый Drupal, который со временем стало невозможно обновить из-за груды костылей и постоянной нужде рыться под капотом после каждого update.

За 10 лет накопилось порядка 300 статей по верстке и front-end программированию, а также куча полезных сниппетов кода, которые я в последующем использовал для создания RevolveR Contents Management Framework на фирменной архитектуре KMV(Kernel<-Model<-View).

revolver contents management framework v1949 ce77bdc - RevolveR Contents Management Framework v.1.9.4.9

С Drupal была стянута идея использовать узлы(nodes) и я применил весь комплект опыта оставшегося от хакинга ядра решившись начать писать свою систему. Сейчас RevolveR уже достиг версии 1.9.4.9 и из его отличительных особенностей можно выделить подход к программированию.

Все создано на чистом PHP SPL и не использована даже jQuery для frontend(ее роль выполняет созданный на ES7 движок front-end с поддержкой всех функций, которые могут пригодится при разработке; от поддержки CSS3 анимаций до автоматических HTML форм на fetch).

revolver contents management framework v1949 1c8e769 - RevolveR Contents Management Framework v.1.9.4.9

Теперь Windows использует Chromium для встроенного в систему Fetch и мне не пришлось использовать транспиляторы для реализации framework. Из новенького, что мешало сделать нормальный релиз была не полная поддержка CSS4 variables, которые у меня в паре с View Port Unit формирует хитрый в 10 строчек кода алгоритм для масштабирования HTML элементов сайта под мобильные устройства, а также по примеру приложения может получить, но не отображает в строке URL GET запросы.

revolver contents management framework v1949 6336cb1 - RevolveR Contents Management Framework v.1.9.4.9

Средствами JavaScript определяется браузер пользователя и формируются scale factor являющийся множителем, чтобы отмасштабировать ссылки, кнопки, параграфы и другие элементы требующие увеличенного размера для смартфонов, чтобы пользователю было удобнее.

Я подошел к реализации front-end с той же стороны, что и подходят разработчики приложений операционной системы: никаких media queries не используется вообще, а сайты выглядят крупнее или мельче в зависимости от размера окна браузера без всяких прокруток.

Что есть во framework сейчас?

Создана поддержка инсталлятора для хостинга(можно использовать Open Server минимальный, но с включенным модулем PHP Tidy). Поскольку это не совсем набор классов и futures для создания и нужды много программировать, CMF из коробки предлагает поддержку кабинета пользователя и ролей групп пользователей.

Contents Management Framework подразумевает также поддержку создания пользователем страниц и категоризация их включена в функционал. Фреймворк многоязычный (сейчас два языка интерфейса доступны Russian & English).

Также доступны модули mini Wiki и блогов. Для материалов новостей и блога доступно голосование типа 5 звезд. Есть простой но лаконичный форум.

С помощью content editble HTML 5 реализована быстрая visiwig правка статей и комментариев, а динамический предпросмотр позволяет видеть как будет выглядеть опубликованный материал точь в точь при наборе текста и верстки.

Реализована простая, но очень надежная captcha, которая работает для любых POST данных путем получения ключа и паттерна из набора рисунков независимо на каждый route специальным сервисом secure route через javascript fetch и https cookie. Рисунок создается в canvas и обвешан рядом isTrusted проверок.

Я добавил поддержку комментирования и возможность подписаться по email на обновления контента и комментариев, если пользователь зарегистрировался — есть возможность установить себе аватар, заполнить профиль, выбрать язык интерфейса индивидуально и писать личные сообщения.

Все формы и элементы навигации сайтов на RevolveR CMF работают в автоматическом fetch режиме из последних релизов ECMA Script. API подразумевает удобный сборщик HTML форм и центральный валидатор данных, который связан с типом input указанном в HTML формы. Загружаемые пользователем файлы проходят на UNIX системах дополнительную проверку маски через xxd.

Есть модуль интернет магазина.

В систему добавлен терминал, позволяющий выполнять bash команды операционной системы или консоли Windows(в планах научиться использовать Power Shell из PHP).

revolver contents management framework v1949 87c3ecd - RevolveR Contents Management Framework v.1.9.4.9

Тема оформления пока одна, но она оснащена примерно 50 переменными CSS, которые позволяют изменить почти весь дизайн. Также реализовано ночное и дневное отображение интерфейса.

revolver contents management framework v1949 2023395 - RevolveR Contents Management Framework v.1.9.4.9

В системе есть все для SEO: автоматический ping при добавлении материалов, карта сайта в XML, поддержка Microdata HTML 5 и RSS.

Встроенная система статистики учитывает посещения гостей и авторизованных пользователей показывая время пребывания и внутренние переходы. Также статистика отображает переходы по внешним ссылкам с whois и из поисковых систем.

Оптимизация

Поскольку весь код писался на низкоуровневых функциях без сторонних библиотек и великолепно оптимизирован с участием кэша трех уровней:

  1. Сжатые CSS и JavaScript;
  2. Кэш шаблонизатора (свой шаблонизатор на Cache Conclude);
  3. Кэш запросов базы данных (если RevolveR не пишет статистику посетителей, то framework работает в режиме partial Kernel run и к базе для анонимного посетителя происходит 0 запросов).

Мне удалось достичь просто отличных цифр оптимизации: все ядром с шаблонами выполняется за доли секунды при этом тратиться памяти на сайт из 10 страниц порядка 3х мегабайт(средний Drupal 9 для сравнения рекомендует сервер с 2 Gb ОЗУ то время как RevolveR CMF требует 128Mb).

Кроме того, front-end оптимизирован так, что позволяет в 240кб упакованного трансфера кода уместить и скрипты и рендер c бэкенда и даже остается место для иконок флагов всех стран на SVG и картинок интерфейса(подходит быстрой загрузки и отдачи в условиях с плохим интернетом).

Установка и системные требования

Скачать дистрибутив можно со страницы проекта GitHub. Установка очень простая. Просто посмотрите видео.

Если установка не пошла просто удалите database.key и domain.key в директории /private/ и проверьте правильность ввода данных в полях настроек подключения к базе данных.

RevolveR CMF требует php 7.4 и MySQL 5.6-8.x, а также включенный модуль Tidy. Рекомендуется 128 Mb оперативной памяти сервера и Zend Opcache, но в реальности достаточно 30 Mb.

Документацию по системе я активно дополняю и найти некоторые статьи можно на блоге и wiki.

  • 1 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

© Speccy 2020 / All rights reserved

Связаться со мной
Close